@veracity/vui 2.32.0 → 2.33.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.
Files changed (74) hide show
  1. package/dist/cjs/calendar/calendar.styles.js +5 -5
  2. package/dist/cjs/calendar/calendar.styles.js.map +1 -1
  3. package/dist/cjs/calendar/components/calendarHeader.js +1 -1
  4. package/dist/cjs/calendar/components/calendarHeader.js.map +1 -1
  5. package/dist/cjs/calendar/components/dayPicker.d.ts.map +1 -1
  6. package/dist/cjs/calendar/components/dayPicker.js +6 -2
  7. package/dist/cjs/calendar/components/dayPicker.js.map +1 -1
  8. package/dist/cjs/calendar/components/monthPicker.d.ts.map +1 -1
  9. package/dist/cjs/calendar/components/monthPicker.js +1 -1
  10. package/dist/cjs/calendar/components/monthPicker.js.map +1 -1
  11. package/dist/cjs/calendar/components/timeUnitHeader.d.ts.map +1 -1
  12. package/dist/cjs/calendar/components/timeUnitHeader.js +1 -1
  13. package/dist/cjs/calendar/components/timeUnitHeader.js.map +1 -1
  14. package/dist/cjs/calendar/components/yearPicker.d.ts.map +1 -1
  15. package/dist/cjs/calendar/components/yearPicker.js +1 -1
  16. package/dist/cjs/calendar/components/yearPicker.js.map +1 -1
  17. package/dist/cjs/calendar/hooks/useCalendar.d.ts +1 -1
  18. package/dist/cjs/calendar/hooks/useCalendar.d.ts.map +1 -1
  19. package/dist/cjs/calendar/hooks/useCalendar.js +22 -16
  20. package/dist/cjs/calendar/hooks/useCalendar.js.map +1 -1
  21. package/dist/cjs/datePicker/datePicker.js +1 -1
  22. package/dist/cjs/datePicker/datePicker.js.map +1 -1
  23. package/dist/cjs/range/range.js +1 -1
  24. package/dist/cjs/range/range.js.map +1 -1
  25. package/dist/cjs/sidemenuV2/sidemenuV2.d.ts.map +1 -1
  26. package/dist/cjs/sidemenuV2/sidemenuV2.js +6 -2
  27. package/dist/cjs/sidemenuV2/sidemenuV2.js.map +1 -1
  28. package/dist/cjs/table/tableSortIcon.d.ts.map +1 -1
  29. package/dist/cjs/table/tableSortIcon.js +15 -16
  30. package/dist/cjs/table/tableSortIcon.js.map +1 -1
  31. package/dist/esm/calendar/calendar.styles.js +5 -5
  32. package/dist/esm/calendar/calendar.styles.js.map +1 -1
  33. package/dist/esm/calendar/components/calendarHeader.js +1 -1
  34. package/dist/esm/calendar/components/calendarHeader.js.map +1 -1
  35. package/dist/esm/calendar/components/dayPicker.d.ts.map +1 -1
  36. package/dist/esm/calendar/components/dayPicker.js +6 -2
  37. package/dist/esm/calendar/components/dayPicker.js.map +1 -1
  38. package/dist/esm/calendar/components/monthPicker.d.ts.map +1 -1
  39. package/dist/esm/calendar/components/monthPicker.js +1 -1
  40. package/dist/esm/calendar/components/monthPicker.js.map +1 -1
  41. package/dist/esm/calendar/components/timeUnitHeader.d.ts.map +1 -1
  42. package/dist/esm/calendar/components/timeUnitHeader.js +1 -1
  43. package/dist/esm/calendar/components/timeUnitHeader.js.map +1 -1
  44. package/dist/esm/calendar/components/yearPicker.d.ts.map +1 -1
  45. package/dist/esm/calendar/components/yearPicker.js +1 -1
  46. package/dist/esm/calendar/components/yearPicker.js.map +1 -1
  47. package/dist/esm/calendar/hooks/useCalendar.d.ts +1 -1
  48. package/dist/esm/calendar/hooks/useCalendar.d.ts.map +1 -1
  49. package/dist/esm/calendar/hooks/useCalendar.js +22 -16
  50. package/dist/esm/calendar/hooks/useCalendar.js.map +1 -1
  51. package/dist/esm/datePicker/datePicker.js +1 -1
  52. package/dist/esm/datePicker/datePicker.js.map +1 -1
  53. package/dist/esm/range/range.js +1 -1
  54. package/dist/esm/range/range.js.map +1 -1
  55. package/dist/esm/sidemenuV2/sidemenuV2.d.ts.map +1 -1
  56. package/dist/esm/sidemenuV2/sidemenuV2.js +6 -2
  57. package/dist/esm/sidemenuV2/sidemenuV2.js.map +1 -1
  58. package/dist/esm/table/tableSortIcon.d.ts.map +1 -1
  59. package/dist/esm/table/tableSortIcon.js +15 -8
  60. package/dist/esm/table/tableSortIcon.js.map +1 -1
  61. package/dist/tsconfig.legacy.tsbuildinfo +1 -1
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +1 -1
  64. package/src/calendar/calendar.styles.ts +5 -5
  65. package/src/calendar/components/calendarHeader.tsx +1 -1
  66. package/src/calendar/components/dayPicker.tsx +6 -2
  67. package/src/calendar/components/monthPicker.tsx +2 -0
  68. package/src/calendar/components/timeUnitHeader.tsx +33 -5
  69. package/src/calendar/components/yearPicker.tsx +2 -0
  70. package/src/calendar/hooks/useCalendar.ts +18 -21
  71. package/src/datePicker/datePicker.tsx +2 -2
  72. package/src/range/range.tsx +1 -1
  73. package/src/sidemenuV2/sidemenuV2.tsx +23 -2
  74. package/src/table/tableSortIcon.tsx +30 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veracity/vui",
