import React, { useState, useEffect, useRef } from 'react'; import classNames from 'classnames'; import { Route, useLocation } from 'react-router-dom'; import { CSSTransition } from 'react-transition-group'; import { AppTopbar } from './AppTopbar'; import { AppFooter } from './AppFooter'; import { AppMenu } from './AppMenu'; import { AppConfig } from './AppConfig'; import Dashboard from './templates/Dashboard'; import ButtonDemo from './templates/ButtonDemo'; import ChartDemo from './templates/ChartDemo'; import Documentation from './templates/Documentation'; import FileDemo from './templates/FileDemo'; import FloatLabelDemo from './templates/FloatLabelDemo'; import FormLayoutDemo from './templates/FormLayoutDemo'; import InputDemo from './templates/InputDemo'; import ListDemo from './templates/ListDemo'; import MenuDemo from './templates/MenuDemo'; import MessagesDemo from './templates/MessagesDemo'; import MiscDemo from './templates/MiscDemo'; import OverlayDemo from './templates/OverlayDemo'; import MediaDemo from './templates/MediaDemo'; import PanelDemo from './templates/PanelDemo'; import TableDemo from './templates/TableDemo'; import TreeDemo from './templates/TreeDemo'; import InvalidStateDemo from './templates/InvalidStateDemo'; import BlocksDemo from './templates/BlocksDemo'; import IconsDemo from './templates/IconsDemo'; import AdministradoresSistema from './components/AdministradoresSistema'; import AdministradoresComunidad from './components/AdministradoresComunidad'; import GuardasSeguridad from './components/GuardasSeguridad'; import Communities from './components/ComunidadViviendas'; import Inquilinos from './components/Inquilinos'; import Crud from './pages/Crud'; import EmptyPage from './pages/EmptyPage'; import TimelineDemo from './pages/TimelineDemo'; import PrimeReact from 'primereact/api'; import { Tooltip } from 'primereact/tooltip'; import 'primereact/resources/primereact.css'; import 'primeicons/primeicons.css'; import 'primeflex/primeflex.css'; import 'prismjs/themes/prism-coy.css'; import './assets/demo/flags/flags.css'; import './assets/demo/Demos.scss'; import './assets/layout/layout.scss'; import './App.scss'; import LogIn from './components/LogIn'; import {PrimeIcons} from 'primereact/api'; const App = () => { const [layoutMode, setLayoutMode] = useState('static'); const [layoutColorMode, setLayoutColorMode] = useState('light') const [inputStyle, setInputStyle] = useState('outlined'); const [ripple, setRipple] = useState(true); const [staticMenuInactive, setStaticMenuInactive] = useState(false); const [overlayMenuActive, setOverlayMenuActive] = useState(false); const [mobileMenuActive, setMobileMenuActive] = useState(false); const [mobileTopbarMenuActive, setMobileTopbarMenuActive] = useState(false); const copyTooltipRef = useRef(); const location = useLocation(); PrimeReact.ripple = true; let menuClick = false; let mobileTopbarMenuClick = false; useEffect(() => { if (mobileMenuActive) { addClass(document.body, "body-overflow-hidden"); } else { removeClass(document.body, "body-overflow-hidden"); } }, [mobileMenuActive]); useEffect(() => { copyTooltipRef && copyTooltipRef.current && copyTooltipRef.current.updateTargetEvents(); }, [location]); const onInputStyleChange = (inputStyle) => { setInputStyle(inputStyle); } const onRipple = (e) => { PrimeReact.ripple = e.value; setRipple(e.value) } const onLayoutModeChange = (mode) => { setLayoutMode(mode) } const onColorModeChange = (mode) => { setLayoutColorMode(mode) } const onWrapperClick = (event) => { if (!menuClick) { setOverlayMenuActive(false); setMobileMenuActive(false); } if (!mobileTopbarMenuClick) { setMobileTopbarMenuActive(false); } mobileTopbarMenuClick = false; menuClick = false; } const onToggleMenuClick = (event) => { menuClick = true; if (isDesktop()) { if (layoutMode === 'overlay') { if (mobileMenuActive === true) { setOverlayMenuActive(true); } setOverlayMenuActive((prevState) => !prevState); setMobileMenuActive(false); } else if (layoutMode === 'static') { setStaticMenuInactive((prevState) => !prevState); } } else { setMobileMenuActive((prevState) => !prevState); } event.preventDefault(); } const onSidebarClick = () => { menuClick = true; } const onMobileTopbarMenuClick = (event) => { mobileTopbarMenuClick = true; setMobileTopbarMenuActive((prevState) => !prevState); event.preventDefault(); } const onMobileSubTopbarMenuClick = (event) => { mobileTopbarMenuClick = true; event.preventDefault(); } const onMenuItemClick = (event) => { if (!event.item.items) { setOverlayMenuActive(false); setMobileMenuActive(false); } } const isDesktop = () => { return window.innerWidth >= 992; } const menu = [ { label: 'Home', items: [ {label: 'Dashboard', icon: 'pi pi-fw pi-home', to: '/'}, {label: 'Administradores del sistema', icon: PrimeIcons.USERS, to: '/administradoresSistema'}, {label: 'Administradores de comunidad', icon: PrimeIcons.USERS, to: '/administradoresComunidad'}, {label: 'Guardas de seguridad', icon: PrimeIcons.LOCK, to: '/guardasSeguridad'}, {label: 'Comunidadades', icon: PrimeIcons.BUILDING, to: '/comunidadesViviendas'}, {label: 'Inquilinos', icon: PrimeIcons.USER, to: '/inquilinos'}, {label: 'Log in', icon: 'pi pi-fw pi-id-card', to: '/logIn'} ] }, { label: 'UI Components', icon: 'pi pi-fw pi-sitemap', items: [ { label: 'Form Layout', icon: 'pi pi-fw pi-id-card', to: '/formlayout' }, { label: 'Input', icon: 'pi pi-fw pi-check-square', to: '/input' }, { label: "Float Label", icon: "pi pi-fw pi-bookmark", to: "/floatlabel" }, { label: "Invalid State", icon: "pi pi-fw pi-exclamation-circle", to: "invalidstate" }, { label: 'Button', icon: 'pi pi-fw pi-mobile', to: '/button' }, { label: 'Table', icon: 'pi pi-fw pi-table', to: '/table' }, { label: 'List', icon: 'pi pi-fw pi-list', to: '/list' }, { label: 'Tree', icon: 'pi pi-fw pi-share-alt', to: '/tree' }, { label: 'Panel', icon: 'pi pi-fw pi-tablet', to: '/panel' }, { label: 'Overlay', icon: 'pi pi-fw pi-clone', to: '/overlay' }, { label: "Media", icon: "pi pi-fw pi-image", to: "/media" }, { label: 'Menu', icon: 'pi pi-fw pi-bars', to: '/menu' }, { label: 'Message', icon: 'pi pi-fw pi-comment', to: '/messages' }, { label: 'File', icon: 'pi pi-fw pi-file', to: '/file' }, { label: 'Chart', icon: 'pi pi-fw pi-chart-bar', to: '/chart' }, { label: 'Misc', icon: 'pi pi-fw pi-circle-off', to: '/misc' }, ] }, { label: 'UI Blocks', items: [ { label: 'Free Blocks', icon: 'pi pi-fw pi-eye', to: '/blocks', badge: "NEW" }, { label: 'All Blocks', icon: 'pi pi-fw pi-globe', url: 'https://www.primefaces.org/primeblocks-react' } ] }, { label: 'Icons', items: [ { label: 'PrimeIcons', icon: 'pi pi-fw pi-prime', to: '/icons' } ] }, { label: 'Pages', icon: 'pi pi-fw pi-clone', items: [ { label: 'Crud', icon: 'pi pi-fw pi-user-edit', to: '/crud' }, { label: 'Timeline', icon: 'pi pi-fw pi-calendar', to: '/timeline' }, { label: 'Empty', icon: 'pi pi-fw pi-circle-off', to: '/empty' } ] }, { label: 'Menu Hierarchy', icon: 'pi pi-fw pi-search', items: [ { label: 'Submenu 1', icon: 'pi pi-fw pi-bookmark', items: [ { label: 'Submenu 1.1', icon: 'pi pi-fw pi-bookmark', items: [ { label: 'Submenu 1.1.1', icon: 'pi pi-fw pi-bookmark' }, { label: 'Submenu 1.1.2', icon: 'pi pi-fw pi-bookmark' }, { label: 'Submenu 1.1.3', icon: 'pi pi-fw pi-bookmark' }, ] }, { label: 'Submenu 1.2', icon: 'pi pi-fw pi-bookmark', items: [ { label: 'Submenu 1.2.1', icon: 'pi pi-fw pi-bookmark' }, { label: 'Submenu 1.2.2', icon: 'pi pi-fw pi-bookmark' } ] }, ] }, { label: 'Submenu 2', icon: 'pi pi-fw pi-bookmark', items: [ { label: 'Submenu 2.1', icon: 'pi pi-fw pi-bookmark', items: [ { label: 'Submenu 2.1.1', icon: 'pi pi-fw pi-bookmark' }, { label: 'Submenu 2.1.2', icon: 'pi pi-fw pi-bookmark' }, { label: 'Submenu 2.1.3', icon: 'pi pi-fw pi-bookmark' }, ] }, { label: 'Submenu 2.2', icon: 'pi pi-fw pi-bookmark', items: [ { label: 'Submenu 2.2.1', icon: 'pi pi-fw pi-bookmark' }, { label: 'Submenu 2.2.2', icon: 'pi pi-fw pi-bookmark' } ] } ] } ] } ]; const addClass = (element, className) => { if (element.classList) element.classList.add(className); else element.className += ' ' + className; } const removeClass = (element, className) => { if (element.classList) element.classList.remove(className); else element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); } const wrapperClass = classNames('layout-wrapper', { 'layout-overlay': layoutMode === 'overlay', 'layout-static': layoutMode === 'static', 'layout-static-sidebar-inactive': staticMenuInactive && layoutMode === 'static', 'layout-overlay-sidebar-active': overlayMenuActive && layoutMode === 'overlay', 'layout-mobile-sidebar-active': mobileMenuActive, 'p-input-filled': inputStyle === 'filled', 'p-ripple-disabled': ripple === false, 'layout-theme-light': layoutColorMode === 'light' }); return (
} /> } />
); } export default App;