├── .gitignore ├── README.md ├── angular.json ├── config.xml ├── e2e ├── protractor.conf.js ├── src │ ├── app.e2e-spec.ts │ └── app.po.ts └── tsconfig.e2e.json ├── ionic.config.json ├── ionic.project ├── ionic4test.keystore ├── package-lock.json ├── package.json ├── plugins ├── cordova-android-support-gradle-release │ ├── README.md │ ├── cordova-android-support-gradle-release.gradle │ ├── package.json │ ├── plugin.xml │ └── scripts │ │ └── apply-changes.js ├── cordova-plugin-app-version │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── VERSION │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ └── AppVersion.java │ │ ├── ios │ │ │ ├── AppVersion.h │ │ │ └── AppVersion.m │ │ ├── windows │ │ │ └── AppVersionProxy.js │ │ └── wp8 │ │ │ └── AppVersion.cs │ └── www │ │ ├── AppVersionPlugin.js │ │ └── blackberry10 │ │ └── AppVersionProxy.js ├── cordova-plugin-appminimize │ ├── LICENSE.md │ ├── README.MD │ ├── package.json │ ├── plugin.xml │ ├── src │ │ └── android │ │ │ └── AppMinimize.java │ └── www │ │ └── AppMinimize.js ├── cordova-plugin-device │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── RELEASENOTES.md │ ├── doc │ │ ├── de │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── es │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── fr │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── it │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ja │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ko │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── pl │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ru │ │ │ └── index.md │ │ └── zh │ │ │ ├── README.md │ │ │ └── index.md │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ └── Device.java │ │ ├── browser │ │ │ └── DeviceProxy.js │ │ ├── ios │ │ │ ├── CDVDevice.h │ │ │ └── CDVDevice.m │ │ ├── osx │ │ │ ├── CDVDevice.h │ │ │ └── CDVDevice.m │ │ └── windows │ │ │ └── DeviceProxy.js │ ├── tests │ │ ├── package.json │ │ ├── plugin.xml │ │ └── tests.js │ ├── types │ │ └── index.d.ts │ └── www │ │ └── device.js ├── cordova-plugin-file │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── RELEASENOTES.md │ ├── doc │ │ ├── de │ │ │ ├── README.md │ │ │ ├── index.md │ │ │ └── plugins.md │ │ ├── es │ │ │ ├── README.md │ │ │ ├── index.md │ │ │ └── plugins.md │ │ ├── fr │ │ │ ├── README.md │ │ │ ├── index.md │ │ │ └── plugins.md │ │ ├── it │ │ │ ├── README.md │ │ │ ├── index.md │ │ │ └── plugins.md │ │ ├── ja │ │ │ ├── README.md │ │ │ ├── index.md │ │ │ └── plugins.md │ │ ├── ko │ │ │ ├── README.md │ │ │ ├── index.md │ │ │ └── plugins.md │ │ ├── pl │ │ │ ├── README.md │ │ │ ├── index.md │ │ │ └── plugins.md │ │ ├── plugins.md │ │ ├── ru │ │ │ ├── index.md │ │ │ └── plugins.md │ │ └── zh │ │ │ ├── README.md │ │ │ ├── index.md │ │ │ └── plugins.md │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ ├── AssetFilesystem.java │ │ │ ├── ContentFilesystem.java │ │ │ ├── DirectoryManager.java │ │ │ ├── EncodingException.java │ │ │ ├── FileExistsException.java │ │ │ ├── FileUtils.java │ │ │ ├── Filesystem.java │ │ │ ├── InvalidModificationException.java │ │ │ ├── LocalFilesystem.java │ │ │ ├── LocalFilesystemURL.java │ │ │ ├── NoModificationAllowedException.java │ │ │ ├── PendingRequests.java │ │ │ ├── TypeMismatchException.java │ │ │ └── build-extras.gradle │ │ ├── browser │ │ │ └── FileProxy.js │ │ ├── ios │ │ │ ├── CDVAssetLibraryFilesystem.h │ │ │ ├── CDVAssetLibraryFilesystem.m │ │ │ ├── CDVFile.h │ │ │ ├── CDVFile.m │ │ │ ├── CDVLocalFilesystem.h │ │ │ └── CDVLocalFilesystem.m │ │ ├── osx │ │ │ ├── CDVFile.h │ │ │ ├── CDVFile.m │ │ │ ├── CDVLocalFilesystem.h │ │ │ └── CDVLocalFilesystem.m │ │ └── windows │ │ │ └── FileProxy.js │ ├── tests │ │ ├── package.json │ │ ├── plugin.xml │ │ ├── src │ │ │ └── android │ │ │ │ └── TestContentProvider.java │ │ ├── tests.js │ │ └── www │ │ │ └── fixtures │ │ │ └── asset-test │ │ │ └── asset-test.txt │ ├── types │ │ └── index.d.ts │ └── www │ │ ├── DirectoryEntry.js │ │ ├── DirectoryReader.js │ │ ├── Entry.js │ │ ├── File.js │ │ ├── FileEntry.js │ │ ├── FileError.js │ │ ├── FileReader.js │ │ ├── FileSystem.js │ │ ├── FileUploadOptions.js │ │ ├── FileUploadResult.js │ │ ├── FileWriter.js │ │ ├── Flags.js │ │ ├── LocalFileSystem.js │ │ ├── Metadata.js │ │ ├── ProgressEvent.js │ │ ├── android │ │ └── FileSystem.js │ │ ├── browser │ │ ├── FileSystem.js │ │ ├── Preparing.js │ │ └── isChrome.js │ │ ├── fileSystemPaths.js │ │ ├── fileSystems-roots.js │ │ ├── fileSystems.js │ │ ├── ios │ │ └── FileSystem.js │ │ ├── osx │ │ └── FileSystem.js │ │ ├── requestFileSystem.js │ │ └── resolveLocalFileSystemURI.js ├── cordova-plugin-imagepicker │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── doc │ │ └── pt │ │ │ └── README.md │ ├── example │ │ ├── README.md │ │ └── index.html │ ├── hooks │ │ └── after_prepare │ │ │ └── 010-update-android-manifest.js │ ├── package.json │ ├── plugin.xml │ ├── screenshots │ │ ├── android.png │ │ └── ios.jpg │ ├── src │ │ ├── android │ │ │ ├── ImagePickerMain.java │ │ │ ├── imageloader │ │ │ │ └── GlideImageLoader.java │ │ │ ├── imagepicker.gradle │ │ │ ├── module │ │ │ │ ├── DataHolder.java │ │ │ │ ├── ImageDataSource.java │ │ │ │ ├── ImagePicker.java │ │ │ │ ├── ImagePickerProvider.java │ │ │ │ ├── adapter │ │ │ │ │ ├── ImageFolderAdapter.java │ │ │ │ │ ├── ImageGridAdapter.java │ │ │ │ │ ├── ImagePageAdapter.java │ │ │ │ │ └── ImageRecyclerAdapter.java │ │ │ │ ├── bean │ │ │ │ │ ├── ImageFolder.java │ │ │ │ │ └── ImageItem.java │ │ │ │ ├── loader │ │ │ │ │ └── ImageLoader.java │ │ │ │ ├── ui │ │ │ │ │ ├── ImageBaseActivity.java │ │ │ │ │ ├── ImageCropActivity.java │ │ │ │ │ ├── ImageGridActivity.java │ │ │ │ │ ├── ImagePreviewActivity.java │ │ │ │ │ ├── ImagePreviewBaseActivity.java │ │ │ │ │ └── ImagePreviewDelActivity.java │ │ │ │ ├── util │ │ │ │ │ ├── BitmapUtil.java │ │ │ │ │ ├── NavigationBarChangeListener.java │ │ │ │ │ ├── ProviderUtil.java │ │ │ │ │ └── Utils.java │ │ │ │ └── view │ │ │ │ │ ├── CropImageView.java │ │ │ │ │ ├── FolderPopUpWindow.java │ │ │ │ │ ├── SuperCheckBox.java │ │ │ │ │ ├── SystemBarTintManager.java │ │ │ │ │ └── ViewPagerFixed.java │ │ │ └── res │ │ │ │ ├── anim │ │ │ │ ├── bottom_in.xml │ │ │ │ ├── bottom_out.xml │ │ │ │ ├── fade_in.xml │ │ │ │ ├── fade_out.xml │ │ │ │ ├── hide_to_bottom.xml │ │ │ │ ├── left_in.xml │ │ │ │ ├── left_out.xml │ │ │ │ ├── right_in.xml │ │ │ │ ├── right_out.xml │ │ │ │ ├── scale_in.xml │ │ │ │ ├── scale_out.xml │ │ │ │ ├── show_from_bottom.xml │ │ │ │ ├── top_in.xml │ │ │ │ └── top_out.xml │ │ │ │ ├── drawable-xxhdpi │ │ │ │ ├── bg_btn_dis.9.png │ │ │ │ ├── bg_btn_nor.9.png │ │ │ │ └── bg_btn_pre.9.png │ │ │ │ ├── drawable │ │ │ │ ├── folder_list_divider.xml │ │ │ │ ├── ic_cover_shade.xml │ │ │ │ ├── radio_item_checked.xml │ │ │ │ ├── selector_back_press.xml │ │ │ │ ├── selector_grid_camera_bg.xml │ │ │ │ ├── selector_item_checked.xml │ │ │ │ └── selector_top_ok.xml │ │ │ │ ├── layout │ │ │ │ ├── activity_image_crop.xml │ │ │ │ ├── activity_image_grid.xml │ │ │ │ ├── activity_image_preview.xml │ │ │ │ ├── adapter_camera_item.xml │ │ │ │ ├── adapter_folder_list_item.xml │ │ │ │ ├── adapter_image_list_item.xml │ │ │ │ ├── include_top_bar.xml │ │ │ │ └── pop_folder.xml │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── checkbox_checked.png │ │ │ │ ├── checkbox_normal.png │ │ │ │ ├── default_image.png │ │ │ │ ├── grid_camera.png │ │ │ │ ├── ic_back.png │ │ │ │ ├── ic_del.png │ │ │ │ ├── radio_checked.png │ │ │ │ ├── radio_normal.png │ │ │ │ └── text_indicator.png │ │ │ │ ├── values-en │ │ │ │ └── multi_image_chooser_strings.xml │ │ │ │ ├── values-pt │ │ │ │ └── multi_image_chooser_strings.xml │ │ │ │ ├── values │ │ │ │ ├── attrs.xml │ │ │ │ ├── multi_image_chooser_colors.xml │ │ │ │ └── multi_image_chooser_strings.xml │ │ │ │ └── xml │ │ │ │ └── imagepicker_provider_paths.xml │ │ └── ios │ │ │ ├── ImagePickerMain.h │ │ │ ├── ImagePickerMain.m │ │ │ ├── UIImage+Luban_iOS_Extension_h.h │ │ │ ├── UIImage+Luban_iOS_Extension_h.m │ │ │ └── libs │ │ │ ├── LxGridViewFlowLayout.h │ │ │ ├── LxGridViewFlowLayout.m │ │ │ ├── NSBundle+TZImagePicker.h │ │ │ ├── NSBundle+TZImagePicker.m │ │ │ ├── TZAssetCell.h │ │ │ ├── TZAssetCell.m │ │ │ ├── TZAssetModel.h │ │ │ ├── TZAssetModel.m │ │ │ ├── TZGifPhotoPreviewController.h │ │ │ ├── TZGifPhotoPreviewController.m │ │ │ ├── TZImageCropManager.h │ │ │ ├── TZImageCropManager.m │ │ │ ├── TZImageManager.h │ │ │ ├── TZImageManager.m │ │ │ ├── TZImagePickerController.bundle │ │ │ ├── MMVideoPreviewPlay@2x.png │ │ │ ├── MMVideoPreviewPlayHL@2x.png │ │ │ ├── Root.plist │ │ │ ├── TableViewArrow@2x.png │ │ │ ├── VideoSendIcon@2x.png │ │ │ ├── en.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── navi_back@2x.png │ │ │ ├── photo_def_photoPickerVc@2x.png │ │ │ ├── photo_def_previewVc@2x.png │ │ │ ├── photo_number_icon@2x.png │ │ │ ├── photo_original_def@2x.png │ │ │ ├── photo_original_sel@2x.png │ │ │ ├── photo_sel_photoPickerVc@2x.png │ │ │ ├── photo_sel_previewVc@2x.png │ │ │ ├── preview_number_icon@2x.png │ │ │ ├── preview_original_def@2x.png │ │ │ ├── takePicture80@2x.png │ │ │ ├── takePicture@2x.png │ │ │ ├── vi.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── zh-Hans.lproj │ │ │ │ └── Localizable.strings │ │ │ └── zh-Hant.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── TZImagePickerController.h │ │ │ ├── TZImagePickerController.m │ │ │ ├── TZLocationManager.h │ │ │ ├── TZLocationManager.m │ │ │ ├── TZPhotoPickerController.h │ │ │ ├── TZPhotoPickerController.m │ │ │ ├── TZPhotoPreviewCell.h │ │ │ ├── TZPhotoPreviewCell.m │ │ │ ├── TZPhotoPreviewController.h │ │ │ ├── TZPhotoPreviewController.m │ │ │ ├── TZProgressView.h │ │ │ ├── TZProgressView.m │ │ │ ├── TZTestCell.h │ │ │ ├── TZTestCell.m │ │ │ ├── TZVideoPlayerController.h │ │ │ ├── TZVideoPlayerController.m │ │ │ ├── UIView+Layout.h │ │ │ └── UIView+Layout.m │ └── www │ │ └── ImagePicker.js ├── cordova-plugin-inappbrowser │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── RELEASENOTES.md │ ├── doc │ │ ├── de │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── es │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── fr │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── it │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ja │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ko │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── pl │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ru │ │ │ └── index.md │ │ └── zh │ │ │ ├── README.md │ │ │ └── index.md │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ ├── InAppBrowser.java │ │ │ ├── InAppBrowserDialog.java │ │ │ ├── InAppChromeClient.java │ │ │ └── res │ │ │ │ ├── drawable-hdpi │ │ │ │ ├── ic_action_next_item.png │ │ │ │ ├── ic_action_previous_item.png │ │ │ │ └── ic_action_remove.png │ │ │ │ ├── drawable-mdpi │ │ │ │ ├── ic_action_next_item.png │ │ │ │ ├── ic_action_previous_item.png │ │ │ │ └── ic_action_remove.png │ │ │ │ ├── drawable-xhdpi │ │ │ │ ├── ic_action_next_item.png │ │ │ │ ├── ic_action_previous_item.png │ │ │ │ └── ic_action_remove.png │ │ │ │ └── drawable-xxhdpi │ │ │ │ ├── ic_action_next_item.png │ │ │ │ ├── ic_action_previous_item.png │ │ │ │ └── ic_action_remove.png │ │ ├── browser │ │ │ └── InAppBrowserProxy.js │ │ ├── ios │ │ │ ├── CDVInAppBrowser.h │ │ │ └── CDVInAppBrowser.m │ │ ├── osx │ │ │ ├── CDVInAppBrowser.h │ │ │ └── CDVInAppBrowser.m │ │ └── windows │ │ │ └── InAppBrowserProxy.js │ ├── tests │ │ ├── .eslintrc.yml │ │ ├── package.json │ │ ├── plugin.xml │ │ ├── resources │ │ │ ├── inject.css │ │ │ ├── inject.html │ │ │ ├── inject.js │ │ │ ├── local.html │ │ │ ├── local.pdf │ │ │ └── video.html │ │ └── tests.js │ ├── types │ │ └── index.d.ts │ └── www │ │ ├── inappbrowser.css │ │ └── inappbrowser.js ├── cordova-plugin-ionic-keyboard │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ └── IonicKeyboard.java │ │ └── ios │ │ │ ├── CDVIonicKeyboard.h │ │ │ └── CDVIonicKeyboard.m │ └── www │ │ ├── android │ │ └── keyboard.js │ │ └── ios │ │ └── keyboard.js ├── cordova-plugin-ionic-webview │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── plugin.xml │ └── src │ │ ├── android │ │ └── com │ │ │ └── ionicframework │ │ │ └── cordova │ │ │ └── webview │ │ │ ├── AndroidProtocolHandler.java │ │ │ ├── IonicWebView.java │ │ │ ├── IonicWebViewEngine.java │ │ │ ├── UriMatcher.java │ │ │ └── WebViewLocalServer.java │ │ ├── ios │ │ ├── CDVWKProcessPoolFactory.h │ │ ├── CDVWKProcessPoolFactory.m │ │ ├── CDVWKWebViewEngine.h │ │ ├── CDVWKWebViewEngine.m │ │ ├── CDVWKWebViewUIDelegate.h │ │ ├── CDVWKWebViewUIDelegate.m │ │ ├── IONAssetHandler.h │ │ ├── IONAssetHandler.m │ │ ├── LICENSE │ │ └── wk-plugin.js │ │ └── www │ │ ├── ios │ │ └── ios-wkwebview-exec.js │ │ └── util.js ├── cordova-plugin-network-information │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── RELEASENOTES.md │ ├── doc │ │ ├── de │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── es │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── fr │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── it │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ja │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ko │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── pl │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ru │ │ │ └── index.md │ │ └── zh │ │ │ ├── README.md │ │ │ └── index.md │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ └── NetworkManager.java │ │ ├── browser │ │ │ └── network.js │ │ ├── ios │ │ │ ├── CDVConnection.h │ │ │ ├── CDVConnection.m │ │ │ ├── CDVReachability.h │ │ │ └── CDVReachability.m │ │ └── windows │ │ │ └── NetworkInfoProxy.js │ ├── tests │ │ ├── package.json │ │ ├── plugin.xml │ │ └── tests.js │ ├── types │ │ └── index.d.ts │ └── www │ │ ├── Connection.js │ │ └── network.js ├── cordova-plugin-photo-library │ ├── LICENSE │ ├── PhotoLibrary.d.ts │ ├── README.md │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ ├── PhotoLibrary.java │ │ │ ├── PhotoLibraryGetLibraryOptions.java │ │ │ └── PhotoLibraryService.java │ │ ├── browser │ │ │ ├── .eslintrc.json │ │ │ ├── PhotoLibraryProxy.js │ │ │ └── jsconfig.json │ │ └── ios │ │ │ ├── PhotoLibrary.swift │ │ │ ├── PhotoLibraryGetLibraryOptions.swift │ │ │ ├── PhotoLibraryProtocol.swift │ │ │ └── PhotoLibraryService.swift │ ├── tests │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── android │ │ │ └── wait-for-emulator-boot.sh │ │ ├── blueimp-canvastoblob │ │ │ └── js │ │ │ │ └── canvas-to-blob.min.js │ │ ├── es5-shim │ │ │ └── es5-shim.min.js │ │ ├── es6-shim │ │ │ └── es6-shim.min.js │ │ ├── es7-shim │ │ │ └── dist │ │ │ │ └── es7-shim.min.js │ │ ├── ionic-tests.ts │ │ ├── ios │ │ │ ├── get-booted-simulator.sh │ │ │ └── grant-simulator-permissions.sh │ │ ├── plugin.xml │ │ ├── test-images │ │ │ ├── Landscape_1.jpg │ │ │ ├── Landscape_2.jpg │ │ │ ├── Landscape_3.jpg │ │ │ ├── Landscape_4.jpg │ │ │ ├── Landscape_5.jpg │ │ │ ├── Landscape_6.jpg │ │ │ ├── Landscape_7.jpg │ │ │ ├── Landscape_8.jpg │ │ │ ├── Portrait_1.jpg │ │ │ ├── Portrait_2.jpg │ │ │ ├── Portrait_3.jpg │ │ │ ├── Portrait_4.jpg │ │ │ ├── Portrait_5.jpg │ │ │ ├── Portrait_6.jpg │ │ │ ├── Portrait_7.jpg │ │ │ ├── Portrait_8.jpg │ │ │ └── geotagged.jpg │ │ ├── test-utils.js │ │ └── tests.js │ └── www │ │ ├── PhotoLibrary.js │ │ └── async │ │ └── dist │ │ ├── async.min.js │ │ └── async.min.map ├── cordova-plugin-splashscreen │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── RELEASENOTES.md │ ├── doc │ │ ├── de │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── es │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── fr │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── it │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ja │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ko │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── pl │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ru │ │ │ └── index.md │ │ └── zh │ │ │ ├── README.md │ │ │ └── index.md │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ └── SplashScreen.java │ │ ├── browser │ │ │ └── SplashScreenProxy.js │ │ ├── ios │ │ │ ├── CDVSplashScreen.h │ │ │ ├── CDVSplashScreen.m │ │ │ ├── CDVViewController+SplashScreen.h │ │ │ └── CDVViewController+SplashScreen.m │ │ └── wp │ │ │ ├── ResolutionHelper.cs │ │ │ └── SplashScreen.cs │ ├── tests │ │ ├── ios │ │ │ ├── CDVSplashScreenTest.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── CDVSplashScreenTest.xccheckout │ │ │ │ │ └── xcschemes │ │ │ │ │ └── CordovaLib.xcscheme │ │ │ ├── CDVSplashScreenTest │ │ │ │ ├── .npmignore │ │ │ │ ├── CDVSplashScreenLibTests │ │ │ │ │ ├── ImageNameTest.m │ │ │ │ │ ├── ImageNameTestDelegates.h │ │ │ │ │ ├── ImageNameTestDelegates.m │ │ │ │ │ └── Info.plist │ │ │ │ └── CDVSplashScreenTest.xcodeproj │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ ├── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ └── CDVSplashScreenTest.xccheckout │ │ │ │ │ └── xcshareddata │ │ │ │ │ └── xcschemes │ │ │ │ │ ├── CDVSplashScreenLib.xcscheme │ │ │ │ │ └── CDVSplashScreenLibTests.xcscheme │ │ │ ├── README.md │ │ │ ├── doc │ │ │ │ ├── de │ │ │ │ │ └── README.md │ │ │ │ ├── es │ │ │ │ │ └── README.md │ │ │ │ ├── fr │ │ │ │ │ └── README.md │ │ │ │ ├── it │ │ │ │ │ └── README.md │ │ │ │ ├── ja │ │ │ │ │ └── README.md │ │ │ │ ├── ko │ │ │ │ │ └── README.md │ │ │ │ ├── pl │ │ │ │ │ └── README.md │ │ │ │ └── zh │ │ │ │ │ └── README.md │ │ │ └── package.json │ │ ├── package.json │ │ ├── plugin.xml │ │ └── tests.js │ ├── types │ │ └── index.d.ts │ └── www │ │ ├── splashscreen.js │ │ └── windows │ │ └── SplashScreenProxy.js ├── cordova-plugin-statusbar │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── RELEASENOTES.md │ ├── doc │ │ ├── de │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── es │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── fr │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── it │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ja │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ko │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── pl │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── ru │ │ │ └── index.md │ │ └── zh │ │ │ ├── README.md │ │ │ └── index.md │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ └── StatusBar.java │ │ ├── browser │ │ │ └── StatusBarProxy.js │ │ ├── ios │ │ │ ├── CDVStatusBar.h │ │ │ └── CDVStatusBar.m │ │ ├── windows │ │ │ └── StatusBarProxy.js │ │ └── wp │ │ │ └── StatusBar.cs │ ├── tests │ │ ├── package.json │ │ ├── plugin.xml │ │ └── tests.js │ ├── types │ │ └── index.d.ts │ └── www │ │ └── statusbar.js ├── cordova-plugin-whitelist │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── RELEASENOTES.md │ ├── doc │ │ ├── de │ │ │ └── README.md │ │ ├── es │ │ │ └── README.md │ │ ├── fr │ │ │ └── README.md │ │ ├── it │ │ │ └── README.md │ │ ├── ja │ │ │ └── README.md │ │ ├── ko │ │ │ └── README.md │ │ ├── pl │ │ │ └── README.md │ │ └── zh │ │ │ └── README.md │ ├── package.json │ ├── plugin.xml │ └── src │ │ └── android │ │ └── WhitelistPlugin.java ├── cordova-plugin-x-socialsharing │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── plugin.xml │ ├── src │ │ ├── android │ │ │ ├── nl │ │ │ │ └── xservices │ │ │ │ │ └── plugins │ │ │ │ │ ├── FileProvider.java │ │ │ │ │ ├── ShareChooserPendingIntent.java │ │ │ │ │ └── SocialSharing.java │ │ │ └── res │ │ │ │ └── xml │ │ │ │ └── sharing_paths.xml │ │ ├── ios │ │ │ ├── NSString+SSURLEncoding.h │ │ │ ├── NSString+SSURLEncoding.m │ │ │ ├── SocialSharing.h │ │ │ └── SocialSharing.m │ │ ├── windows │ │ │ └── SocialSharingProxy.js │ │ └── wp8 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── SocialSharing.cs │ └── www │ │ └── SocialSharing.js ├── es6-promise-plugin │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── plugin.xml │ └── www │ │ └── promise.js └── fetch.json ├── resources ├── README.md ├── android │ ├── icon │ │ ├── drawable-hdpi-icon.png │ │ ├── drawable-ldpi-icon.png │ │ ├── drawable-mdpi-icon.png │ │ ├── drawable-xhdpi-icon.png │ │ ├── drawable-xxhdpi-icon.png │ │ └── drawable-xxxhdpi-icon.png │ └── splash │ │ ├── drawable-land-hdpi-screen.png │ │ ├── drawable-land-ldpi-screen.png │ │ ├── drawable-land-mdpi-screen.png │ │ ├── drawable-land-xhdpi-screen.png │ │ ├── drawable-land-xxhdpi-screen.png │ │ ├── drawable-land-xxxhdpi-screen.png │ │ ├── drawable-port-hdpi-screen.png │ │ ├── drawable-port-ldpi-screen.png │ │ ├── drawable-port-mdpi-screen.png │ │ ├── drawable-port-xhdpi-screen.png │ │ ├── drawable-port-xxhdpi-screen.png │ │ └── drawable-port-xxxhdpi-screen.png ├── icon.png ├── ios │ ├── icon │ │ ├── icon-1024.png │ │ ├── icon-40.png │ │ ├── icon-40@2x.png │ │ ├── icon-40@3x.png │ │ ├── icon-50.png │ │ ├── icon-50@2x.png │ │ ├── icon-60.png │ │ ├── icon-60@2x.png │ │ ├── icon-60@3x.png │ │ ├── icon-72.png │ │ ├── icon-72@2x.png │ │ ├── icon-76.png │ │ ├── icon-76@2x.png │ │ ├── icon-83.5@2x.png │ │ ├── icon-small.png │ │ ├── icon-small@2x.png │ │ ├── icon-small@3x.png │ │ ├── icon.png │ │ └── icon@2x.png │ └── splash │ │ ├── Default-568h@2x~iphone.png │ │ ├── Default-667h.png │ │ ├── Default-736h.png │ │ ├── Default-Landscape-736h.png │ │ ├── Default-Landscape@2x~ipad.png │ │ ├── Default-Landscape@~ipadpro.png │ │ ├── Default-Landscape~ipad.png │ │ ├── Default-Portrait@2x~ipad.png │ │ ├── Default-Portrait@~ipadpro.png │ │ ├── Default-Portrait~ipad.png │ │ ├── Default@2x~iphone.png │ │ ├── Default@2x~universal~anyany.png │ │ └── Default~iphone.png └── splash.png ├── src ├── app │ ├── app-routing.module.ts │ ├── app.component.html │ ├── app.component.spec.ts │ ├── app.component.ts │ ├── app.module.ts │ ├── directives │ │ ├── content-editable.directive.ts │ │ ├── directives.module.ts │ │ ├── validator-password-identical.ts │ │ ├── validator-regular.directive.ts │ │ └── validator-username-exist.ts │ ├── interfaces │ │ ├── FileObj.ts │ │ └── UserInfo.ts │ ├── pages │ │ ├── demo │ │ │ ├── demo.page.html │ │ │ ├── demo.page.scss │ │ │ ├── demo.page.spec.ts │ │ │ ├── demo.page.ts │ │ │ └── form │ │ │ │ ├── form.module.ts │ │ │ │ ├── form.page.html │ │ │ │ ├── form.page.scss │ │ │ │ ├── form.page.spec.ts │ │ │ │ └── form.page.ts │ │ ├── login │ │ │ ├── login.module.ts │ │ │ ├── login.page.html │ │ │ ├── login.page.scss │ │ │ ├── login.page.spec.ts │ │ │ ├── login.page.ts │ │ │ └── register │ │ │ │ ├── register.module.ts │ │ │ │ ├── register.page.html │ │ │ │ ├── register.page.scss │ │ │ │ ├── register.page.spec.ts │ │ │ │ └── register.page.ts │ │ ├── mine │ │ │ ├── mine-about │ │ │ │ ├── mine-about.module.ts │ │ │ │ ├── mine-about.page.html │ │ │ │ ├── mine-about.page.scss │ │ │ │ ├── mine-about.page.spec.ts │ │ │ │ └── mine-about.page.ts │ │ │ ├── mine-info │ │ │ │ ├── mine-info.module.ts │ │ │ │ ├── mine-info.page.html │ │ │ │ ├── mine-info.page.scss │ │ │ │ ├── mine-info.page.spec.ts │ │ │ │ └── mine-info.page.ts │ │ │ ├── mine-qr-code │ │ │ │ ├── mine-qr-code.module.ts │ │ │ │ ├── mine-qr-code.page.html │ │ │ │ ├── mine-qr-code.page.scss │ │ │ │ ├── mine-qr-code.page.spec.ts │ │ │ │ └── mine-qr-code.page.ts │ │ │ ├── mine.page.html │ │ │ ├── mine.page.scss │ │ │ ├── mine.page.spec.ts │ │ │ ├── mine.page.ts │ │ │ └── modify-password │ │ │ │ ├── modify-password.module.ts │ │ │ │ ├── modify-password.page.html │ │ │ │ ├── modify-password.page.scss │ │ │ │ ├── modify-password.page.spec.ts │ │ │ │ └── modify-password.page.ts │ │ ├── tab1 │ │ │ ├── tab1.page.html │ │ │ ├── tab1.page.scss │ │ │ ├── tab1.page.spec.ts │ │ │ ├── tab1.page.ts │ │ │ ├── test │ │ │ │ ├── test.module.ts │ │ │ │ ├── test.page.html │ │ │ │ ├── test.page.scss │ │ │ │ ├── test.page.spec.ts │ │ │ │ └── test.page.ts │ │ │ └── test2 │ │ │ │ ├── test2.module.ts │ │ │ │ ├── test2.page.html │ │ │ │ ├── test2.page.scss │ │ │ │ ├── test2.page.spec.ts │ │ │ │ └── test2.page.ts │ │ └── tabs │ │ │ ├── tabs.page.html │ │ │ ├── tabs.page.scss │ │ │ ├── tabs.page.spec.ts │ │ │ └── tabs.page.ts │ ├── providers │ │ ├── Encrypt.ts │ │ ├── FileService.ts │ │ ├── GlobalData.ts │ │ ├── Helper.ts │ │ ├── HttpHelper.ts │ │ ├── HttpService.ts │ │ ├── Logger.ts │ │ ├── NativeService.ts │ │ ├── Storage.ts │ │ ├── Utils.ts │ │ └── Validators.ts │ ├── routers │ │ ├── demo.router.ts │ │ ├── mine.router.ts │ │ └── tab1.router.ts │ └── services │ │ └── auth.service.ts ├── assets │ ├── avatar │ │ └── default.png │ ├── icon │ │ ├── QR-code.svg │ │ └── favicon.png │ ├── libs │ │ └── alloy-lever.js │ └── shapes.svg ├── environments │ ├── environment.conf.ts │ ├── environment.prod.ts │ └── environment.ts ├── global.scss ├── index.html ├── karma.conf.js ├── main.ts ├── polyfills.ts ├── test.ts ├── theme │ └── variables.scss ├── tsconfig.app.json └── tsconfig.spec.json ├── test.html ├── tsconfig.json └── tslint.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Specifies intentionally untracked files to ignore when using Git 2 | # http://git-scm.com/docs/gitignore 3 | 4 | *~ 5 | *.sw[mnpcod] 6 | *.log 7 | *.tmp 8 | *.tmp.* 9 | log.txt 10 | *.sublime-project 11 | *.sublime-workspace 12 | .vscode/ 13 | npm-debug.log* 14 | 15 | .idea/ 16 | .ionic/ 17 | .sourcemaps/ 18 | .sass-cache/ 19 | .tmp/ 20 | .versions/ 21 | coverage/ 22 | /www 23 | node_modules/ 24 | tmp/ 25 | temp/ 26 | platforms/ 27 | plugins/android.json 28 | plugins/ios.json 29 | $RECYCLE.BIN/ 30 | 31 | .DS_Store 32 | Thumbs.db 33 | UserInterfaceState.xcuserstate 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 关于 2 | * ionic4 app开发模版 -------------------------------------------------------------------------------- /e2e/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // Protractor configuration file, see link for more information 2 | // https://github.com/angular/protractor/blob/master/lib/config.ts 3 | 4 | const { SpecReporter } = require('jasmine-spec-reporter'); 5 | 6 | exports.config = { 7 | allScriptsTimeout: 11000, 8 | specs: [ 9 | './src/**/*.e2e-spec.ts' 10 | ], 11 | capabilities: { 12 | 'browserName': 'chrome' 13 | }, 14 | directConnect: true, 15 | baseUrl: 'http://localhost:4200/', 16 | framework: 'jasmine', 17 | jasmineNodeOpts: { 18 | showColors: true, 19 | defaultTimeoutInterval: 30000, 20 | print: function() {} 21 | }, 22 | onPrepare() { 23 | require('ts-node').register({ 24 | project: require('path').join(__dirname, './tsconfig.e2e.json') 25 | }); 26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | 3 | describe('new App', () => { 4 | let page: AppPage; 5 | 6 | beforeEach(() => { 7 | page = new AppPage(); 8 | }); 9 | 10 | it('should display welcome message', () => { 11 | page.navigateTo(); 12 | expect(page.getPageTitle()).toContain('Tab One'); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get('/'); 6 | } 7 | 8 | getPageTitle() { 9 | return element(by.css('ion-title')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ionic.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "myApp", 3 | "integrations": { 4 | "cordova": {} 5 | }, 6 | "type": "angular" 7 | } 8 | -------------------------------------------------------------------------------- /ionic.project: -------------------------------------------------------------------------------- 1 | { 2 | "name": "myApp", 3 | "app_id": "" 4 | } -------------------------------------------------------------------------------- /ionic4test.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/ionic4test.keystore -------------------------------------------------------------------------------- /plugins/cordova-android-support-gradle-release/cordova-android-support-gradle-release.gradle: -------------------------------------------------------------------------------- 1 | repositories{ 2 | // Google APIs are now hosted at Maven 3 | maven { 4 | url 'https://maven.google.com' 5 | } 6 | } 7 | 8 | def ANDROID_SUPPORT_VERSION = "27.+" 9 | def PLUGIN_NAME = "cordova-android-support-gradle-release" 10 | 11 | // List of libs to search for. 12 | def LIBS = [ 13 | 'com.android.support' 14 | ] 15 | 16 | def IGNORED = [ 17 | 'multidex', 18 | 'multidex-instrumentation' 19 | ] 20 | 21 | println("+-----------------------------------------------------------------"); 22 | println("| " + PLUGIN_NAME + ": " + ANDROID_SUPPORT_VERSION); 23 | println("+-----------------------------------------------------------------"); 24 | 25 | configurations.all { 26 | resolutionStrategy.eachDependency { DependencyResolveDetails details -> 27 | if (details.requested.group in LIBS && !(details.requested.name in IGNORED)) { details.useVersion ANDROID_SUPPORT_VERSION } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /plugins/cordova-android-support-gradle-release/plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | cordova-android-support-gradle-release 8 | Cordova/Phonegap plugin to align various versions of the Android Support libraries specified by other plugins to a specific version 9 | Dave Alden 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-app-version/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 White October 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-app-version/VERSION: -------------------------------------------------------------------------------- 1 | 0.1.9 2 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-app-version/src/ios/AppVersion.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface AppVersion : CDVPlugin 4 | 5 | - (void)getAppName:(CDVInvokedUrlCommand*)command; 6 | 7 | - (void)getPackageName:(CDVInvokedUrlCommand*)command; 8 | 9 | - (void)getVersionNumber:(CDVInvokedUrlCommand*)command; 10 | 11 | - (void)getVersionCode:(CDVInvokedUrlCommand*)command; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-app-version/www/blackberry10/AppVersionProxy.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getVersionNumber: function( success, fail ) { 3 | if( !blackberry || !blackberry.app || !blackberry.app.version ) { 4 | if( fail ) { 5 | return fail(); 6 | } else { 7 | return ""; 8 | } 9 | } 10 | 11 | if( success ) { 12 | return success( blackberry.app.version ); 13 | } 14 | return blackberry.app.version; 15 | } 16 | }; 17 | 18 | require("cordova/exec/proxy").add("AppVersion", module.exports); 19 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-appminimize/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Tomás López 4 | 5 | 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: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | 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. 10 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-appminimize/plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AppMinimize 6 | This is a cordova plugin to minimizes the application in android devices 7 | MIT 8 | cordova, ionic, minimize, android 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-appminimize/src/android/AppMinimize.java: -------------------------------------------------------------------------------- 1 | package tomloprod; 2 | 3 | import org.apache.cordova.CallbackContext; 4 | import org.apache.cordova.CordovaPlugin; 5 | import org.json.JSONArray; 6 | import org.json.JSONException; 7 | import android.content.Intent; 8 | 9 | public class AppMinimize extends CordovaPlugin { 10 | 11 | @Override 12 | public boolean execute(String action, JSONArray data, CallbackContext callbackContext) throws JSONException { 13 | 14 | if (action.equals("minimize")) { 15 | Intent startMain = new Intent(Intent.ACTION_MAIN); 16 | startMain.addCategory(Intent.CATEGORY_HOME); 17 | startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 18 | this.cordova.getActivity().startActivity(startMain); 19 | callbackContext.success(1); 20 | } 21 | 22 | 23 | return false; 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-appminimize/www/AppMinimize.js: -------------------------------------------------------------------------------- 1 | var appMinimize = { 2 | minimize: function (successCallback, errorCallback) { 3 | cordova.exec(successCallback, errorCallback, 'AppMinimize', 'minimize', []); 4 | } 5 | } 6 | 7 | if (!window.plugins) { window.plugins = {}; } 8 | 9 | window.plugins.appMinimize = appMinimize; 10 | return window.plugins.appMinimize; 11 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-device/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Cordova 2 | Copyright 2012 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-device/src/ios/CDVDevice.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import 21 | #import 22 | 23 | @interface CDVDevice : CDVPlugin 24 | {} 25 | 26 | + (NSString*)cordovaVersion; 27 | 28 | - (void)getDeviceInfo:(CDVInvokedUrlCommand*)command; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-device/src/osx/CDVDevice.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import 21 | 22 | @interface CDVDevice : CDVPlugin 23 | 24 | + (NSString*) cordovaVersion; 25 | 26 | - (void) getDeviceInfo:(CDVInvokedUrlCommand*)command; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-device/tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cordova-plugin-device-tests", 3 | "version": "1.1.6-dev", 4 | "description": "", 5 | "cordova": { 6 | "id": "cordova-plugin-device-tests", 7 | "platforms": [] 8 | }, 9 | "keywords": [ 10 | "ecosystem:cordova" 11 | ], 12 | "author": "", 13 | "license": "Apache 2.0" 14 | } 15 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Cordova 2 | Copyright 2012 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/RELEASENOTES.md: -------------------------------------------------------------------------------- 1 | ### 6.0.1 (Dec 27, 2017) 2 | * [CB-13704](https://issues.apache.org/jira/browse/CB-13704) Fix to allow 6.0.0 version install 3 | 4 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/src/android/EncodingException.java: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | package org.apache.cordova.file; 21 | 22 | @SuppressWarnings("serial") 23 | public class EncodingException extends Exception { 24 | 25 | public EncodingException(String message) { 26 | super(message); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/src/android/FileExistsException.java: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | package org.apache.cordova.file; 21 | 22 | @SuppressWarnings("serial") 23 | public class FileExistsException extends Exception { 24 | 25 | public FileExistsException(String msg) { 26 | super(msg); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/src/android/InvalidModificationException.java: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | 21 | package org.apache.cordova.file; 22 | 23 | @SuppressWarnings("serial") 24 | public class InvalidModificationException extends Exception { 25 | 26 | public InvalidModificationException(String message) { 27 | super(message); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/src/android/NoModificationAllowedException.java: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | package org.apache.cordova.file; 21 | 22 | @SuppressWarnings("serial") 23 | public class NoModificationAllowedException extends Exception { 24 | 25 | public NoModificationAllowedException(String message) { 26 | super(message); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/src/android/TypeMismatchException.java: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | 21 | package org.apache.cordova.file; 22 | 23 | @SuppressWarnings("serial") 24 | public class TypeMismatchException extends Exception { 25 | 26 | public TypeMismatchException(String message) { 27 | super(message); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/src/ios/CDVAssetLibraryFilesystem.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import "CDVFile.h" 21 | 22 | extern NSString* const kCDVAssetsLibraryPrefix; 23 | extern NSString* const kCDVAssetsLibraryScheme; 24 | 25 | @interface CDVAssetLibraryFilesystem : NSObject { 26 | } 27 | 28 | - (id) initWithName:(NSString *)name; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/src/ios/CDVLocalFilesystem.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import "CDVFile.h" 21 | 22 | @interface CDVLocalFilesystem : NSObject { 23 | NSString *_name; 24 | NSString *_fsRoot; 25 | } 26 | 27 | - (id) initWithName:(NSString *)name root:(NSString *)fsRoot; 28 | + (NSString*)getMimeTypeFromPath:(NSString*)fullPath; 29 | 30 | @property (nonatomic,strong) NSString *fsRoot; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/src/osx/CDVLocalFilesystem.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import "CDVFile.h" 21 | 22 | @interface CDVLocalFilesystem : NSObject { 23 | NSString *_name; 24 | NSString *_fsRoot; 25 | } 26 | 27 | - (id) initWithName:(NSString *)name root:(NSString *)fsRoot; 28 | + (NSString*)getMimeTypeFromPath:(NSString*)fullPath; 29 | 30 | @property (nonatomic,strong) NSString *fsRoot; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cordova-plugin-file-tests", 3 | "version": "4.3.3-dev", 4 | "description": "", 5 | "cordova": { 6 | "id": "cordova-plugin-file-tests", 7 | "platforms": [ 8 | "android" 9 | ] 10 | }, 11 | "keywords": [ 12 | "ecosystem:cordova", 13 | "cordova-android" 14 | ], 15 | "author": "", 16 | "license": "Apache 2.0" 17 | } 18 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/tests/www/fixtures/asset-test/asset-test.txt: -------------------------------------------------------------------------------- 1 | This file is here for testing purposes -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/www/FileUploadResult.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | 22 | /** 23 | * FileUploadResult 24 | * @constructor 25 | */ 26 | module.exports = function FileUploadResult (size, code, content) { 27 | this.bytesSent = size; 28 | this.responseCode = code; 29 | this.response = content; 30 | }; 31 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/www/LocalFileSystem.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | 22 | exports.TEMPORARY = 0; 23 | exports.PERSISTENT = 1; 24 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/www/browser/FileSystem.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | 22 | /* global FILESYSTEM_PREFIX: true, module */ 23 | 24 | FILESYSTEM_PREFIX = 'file:///'; 25 | 26 | module.exports = { 27 | __format__: function (fullPath) { 28 | return (FILESYSTEM_PREFIX + this.name + (fullPath[0] === '/' ? '' : '/') + FileSystem.encodeURIPath(fullPath)); // eslint-disable-line no-undef 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/www/browser/isChrome.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | 22 | module.exports = function () { 23 | // window.webkitRequestFileSystem and window.webkitResolveLocalFileSystemURL are available only in Chrome and 24 | // possibly a good flag to indicate that we're running in Chrome 25 | return window.webkitRequestFileSystem && window.webkitResolveLocalFileSystemURL; 26 | }; 27 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/www/fileSystems.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | 22 | // Overridden by Android, BlackBerry 10 and iOS to populate fsMap. 23 | module.exports.getFs = function (name, callback) { 24 | callback(null); 25 | }; 26 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/www/ios/FileSystem.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | /* eslint no-undef : 0 */ 22 | FILESYSTEM_PROTOCOL = 'cdvfile'; 23 | 24 | module.exports = { 25 | __format__: function (fullPath) { 26 | var path = ('/' + this.name + (fullPath[0] === '/' ? '' : '/') + FileSystem.encodeURIPath(fullPath)).replace('//', '/'); 27 | return FILESYSTEM_PROTOCOL + '://localhost' + path; 28 | } 29 | }; 30 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-file/www/osx/FileSystem.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | /* eslint no-undef : 0 */ 22 | FILESYSTEM_PROTOCOL = 'cdvfile'; 23 | 24 | module.exports = { 25 | __format__: function (fullPath) { 26 | var path = ('/' + this.name + (fullPath[0] === '/' ? '' : '/') + FileSystem.encodeURIPath(fullPath)).replace('//', '/'); 27 | return FILESYSTEM_PROTOCOL + '://localhost' + path; 28 | } 29 | }; 30 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | *~ 3 | .DS_Store 4 | .idea/ 5 | *.iml 6 | node_modules 7 | package-lock.json -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 giantss 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/example/README.md: -------------------------------------------------------------------------------- 1 | # 测试插件的 Demo 2 | 3 | 注意 cordova.js 的引用。 4 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cordova-plugin-imagepicker", 3 | "version": "1.1.6", 4 | "description": "Cordova ImagePicker Plugin", 5 | "cordova": { 6 | "id": "cordova-plugin-imagepicker", 7 | "platforms": [ 8 | "ios", 9 | "android" 10 | ] 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/giantss/cordova-plugin-ImagePicker" 15 | }, 16 | "keywords": [ 17 | "cordova", 18 | "cordova-ios", 19 | "cordova-android", 20 | "ImagePicker" 21 | ], 22 | "author": "giantss", 23 | "license": "Apache-2.0", 24 | "engines": { 25 | "cordovaDependencies": { 26 | "1.0.0": { 27 | "cordova-android": ">6.0.0" 28 | }, 29 | "2.0.0": { 30 | "cordova": ">100" 31 | } 32 | } 33 | }, 34 | "devDependencies": { 35 | "jshint": "^0.1.8" 36 | }, 37 | "dependencies": { 38 | "async": "^2.6.0" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/screenshots/android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/screenshots/android.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/screenshots/ios.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/screenshots/ios.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/imagepicker.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | mavenCentral() 4 | jcenter() 5 | } 6 | } 7 | repositories { 8 | mavenCentral() 9 | jcenter() 10 | maven { url 'https://jitpack.io' } 11 | } 12 | dependencies { 13 | implementation 'com.android.support:appcompat-v7:+' 14 | implementation 'com.android.support:recyclerview-v7:+' 15 | implementation 'com.android.support:exifinterface:+' 16 | implementation 'com.github.chrisbanes.photoview:library:1.+' 17 | implementation 'com.github.bumptech.glide:glide:4.+' 18 | implementation 'com.github.nanchen2251:CompressHelper:1.0.+' 19 | implementation 'top.zibin:Luban:1.1.+' 20 | } 21 | android { 22 | packagingOptions { 23 | exclude 'META-INF/NOTICE' 24 | exclude 'META-INF/LICENSE' 25 | } 26 | } 27 | ext.postBuildExtras = { 28 | android { 29 | compileOptions { 30 | sourceCompatibility JavaVersion.VERSION_1_7 31 | targetCompatibility JavaVersion.VERSION_1_7 32 | } 33 | allprojects { 34 | compileOptions { 35 | sourceCompatibility = JavaVersion.VERSION_1_7 36 | targetCompatibility = JavaVersion.VERSION_1_7 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/module/ImagePickerProvider.java: -------------------------------------------------------------------------------- 1 | package com.giants.imagepicker; 2 | 3 | import android.support.v4.content.FileProvider; 4 | 5 | /** 6 | * 自定义一个Provider,以免和引入的项目的provider冲突 7 | * 8 | * Author: nanchen 9 | * Email: liushilin520@foxmail.com 10 | * Date: 2017-03-17 16:10 11 | */ 12 | 13 | public class ImagePickerProvider extends FileProvider { 14 | } 15 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/module/bean/ImageFolder.java: -------------------------------------------------------------------------------- 1 | package com.giants.imagepicker.bean; 2 | 3 | import java.io.Serializable; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | /** 8 | * ================================================ 9 | * 作 者:jeasonlzy(廖子尧 Github地址:https://github.com/jeasonlzy0216 10 | * 版 本:1.0 11 | * 创建日期:2016/5/19 12 | * 描 述:图片文件夹 13 | * 修订历史: 14 | * ================================================ 15 | */ 16 | public class ImageFolder implements Serializable { 17 | 18 | public String name; //当前文件夹的名字 19 | public String path; //当前文件夹的路径 20 | public ImageItem cover; //当前文件夹需要要显示的缩略图,默认为最近的一次图片 21 | public ArrayList images; //当前文件夹下所有图片的集合 22 | 23 | /** 只要文件夹的路径和名字相同,就认为是相同的文件夹 */ 24 | @Override 25 | public boolean equals(Object o) { 26 | try { 27 | ImageFolder other = (ImageFolder) o; 28 | return this.path.equalsIgnoreCase(other.path) && this.name.equalsIgnoreCase(other.name); 29 | } catch (ClassCastException e) { 30 | e.printStackTrace(); 31 | } 32 | return super.equals(o); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/module/bean/ImageItem.java: -------------------------------------------------------------------------------- 1 | package com.giants.imagepicker.bean; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * ================================================ 7 | * 作 者:jeasonlzy(廖子尧 Github地址:https://github.com/jeasonlzy0216 8 | * 版 本:1.0 9 | * 创建日期:2016/5/19 10 | * 描 述:图片信息 11 | * 修订历史: 12 | * ================================================ 13 | */ 14 | public class ImageItem implements Serializable { 15 | 16 | public String name; //图片的名字 17 | public String path; //图片的路径 18 | public long size; //图片的大小 19 | public int width; //图片的宽度 20 | public int height; //图片的高度 21 | public String mimeType; //图片的类型 22 | public long addTime; //图片的创建时间 23 | 24 | /** 图片的路径和创建时间相同就认为是同一张图片 */ 25 | @Override 26 | public boolean equals(Object o) { 27 | if (o instanceof ImageItem) { 28 | ImageItem item = (ImageItem) o; 29 | return this.path.equalsIgnoreCase(item.path) && this.addTime == item.addTime; 30 | } 31 | 32 | return super.equals(o); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/module/loader/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package com.giants.imagepicker.loader; 2 | 3 | import android.app.Activity; 4 | import android.widget.ImageView; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * ================================================ 10 | * 作 者:jeasonlzy(廖子尧 Github地址:https://github.com/jeasonlzy0216 11 | * 版 本:1.0 12 | * 创建日期:2016/5/19 13 | * 描 述:ImageLoader抽象类,外部需要实现这个类去加载图片, 尽力减少对第三方库的依赖,所以这么干了 14 | * 修订历史: 15 | * ================================================ 16 | */ 17 | public interface ImageLoader extends Serializable { 18 | 19 | void displayImage(Activity activity, String path, ImageView imageView, int width, int height); 20 | 21 | void displayImagePreview(Activity activity, String path, ImageView imageView, int width, int height); 22 | 23 | void clearMemoryCache(); 24 | } 25 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/module/util/ProviderUtil.java: -------------------------------------------------------------------------------- 1 | package com.giants.imagepicker.util; 2 | 3 | import android.content.Context; 4 | 5 | /** 6 | * 用于解决provider冲突的util 7 | * 8 | * Author: nanchen 9 | * Email: liushilin520@foxmail.com 10 | * Date: 2017-03-22 18:55 11 | */ 12 | 13 | public class ProviderUtil { 14 | 15 | public static String getFileProviderName(Context context){ 16 | return context.getPackageName()+".imagepicker.provider"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/module/view/ViewPagerFixed.java: -------------------------------------------------------------------------------- 1 | package com.giants.imagepicker.view; 2 | 3 | import android.content.Context; 4 | import android.support.v4.view.ViewPager; 5 | import android.util.AttributeSet; 6 | import android.view.MotionEvent; 7 | 8 | 9 | public class ViewPagerFixed extends ViewPager { 10 | 11 | public ViewPagerFixed(Context context) { 12 | super(context); 13 | } 14 | 15 | public ViewPagerFixed(Context context, AttributeSet attrs) { 16 | super(context, attrs); 17 | } 18 | 19 | @Override 20 | public boolean onTouchEvent(MotionEvent ev) { 21 | try { 22 | return super.onTouchEvent(ev); 23 | } catch (IllegalArgumentException ex) { 24 | ex.printStackTrace(); 25 | } 26 | return false; 27 | } 28 | 29 | @Override 30 | public boolean onInterceptTouchEvent(MotionEvent ev) { 31 | try { 32 | return super.onInterceptTouchEvent(ev); 33 | } catch (IllegalArgumentException ex) { 34 | ex.printStackTrace(); 35 | } 36 | return false; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/bottom_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/bottom_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/hide_to_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/left_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/left_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/right_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/right_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/scale_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/scale_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/show_from_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/top_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/anim/top_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable-xxhdpi/bg_btn_dis.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/drawable-xxhdpi/bg_btn_dis.9.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable-xxhdpi/bg_btn_nor.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/drawable-xxhdpi/bg_btn_nor.9.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable-xxhdpi/bg_btn_pre.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/drawable-xxhdpi/bg_btn_pre.9.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable/folder_list_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable/ic_cover_shade.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable/radio_item_checked.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable/selector_back_press.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable/selector_grid_camera_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable/selector_item_checked.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/drawable/selector_top_ok.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/layout/adapter_camera_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 20 | 21 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/checkbox_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/checkbox_checked.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/checkbox_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/checkbox_normal.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/default_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/default_image.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/grid_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/grid_camera.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/ic_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/ic_back.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/ic_del.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/ic_del.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/radio_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/radio_checked.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/radio_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/radio_normal.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/text_indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/android/res/mipmap-xxhdpi/text_indicator.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/values-en/multi_image_chooser_strings.xml: -------------------------------------------------------------------------------- 1 | 2 |     All images 3 |     A total of %1$d Page 4 |     %1$s/%2$s 5 |     Choose up to%1$s images 6 |     Complete 7 |     Selected (%1$s/%2$s) 8 |     Total (%1$s) 9 |     Cropped image 10 |     Original 11 |     Original (%1$s) 12 | Select 13 | Select Image 14 | Camera 15 | Canceled 16 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/values-pt/multi_image_chooser_strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Todas as imagens 3 | Um total de %1$d Pág. 4 | %1$s/%2$s 5 | Escolha até %1$s imagens 6 | Completo 7 | Marcado(%1$s/%2$s) 8 | Total(%1$s) 9 | Imagem recortada 10 | Original 11 | Original(%1$s) 12 | Selecione 13 | Elige una imagen 14 | cámara 15 | Cancelado 16 | 17 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/values/multi_image_chooser_colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #cc22292c 4 | #000000 5 | #303135 6 | #9f556061 7 | #00000000 8 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/values/multi_image_chooser_strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 全部图片 3 | 共%1$d张 4 | %1$s/%2$s 5 | 最多选择%1$s张图片 6 | 完成 7 | 完成(%1$s/%2$s) 8 | 预览(%1$s) 9 | 图片裁剪 10 | 原图 11 | 原图(%1$s) 12 | 选择 13 | 选择图片 14 | 拍摄照片 15 | 已取消 16 | 17 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/android/res/xml/imagepicker_provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/UIImage+Luban_iOS_Extension_h.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Luban_iOS_Extension_h.h 3 | // Luban-iOS 4 | // 5 | // Created by guo on 2017/7/20. 6 | // Copyright © 2017年 guo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Luban_iOS_Extension_h) 12 | 13 | + (NSData *)lubanCompressImage:(UIImage *)image; 14 | + (NSData *)lubanCompressImage:(UIImage *)image withMask:(NSString *)maskName; 15 | + (NSData *)lubanCompressImage:(UIImage *)image withCustomImage:(NSString *)imageName; 16 | + (NSData *)compressScale:(UIImage *)image maxWidth:(int)maxWidth maxHeight:(int)maxHeight; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/NSBundle+TZImagePicker.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+TZImagePicker.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/08/18. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSBundle (TZImagePicker) 12 | 13 | + (NSBundle *)tz_imagePickerBundle; 14 | 15 | + (NSString *)tz_localizedStringForKey:(NSString *)key value:(NSString *)value; 16 | + (NSString *)tz_localizedStringForKey:(NSString *)key; 17 | 18 | @end 19 | 20 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/NSBundle+TZImagePicker.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+TZImagePicker.m 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/08/18. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import "NSBundle+TZImagePicker.h" 10 | #import "TZImagePickerController.h" 11 | 12 | @implementation NSBundle (TZImagePicker) 13 | 14 | + (NSBundle *)tz_imagePickerBundle { 15 | NSBundle *bundle = [NSBundle bundleForClass:[TZImagePickerController class]]; 16 | NSURL *url = [bundle URLForResource:@"TZImagePickerController" withExtension:@"bundle"]; 17 | bundle = [NSBundle bundleWithURL:url]; 18 | return bundle; 19 | } 20 | 21 | + (NSString *)tz_localizedStringForKey:(NSString *)key { 22 | return [self tz_localizedStringForKey:key value:@""]; 23 | } 24 | 25 | + (NSString *)tz_localizedStringForKey:(NSString *)key value:(NSString *)value { 26 | NSBundle *bundle = [TZImagePickerConfig sharedInstance].languageBundle; 27 | NSString *value1 = [bundle localizedStringForKey:key value:value table:nil]; 28 | return value1; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZGifPhotoPreviewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZGifPhotoPreviewController.h 3 | // TZImagePickerController 4 | // 5 | // Created by ttouch on 2016/12/13. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAssetModel; 12 | @interface TZGifPhotoPreviewController : UIViewController 13 | 14 | @property (nonatomic, strong) TZAssetModel *model; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImageCropManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZImageCropManager.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 2016/12/5. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 图片裁剪管理类 8 | 9 | #import 10 | #import 11 | 12 | @interface TZImageCropManager : NSObject 13 | 14 | /// 裁剪框背景的处理 15 | + (void)overlayClippingWithView:(UIView *)view cropRect:(CGRect)cropRect containerView:(UIView *)containerView needCircleCrop:(BOOL)needCircleCrop; 16 | 17 | /* 18 | 1.7.2 为了解决多位同学对于图片裁剪的需求,我这两天有空便在研究图片裁剪 19 | 幸好有tuyou的PhotoTweaks库做参考,裁剪的功能实现起来简单许多 20 | 该方法和其内部引用的方法基本来自于tuyou的PhotoTweaks库,我做了稍许删减和修改 21 | 感谢tuyou同学在github开源了优秀的裁剪库PhotoTweaks,表示感谢 22 | PhotoTweaks库的github链接:https://github.com/itouch2/PhotoTweaks 23 | */ 24 | /// 获得裁剪后的图片 25 | + (UIImage *)cropImageView:(UIImageView *)imageView toRect:(CGRect)rect zoomScale:(double)zoomScale containerView:(UIView *)containerView; 26 | 27 | /// 获取圆形图片 28 | + (UIImage *)circularClipImage:(UIImage *)image; 29 | 30 | @end 31 | 32 | 33 | /// 该分类的代码来自SDWebImage:https://github.com/rs/SDWebImage 34 | /// 为了防止冲突,我将分类名字和方法名字做了修改 35 | @interface UIImage (TZGif) 36 | 37 | + (UIImage *)sd_tz_animatedGIFWithData:(NSData *)data; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/MMVideoPreviewPlay@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/MMVideoPreviewPlay@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/MMVideoPreviewPlayHL@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/MMVideoPreviewPlayHL@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/TableViewArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/TableViewArrow@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/VideoSendIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/VideoSendIcon@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/navi_back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/navi_back@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_def_photoPickerVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_def_photoPickerVc@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_def_previewVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_def_previewVc@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_number_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_number_icon@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_original_def@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_original_def@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_original_sel@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_original_sel@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_sel_photoPickerVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_sel_photoPickerVc@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_sel_previewVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/photo_sel_previewVc@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/preview_number_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/preview_number_icon@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/preview_original_def@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/preview_original_def@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/takePicture80@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/takePicture80@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/takePicture@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/takePicture@2x.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/zh-Hant.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-imagepicker/src/ios/libs/TZImagePickerController.bundle/zh-Hant.lproj/Localizable.strings -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZLocationManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZLocationManager.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 2017/06/03. 6 | // Copyright © 2017年 谭真. All rights reserved. 7 | // 定位管理类 8 | 9 | 10 | #import 11 | #import 12 | 13 | @interface TZLocationManager : NSObject 14 | 15 | + (instancetype)manager; 16 | 17 | /// 开始定位 18 | - (void)startLocation; 19 | - (void)startLocationWithSuccessBlock:(void (^)(NSArray *))successBlock failureBlock:(void (^)(NSError *error))failureBlock; 20 | - (void)startLocationWithGeocoderBlock:(void (^)(NSArray *geocoderArray))geocoderBlock; 21 | - (void)startLocationWithSuccessBlock:(void (^)(NSArray *))successBlock failureBlock:(void (^)(NSError *error))failureBlock geocoderBlock:(void (^)(NSArray *geocoderArray))geocoderBlock; 22 | 23 | @end 24 | 25 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZPhotoPickerController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPickerController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAlbumModel; 12 | @interface TZPhotoPickerController : UIViewController 13 | 14 | @property (nonatomic, assign) BOOL isFirstAppear; 15 | @property (nonatomic, assign) NSInteger columnNumber; 16 | @property (nonatomic, strong) TZAlbumModel *model; 17 | @end 18 | 19 | 20 | @interface TZCollectionView : UICollectionView 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZPhotoPreviewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPreviewController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TZPhotoPreviewController : UIViewController 12 | 13 | @property (nonatomic, strong) NSMutableArray *models; ///< All photo models / 所有图片模型数组 14 | @property (nonatomic, strong) NSMutableArray *photos; ///< All photos / 所有图片数组 15 | @property (nonatomic, assign) NSInteger currentIndex; ///< Index of the photo user click / 用户点击的图片的索引 16 | @property (nonatomic, assign) BOOL isSelectOriginalPhoto; ///< If YES,return original photo / 是否返回原图 17 | @property (nonatomic, assign) BOOL isCropImage; 18 | 19 | /// Return the new selected photos / 返回最新的选中图片数组 20 | @property (nonatomic, copy) void (^backButtonClickBlock)(BOOL isSelectOriginalPhoto); 21 | @property (nonatomic, copy) void (^doneButtonClickBlock)(BOOL isSelectOriginalPhoto); 22 | @property (nonatomic, copy) void (^doneButtonClickBlockCropMode)(UIImage *cropedImage,id asset); 23 | @property (nonatomic, copy) void (^doneButtonClickBlockWithPreviewType)(NSArray *photos,NSArray *assets,BOOL isSelectOriginalPhoto); 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZProgressView.h 3 | // TZImagePickerController 4 | // 5 | // Created by ttouch on 2016/12/6. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TZProgressView : UIView 12 | 13 | @property (nonatomic, assign) double progress; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZTestCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZTestCell.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/1/3. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TZTestCell : UICollectionViewCell 12 | 13 | @property (nonatomic, strong) UIImageView *imageView; 14 | @property (nonatomic, strong) UIImageView *videoImageView; 15 | @property (nonatomic, strong) UIButton *deleteBtn; 16 | @property (nonatomic, strong) UILabel *gifLable; 17 | @property (nonatomic, assign) NSInteger row; 18 | @property (nonatomic, strong) id asset; 19 | 20 | - (UIView *)snapshotView; 21 | 22 | @end 23 | 24 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-imagepicker/src/ios/libs/TZVideoPlayerController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZVideoPlayerController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/1/5. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAssetModel; 12 | @interface TZVideoPlayerController : UIViewController 13 | 14 | @property (nonatomic, strong) TZAssetModel *model; 15 | 16 | @end -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Cordova 2 | Copyright 2012 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-hdpi/ic_action_next_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-hdpi/ic_action_next_item.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-hdpi/ic_action_previous_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-hdpi/ic_action_previous_item.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-hdpi/ic_action_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-hdpi/ic_action_remove.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-mdpi/ic_action_next_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-mdpi/ic_action_next_item.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-mdpi/ic_action_previous_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-mdpi/ic_action_previous_item.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-mdpi/ic_action_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-mdpi/ic_action_remove.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xhdpi/ic_action_next_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xhdpi/ic_action_next_item.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xhdpi/ic_action_previous_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xhdpi/ic_action_previous_item.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xhdpi/ic_action_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xhdpi/ic_action_remove.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xxhdpi/ic_action_next_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xxhdpi/ic_action_next_item.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xxhdpi/ic_action_previous_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xxhdpi/ic_action_previous_item.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xxhdpi/ic_action_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/src/android/res/drawable-xxhdpi/ic_action_remove.png -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/src/osx/CDVInAppBrowser.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import 21 | 22 | @interface CDVInAppBrowser : CDVPlugin { 23 | } 24 | 25 | @property (nonatomic, copy) NSString* callbackId; 26 | 27 | - (void)open:(CDVInvokedUrlCommand*)command; 28 | 29 | @end 30 | 31 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/tests/.eslintrc.yml: -------------------------------------------------------------------------------- 1 | env: 2 | jasmine: true -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cordova-plugin-inappbrowser-tests", 3 | "version": "1.7.1-dev", 4 | "description": "", 5 | "cordova": { 6 | "id": "cordova-plugin-inappbrowser-tests", 7 | "platforms": [] 8 | }, 9 | "keywords": [ 10 | "ecosystem:cordova" 11 | ], 12 | "author": "", 13 | "license": "Apache 2.0" 14 | } 15 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/tests/resources/inject.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | #style-update-file { 20 | display: block !important; 21 | } 22 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/tests/resources/inject.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | var d = document.getElementById('header'); 20 | d.innerHTML = 'Script file successfully injected'; 21 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-inappbrowser/tests/resources/local.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-inappbrowser/tests/resources/local.pdf -------------------------------------------------------------------------------- /plugins/cordova-plugin-ionic-keyboard/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2015-present Drifty Co. 2 | http://drifty.com/ 3 | 4 | MIT License 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | "Software"), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 21 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 22 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-ionic-webview/src/ios/CDVWKProcessPoolFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import 21 | 22 | @interface CDVWKProcessPoolFactory : NSObject 23 | @property (nonatomic, retain) WKProcessPool* sharedPool; 24 | 25 | +(instancetype) sharedFactory; 26 | -(WKProcessPool*) sharedProcessPool; 27 | @end 28 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-ionic-webview/src/ios/CDVWKWebViewUIDelegate.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import 21 | 22 | @interface CDVWKWebViewUIDelegate : NSObject 23 | 24 | @property (nonatomic, copy) NSString* title; 25 | 26 | - (instancetype)initWithTitle:(NSString*)title; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-ionic-webview/src/ios/IONAssetHandler.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface IONAssetHandler : NSObject 5 | 6 | @property (nonatomic, strong) NSString * basePath; 7 | 8 | -(void)setAssetPath:(NSString *)assetPath; 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-ionic-webview/src/ios/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012 Niklas von Hertzen 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /plugins/cordova-plugin-ionic-webview/src/www/util.js: -------------------------------------------------------------------------------- 1 | var exec = require('cordova/exec'); 2 | 3 | var WebView = { 4 | convertFileSrc: function(url) { 5 | if (!url) { 6 | return url; 7 | } 8 | if (url.startsWith('/')) { 9 | return window.WEBVIEW_SERVER_URL + '/_app_file_' + url; 10 | } 11 | if (url.startsWith('file://')) { 12 | return window.WEBVIEW_SERVER_URL + url.replace('file://', '/_app_file_'); 13 | } 14 | if (url.startsWith('content://')) { 15 | return window.WEBVIEW_SERVER_URL + url.replace('content:/', '/_app_content_'); 16 | } 17 | return url; 18 | }, 19 | setServerBasePath: function(path) { 20 | exec(null, null, 'IonicWebView', 'setServerBasePath', [path]); 21 | }, 22 | getServerBasePath: function(callback) { 23 | exec(callback, null, 'IonicWebView', 'getServerBasePath', []); 24 | }, 25 | persistServerBasePath: function() { 26 | exec(null, null, 'IonicWebView', 'persistServerBasePath', []); 27 | } 28 | } 29 | 30 | module.exports = WebView; -------------------------------------------------------------------------------- /plugins/cordova-plugin-network-information/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Cordova 2 | Copyright 2012 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | 7 | This product includes software developed by Apple Inc. License can be found in the header of the affected files. (src/ios/CDVReachability.h, src/ios/CDVReachability.m) 8 | 9 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-network-information/RELEASENOTES.md: -------------------------------------------------------------------------------- 1 | ### 2.0.1 (Dec 27, 2017) 2 | * [CB-13708](https://issues.apache.org/jira/browse/CB-13708) Fix to allow 2.0.0 version install (#60) 3 | 4 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-network-information/src/ios/CDVConnection.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import 21 | #import 22 | #import "CDVReachability.h" 23 | 24 | @interface CDVConnection : CDVPlugin { 25 | NSString* type; 26 | NSString* _callbackId; 27 | 28 | CDVReachability* internetReach; 29 | } 30 | 31 | @property (copy) NSString* connectionType; 32 | @property (strong) CDVReachability* internetReach; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-network-information/tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cordova-plugin-network-information-tests", 3 | "version": "1.3.3-dev", 4 | "description": "", 5 | "cordova": { 6 | "id": "cordova-plugin-network-information-tests", 7 | "platforms": [] 8 | }, 9 | "keywords": [ 10 | "ecosystem:cordova" 11 | ], 12 | "author": "", 13 | "license": "Apache 2.0" 14 | } 15 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-network-information/tests/plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 25 | Cordova Network Information Plugin Tests 26 | Apache 2.0 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-network-information/www/Connection.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | 22 | /** 23 | * Network status 24 | */ 25 | module.exports = { 26 | UNKNOWN: 'unknown', 27 | ETHERNET: 'ethernet', 28 | WIFI: 'wifi', 29 | CELL_2G: '2g', 30 | CELL_3G: '3g', 31 | CELL_4G: '4g', 32 | CELL: 'cellular', 33 | NONE: 'none' 34 | }; 35 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Terikon Software 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/src/android/PhotoLibraryGetLibraryOptions.java: -------------------------------------------------------------------------------- 1 | package com.terikon.cordova.photolibrary; 2 | 3 | public class PhotoLibraryGetLibraryOptions { 4 | 5 | public final int itemsInChunk; 6 | public final double chunkTimeSec; 7 | public final boolean includeAlbumData; 8 | 9 | public PhotoLibraryGetLibraryOptions(int itemsInChunk, double chunkTimeSec, boolean includeAlbumData) { 10 | this.itemsInChunk = itemsInChunk; 11 | this.chunkTimeSec = chunkTimeSec; 12 | this.includeAlbumData = includeAlbumData; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/src/browser/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "es6": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/src/browser/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/src/ios/PhotoLibraryGetLibraryOptions.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct PhotoLibraryGetLibraryOptions { 4 | let thumbnailWidth: Int 5 | let thumbnailHeight: Int 6 | let itemsInChunk: Int 7 | let chunkTimeSec: Double 8 | let useOriginalFileNames: Bool 9 | let includeImages: Bool 10 | let includeAlbumData: Bool 11 | let includeCloudData: Bool 12 | let includeVideos: Bool 13 | let maxItems: Int 14 | } 15 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "jasmine": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/README.md: -------------------------------------------------------------------------------- 1 | Automatic and manual tests for cordova-plugin-photo-library. 2 | Tests are written with [cordova-plugin-test-framework](https://github.com/apache/cordova-plugin-test-framework). Automatic tests run with [jasmine](https://jasmine.github.io/). 3 | 4 | # Running tests 5 | 6 | Please use [cordova-plugin-photo-library-tester](https://github.com/terikon/cordova-plugin-photo-library-tester) to run the tests. 7 | 8 | # Shims 9 | 10 | Tests plugin adds es5, es6 and es7 shims. If needed, update esX-shim.min.js files from node_modules/esX-shim folder. 11 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/android/wait-for-emulator-boot.sh: -------------------------------------------------------------------------------- 1 | adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done' 2 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/blueimp-canvastoblob/js/canvas-to-blob.min.js: -------------------------------------------------------------------------------- 1 | !function(a){"use strict";var b=a.HTMLCanvasElement&&a.HTMLCanvasElement.prototype,c=a.Blob&&function(){try{return Boolean(new Blob)}catch(a){return!1}}(),d=c&&a.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(a){return!1}}(),e=a.BlobBuilder||a.WebKitBlobBuilder||a.MozBlobBuilder||a.MSBlobBuilder,f=(c||e)&&a.atob&&a.ArrayBuffer&&a.Uint8Array&&function(a){var b,f,g,h,i,j;for(b=a.split(",")[0].indexOf("base64")>=0?atob(a.split(",")[1]):decodeURIComponent(a.split(",")[1]),f=new ArrayBuffer(b.length),g=new Uint8Array(f),h=0;h 2 | 6 | Photo Library Tests 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Landscape_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Landscape_1.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Landscape_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Landscape_2.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Landscape_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Landscape_3.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Landscape_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Landscape_4.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Landscape_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Landscape_5.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Landscape_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Landscape_6.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Landscape_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Landscape_7.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Landscape_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Landscape_8.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Portrait_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Portrait_1.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Portrait_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Portrait_2.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Portrait_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Portrait_3.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Portrait_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Portrait_4.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Portrait_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Portrait_5.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Portrait_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Portrait_6.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Portrait_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Portrait_7.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/Portrait_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/Portrait_8.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-images/geotagged.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/tests/test-images/geotagged.jpg -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/tests/test-utils.js: -------------------------------------------------------------------------------- 1 | exports.resolveLocalFileSystemURL = function (fileSystem) { 2 | 3 | return new Promise(function (resolve, reject) { 4 | 5 | window.resolveLocalFileSystemURL(fileSystem, resolve, reject); 6 | 7 | }); 8 | 9 | }; 10 | 11 | exports.createFile = function (dirEntry, fileName) { 12 | 13 | return new Promise(function (resolve, reject) { 14 | 15 | dirEntry.getFile(fileName, {create: true, exclusive: false}, resolve, reject); 16 | 17 | }); 18 | 19 | }; 20 | 21 | exports.writeFile = function (fileEntry, dataObj) { 22 | 23 | return new Promise(function (resolve, reject) { 24 | 25 | fileEntry.createWriter(function (fileWriter) { 26 | 27 | fileWriter.onwriteend = function () { resolve (fileEntry); }; 28 | fileWriter.onerror = reject; 29 | 30 | fileWriter.write(dataObj); 31 | 32 | }); 33 | 34 | }); 35 | 36 | }; 37 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-photo-library/www/async/dist/async.min.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/plugins/cordova-plugin-photo-library/www/async/dist/async.min.map -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Cordova 2 | Copyright 2012 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.h: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | #import 21 | 22 | @interface CDVViewController (SplashScreen) 23 | 24 | @property (nonatomic, assign) BOOL enabledAutorotation; 25 | @property (nonatomic, readonly) BOOL shouldAutorotateDefaultValue; 26 | 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/.npmignore: -------------------------------------------------------------------------------- 1 | build -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/tests/ios/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cordova-plugin-splashscreen-test-ios", 3 | "version": "1.0.0", 4 | "description": "iOS Unit Tests for Splashscreen Plugin", 5 | "author": "Apache Software Foundation", 6 | "license": "Apache Version 2.0", 7 | "dependencies": { 8 | "cordova-ios": "*" 9 | }, 10 | "scripts": { 11 | "test": "xcodebuild test -workspace CDVSplashScreenTest.xcworkspace -scheme CDVSplashScreenLibTests -destination 'platform=iOS Simulator,name=iPhone 5' CONFIGURATION_BUILD_DIR='/tmp' HEADER_SEARCH_PATHS='$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include'" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cordova-plugin-splashscreen-tests", 3 | "version": "4.0.3-dev", 4 | "description": "", 5 | "cordova": { 6 | "id": "cordova-plugin-splashscreen-tests", 7 | "platforms": [] 8 | }, 9 | "keywords": [ 10 | "ecosystem:cordova" 11 | ], 12 | "author": "", 13 | "license": "Apache 2.0" 14 | } 15 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/tests/plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 24 | Cordova Splashscreen Plugin Tests 25 | Apache 2.0 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/types/index.d.ts: -------------------------------------------------------------------------------- 1 | // Type definitions for Apache Cordova Splashscreen plugin 2 | // Project: https://github.com/apache/cordova-plugin-splashscreen 3 | // Definitions by: Microsoft Open Technologies Inc 4 | // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped 5 | // 6 | // Copyright (c) Microsoft Open Technologies Inc 7 | // Licensed under the MIT license. 8 | 9 | interface Navigator { 10 | /** This plugin displays and hides a splash screen during application launch. */ 11 | splashscreen: { 12 | /** Dismiss the splash screen. */ 13 | hide(): void; 14 | /** Displays the splash screen. */ 15 | show(): void; 16 | } 17 | } -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/www/splashscreen.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | 22 | var exec = require('cordova/exec'); 23 | 24 | var splashscreen = { 25 | show:function() { 26 | exec(null, null, "SplashScreen", "show", []); 27 | }, 28 | hide:function() { 29 | exec(null, null, "SplashScreen", "hide", []); 30 | } 31 | }; 32 | 33 | module.exports = splashscreen; 34 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-splashscreen/www/windows/SplashScreenProxy.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | 22 | /*jslint sloppy:true */ 23 | 24 | var splash = require('cordova/splashscreen'); 25 | 26 | var SplashScreen = { 27 | show: function () { 28 | splash.show(); 29 | }, 30 | hide: function () { 31 | splash.hide(); 32 | } 33 | }; 34 | 35 | module.exports = SplashScreen; 36 | 37 | require("cordova/exec/proxy").add("SplashScreen", SplashScreen); 38 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-statusbar/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Cordova 2 | Copyright 2012 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-statusbar/tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cordova-plugin-statusbar-tests", 3 | "version": "2.2.3-dev", 4 | "description": "", 5 | "cordova": { 6 | "id": "cordova-plugin-statusbar-tests", 7 | "platforms": [] 8 | }, 9 | "keywords": [ 10 | "ecosystem:cordova" 11 | ], 12 | "author": "", 13 | "license": "Apache 2.0" 14 | } 15 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-whitelist/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Cordova 2 | Copyright 2012 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-x-socialsharing/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. -------------------------------------------------------------------------------- /plugins/cordova-plugin-x-socialsharing/src/android/nl/xservices/plugins/FileProvider.java: -------------------------------------------------------------------------------- 1 | package nl.xservices.plugins; 2 | 3 | 4 | public class FileProvider extends android.support.v4.content.FileProvider { 5 | } -------------------------------------------------------------------------------- /plugins/cordova-plugin-x-socialsharing/src/android/nl/xservices/plugins/ShareChooserPendingIntent.java: -------------------------------------------------------------------------------- 1 | package nl.xservices.plugins; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.util.Log; 7 | 8 | public class ShareChooserPendingIntent extends BroadcastReceiver { 9 | public static String chosenComponent = null; 10 | @Override 11 | public void onReceive(Context context, Intent intent) { 12 | ShareChooserPendingIntent.chosenComponent = intent.getExtras().get(Intent.EXTRA_CHOSEN_COMPONENT).toString(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-x-socialsharing/src/android/res/xml/sharing_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-x-socialsharing/src/ios/NSString+SSURLEncoding.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface NSString (SSURLEncoding) 4 | @property (readonly) NSString *SSURLEncodedString; 5 | @end 6 | -------------------------------------------------------------------------------- /plugins/cordova-plugin-x-socialsharing/src/ios/NSString+SSURLEncoding.m: -------------------------------------------------------------------------------- 1 | #import "NSString+SSURLEncoding.h" 2 | 3 | @implementation NSString (SSURLEncoding) 4 | - (NSString*)SSURLEncodedString 5 | { 6 | NSString* result = (NSString *)CFBridgingRelease( 7 | CFURLCreateStringByAddingPercentEscapes( 8 | kCFAllocatorDefault, 9 | (CFStringRef)self, 10 | CFSTR("#%"), // don't escape these 11 | NULL, // allow escaping these 12 | kCFStringEncodingUTF8 13 | ) 14 | ); 15 | 16 | // we may have a URL with more than one '#' now - which iOS doesn't allow, so escape all but the first one 17 | NSArray *parts = [result componentsSeparatedByString:@"#"]; 18 | NSString *finalResult = parts[0]; 19 | for (int i=1; i 17 | ``` 18 | 19 | Cordova CLI takes care to install PromisesPlugin automatically: 20 | 21 | ``` 22 | $ cordova plugins add {yourPlugin} 23 | 24 | > Installing "{yourPlugin}" for {platform} 25 | > Installing "es6-promise-plugin" for {platform} 26 | ``` 27 | 28 | This is all. ```window.Promise``` is available for use in your plugin. 29 | 30 | # Credits 31 | 32 | This plugin wraps [es6-promise](https://github.com/jakearchibald/es6-promise) in a Cordova/PhoneGap friendly way. 33 | 34 | # License 35 | 36 | The plugin is available under MIT license. 37 | -------------------------------------------------------------------------------- /plugins/es6-promise-plugin/plugin.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | Promise 7 | Vlad Stirbu 8 | MIT 9 | es6-promise,polyfill 10 | 11 | 12 | A polyfill for ES6-style Promises, tracking npm es6-promise 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /resources/README.md: -------------------------------------------------------------------------------- 1 | These are Cordova resources. You can replace icon.png and splash.png and run 2 | `ionic cordova resources` to generate custom icons and splash screens for your 3 | app. See `ionic cordova resources --help` for details. 4 | 5 | Cordova reference documentation: 6 | 7 | - Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html 8 | - Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/ 9 | -------------------------------------------------------------------------------- /resources/android/icon/drawable-hdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/icon/drawable-hdpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-ldpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/icon/drawable-ldpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-mdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/icon/drawable-mdpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-xhdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/icon/drawable-xhdpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-xxhdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/icon/drawable-xxhdpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-xxxhdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/icon/drawable-xxxhdpi-icon.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-hdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-land-hdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-ldpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-land-ldpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-mdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-land-mdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-xhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-land-xhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-xxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-land-xxhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-xxxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-land-xxxhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-hdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-port-hdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-ldpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-port-ldpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-mdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-port-mdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-xhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-port-xhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-xxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-port-xxhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-xxxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/android/splash/drawable-port-xxxhdpi-screen.png -------------------------------------------------------------------------------- /resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/icon.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-1024.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-40.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-40@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-40@3x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-50.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-50@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-60.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-60@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-60@3x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-72.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-72@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-76.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-76@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-83.5@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-small.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-small@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon-small@3x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon.png -------------------------------------------------------------------------------- /resources/ios/icon/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/icon/icon@2x.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-568h@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-568h@2x~iphone.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-667h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-667h.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-736h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-736h.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape-736h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-Landscape-736h.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-Landscape@2x~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape@~ipadpro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-Landscape@~ipadpro.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-Landscape~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Portrait@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-Portrait@2x~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Portrait@~ipadpro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-Portrait@~ipadpro.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Portrait~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default-Portrait~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default@2x~iphone.png -------------------------------------------------------------------------------- /resources/ios/splash/Default@2x~universal~anyany.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default@2x~universal~anyany.png -------------------------------------------------------------------------------- /resources/ios/splash/Default~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/ios/splash/Default~iphone.png -------------------------------------------------------------------------------- /resources/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/resources/splash.png -------------------------------------------------------------------------------- /src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; 3 | import { TabsPage } from './pages/tabs/tabs.page'; 4 | import { Tab1Page } from './pages/tab1/tab1.page'; 5 | import { tab1Routes } from './routers/tab1.router'; 6 | import { DemoPage } from './pages/demo/demo.page'; 7 | import { demoRoutes } from './routers/demo.router'; 8 | import { MinePage } from './pages/mine/mine.page'; 9 | import { mineRoutes } from './routers/mine.router'; 10 | 11 | const routes: Routes = [ 12 | { 13 | path: 'tabs', 14 | component: TabsPage, 15 | children: [ 16 | {path: 'tab1', component: Tab1Page}, 17 | ...tab1Routes, 18 | {path: 'demo', component: DemoPage}, 19 | ...demoRoutes, 20 | {path: 'mine', component: MinePage}, 21 | ...mineRoutes 22 | ] 23 | }, 24 | {path: 'login', loadChildren: './pages/login/login.module#LoginPageModule'}, 25 | {path: 'register', loadChildren: './pages/login/register/register.module#RegisterPageModule'} 26 | ]; 27 | 28 | @NgModule({ 29 | imports: [ 30 | RouterModule.forRoot(routes, {preloadingStrategy: PreloadAllModules}) 31 | ], 32 | exports: [RouterModule] 33 | }) 34 | export class AppRoutingModule { 35 | } 36 | -------------------------------------------------------------------------------- /src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/directives/directives.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ValidatorRegularDirective } from './validator-regular.directive'; 3 | import { ValidatorUsernameExistDirective } from './validator-username-exist'; 4 | import { ValidatorPasswordIdenticalDirective } from './validator-password-identical'; 5 | import { ContentEditableDirective } from './content-editable.directive'; 6 | 7 | @NgModule({ 8 | declarations: [ 9 | ValidatorRegularDirective, 10 | ValidatorUsernameExistDirective, 11 | ValidatorPasswordIdenticalDirective, 12 | ContentEditableDirective 13 | ], 14 | imports: [], 15 | exports: [ 16 | ValidatorRegularDirective, 17 | ValidatorUsernameExistDirective, 18 | ValidatorPasswordIdenticalDirective, 19 | ContentEditableDirective 20 | ] 21 | }) 22 | export class DirectivesModule { 23 | } 24 | -------------------------------------------------------------------------------- /src/app/directives/validator-password-identical.ts: -------------------------------------------------------------------------------- 1 | import { Directive } from '@angular/core'; 2 | import { FormGroup, NG_VALIDATORS, Validator } from '@angular/forms'; 3 | 4 | @Directive({ 5 | selector: '[validator-password-identical]', 6 | providers: [{ 7 | provide: NG_VALIDATORS, 8 | useExisting: ValidatorPasswordIdenticalDirective, 9 | multi: true 10 | }] 11 | }) 12 | export class ValidatorPasswordIdenticalDirective implements Validator { 13 | 14 | validate(control: FormGroup): { [key: string]: any } | null { 15 | const password = control.get('password'); 16 | const newPassword = control.get('newPassword'); 17 | return password && newPassword && password.value === newPassword.value ? null : {'passwordInvalid': true}; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/app/directives/validator-regular.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, Input } from '@angular/core'; 2 | import { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms'; 3 | import { Validators } from '../providers/Validators'; 4 | 5 | @Directive({ 6 | selector: '[validator-regular]', 7 | providers: [{ 8 | provide: NG_VALIDATORS, 9 | useExisting: ValidatorRegularDirective, 10 | multi: true 11 | }] 12 | }) 13 | export class ValidatorRegularDirective implements Validator { 14 | // tslint:disable-next-line:no-input-rename 15 | @Input('validator-regular') regularName: string; 16 | 17 | validate(control: AbstractControl): ValidationErrors | null { 18 | if (!this.regularName) { 19 | return null; 20 | } 21 | const validatorFn = Validators[this.regularName]; 22 | if (!validatorFn) { 23 | alert('未找到名称为' + this.regularName + '的验证规则,请添加'); 24 | return null; 25 | } 26 | return validatorFn(control); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/app/directives/validator-username-exist.ts: -------------------------------------------------------------------------------- 1 | import { Directive, forwardRef } from '@angular/core'; 2 | import { AbstractControl, AsyncValidator, NG_ASYNC_VALIDATORS } from '@angular/forms'; 3 | import { Observable } from 'rxjs'; 4 | import { debounceTime, distinctUntilChanged, first, flatMap } from 'rxjs/operators'; 5 | import { AuthService } from '../services/auth.service'; 6 | 7 | @Directive({ 8 | selector: '[validator-username-exist]', 9 | providers: [{ 10 | provide: NG_ASYNC_VALIDATORS, 11 | useExisting: forwardRef(() => ValidatorUsernameExistDirective), 12 | multi: true 13 | }] 14 | }) 15 | export class ValidatorUsernameExistDirective implements AsyncValidator { 16 | constructor(public auth: AuthService) { 17 | } 18 | 19 | validate(c: AbstractControl): Observable { 20 | return c.valueChanges.pipe( 21 | debounceTime(1000), 22 | distinctUntilChanged(), 23 | flatMap(() => this.auth.getUserByName((c.value))), 24 | first() 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/app/interfaces/FileObj.ts: -------------------------------------------------------------------------------- 1 | export interface FileObj { 2 | id?: string; // 主键 3 | origPath?: string; // 原文件路径 4 | thumbPath?: string; // 缩略文件路径(图片类型文件) 5 | name?: string; // 资源名称 6 | createTime?: string; // 创建时间 7 | size?: string; // 大小 8 | type?: string; // 类型(jpg, gift, png, xls, doc 9 | status?: string; // 状态(1:正常,0:删除) 10 | token?: string; 11 | base64?: string; // base64字符串 12 | parameter?: string; // 自定义参数,原文返回 13 | } 14 | -------------------------------------------------------------------------------- /src/app/interfaces/UserInfo.ts: -------------------------------------------------------------------------------- 1 | export interface UserInfo { 2 | id?: string; 3 | username?: string; 4 | realname?: string; 5 | mobileNumber?: string; 6 | email?: string; 7 | avatarId?: string; 8 | departmentId?: string; 9 | departmentName?: string; 10 | roles?: object[]; 11 | 12 | avatarPath?: string; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/pages/demo/demo.page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | form 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/app/pages/demo/demo.page.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/src/app/pages/demo/demo.page.scss -------------------------------------------------------------------------------- /src/app/pages/demo/demo.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { DemoPage } from './demo.page'; 5 | 6 | describe('DemoPage', () => { 7 | let component: DemoPage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ DemoPage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(DemoPage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/demo/demo.page.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-demo', 5 | templateUrl: './demo.page.html', 6 | styleUrls: ['./demo.page.scss'], 7 | }) 8 | export class DemoPage implements OnInit { 9 | constructor() { 10 | } 11 | 12 | ngOnInit() { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/app/pages/demo/form/form.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { IonicModule } from '@ionic/angular'; 7 | 8 | import { FormPage } from './form.page'; 9 | import { DirectivesModule } from '../../../directives/directives.module'; 10 | 11 | const routes: Routes = [ 12 | { 13 | path: '', 14 | component: FormPage 15 | } 16 | ]; 17 | 18 | @NgModule({ 19 | imports: [ 20 | CommonModule, 21 | FormsModule, 22 | IonicModule, 23 | RouterModule.forChild(routes), 24 | DirectivesModule 25 | ], 26 | declarations: [FormPage] 27 | }) 28 | export class FormPageModule { 29 | } 30 | -------------------------------------------------------------------------------- /src/app/pages/demo/form/form.page.scss: -------------------------------------------------------------------------------- 1 | ion-content { 2 | --ion-background-color: #f5f5f5; 3 | } -------------------------------------------------------------------------------- /src/app/pages/demo/form/form.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { FormPage } from './form.page'; 5 | 6 | describe('FormPage', () => { 7 | let component: FormPage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ FormPage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(FormPage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/login/login.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { IonicModule } from '@ionic/angular'; 7 | 8 | import { LoginPage } from './login.page'; 9 | import { DirectivesModule } from '../../directives/directives.module'; 10 | 11 | const routes: Routes = [ 12 | { 13 | path: '', 14 | component: LoginPage 15 | } 16 | ]; 17 | 18 | @NgModule({ 19 | imports: [ 20 | CommonModule, 21 | FormsModule, 22 | IonicModule, 23 | RouterModule.forChild(routes), 24 | DirectivesModule 25 | ], 26 | declarations: [LoginPage] 27 | }) 28 | export class LoginPageModule { 29 | } 30 | -------------------------------------------------------------------------------- /src/app/pages/login/login.page.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/src/app/pages/login/login.page.scss -------------------------------------------------------------------------------- /src/app/pages/login/login.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { LoginPage } from './login.page'; 5 | 6 | describe('LoginPage', () => { 7 | let component: LoginPage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ LoginPage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(LoginPage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/login/register/register.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { IonicModule } from '@ionic/angular'; 7 | 8 | import { RegisterPage } from './register.page'; 9 | import { DirectivesModule } from '../../../directives/directives.module'; 10 | 11 | const routes: Routes = [ 12 | { 13 | path: '', 14 | component: RegisterPage 15 | } 16 | ]; 17 | 18 | @NgModule({ 19 | imports: [ 20 | CommonModule, 21 | FormsModule, 22 | IonicModule, 23 | RouterModule.forChild(routes), 24 | DirectivesModule 25 | ], 26 | declarations: [RegisterPage] 27 | }) 28 | export class RegisterPageModule { 29 | } 30 | -------------------------------------------------------------------------------- /src/app/pages/login/register/register.page.scss: -------------------------------------------------------------------------------- 1 | 2 | ion-content { 3 | --ion-background-color: #f5f5f5; 4 | } 5 | 6 | ion-item { 7 | --ion-background-color: #fff; 8 | } -------------------------------------------------------------------------------- /src/app/pages/login/register/register.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { RegisterPage } from './register.page'; 5 | 6 | describe('RegisterPage', () => { 7 | let component: RegisterPage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ RegisterPage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(RegisterPage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/login/register/register.page.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { AuthService } from '../../../services/auth.service'; 3 | import { Router } from '@angular/router'; 4 | import { Helper } from '../../../providers/Helper'; 5 | 6 | @Component({ 7 | selector: 'app-register', 8 | templateUrl: './register.page.html', 9 | styleUrls: ['./register.page.scss'], 10 | }) 11 | export class RegisterPage implements OnInit { 12 | loading = false; 13 | model = { 14 | realname: '张三', 15 | mobileNumber: '18688888888', 16 | username: 'zhansan', 17 | password: '123456', 18 | newPassword: '123456' 19 | }; 20 | 21 | constructor(public router: Router, public helper: Helper, public auth: AuthService) { 22 | } 23 | 24 | ngOnInit() { 25 | } 26 | 27 | formSubmit() { 28 | this.loading = true; 29 | this.auth.register(this.model).subscribe(res => { 30 | this.loading = false; 31 | this.helper.alert('注册成功', '确定后前往登录', () => { 32 | this.router.navigateByUrl('/login'); 33 | }); 34 | }, () => { 35 | this.loading = false; 36 | }); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine-about/mine-about.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { IonicModule } from '@ionic/angular'; 7 | 8 | import { MineAboutPage } from './mine-about.page'; 9 | 10 | const routes: Routes = [ 11 | { 12 | path: '', 13 | component: MineAboutPage 14 | } 15 | ]; 16 | 17 | @NgModule({ 18 | imports: [ 19 | CommonModule, 20 | FormsModule, 21 | IonicModule, 22 | RouterModule.forChild(routes) 23 | ], 24 | declarations: [MineAboutPage] 25 | }) 26 | export class MineAboutPageModule {} 27 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine-about/mine-about.page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 关于 7 | 8 | 9 | 10 | 11 |
12 | logo 13 |

