@gloww/gloww 0.9.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/compute-version.js +117 -0
- package/esm2020/gloww-gloww.mjs +5 -0
- package/esm2020/lib/Components/code-editor/code-editor.component.mjs +59 -0
- package/esm2020/lib/Components/confirmation/confirmation.component.mjs +43 -0
- package/esm2020/lib/Components/display-objects/display-objects.component.mjs +440 -0
- package/esm2020/lib/Components/display-objects-configuration.mjs +2 -0
- package/esm2020/lib/Components/download-progress/download-progress.component.mjs +119 -0
- package/esm2020/lib/Components/folders/file-edit/file-edit.component.mjs +71 -0
- package/esm2020/lib/Components/folders/folders/folders.component.mjs +180 -0
- package/esm2020/lib/Components/header/header.component.mjs +14 -0
- package/esm2020/lib/Components/html-editor/html-editor.component.mjs +175 -0
- package/esm2020/lib/Components/menu-list-item/menu-list-item.component.mjs +97 -0
- package/esm2020/lib/Components/prompt/prompt.component.mjs +52 -0
- package/esm2020/lib/Components/result-table/result-table.component.mjs +21 -0
- package/esm2020/lib/Components/search-form/search-form.component.mjs +14 -0
- package/esm2020/lib/Components/secure-a/secure-a.component.mjs +31 -0
- package/esm2020/lib/Components/secure-img/secure-img.component.mjs +45 -0
- package/esm2020/lib/Components/upload-doc/upload-doc.component.mjs +95 -0
- package/esm2020/lib/Components/upload-file/upload-file.component.mjs +136 -0
- package/esm2020/lib/Directives/file-sink.directive.mjs +52 -0
- package/esm2020/lib/Models/nav-item.mjs +2 -0
- package/esm2020/lib/Pipes/html-format.pipe.mjs +23 -0
- package/esm2020/lib/Pipes/retry-with-delay.mjs +12 -0
- package/esm2020/lib/Pipes/safe-html.pipe.mjs +22 -0
- package/esm2020/lib/Pipes/secure.pipe.mjs +34 -0
- package/esm2020/lib/Services/dialog.service.mjs +29 -0
- package/esm2020/lib/Services/folder-service-config.mjs +21 -0
- package/esm2020/lib/Services/folder.service.mjs +50 -0
- package/esm2020/lib/Services/gloww.service.mjs +44 -0
- package/esm2020/lib/Services/nav.service.mjs +28 -0
- package/esm2020/lib/Services/version-check.service.mjs +81 -0
- package/esm2020/lib/Services/voice-recognition.service.mjs +55 -0
- package/esm2020/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.mjs +67 -0
- package/esm2020/lib/gloww-security/Components/login/login.component.mjs +173 -0
- package/esm2020/lib/gloww-security/Components/social-network/social-network.component.mjs +46 -0
- package/esm2020/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.mjs +52 -0
- package/esm2020/lib/gloww-security/Components/user-menu/user-menu.component.mjs +73 -0
- package/esm2020/lib/gloww-security/Helpers/administrator.guard.mjs +27 -0
- package/esm2020/lib/gloww-security/Helpers/auth.guard.mjs +57 -0
- package/esm2020/lib/gloww-security/Helpers/error.interceptor.mjs +29 -0
- package/esm2020/lib/gloww-security/Helpers/index.mjs +5 -0
- package/esm2020/lib/gloww-security/Helpers/jwt.interceptor.mjs +31 -0
- package/esm2020/lib/gloww-security/Helpers/staging.interceptor.mjs +24 -0
- package/esm2020/lib/gloww-security/Models/oauthassociation.mjs +6 -0
- package/esm2020/lib/gloww-security/Models/user.mjs +3 -0
- package/esm2020/lib/gloww-security/Services/authentication-service-config.mjs +25 -0
- package/esm2020/lib/gloww-security/Services/authentication.service.mjs +205 -0
- package/esm2020/lib/gloww-security/Services/gloww-security.service.mjs +14 -0
- package/esm2020/lib/gloww-security/gloww-security.module.mjs +171 -0
- package/esm2020/lib/gloww.module.mjs +220 -0
- package/esm2020/lib/injection-token.mjs +3 -0
- package/esm2020/public-api.mjs +32 -0
- package/fesm2015/gloww-gloww.mjs +3018 -0
- package/fesm2015/gloww-gloww.mjs.map +1 -0
- package/fesm2020/gloww-gloww.mjs +2980 -0
- package/fesm2020/gloww-gloww.mjs.map +1 -0
- package/gloww-assets/.gitkeep +0 -0
- package/gloww-assets/7SS_logo.svg +1 -0
- package/gloww-assets/7SS_wobl.svg +1 -0
- package/gloww-assets/7stars.png +0 -0
- package/gloww-assets/gloww.svg +316 -0
- package/gloww-assets/images/google_signin_buttons/Google_signin_button.sketch +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_disabled_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_focus_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_normal_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_pressed_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_disabled_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_focus_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_normal_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_pressed_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_disabled_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_focus_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_normal_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_pressed_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_disabled_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_focus_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_normal_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_pressed_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_disabled_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_focus_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_normal_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_pressed_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_disabled_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_focus_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_normal_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_pressed_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_disabled_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_focus_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_normal_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_pressed_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_disabled_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_focus_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_normal_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_pressed_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_disabled_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_focus_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_normal_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_pressed_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_disabled_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_focus_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_normal_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_pressed_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_disabled_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_focus_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_normal_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_pressed_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_disabled_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_focus_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_normal_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_pressed_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_disabled_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_focus_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_normal_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_pressed_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_disabled_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_focus_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_normal_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_pressed_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_disabled_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_focus_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_normal_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_pressed_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_disabled_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_focus_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_normal_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_pressed_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_disabled_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_focus_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_normal_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_pressed_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_disabled_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_focus_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_normal_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_pressed_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_disabled_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_focus_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_normal_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_pressed_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_disabled_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_focus_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_normal_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_pressed_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_disabled_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_focus_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_normal_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_pressed_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_disabled_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_focus_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_normal_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_pressed_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_disabled_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_focus_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_normal_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_pressed_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_disabled_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_focus_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_normal_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_pressed_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_disabled_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_focus_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_normal_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_pressed_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_disabled_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_focus_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_normal_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_pressed_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_disabled_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_focus_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_normal_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_pressed_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_disabled_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_focus_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_normal_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_pressed_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_disabled_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_focus_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_normal_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_pressed_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_disabled_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_focus_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_normal_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_pressed_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_disabled_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_focus_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_normal_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_pressed_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_disabled_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_focus_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_normal_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_pressed_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_disabled_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_focus_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_normal_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_pressed_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_disabled_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_focus_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_normal_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_pressed_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_disabled_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_focus_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_normal_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_pressed_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_disabled_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_focus_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_normal_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_pressed_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_disabled_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_focus_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_normal_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_pressed_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_disabled_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_focus_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_normal_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_pressed_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_disabled_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_focus_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_normal_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_pressed_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_disabled_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_focus_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_normal_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_pressed_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_disabled_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_focus_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_normal_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_pressed_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_disabled_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_focus_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_normal_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_pressed_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_disabled_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_focus_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_normal_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_pressed_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_disabled_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_focus_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_normal_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_pressed_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_disabled_ios.eps +814 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_disabled_ios.svg +24 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_focus_ios.eps +1866 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_focus_ios.svg +51 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_normal_ios.eps +1031 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_normal_ios.svg +50 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_pressed_ios.eps +1031 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_pressed_ios.svg +50 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_disabled_ios.eps +814 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_disabled_ios.svg +24 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_focus_ios.eps +1837 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_focus_ios.svg +44 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_normal_ios.eps +1002 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_normal_ios.svg +43 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_pressed_ios.eps +1002 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_pressed_ios.svg +43 -0
- package/gloww-assets/swagger.svg +1 -0
- package/gloww-gloww.d.ts +5 -0
- package/lib/Components/code-editor/code-editor.component.d.ts +16 -0
- package/lib/Components/confirmation/confirmation.component.d.ts +20 -0
- package/lib/Components/display-objects/display-objects.component.d.ts +90 -0
- package/lib/Components/display-objects-configuration.d.ts +5 -0
- package/lib/Components/download-progress/download-progress.component.d.ts +30 -0
- package/lib/Components/folders/file-edit/file-edit.component.d.ts +31 -0
- package/lib/Components/folders/folders/folders.component.d.ts +33 -0
- package/lib/Components/header/header.component.d.ts +8 -0
- package/lib/Components/html-editor/html-editor.component.d.ts +36 -0
- package/lib/Components/menu-list-item/menu-list-item.component.d.ts +22 -0
- package/lib/Components/prompt/prompt.component.d.ts +25 -0
- package/lib/Components/result-table/result-table.component.d.ts +11 -0
- package/lib/Components/search-form/search-form.component.d.ts +8 -0
- package/lib/Components/secure-a/secure-a.component.d.ts +13 -0
- package/lib/Components/secure-img/secure-img.component.d.ts +17 -0
- package/lib/Components/upload-doc/upload-doc.component.d.ts +19 -0
- package/lib/Components/upload-file/upload-file.component.d.ts +34 -0
- package/lib/Directives/file-sink.directive.d.ts +11 -0
- package/lib/Models/nav-item.d.ts +8 -0
- package/lib/Pipes/html-format.pipe.d.ts +10 -0
- package/lib/Pipes/retry-with-delay.d.ts +2 -0
- package/lib/Pipes/safe-html.pipe.d.ts +10 -0
- package/lib/Pipes/secure.pipe.d.ts +13 -0
- package/lib/Services/dialog.service.d.ts +11 -0
- package/lib/Services/folder-service-config.d.ts +7 -0
- package/lib/Services/folder.service.d.ts +19 -0
- package/lib/Services/gloww.service.d.ts +17 -0
- package/lib/Services/nav.service.d.ts +13 -0
- package/lib/Services/version-check.service.d.ts +30 -0
- package/lib/Services/voice-recognition.service.d.ts +14 -0
- package/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.d.ts +19 -0
- package/lib/gloww-security/Components/login/login.component.d.ts +43 -0
- package/lib/gloww-security/Components/social-network/social-network.component.d.ts +25 -0
- package/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.d.ts +21 -0
- package/lib/gloww-security/Components/user-menu/user-menu.component.d.ts +24 -0
- package/lib/gloww-security/Helpers/administrator.guard.d.ts +14 -0
- package/lib/gloww-security/Helpers/auth.guard.d.ts +14 -0
- package/lib/gloww-security/Helpers/error.interceptor.d.ts +11 -0
- package/lib/gloww-security/Helpers/index.d.ts +4 -0
- package/lib/gloww-security/Helpers/jwt.interceptor.d.ts +11 -0
- package/lib/gloww-security/Helpers/staging.interceptor.d.ts +9 -0
- package/lib/gloww-security/Models/oauthassociation.d.ts +7 -0
- package/lib/gloww-security/Models/user.d.ts +9 -0
- package/lib/gloww-security/Services/authentication-service-config.d.ts +17 -0
- package/lib/gloww-security/Services/authentication.service.d.ts +40 -0
- package/lib/gloww-security/Services/gloww-security.service.d.ts +6 -0
- package/lib/gloww-security/gloww-security.module.d.ts +35 -0
- package/lib/gloww.module.d.ts +59 -0
- package/lib/injection-token.d.ts +2 -0
- package/package.json +39 -0
- package/public-api.d.ts +28 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { Component, Input, SecurityContext, ViewChild } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { HtmlFormatPipe } from '../../Pipes/html-format.pipe';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/platform-browser";
|
|
6
|
+
import * as i2 from "../../gloww-security/gloww-security.module";
|
|
7
|
+
import * as i3 from "../../Services/voice-recognition.service";
|
|
8
|
+
import * as i4 from "@angular/material/dialog";
|
|
9
|
+
import * as i5 from "@gloww/angular-editor";
|
|
10
|
+
import * as i6 from "@angular/forms";
|
|
11
|
+
import * as i7 from "../../Pipes/html-format.pipe";
|
|
12
|
+
export class HtmlEditorComponent {
|
|
13
|
+
constructor(sanitizer, authenticationService, voiceRecognitionService, dialog) {
|
|
14
|
+
this.sanitizer = sanitizer;
|
|
15
|
+
this.authenticationService = authenticationService;
|
|
16
|
+
this.voiceRecognitionService = voiceRecognitionService;
|
|
17
|
+
this.dialog = dialog;
|
|
18
|
+
//@Input() formControlName: string = "";
|
|
19
|
+
this.placeHolder = "";
|
|
20
|
+
this._value = null;
|
|
21
|
+
this.onChange = () => { };
|
|
22
|
+
this.onTouched = () => { };
|
|
23
|
+
this.allowedStyles = ['text-align'];
|
|
24
|
+
this.allowedTags = ['p', 'span', 'div', 'hr', 'br', 'b', 'i', 'u', 'sup', 'sub', 'strike', 'ol', 'ul', 'li'];
|
|
25
|
+
this.editorConfig = {
|
|
26
|
+
editable: true,
|
|
27
|
+
spellcheck: true,
|
|
28
|
+
height: 'auto',
|
|
29
|
+
minHeight: '75px',
|
|
30
|
+
maxHeight: 'auto',
|
|
31
|
+
width: 'auto',
|
|
32
|
+
minWidth: '0',
|
|
33
|
+
translate: 'yes',
|
|
34
|
+
enableToolbar: true,
|
|
35
|
+
showToolbar: true,
|
|
36
|
+
placeholder: 'Enter text here...',
|
|
37
|
+
defaultParagraphSeparator: 'p',
|
|
38
|
+
defaultFontName: '',
|
|
39
|
+
defaultFontSize: '3',
|
|
40
|
+
fonts: [
|
|
41
|
+
{ class: 'arial', name: 'Arial' }
|
|
42
|
+
],
|
|
43
|
+
customClasses: [
|
|
44
|
+
{
|
|
45
|
+
name: 'quote',
|
|
46
|
+
class: 'quote',
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
uploadUrl: 'v1/image',
|
|
50
|
+
uploadWithCredentials: false,
|
|
51
|
+
sanitize: (html) => this.sanitize(html),
|
|
52
|
+
toolbarPosition: 'top',
|
|
53
|
+
toolbarHiddenButtons: [
|
|
54
|
+
['insertImage', 'insertVideo', 'customClasses', 'heading', 'heading',
|
|
55
|
+
'fontName',
|
|
56
|
+
'fontSize',
|
|
57
|
+
'textColor',
|
|
58
|
+
'backgroundColor', !this.isAdministrator() ? 'toggleEditorMode' : '']
|
|
59
|
+
],
|
|
60
|
+
additionalButtons: [
|
|
61
|
+
{
|
|
62
|
+
title: 'Speech Recognition',
|
|
63
|
+
click: (tb, event) => {
|
|
64
|
+
this.tb = tb;
|
|
65
|
+
tb.focus();
|
|
66
|
+
this.voiceRecognitionService.start();
|
|
67
|
+
this.voiceRecognitionService.text = "";
|
|
68
|
+
this.dialogRef = this.dialog.open(this.voiceRecognitionTemplate, {
|
|
69
|
+
width: '550px'
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
icon: 'fas fa-comment-plus'
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
};
|
|
76
|
+
this.voiceRecognitionService.init();
|
|
77
|
+
}
|
|
78
|
+
cancel() {
|
|
79
|
+
this.voiceRecognitionService.stop();
|
|
80
|
+
this.tb = undefined;
|
|
81
|
+
this.dialogRef?.close();
|
|
82
|
+
}
|
|
83
|
+
paste() {
|
|
84
|
+
this.tb?.insertHtml(new HtmlFormatPipe().transform(this.voiceRecognitionService.text));
|
|
85
|
+
this.voiceRecognitionService.stop();
|
|
86
|
+
this.tb = undefined;
|
|
87
|
+
this.dialogRef?.close();
|
|
88
|
+
}
|
|
89
|
+
get value() {
|
|
90
|
+
return this._value;
|
|
91
|
+
}
|
|
92
|
+
set value(val) {
|
|
93
|
+
this._value = val;
|
|
94
|
+
this.onChange(val);
|
|
95
|
+
this.onTouched();
|
|
96
|
+
}
|
|
97
|
+
writeValue(obj) {
|
|
98
|
+
if (obj) {
|
|
99
|
+
this.value = obj;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
registerOnChange(fn) {
|
|
103
|
+
this.onChange = fn;
|
|
104
|
+
}
|
|
105
|
+
registerOnTouched(fn) {
|
|
106
|
+
this.onTouched = fn;
|
|
107
|
+
}
|
|
108
|
+
sanitize(html) {
|
|
109
|
+
let itres = this.sanitizer.sanitize(SecurityContext.STYLE, html)?.replace(new RegExp('\\</?[a-z]+:[a-z]+\\>', 'gi'), '').replace(/class="Mso[a-z]+"/ig, '');
|
|
110
|
+
const matchTags = itres?.match(/<\s*\/?(?<tag>[a-z0-9]+)\s*[^>]*>/ig);
|
|
111
|
+
matchTags?.forEach(m => {
|
|
112
|
+
const matchTag = m.match(/<\s*\/?(?<tag>[a-z0-9]+)\s*[^>]*>/i);
|
|
113
|
+
if (matchTag?.groups && this.allowedTags.indexOf(matchTag?.groups['tag']) < 0) {
|
|
114
|
+
itres = itres?.replace(m, '');
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
while (true) {
|
|
118
|
+
const matchStyle = itres?.match(/style\s*=\s*"(?<style>[^"]+)"/i);
|
|
119
|
+
if (!matchStyle || !matchStyle?.groups) {
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
const styles = matchStyle?.groups['style']?.replace(/"/ig, '"');
|
|
123
|
+
const smatches = styles.match(/(?<name>[^;:]+)\s*:\s*(?<value>[^;]+);*/ig);
|
|
124
|
+
const newStyles = [];
|
|
125
|
+
smatches?.forEach((v, i, a) => {
|
|
126
|
+
const ssmatches = v.match(/(?<name>[^;:]+)\s*:\s*(?<value>[^;]+);*/i);
|
|
127
|
+
if (ssmatches?.groups) {
|
|
128
|
+
const name = ssmatches?.groups['name'];
|
|
129
|
+
if (this.allowedStyles.indexOf(name) >= 0) {
|
|
130
|
+
newStyles.push(v);
|
|
131
|
+
}
|
|
132
|
+
const value = ssmatches.groups['value'];
|
|
133
|
+
console.log(`${name}=${value}`);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
let attr = '';
|
|
137
|
+
if (newStyles.length) {
|
|
138
|
+
attr = `stylenew="${newStyles.join(';')}"`;
|
|
139
|
+
}
|
|
140
|
+
itres = itres?.replace(matchStyle[0], attr);
|
|
141
|
+
}
|
|
142
|
+
return itres?.replace(/stylenew=/ig, 'style=') ?? "";
|
|
143
|
+
}
|
|
144
|
+
isAdministrator() {
|
|
145
|
+
const currentUser = this.authenticationService.currentUserValue.UserInfo;
|
|
146
|
+
return currentUser.IsAdministrator === 1 || currentUser.isAdministrator === 1;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
HtmlEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HtmlEditorComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.AuthenticationService }, { token: i3.VoiceRecognitionService }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
150
|
+
HtmlEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: HtmlEditorComponent, selector: "gloww-html-editor", inputs: { placeHolder: "placeHolder", _value: ["value", "_value"] }, providers: [
|
|
151
|
+
{
|
|
152
|
+
provide: NG_VALUE_ACCESSOR,
|
|
153
|
+
multi: true,
|
|
154
|
+
useExisting: HtmlEditorComponent
|
|
155
|
+
}
|
|
156
|
+
], viewQueries: [{ propertyName: "voiceRecognitionTemplate", first: true, predicate: ["voiceRecognitionDlg"], descendants: true }], ngImport: i0, template: "<div>\r\n <angular-editor [(ngModel)]=\"value\" [config]=\"editorConfig\" [placeholder]=\"placeHolder\"></angular-editor>\r\n</div>\r\n<ng-template #voiceRecognitionDlg>\r\n <mat-dialog-content>\r\n <div>La reconnaissance vocale est activ\u00E9e. Veuillez dicter le texte \u00E0 ins\u00E9rer.</div>\r\n <div [innerHTML]=\"voiceRecognitionService.text | htmlFormat\" style=\"width:500px;height:300px;border:1px solid; border-color: blue;\"></div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\r\n <button class=\"mat-raised-button mat-primary\" (click)=\"paste()\">Paste</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n", styles: [""], components: [{ type: i5.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }], directives: [{ type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], pipes: { "htmlFormat": i7.HtmlFormatPipe } });
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HtmlEditorComponent, decorators: [{
|
|
158
|
+
type: Component,
|
|
159
|
+
args: [{ selector: 'gloww-html-editor', providers: [
|
|
160
|
+
{
|
|
161
|
+
provide: NG_VALUE_ACCESSOR,
|
|
162
|
+
multi: true,
|
|
163
|
+
useExisting: HtmlEditorComponent
|
|
164
|
+
}
|
|
165
|
+
], template: "<div>\r\n <angular-editor [(ngModel)]=\"value\" [config]=\"editorConfig\" [placeholder]=\"placeHolder\"></angular-editor>\r\n</div>\r\n<ng-template #voiceRecognitionDlg>\r\n <mat-dialog-content>\r\n <div>La reconnaissance vocale est activ\u00E9e. Veuillez dicter le texte \u00E0 ins\u00E9rer.</div>\r\n <div [innerHTML]=\"voiceRecognitionService.text | htmlFormat\" style=\"width:500px;height:300px;border:1px solid; border-color: blue;\"></div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\r\n <button class=\"mat-raised-button mat-primary\" (click)=\"paste()\">Paste</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n", styles: [""] }]
|
|
166
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.AuthenticationService }, { type: i3.VoiceRecognitionService }, { type: i4.MatDialog }]; }, propDecorators: { voiceRecognitionTemplate: [{
|
|
167
|
+
type: ViewChild,
|
|
168
|
+
args: ['voiceRecognitionDlg']
|
|
169
|
+
}], placeHolder: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], _value: [{
|
|
172
|
+
type: Input,
|
|
173
|
+
args: ['value']
|
|
174
|
+
}] } });
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL2h0bWwtZWRpdG9yL2h0bWwtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9odG1sLWVkaXRvci9odG1sLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxlQUFlLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7OztBQWtCOUQsTUFBTSxPQUFPLG1CQUFtQjtJQStFOUIsWUFBb0IsU0FBdUIsRUFBVSxxQkFBNEMsRUFBUyx1QkFBZ0QsRUFBUyxNQUFpQjtRQUFoSyxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUFTLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBN0VwTCx3Q0FBd0M7UUFDL0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDbEIsV0FBTSxHQUFRLElBQUksQ0FBQztRQUNuQyxhQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLGNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFLM0Isa0JBQWEsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9CLGdCQUFXLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdB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LENBQUMsTUFBTSxFQUFFO2dCQUFFLElBQUksR0FBRyxhQUFhLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQzthQUFFO1lBQ3JFLEtBQUssR0FBRyxLQUFLLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM3QztRQUNELE9BQU8sS0FBSyxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxXQUFXLEdBQVMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUF3QixDQUFDLFFBQVEsQ0FBQztRQUN2RixPQUFPLFdBQVcsQ0FBQyxlQUFlLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDO0lBQ2hGLENBQUM7O2dIQTdJVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixpSEFSbkI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsbUJBQW1CO1NBQ2pDO0tBQ0YsMkpDcEJILG92QkFjQTsyRkRRYSxtQkFBbUI7a0JBWi9CLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcscUJBQXFCO3lCQUNqQztxQkFDRjtxTUFHaUMsd0JBQXdCO3NCQUF6RCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFFdkIsV0FBVztzQkFBbkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFNlY3VyaXR5Q29udGV4dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEh0bWxGb3JtYXRQaXBlIH0gZnJvbSAnLi4vLi4vUGlwZXMvaHRtbC1mb3JtYXQucGlwZSc7XHJcbmltcG9ydCB7IFZvaWNlUmVjb2duaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vU2VydmljZXMvdm9pY2UtcmVjb2duaXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcsIEFuZ3VsYXJFZGl0b3JUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnQGdsb3d3L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgQW5ndWxhckVkaXRvckJ1dHRvbkNvbmZpZyB9IGZyb20gJ0BnbG93dy9hbmd1bGFyLWVkaXRvci9saWIvY29uZmlnJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2xvd3ctc2VjdXJpdHkvZ2xvd3ctc2VjdXJpdHkubW9kdWxlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ2xvd3ctaHRtbC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9odG1sLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaHRtbC1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBIdG1sRWRpdG9yQ29tcG9uZW50XHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSHRtbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBAVmlld0NoaWxkKCd2b2ljZVJlY29nbml0aW9uRGxnJykgdm9pY2VSZWNvZ25pdGlvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvL0BJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwbGFjZUhvbGRlcjogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlOiBhbnkgPSBudWxsO1xyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7IH07XHJcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH07XHJcblxyXG4gIHRiPzogQW5ndWxhckVkaXRvclRvb2xiYXJDb21wb25lbnQ7XHJcbiAgZGlhbG9nUmVmPzogTWF0RGlhbG9nUmVmPGFueSwgYW55PjtcclxuXHJcbiAgYWxsb3dlZFN0eWxlcyA9IFsndGV4dC1hbGlnbiddO1xyXG4gIGFsbG93ZWRUYWdzID0gWydwJywgJ3NwYW4nLCAnZGl2JywgJ2hyJywgJ2JyJywgJ2InLCAnaScsICd1JywgJ3N1cCcsICdzdWInLCAnc3RyaWtlJywgJ29sJywgJ3VsJywgJ2xpJ107XHJcbiAgcHVibGljIGVkaXRvckNvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZyA9IHtcclxuICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgc3BlbGxjaGVjazogdHJ1ZSxcclxuICAgIGhlaWdodDogJ2F1dG8nLFxyXG4gICAgbWluSGVpZ2h0OiAnNzVweCcsXHJcbiAgICBtYXhIZWlnaHQ6ICdhdXRvJyxcclxuICAgIHdpZHRoOiAnYXV0bycsXHJcbiAgICBtaW5XaWR0aDogJzAnLFxyXG4gICAgdHJhbnNsYXRlOiAneWVzJyxcclxuICAgIGVuYWJsZVRvb2xiYXI6IHRydWUsXHJcbiAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdGV4dCBoZXJlLi4uJyxcclxuICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICdwJyxcclxuICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICBkZWZhdWx0Rm9udFNpemU6ICczJyxcclxuICAgIGZvbnRzOiBbXHJcbiAgICAgIHsgY2xhc3M6ICdhcmlhbCcsIG5hbWU6ICdBcmlhbCcgfVxyXG4gICAgXSxcclxuICAgIGN1c3RvbUNsYXNzZXM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdxdW90ZScsXHJcbiAgICAgICAgY2xhc3M6ICdxdW90ZScsXHJcbiAgICAgIH1cclxuICAgIF0sXHJcbiAgICB1cGxvYWRVcmw6ICd2MS9pbWFnZScsXHJcbiAgICB1cGxvYWRXaXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG4gICAgc2FuaXRpemU6IChodG1sOiBzdHJpbmcpID0+IHRoaXMuc2FuaXRpemUoaHRtbCksXHJcbiAgICB0b29sYmFyUG9zaXRpb246ICd0b3AnLFxyXG4gICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuICAgICAgWydpbnNlcnRJbWFnZScsICdpbnNlcnRWaWRlbycsICdjdXN0b21DbGFzc2VzJywgJ2hlYWRpbmcnLCAnaGVhZGluZycsXHJcbiAgICAgICAgJ2ZvbnROYW1lJyxcclxuICAgICAgICAnZm9udFNpemUnLFxyXG4gICAgICAgICd0ZXh0Q29sb3InLFxyXG4gICAgICAgICdiYWNrZ3JvdW5kQ29sb3InLCAhdGhpcy5pc0FkbWluaXN0cmF0b3IoKSA/ICd0b2dnbGVFZGl0b3JNb2RlJyA6ICcnXVxyXG4gICAgXSxcclxuICAgIGFkZGl0aW9uYWxCdXR0b25zOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1NwZWVjaCBSZWNvZ25pdGlvbicsXHJcbiAgICAgICAgY2xpY2s6ICh0YjogQW5ndWxhckVkaXRvclRvb2xiYXJDb21wb25lbnQsIGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRiID0gdGI7XHJcbiAgICAgICAgICB0Yi5mb2N1cygpO1xyXG4gICAgICAgICAgdGhpcy52b2ljZVJlY29nbml0aW9uU2VydmljZS5zdGFydCgpO1xyXG4gICAgICAgICAgdGhpcy52b2ljZVJlY29nbml0aW9uU2VydmljZS50ZXh0ID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLnZvaWNlUmVjb2duaXRpb25UZW1wbGF0ZSwge1xyXG4gICAgICAgICAgICB3aWR0aDogJzU1MHB4J1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaWNvbjogJ2ZhcyBmYS1jb21tZW50LXBsdXMnXHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9O1xyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLnZvaWNlUmVjb2duaXRpb25TZXJ2aWNlLnN0b3AoKTtcclxuICAgIHRoaXMudGIgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHBhc3RlKCkge1xyXG4gICAgdGhpcy50Yj8uaW5zZXJ0SHRtbChuZXcgSHRtbEZvcm1hdFBpcGUoKS50cmFuc2Zvcm0odGhpcy52b2ljZVJlY29nbml0aW9uU2VydmljZS50ZXh0KSk7XHJcbiAgICB0aGlzLnZvaWNlUmVjb2duaXRpb25TZXJ2aWNlLnN0b3AoKTtcclxuICAgIHRoaXMudGIgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsIHB1YmxpYyB2b2ljZVJlY29nbml0aW9uU2VydmljZTogVm9pY2VSZWNvZ25pdGlvblNlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgdGhpcy52b2ljZVJlY29nbml0aW9uU2VydmljZS5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbDtcclxuICAgIHRoaXMub25DaGFuZ2UodmFsKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChvYmopIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG9iajtcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzYW5pdGl6ZShodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGl0cmVzID0gdGhpcy5zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LlNUWUxFLCBodG1sKT8ucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcPC8/W2Etel0rOlthLXpdK1xcXFw+JywgJ2dpJyksICcnKS5yZXBsYWNlKC9jbGFzcz1cIk1zb1thLXpdK1wiL2lnLCAnJyk7XHJcbiAgICBjb25zdCBtYXRjaFRhZ3MgPSBpdHJlcz8ubWF0Y2goLzxcXHMqXFwvPyg/PHRhZz5bYS16MC05XSspXFxzKltePl0qPi9pZyk7XHJcbiAgICBtYXRjaFRhZ3M/LmZvckVhY2gobSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoVGFnID0gbS5tYXRjaCgvPFxccypcXC8/KD88dGFnPlthLXowLTldKylcXHMqW14+XSo+L2kpO1xyXG4gICAgICBpZiAobWF0Y2hUYWc/Lmdyb3VwcyAmJiB0aGlzLmFsbG93ZWRUYWdzLmluZGV4T2YobWF0Y2hUYWc/Lmdyb3Vwc1sndGFnJ10pIDwgMCkge1xyXG4gICAgICAgIGl0cmVzID0gaXRyZXM/LnJlcGxhY2UobSwgJycpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICBjb25zdCBtYXRjaFN0eWxlID0gaXRyZXM/Lm1hdGNoKC9zdHlsZVxccyo9XFxzKlwiKD88c3R5bGU+W15cIl0rKVwiL2kpO1xyXG4gICAgICBpZiAoIW1hdGNoU3R5bGUgfHwgIW1hdGNoU3R5bGU/Lmdyb3VwcykgeyBicmVhazsgfVxyXG4gICAgICBjb25zdCBzdHlsZXMgPSBtYXRjaFN0eWxlPy5ncm91cHNbJ3N0eWxlJ10/LnJlcGxhY2UoLyZxdW90Oy9pZywgJ1wiJyk7XHJcbiAgICAgIGNvbnN0IHNtYXRjaGVzID0gc3R5bGVzLm1hdGNoKC8oPzxuYW1lPlteOzpdKylcXHMqOlxccyooPzx2YWx1ZT5bXjtdKyk7Ki9pZyk7XHJcbiAgICAgIGNvbnN0IG5ld1N0eWxlczogYW55W10gPSBbXTtcclxuICAgICAgc21hdGNoZXM/LmZvckVhY2goKHYsIGksIGEpID0+IHtcclxuICAgICAgICBjb25zdCBzc21hdGNoZXMgPSB2Lm1hdGNoKC8oPzxuYW1lPlteOzpdKylcXHMqOlxccyooPzx2YWx1ZT5bXjtdKyk7Ki9pKTtcclxuICAgICAgICBpZiAoc3NtYXRjaGVzPy5ncm91cHMpIHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBzc21hdGNoZXM/Lmdyb3Vwc1snbmFtZSddO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYWxsb3dlZFN0eWxlcy5pbmRleE9mKG5hbWUpID49IDApIHtcclxuICAgICAgICAgICAgbmV3U3R5bGVzLnB1c2godik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNzbWF0Y2hlcy5ncm91cHNbJ3ZhbHVlJ107XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfT0ke3ZhbHVlfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBhdHRyID0gJyc7XHJcbiAgICAgIGlmIChuZXdTdHlsZXMubGVuZ3RoKSB7IGF0dHIgPSBgc3R5bGVuZXc9XCIke25ld1N0eWxlcy5qb2luKCc7Jyl9XCJgOyB9XHJcbiAgICAgIGl0cmVzID0gaXRyZXM/LnJlcGxhY2UobWF0Y2hTdHlsZVswXSwgYXR0cik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRyZXM/LnJlcGxhY2UoL3N0eWxlbmV3PS9pZywgJ3N0eWxlPScpID8/IFwiXCI7XHJcbiAgfVxyXG5cclxuICBpc0FkbWluaXN0cmF0b3IoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50VXNlcjogYW55ID0gKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUgYXMgYW55KS5Vc2VySW5mbztcclxuICAgIHJldHVybiBjdXJyZW50VXNlci5Jc0FkbWluaXN0cmF0b3IgPT09IDEgfHwgY3VycmVudFVzZXIuaXNBZG1pbmlzdHJhdG9yID09PSAxO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdj5cclxuICAgIDxhbmd1bGFyLWVkaXRvciBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2NvbmZpZ109XCJlZGl0b3JDb25maWdcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIj48L2FuZ3VsYXItZWRpdG9yPlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICN2b2ljZVJlY29nbml0aW9uRGxnPlxyXG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cclxuICAgICAgICA8ZGl2PkxhIHJlY29ubmFpc3NhbmNlIHZvY2FsZSBlc3QgYWN0aXbDqWUuIFZldWlsbGV6IGRpY3RlciBsZSB0ZXh0ZSDDoCBpbnPDqXJlci48L2Rpdj5cclxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwidm9pY2VSZWNvZ25pdGlvblNlcnZpY2UudGV4dCB8IGh0bWxGb3JtYXRcIiBzdHlsZT1cIndpZHRoOjUwMHB4O2hlaWdodDozMDBweDtib3JkZXI6MXB4IHNvbGlkOyBib3JkZXItY29sb3I6IGJsdWU7XCI+PC9kaXY+XHJcbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtYXQtcmFpc2VkLWJ1dHRvblwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1hdC1yYWlzZWQtYnV0dG9uIG1hdC1wcmltYXJ5XCIgKGNsaWNrKT1cInBhc3RlKClcIj5QYXN0ZTwvYnV0dG9uPlxyXG4gICAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../Services/nav.service";
|
|
5
|
+
import * as i2 from "@angular/router";
|
|
6
|
+
import * as i3 from "@angular/material/icon";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class MenuListItemComponent {
|
|
9
|
+
constructor(navService, router) {
|
|
10
|
+
this.navService = navService;
|
|
11
|
+
this.router = router;
|
|
12
|
+
this._expanded = false;
|
|
13
|
+
this.ariaExpanded = this.expanded;
|
|
14
|
+
if (this.depth === undefined) {
|
|
15
|
+
this.depth = 0;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
get expanded() {
|
|
19
|
+
return this._expanded;
|
|
20
|
+
}
|
|
21
|
+
set expanded(value) {
|
|
22
|
+
console.log("change expanded");
|
|
23
|
+
this._expanded = value;
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.navService.currentUrl.subscribe((url) => {
|
|
27
|
+
let route = this.item.route;
|
|
28
|
+
if (typeof this.item.route === 'function') {
|
|
29
|
+
const routefct = this.item.route;
|
|
30
|
+
route = routefct.call(this);
|
|
31
|
+
}
|
|
32
|
+
if (this.item.route && url) {
|
|
33
|
+
// console.log(`Checking '/${this.item.route}' against '${url}'`);
|
|
34
|
+
//this.expanded = url.indexOf(`/${route}`) === 0;
|
|
35
|
+
//this.ariaExpanded = this.expanded;
|
|
36
|
+
// console.log(`${this.item.route} is expanded: ${this.expanded}`);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
onItemSelected(item) {
|
|
41
|
+
/*if (!item.children || !item.children.length) {
|
|
42
|
+
if (typeof item.route === 'function') {
|
|
43
|
+
const routefct: () => string = item.route;
|
|
44
|
+
this.router.navigate([routefct.call(this)]);
|
|
45
|
+
} else {
|
|
46
|
+
const route: string = item.route;
|
|
47
|
+
this.router.navigate([route]);
|
|
48
|
+
}
|
|
49
|
+
this.navService.closeNav();
|
|
50
|
+
}*/
|
|
51
|
+
if (item.children && item.children.length) {
|
|
52
|
+
this.expanded = !this.expanded;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
isActive(item) {
|
|
56
|
+
let route = this.item.route;
|
|
57
|
+
if (typeof this.item.route === 'function') {
|
|
58
|
+
const routefct = this.item.route;
|
|
59
|
+
route = routefct.call(this);
|
|
60
|
+
return route ? this.router.isActive(route, true) : false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
routerLink(item) {
|
|
64
|
+
let route = this.item.route;
|
|
65
|
+
if (typeof this.item.route === 'function') {
|
|
66
|
+
const routefct = this.item.route;
|
|
67
|
+
route = routefct.call(this);
|
|
68
|
+
}
|
|
69
|
+
return route;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
MenuListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MenuListItemComponent, deps: [{ token: i1.NavService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
MenuListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: MenuListItemComponent, selector: "gloww-menu-list-item", inputs: { item: "item", depth: "depth" }, host: { properties: { "attr.aria-expanded": "this.ariaExpanded" } }, ngImport: i0, template: "<div class=\"thisMenu\" (click)=\"onItemSelected(item)\">\r\n <a mat-list-item [ngStyle]=\"{'padding-left': (depth * 12) + 'px'}\" [routerLink]=\"routerLink(item)\" [ngClass]=\"{'active': isActive(item), 'expanded': expanded}\" class=\"menu-list-item\">\r\n <mat-icon class=\"routeIcon\"><i [ngClass]=\"item.icon\" [ngStyle]=\"item.iconStyle\"></i></mat-icon> {{item.displayName}}\r\n </a>\r\n <span fxFlex *ngIf=\"item.children && item.children.length\">\r\n <span fxFlex></span>\r\n <mat-icon [@indicatorRotate]=\"expanded ? 'expanded': 'collapsed'\" class=\"expandIcon\">\r\n expand_more\r\n </mat-icon>\r\n </span>\r\n</div>\r\n<div *ngIf=\"expanded\">\r\n <gloww-menu-list-item *ngFor=\"let child of item.children\" [item]=\"child\" [depth]=\"depth+1\">\r\n </gloww-menu-list-item>\r\n</div>\r\n", styles: [".thisMenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center;outline:none;width:calc(100% - 20px);margin:10px}.thisMenu .mat-list-item.active{background-color:#e8eaf6}.thisMenu:hover>.mat-list-item:not(.expanded),.thisMenu:focus>.mat-list-item:not(.expanded){background-color:#c5cae9!important}.mat-list-item{padding:8px 0;display:flex;width:auto}.mat-list-item .routeIcon{margin-right:40px}.routeIcon{margin-right:20px}.expandIcon{cursor:pointer}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: MenuListItemComponent, selector: "gloww-menu-list-item", inputs: ["item", "depth"] }], directives: [{ type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
|
|
74
|
+
trigger('indicatorRotate', [
|
|
75
|
+
state('collapsed', style({ transform: 'rotate(0deg)' })),
|
|
76
|
+
state('expanded', style({ transform: 'rotate(180deg)' })),
|
|
77
|
+
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)')),
|
|
78
|
+
])
|
|
79
|
+
] });
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MenuListItemComponent, decorators: [{
|
|
81
|
+
type: Component,
|
|
82
|
+
args: [{ selector: 'gloww-menu-list-item', animations: [
|
|
83
|
+
trigger('indicatorRotate', [
|
|
84
|
+
state('collapsed', style({ transform: 'rotate(0deg)' })),
|
|
85
|
+
state('expanded', style({ transform: 'rotate(180deg)' })),
|
|
86
|
+
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)')),
|
|
87
|
+
])
|
|
88
|
+
], template: "<div class=\"thisMenu\" (click)=\"onItemSelected(item)\">\r\n <a mat-list-item [ngStyle]=\"{'padding-left': (depth * 12) + 'px'}\" [routerLink]=\"routerLink(item)\" [ngClass]=\"{'active': isActive(item), 'expanded': expanded}\" class=\"menu-list-item\">\r\n <mat-icon class=\"routeIcon\"><i [ngClass]=\"item.icon\" [ngStyle]=\"item.iconStyle\"></i></mat-icon> {{item.displayName}}\r\n </a>\r\n <span fxFlex *ngIf=\"item.children && item.children.length\">\r\n <span fxFlex></span>\r\n <mat-icon [@indicatorRotate]=\"expanded ? 'expanded': 'collapsed'\" class=\"expandIcon\">\r\n expand_more\r\n </mat-icon>\r\n </span>\r\n</div>\r\n<div *ngIf=\"expanded\">\r\n <gloww-menu-list-item *ngFor=\"let child of item.children\" [item]=\"child\" [depth]=\"depth+1\">\r\n </gloww-menu-list-item>\r\n</div>\r\n", styles: [".thisMenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center;outline:none;width:calc(100% - 20px);margin:10px}.thisMenu .mat-list-item.active{background-color:#e8eaf6}.thisMenu:hover>.mat-list-item:not(.expanded),.thisMenu:focus>.mat-list-item:not(.expanded){background-color:#c5cae9!important}.mat-list-item{padding:8px 0;display:flex;width:auto}.mat-list-item .routeIcon{margin-right:40px}.routeIcon{margin-right:20px}.expandIcon{cursor:pointer}\n"] }]
|
|
89
|
+
}], ctorParameters: function () { return [{ type: i1.NavService }, { type: i2.Router }]; }, propDecorators: { ariaExpanded: [{
|
|
90
|
+
type: HostBinding,
|
|
91
|
+
args: ['attr.aria-expanded']
|
|
92
|
+
}], item: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], depth: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}] } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL21lbnUtbGlzdC1pdGVtL21lbnUtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9tZW51LWxpc3QtaXRlbS9tZW51LWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBZ0JqRixNQUFNLE9BQU8scUJBQXFCO0lBZ0JoQyxZQUFtQixVQUFzQixFQUNoQyxNQUFjO1FBREosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZmYsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVNBLGlCQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQU85RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQWxCRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFjRCxRQUFRO1FBQ04sSUFBSSxDQUFD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YWtDLFlBQVk7c0JBQTlDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUN4QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vLi4vTW9kZWxzL25hdi1pdGVtJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmF2U2VydmljZSB9IGZyb20gJy4uLy4uL1NlcnZpY2VzL25hdi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dsb3d3LW1lbnUtbGlzdC1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lbnUtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignaW5kaWNhdG9yUm90YXRlJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMGRlZyknIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMTgwZGVnKScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJyxcclxuICAgICAgICBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSknKVxyXG4gICAgICApLFxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51TGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwcml2YXRlIF9leHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9leHBhbmRlZDtcclxuICB9XHJcbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImNoYW5nZSBleHBhbmRlZFwiKTtcclxuICAgIHRoaXMuX2V4cGFuZGVkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpIGFyaWFFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWQ7XHJcbiAgQElucHV0KCkgaXRlbTogTmF2SXRlbTtcclxuICBASW5wdXQoKSBkZXB0aDogbnVtYmVyO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG5hdlNlcnZpY2U6IE5hdlNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIGlmICh0aGlzLmRlcHRoID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5kZXB0aCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubmF2U2VydmljZS5jdXJyZW50VXJsLnN1YnNjcmliZSgodXJsOiBzdHJpbmcpID0+IHtcclxuICAgICAgbGV0IHJvdXRlID0gdGhpcy5pdGVtLnJvdXRlIGFzIHN0cmluZztcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLml0ZW0ucm91dGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBjb25zdCByb3V0ZWZjdDogKCkgPT4gKHN0cmluZyB8IHN0cmluZ1tdKSA9IHRoaXMuaXRlbS5yb3V0ZTtcclxuICAgICAgICByb3V0ZSA9IHJvdXRlZmN0LmNhbGwodGhpcyk7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBpZiAodGhpcy5pdGVtLnJvdXRlICYmIHVybCkge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBDaGVja2luZyAnLyR7dGhpcy5pdGVtLnJvdXRlfScgYWdhaW5zdCAnJHt1cmx9J2ApO1xyXG4gICAgICAgIC8vdGhpcy5leHBhbmRlZCA9IHVybC5pbmRleE9mKGAvJHtyb3V0ZX1gKSA9PT0gMDtcclxuICAgICAgICAvL3RoaXMuYXJpYUV4cGFuZGVkID0gdGhpcy5leHBhbmRlZDtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgJHt0aGlzLml0ZW0ucm91dGV9IGlzIGV4cGFuZGVkOiAke3RoaXMuZXhwYW5kZWR9YCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtU2VsZWN0ZWQoaXRlbTogTmF2SXRlbSkge1xyXG4gICAgLyppZiAoIWl0ZW0uY2hpbGRyZW4gfHwgIWl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgaXRlbS5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlZmN0OiAoKSA9PiBzdHJpbmcgPSBpdGVtLnJvdXRlO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZWZjdC5jYWxsKHRoaXMpXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm91dGU6IHN0cmluZyA9IGl0ZW0ucm91dGU7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5uYXZTZXJ2aWNlLmNsb3NlTmF2KCk7XHJcbiAgICB9Ki9cclxuICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKGl0ZW06IE5hdkl0ZW0pIHtcclxuICAgIGxldCByb3V0ZSA9IHRoaXMuaXRlbS5yb3V0ZSBhcyBzdHJpbmc7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuaXRlbS5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCByb3V0ZWZjdDogKCkgPT4gc3RyaW5nIHwgc3RyaW5nW10gPSB0aGlzLml0ZW0ucm91dGU7XHJcbiAgICAgIHJvdXRlID0gcm91dGVmY3QuY2FsbCh0aGlzKTtcclxuICAgICAgcmV0dXJuIHJvdXRlID8gdGhpcy5yb3V0ZXIuaXNBY3RpdmUocm91dGUsIHRydWUpIDogZmFsc2VcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlckxpbmsoaXRlbTogTmF2SXRlbSkge1xyXG4gICAgbGV0IHJvdXRlID0gdGhpcy5pdGVtLnJvdXRlIGFzIHN0cmluZztcclxuICAgIGlmICh0eXBlb2YgdGhpcy5pdGVtLnJvdXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IHJvdXRlZmN0OiAoKSA9PiBzdHJpbmcgfCBzdHJpbmdbXSA9IHRoaXMuaXRlbS5yb3V0ZTtcclxuICAgICAgcm91dGUgPSByb3V0ZWZjdC5jYWxsKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvdXRlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRoaXNNZW51XCIgKGNsaWNrKT1cIm9uSXRlbVNlbGVjdGVkKGl0ZW0pXCI+XHJcbiAgICA8YSBtYXQtbGlzdC1pdGVtIFtuZ1N0eWxlXT1cInsncGFkZGluZy1sZWZ0JzogKGRlcHRoICogMTIpICsgJ3B4J31cIiBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rKGl0ZW0pXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZShpdGVtKSwgJ2V4cGFuZGVkJzogZXhwYW5kZWR9XCIgY2xhc3M9XCJtZW51LWxpc3QtaXRlbVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInJvdXRlSWNvblwiPjxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIFtuZ1N0eWxlXT1cIml0ZW0uaWNvblN0eWxlXCI+PC9pPjwvbWF0LWljb24+IHt7aXRlbS5kaXNwbGF5TmFtZX19XHJcbiAgICA8L2E+XHJcbiAgICA8c3BhbiBmeEZsZXggKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoXCI+XHJcbiAgICA8c3BhbiBmeEZsZXg+PC9zcGFuPlxyXG4gICAgPG1hdC1pY29uIFtAaW5kaWNhdG9yUm90YXRlXT1cImV4cGFuZGVkID8gJ2V4cGFuZGVkJzogJ2NvbGxhcHNlZCdcIiBjbGFzcz1cImV4cGFuZEljb25cIj5cclxuICAgICAgICBleHBhbmRfbW9yZVxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIDwvc3Bhbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJleHBhbmRlZFwiPlxyXG4gICAgPGdsb3d3LW1lbnUtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCIgW2l0ZW1dPVwiY2hpbGRcIiBbZGVwdGhdPVwiZGVwdGgrMVwiPlxyXG4gICAgPC9nbG93dy1tZW51LWxpc3QtaXRlbT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/dialog";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "@angular/material/form-field";
|
|
8
|
+
import * as i4 from "@angular/material/button";
|
|
9
|
+
import * as i5 from "@angular/material/input";
|
|
10
|
+
import * as i6 from "../../Pipes/safe-html.pipe";
|
|
11
|
+
export class PromptComponent {
|
|
12
|
+
constructor(dialogRef, data, formBuilder) {
|
|
13
|
+
this.dialogRef = dialogRef;
|
|
14
|
+
this.data = data;
|
|
15
|
+
this.formBuilder = formBuilder;
|
|
16
|
+
// Update view with given values
|
|
17
|
+
this.title = data.title;
|
|
18
|
+
this.message = data.message;
|
|
19
|
+
this.form = this.formBuilder.group({
|
|
20
|
+
prompt: [data.initialValue, data.required ? Validators.required : null],
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
}
|
|
25
|
+
onCancel() {
|
|
26
|
+
// Close the dialog, return true
|
|
27
|
+
this.dialogRef.close(false);
|
|
28
|
+
}
|
|
29
|
+
onOK() {
|
|
30
|
+
// Close the dialog, return false
|
|
31
|
+
this.dialogRef.close(this.form.value.prompt);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
PromptComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PromptComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
PromptComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: PromptComponent, selector: "gloww-prompt", ngImport: i0, template: "<h1 mat-dialog-title>\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content [formGroup]=\"form\">\r\n <p [innerHTML]=\"message | safeHtml\"></p>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Prompt\" formControlName=\"prompt\" style=\"width: calc(100% - 32px);\">\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onOK()\">Yes</button>\r\n</mat-dialog-actions>\r\n", styles: [""], components: [{ type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], pipes: { "safeHtml": i6.SafeHtmlPipe } });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PromptComponent, decorators: [{
|
|
37
|
+
type: Component,
|
|
38
|
+
args: [{ selector: 'gloww-prompt', template: "<h1 mat-dialog-title>\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content [formGroup]=\"form\">\r\n <p [innerHTML]=\"message | safeHtml\"></p>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Prompt\" formControlName=\"prompt\" style=\"width: calc(100% - 32px);\">\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onOK()\">Yes</button>\r\n</mat-dialog-actions>\r\n", styles: [""] }]
|
|
39
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: PromptModel, decorators: [{
|
|
40
|
+
type: Inject,
|
|
41
|
+
args: [MAT_DIALOG_DATA]
|
|
42
|
+
}] }, { type: i2.FormBuilder }]; } });
|
|
43
|
+
// tslint:disable-next-line: max-classes-per-file
|
|
44
|
+
export class PromptModel {
|
|
45
|
+
constructor(title, message, initialValue, required) {
|
|
46
|
+
this.title = title;
|
|
47
|
+
this.message = message;
|
|
48
|
+
this.initialValue = initialValue;
|
|
49
|
+
this.required = required;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9wcm9tcHQvcHJvbXB0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9wcm9tcHQvcHJvbXB0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFPekUsTUFBTSxPQUFPLGVBQWU7SUFLMUIsWUFBbUIsU0FBd0MsRUFBa0MsSUFBaUIsRUFBVSxXQUF3QjtRQUE3SCxjQUFTLEdBQVQsU0FBUyxDQUErQjtRQUFrQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUksZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN4RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUTtJQUVSLENBQUM7SUFFRCxRQUFRO1FBQ04sZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJO1FBQ0YsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7OzRHQXpCVSxlQUFlLDhDQUsyQyxlQUFlO2dHQUx6RSxlQUFlLG9EQ1Q1QixraEJBZUE7MkZETmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxjQUFjO3FGQVMyRSxXQUFXOzBCQUFoRCxNQUFNOzJCQUFDLGVBQWU7O0FBd0J0RixpREFBaUQ7QUFDakQsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBbUIsS0FBYSxFQUFTLE9BQWUsRUFBUyxZQUFvQixFQUFTLFFBQWlCO1FBQTVGLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVMsaUJBQVksR0FBWixZQUFZLENBQVE7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFTO0lBQy9HLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdnbG93dy1wcm9tcHQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9tcHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb21wdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9tcHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb21wdENvbXBvbmVudD4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUHJvbXB0TW9kZWwsIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICAvLyBVcGRhdGUgdmlldyB3aXRoIGdpdmVuIHZhbHVlc1xyXG4gICAgdGhpcy50aXRsZSA9IGRhdGEudGl0bGU7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSBkYXRhLm1lc3NhZ2U7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgcHJvbXB0OiBbZGF0YS5pbml0aWFsVmFsdWUsIGRhdGEucmVxdWlyZWQgPyBWYWxpZGF0b3JzLnJlcXVpcmVkIDogbnVsbF0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICAvLyBDbG9zZSB0aGUgZGlhbG9nLCByZXR1cm4gdHJ1ZVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgb25PSygpOiB2b2lkIHtcclxuICAgIC8vIENsb3NlIHRoZSBkaWFsb2csIHJldHVybiBmYWxzZVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5mb3JtLnZhbHVlLnByb21wdCk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtY2xhc3Nlcy1wZXItZmlsZVxyXG5leHBvcnQgY2xhc3MgUHJvbXB0TW9kZWwge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0aXRsZTogc3RyaW5nLCBwdWJsaWMgbWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgaW5pdGlhbFZhbHVlOiBzdHJpbmcsIHB1YmxpYyByZXF1aXJlZDogYm9vbGVhbikge1xyXG4gIH1cclxufVxyXG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT5cclxuICAgIHt7dGl0bGV9fVxyXG48L2gxPlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICA8cCBbaW5uZXJIVE1MXT1cIm1lc3NhZ2UgfCBzYWZlSHRtbFwiPjwvcD5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJQcm9tcHRcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9tcHRcIiBzdHlsZT1cIndpZHRoOiBjYWxjKDEwMCUgLSAzMnB4KTtcIj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvZGl2PlxyXG5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25PSygpXCI+WWVzPC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Component, ContentChildren } from '@angular/core';
|
|
2
|
+
import { MatColumnDef } from '@angular/material/table';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ResultTableComponent {
|
|
5
|
+
constructor() { }
|
|
6
|
+
ngAfterContentInit() {
|
|
7
|
+
console.log(this.columnDefs.length);
|
|
8
|
+
}
|
|
9
|
+
ngOnInit() {
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
ResultTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ResultTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
ResultTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ResultTableComponent, selector: "glw-result-table", queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }], ngImport: i0, template: "<ng-content></ng-content>", styles: [""] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ResultTableComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'glw-result-table', template: "<ng-content></ng-content>", styles: [""] }]
|
|
17
|
+
}], ctorParameters: function () { return []; }, propDecorators: { columnDefs: [{
|
|
18
|
+
type: ContentChildren,
|
|
19
|
+
args: [MatColumnDef]
|
|
20
|
+
}] } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9yZXN1bHQtdGFibGUvcmVzdWx0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9yZXN1bHQtdGFibGUvcmVzdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLGVBQWUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU92RCxNQUFNLE9BQU8sb0JBQW9CO0lBRWhDLGdCQUFnQixDQUFDO0lBRWpCLGtCQUFrQjtRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDOztpSEFUVyxvQkFBb0I7cUdBQXBCLG9CQUFvQixtRkFDZixZQUFZLDZCQ1Q5QiwyQkFBeUI7MkZEUVosb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNDLGtCQUFrQjswRUFLRyxVQUFVO3NCQUF4QyxlQUFlO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgT25Jbml0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q29sdW1uRGVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdnbHctcmVzdWx0LXRhYmxlJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcmVzdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9yZXN1bHQtdGFibGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdWx0VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xyXG5cdEBDb250ZW50Q2hpbGRyZW4oTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWZzOiBRdWVyeUxpc3Q8TWF0Q29sdW1uRGVmPjtcclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHRuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcblx0XHRjb25zb2xlLmxvZyh0aGlzLmNvbHVtbkRlZnMubGVuZ3RoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SearchFormComponent {
|
|
4
|
+
constructor() { }
|
|
5
|
+
ngOnInit() {
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
SearchFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SearchFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
SearchFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SearchFormComponent, selector: "glw-search-form", ngImport: i0, template: "<ng-content></ng-content>", styles: [""] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SearchFormComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{ selector: 'glw-search-form', template: "<ng-content></ng-content>", styles: [""] }]
|
|
13
|
+
}], ctorParameters: function () { return []; } });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL3NlYXJjaC1mb3JtL3NlYXJjaC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9zZWFyY2gtZm9ybS9zZWFyY2gtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQU9sRCxNQUFNLE9BQU8sbUJBQW1CO0lBRS9CLGdCQUFnQixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOztnSEFMVyxtQkFBbUI7b0dBQW5CLG1CQUFtQix1RENQaEMsMkJBQXlCOzJGRE9aLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdnbHctc2VhcmNoLWZvcm0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vc2VhcmNoLWZvcm0uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { MatDialogConfig } from '@angular/material/dialog';
|
|
3
|
+
import { DownloadProgressComponent } from '../download-progress/download-progress.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/dialog";
|
|
6
|
+
export class SecureAComponent {
|
|
7
|
+
constructor(dialog) {
|
|
8
|
+
this.dialog = dialog;
|
|
9
|
+
}
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
}
|
|
12
|
+
click() {
|
|
13
|
+
const dialogConfig = new MatDialogConfig();
|
|
14
|
+
dialogConfig.disableClose = true;
|
|
15
|
+
dialogConfig.autoFocus = true;
|
|
16
|
+
dialogConfig.closeOnNavigation = false;
|
|
17
|
+
dialogConfig.data = { files: [{ url: this.href, name: this.name }] };
|
|
18
|
+
this.dialog.open(DownloadProgressComponent, dialogConfig).afterClosed().subscribe();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
SecureAComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecureAComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
+
SecureAComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SecureAComponent, selector: "gloww-secure-a", inputs: { href: "href", name: "name" }, ngImport: i0, template: "<a (click)=\"click()\" href=\"javascript:void(0);\">\r\n <ng-content></ng-content>\r\n</a>", styles: [""] });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecureAComponent, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{ selector: 'gloww-secure-a', template: "<a (click)=\"click()\" href=\"javascript:void(0);\">\r\n <ng-content></ng-content>\r\n</a>", styles: [""] }]
|
|
26
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { href: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], name: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}] } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlLWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL3NlY3VyZS1hL3NlY3VyZS1hLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9zZWN1cmUtYS9zZWN1cmUtYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7OztBQU83RixNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQW9CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7SUFBSSxDQUFDO0lBRTFDLFFBQVE7SUFDUixDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sWUFBWSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFFM0MsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDakMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDOUIsWUFBWSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUN2QyxZQUFZLENBQUMsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUVyRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0RixDQUFDOzs2R0FsQlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsOEZDVDdCLCtGQUVJOzJGRE9TLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxnQkFBZ0I7Z0dBS2pCLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEb3dubG9hZFByb2dyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi4vZG93bmxvYWQtcHJvZ3Jlc3MvZG93bmxvYWQtcHJvZ3Jlc3MuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ2xvd3ctc2VjdXJlLWEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWN1cmUtYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VjdXJlLWEuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWN1cmVBQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBocmVmOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIGNsaWNrKCkge1xyXG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xyXG5cclxuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBkaWFsb2dDb25maWcuY2xvc2VPbk5hdmlnYXRpb24gPSBmYWxzZTtcclxuICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0geyBmaWxlczogW3sgdXJsOiB0aGlzLmhyZWYsIG5hbWU6IHRoaXMubmFtZSB9XSB9O1xyXG5cclxuICAgIHRoaXMuZGlhbG9nLm9wZW4oRG93bmxvYWRQcm9ncmVzc0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGEgKGNsaWNrKT1cImNsaWNrKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2E+Il19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { switchMap, map } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common/http";
|
|
6
|
+
import * as i2 from "@angular/platform-browser";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
export class SecureImgComponent {
|
|
9
|
+
// we need HttpClient to load the image
|
|
10
|
+
constructor(httpClient, domSanitizer) {
|
|
11
|
+
this.httpClient = httpClient;
|
|
12
|
+
this.domSanitizer = domSanitizer;
|
|
13
|
+
this.src$ = new BehaviorSubject(this.src);
|
|
14
|
+
// this stream will contain the actual url that our img tag will load
|
|
15
|
+
// everytime the src changes, the previous call would be canceled and the
|
|
16
|
+
// new resource would be loaded
|
|
17
|
+
this.dataUrl$ = this.src$.pipe(switchMap(url => this.loadImage(url)));
|
|
18
|
+
}
|
|
19
|
+
ngOnChanges() {
|
|
20
|
+
this.src$.next(this.src);
|
|
21
|
+
}
|
|
22
|
+
loadImage(url) {
|
|
23
|
+
return this.httpClient
|
|
24
|
+
// load the image as a blob
|
|
25
|
+
.get(url, { responseType: 'blob' })
|
|
26
|
+
// create an object url of that blob that we can use in the src attribute
|
|
27
|
+
.pipe(map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
SecureImgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecureImgComponent, deps: [{ token: i1.HttpClient }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
+
SecureImgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SecureImgComponent, selector: "secure-img", inputs: { src: "src" }, usesOnChanges: true, ngImport: i0, template: `
|
|
32
|
+
<img [src]="dataUrl$ | async" style="object-fit: contain;"/>
|
|
33
|
+
`, isInline: true, pipes: { "async": i3.AsyncPipe } });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecureImgComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{
|
|
37
|
+
selector: 'secure-img',
|
|
38
|
+
template: `
|
|
39
|
+
<img [src]="dataUrl$ | async" style="object-fit: contain;"/>
|
|
40
|
+
`
|
|
41
|
+
}]
|
|
42
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.DomSanitizer }]; }, propDecorators: { src: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlLWltZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nbG93dy9zcmMvbGliL0NvbXBvbmVudHMvc2VjdXJlLWltZy9zZWN1cmUtaW1nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVFoRCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0I3Qix1Q0FBdUM7SUFDdkMsWUFBb0IsVUFBc0IsRUFBVSxZQUEwQjtRQUExRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFYdEUsU0FBSSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUs3QyxxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLCtCQUErQjtRQUMvQixhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFJaEUsQ0FBQztJQVhELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQVdPLFNBQVMsQ0FBQyxHQUFXO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVU7WUFDcEIsMkJBQTJCO2FBQzFCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkMseUVBQXlFO2FBQ3hFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckYsQ0FBQzs7K0dBMUJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLCtGQUpuQjs7R0FFVDsyRkFFVSxrQkFBa0I7a0JBTjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFFBQVEsRUFBRTs7R0FFVDtpQkFDRjs0SEFNaUIsR0FBRztzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NlY3VyZS1pbWcnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8aW1nIFtzcmNdPVwiZGF0YVVybCQgfCBhc3luY1wiIHN0eWxlPVwib2JqZWN0LWZpdDogY29udGFpbjtcIi8+XHJcbiAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VjdXJlSW1nQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICAvLyBUaGlzIGNvZGUgYmxvY2sganVzdCBjcmVhdGVzIGFuIHJ4anMgc3RyZWFtIGZyb20gdGhlIHNyY1xyXG4gIC8vIHRoaXMgbWFrZXMgc3VyZSB0aGF0IHdlIGNhbiBoYW5kbGUgc291cmNlIGNoYW5nZXNcclxuICAvLyBvciBldmVuIHdoZW4gdGhlIGNvbXBvbmVudCBnZXRzIGRlc3Ryb3llZFxyXG4gIC8vIFNvIGJhc2ljYWxseSB0dXJuIHNyYyBpbnRvIHNyYyRcclxuICBASW5wdXQoKSBwdWJsaWMgc3JjITogc3RyaW5nO1xyXG4gIHByaXZhdGUgc3JjJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5zcmMpO1xyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zcmMkLm5leHQodGhpcy5zcmMpO1xyXG4gIH1cclxuXHJcbiAgLy8gdGhpcyBzdHJlYW0gd2lsbCBjb250YWluIHRoZSBhY3R1YWwgdXJsIHRoYXQgb3VyIGltZyB0YWcgd2lsbCBsb2FkXHJcbiAgLy8gZXZlcnl0aW1lIHRoZSBzcmMgY2hhbmdlcywgdGhlIHByZXZpb3VzIGNhbGwgd291bGQgYmUgY2FuY2VsZWQgYW5kIHRoZVxyXG4gIC8vIG5ldyByZXNvdXJjZSB3b3VsZCBiZSBsb2FkZWRcclxuICBkYXRhVXJsJCA9IHRoaXMuc3JjJC5waXBlKHN3aXRjaE1hcCh1cmwgPT4gdGhpcy5sb2FkSW1hZ2UodXJsKSkpXHJcblxyXG4gIC8vIHdlIG5lZWQgSHR0cENsaWVudCB0byBsb2FkIHRoZSBpbWFnZVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCwgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkSW1hZ2UodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAvLyBsb2FkIHRoZSBpbWFnZSBhcyBhIGJsb2JcclxuICAgICAgLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSlcclxuICAgICAgLy8gY3JlYXRlIGFuIG9iamVjdCB1cmwgb2YgdGhhdCBibG9iIHRoYXQgd2UgY2FuIHVzZSBpbiB0aGUgc3JjIGF0dHJpYnV0ZVxyXG4gICAgICAucGlwZShtYXAoZSA9PiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFVSTC5jcmVhdGVPYmplY3RVUkwoZSkpKSlcclxuICB9XHJcbn1cclxuIl19
|