3
- "version": "2.32.0",
3
+ "version": "2.33.0",
4
4
  "description": "Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.",
5
5
  "module": "./dist/esm/index.js",
6
6
  "main": "./dist/cjs/index.js",
@@ -53,11 +53,11 @@ export const CalendarItem = styled(Link)<ItemProps>`
53
53
  ${p => p.isHidden && isHidden}
54
54
  ${p => p.isToday && isToday}
55
55
  ${p => p.isDisabled && isDisabled}
56
- ${p => p.isSelected && isSelected}
57
- ${p => p.boundary && boundary}
58
- ${p => p.current && current}
56
+ ${p => p.isSelected && isSelected}
57
+ ${p => p.boundary && boundary}
58
+ ${p => p.current && current}
59
59
 
60
- &:hover {
60
+ &:hover {
61
61
  color: inherit;
62
62
  text-decoration: none;
63
63
 
@@ -70,7 +70,7 @@ export const CalendarItemsContainer = styled(Box)`
70
70
  column-gap: 0;
71
71
  display: grid;
72
72
  grid-template-columns: repeat(3, 1fr);
73
- grid-template-rows: repeat(4, 62px);
73
+ grid-template-rows: repeat(4, 48px);
74
74
  justify-items: center;
75
75
  row-gap: 0;
76
76
  `
@@ -32,7 +32,7 @@ export const CalendarHeader: FC<Props> = ({
32
32
  <Box className="vui-calendar-header-left">
33
33
  <TimeUnitHeader onSetTimeUnitMode={onSetTimeUnitMode} timeUnitMode={timeUnitMode} viewMonth={viewMonth} />
34
34
  </Box>
35
- <Box className="vui-calendar-header-right" flex="1" justify="flex-end">
35
+ <Box className="vui-calendar-header-right" flex="1" justifyContent="right">
36
36
  <IconButton
37
37
  aria-label="previous"
38
38
  className="icon"
@@ -20,11 +20,15 @@ const DayItem = styled(CalendarItem)<ItemProps>`
20
20
  color: ${th.color('seaBlue.main')};
21
21
  display: inline-flex;
22
22
  align-items: center;
23
+
24
+ & > .vui-t {
25
+ margin-bottom: -3px;
26
+ }
23
27
  `
24
28
 
25
29
  const DaysContainer = styled(CalendarItemsContainer)`
