4.5.0 • Published 4 months ago

@hsl-fi/site-header v4.5.0

Weekly downloads
265
License
-
Repository
-
Last release
4 months ago

SiteHeader

Default use-case

import SiteHeader from '@hsl-fi/site-header';

// HSL.fi-url, required
const hslFiUrl="https://www.hsl.fi";

//  Url for getting search suggestions, required
const suggestionsApiUrl = "https://content.hsl.fi/api/v1/search/suggestions";

// Your notification proxy endpoints.
// Note! Language parameter is required.
const notificationApiUrls = {
  get: '/your/api/notifications', // Should fetch `<HSL_FI_URL>/user/api/v1/notifications?language=<LANG>` with `{'x-hslid-token': <ID_TOKEN>}`-header
  post: '/your/api/notifications/read' // Should post to `<HSL_FI_URL>/user/api/v1/notifications/read?language=<LANG>` with `{'x-hslid-token': <ID_TOKEN>}`-header
}

// Language, "fi", "en" or "sv", required
const lang = "fi";

// Language menu, required
const languageMenu = [
  { name: 'fi', url: '/', onClick: () => void },
  { name: 'en', url: '/en', onClick: () => void  },
  { name: 'sv', url: '/sv', onClick: () => void  }
];

// User menu, required
const userMenu = {
  isAuthenticated: true, // When true, initials and user notifications are visible
  isLoading: false, // Show spinner while fetching auth-information
  isSelected: false, // Show active-indicator for user-menu icon
  initials: 'TH', // Authenticated user's initials
  loginUrl: 'https://service-abc.hsl.fi/user/auth/login',
  menuItems: [
    {
      name: 'Omat tiedot',
      url: 'https://www.hsl.fi/omat-tiedot',
      onClick: () => void
    },
    {
      name: 'Kirjaudu ulos',
      url: 'https://service-abc.hsl.fi/user/auth/logout',
      onClick: () => void
    }
  ],
};

// Number shown on top of cart icon, optional
const cartItemCount={1}
// Link url for when click on cart, optional
const cartUrl="/cart"

return (
  <SiteHeader
    hslFiUrl={hslFiUrl}
    lang={lang}
    languageMenu={languageMenu}
    userMenu={userMenu}
    suggestionsApiUrl={suggestionsApiUrl}
    notificationApiUrls={notificationApiUrls}
    cartItemCount={3}
    cartUrl="https://www.hsl.fi/cart"
  />
);

Advanced use-case

import { useRef } from 'react';
import SiteHeader from '@hsl-fi/site-header';

const siteHeaderRed = useRef(null);

useEffect(() => {
  // Refetch notifications
  siteHeaderRed.current.fetchNotifications();
}, [yourDependency]);

