Browse Source

Merge remote-tracking branch 'refs/remotes/origin/master'

master
박상현 8 months ago
parent
commit
202e42c7b0
  1. 2
      src/@core/layouts/HeaderLayout.js
  2. 151
      src/@core/layouts/HorizontalLayout.js
  3. 152
      src/@core/layouts/VerticalLayout.js
  4. 2
      src/@core/layouts/components/menu/vertical-menu/VerticalNavMenuGroup.js
  5. 2
      src/@core/layouts/components/menu/vertical-menu/VerticalNavMenuLink.js
  6. 23
      src/components/ui/collapse/index.tsx
  7. 4
      src/components/ui/custominput/index.tsx
  8. 6
      src/components/ui/index.tsx
  9. 22
      src/components/ui/input/index.tsx
  10. 2
      src/components/ui/nav/CustomNavLink.tsx
  11. 43
      src/components/ui/nav/CustomNavbar.tsx
  12. 3
      src/containers/cstmrService/faq/FaqContainer.js
  13. 7
      src/views/weather/WeatherView.js

2
src/@core/layouts/HeaderLayout.js

@ -14,7 +14,7 @@ import {
import classnames from 'classnames'; import classnames from 'classnames';
import { ArrowUp } from 'react-feather'; import { ArrowUp } from 'react-feather';
import ScrollToTop from 'react-scroll-up'; import ScrollToTop from 'react-scroll-up';
import { Navbar, Button } from 'reactstrap'; import { Navbar, Button } from '../../components/ui/index';
// ** Configs // ** Configs
import themeConfig from '@configs/themeConfig'; import themeConfig from '@configs/themeConfig';

151
src/@core/layouts/HorizontalLayout.js

@ -1,123 +1,128 @@
// ** React Imports // ** React Imports
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react';
import { Link } from 'react-router-dom' import { Link } from 'react-router-dom';
// ** Store & Actions // ** Store & Actions
import { useSelector, useDispatch } from 'react-redux' import { useSelector, useDispatch } from 'react-redux';
import { handleMenuHidden, handleContentWidth } from '@store/actions/layout' import { handleMenuHidden, handleContentWidth } from '@store/actions/layout';
// ** Third Party Components // ** Third Party Components
import classnames from 'classnames' import classnames from 'classnames';
import { ArrowUp } from 'react-feather' import { ArrowUp } from 'react-feather';
import ScrollToTop from 'react-scroll-up' import ScrollToTop from 'react-scroll-up';
import { Navbar, NavItem, Button } from 'reactstrap' import { Navbar, NavItem, Button } from '../../components/ui/index';
// ** Configs // ** Configs
import themeConfig from '@configs/themeConfig' import themeConfig from '@configs/themeConfig';
// ** Custom Components // ** Custom Components
import Customizer from '@components/customizer' import Customizer from '@components/customizer';
import NavbarComponent from './components/navbar' import NavbarComponent from './components/navbar';
import FooterComponent from './components/footer' import FooterComponent from './components/footer';
import MenuComponent from './components/menu/horizontal-menu' import MenuComponent from './components/menu/horizontal-menu';
// ** Custom Hooks // ** Custom Hooks
import { useRTL } from '@hooks/useRTL' import { useRTL } from '@hooks/useRTL';
import { useSkin } from '@hooks/useSkin' import { useSkin } from '@hooks/useSkin';
import { useNavbarType } from '@hooks/useNavbarType' import { useNavbarType } from '@hooks/useNavbarType';
import { useFooterType } from '@hooks/useFooterType' import { useFooterType } from '@hooks/useFooterType';
import { useNavbarColor } from '@hooks/useNavbarColor' import { useNavbarColor } from '@hooks/useNavbarColor';
// ** Styles // ** Styles
import '@styles/base/core/menu/menu-types/horizontal-menu.scss' import '@styles/base/core/menu/menu-types/horizontal-menu.scss';
const HorizontalLayout = props => { const HorizontalLayout = props => {
// ** Props // ** Props
const { children, navbar, footer, menu, currentActiveItem, routerProps } = props const { children, navbar, footer, menu, currentActiveItem, routerProps } =
props;
// ** Hooks // ** Hooks
const [skin, setSkin] = useSkin() const [skin, setSkin] = useSkin();
const [isRtl, setIsRtl] = useRTL() const [isRtl, setIsRtl] = useRTL();
const [navbarType, setNavbarType] = useNavbarType() const [navbarType, setNavbarType] = useNavbarType();
const [footerType, setFooterType] = useFooterType() const [footerType, setFooterType] = useFooterType();
const [navbarColor, setNavbarColor] = useNavbarColor() const [navbarColor, setNavbarColor] = useNavbarColor();
// ** States // ** States
const [isMounted, setIsMounted] = useState(false) const [isMounted, setIsMounted] = useState(false);
const [navbarScrolled, setNavbarScrolled] = useState(false) const [navbarScrolled, setNavbarScrolled] = useState(false);
// ** Store Vars // ** Store Vars
const dispatch = useDispatch() const dispatch = useDispatch();
const layoutStore = useSelector(state => state.layout) const layoutStore = useSelector(state => state.layout);
// ** Vars // ** Vars
const contentWidth = layoutStore.contentWidth const contentWidth = layoutStore.contentWidth;
const isHidden = layoutStore.menuHidden const isHidden = layoutStore.menuHidden;
// ** Handles Content Width // ** Handles Content Width
const setContentWidth = val => dispatch(handleContentWidth(val)) const setContentWidth = val => dispatch(handleContentWidth(val));
// ** Handles Content Width // ** Handles Content Width
const setIsHidden = val => dispatch(handleMenuHidden(val)) const setIsHidden = val => dispatch(handleMenuHidden(val));
// ** UseEffect Cleanup // ** UseEffect Cleanup
const cleanup = () => { const cleanup = () => {
setIsMounted(false) setIsMounted(false);
setNavbarScrolled(false) setNavbarScrolled(false);
} };
//** ComponentDidMount //** ComponentDidMount
useEffect(() => { useEffect(() => {
setIsMounted(true) setIsMounted(true);
window.addEventListener('scroll', function () { window.addEventListener('scroll', function () {
if (window.pageYOffset > 65 && navbarScrolled === false) { if (window.pageYOffset > 65 && navbarScrolled === false) {
setNavbarScrolled(true) setNavbarScrolled(true);
} }
if (window.pageYOffset < 65) { if (window.pageYOffset < 65) {
setNavbarScrolled(false) setNavbarScrolled(false);
} }
}) });
return () => cleanup() return () => cleanup();
}, []) }, []);
// ** Vars // ** Vars
const footerClasses = { const footerClasses = {
static: 'footer-static', static: 'footer-static',
sticky: 'footer-fixed', sticky: 'footer-fixed',
hidden: 'footer-hidden' hidden: 'footer-hidden'
} };
const navbarWrapperClasses = { const navbarWrapperClasses = {
floating: 'navbar-floating', floating: 'navbar-floating',
sticky: 'navbar-sticky', sticky: 'navbar-sticky',
static: 'navbar-static' static: 'navbar-static'
} };
const navbarClasses = { const navbarClasses = {
floating: 'floating-nav', floating: 'floating-nav',
sticky: 'fixed-top' sticky: 'fixed-top'
} };
const bgColorCondition = navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white' const bgColorCondition =
navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white';
if (!isMounted) { if (!isMounted) {
return null return null;
} }
return ( return (
<div <div
className={classnames( className={classnames(
`wrapper horizontal-layout horizontal-menu ${navbarWrapperClasses[navbarType] || 'navbar-floating'} ${ `wrapper horizontal-layout horizontal-menu ${
footerClasses[footerType] || 'footer-static' navbarWrapperClasses[navbarType] || 'navbar-floating'
} menu-expanded` } ${footerClasses[footerType] || 'footer-static'} menu-expanded`
)} )}
{...(isHidden ? { 'data-col': '1-column' } : {})} {...(isHidden ? { 'data-col': '1-column' } : {})}
> >
<Navbar <Navbar
expand='lg' expand='lg'
className={classnames('header-navbar navbar-fixed align-items-center navbar-shadow navbar-brand-center', { className={classnames(
'header-navbar navbar-fixed align-items-center navbar-shadow navbar-brand-center',
{
'navbar-scrolled': navbarScrolled 'navbar-scrolled': navbarScrolled
})} }
)}
> >
{!navbar && ( {!navbar && (
<div className='navbar-header d-xl-block d-none'> <div className='navbar-header d-xl-block d-none'>
@ -145,12 +150,24 @@ const HorizontalLayout = props => {
expand='sm' expand='sm'
light={skin !== 'dark'} light={skin !== 'dark'}
dark={skin === 'dark' || bgColorCondition} dark={skin === 'dark' || bgColorCondition}
className={classnames(`header-navbar navbar-horizontal navbar-shadow menu-border`, { className={classnames(
`header-navbar navbar-horizontal navbar-shadow menu-border`,
{
[navbarClasses[navbarType]]: navbarType !== 'static', [navbarClasses[navbarType]]: navbarType !== 'static',
'floating-nav': (!navbarClasses[navbarType] && navbarType !== 'static') || navbarType === 'floating' 'floating-nav':
})} (!navbarClasses[navbarType] && navbarType !== 'static') ||
navbarType === 'floating'
}
)}
> >
{menu ? menu : <MenuComponent routerProps={routerProps} currentActiveItem={currentActiveItem} />} {menu ? (
menu
) : (
<MenuComponent
routerProps={routerProps}
currentActiveItem={currentActiveItem}
/>
)}
</Navbar> </Navbar>
</div> </div>
) : null} ) : null}
@ -180,11 +197,21 @@ const HorizontalLayout = props => {
/> />
) : null} ) : null}
<footer <footer
className={classnames(`footer footer-light ${footerClasses[footerType] || 'footer-static'}`, { className={classnames(
`footer footer-light ${footerClasses[footerType] || 'footer-static'}`,
{
'd-none': footerType === 'hidden' 'd-none': footerType === 'hidden'
})} }
)}
> >
{footer ? footer : <FooterComponent footerType={footerType} footerClasses={footerClasses} />} {footer ? (
footer
) : (
<FooterComponent
footerType={footerType}
footerClasses={footerClasses}
/>
)}
</footer> </footer>
{themeConfig.layout.scrollTop === true ? ( {themeConfig.layout.scrollTop === true ? (
@ -197,6 +224,6 @@ const HorizontalLayout = props => {
</div> </div>
) : null} ) : null}
</div> </div>
) );
} };
export default HorizontalLayout export default HorizontalLayout;