26
- grid-template-columns: repeat(7, 1fr);
27
- grid- template-rows: auto;
30
+ grid-template-columns: repeat(7, 1fr);
31
+ grid-template-rows: auto;
28
32
  `
29
33
 
30
34
  export const DayPicker = ({ calendar, onSelectDay }: DayPickerProps) => (
@@ -16,6 +16,8 @@ export const MonthPicker = ({ calendar, onSelectMonth }: MonthPickerProps) => (
16
16
  key={item.date.getTime()}
17
17
  onClick={(!item.isDisabled && onSelectMonth && onSelectMonth(item.date)) || undefined}
18
18
  {...item}
19
+ alignContent="center"
20
+ textAlign="center"
19
21
  >
20
22
  {monthsShort[item.date.getUTCMonth()]}
21
23
  </MonthItem>
@@ -21,24 +21,52 @@ type TimeUnitHeaderProps = {
21
21
  */
22
22
  export const TimeUnitHeader: FC<TimeUnitHeaderProps> = ({ onSetTimeUnitMode, timeUnitMode, viewMonth }) => {
23
23
  return (
24
- <Box center className={cs('vui-time-unit-header')} cursor="pointer" flex="1" justify="start">
24
+ <Box center className={cs('vui-time-unit-header')} cursor="pointer" flex="1" justifyItems="flex-start" gap="2px">
25
25
  {isDay(timeUnitMode) && (
26
26
  <>
27
- <Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('month')} variant="tertiaryDark">
27
+ <Button
28
+ fontSize={fontSize}
29
+ h={h}
30
+ onClick={() => onSetTimeUnitMode('month')}
31
+ variant="tertiaryDark"
32
+ px="6px"
33
+ minW="auto"
34
+ >
28
35
  {months[viewMonth.getUTCMonth()]}
29
36
  </Button>
30
- <Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('year')} variant="tertiaryDark">
37
+ <Button
38
+ fontSize={fontSize}
39
+ h={h}
40
+ onClick={() => onSetTimeUnitMode('year')}
41
+ variant="tertiaryDark"
42
+ px="6px"
43
+ minW="auto"
44
+ >
31
45
  {viewMonth.getUTCFullYear()}
32
46
  </Button>
33
47
  </>
34
48
  )}
35
49
  {isMonth(timeUnitMode) && (
36
- <Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('year')} variant="tertiaryDark">
50
+ <Button
51
+ fontSize={fontSize}
52
+ h={h}
53
+ onClick={() => onSetTimeUnitMode('year')}
54
+ variant="tertiaryDark"
55
+ px="6px"
56
+ minW="auto"
57
+ >
37
58
  {viewMonth.getUTCFullYear()}
38
59
  </Button>
39
60
  )}
40
61
  {isYear(timeUnitMode) && (
41
- <Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('day')} variant="tertiaryDark">
62
+ <Button
63
+ fontSize={fontSize}
64
+ h={h}
65
+ onClick={() => onSetTimeUnitMode('day')}
66
+ variant="tertiaryDark"
67
+ px="6px"
68
+ minW="auto"
69
+ >
42
70
  Year
43
71
  </Button>
44
72
  )}
@@ -14,6 +14,8 @@ export const YearPicker = ({ calendar, onSelectYear }: YearPickerProps) => (
14
14
  key={item.date.getTime()}
15
15
  onClick={(!item.isDisabled && onSelectYear?.(item.date)) || undefined}
16
16
  {...item}
17
+ alignContent="center"
18
+ textAlign="center"
17
19
  >
18
20
  {item.date.getUTCFullYear()}
19
21
  </YearItem>
@@ -18,7 +18,7 @@ export const useCalendar = ({
18
18
  mode = 'exact',
19
19
  timeUnitMode,
20
20
  viewDate,
21
- fixedNumberOfWeeks,
21
+ // fixedNumberOfWeeks,
22
22
  }: MonthProps) => {
23
23
  const boundariesProcessed = useBoundaries({ boundaries })
24
24
  const selectedProcessed = useSelectedDate({ selectedDates, mode })
@@ -37,7 +37,7 @@ export const useCalendar = ({
37
37
 
38
38
  if (isDay(timeUnitMode)) {
39
39
  firstDay = generateDateByUTCValue(viewDateYear, viewDateMonth, 1)
40
- lastDay = generateDateByUTCValue(viewDateYear, viewDateMonth + 1, 0) // lastDay
40
+ lastDay = generateDateByUTCValue(viewDateYear, viewDateMonth + 1, 0)
41
41
 
42
42
  nextFirstDay = generateDateByUTCValue(viewDateYear, viewDateMonth + 1, 1)
43
43
  prevLastDay = generateDateByUTCValue(viewDateYear, viewDateMonth, 0)
@@ -46,29 +46,27 @@ export const useCalendar = ({
46
46
  const weekdayLast = lastDay.getUTCDay()
47
47
 
48
48
  // Monday preceding the month (or first day of the month if it's on a Monday)
49
- calendarFirstDay =
50
- weekdayFirst === 0
51
- ? new Date(Date.UTC(viewDateYear, viewDateMonth, 2 - 7))
52
- : new Date(Date.UTC(viewDateYear, viewDateMonth, 2 - weekdayFirst))
49
+ calendarFirstDay = new Date(Date.UTC(viewDateYear, viewDateMonth, 2 - weekdayFirst))
50
+ if (weekdayFirst === 0) calendarFirstDay = new Date(Date.UTC(viewDateYear, viewDateMonth, 2 - 7))
53
51
 
54
52
  // Sunday after the month (or last day of the month if it's on a Sunday)
55
- calendarLastDay =
56
- weekdayLast === 0
57
- ? new Date(Date.UTC(viewDateYear, viewDateMonth + 1, 0))
58
- : new Date(Date.UTC(viewDateYear, viewDateMonth + 1, 8 - weekdayLast))
53
+ calendarLastDay = new Date(Date.UTC(viewDateYear, viewDateMonth + 1, 8 - weekdayLast))
54
+ if (weekdayLast === 0) calendarLastDay = new Date(Date.UTC(viewDateYear, viewDateMonth + 1, 1))
55
+ else if (weekdayLast === 1) calendarLastDay = new Date(Date.UTC(viewDateYear, viewDateMonth + 1, 0))
59
56
 
60
57
  // If calendar must contain constant number of weeks (6 weeks)
61
58
  // Missing weeks will be added to the end of the month
62
- const numberOfWeeks = Math.round((+calendarLastDay - +calendarFirstDay) / (7 * 24 * 60 * 60 * 1000))
63
- if (fixedNumberOfWeeks) {
64
- for (let week = numberOfWeeks; week < 6; week++) {
65
- calendarLastDay = generateDateByUTCValue(
66
- calendarLastDay.getUTCFullYear(),
67
- calendarLastDay.getUTCMonth(),
68
- calendarLastDay.getUTCDate() + 7,
69
- )
70
- }
71
- }
59
+ // const numberOfWeeks = Math.round((+calendarLastDay - +calendarFirstDay) / (7 * 24 * 60 * 60 * 1000))
60
+
61
+ // if (fixedNumberOfWeeks) {
62
+ // for (let week = numberOfWeeks; week < 6; week++) {
63
+ // calendarLastDay = generateDateByUTCValue(
64
+ // calendarLastDay.getUTCFullYear(),
65
+ // calendarLastDay.getUTCMonth(),
66
+ // calendarLastDay.getUTCDate() + 7,
67
+ // )
68
+ // }
69
+ // }
72
70
  } else if (isMonth(timeUnitMode)) {
73
71
  calendarFirstDay = firstDay = generateDateByUTCValue(viewDateYear, 0, 1)
74
72
  calendarLastDay = lastDay = generateDateByUTCValue(viewDateYear, 11, 31)
@@ -90,7 +88,6 @@ export const useCalendar = ({
90
88
  }
91
89
 
92
90
  const items: TimeItem[] = []
93
-
94
91
  // Loops between first and last date
95
92
  let dateItem = calendarFirstDay
96
93
  do {
@@ -135,14 +135,14 @@ export const DatePicker = vui<'span', DatePickerProps>((props, ref) => {
135
135
  boundaries={boundaries ?? { startDate: undefined, endDate: undefined }}
136
136
  fixedNumberOfWeeks
137
137
  fontWeight={500}
138
- minH={310}
138
+ minH={200}
139
139
  mode="exact"
140
140
  onSelectDates={range => selectDate(range)}
141
141
  selectedDates={{ startDate: selectedDate, endDate: undefined }}
142
142
  w="100%"
143
143
  />
144
144
  </Box>
145
- <Box overflow="unset" pt={0.5}>
145
+ <Box overflow="unset">
146
146
  <Box alignItems="center" flex={1} ml="auto" pb={2} px={2}>
147
147
  {isClearButtonVisible && (
148
148
  <LineButton flex={1} onClick={onClear} size="md">
@@ -67,7 +67,7 @@ export const Range = vui<'div', RangeProps>((props, ref) => {
67
67
  return showValue ? (
68
68
  content
69
69
  ) : (
70
- <Tooltip disabled={disabled} text={formatter(state.valueNow)} visible={showTooltip}>
70
+ <Tooltip key={state.index} disabled={disabled} text={formatter(state.valueNow)} visible={showTooltip}>
71
71
  {content}
72
72
  </Tooltip>
73
73
  )
@@ -19,21 +19,42 @@ export { SidemenuStateProvider, useSidemenuContext }
19
19
  export const SidemenuV2 = vui<'div', SidemenuV2Props>((props, ref) => {
20
20
  const {
21
21
  isExpandedInitial = true, // Uncontrolled: only affects initial state
22
+ onExpandedChange, // Extract this to prevent it from being passed to DOM
22
23
  size,
23
24
  variant = 'light',
25
+ children,
26
+ className,
27
+ items,
28
+ shouldExpand,
29
+ isSticky,
30
+ width,
31
+ top,
32
+ onNavigate,
33
+ ...restProps // Only DOM-safe props remain
24
34
  } = props
25
35
 
26
36
  return (
27
37
  <SidemenuStateProvider
28
38
  isExpandedInitial={isExpandedInitial}
29
- onExpandedChange={props.onExpandedChange}
39
+ onExpandedChange={onExpandedChange}
30
40
  variant={variant}
31
41
  size={size}
32
42
  isDark={variant === 'dark'}
33
43
  >
34
44
  <SidemenuInner
35
45
  ref={ref}
36
- {...props} // Spread all props to inner component
46
+ // Only pass DOM-safe props, not onExpandedChange
47
+ children={children}
48
+ className={className}
49
+ items={items}
50
+ shouldExpand={shouldExpand}
51
+ isSticky={isSticky}
52
+ size={size}
53
+ variant={variant}
54
+ width={width}
55
+ top={top}
56
+ onNavigate={onNavigate}
57
+ {...restProps} // Remaining DOM-safe props
37
58
  />
38
59
  </SidemenuStateProvider>
39
60
  )
@@ -1,27 +1,41 @@
1
- import { useStyleConfig, vui } from '../core'
1
+ import Box from '../box'
2
+ import { vui } from '../core'
2
3
  import { Icon } from '../icon'
3
4
  import { cs } from '../utils'
4
- import { useTableContext } from './context'
5
5
  import type { TableSortIconProps } from './table.types'
6
6
 
7
7
  /** Displays a sort icon with given direction based on sort order. */
8
8
  export const TableSortIcon = vui<'svg', TableSortIconProps>((props, ref) => {
9
- const { className, order, ...rest } = props
10
- const styles = useStyleConfig('Table', useTableContext())
11
- const rotate = order === 'asc' ? 180 : 0
12
- const pathFill = order ? ['seaBlue.main', 'sandstone.main'] : 'sandstone.main'
9
+ const { className, order } = props
10
+ const activeColor = 'seaBlue.main'
11
+ const inactiveColor = 'sandstone.85'
12
+
13
+ const icons = [
14
+ {
15
+ color: order === 'asc' ? activeColor : inactiveColor,
16
+ },
17
+ {
18
+ color: order === 'desc' ? activeColor : inactiveColor,
19
+ },
20
+ ]
13
21
 
14
22
  return (
15
- <Icon
16
- className={cs('vui-tableSortIcon', className)}
17
- name="uiSort"
18
- pathFill={pathFill}
19
- ref={ref}
20
- rotate={rotate}
21
- size="xs"
22
- {...styles.tableSortIcon}
23
- {...rest}
24
- />
23
+ <Box ref={ref} column alignItems="center" justifyItems="center" ml="8px">
24
+ <Icon
25
+ className={cs('vui-tableSortIcon--top', className)}
26
+ name={'uiCaretUp'}
27
+ color={icons[0].color}
28
+ size="xs"
29
+ mb="-4px"
30
+ />
31
+ <Icon
32
+ className={cs('vui-tableSortIcon--bottom', className)}
33
+ name={'uiCaretDown'}
34
+ color={icons[1].color}
35
+ size="xs"
36
+ mt="-4px"
37
+ />
38
+ </Box>
25
39
  )
26
40
  })
27
41