return (
  <SiteHeader
    ref={siteHeaderRef}
    hslFiUrl="https://www.hsl.fi"
    lang="fi"
    languageMenu={[
      { name: 'fi', url: '/' },
      { name: 'en', url: '/en' },
      { name: 'sv', url: '/sv' }
    ]}
    userTypeMenuOverride={[
      { name: 'Henkilöasiakkaalle', url: '/', isSelected: true },
      { name: 'Yrityksille', url: '/yrityksille', isSelected: false }
    ]}
    mainMenuOverride={[
      {
        name: 'Matkustaminen',
        url: 'https://www.hsl.fi/matkustaminen',
        isSelected: false,
        onClick: () => null
      },
      {
        name: 'Liput ja hinnat',
        url: 'https://www.hsl.fi/liput-ja-hinnat',
        isSelected: false,
        onClick: () => null
      },
      {
        name: 'Asiakaspalvelu',
        url: 'https://www.hsl.fi/asiakaspalvelu',
        isSelected: false,
        onClick: () => null
      },
      {
        name: 'HSL',
        url: 'https://www.hsl.fi/hsl',
        isSelected: false,
        onClick: () => null
      }
    ]}
    userMenu={{
      isLoading: false,
      isAuthenticated: true,
      initials: 'TH',
      loginUrl: '/user/auth/login',
      onLoginClick: () => null,
      menuItems: [
        {
          name: 'Omat tiedot',
          url: 'https://www.hsl.fi/omat-tiedot',
          onClick: () => null
        },
        {
          name: 'Kirjaudu ulos',
          url: 'https://service-abc.hsl.fi/user/auth/logout',
          onClick: () => null
        }
      ],
      isSelected: true
    }}
    notificationApiUrls={{
      get: '/your/api/notifications', // Should fetch `<HSL_FI_URL>/user/api/v1/notifications?language=<LANG>` with `{'x-hslid-token': <ID_TOKEN>}`-header
      post: '/your/api/notifications/read' // Should post to `<HSL_FI_URL>/user/api/v1/notifications/read?language=<LANG>` with `{'x-hslid-token': <ID_TOKEN>}`-header
    }}
    suggestionsApiUrl="https://content.hsl.fi/api/v1/search/suggestions"
    searchSelected={false}
    banners={[
      {
        body: 'Metroliikenne pysähtynyt määrittelemättömästä syystä — <a href="/hsl/uutiset/uutinen/2020/08/joukkoliikenne-ja-koronavirus---tietoa-matkustajalle">lue lisää</a>',
        priority: 'Primary'
      },
      {
        body: 'Koronavirus — katso päivitetyt <a href="/matkustaminen/korona">matkustusohjeet</a>',
        priority: 'Secondary'
      }
    ]}
  />
);
4.5.0

4 months ago

4.4.2-alpha.14

8 months ago

4.4.2-alpha.15

8 months ago

4.4.2-alpha.12

8 months ago

4.4.2-alpha.13

8 months ago

4.4.2-alpha.18

8 months ago

4.4.2-alpha.19

8 months ago

4.4.2-alpha.16

8 months ago

4.4.2-alpha.17

8 months ago

4.4.0-rc10

8 months ago

4.4.0-rc11

8 months ago

4.4.2-alpha.21

8 months ago

4.4.2-alpha.22

8 months ago

4.4.2-alpha.20

8 months ago

4.4.2-alpha.10

8 months ago

4.4.2-alpha.11

8 months ago

4.5.0-alpha.0

6 months ago

4.4.2-alpha.58

8 months ago

4.4.2-alpha.59

8 months ago

4.4.2-alpha.56

8 months ago

4.4.2-alpha.57

8 months ago

4.4.2-alpha.60

8 months ago

4.4.2-alpha.47

8 months ago

4.4.2-alpha.48

8 months ago

4.4.2-alpha.45

8 months ago

4.4.2-alpha.46

8 months ago

4.4.2-alpha.49

8 months ago

4.4.0-rc1

8 months ago

4.4.0-rc7

8 months ago

4.4.0-rc6

8 months ago

4.4.0-rc9

8 months ago

4.4.0-rc8

8 months ago

4.4.0-rc3

8 months ago

4.4.0-rc2

8 months ago

4.4.0-rc5

8 months ago

4.4.0-rc4

8 months ago

4.4.2-alpha.50

8 months ago

4.4.2-alpha.51

8 months ago

4.4.2-alpha.54

8 months ago

4.4.2-alpha.55

8 months ago

4.4.2-alpha.52

8 months ago

4.4.2-alpha.53

8 months ago

4.4.2-alpha.36

8 months ago

4.4.2-alpha.37

8 months ago

4.4.2-alpha.34

8 months ago

4.4.2-alpha.35

8 months ago

4.4.2-alpha.38

8 months ago

4.4.2-alpha.39

8 months ago

4.4.2-alpha.40

8 months ago

4.4.2-alpha.43

8 months ago

4.4.2-alpha.44

8 months ago

4.4.2-alpha.41

8 months ago

4.4.2-alpha.42

8 months ago

4.4.2-alpha.25

8 months ago

4.4.2-alpha.26

8 months ago

4.4.2-alpha.23

8 months ago

4.4.2-alpha.7

8 months ago

4.4.2-alpha.24

8 months ago

4.4.2-alpha.8

8 months ago

4.4.2-alpha.29

8 months ago