152
src/@core/layouts/VerticalLayout.js

@ -1,129 +1,135 @@
// ** React Imports // ** React Imports
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react';
import { useLocation } from 'react-router-dom' import { useLocation } from 'react-router-dom';
// ** Store & Actions // ** Store & Actions
import { useSelector, useDispatch } from 'react-redux' import { useSelector, useDispatch } from 'react-redux';
import { handleMenuCollapsed, handleContentWidth, handleMenuHidden } from '@store/actions/layout' import {
handleMenuCollapsed,
handleContentWidth,
handleMenuHidden
} from '@store/actions/layout';
// ** Third Party Components // ** Third Party Components
import classnames from 'classnames' import classnames from 'classnames';
import { ArrowUp } from 'react-feather' import { ArrowUp } from 'react-feather';
import ScrollToTop from 'react-scroll-up' import ScrollToTop from 'react-scroll-up';
import { Navbar, Button } from 'reactstrap' import { Navbar, Button } from '../../components/ui/index';
// ** Configs // ** Configs
import themeConfig from '@configs/themeConfig' import themeConfig from '@configs/themeConfig';
// ** Custom Components // ** Custom Components
import Customizer from '@components/customizer' import Customizer from '@components/customizer';
import FooterComponent from './components/footer' import FooterComponent from './components/footer';
import NavbarComponent from './components/navbar' import NavbarComponent from './components/navbar';
import SidebarComponent from './components/menu/vertical-menu' import SidebarComponent from './components/menu/vertical-menu';
// ** Custom Hooks // ** Custom Hooks
import { useRTL } from '@hooks/useRTL' import { useRTL } from '@hooks/useRTL';
import { useSkin } from '@hooks/useSkin' import { useSkin } from '@hooks/useSkin';
import { useNavbarType } from '@hooks/useNavbarType' import { useNavbarType } from '@hooks/useNavbarType';
import { useFooterType } from '@hooks/useFooterType' import { useFooterType } from '@hooks/useFooterType';
import { useNavbarColor } from '@hooks/useNavbarColor' import { useNavbarColor } from '@hooks/useNavbarColor';
// ** Styles // ** Styles
import '@styles/base/core/menu/menu-types/vertical-menu.scss' import '@styles/base/core/menu/menu-types/vertical-menu.scss';
import '@styles/base/core/menu/menu-types/vertical-overlay-menu.scss' import '@styles/base/core/menu/menu-types/vertical-overlay-menu.scss';
const VerticalLayout = props => { const VerticalLayout = props => {
// ** Props // ** Props
const { children, navbar, footer, menu, routerProps, currentActiveItem } = props const { children, navbar, footer, menu, routerProps, currentActiveItem } =
props;
// ** Hooks // ** Hooks
const [skin, setSkin] = useSkin() const [skin, setSkin] = useSkin();
const [isRtl, setIsRtl] = useRTL() const [isRtl, setIsRtl] = useRTL();
const [navbarType, setNavbarType] = useNavbarType() const [navbarType, setNavbarType] = useNavbarType();
const [footerType, setFooterType] = useFooterType() const [footerType, setFooterType] = useFooterType();
const [navbarColor, setNavbarColor] = useNavbarColor() const [navbarColor, setNavbarColor] = useNavbarColor();
// ** States // ** States
const [isMounted, setIsMounted] = useState(false) const [isMounted, setIsMounted] = useState(false);
const [menuVisibility, setMenuVisibility] = useState(false) const [menuVisibility, setMenuVisibility] = useState(false);
const [windowWidth, setWindowWidth] = useState(window.innerWidth) const [windowWidth, setWindowWidth] = useState(window.innerWidth);
// ** Store Vars // ** Store Vars
const dispatch = useDispatch() const dispatch = useDispatch();
const layoutStore = useSelector(state => state.layout) const layoutStore = useSelector(state => state.layout);
// ** Update Window Width // ** Update Window Width
const handleWindowWidth = () => { const handleWindowWidth = () => {
setWindowWidth(window.innerWidth) setWindowWidth(window.innerWidth);
} };
// ** Vars // ** Vars
const location = useLocation() const location = useLocation();
const contentWidth = layoutStore.contentWidth const contentWidth = layoutStore.contentWidth;
const menuCollapsed = layoutStore.menuCollapsed const menuCollapsed = layoutStore.menuCollapsed;
const isHidden = layoutStore.menuHidden const isHidden = layoutStore.menuHidden;
// ** Toggles Menu Collapsed // ** Toggles Menu Collapsed
const setMenuCollapsed = val => dispatch(handleMenuCollapsed(val)) const setMenuCollapsed = val => dispatch(handleMenuCollapsed(val));
// ** Handles Content Width // ** Handles Content Width
const setContentWidth = val => dispatch(handleContentWidth(val)) const setContentWidth = val => dispatch(handleContentWidth(val));
// ** Handles Content Width // ** Handles Content Width
const setIsHidden = val => dispatch(handleMenuHidden(val)) const setIsHidden = val => dispatch(handleMenuHidden(val));
//** This function will detect the Route Change and will hide the menu on menu item click //** This function will detect the Route Change and will hide the menu on menu item click
useEffect(() => { useEffect(() => {
if (menuVisibility && windowWidth < 1200) { if (menuVisibility && windowWidth < 1200) {
setMenuVisibility(false) setMenuVisibility(false);
} }
}, [location]) }, [location]);
//** Sets Window Size & Layout Props //** Sets Window Size & Layout Props
useEffect(() => { useEffect(() => {
if (window !== undefined) { if (window !== undefined) {
window.addEventListener('resize', handleWindowWidth) window.addEventListener('resize', handleWindowWidth);
} }
}, [windowWidth]) }, [windowWidth]);
//** ComponentDidMount //** ComponentDidMount
useEffect(() => { useEffect(() => {
setIsMounted(true) setIsMounted(true);
return () => setIsMounted(false) return () => setIsMounted(false);
}, []) }, []);
// ** Vars // ** Vars
const footerClasses = { const footerClasses = {
static: 'footer-static', static: 'footer-static',
sticky: 'footer-fixed', sticky: 'footer-fixed',
hidden: 'footer-hidden' hidden: 'footer-hidden'
} };
const navbarWrapperClasses = { const navbarWrapperClasses = {
floating: 'navbar-floating', floating: 'navbar-floating',
sticky: 'navbar-sticky', sticky: 'navbar-sticky',
static: 'navbar-static', static: 'navbar-static',
hidden: 'navbar-hidden' hidden: 'navbar-hidden'
} };
const navbarClasses = { const navbarClasses = {
floating: 'floating-nav', floating: 'floating-nav',
sticky: 'fixed-top', sticky: 'fixed-top',
static: 'navbar-static-top', static: 'navbar-static-top',
hidden: 'd-none' hidden: 'd-none'
} };
const bgColorCondition = navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white' const bgColorCondition =
navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white';
if (!isMounted) { if (!isMounted) {
return null return null;
} }
return ( return (
<div <div
className={classnames( className={classnames(
`wrapper vertical-layout ${navbarWrapperClasses[navbarType] || 'navbar-floating'} ${ `wrapper vertical-layout ${
footerClasses[footerType] || 'footer-static' navbarWrapperClasses[navbarType] || 'navbar-floating'
}`, } ${footerClasses[footerType] || 'footer-static'}`,
{ {
// Modern Menu // Modern Menu
'vertical-menu-modern': windowWidth >= 1200, 'vertical-menu-modern': windowWidth >= 1200,
@ -157,11 +163,21 @@ const VerticalLayout = props => {
dark={skin === 'dark' || bgColorCondition} dark={skin === 'dark' || bgColorCondition}
color={bgColorCondition ? navbarColor : undefined} color={bgColorCondition ? navbarColor : undefined}
className={classnames( className={classnames(
`header-navbar navbar align-items-center ${navbarClasses[navbarType] || 'floating-nav'} navbar-shadow` `header-navbar navbar align-items-center ${
navbarClasses[navbarType] || 'floating-nav'
} navbar-shadow`
)} )}
> >
<div className='navbar-container d-flex content'> <div className='navbar-container d-flex content'>
{navbar ? navbar : <NavbarComponent setMenuVisibility={setMenuVisibility} skin={skin} setSkin={setSkin} />} {navbar ? (
navbar
) : (
<NavbarComponent
setMenuVisibility={setMenuVisibility}
skin={skin}
setSkin={setSkin}
/>
)}
</div> </div>
</Navbar> </Navbar>
{children} {children}
@ -201,11 +217,21 @@ const VerticalLayout = props => {
/> />
) : null} ) : null}
<footer <footer
className={classnames(`footer footer-light ${footerClasses[footerType] || 'footer-static'}`, { className={classnames(
`footer footer-light ${footerClasses[footerType] || 'footer-static'}`,
{
'd-none': footerType === 'hidden' 'd-none': footerType === 'hidden'
})} }
)}
> >
{footer ? footer : <FooterComponent footerType={footerType} footerClasses={footerClasses} />} {footer ? (
footer
) : (
<FooterComponent
footerType={footerType}
footerClasses={footerClasses}
/>
)}
</footer> </footer>
{themeConfig.layout.scrollTop === true ? ( {themeConfig.layout.scrollTop === true ? (
@ -218,7 +244,7 @@ const VerticalLayout = props => {
</div> </div>
) : null} ) : null}
</div> </div>
) );
} };
export default VerticalLayout export default VerticalLayout;

2
src/@core/layouts/components/menu/vertical-menu/VerticalNavMenuGroup.js

@ -4,7 +4,7 @@ import { Link, useLocation } from 'react-router-dom';
// ** Third Party Components // ** Third Party Components
import classnames from 'classnames'; import classnames from 'classnames';
import { Collapse, Badge } from 'reactstrap'; import { Collapse, Badge } from '../../../../../components/ui/index';
// ** Vertical Menu Items Component // ** Vertical Menu Items Component
import VerticalNavMenuItems from './VerticalNavMenuItems'; import VerticalNavMenuItems from './VerticalNavMenuItems';

2
src/@core/layouts/components/menu/vertical-menu/VerticalNavMenuLink.js

@ -9,7 +9,7 @@ import classnames from 'classnames';
import { useEffect } from 'react'; import { useEffect } from 'react';
import { matchPath, NavLink, useLocation } from 'react-router-dom'; import { matchPath, NavLink, useLocation } from 'react-router-dom';
// ** Third Party Components // ** Third Party Components
import { Badge } from 'reactstrap'; import { Badge } from '../../../../../components/ui/index';
const VerticalNavMenuLink = ({ const VerticalNavMenuLink = ({
item, item,

23
src/components/ui/collapse/index.tsx

@ -0,0 +1,23 @@
import { ReactNode } from 'react';
import { Collapse } from 'reactstrap';
interface Props {
children: ReactNode;
className?: string;
isOpen?: boolean;
}
/**
*
* @param children: ReactNode
* @param className?:string
* @param isOpen?:boolean
*/
export default function CustomCollapse({ children, className, isOpen }: Props) {
return (
<Collapse className={className} isOpen={isOpen}>
{children}
</Collapse>
);
}

4
src/components/ui/custominput/index.tsx

@ -1,5 +1,3 @@
'use client';
import { read } from 'fs';
import { ChangeEvent, MouseEventHandler, ReactNode } from 'react'; import { ChangeEvent, MouseEventHandler, ReactNode } from 'react';
import { CustomInput } from 'reactstrap'; import { CustomInput } from 'reactstrap';
@ -48,7 +46,7 @@ export default function CustomInputs({
name, name,
readOnly, readOnly,
type, type,
inline = false, inline,
bsSize bsSize
}: Props) { }: Props) {
return ( return (

6
src/components/ui/index.tsx

@ -7,11 +7,13 @@ import CardTitle from './card/CustomCardTitle';
import CardHeader from './card/CustomCardHeader'; import CardHeader from './card/CustomCardHeader';
import Col from './Col/index'; import Col from './Col/index';
import From from './form/CustomForm'; import From from './form/CustomForm';
import Collapse from './collapse/index';
import FormGroup from './form/CustomFormGroup'; import FormGroup from './form/CustomFormGroup';
import FormFeedback from './form/CustomFormFeedback'; import FormFeedback from './form/CustomFormFeedback';
import Input from './input'; import Input from './input';
import Label from './label'; import Label from './label';
import Row from './row'; import Row from './row';
import Navbar from './nav/CustomNavbar';
import InputGroup from './input/CustomInputGroup'; import InputGroup from './input/CustomInputGroup';
import InputGroupText from './input/CustomInputGroupText'; import InputGroupText from './input/CustomInputGroupText';
import Spinner from './spinner'; import Spinner from './spinner';
@ -64,5 +66,7 @@ export {
ModalBody, ModalBody,
ModalFooter, ModalFooter,
Form, Form,
Media Media,
Collapse,
Navbar
}; };

22
src/components/ui/input/index.tsx

@ -27,6 +27,28 @@ interface Props {
onKeyPress?: (event: React.KeyboardEvent<HTMLInputElement>) => void; onKeyPress?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
} }
/**
* @param children: ReactNode
* @param className?:string
* @param readOnly?:boolean default false
* @param checked?:boolean
* @param label?:string
* @param id?:string
* @param onClick?:MouseEventHandler<HTMLButtonElement>
* @param onChange?:MouseEventHandler<HTMLButtonElement>
* @param value?:any
* @param name?:string
* @param type?:string
* @param bsSize?: "lg" | "sm"
* @param inline?:boolean default
* @param placeholder?:string
* @param disabled?:boolean default false
* @param onBlur?:(event: React.FocusEvent<HTMLInputElement>) => void
* @param onKeyPress?:(event: React.KeyboardEvent<HTMLInputElement>) => void
* @param ref?: ForwardedRef<HTMLInputElement>
*
*/
const CustomInput = forwardRef<HTMLInputElement, Props>( const CustomInput = forwardRef<HTMLInputElement, Props>(
( (
{ {

2
src/components/ui/nav/CustomNavLink.tsx

@ -15,7 +15,7 @@ export default function CustomNavLink({
onClick onClick
}: Props) { }: Props) {
return ( return (
<NavLink className={className} onClick={onClick}> <NavLink className={className} onClick={onClick} active={active}>
{children} {children}
</NavLink> </NavLink>
); );

43
src/components/ui/nav/CustomNavbar.tsx

@ -0,0 +1,43 @@
import { ReactNode } from 'react';
import { Navbar } from 'reactstrap';
import { StringLocale } from 'yup/lib/locale';
interface Props {
children: ReactNode;
tag?: String;
expand?: 'sm' | 'md' | 'lg' | 'xl';
light?: boolean;
dark?: boolean;
className?: string;
}
/**
*
* @param children: ReactNode
* @param tag?: String
* @param expand?: 'sm' | 'md'| 'lg' | 'xl'
* @param light?: boolean
* @param dark?: boolean
* @param className?: string
*/
export default function CustomNavbar({
children,
tag,
expand,
light,
dark,
className
}: Props) {
return (
<Navbar
tag={tag}
expand={expand}
className={className}
light={light}
dark={dark}
>
{children}
</Navbar>
);
}

3
src/containers/cstmrService/faq/FaqContainer.js

@ -1,6 +1,7 @@
import { useCallback, useEffect, useLayoutEffect, useState } from 'react'; import { useCallback, useEffect, useLayoutEffect, useState } from 'react';
import { useSelector, useDispatch } from 'react-redux'; import { useSelector, useDispatch } from 'react-redux';
import { Button, TabContent, TabPane } from 'reactstrap'; import { TabContent, TabPane } from '../../../components/ui/index';
import { Button } from 'reactstrap';
import AppCollapse from '@components/app-collapse'; import AppCollapse from '@components/app-collapse';
import { import {
LIST, LIST,

7
src/views/weather/WeatherView.js

@ -2,7 +2,12 @@ import { WINDY_KEY } from '../../configs/constants';
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Search } from 'react-feather'; import { Search } from 'react-feather';
import '../../assets/css/custom.css'; import '../../assets/css/custom.css';
import { Input, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap'; import {
Input,
InputGroup,
InputGroupAddon,
InputGroupText
} from '../../components/ui/index';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { laancApi } from '../../modules/laanc/apis/laancApi'; import { laancApi } from '../../modules/laanc/apis/laancApi';

Loading…
Cancel
Save