diff --git a/package-lock.json b/package-lock.json index 300cbf2..68a6a98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "keanuapp-weblite", - "version": "0.1.2", + "version": "0.1.3", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.1.2", + "version": "0.1.3", "dependencies": { "aes-js": "^3.1.2", "axios": "^0.21.0", @@ -28,6 +28,7 @@ "vue-resize": "^0.5.0", "vue-router": "^3.2.0", "vue-sanitize": "^0.2.1", + "vue-swipeable-bottom-sheet": "^0.0.5", "vuetify": "^2.2.11", "vuex": "^3.5.1", "vuex-persist": "^3.1.3" @@ -5286,17 +5287,17 @@ "dev": true }, "node_modules/elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, "node_modules/emoji-regex": { @@ -6642,6 +6643,14 @@ "node": ">=6" } }, + "node_modules/hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -13938,6 +13947,14 @@ "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", "dev": true }, + "node_modules/vue-swipeable-bottom-sheet": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/vue-swipeable-bottom-sheet/-/vue-swipeable-bottom-sheet-0.0.5.tgz", + "integrity": "sha512-PcARUGu6tZ22WRwNum6mTlnMQk/DwqdcD3cQavshIICntD9OzPelkY4mlfJezx3BspfiTO0UI33pQ3x9tmzfcg==", + "dependencies": { + "hammerjs": "^2.0.8" + } + }, "node_modules/vue-template-compiler": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", @@ -19613,17 +19630,17 @@ "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, "emoji-regex": { @@ -20677,6 +20694,11 @@ "pify": "^4.0.1" } }, + "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", @@ -26528,6 +26550,14 @@ } } }, + "vue-swipeable-bottom-sheet": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/vue-swipeable-bottom-sheet/-/vue-swipeable-bottom-sheet-0.0.5.tgz", + "integrity": "sha512-PcARUGu6tZ22WRwNum6mTlnMQk/DwqdcD3cQavshIICntD9OzPelkY4mlfJezx3BspfiTO0UI33pQ3x9tmzfcg==", + "requires": { + "hammerjs": "^2.0.8" + } + }, "vue-template-compiler": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", diff --git a/package.json b/package.json index 0273be9..6159b1a 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "vue-resize": "^0.5.0", "vue-router": "^3.2.0", "vue-sanitize": "^0.2.1", + "vue-swipeable-bottom-sheet": "^0.0.5", "vuetify": "^2.2.11", "vuex": "^3.5.1", "vuex-persist": "^3.1.3" diff --git a/src/assets/css/chat.scss b/src/assets/css/chat.scss index e615480..0997eff 100644 --- a/src/assets/css/chat.scss +++ b/src/assets/css/chat.scss @@ -677,4 +677,31 @@ $admin-fg: white; } } } +} + +.bottom-sheet .card { + z-index: 10; /* Above mic button etc. */ + background-color: white; + padding: 10px; +} + +.room-info-sheet { + background-color: white; + + .current-room { + padding: 25px; + background: linear-gradient(180deg, #FFFFFF 0%, rgba(255, 255, 255, 0) 100%), #F5F5F7; + box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.15); + border-radius: 18px; + } + + .room-avatar { + background-color: #ededed; + width: 44px !important; + height: 44px !important; + margin-bottom: 20px; + .headline { + font-size: 70 * $chat-text-size !important; + } + } } \ No newline at end of file diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss index bad1de2..185088c 100644 --- a/src/assets/css/main.scss +++ b/src/assets/css/main.scss @@ -37,6 +37,14 @@ $chat-button-height: 50px; color: #505050; } +.h4 { + font-family: 'Poppins', sans-serif; + font-weight: 600; + font-size: 11 * $chat-text-size; + color: black; + text-transform: uppercase; +} + .v-btn.outlined-button { font-family: 'Inter', sans-serif; font-weight: 700; diff --git a/src/components/Chat.vue b/src/components/Chat.vue index 011a76e..e330b64 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -1,6 +1,9 @@ @@ -312,6 +318,7 @@ import util from "../plugins/utils"; import MessageOperations from "./messages/MessageOperations.vue"; import ChatHeader from "./ChatHeader"; import VoiceRecorder from "./VoiceRecorder"; +import RoomInfoBottomSheet from "./RoomInfoBottomSheet"; const READ_RECEIPT_TIMEOUT = 5000; /* How long a message must have been visible before the read marker is updated */ @@ -364,6 +371,7 @@ export default { DebugEvent, MessageOperations, VoiceRecorder, + RoomInfoBottomSheet }, data() { @@ -698,7 +706,10 @@ export default { switch (event.getType()) { case "m.room.member": if (event.getContent().membership == "join") { - if (event.getPrevContent() && event.getPrevContent().membership == "join") { + if ( + event.getPrevContent() && + event.getPrevContent().membership == "join" + ) { // We we already joined, so this must be a display name and/or avatar update! return ContactChanged; } else { diff --git a/src/components/ChatHeader.vue b/src/components/ChatHeader.vue index 7502a35..ee7a779 100644 --- a/src/components/ChatHeader.vue +++ b/src/components/ChatHeader.vue @@ -4,20 +4,17 @@ - -
{{ room.summary.info.title }} expand_more
- + +
{{ room.summary.info.title }}
{{ memberCount }}{{ memberCount > 1 ? " members" : " member" }}
- - info - Leave @@ -31,18 +28,15 @@ diff --git a/src/components/RoomInfoBottomSheet.vue b/src/components/RoomInfoBottomSheet.vue new file mode 100644 index 0000000..30bfc14 --- /dev/null +++ b/src/components/RoomInfoBottomSheet.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/src/components/RoomList.vue b/src/components/RoomList.vue index 62f7d7e..c219ca5 100644 --- a/src/components/RoomList.vue +++ b/src/components/RoomList.vue @@ -1,6 +1,6 @@