4.4.2-alpha.27

8 months ago

4.4.2-alpha.28

8 months ago

4.4.2-alpha.1

8 months ago

4.4.2-alpha.2

8 months ago

4.4.2-alpha.5

8 months ago

4.4.2-alpha.6

8 months ago

4.4.2-alpha.3

8 months ago

4.4.2-alpha.4

8 months ago

4.4.2-alpha.32

8 months ago

4.4.2-alpha.33

8 months ago

4.4.2-alpha.30

8 months ago

4.4.2-alpha.31

8 months ago

4.4.4

8 months ago

4.4.3-alpha.2

8 months ago

4.4.3-alpha.0

8 months ago

4.4.3-alpha.1

8 months ago

4.4.1-alpha-1

8 months ago

4.3.2

1 year ago

4.3.3

1 year ago

4.3.3-rc

1 year ago

4.3.0-rc1

1 year ago

4.3.0-rc2

1 year ago

4.3.1

1 year ago

4.3.0

1 year ago

4.2.2

2 years ago

4.2.1

2 years ago

4.1.0-rc5

2 years ago

4.1.0-rc1

2 years ago

4.1.0-rc2

2 years ago

4.1.0-rc3

2 years ago

4.1.0-rc4

2 years ago

4.2.0

2 years ago

4.0.0-rc14

2 years ago

4.0.0-rc13

2 years ago

4.0.0-rc16

2 years ago

4.0.0-rc15

2 years ago

4.0.0-rc17

2 years ago

4.0.0-rc10

2 years ago

4.0.0-rc12

2 years ago

4.0.0-rc11

2 years ago

4.0.0-rc8

2 years ago

4.0.0-rc9

2 years ago

4.0.0-rc6

2 years ago

4.0.0-rc7

2 years ago

4.0.0-rc4

2 years ago

4.0.0-rc5

2 years ago

4.0.0-rc2

2 years ago

4.0.0-rc3

2 years ago

4.0.0-rc1

2 years ago

3.2.0-rc1

2 years ago

3.1.1

2 years ago

3.0.8-rc1

3 years ago

3.0.8-rc2

3 years ago

3.0.8-rc3

3 years ago

3.1.0

2 years ago

3.0.4

3 years ago

3.0.7

3 years ago

3.0.6

3 years ago

3.0.5

3 years ago

3.0.3-rc

3 years ago

3.0.0-rc19

3 years ago

3.0.0-rc18

3 years ago

3.0.0-rc17

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

3.0.0-rc33

3 years ago

3.0.0-rc32

3 years ago

3.0.0-rc31

3 years ago

3.0.0-rc30

3 years ago

3.0.0-rc34

3 years ago

3.0.0-rc22

3 years ago

3.0.0-rc21

3 years ago

3.0.0-rc20

3 years ago

3.0.0-rc26

3 years ago

3.0.0-rc25

3 years ago

3.0.0-rc24

3 years ago

3.0.0-rc23

3 years ago

3.0.0-rc29

3 years ago

3.0.0-rc28

3 years ago

3.0.0-rc27

3 years ago

3.0.0-rc11

3 years ago

3.0.0-rc10

3 years ago

3.0.0-rc15

3 years ago

3.0.0-rc14

3 years ago

3.0.0-rc13

3 years ago

3.0.0-rc12

3 years ago

3.0.0-rc6

3 years ago

3.0.0-rc5

3 years ago

3.0.0-rc4

3 years ago

3.0.0-rc16

3 years ago

3.0.0-rc3

3 years ago

3.0.0-rc9

3 years ago

3.0.0-rc8

3 years ago

3.0.0-rc7

3 years ago

3.0.0-rc2

3 years ago

3.0.0-rc1

3 years ago

2.1.1

3 years ago

2.1.0

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.3

3 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.6.1

4 years ago

0.6.0

4 years ago

0.5.0

4 years ago

0.3.0

4 years ago

0.4.0

4 years ago

0.3.1

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.11

4 years ago

0.1.12

4 years ago

0.1.14

4 years ago

0.1.10

4 years ago

0.1.9

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago