diff --git a/capacitor.config.json b/capacitor.config.json index 992b92b11..0967ef424 100644 --- a/capacitor.config.json +++ b/capacitor.config.json @@ -1,23 +1 @@ -{ - "appId": "io.ionic.starter", - "appName": "gabinete-digital", - "bundledWebRuntime": false, - "npmClient": "npm", - "webDir": "www", - "plugins": { - "SplashScreen": { - "launchShowDuration": 0 - } - }, - "cordova": { - "preferences": { - "ScrollEnabled": "false", - "BackupWebStorage": "none", - "SplashMaintainAspectRatio": "true", - "FadeSplashScreenDuration": "300", - "SplashShowOnlyFirstTime": "false", - "SplashScreen": "screen", - "SplashScreenDelay": "3000" - } - } -} +{} diff --git a/config.xml b/config.xml index 0d54a1497..f6984c7aa 100644 --- a/config.xml +++ b/config.xml @@ -44,6 +44,9 @@ + + You can take photos + diff --git a/git b/git new file mode 100644 index 000000000..e69de29bb diff --git a/ionic.config.json b/ionic.config.json index 0861ddaef..bad8f73b9 100644 --- a/ionic.config.json +++ b/ionic.config.json @@ -1,7 +1,9 @@ { "name": "gabinete-digital", "integrations": { - "capacitor": {}, + "capacitor": { + "enabled": false + }, "cordova": {} }, "type": "angular" diff --git a/package-lock.json b/package-lock.json index b5e95e459..90c01a2f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,6 +527,12 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", @@ -1914,39 +1920,10 @@ "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-2.4.0.tgz", "integrity": "sha512-5sJicZjtuBRgtmBuV1kvWnIjlu7bnw2TGGp62UXf0ZrjvMUCYSFHBqIHZ8neffW7a3xM5cdGMUlxJ+HfA9ntAg==" }, - "@capacitor/cli": { + "@capacitor/ios": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-2.4.0.tgz", - "integrity": "sha512-zThbRb83odSVhPfGmR6dAsNx4yDKSJ6N11eClh5NGYiY4UR4uMoE0QicU0VSp+n62ggONmQjQl9Zhadl7ZQHwQ==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "commander": "^4.1.1", - "compare-versions": "^3.1.0", - "fs-extra": "^4.0.3", - "inquirer": "6.3.1", - "open": "^6.1.0", - "ora": "^1.3.0", - "plist": "^3.0.1", - "semver": "^5.4.1", - "which": "^1.3.0", - "xml2js": "^0.4.19" - } - }, - "@capacitor/core": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-2.4.0.tgz", - "integrity": "sha512-zL+3yKjLNkU6QwIB/Fp9rg+qDLsO44/ibrIgaZZRXcDCwScwanjXCgco/jXQl3jGFcZzanm59wKhMcJr9xQH0Q==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" - } - } + "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-2.4.0.tgz", + "integrity": "sha512-G4WcQHS4RuK94Ncoi5K+r12DWPqkB8yZKupQrJaGT1S/Zyc3mcA9m1f4HwRPlYCwyxQ6lCd8+N9GYxLu7Kv+SA==" }, "@fullcalendar/angular": { "version": "5.3.0", @@ -2021,12 +1998,64 @@ } } }, + "@ionic-native/camera": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@ionic-native/camera/-/camera-5.30.0.tgz", + "integrity": "sha512-eIEhr7dRsjTyw/XIxF+TPx4A4feFmFE4cZhg5qYXUdI+eBymX6iii/J47OjsFg9ulCcrNUXg54iL5LqmhkeG5A==", + "requires": { + "@types/cordova": "^0.0.34" + }, + "dependencies": { + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + } + } + }, "@ionic-native/core": { "version": "5.27.0", "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-5.27.0.tgz", "integrity": "sha512-qJcZJtXaXUpwKTMzLc6tGitHJVYQCcSlx2XNQUiKyck47g98Xxo8D0zgHoRiCQvApOqw1iEKzh6xs5PLkmcXqw==", "requires": { "@types/cordova": "^0.0.34" + }, + "dependencies": { + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + } + } + }, + "@ionic-native/file": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@ionic-native/file/-/file-5.30.0.tgz", + "integrity": "sha512-wYdmZEbQwksJmcGc87FZkzT8BxvB1u8CrDX3K7czFZQX6y6+FYgLyAX2FYR1X1xf6CEtZhQV4qSGCs7sGTYGdQ==", + "requires": { + "@types/cordova": "^0.0.34" + }, + "dependencies": { + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + } + } + }, + "@ionic-native/file-path": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@ionic-native/file-path/-/file-path-5.30.0.tgz", + "integrity": "sha512-rE5GqT5n+3JIbmeq9Z7QJhekYcayoZFBHC3URpgSzAGMXql50whdT+s1NZml9rx8b2RmB7LlbypsIku381WWvA==", + "requires": { + "@types/cordova": "^0.0.34" + }, + "dependencies": { + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + } } }, "@ionic-native/in-app-browser": { @@ -2044,12 +2073,34 @@ } } }, + "@ionic-native/ionic-webview": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@ionic-native/ionic-webview/-/ionic-webview-5.30.0.tgz", + "integrity": "sha512-Ey0lz//ubjDLvyvcoRn5vg9Ql5hCzsav8SFsmgDpEt47WZTr8Bwh+kLJkVjWiLTehMvoVqijyKls2W9trN7v3A==", + "requires": { + "@types/cordova": "^0.0.34" + }, + "dependencies": { + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + } + } + }, "@ionic-native/splash-screen": { "version": "5.27.0", "resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.27.0.tgz", "integrity": "sha512-SZO5FjarVztlEBYJQsJv7NvZk+jRhElatruVpxMk4r8uuNL52Zt3TaPaGngwvI3tGHB42+l0rOsIusiBaIsSrA==", "requires": { "@types/cordova": "^0.0.34" + }, + "dependencies": { + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + } } }, "@ionic-native/status-bar": { @@ -2058,6 +2109,13 @@ "integrity": "sha512-N0NIZTbi5KSA0GwTWsaJJLsve6ANQ+cy141+oUCXFPjtCYXyp1mOGcFiAE2UiI/N8SpmcLlV53zYhqIP8ish2Q==", "requires": { "@types/cordova": "^0.0.34" + }, + "dependencies": { + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + } } }, "@ionic/angular": { @@ -2070,212 +2128,209 @@ } }, "@ionic/angular-toolkit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ionic/angular-toolkit/-/angular-toolkit-2.3.0.tgz", - "integrity": "sha512-4n5HmeX5S0W7UOv4gcfiEFAphFDmgmaAOryM4/E40+uLIvnOOL40ReooOlOjs5PRB3vwzVmCh1Uqjtq3XwqSgQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ionic/angular-toolkit/-/angular-toolkit-3.0.0.tgz", + "integrity": "sha512-H6SX8k+uPTdcsZAHEOaH5oIuQWSeIqEqEjjPqiD0e5+wmqc94RANNC/cRX/3cnVsWQiqcUY75CbpGec4xRvWoA==", "dev": true, "requires": { - "@schematics/angular": ">=8.0.0", + "@schematics/angular": "^11.0.0", "cheerio": "1.0.0-rc.3", "colorette": "1.1.0", - "copy-webpack-plugin": "5.1.1", - "tslib": "^1.9.0", + "copy-webpack-plugin": "^6.2.1", + "tapable": "^2.1.1", + "tslib": "^2.0.3", "ws": "^7.0.1" }, "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "@angular-devkit/core": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.0.5.tgz", + "integrity": "sha512-hwV8fjF8JNPJkiVWw8MNzeIfDo01aD/OAOlC4L5rQnVHn+i2EiU3brSDmFqyeHPPV3h/QjuBkS3tkN7gSnVWaQ==", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.0.5.tgz", + "integrity": "sha512-0NKGC8Nf/4vvDpWKB7bwxIazvNnNHnZBX6XlyBXNl+fW8tpTef3PNMJMSErTz9LFnuv61vsKbc36u/Ek2YChWg==", + "dev": true, + "requires": { + "@angular-devkit/core": "11.0.5", + "ora": "5.1.0", + "rxjs": "6.6.3" + } + }, + "@schematics/angular": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.0.5.tgz", + "integrity": "sha512-7p2wweoJYhim8YUy3ih1SrPGqRsa6+aEFbYgo9v4zt7b3tOva8SvkbC2alayK74fclzQ7umqa6xAwvWhy8ORvg==", + "dev": true, + "requires": { + "@angular-devkit/core": "11.0.5", + "@angular-devkit/schematics": "11.0.5", + "jsonc-parser": "2.3.1" + } + }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, "copy-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", + "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", "dev": true, "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", + "cacache": "^15.0.5", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "webpack-log": "^2.0.0" + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" } }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "path-type": "^3.0.0" + "yallist": "^4.0.0" } }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, - "glob-parent": { + "p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "yocto-queue": "^0.1.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true } } }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "randombytes": "^2.1.0" } }, + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + }, "ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", + "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==", "dev": true } } @@ -2495,6 +2550,21 @@ } } }, + "@ionic/pwa-elements": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@ionic/pwa-elements/-/pwa-elements-3.0.1.tgz", + "integrity": "sha512-X3wQmiNBx3umAjIZTkDEouOLE907ZhPm/qD844BrQe47/Qf++r35DyedbPODl5cODrgY05xBiOQiScGliS2k9Q==" + }, + "@ionic/storage": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@ionic/storage/-/storage-2.3.1.tgz", + "integrity": "sha512-IdYKr6xRatumkhceVbjmySCrA20KKcojQN0MyS857D4OgvcDtQhG9mvTXtfX/tU2hxaFlN6WkUaQOy3oPFcJvA==", + "requires": { + "localforage": "1.7.1", + "localforage-cordovasqlitedriver": "1.7.0", + "tslib": "^1.10.0" + } + }, "@ionic/utils-array": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.3.tgz", @@ -2860,6 +2930,12 @@ "semver-intersect": "1.4.0" }, "dependencies": { + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "rxjs": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", @@ -2883,11 +2959,6 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/cordova": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", - "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" - }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -2898,6 +2969,11 @@ "@types/node": "*" } }, + "@types/hammerjs": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.36.tgz", + "integrity": "sha512-7TUK/k2/QGpEAv/BCwSHlYu3NXZhQ9ZwBYpzr9tjlPIL2C5BeGhH3DmVavRx3ZNyELX5TLC91JTz/cen6AAtIQ==" + }, "@types/jasmine": { "version": "3.5.12", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.12.tgz", @@ -2919,6 +2995,11 @@ "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", "dev": true }, + "@types/lodash": { + "version": "4.14.165", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.165.tgz", + "integrity": "sha512-tjSSOTHhI5mCHTy/OOXYIhi2Wt1qcbHmuXD1Ha7q70CgI/I71afO4XtLb/cVexki1oVYchpul/TOuu3Arcdxrg==" + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -3281,12 +3362,6 @@ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -3805,9 +3880,9 @@ } }, "bl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", - "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", + "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3815,12 +3890,12 @@ }, "dependencies": { "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "readable-stream": { @@ -4259,24 +4334,6 @@ "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", "dev": true }, - "capacitor-datepicker": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/capacitor-datepicker/-/capacitor-datepicker-0.0.2.tgz", - "integrity": "sha512-6iZ3sxZs/thn05z8Qn0G9sJYtPC2w70O8D6yF4d1/02zhVEv2iWmpDKa+0w8Xk6l91qMNumyWwUV4gMWLte1xg==", - "requires": { - "@capacitor/core": "^2.4.0" - }, - "dependencies": { - "@capacitor/core": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-2.4.0.tgz", - "integrity": "sha512-zL+3yKjLNkU6QwIB/Fp9rg+qDLsO44/ibrIgaZZRXcDCwScwanjXCgco/jXQl3jGFcZzanm59wKhMcJr9xQH0Q==", - "requires": { - "tslib": "^1.9.0" - } - } - } - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -4445,18 +4502,18 @@ "dev": true }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", "dev": true }, "cli-width": { @@ -4615,12 +4672,6 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -5052,6 +5103,67 @@ } } }, + "cordova-browser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cordova-browser/-/cordova-browser-6.0.0.tgz", + "integrity": "sha512-G61S7fhnVVJC98lvkGeKCVpfFtoW0a1P1Sg9TK+n03g3yupDMIM7XuecWuJ3KEMRhED4+CEc2hauruAff7oXrw==", + "dev": true, + "requires": { + "cordova-common": "^3.1.0", + "cordova-serve": "^3.0.0", + "nopt": "^4.0.1", + "shelljs": "^0.5.3" + }, + "dependencies": { + "bplist-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", + "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", + "dev": true, + "requires": { + "big-integer": "^1.6.7" + } + }, + "cordova-common": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.2.1.tgz", + "integrity": "sha512-xg0EnjnA6EipxXG8cupdlYQYeDA6+ghbN+Pjq88xN1LInwP6Bo7IyGBdSV5QnfjOvzShF9BBwSxBAv0FOO0C2Q==", + "dev": true, + "requires": { + "ansi": "^0.3.1", + "bplist-parser": "^0.1.0", + "cross-spawn": "^6.0.5", + "elementtree": "0.1.7", + "endent": "^1.1.1", + "fs-extra": "^8.0.0", + "glob": "^7.1.2", + "minimatch": "^3.0.0", + "plist": "^3.0.1", + "q": "^1.4.1", + "strip-bom": "^3.0.0", + "underscore": "^1.8.3", + "which": "^1.3.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "shelljs": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", + "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=", + "dev": true + } + } + }, "cordova-common": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-4.0.2.tgz", @@ -5198,12 +5310,27 @@ } } }, + "cordova-plugin-camera": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-camera/-/cordova-plugin-camera-5.0.1.tgz", + "integrity": "sha512-9gXyZvI8u9KzsZuqmB8Yw+uheF+7f+usMAwvOMw7L7pqbykg+bm9US5zjhJbwit3A1cSblgZkpBafe5cFiMcTA==" + }, "cordova-plugin-device": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.0.2.tgz", "integrity": "sha1-/Ajzci5n7ve2xnv8mag99q3Quro=", "dev": true }, + "cordova-plugin-file": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-6.0.2.tgz", + "integrity": "sha512-m7cughw327CjONN/qjzsTpSesLaeybksQh420/gRuSXJX5Zt9NfgsSbqqKDon6jnQ9Mm7h7imgyO2uJ34XMBtA==" + }, + "cordova-plugin-filepath": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/cordova-plugin-filepath/-/cordova-plugin-filepath-1.5.8.tgz", + "integrity": "sha512-DhMVM9lkndPWQ+lI8Um0Yq648MBKWpNe/3PW057g4wuFrnAz/9nR8Qs4bjYt/yxwxMX/VMZC59qXOcksd2JYuw==" + }, "cordova-plugin-inappbrowser": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cordova-plugin-inappbrowser/-/cordova-plugin-inappbrowser-4.0.0.tgz", @@ -5253,6 +5380,32 @@ "tslib": "^1.9.3" } }, + "cordova-serve": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cordova-serve/-/cordova-serve-3.0.0.tgz", + "integrity": "sha512-h479g/5a0PXn//yiFuMrD5MDEbB+mtihNkWcE6uD/aCh/6z0FRZ9sWH3NfZbHDB+Bp1yGLYsjbH8LZBL8KOQ0w==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "compression": "^1.6.0", + "express": "^4.13.3", + "opn": "^5.3.0", + "which": "^1.3.0" + } + }, + "cordova-sqlite-storage": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cordova-sqlite-storage/-/cordova-sqlite-storage-5.1.0.tgz", + "integrity": "sha512-UmHe9yQiYblDBToh3z91WHuD6ZgmCm3VX+1QFseYQs4WVQ3+ndj22qyGby/NV0uyCgok91gB1obLjLM+9vYJEw==", + "requires": { + "cordova-sqlite-storage-dependencies": "3.0.0" + } + }, + "cordova-sqlite-storage-dependencies": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cordova-sqlite-storage-dependencies/-/cordova-sqlite-storage-dependencies-3.0.0.tgz", + "integrity": "sha512-A7gV5lQZc0oPrJ/a+lsZmMZr7vYou4MXyQFOY+b/dwuCMsagLT0EsL7oY54tqzpvjtzLfh0aZGGm9i8DMAIFSA==" + }, "core-js": { "version": "3.6.4", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", @@ -6767,15 +6920,6 @@ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-loader": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", @@ -7004,17 +7148,6 @@ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -7194,6 +7327,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -7778,8 +7916,7 @@ "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", - "dev": true + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, "import-cwd": { "version": "2.1.0", @@ -7863,47 +8000,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "rxjs": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", - "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - } - } + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" }, "internal-ip": { "version": "4.3.0", @@ -7929,6 +8028,17 @@ "resolved": "https://registry.npmjs.org/ionic-selectable/-/ionic-selectable-4.5.0.tgz", "integrity": "sha512-ya65y4IF8rgaE68VVqBllSfsSNozBzk+If8ohtg70qk4HHTkxAT4mhiD7EGcQ8oJ2LGyFomAK5vLO15pJ1vCKg==" }, + "ionic2-alpha-scroll": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ionic2-alpha-scroll/-/ionic2-alpha-scroll-2.0.1.tgz", + "integrity": "sha512-KAzZo/8XltmTJ+3pbSMEJyon/R+O18mmdEyAeJllOcBzW0Ogw0q3b1frQrztJ3DzP0TF2A/3ZHEsb6neaC/yCw==", + "requires": { + "@types/hammerjs": "^2.0.33", + "@types/lodash": "^4.14.106", + "hammerjs": "^2.0.8", + "lodash": "^4.17.5" + } + }, "ionic2-calendar": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/ionic2-calendar/-/ionic2-calendar-0.6.6.tgz", @@ -8576,6 +8686,12 @@ "minimist": "^1.2.5" } }, + "jsonc-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "dev": true + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -8990,6 +9106,32 @@ "json5": "^2.1.2" } }, + "localforage": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.1.tgz", + "integrity": "sha1-5JJ+BCMCuGTbMPMhHxO1xvDell0=", + "requires": { + "lie": "3.1.1" + }, + "dependencies": { + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "requires": { + "immediate": "~3.0.5" + } + } + } + }, + "localforage-cordovasqlitedriver": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/localforage-cordovasqlitedriver/-/localforage-cordovasqlitedriver-1.7.0.tgz", + "integrity": "sha1-i5OVd1nuaI06WNW6fAR39sy1ODg=", + "requires": { + "localforage": ">=1.5.0" + } + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -9024,12 +9166,63 @@ "dev": true }, "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "dev": true, "requires": { - "chalk": "^2.0.1" + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "log-update": { @@ -9436,9 +9629,9 @@ } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "mimic-response": { @@ -9676,15 +9869,15 @@ "dev": true }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "dev": true, "optional": true }, @@ -9767,9 +9960,9 @@ } }, "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true }, "node-libs-browser": { @@ -10187,21 +10380,12 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" - } - }, - "open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" + "mimic-fn": "^2.1.0" } }, "opn": { @@ -10214,15 +10398,85 @@ } }, "ora": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", - "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", + "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", "dev": true, "requires": { - "chalk": "^2.1.0", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.0.1", - "log-symbols": "^2.1.0" + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.4.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "original": { @@ -12301,12 +12555,12 @@ "dev": true }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, @@ -12536,12 +12790,12 @@ } }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", "dev": true, "requires": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" } }, "semver": { @@ -15787,6 +16041,12 @@ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zone.js": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", diff --git a/package.json b/package.json index e77a54e8a..f47b2185f 100644 --- a/package.json +++ b/package.json @@ -20,22 +20,32 @@ "@angular/platform-browser-dynamic": "~9.1.6", "@angular/router": "~9.1.6", "@capacitor/android": "^2.4.0", - "@capacitor/core": "2.4.0", + "@capacitor/ios": "^2.4.0", "@fullcalendar/angular": "^5.3.0", "@fullcalendar/daygrid": "^5.3.0", "@fullcalendar/interaction": "^5.3.0", + "@ionic-native/camera": "^5.30.0", "@ionic-native/core": "^5.0.7", + "@ionic-native/file": "^5.30.0", + "@ionic-native/file-path": "^5.30.0", "@ionic-native/in-app-browser": "^5.28.0", + "@ionic-native/ionic-webview": "^5.30.0", "@ionic-native/splash-screen": "^5.0.0", "@ionic-native/status-bar": "^5.0.0", "@ionic/angular": "^5.0.0", + "@ionic/pwa-elements": "^3.0.1", + "@ionic/storage": "^2.3.1", "@logisticinfotech/ionic4-datepicker": "^1.4.4", "axios": "^0.19.2", - "capacitor-datepicker": "0.0.2", "cordova-ios": "6.1.0", + "cordova-plugin-camera": "^5.0.1", + "cordova-plugin-file": "^6.0.2", + "cordova-plugin-filepath": "^1.5.8", "cordova-res": "^0.15.1", + "cordova-sqlite-storage": "^5.1.0", "date-fns": "^2.15.0", "ionic-selectable": "^4.5.0", + "ionic2-alpha-scroll": "^2.0.1", "ionic2-calendar": "^0.6.6", "moment": "^2.27.0", "ngx-socket-io": "^3.2.0", @@ -51,14 +61,14 @@ "@angular/compiler": "~9.1.6", "@angular/compiler-cli": "~9.1.6", "@angular/language-service": "~9.1.6", - "@capacitor/cli": "2.4.0", - "@ionic/angular-toolkit": "^2.1.1", + "@ionic/angular-toolkit": "^3.0.0", "@ionic/lab": "3.1.7", "@types/jasmine": "~3.5.0", "@types/jasminewd2": "~2.0.3", "@types/node": "^12.11.1", "codelyzer": "^5.1.2", "cordova-android": "^9.0.0", + "cordova-browser": "^6.0.0", "cordova-plugin-device": "^2.0.2", "cordova-plugin-inappbrowser": "^4.0.0", "cordova-plugin-ionic-keyboard": "^2.2.0", @@ -89,11 +99,22 @@ "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+" }, "cordova-plugin-ionic-keyboard": {}, - "cordova-plugin-inappbrowser": {} + "cordova-plugin-inappbrowser": {}, + "cordova-plugin-camera": { + "ANDROID_SUPPORT_V4_VERSION": "27.+" + }, + "cordova-sqlite-storage": {} }, "platforms": [ "ios", - "android" + "android", + "browser" ] - } + }, + "main": "karma.conf.js", + "repository": { + "type": "git", + "url": "git+https://Kayaya@bitbucket.org/equilibriumito/gabinete-digital.git" + }, + "license": "ISC" } diff --git a/src/app/animations/animations.ts b/src/app/animations/animations.ts new file mode 100644 index 000000000..ce536f126 --- /dev/null +++ b/src/app/animations/animations.ts @@ -0,0 +1,3 @@ +import { Animation, AnimationController } from '@ionic/angular'; + +/* export const enterAnimation = (base) */ \ No newline at end of file diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index adcc0da53..6e197ae99 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -17,6 +17,30 @@ const routes: Routes = [ path: 'publications', loadChildren: () => import('./pages/publications/publications.module').then( m => m.PublicationsPageModule) }, + { + path: 'header', + loadChildren: () => import('./shared/header/header.module').then( m => m.HeaderPageModule) + }, + { + path: 'header', + loadChildren: () => import('./shared/header/header.module').then( m => m.HeaderPageModule) + }, + { + path: 'header-pr', + loadChildren: () => import('./shared/header-pr/header-pr.module').then( m => m.HeaderPrPageModule) + }, + { + path: 'btn-seguinte', + loadChildren: () => import('./shared/btn-seguinte/btn-seguinte.module').then( m => m.BtnSeguintePageModule) + }, + { + path: 'btn-modal-dismiss', + loadChildren: () => import('./shared/btn-modal-dismiss/btn-modal-dismiss.module').then( m => m.BtnModalDismissPageModule) + }, + { + path: 'chat-popover', + loadChildren: () => import('./shared/popover/chat-popover/chat-popover.module').then( m => m.ChatPopoverPageModule) + }, /* { diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 2d4f89986..f721322e2 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -12,23 +12,32 @@ import { HttpClientModule } from '@angular/common/http'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; -import { SocketIoModule, SocketIoConfig } from 'ngx-socket-io'; -const config: SocketIoConfig = { url: 'http://localhost:3001', options: {} }; + +import { File } from '@ionic-native/File/ngx'; +import { WebView } from '@ionic-native/ionic-webview/ngx'; +import { FilePath } from '@ionic-native/file-path/ngx'; +import { Camera } from '@ionic-native/camera/ngx'; +import { IonicStorageModule } from '@ionic/storage'; @NgModule({ declarations: [AppComponent], entryComponents: [], imports: [BrowserModule, - IonicModule.forRoot(), + IonicModule.forRoot(), + IonicStorageModule.forRoot(), AppRoutingModule, HttpClientModule, - SocketIoModule.forRoot(config)], + ], providers: [ StatusBar, SplashScreen, HttpClientModule, { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, InAppBrowser, + Camera, + File, + WebView, + FilePath, ], bootstrap: [AppComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA] diff --git a/src/app/config/auth-constants.ts b/src/app/config/auth-constants.ts index 4cee9ccc0..5c19b3b24 100644 --- a/src/app/config/auth-constants.ts +++ b/src/app/config/auth-constants.ts @@ -1,6 +1,6 @@ /* This file stores all the keys */ export class AuthConnstants{ /* My reference key */ - public static readonly AUTH = 'userDataKey'; + public static readonly AUTH = 'user'; public static readonly PROFILE = 'profile'; } \ No newline at end of file diff --git a/src/app/guards/home.guard.ts b/src/app/guards/home.guard.ts index 3fcf2d2e8..133cd1b45 100644 --- a/src/app/guards/home.guard.ts +++ b/src/app/guards/home.guard.ts @@ -15,7 +15,7 @@ export class HomeGuard implements CanActivate { canActivate(): Promise{ return new Promise(resolve => { - this.storageService.get(AuthConnstants.AUTH).then(res => { + /* this.storageService.get(AuthConnstants.AUTH).then(res => { if(res){ resolve(true); } @@ -25,7 +25,7 @@ export class HomeGuard implements CanActivate { } }).catch(err =>{ resolve(false); - }) + }) */ }); } diff --git a/src/app/guards/index.guard.ts b/src/app/guards/index.guard.ts index 3689b53c2..e7423abbf 100644 --- a/src/app/guards/index.guard.ts +++ b/src/app/guards/index.guard.ts @@ -14,7 +14,7 @@ export class IndexGuard implements CanActivate { ){} canActivate(): Promise{ return new Promise(resolve => { - this.storageService.get(AuthConnstants.AUTH).then(res => { + /* this.storageService.get(AuthConnstants.AUTH).then(res => { if(res){ this.router.navigate(['home']); resolve(false); @@ -24,7 +24,7 @@ export class IndexGuard implements CanActivate { } }).catch(err =>{ resolve(false); - }) + }) */ }); } diff --git a/src/app/home/home-routing.module.ts b/src/app/home/home-routing.module.ts index 8635d5f26..ec29eb7f3 100644 --- a/src/app/home/home-routing.module.ts +++ b/src/app/home/home-routing.module.ts @@ -112,24 +112,6 @@ const routes: Routes = [ } ] }, - /* { - path: 'expediente', - children: [ - { - path:'', - loadChildren: ()=> import('../pages/gabinete-digital/expediente/expediente.module').then(m => m.ExpedientePageModule) - } - ] - }, */ - { - path: 'chat', - children: [ - { - path:'', - loadChildren: ()=> import('../pages/chat/chat.module').then(m => m.ChatPageModule) - } - ] - }, { path: 'publications', children: [ @@ -141,17 +123,32 @@ const routes: Routes = [ path:'view-publications', children: [ { - path:'', + path:':folderId', loadChildren: ()=> import('../pages/publications/view-publications/view-publications.module').then(m => m.ViewPublicationsPageModule) }, { path:'publication-detail', - loadChildren: ()=> import('../pages/publications/view-publications/publication-detail/publication-detail.module').then(m => m.PublicationDetailPageModule) + children: [ + { + path: ':id', + loadChildren: ()=> import('../pages/publications/view-publications/publication-detail/publication-detail.module').then(m => m.PublicationDetailPageModule) + }, + ] + }, ] }, ] }, + { + path: 'chat', + children: [ + { + path:'', + loadChildren: ()=> import('../pages/chat/chat.module').then(m => m.ChatPageModule) + } + ] + }, ] }, { diff --git a/src/app/home/home.page.html b/src/app/home/home.page.html index c098b7a80..91a901d91 100644 --- a/src/app/home/home.page.html +++ b/src/app/home/home.page.html @@ -1,20 +1,20 @@ - - + + {{totalEvent}} Início - - + + Agenda - - + + {{totalExpediente}} Gabinete Digital @@ -26,10 +26,10 @@ Pesquisa --> - + diff --git a/src/app/models/image.ts b/src/app/models/image.ts new file mode 100644 index 000000000..8b35bebf2 --- /dev/null +++ b/src/app/models/image.ts @@ -0,0 +1,7 @@ +import { title } from "process" + +export class Image { + title: string; + url: string; + format: string; +} \ No newline at end of file diff --git a/src/app/models/photo.ts b/src/app/models/photo.ts new file mode 100644 index 000000000..9db471185 --- /dev/null +++ b/src/app/models/photo.ts @@ -0,0 +1,5 @@ +export class Photo { + fileName: string; + webviewPath: string; + fileFormat: string; + } \ No newline at end of file diff --git a/src/app/models/publication.ts b/src/app/models/publication.ts new file mode 100644 index 000000000..873513361 --- /dev/null +++ b/src/app/models/publication.ts @@ -0,0 +1,13 @@ +/* import { Image } from './image'; */ + +export class Publication{ + DocumentId:string; + ProcessId:string; + Title: string; + Message: string; + DatePublication: Date; + /* image: Image; */ + OriginalFileName: string; + FileBase64:string; + FileExtension: string; +} \ No newline at end of file diff --git a/src/app/models/publicationfolder.ts b/src/app/models/publicationfolder.ts new file mode 100644 index 000000000..8d9a4ecb4 --- /dev/null +++ b/src/app/models/publicationfolder.ts @@ -0,0 +1,8 @@ +export class PublicationFolder { + ProcessId: number; + Description: string; + Detail: string; + DateBegin: string; + DateEnd: string; + ActionType: string; +} \ No newline at end of file diff --git a/src/app/pages/agenda/agenda.page.html b/src/app/pages/agenda/agenda.page.html index 094f3d9b8..39b78f4a1 100644 --- a/src/app/pages/agenda/agenda.page.html +++ b/src/app/pages/agenda/agenda.page.html @@ -1,6 +1,5 @@ - - - + +
-
+
+
+ +
+
@@ -38,6 +41,9 @@ Pessoal + + +
diff --git a/src/app/pages/agenda/agenda.page.scss b/src/app/pages/agenda/agenda.page.scss index 33f6194f9..5d120cae6 100644 --- a/src/app/pages/agenda/agenda.page.scss +++ b/src/app/pages/agenda/agenda.page.scss @@ -214,34 +214,49 @@ label{ font-size: 25px; margin: 0 5px 0 25px; padding: 0; - color:#ffffff; + /* color:#ffffff; */ + color:#000; float: left; } .div-top-header{ width: 400px; - height: 50px; - margin: 6px auto; + margin: 0 auto; background-color: #0782c9; overflow: auto; + padding-top: 15px; + border: 0!important; + + .div-search{ + font-size: 45px; + float: left; + margin: 0 0 0 10px + } + .div-logo{ + background: transparent; + width: 140px; + margin: 5px 0 0px 71px; + float: left; + } + .div-logo img{ + width: 100%; + } + .div-profile{ + font-size: 45px; + float: right; + margin-right: 10px; + } } -.div-search{ - font-size: 45px; - float: left; - margin: 0 0 0 10px -} -.div-logo{ - background: transparent; - width: 150px; - margin: 2.5px 0 2.5px 71px; - float: left; -} -.div-logo img{ - width: 100%; -} -.div-profile{ - font-size: 45px; - float: right; - margin-right: 10px; +.main-content{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:auto; + /* padding: 25px 20px 0 20px; */ + color: #000 !important; } diff --git a/src/app/pages/chat/chat-routing.module.ts b/src/app/pages/chat/chat-routing.module.ts index 7c66d7d68..566514901 100644 --- a/src/app/pages/chat/chat-routing.module.ts +++ b/src/app/pages/chat/chat-routing.module.ts @@ -14,6 +14,14 @@ const routes: Routes = [ { path: 'newchat', loadChildren: () => import('./newchat/newchat.module').then( m => m.NewchatPageModule) + }, + { + path: 'new-group', + loadChildren: () => import('./new-group/new-group.module').then( m => m.NewGroupPageModule) + }, + { + path: 'group-messages', + loadChildren: () => import('./group-messages/group-messages.module').then( m => m.GroupMessagesPageModule) } ]; diff --git a/src/app/pages/chat/chat.module.ts b/src/app/pages/chat/chat.module.ts index b15c82b94..d4f756504 100644 --- a/src/app/pages/chat/chat.module.ts +++ b/src/app/pages/chat/chat.module.ts @@ -1,4 +1,4 @@ -import { NgModule } from '@angular/core'; +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; @@ -7,14 +7,17 @@ import { IonicModule } from '@ionic/angular'; import { ChatPageRoutingModule } from './chat-routing.module'; import { ChatPage } from './chat.page'; +import { SharedModule } from 'src/app/shared/shared.module'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, - ChatPageRoutingModule + SharedModule, + ChatPageRoutingModule, ], - declarations: [ChatPage] + declarations: [ChatPage], + schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class ChatPageModule {} diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index c5228c5ae..849dd49ca 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -1,12 +1,25 @@ - - Chat - - + + + + +
+
+
+ Chat +
+
+ + + +
+
+
+
@@ -17,17 +30,36 @@ + + +
- + - +

{{user.name}}

Podemos marcar reunião para amanha

-
+
+
+
+ +
+
+
+
+ Secretário Assuntos Sociais +
+
15:00
+
+
+

Podemos marcar reunião para amanha

+
+
+
@@ -40,12 +72,29 @@

{{group.name}}

Grande momento.

- + +
+
+ +
+
+
+
+ Secretário para o sector Produtivo +
+
15:00
+
+
+

Podemos marcar reunião para amanha

+
+
+
- +
+ diff --git a/src/app/pages/chat/chat.page.scss b/src/app/pages/chat/chat.page.scss index e91f81b0e..ce22de9f4 100644 --- a/src/app/pages/chat/chat.page.scss +++ b/src/app/pages/chat/chat.page.scss @@ -1,23 +1,103 @@ -.iconschatnew-group{ - width: 30px; - height: 30px; - object-fit: contain; - margin: 0 5px 0 5px; + +.main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + } + .div-title{ + padding: 0!important; + float: left; + } + .title{ + font-size: 25px; + } + .div-icon{ + width: 112px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } } -.iconschatgroup-chat-40 { - width: 40px; - height: 40px; - object-fit: contain; +.main-content{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 15px 20px 0 20px; + + .iconschatnew-group{ + width: 30px; + height: 30px; + object-fit: contain; + margin: 0 5px 0 5px; + } + .iconschatnew-conversation{ + width: 30px; + height: 30px; + object-fit: contain; + margin: 0 5px 0 5px; + } } -.iconschatnew-conversation{ - width: 30px; - height: 30px; - object-fit: contain; - margin: 0 5px 0 5px; +.item{ + width: 100%; + border-bottom: 1px solid #ebebeb; + + .item-icon{ + width: 40px; + float: left; + + .icon{ + margin-top: 10px; + font-size: 40px; + } + } + .item-content{ + width: 317px; + margin: 0 auto; + float:right + } + .item-title-time{ + width: 100%; + overflow: auto; + margin-top: 10px; + } + .item-title{ + width: 80%; + float: left; + font-size: 15px; + color: #0d89d1; + } + .item-date{ + width: 20%; + float: right; + font-size: 13px; + color: #797979; + text-align: right; + } + .item-description{ + font-size: 13px; + color: #000; + } } -.iconschatchat-40 { - width: 40px; - height: 40px; - object-fit: contain; -} \ No newline at end of file diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 655cd54ae..faa8987b7 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -3,6 +3,9 @@ import { ModalController } from '@ionic/angular'; import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; import { ConversationPage } from './conversation/conversation.page'; +import { GroupMessagesPage } from './group-messages/group-messages.page'; +import { NewGroupPage } from './new-group/new-group.page'; +import { NewchatPage } from './newchat/newchat.page'; @Component({ selector: 'app-chat', @@ -10,6 +13,7 @@ import { ConversationPage } from './conversation/conversation.page'; styleUrls: ['./chat.page.scss'], }) export class ChatPage implements OnInit { + showLoader: boolean; loggedUser: any; /* Set segment variable */ segment:string; @@ -24,29 +28,35 @@ export class ChatPage implements OnInit { ngOnInit() { this.segment = "Contactos"; - this.authService.userData$.subscribe((res:any)=>{ - this.loggedUser=res; - }); + this.doRefresh(); + this.authService.getUserData(); + + } + onSegmentChange(){ + this.doRefresh(); + } + doRefresh(){ this.getGroups(); this.getConnectedUsers(); } - onSegmentChange(){ - this.RefreshEvents(); - } - RefreshEvents(){} getGroups(){ + this.showLoader = true; this.result = this.chatService.getAllPrivateGroups().subscribe((res:any)=>{ this.groupList = res.groups; - /* console.log(this.groupList); */ + this.showLoader = false; }); } + getConnectedUsers(){ + this.showLoader = true; this.result = this.chatService.getAllConnectedUsers().subscribe((res:any)=>{ this.userConnectedList = res.users; console.log(this.userConnectedList); + this.showLoader = false; }); } - async starConversation(selectedUser) { + + async startConversation(selectedUser) { const modal = await this.modalController.create({ component: ConversationPage, cssClass: 'conversation', @@ -58,4 +68,31 @@ export class ChatPage implements OnInit { await modal.present(); modal.onDidDismiss(); } + async selectContact(){ + const modal = await this.modalController.create({ + component: NewchatPage, + cssClass: 'newchat', + backdropDismiss: false, + }); + await modal.present(); + modal.onDidDismiss(); + } + async newGroup(){ + const modal = await this.modalController.create({ + component: NewGroupPage, + cssClass: 'new-group', + backdropDismiss: false, + }); + await modal.present(); + modal.onDidDismiss(); + } + async openGroupMessages(){ + const modal = await this.modalController.create({ + component: GroupMessagesPage, + cssClass: 'group-messages', + backdropDismiss: false, + }); + await modal.present(); + modal.onDidDismiss(); + } } diff --git a/src/app/pages/chat/group-messages/group-messages-routing.module.ts b/src/app/pages/chat/group-messages/group-messages-routing.module.ts new file mode 100644 index 000000000..5a4f0ae40 --- /dev/null +++ b/src/app/pages/chat/group-messages/group-messages-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { GroupMessagesPage } from './group-messages.page'; + +const routes: Routes = [ + { + path: '', + component: GroupMessagesPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class GroupMessagesPageRoutingModule {} diff --git a/src/app/pages/chat/group-messages/group-messages.module.ts b/src/app/pages/chat/group-messages/group-messages.module.ts new file mode 100644 index 000000000..204590b92 --- /dev/null +++ b/src/app/pages/chat/group-messages/group-messages.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { GroupMessagesPageRoutingModule } from './group-messages-routing.module'; + +import { GroupMessagesPage } from './group-messages.page'; +import { SharedModule } from 'src/app/shared/shared.module'; +import { PopoverModule } from 'src/app/shared/popover/chat-popover/popover.modules'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + PopoverModule, + GroupMessagesPageRoutingModule + ], + declarations: [GroupMessagesPage] +}) +export class GroupMessagesPageModule {} diff --git a/src/app/pages/chat/group-messages/group-messages.page.html b/src/app/pages/chat/group-messages/group-messages.page.html new file mode 100644 index 000000000..a999b764c --- /dev/null +++ b/src/app/pages/chat/group-messages/group-messages.page.html @@ -0,0 +1,46 @@ + + +
+
+ +
+ Grupo de Trabalho A +
+
+ +
+
+
+
+
+ + + +

HHHHH

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/pages/chat/group-messages/group-messages.page.scss b/src/app/pages/chat/group-messages/group-messages.page.scss new file mode 100644 index 000000000..f02b586d7 --- /dev/null +++ b/src/app/pages/chat/group-messages/group-messages.page.scss @@ -0,0 +1,53 @@ +.header-toolbar{ + --background:transparent; + --opacity: 1; + + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + .middle{ + padding: 0!important; + float: left; + width: 280px; + margin: 2.5px 0 0 5px; + } + .right{ + padding: 0!important; + float: right; + font-size: 25px; + color: #0782c9; + margin: 5px 0 0 0; + } + } + + .title{ + font-size: 25px; + } + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + } + } \ No newline at end of file diff --git a/src/app/pages/chat/group-messages/group-messages.page.spec.ts b/src/app/pages/chat/group-messages/group-messages.page.spec.ts new file mode 100644 index 000000000..62c380096 --- /dev/null +++ b/src/app/pages/chat/group-messages/group-messages.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { GroupMessagesPage } from './group-messages.page'; + +describe('GroupMessagesPage', () => { + let component: GroupMessagesPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GroupMessagesPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(GroupMessagesPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/chat/group-messages/group-messages.page.ts b/src/app/pages/chat/group-messages/group-messages.page.ts new file mode 100644 index 000000000..2cfa68310 --- /dev/null +++ b/src/app/pages/chat/group-messages/group-messages.page.ts @@ -0,0 +1,58 @@ +import { Component, OnInit } from '@angular/core'; +import { ActionSheetController, MenuController, PopoverController } from '@ionic/angular'; +import { ChatPopoverPage } from 'src/app/shared/popover/chat-popover/chat-popover.page'; + +@Component({ + selector: 'app-group-messages', + templateUrl: './group-messages.page.html', + styleUrls: ['./group-messages.page.scss'], +}) +export class GroupMessagesPage implements OnInit { + + message:any; + + constructor( + private menu: MenuController, + private actionSheetController: ActionSheetController, + public popoverController: PopoverController, + ) { } + + ngOnInit() { + } + + async actionSheet() { + const actionSheet = await this.actionSheetController.create({ + cssClass: 'my-custom-class', + buttons: [{ + text: 'Sair do grupo', + handler: () => { + console.log('Delete clicked'); + } + }, { + text: 'Alterar nome do grupo', + handler: () => { + console.log('Share clicked'); + } + }, { + text: 'Apagar o grupo', + handler: () => { + console.log('Play clicked'); + } + }, + ] + }); + await actionSheet.present(); + } + + async openOptions(ev: any) { + const popover = await this.popoverController.create({ + component: ChatPopoverPage, + cssClass: 'chat-popover', + event: ev, + translucent: true + }); + return await popover.present(); + } + + +} diff --git a/src/app/pages/chat/new-group/contacts/contacts-routing.module.ts b/src/app/pages/chat/new-group/contacts/contacts-routing.module.ts new file mode 100644 index 000000000..fb8c7a5ea --- /dev/null +++ b/src/app/pages/chat/new-group/contacts/contacts-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ContactsPage } from './contacts.page'; + +const routes: Routes = [ + { + path: '', + component: ContactsPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ContactsPageRoutingModule {} diff --git a/src/app/pages/chat/new-group/contacts/contacts.module.ts b/src/app/pages/chat/new-group/contacts/contacts.module.ts new file mode 100644 index 000000000..13749fd57 --- /dev/null +++ b/src/app/pages/chat/new-group/contacts/contacts.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { ContactsPageRoutingModule } from './contacts-routing.module'; + +import { ContactsPage } from './contacts.page'; +import { SharedModule } from 'src/app/shared/shared.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + ContactsPageRoutingModule + ], + declarations: [ContactsPage] +}) +export class ContactsPageModule {} diff --git a/src/app/pages/chat/new-group/contacts/contacts.page.html b/src/app/pages/chat/new-group/contacts/contacts.page.html new file mode 100644 index 000000000..ab73e8012 --- /dev/null +++ b/src/app/pages/chat/new-group/contacts/contacts.page.html @@ -0,0 +1,57 @@ + + +
+
+
+ +
+
+ Contactos +
+ +
+
+
+ + + +
+ + + + + + + +
+ + + +
+ +

Tiago Kayaya

+
+
+ +

Gilson Manuel

+ +
+
+ +
+
+ + diff --git a/src/app/pages/chat/new-group/contacts/contacts.page.scss b/src/app/pages/chat/new-group/contacts/contacts.page.scss new file mode 100644 index 000000000..a940a13d8 --- /dev/null +++ b/src/app/pages/chat/new-group/contacts/contacts.page.scss @@ -0,0 +1,102 @@ +ion-content{ + --background:transparent; +} +.header-toolbar{ + --background:transparent; + --opacity: 1; + + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + } + + .back-icon{ + width: 37px; + float: left; + font-size: 35px; + overflow: auto; + + } + .div-title{ + width: 221px; + padding: 0!important; + float: left; + margin: 2.5px 0 0 5px; + } + .title{ + font-size: 25px; + } + } +} + .main-content{ + width: 360px; + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 0 20px 0 20px; + + .item-checkbox{ + width: 100%; + margin: 15px 0 15px 0; + overflow: auto; + } + + .item-checkbox ion-checkbox{ + --border-color: #0d89d1; + --background-checked:#0d89d1; + float: left; + } + + .item-checkbox p{ + display: block; + margin: 0 !important; + width: 270px; + padding-left: 10px; + font-size: 15px; + color: #0d89d1; + float: left; + } + .item-checkbox ion-icon{ + float: left; + color:#99e47b; + } + } + .header-search{ + margin-top: 15px; + + ion-searchbar{ + width: 380px; + margin: 0px auto; + --border-radius: 5px; + --box-shadow: /* inset */ .5px .5px 5px #ebebeb; + overflow: auto; + --icon-color:#0d89d1; + } + } diff --git a/src/app/pages/chat/new-group/contacts/contacts.page.spec.ts b/src/app/pages/chat/new-group/contacts/contacts.page.spec.ts new file mode 100644 index 000000000..8f263232b --- /dev/null +++ b/src/app/pages/chat/new-group/contacts/contacts.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { ContactsPage } from './contacts.page'; + +describe('ContactsPage', () => { + let component: ContactsPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ContactsPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(ContactsPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/chat/new-group/contacts/contacts.page.ts b/src/app/pages/chat/new-group/contacts/contacts.page.ts new file mode 100644 index 000000000..82c3b001c --- /dev/null +++ b/src/app/pages/chat/new-group/contacts/contacts.page.ts @@ -0,0 +1,48 @@ +import { Component, OnInit } from '@angular/core'; +import { ModalController } from '@ionic/angular'; +import { GroupMessagesPage } from '../../group-messages/group-messages.page'; + +@Component({ + selector: 'app-contacts', + templateUrl: './contacts.page.html', + styleUrls: ['./contacts.page.scss'], +}) +export class ContactsPage implements OnInit { + showLoader: boolean; + + constructor( + private modalController: ModalController, + ) { + + } + + ngOnInit() { + + } + doRefresh(event){ + + } + close(){ + this.modalController.dismiss(); + } + onChange(event){ + + } + clicked(){ + console.log('clicked'); + + } + async groupMessages(){ + const modal = await this.modalController.create({ + component: GroupMessagesPage, + componentProps: {}, + cssClass: 'contacts', + backdropDismiss: false + }); + + await modal.present(); + + modal.onDidDismiss(); + } + +} diff --git a/src/app/pages/chat/new-group/group-chat/group-chat-routing.module.ts b/src/app/pages/chat/new-group/group-chat/group-chat-routing.module.ts new file mode 100644 index 000000000..d88c349d7 --- /dev/null +++ b/src/app/pages/chat/new-group/group-chat/group-chat-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { GroupChatPage } from './group-chat.page'; + +const routes: Routes = [ + { + path: '', + component: GroupChatPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class GroupChatPageRoutingModule {} diff --git a/src/app/pages/chat/new-group/group-chat/group-chat.module.ts b/src/app/pages/chat/new-group/group-chat/group-chat.module.ts new file mode 100644 index 000000000..a86458890 --- /dev/null +++ b/src/app/pages/chat/new-group/group-chat/group-chat.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { GroupChatPageRoutingModule } from './group-chat-routing.module'; + +import { GroupChatPage } from './group-chat.page'; +import { SharedModule } from 'src/app/shared/shared.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + GroupChatPageRoutingModule + ], + declarations: [GroupChatPage] +}) +export class GroupChatPageModule {} diff --git a/src/app/pages/chat/new-group/group-chat/group-chat.page.html b/src/app/pages/chat/new-group/group-chat/group-chat.page.html new file mode 100644 index 000000000..4dfad122a --- /dev/null +++ b/src/app/pages/chat/new-group/group-chat/group-chat.page.html @@ -0,0 +1,17 @@ + + +
+
+ +
+ Novo Grupo +
+ +
+
+
+
+ + + + diff --git a/src/app/pages/chat/new-group/group-chat/group-chat.page.scss b/src/app/pages/chat/new-group/group-chat/group-chat.page.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/pages/chat/new-group/group-chat/group-chat.page.spec.ts b/src/app/pages/chat/new-group/group-chat/group-chat.page.spec.ts new file mode 100644 index 000000000..641898e82 --- /dev/null +++ b/src/app/pages/chat/new-group/group-chat/group-chat.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { GroupChatPage } from './group-chat.page'; + +describe('GroupChatPage', () => { + let component: GroupChatPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GroupChatPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(GroupChatPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/chat/new-group/group-chat/group-chat.page.ts b/src/app/pages/chat/new-group/group-chat/group-chat.page.ts new file mode 100644 index 000000000..c34b5eec7 --- /dev/null +++ b/src/app/pages/chat/new-group/group-chat/group-chat.page.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-group-chat', + templateUrl: './group-chat.page.html', + styleUrls: ['./group-chat.page.scss'], +}) +export class GroupChatPage implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/pages/chat/new-group/new-group-routing.module.ts b/src/app/pages/chat/new-group/new-group-routing.module.ts new file mode 100644 index 000000000..42b9b7e24 --- /dev/null +++ b/src/app/pages/chat/new-group/new-group-routing.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { NewGroupPage } from './new-group.page'; + +const routes: Routes = [ + { + path: '', + component: NewGroupPage + }, + { + path: 'contacts', + loadChildren: () => import('./contacts/contacts.module').then( m => m.ContactsPageModule) + }, + { + path: 'group-chat', + loadChildren: () => import('./group-chat/group-chat.module').then( m => m.GroupChatPageModule) + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class NewGroupPageRoutingModule {} diff --git a/src/app/pages/chat/new-group/new-group.module.ts b/src/app/pages/chat/new-group/new-group.module.ts new file mode 100644 index 000000000..97006324c --- /dev/null +++ b/src/app/pages/chat/new-group/new-group.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { NewGroupPageRoutingModule } from './new-group-routing.module'; + +import { NewGroupPage } from './new-group.page'; +import { SharedModule } from 'src/app/shared/shared.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + NewGroupPageRoutingModule + ], + declarations: [NewGroupPage] +}) +export class NewGroupPageModule {} diff --git a/src/app/pages/chat/new-group/new-group.page.html b/src/app/pages/chat/new-group/new-group.page.html new file mode 100644 index 000000000..8b6d4b772 --- /dev/null +++ b/src/app/pages/chat/new-group/new-group.page.html @@ -0,0 +1,47 @@ + + +
+
+
+ +
+
+ Novo Grupo +
+ +
+
+
+
+ + +
+
+ +
+ + + Grupo Ultra-secreto + + +
+
+
+ +
+
+ + +
+
+
+ +
+
diff --git a/src/app/pages/chat/new-group/new-group.page.scss b/src/app/pages/chat/new-group/new-group.page.scss new file mode 100644 index 000000000..244fbb7bd --- /dev/null +++ b/src/app/pages/chat/new-group/new-group.page.scss @@ -0,0 +1,156 @@ +ion-content{ + --background:transparent; +} +.header-toolbar{ + --background:transparent; + --opacity: 1; +} +.div-top-header{ + width: 400px; + margin: 0 auto; + background-color: #0782c9; + overflow: auto; + padding-top: 15px; + border: 0!important; + + .div-search{ + font-size: 45px; + float: left; + margin: 0 0 0 10px + } + .div-logo{ + background: transparent; + width: 140px; + margin: 5px 0 0px 71px; + float: left; + } + .div-logo img{ + width: 100%; + } + .div-profile{ + font-size: 45px; + float: right; + margin-right: 10px; + } + + } + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + + .left{ + width: 37px; + float: left; + font-size: 35px; + overflow: auto; + } + .middle{ + padding: 0!important; + float: left; + width: 221px; + margin: 2.5px 0 0 5px; + } + .right{ + padding: 0!important; + float: right; + font-size: 15px; + color: #0782c9; + margin: 8px 0 0 5px; + } + } + + .title{ + font-size: 25px; + } + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + + + } + .main-content{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 15px 20px 0 20px; + + .item-container{ + width: 360px; + margin: 15px auto; + border: 1px solid #ebebeb; + border-radius: 5px; + padding-left: 10px; + } + .item-container-no-border{ + width: 360px; + margin: 15px auto; + border-radius: 5px; + padding-left: 10px; + } + .item-container-no-border ion-checkbox{ + margin-top: 10px; + } + + .item-container-no-border ion-label{ + padding-left: 10px; + font-size: 12px; + color: #000; + margin-top: 0 !important; + } + } + + .container-div{ + margin-bottom: 15px; + overflow: auto; + + .ion-item-class-2{ + width: 360px; + margin: 0px auto; + + .ion-icon-class{ + width: 45px; + height: 45px; + float: left; + padding: 10px; + font-size: 25px; + } + } + .ion-input-class{ + width: 315px; + height: 45px; + border: 1px solid #ebebeb; + border-radius: 5px; + padding-left: 5px; + padding-right: 10px; + float: left; + } + } + + + diff --git a/src/app/pages/chat/new-group/new-group.page.spec.ts b/src/app/pages/chat/new-group/new-group.page.spec.ts new file mode 100644 index 000000000..2cb166ecd --- /dev/null +++ b/src/app/pages/chat/new-group/new-group.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { NewGroupPage } from './new-group.page'; + +describe('NewGroupPage', () => { + let component: NewGroupPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NewGroupPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(NewGroupPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/chat/new-group/new-group.page.ts b/src/app/pages/chat/new-group/new-group.page.ts new file mode 100644 index 000000000..c284363ea --- /dev/null +++ b/src/app/pages/chat/new-group/new-group.page.ts @@ -0,0 +1,39 @@ +import { Component, OnInit } from '@angular/core'; +import { ModalController } from '@ionic/angular'; +import { ContactsPage } from './contacts/contacts.page'; + +@Component({ + selector: 'app-new-group', + templateUrl: './new-group.page.html', + styleUrls: ['./new-group.page.scss'], +}) +export class NewGroupPage implements OnInit { + showLoader: boolean; + + constructor( + private modalController: ModalController, + ) { + + } + + ngOnInit() { + + } + close(){ + this.modalController.dismiss(); + } + + async addContacts(){ + const modal = await this.modalController.create({ + component: ContactsPage, + componentProps: {}, + cssClass: 'contacts', + backdropDismiss: false + }); + + await modal.present(); + + modal.onDidDismiss(); + } + +} diff --git a/src/app/pages/chat/newchat/newchat.module.ts b/src/app/pages/chat/newchat/newchat.module.ts index ea115e8f4..26265c661 100644 --- a/src/app/pages/chat/newchat/newchat.module.ts +++ b/src/app/pages/chat/newchat/newchat.module.ts @@ -1,4 +1,4 @@ -import { NgModule } from '@angular/core'; +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; @@ -15,6 +15,7 @@ import { NewchatPage } from './newchat.page'; IonicModule, NewchatPageRoutingModule ], - declarations: [NewchatPage] + declarations: [NewchatPage], + schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class NewchatPageModule {} diff --git a/src/app/pages/chat/newchat/newchat.page.html b/src/app/pages/chat/newchat/newchat.page.html index 736a366e0..21194affc 100644 --- a/src/app/pages/chat/newchat/newchat.page.html +++ b/src/app/pages/chat/newchat/newchat.page.html @@ -1,20 +1,51 @@ - - - - - - Nova Conversa + + +
+
+
+ +
+
+ Nova Conversa +
+
+
- - - - - - {{user.name}} - - + + + + + +
+ + + + + + {{user.name}} + + + Tiago Kayaya + + + Gilson Manuel + + + + + {{item.$t}} + + + +
+ diff --git a/src/app/pages/chat/newchat/newchat.page.scss b/src/app/pages/chat/newchat/newchat.page.scss index 8759df7f9..11d380dea 100644 --- a/src/app/pages/chat/newchat/newchat.page.scss +++ b/src/app/pages/chat/newchat/newchat.page.scss @@ -1,3 +1,67 @@ +ion-content{ + --background:transparent; +} +.header-toolbar{ + --background:transparent; + --opacity: 1; + + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + } + + .back-icon{ + width: 37px; + float: left; + font-size: 35px; + overflow: auto; + + } + .div-title{ + width: 221px; + padding: 0!important; + float: left; + margin: 2.5px 0 0 5px; + } + .title{ + font-size: 25px; + } + } +} + .main-content{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 15px 20px 0 20px; + } ion-searchbar{ --border-radius: 20px; -} \ No newline at end of file +} diff --git a/src/app/pages/chat/newchat/newchat.page.ts b/src/app/pages/chat/newchat/newchat.page.ts index 277d2469c..153a298ca 100644 --- a/src/app/pages/chat/newchat/newchat.page.ts +++ b/src/app/pages/chat/newchat/newchat.page.ts @@ -11,12 +11,27 @@ import { ConversationPage } from '../conversation/conversation.page'; styleUrls: ['./newchat.page.scss'], }) export class NewchatPage implements OnInit { + showLoader: boolean; userList: any[]; + contacts:any; + currentPageClass = this; + triggerAlphaScrollChange: number = 0; + constructor( private chatService: ChatService, private modalController: ModalController, - private router:Router) { } + private router:Router) { + this.contacts = [ + { + 'name': 'Affenpinscher' + }, + { + 'name': 'Afghan Hound' + }, + // ... + ]; + } result:any; searchCountryString:any; @@ -25,6 +40,16 @@ export class NewchatPage implements OnInit { ngOnInit() { this.getUsers(); } + close(){ + this.modalController.dismiss(); + } + doRefresh(event) { + this.getUsers(); + + setTimeout(() => { + event.target.complete(); + }, 2000); + } getUsers(){ this.result = this.chatService.getAllUsers().subscribe((res:any)=>{ @@ -60,6 +85,14 @@ export class NewchatPage implements OnInit { await modal.present(); modal.onDidDismiss(); } + + + onItemClick(item) { + // This is an example of how you could manually trigger ngOnChange + // for the component. If you modify "listData" it won't perform + // an ngOnChange, you will have to trigger manually to refresh the component. + this.triggerAlphaScrollChange++; + } } diff --git a/src/app/pages/events/event-detail-modal/event-detail-modal.page.html b/src/app/pages/events/event-detail-modal/event-detail-modal.page.html index 52d1c6b52..c3179cca3 100644 --- a/src/app/pages/events/event-detail-modal/event-detail-modal.page.html +++ b/src/app/pages/events/event-detail-modal/event-detail-modal.page.html @@ -16,16 +16,16 @@
-
+ + //Error messages Campo obrigatório -
+ --> Descrição diff --git a/src/app/pages/events/events.page.html b/src/app/pages/events/events.page.html index 1da806677..4592c1116 100644 --- a/src/app/pages/events/events.page.html +++ b/src/app/pages/events/events.page.html @@ -1,5 +1,5 @@ - - + +
+
+
diff --git a/src/app/pages/events/events.page.scss b/src/app/pages/events/events.page.scss index e9b12be86..cae4ec29a 100644 --- a/src/app/pages/events/events.page.scss +++ b/src/app/pages/events/events.page.scss @@ -21,28 +21,31 @@ ion-toolbar{ } .div-top-header{ width: 400px; - margin: 6px auto; + margin: 0 auto; background-color: #0782c9; overflow: auto; - } - .div-search{ - font-size: 45px; - float: left; - margin: 0 0 0 10px - } - .div-logo{ - background: transparent; - width: 150px; - margin: 2.5px 0 2.5px 71px; - float: left; - } - .div-logo img{ - width: 100%; - } - .div-profile{ - font-size: 45px; - float: right; - margin-right: 10px; + padding-top: 15px; + border: 0!important; + + .div-search{ + font-size: 45px; + float: left; + margin: 0 0 0 10px + } + .div-logo{ + background: transparent; + width: 140px; + margin: 5px 0 0px 71px; + float: left; + } + .div-logo img{ + width: 100%; + } + .div-profile{ + font-size: 45px; + float: right; + margin-right: 10px; + } } .ion-text-header-top p{ --background: transparent; diff --git a/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.html b/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.html index 5df27b85f..0fdabeb78 100644 --- a/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.html +++ b/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.html @@ -50,7 +50,7 @@ - + +
-
- - Gabinete Digital - +
- - - - - - -
+
+
+
+ Gabinete Digital +
+
+ +
+ + + + + +
diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.scss b/src/app/pages/gabinete-digital/gabinete-digital.page.scss index babb917b2..f5c0b77b4 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.scss +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.scss @@ -1,11 +1,13 @@ ion-content{ - --padding-top:15px; - --padding-end:15px; - --padding-start:15px; - --padding-bottom:15px; - --background:#ecf8ff; + /* --padding-top:15px; */ +/* --padding-end:15px; + --padding-start:15px; */ + /* --padding-bottom:15px; */ + /* --background:#ecf8ff; */ + --background: transparent; } :host{ + background: #0782c9; ion-card-title{ text-align: center; } @@ -34,10 +36,66 @@ ion-label{ margin-bottom: 10px; border-radius: 5px; } +.div-top-header{ + width: 400px; + margin: 0 auto; + background-color: #0782c9; + overflow: auto; + padding-top: 15px; + border: 0!important; + + .div-search{ + font-size: 45px; + float: left; + margin: 0 0 0 10px + } + .div-logo{ + background: transparent; + width: 140px; + margin: 5px 0 0px 71px; + float: left; + } + .div-logo img{ + width: 100%; + } + .div-profile{ + font-size: 45px; + float: right; + margin-right: 10px; + } +} /* NEW CSS */ -.expedient-content{ - width: 100%; +.main-content{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background:#ecf8ff;; + overflow:auto; + padding: 25px 15px 15px 15px; +} +.title-content{ + width: 360px; + height: auto; + margin: 0 auto; + overflow: hidden; + padding: 0 !important; + background: transparent; +} +.div-title{ + padding: 0!important; + float: left; +} +.title{ + font-size: 25px; +} +.div-icon{ + width: 40px; + float: right; + font-size: 35px; overflow: auto; } .exp-card{ @@ -97,29 +155,3 @@ ion-label{ } -.div-top-header{ - width: 400px; - height: 50px; - margin: 6px auto; - background-color: #0782c9; - overflow: auto; -} -.div-search{ - font-size: 45px; - float: left; - margin: 0 0 0 10px -} -.div-logo{ - background: transparent; - width: 150px; - margin: 2.5px 0 2.5px 71px; - float: left; -} -.div-logo img{ - width: 100%; -} -.div-profile{ - font-size: 45px; - float: right; - margin-right: 10px; -} diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.ts b/src/app/pages/gabinete-digital/gabinete-digital.page.ts index 87f18cc7e..1356aa8c8 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.ts +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.ts @@ -38,6 +38,10 @@ export class GabineteDigitalPage implements OnInit { }); console.log(this.eventService.getAllPrEvents.length); */ +this.processesbackend.GetActionsList().subscribe(res=>{ + console.log(res); + +}); } LoadCounts() { diff --git a/src/app/pages/login/login.page.html b/src/app/pages/login/login.page.html index 496a9365c..e0ad1a2e6 100644 --- a/src/app/pages/login/login.page.html +++ b/src/app/pages/login/login.page.html @@ -17,3 +17,4 @@
+ diff --git a/src/app/pages/login/login.page.ts b/src/app/pages/login/login.page.ts index 26f43ebcb..0e019fd0a 100644 --- a/src/app/pages/login/login.page.ts +++ b/src/app/pages/login/login.page.ts @@ -7,6 +7,7 @@ import { environment } from 'src/environments/environment'; import { AlertController } from '@ionic/angular'; import { StorageService } from 'src/app/services/storage.service'; import { AuthConnstants } from 'src/app/config/auth-constants'; +import { PhotoService } from 'src/app/services/photo.service'; @Component({ @@ -29,6 +30,7 @@ export class LoginPage implements OnInit { private authService: AuthService, private storageService: StorageService, private toastService: ToastService, + private photoService: PhotoService, public alertController: AlertController) { } ngOnInit() { @@ -53,29 +55,17 @@ export class LoginPage implements OnInit { await alert.present(); } - loginAction(){ - - if(this.validateInput()){ - this.authService.loginChat2(this.postData).subscribe((res: any) =>{ - if(res.data){ - this.storageService.store(AuthConnstants.AUTH, res.data); - console.log('Log RockectChat OK'); - //console.log(res.data); - - } - else{ - console.log("Invalid username or password!"); - } - }, - (error:any) =>{ - console.log('Network error'); - }) - } - else{ - this.presentAlert('Por favor, insira o seu nome de utilizador e palavra-passe.'); - } + loginRocketChat(){ + this.authService.loginChat(this.postData).subscribe((res: any) =>{ + this.storageService.store(res); + console.log('Login to Rocket chat OK'); + },(error:any) =>{ + console.log('Network error'); + }); } + + async Login(){ try { //Go to our home in home/feed. @@ -88,12 +78,12 @@ export class LoginPage implements OnInit { BasicAuthKey: "" } if (await this.authService.login(this.userattempt)){ - this.loginAction(); + this.loginRocketChat(); console.log('Log Gabinete Digital OK'); this.router.navigate(['/home/events']); } else - { + { //this.toastService.presentToast('Não foi possível fazer login"'); this.presentAlert('O nome de utilizador e palavra-passe estão incorretas ou verifique a sua conexão com a internet e volte a tentar.'); } diff --git a/src/app/pages/publications/gallery/image-modal/image-modal.page.html b/src/app/pages/publications/gallery/image-modal/image-modal.page.html index 753e797db..0d42f744c 100644 --- a/src/app/pages/publications/gallery/image-modal/image-modal.page.html +++ b/src/app/pages/publications/gallery/image-modal/image-modal.page.html @@ -7,7 +7,7 @@
- +
diff --git a/src/app/pages/publications/gallery/image-modal/image-modal.page.ts b/src/app/pages/publications/gallery/image-modal/image-modal.page.ts index 2404d8fb5..2aebea320 100644 --- a/src/app/pages/publications/gallery/image-modal/image-modal.page.ts +++ b/src/app/pages/publications/gallery/image-modal/image-modal.page.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; -import { ModalController } from '@ionic/angular'; +import { ModalController, NavParams } from '@ionic/angular'; @Component({ selector: 'app-image-modal', @@ -7,8 +7,12 @@ import { ModalController } from '@ionic/angular'; styleUrls: ['./image-modal.page.scss'], }) export class ImageModalPage implements OnInit { + imageUrl:string; - constructor(private modalController: ModalController,) { } + constructor(private modalController: ModalController, + private navParams: NavParams) { + this.imageUrl = this.navParams.get('imageUrl'); + } ngOnInit() { } diff --git a/src/app/pages/publications/new-action/new-action.page.html b/src/app/pages/publications/new-action/new-action.page.html index 2ea7cd099..7ac37fae9 100644 --- a/src/app/pages/publications/new-action/new-action.page.html +++ b/src/app/pages/publications/new-action/new-action.page.html @@ -21,10 +21,21 @@
Nova Ação
+
+ + + Viagem + + + Evento + + +
+
- +
@@ -34,6 +45,26 @@
+ +
+
+
+ +
+
+
+ +
+
+
- +
diff --git a/src/app/pages/publications/new-action/new-action.page.scss b/src/app/pages/publications/new-action/new-action.page.scss index f7b025963..0afd7e02b 100644 --- a/src/app/pages/publications/new-action/new-action.page.scss +++ b/src/app/pages/publications/new-action/new-action.page.scss @@ -66,7 +66,7 @@ ion-toolbar{ padding: 0 !important; } .div-title{ - width: 270px; + width: 180px; /* padding: 0!important; */ float: left; margin: 2.5px 0 0 5px; @@ -102,6 +102,15 @@ font-size: 25px; padding: 10px; font-size: 25px; } + .ion-input-class{ + width: 315px; + height: auto; + border: 1px solid #ebebeb; + border-radius: 5px; + padding-left: 5px; + padding-right: 10px; + float: left; + } .ion-textarea-class{ width: 315px; height: auto; @@ -115,4 +124,14 @@ font-size: 25px; border: 1px solid #ebebeb; border-radius: 5px; overflow: auto; + } + .actionType{ + width: 170px; + padding: 10px; + float: right; + overflow: auto; + border-radius: 30px; + } + .ion-segment{ + --background: #0782c9; } \ No newline at end of file diff --git a/src/app/pages/publications/new-action/new-action.page.ts b/src/app/pages/publications/new-action/new-action.page.ts index 04e3183c4..fb9917823 100644 --- a/src/app/pages/publications/new-action/new-action.page.ts +++ b/src/app/pages/publications/new-action/new-action.page.ts @@ -1,5 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { ModalController } from '@ionic/angular'; +import { PublicationFolder } from 'src/app/models/publicationfolder'; +import { PublicationsService } from 'src/app/services/publications.service'; @Component({ selector: 'app-new-action', @@ -8,14 +10,37 @@ import { ModalController } from '@ionic/angular'; }) export class NewActionPage implements OnInit { + folder: PublicationFolder; + segment:string; + constructor( private modalController: ModalController, - ) { } + private publication: PublicationsService + ) { + this.folder = new PublicationFolder(); + } ngOnInit() { + this.segment = "Viagem"; } + + segmentChanged(ev: any) { + console.log(ev.detail.value); + } + save(){ - console.log('Salvar...'); + this.folder = { + ProcessId: null, + Description: this.folder.Description, + Detail: this.folder.Detail, + DateBegin: this.folder.DateBegin, + DateEnd: this.folder.DateEnd, + ActionType: this.segment, + } + console.log(this.folder); + + this.publication.CreatePublicationFolder(this.folder); + this.close(); } close(){ this.modalController.dismiss(); diff --git a/src/app/pages/publications/new-publication/new-publication.page.html b/src/app/pages/publications/new-publication/new-publication.page.html index 9dfd3f455..5df45dc6c 100644 --- a/src/app/pages/publications/new-publication/new-publication.page.html +++ b/src/app/pages/publications/new-publication/new-publication.page.html @@ -23,7 +23,7 @@
- +
@@ -32,24 +32,44 @@
- +
+
+ Fotografia Anexada + + + + + + +

{{capturedImageTitle}}

+ +
+ +
+ + +
- +
Tirar Fotografia -
-
+
+
- +
@@ -59,8 +79,10 @@
+ + @@ -70,7 +92,7 @@ - Criar + Gravar diff --git a/src/app/pages/publications/new-publication/new-publication.page.scss b/src/app/pages/publications/new-publication/new-publication.page.scss index 29a45dc37..b4b9d9880 100644 --- a/src/app/pages/publications/new-publication/new-publication.page.scss +++ b/src/app/pages/publications/new-publication/new-publication.page.scss @@ -128,4 +128,14 @@ font-size: 25px; width: 37px; font-size: 35px; float: left; + } + .attached-title{ + font-family: Roboto; + font-size: 15px; + font-weight: bold; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: normal; + color: #000; } \ No newline at end of file diff --git a/src/app/pages/publications/new-publication/new-publication.page.ts b/src/app/pages/publications/new-publication/new-publication.page.ts index 85223f300..5d912d9dc 100644 --- a/src/app/pages/publications/new-publication/new-publication.page.ts +++ b/src/app/pages/publications/new-publication/new-publication.page.ts @@ -1,45 +1,187 @@ import { Component, OnInit } from '@angular/core'; -import { ModalController, NavParams } from '@ionic/angular'; +import { AlertController, ModalController, NavParams } from '@ionic/angular'; import { GalleryPage } from '../gallery/gallery.page'; +/* import {Plugins, CameraResultType, CameraSource} from '@capacitor/core'; */ +import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'; +import { PublicationsService } from 'src/app/services/publications.service'; +import { Publication } from 'src/app/models/publication'; +import { Image } from 'src/app/models/image'; +import { ThrowStmt } from '@angular/compiler'; +import { PhotoService } from 'src/app/services/photo.service'; +import { AlertService } from 'src/app/services/alert.service'; + +/* const { Camera } = Plugins; */ + +import { Camera, CameraOptions } from '@ionic-native/camera/ngx'; +import { PublicationFolder } from 'src/app/models/publicationfolder'; +import { ViewPublicationsPage } from '../view-publications/view-publications.page'; +import { LoadingService } from 'src/app/services/loading.service'; + @Component({ selector: 'app-new-publication', templateUrl: './new-publication.page.html', styleUrls: ['./new-publication.page.scss'], }) export class NewPublicationPage implements OnInit { + showLoader: boolean; + publication: Publication; + pub: Publication = new Publication(); + folderId: string; + image: Image = new Image(); + publicationType:string; publicationTitle:string; + imgUrl:any; + + Defaultimage:any = ''; + + + photo: SafeResourceUrl; + + guestPicture:any; + + capturedImage:any; + capturedImageTitle:any; + + constructor( private modalController: ModalController, + public photoService: PhotoService, private navParams: NavParams, + private publications: PublicationsService, + private camera: Camera, ) { this.publicationType = this.navParams.get('publicationType'); + this.folderId = this.navParams.get('folderId'); this.publicationTitle = 'Nova Publicação'; } ngOnInit() { this.setTitle(); + this.clear(); + this.takePicture(); } - save(){ - - } - close(){ - this.modalController.dismiss(); - } - setTitle(){ - if(this.publicationType == '1'){ - this.publicationTitle = 'Nova Publicação Rápida' + takePicture(){ + const options: CameraOptions = { + quality: 100, + destinationType: this.camera.DestinationType.DATA_URL, + encodingType: this.camera.EncodingType.JPEG, + mediaType: this.camera.MediaType.PICTURE, + targetWidth: 720, + targetHeight: 720, } - else if(this.publicationType == '2'){ - this.publicationTitle = 'Nova Publicação' + + this.camera.getPicture(options).then((imageData) => { + // imageData is either a base64 encoded string or a file URI + // If it's base64 (DATA_URL): + let base64Image = 'data:image/jpeg;base64,' + imageData; + this.capturedImage = imageData; + this.capturedImageTitle = new Date().getTime() + '.jpeg'; + }, (err) => { + console.log(err); + }); + } + + getPicture(){ + const options: CameraOptions = { + quality: 100, + sourceType: this.camera.PictureSourceType.PHOTOLIBRARY, + destinationType: this.camera.DestinationType.DATA_URL, + encodingType: this.camera.EncodingType.JPEG, + mediaType: this.camera.MediaType.PICTURE, + targetWidth: 720, + targetHeight: 720, } - else if(this.publicationType == '3'){ - this.publicationTitle = 'Editar Publicação' + this.camera.getPicture(options).then((imageData) => { + // imageData is either a base64 encoded string or a file URI + // If it's base64 (DATA_URL): + let base64Image = 'data:image/jpeg;base64,' + imageData; + this.capturedImage = imageData; + this.capturedImageTitle = new Date().getTime() + '.jpeg'; + }, (err) => { + console.log(err); + }); + } + + async save(){ + if(this.publicationType == '3'){ + if(this.capturedImage != ''){ + this.publication = { + DocumentId:this.publication.DocumentId, + ProcessId:this.publication.ProcessId, + Title: this.pub.Title, + Message: this.pub.Message, + DatePublication: this.publication.DatePublication, + OriginalFileName: this.capturedImageTitle, + FileBase64: this.capturedImage, + FileExtension: 'jpg', + } + console.log('Edit change image'); + console.log(this.publication); + this.publications.UpdatePublication(this.publication.ProcessId, this.publication); + this.close(); + } + else{ + this.publication = { + DocumentId:this.publication.DocumentId, + ProcessId:this.publication.ProcessId, + Title: this.pub.Title, + Message: this.pub.Message, + DatePublication: this.publication.DatePublication, + OriginalFileName: '', + FileBase64: this.publication.FileBase64, + FileExtension: 'jpg', + } + console.log('Edit - keep image'); + console.log(this.publication); + this.publications.UpdatePublication(this.publication.ProcessId, this.publication); + this.close(); + } + } + else{ + + this.publication = { + DocumentId:null, + ProcessId:this.folderId, + Title: this.pub.Title, + Message: this.pub.Message, + DatePublication: new Date(), + OriginalFileName: this.capturedImageTitle, + FileBase64: this.capturedImage, + FileExtension: 'jpg', + } + + console.log('Create'); + console.log(this.publication); + this.publications.CreatePublication(this.folderId, this.publication); + this.close(); } } - async openGallery() { + + close(){ + this.modalController.dismiss().then(()=>{ + this.showLoader=true; + }); + } + clear(){ + this.capturedImage = ''; + } + setTitle(){ + if(this.publicationType == '1'){ + this.publicationTitle = 'Nova Publicação Rápida'; + } + else if(this.publicationType == '2'){ + this.publicationTitle = 'Nova Publicação'; + } + else if(this.publicationType == '3'){ + this.publicationTitle = 'Editar Publicação'; + this.pub = this.navParams.get('publication'); + } + } + + /* async openGallery() { const modal = await this.modalController.create({ component: GalleryPage, componentProps:{ @@ -49,6 +191,18 @@ export class NewPublicationPage implements OnInit { }); await modal.present(); modal.onDidDismiss(); - } + } */ + + /* async takePicture(){ + const image = await Plugins.Camera.getPhoto({ + quality: 100, + allowEditing: false, + resultType: CameraResultType.DataUrl, + source: CameraSource.Camera + }); + console.log(image); + + this.photo = this.sanitizer.bypassSecurityTrustResourceUrl(image && (image.dataUrl)); + } */ } diff --git a/src/app/pages/publications/publications.module.ts b/src/app/pages/publications/publications.module.ts index 870197516..65ba82f1c 100644 --- a/src/app/pages/publications/publications.module.ts +++ b/src/app/pages/publications/publications.module.ts @@ -7,12 +7,14 @@ import { IonicModule } from '@ionic/angular'; import { PublicationsPageRoutingModule } from './publications-routing.module'; import { PublicationsPage } from './publications.page'; +import { SharedModule } from 'src/app/shared/shared.module'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, + SharedModule, PublicationsPageRoutingModule ], declarations: [PublicationsPage] diff --git a/src/app/pages/publications/publications.page.html b/src/app/pages/publications/publications.page.html index 12fdb3bb6..a40b1b5ce 100644 --- a/src/app/pages/publications/publications.page.html +++ b/src/app/pages/publications/publications.page.html @@ -1,5 +1,8 @@ - - + + + + + + +
+
+
+ Ações Presidenciais +
+
+ +
+ +
+
+
+ + + + +
-
-
- Ações Presidenciais -
-
- -
-
-
+
- -

Viagem a Maputo

-

Investida de Filipe Nyusi

+ +

{{viagem.Description}}

+

{{viagem.Detail}}

-
+
- -

Decreto de Cadastro Social Único

+ +

{{evento.Description}}

diff --git a/src/app/pages/publications/publications.page.scss b/src/app/pages/publications/publications.page.scss index 0d1dc5403..a93051499 100644 --- a/src/app/pages/publications/publications.page.scss +++ b/src/app/pages/publications/publications.page.scss @@ -5,8 +5,11 @@ ion-content{ --background: transparent; } ion-toolbar{ - background: transparent; border-width: 0 !important; + --padding-top: 0px !important; + --padding-start: 0px !important; + --padding-right: 0px !important; + --padding-end: 0px !important; } .div-top-header{ width: 400px; @@ -15,65 +18,84 @@ ion-toolbar{ overflow: auto; padding-top: 15px; border: 0!important; + + .div-search{ + font-size: 45px; + float: left; + margin: 0 0 0 10px + } + .div-logo{ + background: transparent; + width: 140px; + margin: 5px 0 0px 71px; + float: left; + } + .div-logo img{ + width: 100%; + } + .div-profile{ + font-size: 45px; + float: right; + margin-right: 10px; + } } - .div-search{ - font-size: 45px; - float: left; - margin: 0 0 0 10px - } - .div-logo{ - background: transparent; - width: 140px; - margin: 5px 0 0px 71px; - float: left; - } - .div-logo img{ - width: 100%; - } - .div-profile{ - font-size: 45px; - float: right; - margin-right: 10px; - } + ion-content{ --background:#0782c9; --border: none; } + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + } + .div-title{ + padding: 0!important; + float: left; + } + .title{ + font-size: 25px; + } + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + } .main-content{ width: 100%; /* 400px */ height: 100%; font-family: Roboto; margin: 0 auto; - border-top-left-radius: 25px; - border-top-right-radius: 25px; background-color: #fff; overflow:auto; - padding: 25px 20px 0 20px; - } - .title-content{ - width: 360px; - margin: 0px auto; - overflow: auto; - padding: 0 !important; - } - .div-title{ - padding: 0!important; - float: left; - } - .title{ - font-size: 25px; - } - .div-icon{ - width: 40px; - float: right; - font-size: 35px; - overflow: auto; + padding: 15px 20px 0 20px; } .item{ width: 360px; padding: 0 0px 0 0px; overflow: auto; - margin: 0 auto; + margin: 0px auto; } .item-icon{ margin-top: 28px; diff --git a/src/app/pages/publications/publications.page.ts b/src/app/pages/publications/publications.page.ts index 64909f66e..2881b7fe4 100644 --- a/src/app/pages/publications/publications.page.ts +++ b/src/app/pages/publications/publications.page.ts @@ -1,6 +1,16 @@ import { Component, OnInit } from '@angular/core'; +import { Router, NavigationEnd } from '@angular/router'; import { ModalController } from '@ionic/angular'; +import { PublicationFolder } from 'src/app/models/publicationfolder'; +import { ProcessesService } from 'src/app/services/processes.service'; +import { PublicationsService } from 'src/app/services/publications.service'; import { NewActionPage } from './new-action/new-action.page'; +import { ViewPublicationsPage } from './view-publications/view-publications.page'; + +import { Animation, AnimationController } from '@ionic/angular'; +import { LoadingController } from '@ionic/angular'; +import { LoadingService } from 'src/app/services/loading.service'; + @Component({ selector: 'app-publications', @@ -8,10 +18,74 @@ import { NewActionPage } from './new-action/new-action.page'; styleUrls: ['./publications.page.scss'], }) export class PublicationsPage implements OnInit { + showLoader: boolean; + publicationFolder: PublicationFolder; - constructor(private modalController: ModalController,) { } + publicationFolderList: PublicationFolder[]; + publicationsEventFolderList: PublicationFolder[]; + publicationsTravelFolderList: PublicationFolder[]; + + theDate:any; + theEndDate:any; + customDate:any; + months: string[]; + days:string[]; + + + + constructor( + private router: Router, + private modalController: ModalController, + private animationController: AnimationController, + private loading: LoadingService, + private publications: PublicationsService, + ) { + this.months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]; + this.days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"]; + } ngOnInit() { + this.router.events.forEach((event) => { + if(event instanceof NavigationEnd && event.url == this.router.url) { + this.getActions(); + } + }); + } + doRefresh(event) { + this.getActions(); + + setTimeout(() => { + event.target.complete(); + }, 2000); + } + + getActions(){ + this.showLoader = true; + this.publications.GetPublicationFolderList().subscribe(res=>{ + this.publicationFolderList = res; + console.log(res); + this.publicationsEventFolderList = new Array(); + this.publicationsTravelFolderList = new Array(); + res.forEach(data => { + this.theDate = new Date(data.DateBegin); + this.theEndDate = new Date(data.DateEnd); + let folder: PublicationFolder = { + ProcessId: data.ProcessId, + Description: data.Description, + Detail: data.Detail, + DateBegin: this.theDate.getDate() +" de " + ( this.months[this.theDate.getMonth()])+" de " +this.theDate.getFullYear(), + DateEnd: this.theEndDate.getDate() +" de " + ( this.months[this.theEndDate.getMonth()])+" de " +this.theEndDate.getFullYear(), + ActionType: data.ActionType, + } + if(data.ActionType == "Evento"){ + this.publicationsEventFolderList.push(folder); + } + else{ + this.publicationsTravelFolderList.push(folder); + } + }); + + }); } async AddPublicationFolder(item:any) { @@ -24,6 +98,50 @@ export class PublicationsPage implements OnInit { backdropDismiss: false }); await modal.present(); + modal.onDidDismiss().then(()=>{ + this.doRefresh(event); + }); + } + + async viewPublications(folder: PublicationFolder) { + + /* const enterAnimation = (baseEl: any) => { + const backdropAnimation = this.animationController.create() + .addElement(baseEl.querySelector('ion-backdrop')!) + .fromTo('opacity', '0.01', 'var(--backdrop-opacity)'); + + const wrapperAnimation = this.animationController.create() + .addElement(baseEl.querySelector('.modal-wrapper')!) + .keyframes([ + { offset: 0, opacity: '0', transform: 'scale(0)' }, + { offset: 1, opacity: '0.99', transform: 'scale(1)' } + ]); + + return this.animationController.create() + .addElement(baseEl) + .easing('ease-out') + .duration(500) + .addAnimation([backdropAnimation, wrapperAnimation]); + } + + const leaveAnimation = (baseEl: any) => { + return enterAnimation(baseEl).direction('reverse'); + } + */ + + + /* let item = this.publicationFolderList; */ + const modal = await this.modalController.create({ + component: ViewPublicationsPage, + /* enterAnimation, + leaveAnimation, */ + componentProps:{ + item:folder, + }, + cssClass: 'new-action', + backdropDismiss: false + }); + await modal.present(); modal.onDidDismiss(); } diff --git a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html index a2790fa5d..0d08d53cd 100644 --- a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html +++ b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html @@ -17,24 +17,55 @@
+
- +
- Aterragem em Maputo -

Há 1h atrás

+ {{publication.Title}} +

{{publication.DatePublication | date: 'dd-MM-yy | h:mm'}}

+ + + + +
-
- image +
+ image +
+
+ image
-

Presidente João Lourenço chega a Maputo para investidura de Filipe Nyusi como presidente de Moçambique

+

{{publication.Message}}

-
+
+
+
+
+ +
+
+ +

+
+
+
+
+ image +
+
+

+

+
+
+ +
+
diff --git a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.scss b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.scss index 8ebe3479b..8de88c1b0 100644 --- a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.scss +++ b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.scss @@ -56,7 +56,7 @@ background: #ffffff; height: 100%; box-shadow: 0px 0px 18px rgba(0, 0, 0, 0.6); - padding: 25px 20px 0 20px; + padding: 25px 0px 0 0px; overflow: auto; } .title-content{ @@ -79,4 +79,21 @@ } .title{ font-size: 25px; - } \ No newline at end of file + } + .post-img{ + width: 100%; + height: 400px; + margin: 0 auto; + border-radius: 0px!important; + overflow: hidden; +} +.post-img img{ + width: 100%; + height: 100%; + object-fit: cover; +} +.post-description{ + width: 360px; + margin: 0 auto; + margin-bottom: 35px; +} \ No newline at end of file diff --git a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.ts b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.ts index f0a1536e4..8817801af 100644 --- a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.ts +++ b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.ts @@ -1,5 +1,7 @@ import { Component, OnInit } from '@angular/core'; -import { ModalController } from '@ionic/angular'; +import { ModalController, NavParams } from '@ionic/angular'; +import { Publication } from 'src/app/models/publication'; +import { PublicationsService } from 'src/app/services/publications.service'; import { ImageModalPage } from '../../gallery/image-modal/image-modal.page'; import { NewPublicationPage } from '../../new-publication/new-publication.page'; @@ -9,33 +11,94 @@ import { NewPublicationPage } from '../../new-publication/new-publication.page'; styleUrls: ['./publication-detail.page.scss'], }) export class PublicationDetailPage implements OnInit { + showLoader: boolean; + publicationId: string; + folderId: string; + publication: Publication; - constructor(private modalController: ModalController,) { } + constructor( + private modalController: ModalController, + private navParams:NavParams, + private publications:PublicationsService, + ) { + this.publicationId = this.navParams.get('publicationId'); + this.folderId = this.navParams.get('folderIdId'); + this.publication = { + DocumentId: '', + ProcessId:'', + Title:'', + Message: '', + /* image: null, */ + DatePublication: null, + FileBase64: '', + OriginalFileName: '', + FileExtension: '', + }; + } ngOnInit() { + /* console.log(this.publication.FileBase64); */ + this.getPublicationDetail(); + } + + getPublicationDetail(){ + this.showLoader = true; + console.log(this.publicationId); + console.log(this.folderId); + this.publications.GetPublicationById(this.folderId,this.publicationId).subscribe(res=>{ + console.log(res); + this.publication = { + DocumentId: res.DocumentId, + ProcessId:res.ProcessId, + Title:res.Title, + Message: res.Message, + DatePublication: res.DatePublication, + FileBase64: "data:image/jpg;base64," + res.FileBase64, + OriginalFileName: '', + FileExtension: '', + } + this.showLoader = false; + }); + } + doRefresh(event){ + + } + + close(){ + this.modalController.dismiss(); } deletePost(){ - + this.publications.DeletePublication(this.folderId, this.publicationId).then(res =>{ + console.log(res); + + }); + this.close(); } async editPost(publicationType:any) { + console.log(this.publication); + const modal = await this.modalController.create({ component: NewPublicationPage, componentProps:{ publicationType: publicationType, + publication: this.publication, }, cssClass: 'new-publication', backdropDismiss: false }); await modal.present(); - modal.onDidDismiss(); + modal.onDidDismiss().then(()=>{ + this.getPublicationDetail(); + }); } - openPreview(){ + openPreview(imageUrl:string){ this.modalController.create({ component: ImageModalPage, componentProps: { + imageUrl:imageUrl, } }).then(modal => modal.present()); } diff --git a/src/app/pages/publications/view-publications/view-publications.page.html b/src/app/pages/publications/view-publications/view-publications.page.html index 7320d733f..4833056c1 100644 --- a/src/app/pages/publications/view-publications/view-publications.page.html +++ b/src/app/pages/publications/view-publications/view-publications.page.html @@ -1,5 +1,5 @@ - +
-
- + + +
-
+
- +
- Viagem a Maputo -

Investida de Filipe Nyusi

- + {{item.Description}} +

{{item.Detail}}

+
- - + +
+
+ + + + + + + + + +
+
-
- image + *ngFor="let publication of publicationList" + (click)="viewPublicationDetail(publication.ProcessId,publication.DocumentId)"> +
+ image +
+
+ image
- Ateragem em Maputo + {{publication.Title}}
-
1h
+
{{publication.DatePublication | date: 'dd-MM-yy | h:mm'}}
-

Presidente João Lourenço chega a Maputo para investidura de Filipe Nyusi como presidente de Moçambique

+

{{publication.Message}}

-
+
- image + image
- Tomada de Posse +
-
1h
+
-

Filipe Nyusi, que toma posse para um segundo mandato como presidente de Moçambique, foi releito a 15 de Outubro, com 73% do votos, uma maioria qualificada à Frente de Libertação de Moçambique (FRELIMO) na Assembleia da República

+

+

+
+
+
+ image +
+
+
+
+ +
+
+
+
+

+

diff --git a/src/app/pages/publications/view-publications/view-publications.page.scss b/src/app/pages/publications/view-publications/view-publications.page.scss index d1fe7294a..b10468d37 100644 --- a/src/app/pages/publications/view-publications/view-publications.page.scss +++ b/src/app/pages/publications/view-publications/view-publications.page.scss @@ -1,5 +1,6 @@ :host{ - background: #0782c9; + background: transparent; + padding: 0!important; } ion-content{ --background: transparent; @@ -7,8 +8,13 @@ --border-radius: 30px; } ion-toolbar{ - --background:#0782c9; - border-width: 0 !important; + --border-width: 0 !important; + --border-style: none; + --padding-top: 0px !important; + --padding-start: 0px !important; + --padding-right: 0px !important; + --padding-end: 0px !important; + } .div-top-header{ @@ -38,6 +44,27 @@ float: right; margin-right: 10px; } + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 25px 20px 0px 20px; + color:#000; + + } + .main-content{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 15px 20px 0 20px; + } .content-top{ width: 344px; background: #f3f2f2; @@ -45,6 +72,7 @@ margin: 0 auto; border-top-left-radius: 25px; border-top-right-radius: 25px; + transform: translate3d(0, 1px, 0); } .content-container{ width: 100%; @@ -54,7 +82,7 @@ background: #ffffff; height: 100%; box-shadow: 0px 0px 18px rgba(0, 0, 0, 0.6); - padding: 25px 20px 0 20px; + padding: 25px 0px 0 0px; overflow: auto; } .title-content{ @@ -63,6 +91,7 @@ overflow: auto; padding: 0 !important; } + .back-icon{ width: 37px; float: left; @@ -88,6 +117,7 @@ .actions-icon ion-icon{ margin-left: 10px; font-size: 35px; + float: right; } .item-content-date{ color: #797979; @@ -98,39 +128,47 @@ font-size: 13px; } .post-item{ - width: 360px; + width: 100%; overflow: auto; margin: 0 auto; + border-radius: 0px; + padding: 0!important; } .post-img{ width: 100%; + height: 400px; margin: 0 auto; + border-radius: 0px!important; + overflow: hidden; } .post-img img{ width: 100%; height: 100%; + object-fit: cover; } .post-content{ width: 360px; margin: 0 auto; + margin-bottom: 35px; } .post-title-time{ width: 100%; overflow: auto; - margin-top: 5px; + margin-top: 10px; } .post-title{ - width: 80%; + width: 60%; float: left; font-size: 15px; color: #0d89d1; } - .post-data{ - width: 20%; - float: left; - font-size: 13px; - color: #797979; - } +.post-data{ + width: 40%; + float: left; + font-size: 13px; + color: #797979; + text-align: right; +} .post-description{ font-size: 13px; color: #000; diff --git a/src/app/pages/publications/view-publications/view-publications.page.ts b/src/app/pages/publications/view-publications/view-publications.page.ts index be31073ac..522d3baa4 100644 --- a/src/app/pages/publications/view-publications/view-publications.page.ts +++ b/src/app/pages/publications/view-publications/view-publications.page.ts @@ -1,6 +1,11 @@ import { Component, OnInit } from '@angular/core'; -import { ModalController } from '@ionic/angular'; +import { ModalController, NavParams } from '@ionic/angular'; +import { Publication } from 'src/app/models/publication'; +import { PublicationFolder } from 'src/app/models/publicationfolder'; +import { LoadingService } from 'src/app/services/loading.service'; +import { PublicationsService } from 'src/app/services/publications.service'; import { NewPublicationPage } from '../new-publication/new-publication.page'; +import { PublicationDetailPage } from './publication-detail/publication-detail.page'; @Component({ selector: 'app-view-publications', @@ -8,23 +13,95 @@ import { NewPublicationPage } from '../new-publication/new-publication.page'; styleUrls: ['./view-publications.page.scss'], }) export class ViewPublicationsPage implements OnInit { + showLoader: boolean; + loading: any; - constructor(private modalController: ModalController,) { } + publicationList: Publication[]; + item: PublicationFolder; + + constructor( + private loadingController: LoadingService, + private modalController: ModalController, + private publications: PublicationsService, + private navParams: NavParams, + ) { + this.item = this.navParams.get('item'); + } ngOnInit() { + this.getPublications() + } + doRefresh(event) { + this.getPublications(); + + setTimeout(() => { + /* event.target.complete(); */ + }, 2000); + } + close(){ + this.modalController.dismiss(); + } + getPublications(){ + this.showLoader = true; + + this.publications.GetPublications(this.item.ProcessId).subscribe(res=>{ + this.publicationList = new Array(); + console.log(res); + res.forEach(element => { + let itemImage = { + title: 'Title', + url: "data:image/jpg;base64," + element.FileBase64, + format: 'png' + } + let item: Publication = { + "DocumentId":element.DocumentId, + "ProcessId":element.ProcessId, + "Title":element.Title, + "Message": element.Message, + "DatePublication": element.DatePublication, + /* image:itemImage, */ + "FileBase64": "data:image/jpg;base64," + element.FileBase64, + "OriginalFileName": '', + "FileExtension": '', + } + this.publicationList.push(item); + }); + console.log(this.publicationList); + this.showLoader = false; + }); + } - async AddPublication(publicationType:any) { + async AddPublication(publicationType:any, folderId:string) { const modal = await this.modalController.create({ component: NewPublicationPage, componentProps:{ publicationType: publicationType, + folderId: folderId, }, cssClass: 'new-publication', backdropDismiss: false }); await modal.present(); - modal.onDidDismiss(); + modal.onDidDismiss().then(()=>{ + this.doRefresh(event); + }); + } + + async viewPublicationDetail(processId:string, publicationId:string) { + const modal = await this.modalController.create({ + component: PublicationDetailPage, + componentProps:{ + publicationId: publicationId, + folderId: processId, + }, + cssClass: 'publication-detail', + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss().then(()=>{ + this.doRefresh(event); + }); } } diff --git a/src/app/resolvers/userData.resolver.ts b/src/app/resolvers/userData.resolver.ts index b5b5bbc93..8d9771fc6 100644 --- a/src/app/resolvers/userData.resolver.ts +++ b/src/app/resolvers/userData.resolver.ts @@ -8,6 +8,6 @@ export class UserDataResolver{ constructor(private authService: AuthService){} resolve(){ - return this.authService.getUserData(); + /* return this.authService.getUserData(); */ } } \ No newline at end of file diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index a8835bfa6..177d1c37c 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -35,6 +35,7 @@ export class AuthService { if (result) { this.ValidatedUser = user; + } return result; } @@ -44,36 +45,38 @@ export class AuthService { } - loginChat(){ - const body = {"user": "admin","password": "tabteste@006"}; - const url = "http://192.168.100.111:3000/api/v1/login"; - return this.http.post(url, body); - } - //Login to rocketChat server - loginChat2(postData: any):Observable { - return this.httpService.post('login', postData); + loginChat(postData: any):Observable { + const res = this.httpService.post('login', postData); + const res2 = res.subscribe(res=>{ + this.storageService.store(res); + }); + return res; } //Get user data from RocketChat getUserData(){ - this.storageService.get(AuthConnstants.AUTH).then(res=>{ + const res = this.storageService.get('user'); + console.log(res); + + + /* this.storageService.get(AuthConnstants.AUTH).then(res=>{ this.userData$.next(res); - }) + }) */ } - getProfile(){ + /* getProfile(){ this.storageService.get(AuthConnstants.PROFILE).then(res=>{ return res; }); - } + } */ logoutChat(){ //this.storageService.clear(); - this.storageService.removeStorageItem(AuthConnstants.AUTH).then(res =>{ + /* this.storageService.removeStorageItem(AuthConnstants.AUTH).then(res =>{ this.userData$.next(''); this.router.navigate(['']); - }) + }) */ } diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index fcec14651..0b0de9853 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -6,6 +6,7 @@ import { HttpService } from './http.service'; import { StorageService } from './storage.service'; import { HttpClient, HttpHeaderResponse } from '@angular/common/http'; import { environment } from 'src/environments/environment'; +import { Storage } from '@ionic/storage'; @Injectable({ providedIn: 'root' @@ -19,19 +20,32 @@ export class ChatService { private http:HttpClient, private httpService: HttpService, private authService: AuthService, + private storage: Storage, private storageService:StorageService,) { this.headers = new HttpHeaders(); - this.authService.userData$.subscribe((res:any)=>{ + + this.storage.get('user').then((val) => { + console.log(JSON.parse(unescape(atob(val))).data.userId); + let user = JSON.parse(unescape(atob(val))).data; + + this.headers = this.headers.set('Access-Control-Allow-Origin', 'http://localhost:8100'); + this.headers = this.headers.set('Access-Control-Allow-Credentials', 'true'); + this.headers = this.headers.set('Access-Control-Allow-Headers', 'Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Allow-Headers, x-requested-with, Content-Type, X-Auth-Token, X-User-Id, origin, authorization, accept, client-security-token'); + this.headers = this.headers.set('X-User-Id', user.userId); + this.headers = this.headers.set('X-Auth-Token', user.authToken); + }); + + /* this.authService.userData$.subscribe((res:any)=>{ this.headers = this.headers.set('X-User-Id', res.userId); this.headers = this.headers.set('X-Auth-Token', res.authToken); - }); + }); */ this.options = { headers: this.headers, }; } getAllUsers(){ - /* console.log(this.headers); */ + console.log(this.headers); return this.http.get(environment.apiChatUrl+'users.list', this.options); } getAllConnectedUsers(){ diff --git a/src/app/services/fcm.service.ts b/src/app/services/fcm.service.ts index 02793945e..202caa552 100644 --- a/src/app/services/fcm.service.ts +++ b/src/app/services/fcm.service.ts @@ -1,14 +1,14 @@ import { Injectable } from '@angular/core'; -import { +/* import { Plugins, PushNotification, PushNotificationToken, PushNotificationActionPerformed, Capacitor -} from '@capacitor/core'; +} from '@capacitor/core'; */ import { Router } from '@angular/router'; -const { PushNotifications } = Plugins; +/* const { PushNotifications } = Plugins; */ @Injectable({ providedIn: 'root' @@ -17,7 +17,7 @@ export class FcmService { constructor(private router: Router) { } - initPush() { + /* initPush() { if (Capacitor.platform !== 'web') { this.registerPush(); } @@ -58,7 +58,7 @@ export class FcmService { } } ); - } + } */ } diff --git a/src/app/services/loading.service.ts b/src/app/services/loading.service.ts index 6b884d4e6..9e25442c0 100644 --- a/src/app/services/loading.service.ts +++ b/src/app/services/loading.service.ts @@ -5,18 +5,17 @@ import { LoadingController } from '@ionic/angular'; providedIn: 'root' }) export class LoadingService { + loading:any; constructor(public loadingController: LoadingController) { } - async simpleLoading(message:string) { - const loading = await this.loadingController.create({ + async simpleLoading() { + this.loading = await this.loadingController.create({ cssClass: 'my-custom-class', - message:message, + message:'A carregar!...', duration: 2000 }); - await loading.present(); - - const { role, data } = await loading.onDidDismiss(); + await this.loading.present(); } async customizedLoading() { diff --git a/src/app/services/photo.service.spec.ts b/src/app/services/photo.service.spec.ts new file mode 100644 index 000000000..00ab0b05d --- /dev/null +++ b/src/app/services/photo.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { PhotoService } from './photo.service'; + +describe('PhotoService', () => { + let service: PhotoService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(PhotoService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/photo.service.ts b/src/app/services/photo.service.ts new file mode 100644 index 000000000..c9f72b947 --- /dev/null +++ b/src/app/services/photo.service.ts @@ -0,0 +1,68 @@ +import { Injectable } from '@angular/core'; + +/* import { Plugins, CameraResultType, Capacitor, FilesystemDirectory, CameraPhoto, CameraSource } from '@capacitor/core'; */ +import { Photo } from '../models/photo'; +import { Platform } from '@ionic/angular'; +import { Camera, CameraOptions } from '@ionic-native/camera/ngx'; + + /* const { Camera, Filesystem, Storage } = Plugins; */ + +@Injectable({ + providedIn: 'root' +}) +export class PhotoService { + public photos: Photo[] = []; + private PHOTO_STORAGE: string = "photos"; + private platform: Platform; + + constructor(platform: Platform, + private camera:Camera) { + this.platform = platform; + } + + async takePicture(){ + const options: CameraOptions = { + quality: 100, + destinationType: this.camera.DestinationType.FILE_URI, + encodingType: this.camera.EncodingType.JPEG, + mediaType: this.camera.MediaType.PICTURE + } + + + + this.camera.getPicture(options).then((imageData) => { + // imageData is either a base64 encoded string or a file URI + // If it's base64 (DATA_URL): + let base64Image = 'data:image/jpeg;base64,' + imageData; + return base64Image; + }, (err) => { + // Handle error + }); + + } + + + /* async addNewToGallery() { + // Take a photo using Capacitor + const capturedPhoto = await Camera.getPhoto({ + resultType: CameraResultType.Base64, + source: CameraSource.Camera, + quality: 90, + width: 1080, + height: 720, + }); + + this.photos.unshift({ + fileName: new Date().getTime() + '.png', + webviewPath: capturedPhoto.base64String, + fileFormat: capturedPhoto.format, + }); + + console.log(capturedPhoto); + + + console.log(this.photos[0]); + + } */ + +} diff --git a/src/app/services/processes.service.ts b/src/app/services/processes.service.ts index 68cb6dae2..0049305ae 100644 --- a/src/app/services/processes.service.ts +++ b/src/app/services/processes.service.ts @@ -138,6 +138,17 @@ export class ProcessesService { }); } + + GetActionsList(){ + const geturl = environment.apiURL + 'presidentialActions'; + let options = { + headers: this.headers, + }; + console.log(options); + + return this.http.get(`${geturl}`, options); + } + diff --git a/src/app/services/publications.service.spec.ts b/src/app/services/publications.service.spec.ts new file mode 100644 index 000000000..3ec5dd626 --- /dev/null +++ b/src/app/services/publications.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { PublicationsService } from './publications.service'; + +describe('PublicationsService', () => { + let service: PublicationsService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(PublicationsService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/publications.service.ts b/src/app/services/publications.service.ts new file mode 100644 index 000000000..653b0f7b9 --- /dev/null +++ b/src/app/services/publications.service.ts @@ -0,0 +1,149 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { environment } from 'src/environments/environment'; +import { AuthService } from '../services/auth.service'; +import { User } from '../models/user.model'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class PublicationsService { + + authheader = {}; + loggeduser: User; + headers: HttpHeaders; + + constructor(private http: HttpClient, user: AuthService) { + this.loggeduser = user.ValidatedUser; + this.headers = new HttpHeaders(); + this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); + } + + GetPublicationFolderList(){ + const geturl = environment.apiURL + 'presidentialActions'; + let options = { + headers: this.headers, + }; + return this.http.get(`${geturl}`, options); + } + + GetPublicationFolderById(id:any){ + const geturl = environment.apiURL + 'presidentialActions'; + let params = new HttpParams(); + + params = params.set("id", id); + + let options = { + headers: this.headers, + params: params + }; + return this.http.get(`${geturl}`, options); + } + + CreatePublicationFolder(body:any){ + const geturl = environment.apiURL + 'presidentialActions'; + let options = { + headers: this.headers, + }; + return this.http.post(`${geturl}`, body, options).toPromise().then(res =>{ + console.log(res); + }); + } + + UpdatePublicationFolder(body:any){ + const geturl = environment.apiURL + 'presidentialActions'; + let options = { + headers: this.headers, + }; + return this.http.put(`${geturl}`, body, options).toPromise().then(res =>{ + console.log(res); + }); + } + + DeletePublicationFolderById(id:any){ + const geturl = environment.apiURL + 'presidentialActions'; + let params = new HttpParams(); + + params = params.set("id", id); + + let options = { + headers: this.headers, + params: params + }; + return this.http.delete(`${geturl}`, options); + } + + GetPublications(id:any){ + const geturl = environment.apiURL + 'presidentialActions/'+ id +'/posts'; + let params = new HttpParams(); + + params = params.set("folderId", id); + + let options = { + headers: this.headers, + params: params + }; + return this.http.get(`${geturl}`, options); + } + + GetPublicationById(folderId:any, publicationId:any){ + const geturl = environment.apiURL + 'presidentialActions/'+ folderId +'/posts/'+ publicationId; + let params = new HttpParams(); + + params = params.set("folderId", folderId); + params = params.set("id", publicationId); + + + console.log(params); + + + let options = { + headers: this.headers, + params: params + }; + return this.http.get(`${geturl}`, options); + } + CreatePublication(folderId:any,body:any){ + const geturl = environment.apiURL + 'presidentialActions/'+folderId+'/posts'; + let params = new HttpParams(); + params = params.set("folderId", folderId); + let options = { + headers: this.headers, + /* params: params */ + }; + return this.http.post(`${geturl}`, body, options).toPromise().then(res =>{ + console.log(res); + }); + } + + UpdatePublication(folderId:any,body:any){ + const geturl = environment.apiURL + 'presidentialActions/'+folderId+'/posts'; + let params = new HttpParams(); + params = params.set("folderId", folderId); + let options = { + headers: this.headers, + /* params: params */ + }; + return this.http.put(`${geturl}`, body, options).toPromise().then(res =>{ + console.log(res); + }); + } + + DeletePublication(folderId:any,publicationId:any){ + const geturl = environment.apiURL + 'presidentialActions/'+folderId+'/posts/'+publicationId; + let params = new HttpParams(); + params = params.set("folderId", folderId); + params = params.set("id", publicationId); + let options = { + headers: this.headers, + /* params: params */ + }; + return this.http.delete(`${geturl}`, options).toPromise(); + } + + + +} + + diff --git a/src/app/services/storage.service.ts b/src/app/services/storage.service.ts index d47dacad2..9650edd7b 100644 --- a/src/app/services/storage.service.ts +++ b/src/app/services/storage.service.ts @@ -1,33 +1,37 @@ import { Injectable } from '@angular/core'; -import { Plugins } from '@capacitor/core'; -const { Storage } = Plugins; +import { Storage } from '@ionic/storage'; +import { AuthConnstants } from '../config/auth-constants'; @Injectable({ providedIn: 'root' }) export class StorageService { - constructor() {} + user: any = "Max"; + storageKey = "user"; + constructor(private storage: Storage) {} - // Store the value - async store(storageKey: string, value: any) { - const encryptedValue = btoa(escape(JSON.stringify(value))); - await Storage.set({ - key: storageKey, - value: encryptedValue - }); + // set a key/value2 + store(user:any){ + const encryptedValue = btoa(escape(JSON.stringify(user))); + this.storage.set(AuthConnstants.AUTH, encryptedValue); } + - // Get the value - async get(storageKey: string) { - const ret = await Storage.get({ key: storageKey }); - return JSON.parse(unescape(atob(ret.value))); + // Or to get a key/value pair + get(key:any){ + let user = this.storage.get(key).then((val) => { + console.log(JSON.parse(unescape(atob(val))).data); + return JSON.parse(unescape(atob(val))).data; + }); + return user; } + - async removeStorageItem(storageKey: string) { - await Storage.remove({ key: storageKey }); - } + /* async removeStorageItem(storageKey: string) { + await this.storage.remove({ key: storageKey }); + } */ // Clear storage async clear() { - await Storage.clear(); + await this.storage.clear(); } } diff --git a/src/app/shared/btn-modal-dismiss/btn-modal-dismiss-routing.module.ts b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss-routing.module.ts new file mode 100644 index 000000000..ed1fb491c --- /dev/null +++ b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { BtnModalDismissPage } from './btn-modal-dismiss.page'; + +const routes: Routes = [ + { + path: '', + component: BtnModalDismissPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class BtnModalDismissPageRoutingModule {} diff --git a/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.module.ts b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.module.ts new file mode 100644 index 000000000..de1bb2d5b --- /dev/null +++ b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { BtnModalDismissPageRoutingModule } from './btn-modal-dismiss-routing.module'; + +import { BtnModalDismissPage } from './btn-modal-dismiss.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + BtnModalDismissPageRoutingModule + ], + declarations: [BtnModalDismissPage] +}) +export class BtnModalDismissPageModule {} diff --git a/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.html b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.html new file mode 100644 index 000000000..563f30337 --- /dev/null +++ b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.scss b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.scss new file mode 100644 index 000000000..39e57070e --- /dev/null +++ b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.scss @@ -0,0 +1,6 @@ +.left{ + width: 37px; + float: left; + font-size: 35px; + overflow: hidden; +} \ No newline at end of file diff --git a/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.spec.ts b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.spec.ts new file mode 100644 index 000000000..c15360e1c --- /dev/null +++ b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { BtnModalDismissPage } from './btn-modal-dismiss.page'; + +describe('BtnModalDismissPage', () => { + let component: BtnModalDismissPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BtnModalDismissPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(BtnModalDismissPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.ts b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.ts new file mode 100644 index 000000000..f8d5f8507 --- /dev/null +++ b/src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page.ts @@ -0,0 +1,24 @@ +import { Component, OnInit } from '@angular/core'; +import { ModalController } from '@ionic/angular'; + +@Component({ + selector: 'app-btn-modal-dismiss', + templateUrl: './btn-modal-dismiss.page.html', + styleUrls: ['./btn-modal-dismiss.page.scss'], +}) +export class BtnModalDismissPage implements OnInit { + + constructor( + private modalController: ModalController, + ) { + + } + + ngOnInit() { + + } + close(){ + this.modalController.dismiss(); + } + +} diff --git a/src/app/shared/btn-seguinte/btn-seguinte-routing.module.ts b/src/app/shared/btn-seguinte/btn-seguinte-routing.module.ts new file mode 100644 index 000000000..00925313b --- /dev/null +++ b/src/app/shared/btn-seguinte/btn-seguinte-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { BtnSeguintePage } from './btn-seguinte.page'; + +const routes: Routes = [ + { + path: '', + component: BtnSeguintePage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class BtnSeguintePageRoutingModule {} diff --git a/src/app/shared/btn-seguinte/btn-seguinte.module.ts b/src/app/shared/btn-seguinte/btn-seguinte.module.ts new file mode 100644 index 000000000..bb07c7363 --- /dev/null +++ b/src/app/shared/btn-seguinte/btn-seguinte.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { BtnSeguintePageRoutingModule } from './btn-seguinte-routing.module'; + +import { BtnSeguintePage } from './btn-seguinte.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + BtnSeguintePageRoutingModule + ], + declarations: [BtnSeguintePage] +}) +export class BtnSeguintePageModule {} diff --git a/src/app/shared/btn-seguinte/btn-seguinte.page.html b/src/app/shared/btn-seguinte/btn-seguinte.page.html new file mode 100644 index 000000000..2ecf0814d --- /dev/null +++ b/src/app/shared/btn-seguinte/btn-seguinte.page.html @@ -0,0 +1,3 @@ +
+ Seguinte +
diff --git a/src/app/shared/btn-seguinte/btn-seguinte.page.scss b/src/app/shared/btn-seguinte/btn-seguinte.page.scss new file mode 100644 index 000000000..fef7141e5 --- /dev/null +++ b/src/app/shared/btn-seguinte/btn-seguinte.page.scss @@ -0,0 +1,7 @@ +.right{ + padding: 0!important; + float: right; + font-size: 15px; + color: #0782c9; + margin: 8px 0 0 5px; + } \ No newline at end of file diff --git a/src/app/shared/btn-seguinte/btn-seguinte.page.spec.ts b/src/app/shared/btn-seguinte/btn-seguinte.page.spec.ts new file mode 100644 index 000000000..7f8fe0842 --- /dev/null +++ b/src/app/shared/btn-seguinte/btn-seguinte.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { BtnSeguintePage } from './btn-seguinte.page'; + +describe('BtnSeguintePage', () => { + let component: BtnSeguintePage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BtnSeguintePage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(BtnSeguintePage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/btn-seguinte/btn-seguinte.page.ts b/src/app/shared/btn-seguinte/btn-seguinte.page.ts new file mode 100644 index 000000000..9f724083e --- /dev/null +++ b/src/app/shared/btn-seguinte/btn-seguinte.page.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-btn-seguinte', + templateUrl: './btn-seguinte.page.html', + styleUrls: ['./btn-seguinte.page.scss'], +}) +export class BtnSeguintePage implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/shared/header-pr/header-pr-routing.module.ts b/src/app/shared/header-pr/header-pr-routing.module.ts new file mode 100644 index 000000000..d911e2771 --- /dev/null +++ b/src/app/shared/header-pr/header-pr-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { HeaderPrPage } from './header-pr.page'; + +const routes: Routes = [ + { + path: '', + component: HeaderPrPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class HeaderPrPageRoutingModule {} diff --git a/src/app/shared/header-pr/header-pr.module.ts b/src/app/shared/header-pr/header-pr.module.ts new file mode 100644 index 000000000..b2a41677a --- /dev/null +++ b/src/app/shared/header-pr/header-pr.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { HeaderPrPageRoutingModule } from './header-pr-routing.module'; + +import { HeaderPrPage } from './header-pr.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + HeaderPrPageRoutingModule + ], + declarations: [HeaderPrPage] +}) +export class HeaderPrPageModule {} diff --git a/src/app/shared/header-pr/header-pr.page.html b/src/app/shared/header-pr/header-pr.page.html new file mode 100644 index 000000000..97880cb13 --- /dev/null +++ b/src/app/shared/header-pr/header-pr.page.html @@ -0,0 +1,13 @@ + +
+ + +
+ +
+
+
diff --git a/src/app/shared/header-pr/header-pr.page.scss b/src/app/shared/header-pr/header-pr.page.scss new file mode 100644 index 000000000..cf8935c63 --- /dev/null +++ b/src/app/shared/header-pr/header-pr.page.scss @@ -0,0 +1,28 @@ +.div-top-header{ + width: 400px; + margin: 0 auto; + background-color: #0782c9; + overflow: auto; + padding-top: 15px; + border: 0!important; + + .div-search{ + font-size: 45px; + float: left; + margin: 0 0 0 10px + } + .div-logo{ + background: transparent; + width: 140px; + margin: 5px 0 0px 71px; + float: left; + } + .div-logo img{ + width: 100%; + } + .div-profile{ + font-size: 45px; + float: right; + margin-right: 10px; + } + } \ No newline at end of file diff --git a/src/app/shared/header-pr/header-pr.page.spec.ts b/src/app/shared/header-pr/header-pr.page.spec.ts new file mode 100644 index 000000000..a4452be8d --- /dev/null +++ b/src/app/shared/header-pr/header-pr.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { HeaderPrPage } from './header-pr.page'; + +describe('HeaderPrPage', () => { + let component: HeaderPrPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HeaderPrPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(HeaderPrPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/header-pr/header-pr.page.ts b/src/app/shared/header-pr/header-pr.page.ts new file mode 100644 index 000000000..d09241781 --- /dev/null +++ b/src/app/shared/header-pr/header-pr.page.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-header-pr', + templateUrl: './header-pr.page.html', + styleUrls: ['./header-pr.page.scss'], +}) +export class HeaderPrPage implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/shared/header/header-routing.module.ts b/src/app/shared/header/header-routing.module.ts new file mode 100644 index 000000000..99a31c024 --- /dev/null +++ b/src/app/shared/header/header-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { HeaderPage } from './header.page'; + +const routes: Routes = [ + { + path: '', + component: HeaderPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class HeaderPageRoutingModule {} diff --git a/src/app/shared/header/header.module.ts b/src/app/shared/header/header.module.ts new file mode 100644 index 000000000..faf79baac --- /dev/null +++ b/src/app/shared/header/header.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { HeaderPageRoutingModule } from './header-routing.module'; + +import { HeaderPage } from './header.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + HeaderPageRoutingModule + ], + declarations: [HeaderPage] +}) +export class HeaderPageModule {} diff --git a/src/app/shared/header/header.page.html b/src/app/shared/header/header.page.html new file mode 100644 index 000000000..49c3e1cac --- /dev/null +++ b/src/app/shared/header/header.page.html @@ -0,0 +1,14 @@ + +
+ + +
+ +
+
+
+ diff --git a/src/app/shared/header/header.page.scss b/src/app/shared/header/header.page.scss new file mode 100644 index 000000000..cf8935c63 --- /dev/null +++ b/src/app/shared/header/header.page.scss @@ -0,0 +1,28 @@ +.div-top-header{ + width: 400px; + margin: 0 auto; + background-color: #0782c9; + overflow: auto; + padding-top: 15px; + border: 0!important; + + .div-search{ + font-size: 45px; + float: left; + margin: 0 0 0 10px + } + .div-logo{ + background: transparent; + width: 140px; + margin: 5px 0 0px 71px; + float: left; + } + .div-logo img{ + width: 100%; + } + .div-profile{ + font-size: 45px; + float: right; + margin-right: 10px; + } + } \ No newline at end of file diff --git a/src/app/shared/header/header.page.spec.ts b/src/app/shared/header/header.page.spec.ts new file mode 100644 index 000000000..c3b29e45b --- /dev/null +++ b/src/app/shared/header/header.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { HeaderPage } from './header.page'; + +describe('HeaderPage', () => { + let component: HeaderPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HeaderPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(HeaderPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/header/header.page.ts b/src/app/shared/header/header.page.ts new file mode 100644 index 000000000..f0f551bca --- /dev/null +++ b/src/app/shared/header/header.page.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-header', + templateUrl: './header.page.html', + styleUrls: ['./header.page.scss'], +}) +export class HeaderPage implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/shared/popover/chat-popover/chat-popover-routing.module.ts b/src/app/shared/popover/chat-popover/chat-popover-routing.module.ts new file mode 100644 index 000000000..9fb84d892 --- /dev/null +++ b/src/app/shared/popover/chat-popover/chat-popover-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ChatPopoverPage } from './chat-popover.page'; + +const routes: Routes = [ + { + path: '', + component: ChatPopoverPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ChatPopoverPageRoutingModule {} diff --git a/src/app/shared/popover/chat-popover/chat-popover.module.ts b/src/app/shared/popover/chat-popover/chat-popover.module.ts new file mode 100644 index 000000000..7c5def554 --- /dev/null +++ b/src/app/shared/popover/chat-popover/chat-popover.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { ChatPopoverPageRoutingModule } from './chat-popover-routing.module'; + +import { ChatPopoverPage } from './chat-popover.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + ChatPopoverPageRoutingModule + ], + declarations: [ChatPopoverPage] +}) +export class ChatPopoverPageModule {} diff --git a/src/app/shared/popover/chat-popover/chat-popover.page.html b/src/app/shared/popover/chat-popover/chat-popover.page.html new file mode 100644 index 000000000..69938a705 --- /dev/null +++ b/src/app/shared/popover/chat-popover/chat-popover.page.html @@ -0,0 +1,16 @@ +
+ +
+
+ Sair do Grupo. + Alterar nome +
+
+
+
+
+ Apagar grupo +
+
+
+
diff --git a/src/app/shared/popover/chat-popover/chat-popover.page.scss b/src/app/shared/popover/chat-popover/chat-popover.page.scss new file mode 100644 index 000000000..cb6972c78 --- /dev/null +++ b/src/app/shared/popover/chat-popover/chat-popover.page.scss @@ -0,0 +1,49 @@ +.buttons{ + overflow: auto; + padding-top: 10px; + padding-bottom: 10px; +} +.btn-item{ + padding: 2px; + margin: 10px 20px 10px 20px !important; + overflow: auto; +} +.btn-ok, .btn-cancel, .btn-delete{ + font-size: 13px; + padding:0 !important; +} +hr.solid { + width: 360px; + border-top: 1px solid #ebebeb; + } +.btn-ok{ + display: block; + width: 170px !important; + height: 45px !important; + border-radius: 22.5px; + /* right: 20px !important; */ + --background: #42b9fe; + --color: #ffffff !important; + float: left; + } + .btn-cancel{ + width: 170px !important; + height: 45px !important; + border-radius: 22.5px; + background-color: #e0e9ee; + --color: #061b52 !important; + --background:transparent; + --box-shadow: none; + float: right; + + } + .btn-delete{ + width: 170px !important; + height: 45px !important;; + border-radius: 22.5px; + --background: #ffe0e0; + --color: #d30a0a !important; + --padding-start:0 !important; + --padding-end:0 !important; + float: left; + } \ No newline at end of file diff --git a/src/app/shared/popover/chat-popover/chat-popover.page.spec.ts b/src/app/shared/popover/chat-popover/chat-popover.page.spec.ts new file mode 100644 index 000000000..8e2c51542 --- /dev/null +++ b/src/app/shared/popover/chat-popover/chat-popover.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { ChatPopoverPage } from './chat-popover.page'; + +describe('ChatPopoverPage', () => { + let component: ChatPopoverPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ChatPopoverPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(ChatPopoverPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/popover/chat-popover/chat-popover.page.ts b/src/app/shared/popover/chat-popover/chat-popover.page.ts new file mode 100644 index 000000000..3e18c59fb --- /dev/null +++ b/src/app/shared/popover/chat-popover/chat-popover.page.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-chat-popover', + templateUrl: './chat-popover.page.html', + styleUrls: ['./chat-popover.page.scss'], +}) +export class ChatPopoverPage implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/shared/shared.modules.ts b/src/app/shared/popover/chat-popover/popover.modules.ts similarity index 63% rename from src/app/shared/shared.modules.ts rename to src/app/shared/popover/chat-popover/popover.modules.ts index eebc23949..6612f7638 100644 --- a/src/app/shared/shared.modules.ts +++ b/src/app/shared/popover/chat-popover/popover.modules.ts @@ -2,6 +2,8 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { IonicModule } from '@ionic/angular'; +import { ChatPopoverPage } from './chat-popover.page'; + @NgModule({ imports: [ @@ -9,8 +11,12 @@ import { IonicModule } from '@ionic/angular'; FormsModule, IonicModule, ], - exports: [], + exports: [ + ChatPopoverPage, + ], entryComponents:[], - declarations: [] + declarations: [ + ChatPopoverPage, + ] }) -export class SharedModule {} \ No newline at end of file +export class PopoverModule {} \ No newline at end of file diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts new file mode 100644 index 000000000..981845628 --- /dev/null +++ b/src/app/shared/shared.module.ts @@ -0,0 +1,32 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { IonicModule } from '@ionic/angular'; +import { HeaderPage } from './header/header.page'; +import { HeaderPrPage } from './header-pr/header-pr.page'; +import { BtnSeguintePage } from './btn-seguinte/btn-seguinte.page'; +import { BtnModalDismissPage } from './btn-modal-dismiss/btn-modal-dismiss.page'; +import { ChatPopoverPage } from './popover/chat-popover/chat-popover.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + ], + exports: [ + HeaderPage, + HeaderPrPage, + BtnSeguintePage, + BtnModalDismissPage, + ChatPopoverPage, + ], + entryComponents:[], + declarations: [HeaderPage, + HeaderPrPage, + BtnSeguintePage, + BtnModalDismissPage, + ChatPopoverPage, + ] +}) +export class SharedModule {} \ No newline at end of file diff --git a/src/assets/icon/icon-no-image.svg b/src/assets/icon/icon-no-image.svg new file mode 100644 index 000000000..47b2afcec --- /dev/null +++ b/src/assets/icon/icon-no-image.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/src/assets/images/icons-duration.svg b/src/assets/images/icons-duration.svg new file mode 100644 index 000000000..4046e1ac4 --- /dev/null +++ b/src/assets/images/icons-duration.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-menu.svg b/src/assets/images/icons-menu.svg new file mode 100644 index 000000000..b56583239 --- /dev/null +++ b/src/assets/images/icons-menu.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-nav-chat-inactive.svg b/src/assets/images/icons-nav-chat-inactive.svg new file mode 100644 index 000000000..4960afef1 --- /dev/null +++ b/src/assets/images/icons-nav-chat-inactive.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-nav-gabinete-inactive.svg b/src/assets/images/icons-nav-gabinete-inactive.svg new file mode 100644 index 000000000..a58bacaab --- /dev/null +++ b/src/assets/images/icons-nav-gabinete-inactive.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-nav-home.svg b/src/assets/images/icons-nav-home.svg index ad505de12..829cf9cea 100644 --- a/src/assets/images/icons-nav-home.svg +++ b/src/assets/images/icons-nav-home.svg @@ -3,7 +3,11 @@ - + + + + + diff --git a/src/assets/images/icons-profile-pr.svg b/src/assets/images/icons-profile-pr.svg new file mode 100644 index 000000000..c322507eb --- /dev/null +++ b/src/assets/images/icons-profile-pr.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + PR + + + + + + diff --git a/src/main.ts b/src/main.ts index 91ec6da5f..6746ad117 100644 --- a/src/main.ts +++ b/src/main.ts @@ -4,9 +4,14 @@ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; import { environment } from './environments/environment'; +import { defineCustomElements } from '@ionic/pwa-elements/loader'; + if (environment.production) { enableProdMode(); } platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.log(err)); + + // Call the element loader after the platform has been bootstrapped +defineCustomElements(window); \ No newline at end of file diff --git a/src/theme/variables.scss b/src/theme/variables.scss index 6d4ffd5d2..877420d58 100644 --- a/src/theme/variables.scss +++ b/src/theme/variables.scss @@ -250,6 +250,7 @@ --border-radius: 10px; padding: 25px; } */ +//MODALS .emend-message-modal{ --height: 50%; --border-radius: 10px; @@ -262,9 +263,25 @@ padding: 25px; background: rgba(51, 51, 51, 0.3); } +.newchat, .new-group, .contacts, .group-messages, .custom-modal{ + padding-top: 73px; + --border-radius: 25px 25px 0 0; + --border-width:0px; +} .capitalizeText{ text-transform: capitalize; } +//POPOVER +.chat-popover .popover-content { + width: 100% !important; + left: 0 !important; + bottom: 0 !important; + right: 0 !important; + top: calc(100% - 160px) !important; + max-height: 160px; + min-height: 160px; +} + /* .event-actions-popover ion-list{ } */ .Rectangle { @@ -375,7 +392,7 @@ .btn-ok-no-width{ height: 45px !important; margin: 0 auto; - padding: 10px 15px; + padding:0 !important; border-radius: 22.5px; background-color: #42b9fe; color: #ffffff !important; @@ -384,7 +401,7 @@ width: 170px !important; height: 45px !important; margin: 0 auto; - padding: 10px 15px; + padding:0 !important; border-radius: 22.5px; background-color: #ffe0e0; color: #d30a0a !important; @@ -393,7 +410,7 @@ width: 160px !important; height: 45px !important; margin: 0 auto; - padding: 10px 15px; + padding:0 !important; border-radius: 22.5px; background-color: #e0e9ee; color: #061b52 !important;