Skip to content

Instantly share code, notes, and snippets.

View henev's full-sized avatar
👋

Hristo Enev henev

👋
View GitHub Profile
@henev
henev / index.js
Last active December 8, 2019 14:15
[React Router Layouts] Main file
import React from 'react';
import { BrowserRouter, Route, Link, Switch } from 'react-router-dom';
import { render } from 'react-dom';
import { One, Two, Three, Four } from './Components';
import { LayoutOne, LayoutTwo } from './Layouts';
function App() {
return (
<BrowserRouter>
<h3>Content of main App component</h3>
@henev
henev / Layouts.js
Created December 8, 2019 14:06
[React Router Layouts] Layouts
import React from 'react';
const LayoutOne = ({children}) =>
<div>
<h2>Layout One</h2>
{children}
</div>;
const LayoutTwo = ({children}) =>
<div>
@henev
henev / Components.js
Created December 8, 2019 14:04
[React Router Layouts] Components for the routes
import React from 'react';
const One = () => <h1>Content of page one</h1>;
const Two = () => <h1>Content of page two</h1>;
const Three = () => <h1>Content of page three</h1>;
const Four = () => <h1>Content of page four</h1>;
export { One, Two, Three, Four };
@henev
henev / index.js
Last active April 12, 2022 22:37
Toast/index.js
import { ToastProvider } from './ToastProvider';
import { useToast } from './useToast';
export { ToastProvider, useToast };
@henev
henev / useToast.js
Last active April 12, 2022 22:35
useToast Hook
import { useContext } from 'react';
import { ToastContext } from './ToastContext';
export const useToast = () => useContext(ToastContext);
@henev
henev / Toast.js
Last active April 12, 2022 22:30
Toast Component
import React from 'react';
import { useTimeout } from '../hooks/useTimeout';
export const Toast = (props) => {
useTimeout(props.close, 5000);
return (
<div className="toast">
<div className="toast__text">{props.children}</div>
<div>
@henev
henev / ToastProvider.js
Last active April 12, 2022 22:26
Toast Provider Component
import React, { useState, useMemo } from 'react';
import { createPortal } from 'react-dom';
import { ToastContext } from './ToastContext';
import { Toast } from './Toast';
// Create a random ID
function generateUEID() {
let first = (Math.random() * 46656) | 0;
let second = (Math.random() * 46656) | 0;
@henev
henev / ToastContext.js
Last active April 12, 2022 22:12
Toast Context
import { createContext } from 'react';
export const ToastContext = createContext();
@henev
henev / empty-response.interceptor.ts
Created August 2, 2018 07:16
In some cases API is returning empty response which cannot be parsed to JSON. If we have response type json angular will parse it automatically and return response error. In that case set response type to text and manually check if it is empty. If it is - return original event with null body. Else parse.
import { Injectable } from '@angular/core';
import {
HttpEvent,
HttpInterceptor,
HttpHandler,
HttpRequest,
HttpResponse
} from '@angular/common/http';
import { Observable } from 'rxjs/Observable';