@veracity/vui 2.7.0 → 2.8.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/breadcrumbs/breadcrumbs.d.ts.map +1 -1
- package/dist/cjs/breadcrumbs/breadcrumbs.js +7 -3
- package/dist/cjs/breadcrumbs/breadcrumbs.types.d.ts +0 -3
- package/dist/cjs/breadcrumbs/breadcrumbs.types.d.ts.map +1 -1
- package/dist/cjs/breadcrumbs/breadcrumbsItem.d.ts.map +1 -1
- package/dist/cjs/breadcrumbs/breadcrumbsItem.js +2 -6
- package/dist/cjs/breadcrumbs/breadcrumbsSeparator.d.ts.map +1 -1
- package/dist/cjs/breadcrumbs/breadcrumbsSeparator.js +4 -1
- package/dist/cjs/breadcrumbs/theme.d.ts +66 -4
- package/dist/cjs/breadcrumbs/theme.d.ts.map +1 -1
- package/dist/cjs/breadcrumbs/theme.js +61 -5
- package/dist/cjs/footer/footer.d.ts.map +1 -1
- package/dist/cjs/footer/footer.js +21 -4
- package/dist/cjs/footer/footer.types.d.ts +3 -0
- package/dist/cjs/footer/footer.types.d.ts.map +1 -1
- package/dist/cjs/header/header.d.ts +2 -0
- package/dist/cjs/header/header.d.ts.map +1 -1
- package/dist/cjs/header/header.js +2 -0
- package/dist/cjs/header/header.types.d.ts +14 -0
- package/dist/cjs/header/header.types.d.ts.map +1 -1
- package/dist/cjs/header/headerAccount.d.ts +1 -0
- package/dist/cjs/header/headerAccount.d.ts.map +1 -1
- package/dist/cjs/header/headerAccount.js +4 -9
- package/dist/cjs/header/headerAccountUserInfo.js +2 -2
- package/dist/cjs/header/headerLinkItem.js +2 -2
- package/dist/cjs/header/headerMainLinks.d.ts.map +1 -1
- package/dist/cjs/header/headerMainLinks.js +0 -1
- package/dist/cjs/header/headerMobileContent.d.ts.map +1 -1
- package/dist/cjs/header/headerMobileContent.js +2 -1
- package/dist/cjs/header/headerServices.d.ts.map +1 -1
- package/dist/cjs/header/headerServices.js +5 -4
- package/dist/cjs/header/headerSupport.d.ts +5 -0
- package/dist/cjs/header/headerSupport.d.ts.map +1 -0
- package/dist/cjs/header/headerSupport.js +45 -0
- package/dist/cjs/header/loggedInHeader.d.ts.map +1 -1
- package/dist/cjs/header/loggedInHeader.js +51 -8
- package/dist/cjs/icons/baseIcons/cul/culDatasetAlt.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/cul/culDatasetAlt.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/cul/culDatasetAlt.js +8 -0
- package/dist/cjs/icons/baseIcons/icons.d.ts +1 -0
- package/dist/cjs/icons/baseIcons/icons.d.ts.map +1 -1
- package/dist/cjs/icons/baseIcons/icons.js +10 -8
- package/dist/cjs/icons/baseIcons/types.d.ts +1 -1
- package/dist/cjs/icons/baseIcons/types.d.ts.map +1 -1
- package/dist/cjs/theme/components.d.ts +109 -35
- package/dist/cjs/theme/components.d.ts.map +1 -1
- package/dist/cjs/theme/defaultTheme.d.ts +109 -35
- package/dist/cjs/theme/defaultTheme.d.ts.map +1 -1
- package/dist/cjs/tree/theme.d.ts +43 -33
- package/dist/cjs/tree/theme.d.ts.map +1 -1
- package/dist/cjs/tree/theme.js +48 -43
- package/dist/cjs/tree/tree.d.ts.map +1 -1
- package/dist/cjs/tree/tree.js +4 -2
- package/dist/cjs/tree/tree.types.d.ts +10 -3
- package/dist/cjs/tree/tree.types.d.ts.map +1 -1
- package/dist/cjs/tree/treeItem.d.ts +2 -2
- package/dist/cjs/tree/treeItem.d.ts.map +1 -1
- package/dist/cjs/tree/treeItem.js +64 -43
- package/dist/cjs/tutorial/tutorialCard.d.ts.map +1 -1
- package/dist/cjs/tutorial/tutorialCard.js +3 -2
- package/dist/cjs/utils/styles.d.ts +1 -2
- package/dist/cjs/utils/styles.d.ts.map +1 -1
- package/dist/cjs/utils/styles.js +14 -6
- package/dist/esm/breadcrumbs/breadcrumbs.d.ts.map +1 -1
- package/dist/esm/breadcrumbs/breadcrumbs.js +7 -3
- package/dist/esm/breadcrumbs/breadcrumbs.types.d.ts +0 -3
- package/dist/esm/breadcrumbs/breadcrumbs.types.d.ts.map +1 -1
- package/dist/esm/breadcrumbs/breadcrumbsItem.d.ts.map +1 -1
- package/dist/esm/breadcrumbs/breadcrumbsItem.js +2 -6
- package/dist/esm/breadcrumbs/breadcrumbsSeparator.d.ts.map +1 -1
- package/dist/esm/breadcrumbs/breadcrumbsSeparator.js +6 -1
- package/dist/esm/breadcrumbs/theme.d.ts +66 -4
- package/dist/esm/breadcrumbs/theme.d.ts.map +1 -1
- package/dist/esm/breadcrumbs/theme.js +61 -5
- package/dist/esm/footer/footer.d.ts.map +1 -1
- package/dist/esm/footer/footer.js +21 -4
- package/dist/esm/footer/footer.types.d.ts +3 -0
- package/dist/esm/footer/footer.types.d.ts.map +1 -1
- package/dist/esm/header/header.d.ts +2 -0
- package/dist/esm/header/header.d.ts.map +1 -1
- package/dist/esm/header/header.js +2 -0
- package/dist/esm/header/header.types.d.ts +14 -0
- package/dist/esm/header/header.types.d.ts.map +1 -1
- package/dist/esm/header/headerAccount.d.ts +1 -0
- package/dist/esm/header/headerAccount.d.ts.map +1 -1
- package/dist/esm/header/headerAccount.js +5 -10
- package/dist/esm/header/headerAccountUserInfo.js +2 -2
- package/dist/esm/header/headerLinkItem.js +2 -2
- package/dist/esm/header/headerMainLinks.d.ts.map +1 -1
- package/dist/esm/header/headerMainLinks.js +0 -1
- package/dist/esm/header/headerMobileContent.d.ts.map +1 -1
- package/dist/esm/header/headerMobileContent.js +3 -2
- package/dist/esm/header/headerServices.d.ts.map +1 -1
- package/dist/esm/header/headerServices.js +5 -4
- package/dist/esm/header/headerSupport.d.ts +5 -0
- package/dist/esm/header/headerSupport.d.ts.map +1 -0
- package/dist/esm/header/headerSupport.js +27 -0
- package/dist/esm/header/loggedInHeader.d.ts.map +1 -1
- package/dist/esm/header/loggedInHeader.js +46 -9
- package/dist/esm/icons/baseIcons/cul/culDatasetAlt.d.ts +4 -0
- package/dist/esm/icons/baseIcons/cul/culDatasetAlt.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/cul/culDatasetAlt.js +6 -0
- package/dist/esm/icons/baseIcons/icons.d.ts +1 -0
- package/dist/esm/icons/baseIcons/icons.d.ts.map +1 -1
- package/dist/esm/icons/baseIcons/icons.js +1 -0
- package/dist/esm/icons/baseIcons/types.d.ts +1 -1
- package/dist/esm/icons/baseIcons/types.d.ts.map +1 -1
- package/dist/esm/theme/components.d.ts +109 -35
- package/dist/esm/theme/components.d.ts.map +1 -1
- package/dist/esm/theme/defaultTheme.d.ts +109 -35
- package/dist/esm/theme/defaultTheme.d.ts.map +1 -1
- package/dist/esm/tree/theme.d.ts +43 -33
- package/dist/esm/tree/theme.d.ts.map +1 -1
- package/dist/esm/tree/theme.js +48 -43
- package/dist/esm/tree/tree.d.ts.map +1 -1
- package/dist/esm/tree/tree.js +4 -2
- package/dist/esm/tree/tree.types.d.ts +10 -3
- package/dist/esm/tree/tree.types.d.ts.map +1 -1
- package/dist/esm/tree/treeItem.d.ts +2 -2
- package/dist/esm/tree/treeItem.d.ts.map +1 -1
- package/dist/esm/tree/treeItem.js +63 -45
- package/dist/esm/tutorial/tutorialCard.d.ts.map +1 -1
- package/dist/esm/tutorial/tutorialCard.js +3 -2
- package/dist/esm/utils/styles.d.ts +1 -2
- package/dist/esm/utils/styles.d.ts.map +1 -1
- package/dist/esm/utils/styles.js +12 -4
- package/package.json +1 -1
- package/src/breadcrumbs/breadcrumbs.tsx +14 -3
- package/src/breadcrumbs/breadcrumbs.types.ts +0 -3
- package/src/breadcrumbs/breadcrumbsItem.tsx +2 -7
- package/src/breadcrumbs/breadcrumbsSeparator.tsx +11 -5
- package/src/breadcrumbs/theme.ts +61 -5
- package/src/footer/footer.tsx +71 -4
- package/src/footer/footer.types.ts +3 -0
- package/src/header/header.tsx +3 -0
- package/src/header/header.types.ts +15 -0
- package/src/header/headerAccount.tsx +6 -14
- package/src/header/headerAccountUserInfo.tsx +2 -2
- package/src/header/headerLinkItem.tsx +2 -2
- package/src/header/headerMainLinks.tsx +0 -1
- package/src/header/headerMobileContent.tsx +4 -3
- package/src/header/headerServices.tsx +12 -4
- package/src/header/headerSupport.tsx +76 -0
- package/src/header/loggedInHeader.tsx +130 -13
- package/src/icons/baseIcons/cul/culDatasetAlt.ts +9 -0
- package/src/icons/baseIcons/icons.ts +1 -0
- package/src/icons/baseIcons/types.ts +1 -0
- package/src/tree/theme.ts +50 -49
- package/src/tree/tree.tsx +10 -16
- package/src/tree/tree.types.ts +10 -3
- package/src/tree/treeItem.tsx +89 -61
- package/src/tutorial/tutorialCard.tsx +4 -2
- package/src/utils/styles.ts +15 -6
package/src/header/header.tsx
CHANGED
|
@@ -19,6 +19,7 @@ import HeaderNotifications from './headerNotifications'
|
|
|
19
19
|
import HeaderServices from './headerServices'
|
|
20
20
|
import HeaderServicesMessage from './headerServicesMessage'
|
|
21
21
|
import HeaderSignIn from './headerSignIn'
|
|
22
|
+
import HeaderSupport from './headerSupport'
|
|
22
23
|
|
|
23
24
|
/*@formatter:off*/
|
|
24
25
|
export const HeaderBase = styled.headerBox`
|
|
@@ -77,6 +78,7 @@ export const Header = vui<'header', HeaderProps>((props, ref) => {
|
|
|
77
78
|
}) as VuiComponent<'header', HeaderProps> & {
|
|
78
79
|
Account: typeof HeaderAccount
|
|
79
80
|
AccountUserInfo: typeof HeaderAccountUserInfo
|
|
81
|
+
Support: typeof HeaderSupport
|
|
80
82
|
ApplicationName: typeof HeaderApplicationName
|
|
81
83
|
Content: typeof HeaderContent
|
|
82
84
|
CreateAccount: typeof HeaderCreateAccount
|
|
@@ -94,6 +96,7 @@ export const Header = vui<'header', HeaderProps>((props, ref) => {
|
|
|
94
96
|
|
|
95
97
|
Header.Account = HeaderAccount
|
|
96
98
|
Header.AccountUserInfo = HeaderAccountUserInfo
|
|
99
|
+
Header.Support = HeaderSupport
|
|
97
100
|
Header.ApplicationName = HeaderApplicationName
|
|
98
101
|
Header.Content = HeaderContent
|
|
99
102
|
Header.CreateAccount = HeaderCreateAccount
|
|
@@ -76,10 +76,15 @@ export type HeaderServicesProps = MenuProps &
|
|
|
76
76
|
buttonProps?: ButtonProps
|
|
77
77
|
/** Children are disabled for this component. */
|
|
78
78
|
children?: never
|
|
79
|
+
isApplication?: boolean
|
|
79
80
|
/** Props object passed to the MenuList component. */
|
|
80
81
|
listProps?: ListProps
|
|
82
|
+
/** Props object passed to the MenuItem component; introduced for app MD */
|
|
83
|
+
showTopBorder?: boolean
|
|
81
84
|
}
|
|
82
85
|
|
|
86
|
+
export type HeaderSupportProps = MenuProps & HeaderServicesData & {}
|
|
87
|
+
|
|
83
88
|
export type HeaderSignInData = {
|
|
84
89
|
/** Provides href to the button link. */
|
|
85
90
|
url?: string
|
|
@@ -90,6 +95,10 @@ export type HeaderSignInProps = ButtonProps & HeaderSignInData
|
|
|
90
95
|
export type LoggedInHeaderProps = HeaderProps & {
|
|
91
96
|
/** Socket for account popover icon on the right side. */
|
|
92
97
|
account?: HeaderAccountData | JSX.Element
|
|
98
|
+
supportLinks?: HeaderServicesData
|
|
99
|
+
/** Socket for the app name on the left side. */
|
|
100
|
+
applicationName?: string
|
|
101
|
+
isApplication?: boolean
|
|
93
102
|
/** Socket for logo on the left side. */
|
|
94
103
|
logo?: LogoData | JSX.Element
|
|
95
104
|
/** Socket for main links in the middle-right. */
|
|
@@ -98,6 +107,12 @@ export type LoggedInHeaderProps = HeaderProps & {
|
|
|
98
107
|
notifications?: HeaderNotificationsData | JSX.Element
|
|
99
108
|
/** Socket for services menu icon on the right side. */
|
|
100
109
|
services?: HeaderServicesData | JSX.Element
|
|
110
|
+
/** Socket for showing the alt user Info with role; introduced for APP; by default it is displayed. */
|
|
111
|
+
showAltUserInfo?: boolean
|
|
112
|
+
/** Socket for showing the services trigger up front; introduced for APP; by default it is displayed. */
|
|
113
|
+
showServices?: boolean
|
|
114
|
+
/** Socket for showing the main Links up front in case of APP. by default they are folded into the hamburger menu. */
|
|
115
|
+
showMainLinks?: boolean
|
|
101
116
|
}
|
|
102
117
|
|
|
103
118
|
export type LoggedInAppHeaderProps = HeaderProps & {
|
|
@@ -4,33 +4,24 @@ import Avatar from '../avatar'
|
|
|
4
4
|
import { useStyleConfig } from '../core'
|
|
5
5
|
import List from '../list'
|
|
6
6
|
import Popover from '../popover'
|
|
7
|
-
import { isJsx, isObject
|
|
7
|
+
import { isJsx, isObject } from '../utils'
|
|
8
8
|
import { useHeaderContext } from './context'
|
|
9
9
|
import { HeaderAccountProps, HeaderAccountUserInfoData } from './headerAccount.types'
|
|
10
10
|
import HeaderAccountUserInfo from './headerAccountUserInfo'
|
|
11
11
|
|
|
12
12
|
/** Disables popper's dynamic re-positioning */
|
|
13
|
-
const mobilePopoverOptions = { popperOptions: { modifiers: [{ name: 'computeStyles', enabled: false }] } }
|
|
14
13
|
|
|
15
14
|
/** Displays user account information and helpful links, like settings or logout. */
|
|
16
15
|
export function HeaderAccount(props: HeaderAccountProps) {
|
|
17
16
|
const { contentProps, options = {}, sections, triggerProps, userInfo, ...rest } = props
|
|
18
|
-
const {
|
|
17
|
+
const { isMobile } = useHeaderContext()
|
|
19
18
|
const styles = useStyleConfig('Header', useHeaderContext()).account
|
|
20
|
-
|
|
21
|
-
// Render content in full view on mobile
|
|
22
|
-
const popoverOptions = isMobile ? merge(options, mobilePopoverOptions) : options
|
|
23
|
-
|
|
24
|
-
const contentScreenProps = isMobile
|
|
25
|
-
? { h: `calc(100vh - ${headerHeight}px)`, left: 0, position: 'fixed', top: headerHeight, w: '100vw' }
|
|
26
|
-
: { maxH: 360, py: 1, minW: 320, w: 'auto' }
|
|
27
|
-
|
|
28
19
|
const name = isObject<HeaderAccountUserInfoData>(userInfo) ? userInfo.displayName : ''
|
|
29
|
-
|
|
30
20
|
const variant = styles?.trigger?.variant ?? 'solidDarkBlue'
|
|
21
|
+
const offsetX = isMobile ? 64 : 39
|
|
31
22
|
|
|
32
23
|
return (
|
|
33
|
-
<Popover isLazy={false} offset={[
|
|
24
|
+
<Popover isLazy={false} offset={[offsetX, 16]} placement="bottom-end" {...rest}>
|
|
34
25
|
<Popover.Trigger
|
|
35
26
|
as={Avatar}
|
|
36
27
|
className="vui-headerAccountTrigger"
|
|
@@ -45,10 +36,11 @@ export function HeaderAccount(props: HeaderAccountProps) {
|
|
|
45
36
|
/>
|
|
46
37
|
|
|
47
38
|
<Popover.Content
|
|
39
|
+
borderRadius={0}
|
|
48
40
|
className="vui-headerAccountContent"
|
|
49
41
|
column
|
|
50
42
|
{...styles.content}
|
|
51
|
-
{
|
|
43
|
+
w={isMobile ? 280 : 320}
|
|
52
44
|
{...contentProps}
|
|
53
45
|
>
|
|
54
46
|
{isJsx(userInfo) ? userInfo : userInfo && <HeaderAccountUserInfo {...userInfo} />}
|
|
@@ -31,9 +31,9 @@ export const HeaderAccountUserInfo = vui<'div', HeaderAccountUserInfoProps>((pro
|
|
|
31
31
|
{!isApplication && (
|
|
32
32
|
<Avatar className="vui-headerAccountUserInfoAvatar" name={displayName} size="xl" variant="solidDarkBlue" />
|
|
33
33
|
)}
|
|
34
|
-
<Box column>
|
|
34
|
+
<Box column rowGap={role ? 0 : 0.5}>
|
|
35
35
|
{displayName && (
|
|
36
|
-
<T fontSize={isApplication ? '12px' : 'inherit'}
|
|
36
|
+
<T fontSize={isApplication ? '12px' : 'inherit'} weight="demi">
|
|
37
37
|
{displayName}
|
|
38
38
|
</T>
|
|
39
39
|
)}
|
|
@@ -22,7 +22,7 @@ export const HeaderLinkItem = vui<'li', HeaderLinkItemProps>((props, ref) => {
|
|
|
22
22
|
? {
|
|
23
23
|
bg: 'skyBlue.95',
|
|
24
24
|
borderColor: 'seaBlue.main',
|
|
25
|
-
borderLeftWidth:
|
|
25
|
+
borderLeftWidth: 3,
|
|
26
26
|
hoverBg: 'skyBlue.90',
|
|
27
27
|
pl: '10px',
|
|
28
28
|
activeBorderBottomWidth: 0,
|
|
@@ -36,7 +36,7 @@ export const HeaderLinkItem = vui<'li', HeaderLinkItemProps>((props, ref) => {
|
|
|
36
36
|
color: 'darkBlue.main',
|
|
37
37
|
hoverBg: 'skyBlue.90',
|
|
38
38
|
activeBorderColor: 'seaBlue.main',
|
|
39
|
-
activeBorderLeftWidth:
|
|
39
|
+
activeBorderLeftWidth: 3,
|
|
40
40
|
pt: '0'
|
|
41
41
|
}
|
|
42
42
|
: { activeBorderBottomWidth: 4, pt: '0px', activePt: '4px' }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
|
|
3
3
|
import Box, { BoxProps } from '../box'
|
|
4
|
-
import { useStyleConfig, vui } from '../core'
|
|
4
|
+
import { useDown, useStyleConfig, vui } from '../core'
|
|
5
5
|
import { cs, mergeRefs } from '../utils'
|
|
6
6
|
import { useHeaderContext } from './context'
|
|
7
7
|
|
|
@@ -10,20 +10,21 @@ export const HeaderMobileContent = vui<'div', BoxProps>((props, ref) => {
|
|
|
10
10
|
const { className, ...rest } = props
|
|
11
11
|
const { isMobileOpen, mobileContentRef } = useHeaderContext() ?? {}
|
|
12
12
|
const styles = useStyleConfig('Header', useHeaderContext())
|
|
13
|
+
const isTablet = useDown('lg')
|
|
13
14
|
|
|
14
15
|
return isMobileOpen ? (
|
|
15
16
|
<Box
|
|
16
17
|
bg="white"
|
|
17
18
|
className={cs('vui-headerMobileContent', className)}
|
|
18
19
|
column
|
|
19
|
-
h={`calc(100vh - 100% - 1px)`}
|
|
20
|
-
left={0}
|
|
21
20
|
overflowX="hidden"
|
|
22
21
|
overflowY="auto"
|
|
23
22
|
position="absolute"
|
|
24
23
|
ref={mergeRefs(ref, mobileContentRef)}
|
|
25
24
|
right={0}
|
|
25
|
+
shadow={2}
|
|
26
26
|
top="calc(100% + 1px)"
|
|
27
|
+
w={isTablet ? 280 : 320}
|
|
27
28
|
zIndex="100"
|
|
28
29
|
{...styles.mobileContent}
|
|
29
30
|
{...rest}
|
|
@@ -26,13 +26,15 @@ function ListContent({ links = [] }: Pick<HeaderServicesProps, 'links'>) {
|
|
|
26
26
|
|
|
27
27
|
/** Displays a list of services available to the user. */
|
|
28
28
|
export function HeaderServices(props: HeaderServicesProps) {
|
|
29
|
-
const { buttonProps, links = [], ...rest } = props
|
|
29
|
+
const { buttonProps, isApplication = false, links = [], showTopBorder = false, ...rest } = props
|
|
30
30
|
const styles = useStyleConfig('Header', useHeaderContext()).services
|
|
31
31
|
|
|
32
|
+
const offsetX = isApplication ? 183 : 135
|
|
33
|
+
|
|
32
34
|
return (
|
|
33
35
|
<>
|
|
34
36
|
<RenderOnScreen minWidth="lg">
|
|
35
|
-
<Menu isLazy={false} offset={[
|
|
37
|
+
<Menu isLazy={false} offset={[offsetX, 20]} placement="bottom-end" size="lg" {...rest}>
|
|
36
38
|
<Menu.Button
|
|
37
39
|
className="vui-services-trigger"
|
|
38
40
|
icon="falTh"
|
|
@@ -41,14 +43,20 @@ export function HeaderServices(props: HeaderServicesProps) {
|
|
|
41
43
|
{...buttonProps}
|
|
42
44
|
/>
|
|
43
45
|
|
|
44
|
-
<Menu.List heading="My Services" maxH={400} w={320} {...styles.list}>
|
|
46
|
+
<Menu.List heading="My Services" maxH={400} right={0} w={320} {...styles.list}>
|
|
45
47
|
<ListContent links={links} />
|
|
46
48
|
</Menu.List>
|
|
47
49
|
</Menu>
|
|
48
50
|
</RenderOnScreen>
|
|
49
51
|
|
|
50
52
|
<RenderOnScreen maxWidth="lg">
|
|
51
|
-
<List
|
|
53
|
+
<List
|
|
54
|
+
heading="My Services"
|
|
55
|
+
{...styles.list}
|
|
56
|
+
borderTop={showTopBorder ? 1 : 0}
|
|
57
|
+
borderTopColor="sandstone.main"
|
|
58
|
+
pt={1}
|
|
59
|
+
>
|
|
52
60
|
<ListContent links={links} />
|
|
53
61
|
</List>
|
|
54
62
|
</RenderOnScreen>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import { useDown, useStyleConfig } from '../core'
|
|
4
|
+
import Menu from '../menu'
|
|
5
|
+
import { useHeaderContext } from './context'
|
|
6
|
+
import { HeaderSupportProps } from './header.types'
|
|
7
|
+
|
|
8
|
+
/** Supporting internal component to avoid code duplication. */
|
|
9
|
+
function ListContent({ links = [] }: Pick<HeaderSupportProps, 'links'>) {
|
|
10
|
+
const styles = useStyleConfig('Header', useHeaderContext()).services
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<>
|
|
14
|
+
<Menu.Item
|
|
15
|
+
isTruncated
|
|
16
|
+
key="veracity-support"
|
|
17
|
+
linkProps={{ href: 'https://support.veracity.com/' }}
|
|
18
|
+
text="Veracity support"
|
|
19
|
+
title="Veracity support"
|
|
20
|
+
{...styles.item}
|
|
21
|
+
/>
|
|
22
|
+
<Menu.Item
|
|
23
|
+
isTruncated
|
|
24
|
+
key="veracity-terms"
|
|
25
|
+
linkProps={{ href: 'https://id.veracity.com/terms-of-use' }}
|
|
26
|
+
text="Veracity terms"
|
|
27
|
+
title="Veracity terms"
|
|
28
|
+
{...styles.item}
|
|
29
|
+
/>
|
|
30
|
+
<Menu.Item
|
|
31
|
+
isTruncated
|
|
32
|
+
key="privacy"
|
|
33
|
+
linkProps={{ href: 'https://services.veracity.com/PrivacyStatement' }}
|
|
34
|
+
text="Privacy"
|
|
35
|
+
title="Privacy"
|
|
36
|
+
{...styles.item}
|
|
37
|
+
/>
|
|
38
|
+
|
|
39
|
+
{links.length > 0 &&
|
|
40
|
+
links.map(({ text, url }, index) => (
|
|
41
|
+
<Menu.Item isTruncated key={index} linkProps={{ href: url }} text={text} title={text} {...styles.item} />
|
|
42
|
+
))}
|
|
43
|
+
</>
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Displays a list of services available to the user. */
|
|
48
|
+
export function HeaderSupport(props: HeaderSupportProps) {
|
|
49
|
+
const { links = [], ...rest } = props
|
|
50
|
+
const styles = useStyleConfig('Header', useHeaderContext()).services
|
|
51
|
+
|
|
52
|
+
const isTablet = useDown('lg')
|
|
53
|
+
const offsetX = isTablet ? 162 : 135
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<>
|
|
57
|
+
<Menu isLazy={false} offset={[offsetX, 16]} placement="bottom-end" size="lg" {...rest}>
|
|
58
|
+
<Menu.Button
|
|
59
|
+
className="vui-app-info-trigger"
|
|
60
|
+
color={styles.button.color}
|
|
61
|
+
icon="falQuestionCircle"
|
|
62
|
+
ml={1}
|
|
63
|
+
size="lg"
|
|
64
|
+
title="My services"
|
|
65
|
+
{...styles.button}
|
|
66
|
+
/>
|
|
67
|
+
|
|
68
|
+
<Menu.List maxH={400} right={0} w={isTablet ? 280 : 320} {...styles.list}>
|
|
69
|
+
<ListContent links={links} />
|
|
70
|
+
</Menu.List>
|
|
71
|
+
</Menu>
|
|
72
|
+
</>
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export default HeaderSupport
|
|
@@ -1,47 +1,164 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
|
|
3
3
|
import Box from '../box'
|
|
4
|
-
import { RenderOnScreen, vui } from '../core'
|
|
4
|
+
import { RenderOnScreen, useDown, useStyleConfig, vui } from '../core'
|
|
5
|
+
import List from '../list'
|
|
5
6
|
import { cs, isJsx } from '../utils'
|
|
7
|
+
import { useHeaderContext } from './context'
|
|
6
8
|
import Header from './header'
|
|
7
|
-
import { LoggedInHeaderProps } from './header.types'
|
|
9
|
+
import { HeaderLinkData, LoggedInHeaderProps } from './header.types'
|
|
10
|
+
import HeaderAccountUserInfo from './headerAccountUserInfo'
|
|
8
11
|
|
|
9
12
|
/** Displays Header content appropriate for logged-in users, such as services, notifications or account information. */
|
|
10
13
|
export const LoggedInHeader = vui<'div', LoggedInHeaderProps>((props, ref) => {
|
|
11
|
-
const {
|
|
14
|
+
const {
|
|
15
|
+
account,
|
|
16
|
+
supportLinks,
|
|
17
|
+
applicationName,
|
|
18
|
+
children,
|
|
19
|
+
className,
|
|
20
|
+
isApplication = false,
|
|
21
|
+
logo,
|
|
22
|
+
mainLinks,
|
|
23
|
+
services,
|
|
24
|
+
showAltUserInfo = true,
|
|
25
|
+
showMainLinks = isApplication ? false : true,
|
|
26
|
+
showServices = true,
|
|
27
|
+
notifications,
|
|
28
|
+
...rest
|
|
29
|
+
} = props
|
|
30
|
+
|
|
31
|
+
if (isApplication) {
|
|
32
|
+
if (!applicationName) {
|
|
33
|
+
console.error('Header: isApplication is true but applicationName is not set.')
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const userInfo = !isJsx(account) ? account?.userInfo || {} : {}
|
|
38
|
+
const isSmallScreen = useDown('md')
|
|
39
|
+
|
|
40
|
+
const servicesLinks: HeaderLinkData[] = isJsx(services) ? [] : services?.links || []
|
|
41
|
+
const styles = useStyleConfig('Header', useHeaderContext())
|
|
12
42
|
|
|
13
43
|
return (
|
|
14
|
-
<Header
|
|
44
|
+
<Header
|
|
45
|
+
className={cs('vui-loggedInHeader', isApplication ? 'vui-loggedInAppHeader' : '', className)}
|
|
46
|
+
mb={isApplication && isSmallScreen ? '41px' : 'inherited'}
|
|
47
|
+
ref={ref}
|
|
48
|
+
{...rest}
|
|
49
|
+
>
|
|
15
50
|
<Header.Content>
|
|
16
51
|
{isJsx(logo) ? logo : <Header.Logo {...logo} />}
|
|
17
52
|
|
|
18
|
-
|
|
53
|
+
{isApplication && (
|
|
54
|
+
<>
|
|
55
|
+
<RenderOnScreen minWidth="md">
|
|
56
|
+
<Header.Divider mr={2} />
|
|
57
|
+
</RenderOnScreen>
|
|
58
|
+
|
|
59
|
+
<Header.ApplicationName title={applicationName} />
|
|
60
|
+
</>
|
|
61
|
+
)}
|
|
62
|
+
|
|
63
|
+
{!isApplication && <RenderOnScreen minWidth="lg">{children}</RenderOnScreen>}
|
|
19
64
|
|
|
20
65
|
<Box ml="auto" />
|
|
21
66
|
|
|
22
|
-
|
|
23
|
-
|
|
67
|
+
{isApplication && (
|
|
68
|
+
<>
|
|
69
|
+
<RenderOnScreen minWidth="lg">
|
|
70
|
+
{showMainLinks && mainLinks !== undefined && (
|
|
71
|
+
<>
|
|
72
|
+
{isJsx(mainLinks) ? mainLinks : <Header.MainLinks links={mainLinks} />}
|
|
73
|
+
<Header.Divider mx={1} />
|
|
74
|
+
</>
|
|
75
|
+
)}
|
|
76
|
+
{!showMainLinks &&
|
|
77
|
+
showAltUserInfo &&
|
|
78
|
+
(isJsx(userInfo) ? (
|
|
79
|
+
userInfo
|
|
80
|
+
) : (
|
|
81
|
+
<>
|
|
82
|
+
<HeaderAccountUserInfo className="vui-altUserInfo" isApplication {...userInfo} />
|
|
83
|
+
<Header.Divider mx={1} />
|
|
84
|
+
</>
|
|
85
|
+
))}
|
|
86
|
+
|
|
87
|
+
{/* the main-links are folded into the hamburger menu by default */}
|
|
88
|
+
{!showMainLinks && mainLinks && (
|
|
89
|
+
<>
|
|
90
|
+
<Header.MobileToggle ml={0} />
|
|
91
|
+
<Header.MobileContent>
|
|
92
|
+
<>
|
|
93
|
+
{isJsx(mainLinks) ? (
|
|
94
|
+
mainLinks
|
|
95
|
+
) : (
|
|
96
|
+
<Box column w={1}>
|
|
97
|
+
<List py={1}>
|
|
98
|
+
{mainLinks?.map(({ icon, url, ...rest }, index) => (
|
|
99
|
+
<List.Item iconLeft={icon} key={index} linkProps={{ href: url }} {...rest} />
|
|
100
|
+
))}
|
|
101
|
+
</List>
|
|
102
|
+
</Box>
|
|
103
|
+
)}
|
|
104
|
+
|
|
105
|
+
{!showServices && servicesLinks && (
|
|
106
|
+
<Box column w={1}>
|
|
107
|
+
<List
|
|
108
|
+
heading="My Services"
|
|
109
|
+
maxH={400}
|
|
110
|
+
right={0}
|
|
111
|
+
w={320}
|
|
112
|
+
{...styles.services.list}
|
|
113
|
+
borderTop={1}
|
|
114
|
+
borderTopColor="sandstone.main"
|
|
115
|
+
pt={1}
|
|
116
|
+
>
|
|
117
|
+
{servicesLinks?.map(({ url, ...rest }, index: number) => (
|
|
118
|
+
<List.Item key={index} linkProps={{ href: url }} {...rest} />
|
|
119
|
+
))}
|
|
120
|
+
</List>
|
|
121
|
+
</Box>
|
|
122
|
+
)}
|
|
123
|
+
</>
|
|
124
|
+
</Header.MobileContent>
|
|
125
|
+
</>
|
|
126
|
+
)}
|
|
127
|
+
{showServices && services && (
|
|
128
|
+
<>{isJsx(services) ? services : <Header.Services isApplication={isApplication} {...services} />}</>
|
|
129
|
+
)}
|
|
130
|
+
</RenderOnScreen>
|
|
131
|
+
|
|
132
|
+
<Header.Support {...supportLinks} />
|
|
133
|
+
</>
|
|
134
|
+
)}
|
|
135
|
+
|
|
136
|
+
{!isApplication && (
|
|
137
|
+
<RenderOnScreen minWidth="lg">
|
|
138
|
+
{isJsx(mainLinks) ? mainLinks : <Header.MainLinks links={mainLinks} />}
|
|
24
139
|
|
|
25
|
-
|
|
140
|
+
{mainLinks !== undefined && <Header.Divider mx={1} />}
|
|
26
141
|
|
|
27
|
-
|
|
28
|
-
|
|
142
|
+
{isJsx(services) ? services : <Header.Services {...services} />}
|
|
143
|
+
</RenderOnScreen>
|
|
144
|
+
)}
|
|
29
145
|
|
|
30
146
|
{isJsx(notifications) ? notifications : <Header.Notifications {...notifications} />}
|
|
31
147
|
|
|
32
148
|
{isJsx(account) ? account : <Header.Account {...account} />}
|
|
33
149
|
|
|
34
150
|
<RenderOnScreen maxWidth="lg">
|
|
35
|
-
{
|
|
151
|
+
{isApplication && <Header.Divider ml={1} />}
|
|
152
|
+
{!isApplication && (account !== undefined || notifications !== undefined) && <Header.Divider ml={1} />}
|
|
36
153
|
|
|
37
154
|
<Header.MobileToggle />
|
|
38
155
|
|
|
39
156
|
<Header.MobileContent>
|
|
40
|
-
{children}
|
|
157
|
+
{!isApplication && children}
|
|
41
158
|
|
|
42
159
|
{isJsx(mainLinks) ? mainLinks : <Header.MainLinks links={mainLinks} />}
|
|
43
160
|
|
|
44
|
-
{isJsx(services) ? services : <Header.Services {...services} />}
|
|
161
|
+
{isJsx(services) ? services : <Header.Services {...services} showTopBorder={mainLinks ? true : false} />}
|
|
45
162
|
</Header.MobileContent>
|
|
46
163
|
</RenderOnScreen>
|
|
47
164
|
</Header.Content>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
import { IconDefinition } from '../../types'
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
details: [32, 32, [], '', 'M16 16.6C16 16.2686 16.2686 16 16.6 16H18.4C18.7314 16 19 16.2686 19 16.6V18.4C19 18.7314 18.7314 19 18.4 19H16.6C16.2686 19 16 18.7314 16 18.4V16.6Z M16 24.6C16 24.2686 16.2686 24 16.6 24H18.4C18.7314 24 19 24.2686 19 24.6V26.4C19 26.7314 18.7314 27 18.4 27H16.6C16.2686 27 16 26.7314 16 26.4V24.6Z M24.6 16C24.2686 16 24 16.2686 24 16.6V18.4C24 18.7314 24.2686 19 24.6 19H26.4C26.7314 19 27 18.7314 27 18.4V16.6C27 16.2686 26.7314 16 26.4 16H24.6Z M24 24.6C24 24.2686 24.2686 24 24.6 24H26.4C26.7314 24 27 24.2686 27 24.6V26.4C27 26.7314 26.7314 27 26.4 27H24.6C24.2686 27 24 26.7314 24 26.4V24.6Z M5.60001 16C5.26863 16 5 16.2686 5 16.6V18.4C5 18.7314 5.26863 19 5.60001 19H7.39999C7.73137 19 8 18.7314 8 18.4V16.6C8 16.2686 7.73137 16 7.39999 16H5.60001Z M5.60001 24C5.26863 24 5 24.2686 5 24.6V26.4C5 26.7314 5.26863 27 5.60001 27H7.39999C7.73137 27 8 26.7314 8 26.4V24.6C8 24.2686 7.73137 24 7.39999 24H5.60001Z M16.6 5C16.2686 5 16 5.26862 16 5.60001V7.39999C16 7.73138 16.2686 8 16.6 8H18.4C18.7314 8 19 7.73138 19 7.39999V5.60001C19 5.26862 18.7314 5 18.4 5H16.6Z M24.6 5C24.2686 5 24 5.26862 24 5.60001V7.39999C24 7.73138 24.2686 8 24.6 8H26.4C26.7314 8 27 7.73138 27 7.39999V5.60001C27 5.26862 26.7314 5 26.4 5H24.6Z M32 4C32 1.79086 30.2091 0 28 0H4C1.79086 0 0 1.79086 0 4V28C0 30.2091 1.79086 32 4 32H28C30.2091 32 32 30.2091 32 28V4ZM2 11V4C2 2.89542 2.89543 2 4 2H11V11H2ZM28 30H13V13H30V28C30 29.1046 29.1046 30 28 30ZM11 30V13H2V28C2 29.1046 2.89543 30 4 30H11ZM30 11H13V2H28C29.1046 2 30 2.89542 30 4V11Z'],
|
|
7
|
+
name: 'culDatasetAlt',
|
|
8
|
+
pathProps: { fillRule: 'evenodd', clipRule: 'evenodd' }
|
|
9
|
+
} as IconDefinition
|
|
@@ -45,6 +45,7 @@ export { default as culCovid } from './cul/culCovid'
|
|
|
45
45
|
export { default as culCreateReport } from './cul/culCreateReport'
|
|
46
46
|
export { default as culDatacatalogue } from './cul/culDatacatalogue'
|
|
47
47
|
export { default as culDataset } from './cul/culDataset'
|
|
48
|
+
export { default as culDatasetAlt } from './cul/culDatasetAlt'
|
|
48
49
|
export { default as culDeepSearch } from './cul/culDeepSearch'
|
|
49
50
|
export { default as culDotsMenu } from './cul/culDotsMenu'
|
|
50
51
|
export { default as culEyeAssess } from './cul/culEyeAssess'
|
package/src/tree/theme.ts
CHANGED
|
@@ -1,72 +1,73 @@
|
|
|
1
|
-
import { Dict } from '../utils'
|
|
2
|
-
|
|
3
|
-
function variantDefault(props: Dict) {
|
|
4
|
-
const item: Dict = {
|
|
5
|
-
activeBg: 'skyBlue.30',
|
|
6
|
-
hoverBg: 'skyBlue.20',
|
|
7
|
-
selectedBg: 'skyBlue.10',
|
|
8
|
-
px: 2
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
return { item }
|
|
12
|
-
}
|
|
13
|
-
|
|
14
1
|
const baseStyle = {}
|
|
15
2
|
|
|
16
3
|
const defaultProps = {
|
|
17
|
-
size: '
|
|
4
|
+
size: 'xl',
|
|
18
5
|
variant: 'default'
|
|
19
6
|
}
|
|
20
7
|
|
|
21
|
-
const parts = ['container', 'icon', 'item', 'text']
|
|
8
|
+
const parts = ['container', 'icon', 'firstLevelItem', 'item', 'text']
|
|
22
9
|
|
|
23
10
|
const sizes = {
|
|
24
|
-
|
|
25
|
-
icon: {
|
|
26
|
-
size: 'xs'
|
|
27
|
-
},
|
|
11
|
+
xl: {
|
|
28
12
|
item: {
|
|
29
|
-
fontSize: 'md',
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
md: {
|
|
13
|
+
fontSize: 'md', // 16px
|
|
14
|
+
height: 48,
|
|
15
|
+
lineHeight: '24px',
|
|
16
|
+
py: '12px'
|
|
17
|
+
},
|
|
35
18
|
icon: {
|
|
36
|
-
|
|
19
|
+
height: 18,
|
|
20
|
+
width: 18
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const variants = {
|
|
26
|
+
default: {
|
|
27
|
+
container: {
|
|
28
|
+
bg: 'white'
|
|
29
|
+
},
|
|
30
|
+
firstLevelItem: {
|
|
31
|
+
bg: 'white',
|
|
32
|
+
color: 'seaBlue.main',
|
|
33
|
+
activeColor: 'seaBlue.main',
|
|
34
|
+
activeBg: 'skyBlue.85',
|
|
35
|
+
hoverBg: 'skyBlue.80' // '#A6DEF2'
|
|
37
36
|
},
|
|
38
37
|
item: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
bg: 'white',
|
|
39
|
+
color: 'seaBlue.main',
|
|
40
|
+
activeColor: 'seaBlue.main',
|
|
41
|
+
activeBg: 'skyBlue.85',
|
|
42
|
+
hoverBg: 'skyBlue.80',
|
|
43
|
+
selectedBg: 'skyBlue.10',
|
|
44
|
+
px: 2
|
|
42
45
|
}
|
|
43
46
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
py: '7px'
|
|
47
|
+
dark: {
|
|
48
|
+
container: {
|
|
49
|
+
bg: 'darkBlue.main',
|
|
50
|
+
color: 'white'
|
|
49
51
|
},
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
h: 56,
|
|
58
|
-
py: '9px'
|
|
52
|
+
firstLevelItem: {
|
|
53
|
+
bg: 'darkBlue.main',
|
|
54
|
+
color: 'white',
|
|
55
|
+
activeBg: 'darkBlue.25',
|
|
56
|
+
activeColor: 'seaBlue.main',
|
|
57
|
+
hoverBg: 'darkBlue.25', //'#152D6A'
|
|
58
|
+
hoverColor: 'white'
|
|
59
59
|
},
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
item: {
|
|
61
|
+
bg: 'skyBlue.97',
|
|
62
|
+
color: 'seaBlue.main',
|
|
63
|
+
activeBg: 'skyBlue.85',
|
|
64
|
+
activeColor: 'seaBlue.main',
|
|
65
|
+
hoverBg: 'skyBlue.80',
|
|
66
|
+
hoverColor: 'seaBlue.main'
|
|
62
67
|
}
|
|
63
68
|
}
|
|
64
69
|
}
|
|
65
70
|
|
|
66
|
-
const variants = {
|
|
67
|
-
default: variantDefault
|
|
68
|
-
}
|
|
69
|
-
|
|
70
71
|
export default {
|
|
71
72
|
baseStyle,
|
|
72
73
|
defaultProps,
|