toggleCamera(isCamMuted)}
@@ -46,15 +51,48 @@ export const BasicTray = () => {
>
{isMicMuted ? : }
- openModal(DEVICE_MODAL)}>
-
-
- toggleAside(NETWORK_ASIDE)}>
-
-
- toggleAside(PEOPLE_ASIDE)}>
-
-
+ {responsive.isMobile() && showMore && (
+
+
+
+
+
+ )}
+ {!responsive.isMobile() ? (
+ <>
+ openModal(DEVICE_MODAL)}>
+
+
+ toggleAside(NETWORK_ASIDE)}>
+
+
+ toggleAside(PEOPLE_ASIDE)}>
+
+
+ >
+ ) : (
+ setShowMore(!showMore)}>
+
+
+ )}
{customTrayComponent}
@@ -63,6 +101,20 @@ export const BasicTray = () => {
leave()} orange>
+
);
};
diff --git a/custom/shared/hooks/useResponsive.js b/custom/shared/hooks/useResponsive.js
new file mode 100644
index 0000000..7f9742a
--- /dev/null
+++ b/custom/shared/hooks/useResponsive.js
@@ -0,0 +1,38 @@
+import React, { useEffect, useState } from 'react';
+
+let responsiveConfig = {
+ xs: 0,
+ sm: 576,
+ md: 768,
+ lg: 992,
+ xl: 1200,
+};
+
+export const useResponsive = () => {
+ const [windowSize, setWindowSize] = useState(window.innerWidth);
+
+ const handleChangeWindowSize = () => setWindowSize(window.innerWidth);
+
+ const getResponsiveConfig = (size) => {
+ const responsive = {};
+ Object.keys(responsiveConfig).forEach(config => {
+ responsive[config] = size > responsiveConfig[config];
+ });
+ return responsive;
+ };
+
+ const isMobile = () => {
+ const config = getResponsiveConfig(windowSize);
+ return !config.md && !config.lg && !config.xl;
+ };
+
+ useEffect(() => {
+ window.addEventListener('resize', handleChangeWindowSize);
+
+ return () => {
+ window.removeEventListener('resize', handleChangeWindowSize);
+ };
+ }, []);
+
+ return { config: getResponsiveConfig(windowSize), isMobile };
+};
\ No newline at end of file
diff --git a/custom/shared/icons/more-md.svg b/custom/shared/icons/more-md.svg
new file mode 100644
index 0000000..c792022
--- /dev/null
+++ b/custom/shared/icons/more-md.svg
@@ -0,0 +1 @@
+