@veracity/vui 2.9.0 → 2.10.0-beta.0
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/accordion/accordionItem.d.ts.map +1 -1
- package/dist/cjs/avatar/theme.js +1 -1
- package/dist/cjs/button/button.js +1 -1
- package/dist/cjs/core/vuiProvider/globalStyle.d.ts.map +1 -1
- package/dist/cjs/core/vuiProvider/globalStyle.js +6 -1
- package/dist/cjs/header/headerAccount.d.ts.map +1 -1
- package/dist/cjs/header/headerAccount.js +1 -1
- package/dist/cjs/header/headerAccountUserInfo.js +1 -1
- package/dist/cjs/header/headerMobileToggle.d.ts.map +1 -1
- package/dist/cjs/header/headerMobileToggle.js +1 -1
- package/dist/cjs/header/headerNotifications.d.ts.map +1 -1
- package/dist/cjs/header/headerNotifications.js +1 -1
- package/dist/cjs/header/headerServices.d.ts.map +1 -1
- package/dist/cjs/header/headerServices.js +1 -1
- package/dist/cjs/input/input.d.ts.map +1 -1
- package/dist/cjs/input/input.js +6 -2
- package/dist/cjs/list/list.types.d.ts +2 -0
- package/dist/cjs/list/list.types.d.ts.map +1 -1
- package/dist/cjs/list/theme.d.ts +20 -0
- package/dist/cjs/list/theme.d.ts.map +1 -1
- package/dist/cjs/list/theme.js +21 -1
- package/dist/cjs/popover/popover.d.ts.map +1 -1
- package/dist/cjs/popover/popover.js +2 -2
- package/dist/cjs/popover/popover.types.d.ts +3 -0
- package/dist/cjs/popover/popover.types.d.ts.map +1 -1
- package/dist/cjs/popover/usePopover.d.ts.map +1 -1
- package/dist/cjs/popover/usePopover.js +2 -2
- package/dist/cjs/progressCircular/progressCircular.d.ts.map +1 -1
- package/dist/cjs/progressCircular/progressCircular.js +1 -1
- package/dist/cjs/radio/radio.d.ts.map +1 -1
- package/dist/cjs/radio/radio.js +2 -1
- package/dist/cjs/select/select.d.ts.map +1 -1
- package/dist/cjs/select/select.js +2 -2
- package/dist/cjs/select/useSelect.types.d.ts +3 -0
- package/dist/cjs/select/useSelect.types.d.ts.map +1 -1
- package/dist/cjs/sidemenu/consts.d.ts +0 -1
- package/dist/cjs/sidemenu/consts.d.ts.map +1 -1
- package/dist/cjs/sidemenu/consts.js +1 -2
- package/dist/cjs/sidemenu/sidemenu.d.ts +1 -1
- package/dist/cjs/sidemenu/sidemenu.d.ts.map +1 -1
- package/dist/cjs/sidemenu/sidemenu.js +7 -6
- package/dist/cjs/sidemenu/sidemenuItem.d.ts.map +1 -1
- package/dist/cjs/sidemenu/sidemenuItem.js +5 -3
- package/dist/cjs/sidemenu/sidemenuTop.d.ts.map +1 -1
- package/dist/cjs/sidemenu/sidemenuTop.js +2 -2
- package/dist/cjs/sidemenu/theme.d.ts +42 -3
- package/dist/cjs/sidemenu/theme.d.ts.map +1 -1
- package/dist/cjs/sidemenu/theme.js +43 -3
- package/dist/cjs/switch/consts.d.ts +2 -0
- package/dist/cjs/switch/consts.d.ts.map +1 -1
- package/dist/cjs/switch/consts.js +2 -0
- package/dist/cjs/switch/switchButton.d.ts.map +1 -1
- package/dist/cjs/switch/switchButton.js +1 -2
- package/dist/cjs/table/tableSortIcon.js +1 -1
- package/dist/cjs/table/useTable.d.ts.map +1 -1
- package/dist/cjs/table/useTable.js +9 -3
- package/dist/cjs/theme/components.d.ts +62 -3
- package/dist/cjs/theme/components.d.ts.map +1 -1
- package/dist/cjs/theme/defaultTheme.d.ts +63 -3
- package/dist/cjs/theme/defaultTheme.d.ts.map +1 -1
- package/dist/cjs/theme/foundations/colors.d.ts +2 -0
- package/dist/cjs/theme/foundations/colors.d.ts.map +1 -1
- package/dist/cjs/theme/foundations/colors.js +1 -0
- package/dist/cjs/theme/foundations/index.d.ts +1 -0
- package/dist/cjs/theme/foundations/index.d.ts.map +1 -1
- package/dist/cjs/tree/tree.js +1 -1
- package/dist/cjs/tree/treeItem.d.ts.map +1 -1
- package/dist/cjs/tree/treeItem.js +6 -2
- package/dist/cjs/tutorial/tutorial.types.d.ts +3 -3
- package/dist/cjs/tutorial/tutorial.types.d.ts.map +1 -1
- package/dist/cjs/tutorial/tutorialCard.d.ts.map +1 -1
- package/dist/cjs/tutorial/tutorialCard.js +1 -4
- package/dist/cjs/utils/array.d.ts.map +1 -1
- package/dist/cjs/utils/array.js +2 -0
- package/dist/cjs/utils/types.d.ts +2 -1
- package/dist/cjs/utils/types.d.ts.map +1 -1
- package/dist/esm/accordion/accordionItem.d.ts.map +1 -1
- package/dist/esm/avatar/theme.js +1 -1
- package/dist/esm/button/button.js +1 -1
- package/dist/esm/core/vuiProvider/globalStyle.d.ts.map +1 -1
- package/dist/esm/core/vuiProvider/globalStyle.js +6 -1
- package/dist/esm/header/headerAccount.d.ts.map +1 -1
- package/dist/esm/header/headerAccount.js +1 -1
- package/dist/esm/header/headerAccountUserInfo.js +1 -1
- package/dist/esm/header/headerMobileToggle.d.ts.map +1 -1
- package/dist/esm/header/headerMobileToggle.js +1 -1
- package/dist/esm/header/headerNotifications.d.ts.map +1 -1
- package/dist/esm/header/headerNotifications.js +1 -1
- package/dist/esm/header/headerServices.d.ts.map +1 -1
- package/dist/esm/header/headerServices.js +1 -1
- package/dist/esm/input/input.d.ts.map +1 -1
- package/dist/esm/input/input.js +6 -2
- package/dist/esm/list/list.types.d.ts +2 -0
- package/dist/esm/list/list.types.d.ts.map +1 -1
- package/dist/esm/list/theme.d.ts +20 -0
- package/dist/esm/list/theme.d.ts.map +1 -1
- package/dist/esm/list/theme.js +21 -1
- package/dist/esm/popover/popover.d.ts.map +1 -1
- package/dist/esm/popover/popover.js +2 -2
- package/dist/esm/popover/popover.types.d.ts +3 -0
- package/dist/esm/popover/popover.types.d.ts.map +1 -1
- package/dist/esm/popover/usePopover.d.ts.map +1 -1
- package/dist/esm/popover/usePopover.js +2 -1
- package/dist/esm/progressCircular/progressCircular.d.ts.map +1 -1
- package/dist/esm/progressCircular/progressCircular.js +1 -1
- package/dist/esm/radio/radio.d.ts.map +1 -1
- package/dist/esm/radio/radio.js +2 -1
- package/dist/esm/select/select.d.ts.map +1 -1
- package/dist/esm/select/select.js +2 -2
- package/dist/esm/select/useSelect.types.d.ts +3 -0
- package/dist/esm/select/useSelect.types.d.ts.map +1 -1
- package/dist/esm/sidemenu/consts.d.ts +0 -1
- package/dist/esm/sidemenu/consts.d.ts.map +1 -1
- package/dist/esm/sidemenu/consts.js +0 -1
- package/dist/esm/sidemenu/sidemenu.d.ts +1 -1
- package/dist/esm/sidemenu/sidemenu.d.ts.map +1 -1
- package/dist/esm/sidemenu/sidemenu.js +8 -7
- package/dist/esm/sidemenu/sidemenuItem.d.ts.map +1 -1
- package/dist/esm/sidemenu/sidemenuItem.js +6 -4
- package/dist/esm/sidemenu/sidemenuTop.d.ts.map +1 -1
- package/dist/esm/sidemenu/sidemenuTop.js +3 -3
- package/dist/esm/sidemenu/theme.d.ts +42 -3
- package/dist/esm/sidemenu/theme.d.ts.map +1 -1
- package/dist/esm/sidemenu/theme.js +43 -3
- package/dist/esm/switch/consts.d.ts +2 -0
- package/dist/esm/switch/consts.d.ts.map +1 -1
- package/dist/esm/switch/consts.js +2 -0
- package/dist/esm/switch/switchButton.d.ts.map +1 -1
- package/dist/esm/switch/switchButton.js +1 -2
- package/dist/esm/table/tableSortIcon.js +1 -1
- package/dist/esm/table/useTable.d.ts.map +1 -1
- package/dist/esm/table/useTable.js +9 -3
- package/dist/esm/theme/components.d.ts +62 -3
- package/dist/esm/theme/components.d.ts.map +1 -1
- package/dist/esm/theme/defaultTheme.d.ts +63 -3
- package/dist/esm/theme/defaultTheme.d.ts.map +1 -1
- package/dist/esm/theme/foundations/colors.d.ts +2 -0
- package/dist/esm/theme/foundations/colors.d.ts.map +1 -1
- package/dist/esm/theme/foundations/colors.js +1 -0
- package/dist/esm/theme/foundations/index.d.ts +1 -0
- package/dist/esm/theme/foundations/index.d.ts.map +1 -1
- package/dist/esm/tree/tree.js +1 -1
- package/dist/esm/tree/treeItem.d.ts.map +1 -1
- package/dist/esm/tree/treeItem.js +7 -3
- package/dist/esm/tutorial/tutorial.types.d.ts +3 -3
- package/dist/esm/tutorial/tutorial.types.d.ts.map +1 -1
- package/dist/esm/tutorial/tutorialCard.d.ts.map +1 -1
- package/dist/esm/tutorial/tutorialCard.js +1 -4
- package/dist/esm/utils/array.d.ts.map +1 -1
- package/dist/esm/utils/array.js +2 -0
- package/dist/esm/utils/types.d.ts +2 -1
- package/dist/esm/utils/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/accordion/accordionItem.tsx +0 -1
- package/src/avatar/theme.ts +1 -1
- package/src/button/button.tsx +2 -2
- package/src/core/vuiProvider/globalStyle.tsx +6 -1
- package/src/header/headerAccount.tsx +1 -0
- package/src/header/headerAccountUserInfo.tsx +1 -1
- package/src/header/headerMobileToggle.tsx +1 -0
- package/src/header/headerNotifications.tsx +1 -2
- package/src/header/headerServices.tsx +1 -0
- package/src/input/input.tsx +9 -2
- package/src/list/list.types.ts +2 -0
- package/src/list/theme.ts +21 -1
- package/src/popover/popover.tsx +2 -3
- package/src/popover/popover.types.ts +4 -0
- package/src/popover/usePopover.ts +2 -0
- package/src/progressCircular/progressCircular.tsx +1 -0
- package/src/radio/radio.tsx +25 -9
- package/src/select/select.tsx +3 -1
- package/src/select/useSelect.types.ts +3 -0
- package/src/sidemenu/consts.ts +0 -2
- package/src/sidemenu/sidemenu.tsx +26 -7
- package/src/sidemenu/sidemenuItem.tsx +10 -8
- package/src/sidemenu/sidemenuTop.tsx +3 -4
- package/src/sidemenu/theme.ts +43 -3
- package/src/switch/consts.ts +3 -1
- package/src/switch/switchButton.tsx +1 -2
- package/src/table/tableSortIcon.tsx +1 -1
- package/src/table/useTable.ts +12 -4
- package/src/theme/foundations/colors.ts +1 -0
- package/src/tree/tree.tsx +1 -1
- package/src/tree/treeItem.tsx +8 -2
- package/src/tutorial/tutorial.types.ts +3 -3
- package/src/tutorial/tutorialCard.tsx +1 -4
- package/src/utils/array.ts +1 -0
- package/src/utils/types.ts +3 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { TippyProps } from '@tippyjs/react'
|
|
2
|
+
|
|
1
3
|
import { BoxProps } from '../box'
|
|
2
4
|
import { SystemProps } from '../system'
|
|
3
5
|
import { RenderProps } from '../utils'
|
|
@@ -11,6 +13,8 @@ export type PopoverProps = UsePopoverProps & {
|
|
|
11
13
|
children?: PopoverRenderProps
|
|
12
14
|
/** Mounts provided content only when popover is opened for performance. @default true */
|
|
13
15
|
isLazy?: boolean
|
|
16
|
+
/** Object with any Tippy props. */
|
|
17
|
+
options?: Partial<TippyProps>
|
|
14
18
|
}
|
|
15
19
|
|
|
16
20
|
export type PopoverRenderProps = RenderProps<{
|
|
@@ -40,6 +40,7 @@ export default function usePopover(props: UsePopoverProps = {}) {
|
|
|
40
40
|
|
|
41
41
|
const tippyOptions: Partial<TippyProps> = useMemo(() => {
|
|
42
42
|
const {
|
|
43
|
+
aria,
|
|
43
44
|
offset: optionsOffset,
|
|
44
45
|
onHidden,
|
|
45
46
|
onHide,
|
|
@@ -50,6 +51,7 @@ export default function usePopover(props: UsePopoverProps = {}) {
|
|
|
50
51
|
} = options ?? {}
|
|
51
52
|
|
|
52
53
|
return {
|
|
54
|
+
aria,
|
|
53
55
|
arrow: false,
|
|
54
56
|
duration: [200, 150],
|
|
55
57
|
hideOnClick: !isControlled ? closeOnBlur : false,
|
package/src/radio/radio.tsx
CHANGED
|
@@ -82,6 +82,7 @@ export const Radio = vui<'span', RadioProps>((props, ref) => {
|
|
|
82
82
|
value,
|
|
83
83
|
...rest
|
|
84
84
|
} = omitThemingProps(mergedProps)
|
|
85
|
+
|
|
85
86
|
const [isChecked, setIsChecked] = useState(defaultIsChecked ?? checked ?? defaultChecked)
|
|
86
87
|
const styles = useStyleConfig('Radio', mergedProps)
|
|
87
88
|
const { color: controlColor, hoverColor, ...controlStyles } = styles.control
|
|
@@ -125,15 +126,30 @@ export const Radio = vui<'span', RadioProps>((props, ref) => {
|
|
|
125
126
|
mr={controlMr}
|
|
126
127
|
{...controlStyles}
|
|
127
128
|
>
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
129
|
+
{checked !== undefined && (
|
|
130
|
+
<RadioInput
|
|
131
|
+
aria-label="input-radio"
|
|
132
|
+
className="vui-radioInput"
|
|
133
|
+
onChange={handleOnChange}
|
|
134
|
+
ref={inputRef}
|
|
135
|
+
type="radio"
|
|
136
|
+
{...{ checked, disabled, id, name, required, value }}
|
|
137
|
+
{...inputProps}
|
|
138
|
+
/>
|
|
139
|
+
)}
|
|
140
|
+
|
|
141
|
+
{checked === undefined && (
|
|
142
|
+
<RadioInput
|
|
143
|
+
aria-label="input-radio"
|
|
144
|
+
className="vui-radioInput"
|
|
145
|
+
onChange={handleOnChange}
|
|
146
|
+
ref={inputRef}
|
|
147
|
+
type="radio"
|
|
148
|
+
{...{ defaultChecked, disabled, id, name, required, value }}
|
|
149
|
+
{...inputProps}
|
|
150
|
+
/>
|
|
151
|
+
)}
|
|
152
|
+
|
|
137
153
|
<Icon className="vui-radioIcon" h="100%" name={icon} w="100%" />
|
|
138
154
|
</RadioControl>
|
|
139
155
|
|
package/src/select/select.tsx
CHANGED
|
@@ -31,6 +31,7 @@ export function Select(props: SelectProps) {
|
|
|
31
31
|
placeholder = 'Please select',
|
|
32
32
|
readOnly,
|
|
33
33
|
selectButton,
|
|
34
|
+
selectButtonProps,
|
|
34
35
|
showOptionsFilter,
|
|
35
36
|
size,
|
|
36
37
|
value,
|
|
@@ -55,6 +56,7 @@ export function Select(props: SelectProps) {
|
|
|
55
56
|
options,
|
|
56
57
|
placeholder,
|
|
57
58
|
readOnly,
|
|
59
|
+
|
|
58
60
|
size,
|
|
59
61
|
variant,
|
|
60
62
|
...selectProps
|
|
@@ -74,7 +76,7 @@ export function Select(props: SelectProps) {
|
|
|
74
76
|
<SelectProvider value={context}>
|
|
75
77
|
<Popover matchWidth {...rest}>
|
|
76
78
|
<>
|
|
77
|
-
{selectButton ?? <SelectButton />}
|
|
79
|
+
{selectButton ?? <SelectButton {...selectButtonProps} />}
|
|
78
80
|
<SelectContent>
|
|
79
81
|
{showOptionsFilter && (
|
|
80
82
|
<Box mr={2}>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react'
|
|
2
2
|
|
|
3
|
+
import { ButtonProps } from '../button'
|
|
3
4
|
import { ChangeEvent } from '../utils'
|
|
4
5
|
import { SelectOptionData, SelectValue } from './select.types'
|
|
5
6
|
|
|
@@ -14,6 +15,8 @@ export type UseSelectProps = {
|
|
|
14
15
|
options?: SelectOptionData[]
|
|
15
16
|
/** Select children elements for dynamic handling */
|
|
16
17
|
children?: ReactNode
|
|
18
|
+
/** Props added to the select button */
|
|
19
|
+
selectButtonProps?: ButtonProps
|
|
17
20
|
/**
|
|
18
21
|
* Callback triggered when an option is selected.
|
|
19
22
|
*
|
package/src/sidemenu/consts.ts
CHANGED
|
@@ -5,7 +5,7 @@ import Button from '../button'
|
|
|
5
5
|
import { styled, useStyleConfig, vui, VuiComponent } from '../core'
|
|
6
6
|
import Icon from '../icon'
|
|
7
7
|
import { cs, filterUndefined } from '../utils'
|
|
8
|
-
import {
|
|
8
|
+
import { expandedWidth } from './consts'
|
|
9
9
|
import { SidemenuProvider } from './context'
|
|
10
10
|
import { SidemenuItemProps, SidemenuProps } from './sidemenu.types'
|
|
11
11
|
import SidemenuItem from './sidemenuItem'
|
|
@@ -19,12 +19,17 @@ export const SidemenuBase = styled.divBox`
|
|
|
19
19
|
overflow: hidden;
|
|
20
20
|
`
|
|
21
21
|
|
|
22
|
-
/**
|
|
22
|
+
/** A collapsible side menu for navigation. */
|
|
23
23
|
export const Sidemenu = vui<'div', SidemenuProps>((props, ref) => {
|
|
24
|
-
const { children, className, items, isExpanded = false, width = 280, ...rest } = props
|
|
24
|
+
const { children, className, items, isExpanded = false, size, variant, width = 280, ...rest } = props
|
|
25
25
|
const styles = useStyleConfig('Sidemenu', props)
|
|
26
26
|
const [isExpandedInternal, setIsExpandedInternal] = useState(isExpanded)
|
|
27
|
-
const context = useMemo(
|
|
27
|
+
const context = useMemo(
|
|
28
|
+
() => filterUndefined({ size, variant, isExpandedInternal }),
|
|
29
|
+
[size, variant, isExpandedInternal]
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
const isDark = variant === 'dark'
|
|
28
33
|
|
|
29
34
|
const aliasedProps = filterUndefined<SidemenuProps>({})
|
|
30
35
|
|
|
@@ -40,14 +45,28 @@ export const Sidemenu = vui<'div', SidemenuProps>((props, ref) => {
|
|
|
40
45
|
|
|
41
46
|
return (
|
|
42
47
|
<SidemenuProvider value={context}>
|
|
43
|
-
<SidemenuBase
|
|
48
|
+
<SidemenuBase
|
|
49
|
+
className={cs('vui-sidemenu', className)}
|
|
50
|
+
ref={ref}
|
|
51
|
+
w={w}
|
|
52
|
+
{...styles.container}
|
|
53
|
+
{...aliasedProps}
|
|
54
|
+
{...rest}
|
|
55
|
+
>
|
|
44
56
|
<Box flexDirection="column" flexGrow={1} overflowX="hidden" overflowY="auto" w="100%">
|
|
45
57
|
{items
|
|
46
58
|
? items?.map?.((item: SidemenuItemProps, key: number) => <SidemenuItem key={key} {...item} />)
|
|
47
59
|
: children}
|
|
48
60
|
</Box>
|
|
49
|
-
<Box
|
|
50
|
-
<Button
|
|
61
|
+
<Box className="vui-sidemenu-bottom" w="100%" {...styles.bottom}>
|
|
62
|
+
<Button
|
|
63
|
+
borderRadius={0}
|
|
64
|
+
justifyContent={justifyContent}
|
|
65
|
+
minH={size === 'lg' ? '56px' : '40px'}
|
|
66
|
+
onClick={onToggle}
|
|
67
|
+
variant={isDark ? 'tertiaryLight' : 'tertiaryDark'}
|
|
68
|
+
w="100%"
|
|
69
|
+
>
|
|
51
70
|
<Icon name={icon} />
|
|
52
71
|
</Button>
|
|
53
72
|
</Box>
|
|
@@ -2,7 +2,7 @@ import React, { MouseEvent, useState } from 'react'
|
|
|
2
2
|
|
|
3
3
|
import Box from '../box'
|
|
4
4
|
import Button from '../button'
|
|
5
|
-
import { omitThemingProps, vui, VuiComponent } from '../core'
|
|
5
|
+
import { omitThemingProps, useStyleConfig, vui, VuiComponent } from '../core'
|
|
6
6
|
import Icon from '../icon'
|
|
7
7
|
import T from '../t'
|
|
8
8
|
import { cs } from '../utils'
|
|
@@ -12,10 +12,10 @@ import { SidemenuItemProps } from './sidemenu.types'
|
|
|
12
12
|
/** A menu item. */
|
|
13
13
|
export const SidemenuItem = vui<'button', SidemenuItemProps>((props, ref) => {
|
|
14
14
|
const { className, children, icon, iconSize = 'md', isActive, onClick, title, ...rest } = omitThemingProps(props)
|
|
15
|
-
|
|
16
15
|
const [displayChildren, setDisplayChildren] = useState(true)
|
|
17
|
-
|
|
18
|
-
const
|
|
16
|
+
const { variant, size, isExpandedInternal } = useSidemenuContext()
|
|
17
|
+
const styles = useStyleConfig('Sidemenu', useSidemenuContext)
|
|
18
|
+
const isDark = variant === 'dark'
|
|
19
19
|
|
|
20
20
|
const innerContent = isExpandedInternal ? (
|
|
21
21
|
<Box centerV px={2} py={1} w="100%" whiteSpace="pre">
|
|
@@ -41,16 +41,18 @@ export const SidemenuItem = vui<'button', SidemenuItemProps>((props, ref) => {
|
|
|
41
41
|
<Button
|
|
42
42
|
alignItems="center"
|
|
43
43
|
border="none"
|
|
44
|
-
borderLeft="3px solid
|
|
45
|
-
borderLeftColor={isActive ? '
|
|
44
|
+
borderLeft="3px solid transparent"
|
|
45
|
+
borderLeftColor={isActive ? (isDark ? 'digiGreen.main' : 'seaBlue.main') : undefined}
|
|
46
46
|
borderRadius={0}
|
|
47
47
|
className={cs('vui-sidemenu-item', className)}
|
|
48
48
|
h="auto"
|
|
49
49
|
justifyContent="space-between"
|
|
50
50
|
onClick={() => onClick?.()}
|
|
51
51
|
p={0}
|
|
52
|
-
variant=
|
|
52
|
+
variant={isDark ? 'tertiaryLight' : 'tertiaryDark'}
|
|
53
53
|
w="100%"
|
|
54
|
+
{...styles.item}
|
|
55
|
+
minH={size === 'lg' ? '56px' : '40px'}
|
|
54
56
|
{...rest}
|
|
55
57
|
>
|
|
56
58
|
{innerContent}
|
|
@@ -61,7 +63,7 @@ export const SidemenuItem = vui<'button', SidemenuItemProps>((props, ref) => {
|
|
|
61
63
|
mr={1}
|
|
62
64
|
onClick={toggle}
|
|
63
65
|
size="sm"
|
|
64
|
-
variant=
|
|
66
|
+
variant={isDark ? 'tertiaryLight' : 'tertiaryDark'}
|
|
65
67
|
/>
|
|
66
68
|
)}
|
|
67
69
|
</Button>
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
|
|
3
3
|
import { Box } from '../box'
|
|
4
|
-
import { omitThemingProps } from '../core'
|
|
4
|
+
import { omitThemingProps, useStyleConfig } from '../core'
|
|
5
5
|
import { cs } from '../utils'
|
|
6
|
-
import { border } from './consts'
|
|
7
6
|
import { useSidemenuContext } from './context'
|
|
8
7
|
import { SidemenuTopProps } from './sidemenu.types'
|
|
9
8
|
|
|
10
9
|
/** Top container. */
|
|
11
10
|
export const SidemenuTop = (props: SidemenuTopProps) => {
|
|
12
11
|
const { className, leftSlot, rightSlot, ...rest } = omitThemingProps(props)
|
|
13
|
-
|
|
12
|
+
const styles = useStyleConfig('Sidemenu', props)
|
|
14
13
|
const { isExpandedInternal } = useSidemenuContext()
|
|
15
14
|
|
|
16
15
|
if (!leftSlot && !rightSlot) return null
|
|
17
16
|
|
|
18
17
|
return (
|
|
19
|
-
<Box
|
|
18
|
+
<Box className={cs('vui-sidemenu-top', className)} mb={1} w="100%" {...styles.sidemenuTop} {...rest}>
|
|
20
19
|
{!!leftSlot && leftSlot}
|
|
21
20
|
{!!rightSlot && isExpandedInternal && rightSlot}
|
|
22
21
|
</Box>
|
package/src/sidemenu/theme.ts
CHANGED
|
@@ -1,14 +1,54 @@
|
|
|
1
1
|
const baseStyle = {}
|
|
2
2
|
|
|
3
|
-
const defaultProps = {
|
|
3
|
+
const defaultProps = {
|
|
4
|
+
size: 'md',
|
|
5
|
+
variant: 'light'
|
|
6
|
+
}
|
|
4
7
|
|
|
5
|
-
const
|
|
8
|
+
const parts = ['container', 'item', 'sidemenuTop', 'bottom']
|
|
6
9
|
|
|
7
|
-
const
|
|
10
|
+
const sizes = {
|
|
11
|
+
md: {
|
|
12
|
+
item: {
|
|
13
|
+
minH: '40px'
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
lg: {
|
|
17
|
+
item: {
|
|
18
|
+
minH: '56px'
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const variants = {
|
|
23
|
+
light: {
|
|
24
|
+
container: {},
|
|
25
|
+
bottom: {
|
|
26
|
+
borderTop: '1px solid lightgray'
|
|
27
|
+
},
|
|
28
|
+
sidemenuTop: {
|
|
29
|
+
borderBottom: '1px solid lightgray'
|
|
30
|
+
},
|
|
31
|
+
item: {}
|
|
32
|
+
},
|
|
33
|
+
dark: {
|
|
34
|
+
container: {
|
|
35
|
+
bg: 'darkBlue.main',
|
|
36
|
+
color: 'white'
|
|
37
|
+
},
|
|
38
|
+
bottom: {
|
|
39
|
+
borderTop: '1px solid black'
|
|
40
|
+
},
|
|
41
|
+
sidemenuTop: {
|
|
42
|
+
borderBottom: '1px solid black'
|
|
43
|
+
},
|
|
44
|
+
item: {}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
8
47
|
|
|
9
48
|
export default {
|
|
10
49
|
baseStyle,
|
|
11
50
|
defaultProps,
|
|
51
|
+
parts,
|
|
12
52
|
sizes,
|
|
13
53
|
variants
|
|
14
54
|
}
|
package/src/switch/consts.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export const switchColors = {
|
|
2
2
|
main: 'seaBlue.main',
|
|
3
3
|
hover: 'seaBlue.40',
|
|
4
|
-
|
|
4
|
+
offBg: 'sandstone.55', // on/off state of the switch
|
|
5
|
+
offBgContrast: 'sandstone.45', // on/off state of the switch
|
|
6
|
+
disabled: 'sandstone.main', // 79: the non-clickable state
|
|
5
7
|
disabledBg: 'sandstone.95',
|
|
6
8
|
green: 'landGreen.main',
|
|
7
9
|
red: 'energyRed.main'
|
|
@@ -112,7 +112,6 @@ export const SwitchButton = vui<'span', SwitchButtonProps>((props, ref) => {
|
|
|
112
112
|
const labelOffset = `${thumbStyles.h - hDiff + 4}px`
|
|
113
113
|
|
|
114
114
|
const aliasedProps = filterUndefined({
|
|
115
|
-
'aria-checked': isChecked ? true : false,
|
|
116
115
|
'aria-disabled': disabled,
|
|
117
116
|
'data-focused': isFocused ? true : false
|
|
118
117
|
})
|
|
@@ -123,7 +122,7 @@ export const SwitchButton = vui<'span', SwitchButtonProps>((props, ref) => {
|
|
|
123
122
|
})
|
|
124
123
|
|
|
125
124
|
const trackAliasedProps = filterUndefined({
|
|
126
|
-
bg: isChecked ? trackStyles.bg : switchColors.
|
|
125
|
+
bg: isChecked ? trackStyles.bg : innerLabelOff ? switchColors.offBgContrast : switchColors.offBg,
|
|
127
126
|
pl: isChecked ? 1 : labelOffset,
|
|
128
127
|
pr: isChecked ? labelOffset : 1,
|
|
129
128
|
ring: !disabled ? (isFocused ? trackStyles.ring : 0) : 3
|
|
@@ -11,7 +11,7 @@ export const TableSortIcon = vui<'svg', TableSortIconProps>((props, ref) => {
|
|
|
11
11
|
const { className, order, ...rest } = props
|
|
12
12
|
const styles = useStyleConfig('Table', useTableContext())
|
|
13
13
|
const rotate = order === 'asc' ? 180 : 0
|
|
14
|
-
const pathFill = order
|
|
14
|
+
const pathFill = order ? ['seaBlue.main', 'sandstone.main'] : 'sandstone.main'
|
|
15
15
|
|
|
16
16
|
return (
|
|
17
17
|
<Icon
|
package/src/table/useTable.ts
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
|
-
import { useCallbackRef, useControlled } from '../utils'
|
|
1
|
+
import { SortOrder, useCallbackRef, useControlled } from '../utils'
|
|
2
2
|
import { UseTableProps } from './useTable.types'
|
|
3
3
|
|
|
4
|
+
const sortOrders: SortOrder[] = ['asc', 'desc', null]
|
|
5
|
+
const defaultSortOrder: SortOrder = sortOrders[0]
|
|
6
|
+
|
|
7
|
+
function getNextOrder(order: SortOrder) {
|
|
8
|
+
const next = sortOrders.indexOf(order) + 1
|
|
9
|
+
return sortOrders[next] !== undefined ? sortOrders[next] : defaultSortOrder
|
|
10
|
+
}
|
|
11
|
+
|
|
4
12
|
/** Handles controlled/uncontrolled sort of the Table rows. */
|
|
5
13
|
export default function useTable(props: UseTableProps) {
|
|
6
|
-
const { defaultSort = { key: '', order:
|
|
14
|
+
const { defaultSort = { key: '', order: defaultSortOrder }, onSortChange: onSortChangeProp, sort: value } = props
|
|
7
15
|
const [sort, onChange, { isControlled }] = useControlled({
|
|
8
16
|
defaultValue: defaultSort,
|
|
9
17
|
onChange: onSortChangeProp,
|
|
10
|
-
value
|
|
18
|
+
value
|
|
11
19
|
})
|
|
12
20
|
|
|
13
21
|
const onSortChange = useCallbackRef((key: string) => {
|
|
14
|
-
const order = sort.key === key ? (sort.order
|
|
22
|
+
const order = sort.key === key ? getNextOrder(sort.order) : defaultSortOrder
|
|
15
23
|
onChange({ key, order })
|
|
16
24
|
})
|
|
17
25
|
|
package/src/tree/tree.tsx
CHANGED
|
@@ -85,7 +85,7 @@ export const Tree = vui<'div', TreeProps>((props, ref) => {
|
|
|
85
85
|
return (
|
|
86
86
|
<TreeProvider value={context}>
|
|
87
87
|
<TreeBase className={cs('vui-tree', className)} ref={ref} {...styles.container} {...rest}>
|
|
88
|
-
<List w={1}>
|
|
88
|
+
<List role="tree" w={1}>
|
|
89
89
|
{itemsInternal?.map(({ id, isActive, ...props }, index: number) => {
|
|
90
90
|
return (
|
|
91
91
|
<TreeItem
|
package/src/tree/treeItem.tsx
CHANGED
|
@@ -3,7 +3,7 @@ import React, { useEffect, useState } from 'react'
|
|
|
3
3
|
import { Box } from '../box'
|
|
4
4
|
import { styled, useStyleConfig, vui } from '../core'
|
|
5
5
|
import { List } from '../list'
|
|
6
|
-
import { cs, isArray, isReactText, vuiColorToRGBA } from '../utils'
|
|
6
|
+
import { cs, filterUndefined, isArray, isReactText, vuiColorToRGBA } from '../utils'
|
|
7
7
|
import { useTreeContext } from './context'
|
|
8
8
|
import { TreeItemProps } from './tree.types'
|
|
9
9
|
import TreeIcon from './treeIcon'
|
|
@@ -130,6 +130,11 @@ export const TreeItem = vui<'li', TreeItemProps>((props, ref) => {
|
|
|
130
130
|
textMl += 3.8
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
const aliasedProps = filterUndefined({
|
|
134
|
+
'aria-expanded': isCollapsable ? !collapsedInternal : undefined,
|
|
135
|
+
role: 'treeitem'
|
|
136
|
+
})
|
|
137
|
+
|
|
133
138
|
// hoverBg cannot be styled directly from theme, it has to be JS manipulated because of event propagation
|
|
134
139
|
return (
|
|
135
140
|
<TreeItemBase
|
|
@@ -156,6 +161,7 @@ export const TreeItem = vui<'li', TreeItemProps>((props, ref) => {
|
|
|
156
161
|
: bg
|
|
157
162
|
}
|
|
158
163
|
hoverBg={undefined}
|
|
164
|
+
{...aliasedProps}
|
|
159
165
|
{...rest}
|
|
160
166
|
>
|
|
161
167
|
<>
|
|
@@ -178,7 +184,7 @@ export const TreeItem = vui<'li', TreeItemProps>((props, ref) => {
|
|
|
178
184
|
</Box>
|
|
179
185
|
|
|
180
186
|
{isCollapsable && !collapsedInternal && (
|
|
181
|
-
<List w={1}>
|
|
187
|
+
<List role="tree" w={1}>
|
|
182
188
|
{children ??
|
|
183
189
|
(isArray<TreeItemProps>(items)
|
|
184
190
|
? items.map(({ key, propagatedPL, ...props }, index) => {
|
|
@@ -19,11 +19,11 @@ export type TutorialProps = {
|
|
|
19
19
|
className?: string
|
|
20
20
|
/** An id for further handling with localStorage */
|
|
21
21
|
id: string
|
|
22
|
-
/** Invoked once the action button clicked. */
|
|
22
|
+
/** Invoked once the action button is clicked. */
|
|
23
23
|
onAction?: () => void
|
|
24
|
-
/** Invoked once the dismiss button clicked. */
|
|
24
|
+
/** Invoked once the dismiss button is clicked. */
|
|
25
25
|
onDismiss?: () => void
|
|
26
|
-
/** Invoked once the finish button clicked. */
|
|
26
|
+
/** Invoked once the finish button is clicked. */
|
|
27
27
|
onFinish?: () => void
|
|
28
28
|
/** Popover placement */
|
|
29
29
|
placement?: Placement
|
package/src/utils/array.ts
CHANGED
package/src/utils/types.ts
CHANGED
|
@@ -63,7 +63,9 @@ export type RenderProps<P> = React.ReactNode | ((props: P) => React.ReactNode)
|
|
|
63
63
|
/** Merges props definitions, overriding source keys */
|
|
64
64
|
export type RightJoinProps<SourceProps, OverrideProps> = Omit<SourceProps, keyof OverrideProps> & OverrideProps
|
|
65
65
|
|
|
66
|
+
export type SortOrder = 'asc' | 'desc' | null
|
|
67
|
+
|
|
66
68
|
export type Sort<T = string> = {
|
|
67
69
|
key: T
|
|
68
|
-
order:
|
|
70
|
+
order: SortOrder
|
|
69
71
|
}
|