{{appInfo.appName}}

14 |
版本号:{{appInfo.versionNumber}}
15 |
16 | 17 | 18 | 检查新版本 19 | 20 | 21 | 更新日志 22 | 23 | 24 | 功能介绍 25 | 26 | 27 | 投诉建议 28 | 29 | 30 |
31 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine-about/mine-about.page.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/src/app/pages/mine/mine-about/mine-about.page.scss -------------------------------------------------------------------------------- /src/app/pages/mine/mine-about/mine-about.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { MineAboutPage } from './mine-about.page'; 5 | 6 | describe('MineAboutPage', () => { 7 | let component: MineAboutPage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ MineAboutPage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(MineAboutPage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine-about/mine-about.page.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { NativeService } from '../../../providers/NativeService'; 3 | 4 | @Component({ 5 | selector: 'app-mine-about', 6 | templateUrl: './mine-about.page.html', 7 | styleUrls: ['./mine-about.page.scss'], 8 | }) 9 | export class MineAboutPage implements OnInit { 10 | appInfo = { 11 | appName: 'ionic4test', // app name,如现场作业 12 | packageName: 'com.kit.ionic4test', // app包名/id,如com.kit.ionic4test 13 | versionNumber: '0.0.1', // app版本号,如0.0.1 14 | name: 'ionic4test' // ionic4test 15 | }; 16 | 17 | constructor(public native: NativeService) { 18 | } 19 | 20 | ngOnInit() { 21 | this.native.getAppVersionInfo().subscribe(res => this.appInfo = res); 22 | } 23 | 24 | checkNewVersion() { 25 | 26 | } 27 | 28 | updateLog() { 29 | 30 | } 31 | 32 | features() { 33 | 34 | } 35 | 36 | feedBack() { 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine-info/mine-info.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { IonicModule } from '@ionic/angular'; 7 | 8 | import { MineInfoPage } from './mine-info.page'; 9 | 10 | const routes: Routes = [ 11 | { 12 | path: '', 13 | component: MineInfoPage 14 | } 15 | ]; 16 | 17 | @NgModule({ 18 | imports: [ 19 | CommonModule, 20 | FormsModule, 21 | IonicModule, 22 | RouterModule.forChild(routes) 23 | ], 24 | declarations: [MineInfoPage] 25 | }) 26 | export class MineInfoPageModule {} 27 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine-info/mine-info.page.scss: -------------------------------------------------------------------------------- 1 | ion-content { 2 | --ion-background-color: #f5f5f5; 3 | } 4 | 5 | ion-item { 6 | --ion-background-color: #fff; 7 | } 8 | 9 | .avatar{ 10 | width: 45px; 11 | height: 45px; 12 | object-fit: cover; 13 | border-radius: 4px; 14 | margin: 8px 0; 15 | } 16 | 17 | ion-note{ 18 | font-size: 14px; 19 | } 20 | 21 | .qr-code{ 22 | font-size: 20px; 23 | margin-right: -2px; 24 | } -------------------------------------------------------------------------------- /src/app/pages/mine/mine-info/mine-info.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { MineInfoPage } from './mine-info.page'; 5 | 6 | describe('MineInfoPage', () => { 7 | let component: MineInfoPage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ MineInfoPage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(MineInfoPage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine-qr-code/mine-qr-code.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { IonicModule } from '@ionic/angular'; 7 | 8 | import { MineQrCodePage } from './mine-qr-code.page'; 9 | 10 | const routes: Routes = [ 11 | { 12 | path: '', 13 | component: MineQrCodePage 14 | } 15 | ]; 16 | 17 | @NgModule({ 18 | imports: [ 19 | CommonModule, 20 | FormsModule, 21 | IonicModule, 22 | RouterModule.forChild(routes) 23 | ], 24 | declarations: [MineQrCodePage] 25 | }) 26 | export class MineQrCodePageModule {} 27 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine-qr-code/mine-qr-code.page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 我的二维码 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 保存到手机 15 | 16 | 17 | 18 | 分享二维码 19 | 20 |
21 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine-qr-code/mine-qr-code.page.scss: -------------------------------------------------------------------------------- 1 | .code-wrap { 2 | height: 200px; 3 | margin: 16px 4 | } -------------------------------------------------------------------------------- /src/app/pages/mine/mine-qr-code/mine-qr-code.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { MineQrCodePage } from './mine-qr-code.page'; 5 | 6 | describe('MineQrCodePage', () => { 7 | let component: MineQrCodePage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ MineQrCodePage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(MineQrCodePage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine.page.scss: -------------------------------------------------------------------------------- 1 | ion-toolbar { 2 | --border-color: transparent; 3 | } 4 | 5 | ion-content { 6 | --ion-background-color: #f5f5f5; 7 | } 8 | 9 | ion-item { 10 | --ion-background-color: #fff; 11 | } 12 | 13 | .mine-header { 14 | padding-bottom: 8px; 15 | background: #fff; 16 | ion-thumbnail { 17 | img { 18 | border-radius: 4px; 19 | } 20 | } 21 | ion-label { 22 | h2 { 23 | font-weight: bold; 24 | margin-bottom: 8px; 25 | } 26 | } 27 | ion-icon { 28 | font-size: 20px; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { MinePage } from './mine.page'; 5 | 6 | describe('MinePage', () => { 7 | let component: MinePage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ MinePage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(MinePage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/mine/mine.page.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Router } from '@angular/router'; 3 | import { Events } from '@ionic/angular'; 4 | import { Helper } from '../../providers/Helper'; 5 | import { NativeService } from '../../providers/NativeService'; 6 | 7 | @Component({ 8 | selector: 'app-mine', 9 | templateUrl: './mine.page.html', 10 | styleUrls: ['./mine.page.scss'], 11 | }) 12 | export class MinePage implements OnInit { 13 | 14 | constructor(public helper: Helper, 15 | public router: Router, 16 | public events: Events, 17 | public native: NativeService) { 18 | } 19 | 20 | ngOnInit() { 21 | } 22 | 23 | getPictures() { 24 | this.native.getPictures().subscribe(result => { 25 | console.log(JSON.stringify(result)); 26 | }); 27 | } 28 | 29 | logout() { 30 | this.helper.assertIsMobile(); 31 | this.helper.alert('提示', '确定退出吗?', () => { 32 | navigator['app'].exitApp(); 33 | }, () => { 34 | }); 35 | } 36 | 37 | login() { 38 | this.router.navigateByUrl('/login'); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/app/pages/mine/modify-password/modify-password.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { IonicModule } from '@ionic/angular'; 7 | 8 | import { ModifyPasswordPage } from './modify-password.page'; 9 | import { DirectivesModule } from '../../../directives/directives.module'; 10 | 11 | const routes: Routes = [ 12 | { 13 | path: '', 14 | component: ModifyPasswordPage 15 | } 16 | ]; 17 | 18 | @NgModule({ 19 | imports: [ 20 | CommonModule, 21 | FormsModule, 22 | IonicModule, 23 | RouterModule.forChild(routes), 24 | DirectivesModule 25 | ], 26 | declarations: [ModifyPasswordPage] 27 | }) 28 | export class ModifyPasswordPageModule { 29 | } 30 | -------------------------------------------------------------------------------- /src/app/pages/mine/modify-password/modify-password.page.scss: -------------------------------------------------------------------------------- 1 | .strength { 2 | position: absolute; 3 | color: #999; 4 | top: 14px; 5 | right: 14px; 6 | font-size: 1.2rem; 7 | .low { 8 | color: #f04141; 9 | } 10 | .middle { 11 | color: #ffce00; 12 | } 13 | .high { 14 | color: #10dc60; 15 | } 16 | } -------------------------------------------------------------------------------- /src/app/pages/mine/modify-password/modify-password.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { ModifyPasswordPage } from './modify-password.page'; 5 | 6 | describe('ModifyPasswordPage', () => { 7 | let component: ModifyPasswordPage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ ModifyPasswordPage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(ModifyPasswordPage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/tab1/tab1.page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Tab One 5 | 6 | 7 | 8 | 9 | 10 | post 11 | test page 12 | test page 13 | test2 page 14 | test2 page 15 |
click me
16 | 17 |
18 | -------------------------------------------------------------------------------- /src/app/pages/tab1/tab1.page.scss: -------------------------------------------------------------------------------- 1 | .welcome-card ion-img { 2 | max-height: 35vh; 3 | overflow: hidden; 4 | } 5 | -------------------------------------------------------------------------------- /src/app/pages/tab1/tab1.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { Tab1Page } from './tab1.page'; 5 | 6 | describe('Tab1Page', () => { 7 | let component: Tab1Page; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [Tab1Page], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }).compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(Tab1Page); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /src/app/pages/tab1/test/test.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { IonicModule } from '@ionic/angular'; 7 | 8 | import { TestPage } from './test.page'; 9 | 10 | const routes: Routes = [ 11 | { 12 | path: '', 13 | component: TestPage 14 | } 15 | ]; 16 | 17 | @NgModule({ 18 | imports: [ 19 | CommonModule, 20 | FormsModule, 21 | IonicModule, 22 | RouterModule.forChild(routes) 23 | ], 24 | declarations: [TestPage] 25 | }) 26 | export class TestPageModule {} 27 | -------------------------------------------------------------------------------- /src/app/pages/tab1/test/test.page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | test 7 | 8 | 9 | 10 | 11 | 返回 12 | 13 | -------------------------------------------------------------------------------- /src/app/pages/tab1/test/test.page.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/src/app/pages/tab1/test/test.page.scss -------------------------------------------------------------------------------- /src/app/pages/tab1/test/test.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { TestPage } from './test.page'; 5 | 6 | describe('TestPage', () => { 7 | let component: TestPage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ TestPage ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(TestPage); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/tab1/test/test.page.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Events, NavController } from '@ionic/angular'; 3 | import { ActivatedRoute, Router } from '@angular/router'; 4 | 5 | @Component({ 6 | selector: 'app-test', 7 | templateUrl: './test.page.html', 8 | styleUrls: ['./test.page.scss'], 9 | }) 10 | export class TestPage implements OnInit { 11 | 12 | constructor(public events: Events, 13 | public nav: NavController, 14 | private route: ActivatedRoute, 15 | public router: Router) { 16 | } 17 | 18 | ngOnInit() { 19 | const queryParams = this.route.snapshot.queryParams; 20 | console.log(queryParams); 21 | this.route.queryParams.subscribe(res => { 22 | console.log(queryParams); 23 | }); 24 | } 25 | 26 | back() { 27 | this.nav.pop(); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/app/pages/tab1/test2/test2.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { IonicModule } from '@ionic/angular'; 7 | 8 | import { Test2Page } from './test2.page'; 9 | 10 | const routes: Routes = [ 11 | { 12 | path: '', 13 | component: Test2Page 14 | } 15 | ]; 16 | 17 | @NgModule({ 18 | imports: [ 19 | CommonModule, 20 | FormsModule, 21 | IonicModule, 22 | RouterModule.forChild(routes) 23 | ], 24 | declarations: [Test2Page] 25 | }) 26 | export class Test2PageModule {} 27 | -------------------------------------------------------------------------------- /src/app/pages/tab1/test2/test2.page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | test2 7 | 8 | 9 | 10 | 11 | 返回 12 | 13 | -------------------------------------------------------------------------------- /src/app/pages/tab1/test2/test2.page.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/src/app/pages/tab1/test2/test2.page.scss -------------------------------------------------------------------------------- /src/app/pages/tab1/test2/test2.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { Test2Page } from './test2.page'; 5 | 6 | describe('Test2Page', () => { 7 | let component: Test2Page; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ Test2Page ], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(Test2Page); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/pages/tab1/test2/test2.page.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { ActivatedRoute, Router } from '@angular/router'; 3 | import { NavController } from '@ionic/angular'; 4 | 5 | @Component({ 6 | selector: 'app-test2', 7 | templateUrl: './test2.page.html', 8 | styleUrls: ['./test2.page.scss'], 9 | }) 10 | export class Test2Page implements OnInit { 11 | 12 | constructor(private route: ActivatedRoute, 13 | public router: Router, 14 | public nav: NavController) { 15 | } 16 | 17 | ngOnInit() { 18 | const snapshot = this.route.snapshot; 19 | const params = snapshot.params; 20 | const queryParams = snapshot.queryParams; 21 | console.log('params:', params, ' queryParams:', queryParams); 22 | this.route.params.subscribe(res => { 23 | console.log(res); 24 | }); 25 | this.route.queryParams.subscribe(res => { 26 | console.log(res); 27 | }); 28 | } 29 | 30 | back() { 31 | this.nav.pop(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/app/pages/tabs/tabs.page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Tab One 6 | 7 | 8 | 9 | 10 | Demo 11 | 12 | 13 | 14 | 15 | 我的 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/app/pages/tabs/tabs.page.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/pages/tabs/tabs.page.spec.ts: -------------------------------------------------------------------------------- 1 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { TabsPage } from './tabs.page'; 5 | 6 | describe('TabsPage', () => { 7 | let component: TabsPage; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(async(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [TabsPage], 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | }).compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(TabsPage); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /src/app/providers/GlobalData.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { environment } from '../../environments/environment'; 3 | 4 | @Injectable({ 5 | providedIn: 'root' 6 | }) 7 | export class GlobalData { 8 | static userId: string; // 用户id 9 | static username: string; // 用户名 10 | static mobileNumber: string; // 手机号码 11 | static realname: string; // 真实姓名 12 | 13 | static avatarPath: string = environment.defaultAvatar; // 用户头像 14 | 15 | static token: string; // token 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/app/providers/Logger.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | /** 4 | * 帮助类:存放和业务有关的公共方法 5 | */ 6 | @Injectable({ 7 | providedIn: 'root' 8 | }) 9 | export class Logger { 10 | static error(err: any, action: string) { 11 | this.log('Logger.error:', '#f04141', action, '\n ' + err); 12 | } 13 | 14 | static log(text, color = '#989aa2', ...detail) { 15 | console.log(`%c${text}`, `background-color: ${color}; color:white; padding: 2px 5px; border-radius: 2px`, ...detail); 16 | } 17 | 18 | static http(err: any, data) { 19 | console.log({...data}); // 上报日志 20 | Logger.error(err, '请求出错'); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/app/providers/Storage.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | /** 4 | * 缓存工具类 5 | * 注:代码中务必使用此方法缓存数据,方便以后切换缓存机制 6 | */ 7 | @Injectable({ 8 | providedIn: 'root' 9 | }) 10 | export class Storage { 11 | public static sessionStorage = { 12 | set(key: string, value: any) { 13 | sessionStorage.setItem(key, JSON.stringify(value)); 14 | }, 15 | get(key: string) { 16 | const jsonString = sessionStorage.getItem(key); 17 | return jsonString ? JSON.parse(jsonString) : null; 18 | }, 19 | remove(key: string) { 20 | sessionStorage.removeItem(key); 21 | }, 22 | clear() { 23 | sessionStorage.clear(); 24 | } 25 | }; 26 | 27 | public static localStorage = { 28 | set(key: string, value: any) { 29 | localStorage.setItem(key, JSON.stringify(value)); 30 | }, 31 | get(key: string) { 32 | const jsonString = localStorage.getItem(key); 33 | return jsonString ? JSON.parse(jsonString) : null; 34 | }, 35 | remove(key: string) { 36 | localStorage.removeItem(key); 37 | }, 38 | clear() { 39 | localStorage.clear(); 40 | } 41 | }; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/app/routers/demo.router.ts: -------------------------------------------------------------------------------- 1 | import { Routes } from '@angular/router'; 2 | 3 | export const demoRoutes: Routes = [ 4 | {path: 'demo/form', loadChildren: './pages/demo/form/form.module#FormPageModule'} 5 | ]; 6 | 7 | -------------------------------------------------------------------------------- /src/app/routers/mine.router.ts: -------------------------------------------------------------------------------- 1 | import { Routes } from '@angular/router'; 2 | 3 | export const mineRoutes: Routes = [ 4 | {path: 'mine/info', loadChildren: './pages/mine/mine-info/mine-info.module#MineInfoPageModule'}, 5 | {path: 'mine/qr-code', loadChildren: './pages/mine/mine-qr-code/mine-qr-code.module#MineQrCodePageModule'}, 6 | {path: 'mine/about', loadChildren: './pages/mine/mine-about/mine-about.module#MineAboutPageModule'}, 7 | {path: 'mine/modify-password', loadChildren: './pages/mine/modify-password/modify-password.module#ModifyPasswordPageModule'} 8 | ]; 9 | 10 | -------------------------------------------------------------------------------- /src/app/routers/tab1.router.ts: -------------------------------------------------------------------------------- 1 | import { Routes } from '@angular/router'; 2 | 3 | export const tab1Routes: Routes = [ 4 | {path: 'tab1/test', loadChildren: './pages/tab1/test/test.module#TestPageModule'}, 5 | {path: 'tab1/test2/:id', loadChildren: './pages/tab1/test2/test2.module#Test2PageModule'} 6 | ]; 7 | 8 | -------------------------------------------------------------------------------- /src/assets/avatar/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/src/assets/avatar/default.png -------------------------------------------------------------------------------- /src/assets/icon/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaosan666/ionic4_tabs/b18cd6b2a75802f097c4944f3b7a8c41f85b4bea/src/assets/icon/favicon.png -------------------------------------------------------------------------------- /src/assets/shapes.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/environments/environment.conf.ts: -------------------------------------------------------------------------------- 1 | // environment example file 2 | // You should copy this file and rename to `environment.conf.ts` (do NOT add to version control) 3 | // place your own config to that file 4 | 5 | export const devServers = { 6 | appServerUrl: 'https://yanxiaojun617.com/invoice/api/', 7 | fileServerUrl: 'https://yanxiaojun617.com/fileService/', 8 | requestTimeout: 20000, 9 | defaultAvatar: './assets/avatar/default.png', 10 | rsaPublicKey: 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPzCRijQTW+fxen+IgGddcA+lQLQ9c3LdwKfR7CHK+LWQ1oMfkN69xoWOTs2Sk77vJ' + 11 | '86i/bn7jOmn6lQAqNndET80vhqFBV2r/0n0cZVke3vFZTVLd/hEfotIsRo4HbCPwK0UwA1LuuEsr7fqgHG1RKnK/SFLYBmgg85IE6PP8gwIDAQAB' 12 | }; 13 | 14 | export const prodServers = { 15 | appServerUrl: 'https://yanxiaojun617.com/invoice/api/', 16 | fileServerUrl: 'https://yanxiaojun617.com/fileService/', 17 | requestTimeout: 20000, 18 | defaultAvatar: './assets/avatar/default.png', 19 | rsaPublicKey: 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPzCRijQTW+fxen+IgGddcA+lQLQ9c3LdwKfR7CHK+LWQ1oMfkN69xoWOTs2Sk77vJ' + 20 | '86i/bn7jOmn6lQAqNndET80vhqFBV2r/0n0cZVke3vFZTVLd/hEfotIsRo4HbCPwK0UwA1LuuEsr7fqgHG1RKnK/SFLYBmgg85IE6PP8gwIDAQAB' 21 | }; 22 | -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | import { prodServers } from './environment.conf'; 2 | 3 | export const environment = { 4 | production: true, 5 | appServerUrl: prodServers.appServerUrl, 6 | fileServerUrl: prodServers.fileServerUrl, 7 | requestTimeout: prodServers.requestTimeout, 8 | defaultAvatar: prodServers.defaultAvatar, 9 | rsaPublicKey: prodServers.rsaPublicKey 10 | }; 11 | -------------------------------------------------------------------------------- /src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | import { devServers, prodServers } from './environment.conf'; 2 | // This file can be replaced during build by using the `fileReplacements` array. 3 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 4 | // The list of file replacements can be found in `angular.json`. 5 | export const environment = { 6 | production: false, 7 | appServerUrl: devServers.appServerUrl, 8 | fileServerUrl: devServers.fileServerUrl, 9 | requestTimeout: devServers.requestTimeout, 10 | defaultAvatar: devServers.defaultAvatar, 11 | rsaPublicKey: devServers.rsaPublicKey 12 | }; 13 | 14 | /* 15 | * For easier debugging in development mode, you can import the following file 16 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 17 | * 18 | * This import should be commented out in production mode because it will have a negative impact 19 | * on performance if an error is thrown. 20 | */ 21 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 22 | -------------------------------------------------------------------------------- /src/global.scss: -------------------------------------------------------------------------------- 1 | // http://ionicframework.com/docs/theming/ 2 | @import '~@ionic/angular/css/core.css'; 3 | @import '~@ionic/angular/css/normalize.css'; 4 | @import '~@ionic/angular/css/structure.css'; 5 | @import '~@ionic/angular/css/typography.css'; 6 | 7 | @import '~@ionic/angular/css/padding.css'; 8 | @import '~@ionic/angular/css/float-elements.css'; 9 | @import '~@ionic/angular/css/text-alignment.css'; 10 | @import '~@ionic/angular/css/text-transformation.css'; 11 | @import '~@ionic/angular/css/flex-utils.css'; 12 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Ionic App 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage-istanbul-reporter'), 13 | require('@angular-devkit/build-angular/plugins/karma') 14 | ], 15 | client: { 16 | clearContext: false // leave Jasmine Spec Runner output visible in browser 17 | }, 18 | coverageIstanbulReporter: { 19 | dir: require('path').join(__dirname, '../coverage'), 20 | reports: ['html', 'lcovonly', 'text-summary'], 21 | fixWebpackSourcePaths: true 22 | }, 23 | reporters: ['progress', 'kjhtml'], 24 | port: 9876, 25 | colors: true, 26 | logLevel: config.LOG_INFO, 27 | autoWatch: true, 28 | browsers: ['Chrome'], 29 | singleRun: false 30 | }); 31 | }; 32 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.log(err)); 13 | -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "importHelpers": true, 13 | "target": "es5", 14 | "typeRoots": [ 15 | "node_modules/@types" 16 | ], 17 | "lib": [ 18 | "es2018", 19 | "dom" 20 | ] 21 | } 22 | } 23 | --------------------------------------------------------------------------------