@astral/ui 4.32.1 → 4.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 (45) hide show
  1. package/components/BottomDrawer/styles.js +3 -0
  2. package/components/Chip/styles.js +1 -0
  3. package/components/DashboardLayout/DashboardWrapper/styles.js +5 -0
  4. package/components/DashboardLayout/Header/styles.js +2 -0
  5. package/components/DashboardSidebar/styles.js +2 -0
  6. package/components/DashboardSidebarPopover/SidebarPopoverItem/styles.js +3 -0
  7. package/components/DataGrid/styles.js +1 -0
  8. package/components/DataGridInfinite/styles.js +1 -0
  9. package/components/DatePicker/YearPicker/YearPicker.js +1 -1
  10. package/components/Dialog/styles.js +2 -0
  11. package/components/ExpansionPanel/styles.js +2 -0
  12. package/components/FlowButton/styles.js +2 -0
  13. package/components/MenuOrganization/styles.js +3 -1
  14. package/components/Notification/NotificationStackContainer/styles.js +3 -0
  15. package/components/PageContent/styles.js +2 -0
  16. package/components/PageHeader/PageActions/useLogic/useLogic.js +10 -5
  17. package/components/ResizingDataGrid/Sliders/styles.js +11 -0
  18. package/components/SideDialog/styles.js +4 -0
  19. package/components/StaticCalendar/StaticCalendarGridButton/styles.js +2 -0
  20. package/components/Stepper/styles.js +2 -0
  21. package/components/WelcomeScreen/styles.js +4 -0
  22. package/hook-form/FormFiltersModalGroup/styles.js +1 -0
  23. package/node/components/BottomDrawer/styles.js +3 -0
  24. package/node/components/Chip/styles.js +1 -0
  25. package/node/components/DashboardLayout/DashboardWrapper/styles.js +5 -0
  26. package/node/components/DashboardLayout/Header/styles.js +2 -0
  27. package/node/components/DashboardSidebar/styles.js +2 -0
  28. package/node/components/DashboardSidebarPopover/SidebarPopoverItem/styles.js +3 -0
  29. package/node/components/DataGrid/styles.js +1 -0
  30. package/node/components/DataGridInfinite/styles.js +1 -0
  31. package/node/components/DatePicker/YearPicker/YearPicker.js +1 -1
  32. package/node/components/Dialog/styles.js +2 -0
  33. package/node/components/ExpansionPanel/styles.js +2 -0
  34. package/node/components/FlowButton/styles.js +2 -0
  35. package/node/components/MenuOrganization/styles.js +3 -1
  36. package/node/components/Notification/NotificationStackContainer/styles.js +3 -0
  37. package/node/components/PageContent/styles.js +2 -0
  38. package/node/components/PageHeader/PageActions/useLogic/useLogic.js +9 -4
  39. package/node/components/ResizingDataGrid/Sliders/styles.js +11 -0
  40. package/node/components/SideDialog/styles.js +4 -0
  41. package/node/components/StaticCalendar/StaticCalendarGridButton/styles.js +2 -0
  42. package/node/components/Stepper/styles.js +2 -0
  43. package/node/components/WelcomeScreen/styles.js +4 -0
  44. package/node/hook-form/FormFiltersModalGroup/styles.js +1 -0
  45. package/package.json +1 -1
@@ -7,9 +7,12 @@ export const StyledDrawer = styled(Drawer) `
7
7
  ${`.${paperClasses.root}`} {
8
8
  max-height: calc(100vh - ${OFFSET_TOP_SCREEN});
9
9
 
10
+ /* Причина игнора: прогрессивное улучшение */
11
+ /* stylelint-disable plugin/no-unsupported-browser-features */
10
12
  @supports (height: 100dvh) {
11
13
  max-height: calc(100dvh - ${OFFSET_TOP_SCREEN});
12
14
  }
15
+ /* stylelint-enable plugin/no-unsupported-browser-features */
13
16
 
14
17
  border-top-left-radius: calc(${({ theme }) => theme.shape.medium} * 2);
15
18
  border-top-right-radius: calc(${({ theme }) => theme.shape.medium} * 2);
@@ -99,6 +99,7 @@ export const Wrapper = styled.div `
99
99
 
100
100
  background-color: ${({ theme }) => theme.palette.components.disabled};
101
101
  border-color: transparent;
102
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
102
103
  mix-blend-mode: luminosity;
103
104
 
104
105
  & .${chipClassnames.startAdornment},
@@ -55,6 +55,8 @@ export const LayoutContent = styled('div', {
55
55
  });
56
56
  }};
57
57
 
58
+ /* Причина игнора: Не критично для отображения */
59
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
58
60
  &:has(.${dashboardSidebarClassnames.root}) {
59
61
  column-gap: ${({ theme }) => theme.spacing(4)};
60
62
 
@@ -63,9 +65,12 @@ export const LayoutContent = styled('div', {
63
65
  }
64
66
  }
65
67
 
68
+ /* Причина игнора: Прогрессивное улучшение */
69
+ /* stylelint-disable plugin/no-unsupported-browser-features */
66
70
  @supports (height: 100dvh) {
67
71
  height: 100dvh;
68
72
  }
73
+ /* stylelint-enable plugin/no-unsupported-browser-features */
69
74
 
70
75
  ${({ theme }) => theme.breakpoints.down('sm')} {
71
76
  column-gap: 0;
@@ -55,6 +55,8 @@ export const MobileSidebarTogglerWrapper = styled.div `
55
55
  padding: ${({ theme }) => theme.spacing(2)};
56
56
  }
57
57
 
58
+ /* Причина игнора: Не критично для отображения */
59
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
58
60
  .${dashboardLayoutClassnames.root}:not(:has(.${dashboardSidebarClassnames.root}))
59
61
  & {
60
62
  display: none;
@@ -86,6 +86,8 @@ export const SidebarHeader = styled.header `
86
86
 
87
87
  border-bottom: 1px solid ${({ theme }) => theme.palette.grey[300]};
88
88
 
89
+ /* Причина игнора: Не критично для отображения */
90
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
89
91
  &:has(.${menuOrganizationClassnames.button}) {
90
92
  padding: 0;
91
93
  }
@@ -5,6 +5,7 @@ export const Item = styled.div `
5
5
 
6
6
  opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};
7
7
  background-color: ${({ theme }) => theme.palette.background.default};
8
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
8
9
  mix-blend-mode: ${({ $isDisabled }) => $isDisabled ? 'luminosity' : 'normal'};
9
10
 
10
11
  transition: ${({ theme }) => {
@@ -21,6 +22,8 @@ export const Item = styled.div `
21
22
  background-color: ${({ theme }) => theme.palette.primary[100]};
22
23
  }
23
24
 
25
+ /* Причина игнора: Не критично для отображения */
26
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
24
27
  &:has(.${sidebarPopoverItemClassnames.content}:focus-visible) {
25
28
  border-radius: ${({ theme }) => theme.shape.small};
26
29
  outline: 2px solid ${({ theme }) => theme.palette.components.focused};
@@ -29,5 +29,6 @@ export const DisabledDataGridWrapper = styled(DataGridWrapper, {
29
29
  pointer-events: none;
30
30
 
31
31
  background: ${({ theme }) => theme.palette.background.element};
32
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
32
33
  mix-blend-mode: luminosity;
33
34
  `;
@@ -11,6 +11,7 @@ export const DisabledDataGridWrapper = styled(DataGridWrapper) `
11
11
  pointer-events: none;
12
12
 
13
13
  background: ${({ theme }) => theme.palette.background.element};
14
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
14
15
  mix-blend-mode: luminosity;
15
16
  `;
16
17
  export const FooterRow = styled.footer `
@@ -20,5 +20,5 @@ export const YearPicker = ({ date: initialDate, selectedDate, onChange, rangeDat
20
20
  : null,
21
21
  });
22
22
  const { year: yearCaption } = useContext(ConfigContext).datePickerLanguageMap;
23
- return (_jsxs(DateCalendarWrapper, { children: [_jsx(DateCalendarHead, { ...headProps, arrowPostfixTitle: yearCaption.plural, isPlural: true, onPrevClick: handlePrevClick, onNextClick: handleNextClick, headBtnText: `${grid[0]?.year}-${grid.at(-1)?.year}` }), _jsx(DateCalendarGridLarge, { className: datePickerClassnames.yearsContainer, children: grid.map(({ year, date, isDisabled, isSelected, ...props }, index) => (_jsx(DateCalendarGridButtonLarge, { onClick: () => onChange?.(date), lengthInRow: ELEMENTS_COUNT_IN_ROW_IN_LARGE_GRID, isPreviousItemInSelectedRange: grid[index - 1]?.isInSelectedRange, disabled: isDisabled, selected: isSelected, isTooltipActive: false, ...props, children: year }, year))) })] }));
23
+ return (_jsxs(DateCalendarWrapper, { children: [_jsx(DateCalendarHead, { ...headProps, arrowPostfixTitle: yearCaption.plural, isPlural: true, onPrevClick: handlePrevClick, onNextClick: handleNextClick, headBtnText: `${grid[0]?.year}-${grid[grid.length - 1]?.year}` }), _jsx(DateCalendarGridLarge, { className: datePickerClassnames.yearsContainer, children: grid.map(({ year, date, isDisabled, isSelected, ...props }, index) => (_jsx(DateCalendarGridButtonLarge, { onClick: () => onChange?.(date), lengthInRow: ELEMENTS_COUNT_IN_ROW_IN_LARGE_GRID, isPreviousItemInSelectedRange: grid[index - 1]?.isInSelectedRange, disabled: isDisabled, selected: isSelected, isTooltipActive: false, ...props, children: year }, year))) })] }));
24
24
  };
@@ -21,6 +21,8 @@ export const StyledDialog = styled(MuiDialog, {
21
21
  box-shadow: ${({ theme }) => theme.elevation[300]};
22
22
  }
23
23
 
24
+ /* Причина игнора: Не критично для отображения */
25
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
24
26
  &:not(:has(.${dialogActionsClassnames.root})) .${dialogContentClassnames.root} {
25
27
  padding-bottom: ${({ theme }) => theme.spacing(6)};
26
28
  }
@@ -9,6 +9,8 @@ export const Wrapper = styled('details') `
9
9
  border: 1px solid ${({ theme }) => theme.palette.grey[300]};
10
10
  border-radius: ${({ theme }) => theme.shape.medium};
11
11
 
12
+ /* Причина игнора: Не критично для отображения */
13
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
12
14
  &:has(.${expansionPanelClassnames.summary}:focus-visible) {
13
15
  border-radius: ${({ theme }) => theme.shape.medium};
14
16
  outline: 2px solid ${({ theme }) => theme.palette.components.focused};
@@ -18,6 +18,8 @@ export const StyledButton = styled(Button) `
18
18
  padding: ${({ theme: { spacing } }) => spacing(4, 5)};
19
19
  }
20
20
 
21
+ /* Причина игнора: Не критично для отображения */
22
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
21
23
  &:has(.${loaderClassnames.root}) {
22
24
  justify-content: center;
23
25
  }
@@ -88,10 +88,12 @@ export const StyledPopover = styled(Popover) `
88
88
 
89
89
  height: calc(100vh - ${OFFSET_TOP_SCREEN});
90
90
 
91
+ /* Причина игнора: прогрессивное улучшение */
92
+ /* stylelint-disable plugin/no-unsupported-browser-features */
91
93
  @supports (height: 100dvh) {
92
94
  height: calc(100dvh - ${OFFSET_TOP_SCREEN});
93
95
  }
94
-
96
+ /* stylelint-enable plugin/no-unsupported-browser-features */
95
97
  }
96
98
  }
97
99
 
@@ -55,9 +55,12 @@ export const Wrapper = styled.div `
55
55
 
56
56
  height: 100vh;
57
57
 
58
+ /* Причина игнора: Прогрессивное улучшение */
59
+ /* stylelint-disable plugin/no-unsupported-browser-features */
58
60
  @supports (height: 100dvh) {
59
61
  height: 100dvh;
60
62
  }
63
+ /* stylelint-enable plugin/no-unsupported-browser-features */
61
64
 
62
65
  .Toastify:not(:last-child) {
63
66
  overflow: hidden;
@@ -81,6 +81,8 @@ export const Content = styled.div `
81
81
  }
82
82
  }
83
83
 
84
+ /* Причина игнора: Не критично для отображения */
85
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
84
86
  &:has(.${pdfViewerClassnames.document}.${pdfViewerClassnames.zoom}) {
85
87
  scroll-behavior: auto;
86
88
  scrollbar-gutter: auto;
@@ -1,4 +1,4 @@
1
- import { useCallback, useContext, useMemo } from 'react';
1
+ import { useContext, useMemo } from 'react';
2
2
  import { useActionsState } from '../../../ActionGroup';
3
3
  import { NextFeatureFlagsContext } from '../../../ConfigProvider/NextFeatureFlagsContext';
4
4
  import { DashboardContext } from '../../../DashboardContext';
@@ -19,7 +19,7 @@ export const useLogic = ({ main, secondary, secondaryVisible, withCollapseOnLapt
19
19
  ? 'Свернуть и вернуть шапку сервиса'
20
20
  : 'Раскрыть на весь экран';
21
21
  // Все действия убираются в кнопку с троеточием на laptop разрешениях
22
- const getCollapsedActions = useCallback(() => {
22
+ const collapsedActions = useMemo(() => {
23
23
  const fromMain = main?.flatMap((action) => {
24
24
  if ('isNested' in action && action.isNested) {
25
25
  return action.actions.map((nested) => ({
@@ -40,15 +40,20 @@ export const useLogic = ({ main, secondary, secondaryVisible, withCollapseOnLapt
40
40
  ...rest,
41
41
  disabled: disabledAction || disabled,
42
42
  }));
43
- return [
43
+ const allActions = [
44
44
  ...(fromMain || []),
45
45
  ...(fromSecondaryVisible || []),
46
46
  ...(fromSecondary || []),
47
47
  ];
48
+ // Если действие только одно — схлопывание не происходит
49
+ if (allActions.length <= 1) {
50
+ return [];
51
+ }
52
+ return allActions;
48
53
  }, [main, secondary, secondaryVisible, disabledAction]);
49
54
  const classnames = useMemo(() => {
50
55
  return classNames({
51
- [actionsClassnames.withCollapseOnLaptop]: withCollapseOnLaptop,
56
+ [actionsClassnames.withCollapseOnLaptop]: withCollapseOnLaptop && collapsedActions.length > 0,
52
57
  });
53
58
  }, [withCollapseOnLaptop]);
54
59
  return {
@@ -57,7 +62,7 @@ export const useLogic = ({ main, secondary, secondaryVisible, withCollapseOnLapt
57
62
  isFocusedMode,
58
63
  handleClick,
59
64
  tooltipTitle,
60
- collapsedActions: getCollapsedActions(),
65
+ collapsedActions,
61
66
  classnames,
62
67
  };
63
68
  };
@@ -2,6 +2,9 @@ import { dataGridClassnames } from '../../DataGrid';
2
2
  import { css, styled } from '../../styled';
3
3
  const createThumbStyles = (theme) => css `
4
4
  pointer-events: all;
5
+
6
+ /* Причина игнора: Не поддерживается на мобильных устройствах. Не критично */
7
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
5
8
  cursor: col-resize;
6
9
 
7
10
  transform-origin: top;
@@ -25,7 +28,10 @@ const createThumbStyles = (theme) => css `
25
28
  duration: theme.transitions.duration.short,
26
29
  })};
27
30
 
31
+ /* Причина игнора: прогрессивное улучшение */
32
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
28
33
  @supports (container-type: size) {
34
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
29
35
  height: 100cqh;
30
36
  max-height: var(--thumb-height);
31
37
  }
@@ -35,12 +41,15 @@ const createThumbActiveStyles = (theme) => css `
35
41
 
36
42
  color: ${theme.palette.primary.dark};
37
43
 
44
+ /* Причина игнора: прогрессивное улучшение */
45
+ /* stylelint-disable plugin/no-unsupported-browser-features */
38
46
  @supports (container-type: size) {
39
47
  transform: translateY(calc(100cqh / 2 - var(--thumb-height) / 2))
40
48
  scaleX(0.4);
41
49
 
42
50
  max-height: calc(100cqh - var(--thumb-height) / 2);
43
51
  }
52
+ /* stylelint-enable plugin/no-unsupported-browser-features */
44
53
  `;
45
54
  const createThumbHoverStyles = (theme) => css `
46
55
  color: ${theme.palette.grey[500]};
@@ -131,6 +140,8 @@ export const InputSlider = styled.input `
131
140
  ${({ theme }) => createThumbActiveStyles(theme)}
132
141
  }
133
142
 
143
+ /* Причина игнора: Не критично для отображения */
144
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
134
145
  .${dataGridClassnames.root}:has(.${dataGridClassnames.header}:hover) &,
135
146
  &:focus-visible,
136
147
  &:hover,
@@ -11,9 +11,13 @@ export const StyledDrawer = styled(Drawer, {
11
11
  }) `
12
12
  height: 100vh;
13
13
 
14
+ /* Причина игнора: Прогрессивное улучшение */
15
+ /* stylelint-disable plugin/no-unsupported-browser-features */
14
16
  @supports (height: 100dvh) {
15
17
  height: 100dvh;
16
18
  }
19
+ /* stylelint-enable plugin/no-unsupported-browser-features */
20
+
17
21
  .${drawerClasses.paper} {
18
22
  width: ${({ $size }) => getSize($size)};
19
23
  height: calc(100% - ${SIDE_DIALOG_SCREEN_OFFSET});
@@ -19,6 +19,8 @@ const nonForwardableProps = new Set([
19
19
  export const StaticCalendarGridButton = styled(StaticCalendarButton, {
20
20
  shouldForwardProp: (propName) => !nonForwardableProps.has(propName),
21
21
  }) `
22
+ /* Причина игнора: Не поддерживается на мобильных устройствах. Не критично */
23
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
22
24
  cursor: ${({ $isNotInteractable, $isDraggable }) => ($isDraggable && 'grab') || ($isNotInteractable && 'initial')};
23
25
 
24
26
  position: relative;
@@ -33,6 +33,8 @@ export const StyledStepper = styled(Stepper) `
33
33
  margin-left: 9px;
34
34
  }
35
35
 
36
+ /* Причина игнора: Не критично для отображения */
37
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
36
38
  .${stepClasses.vertical}:has(.${stepContentClasses.root}) {
37
39
  + .${stepConnectorClasses.vertical} {
38
40
  display: none;
@@ -33,9 +33,13 @@ export const FirstStep = styled.div `
33
33
  width: 100%;
34
34
  height: 100vh;
35
35
 
36
+ /* Причина игнора: Прогрессивное улучшение */
37
+ /* stylelint-disable plugin/no-unsupported-browser-features */
36
38
  @supports (height: 100dvh) {
37
39
  height: 100dvh;
38
40
  }
41
+ /* stylelint-enable plugin/no-unsupported-browser-features */
42
+
39
43
  opacity: 0;
40
44
  background-color: ${({ theme }) => theme.palette.background.paper};
41
45
 
@@ -2,6 +2,7 @@ import { Grid } from '../../components/Grid';
2
2
  import { styled } from '../../components/styled';
3
3
  import { formFiltersClassnames } from '../FormFilters/constants';
4
4
  export const Container = styled(Grid) `
5
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
5
6
  display: contents;
6
7
 
7
8
  > * {
@@ -13,9 +13,12 @@ exports.StyledDrawer = (0, styled_1.styled)(Drawer_1.default) `
13
13
  ${`.${Paper_1.paperClasses.root}`} {
14
14
  max-height: calc(100vh - ${constants_1.OFFSET_TOP_SCREEN});
15
15
 
16
+ /* Причина игнора: прогрессивное улучшение */
17
+ /* stylelint-disable plugin/no-unsupported-browser-features */
16
18
  @supports (height: 100dvh) {
17
19
  max-height: calc(100dvh - ${constants_1.OFFSET_TOP_SCREEN});
18
20
  }
21
+ /* stylelint-enable plugin/no-unsupported-browser-features */
19
22
 
20
23
  border-top-left-radius: calc(${({ theme }) => theme.shape.medium} * 2);
21
24
  border-top-right-radius: calc(${({ theme }) => theme.shape.medium} * 2);
@@ -102,6 +102,7 @@ exports.Wrapper = styled_1.styled.div `
102
102
 
103
103
  background-color: ${({ theme }) => theme.palette.components.disabled};
104
104
  border-color: transparent;
105
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
105
106
  mix-blend-mode: luminosity;
106
107
 
107
108
  & .${constants_1.chipClassnames.startAdornment},
@@ -58,6 +58,8 @@ exports.LayoutContent = (0, styled_1.styled)('div', {
58
58
  });
59
59
  }};
60
60
 
61
+ /* Причина игнора: Не критично для отображения */
62
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
61
63
  &:has(.${constants_1.dashboardSidebarClassnames.root}) {
62
64
  column-gap: ${({ theme }) => theme.spacing(4)};
63
65
 
@@ -66,9 +68,12 @@ exports.LayoutContent = (0, styled_1.styled)('div', {
66
68
  }
67
69
  }
68
70
 
71
+ /* Причина игнора: Прогрессивное улучшение */
72
+ /* stylelint-disable plugin/no-unsupported-browser-features */
69
73
  @supports (height: 100dvh) {
70
74
  height: 100dvh;
71
75
  }
76
+ /* stylelint-enable plugin/no-unsupported-browser-features */
72
77
 
73
78
  ${({ theme }) => theme.breakpoints.down('sm')} {
74
79
  column-gap: 0;
@@ -58,6 +58,8 @@ exports.MobileSidebarTogglerWrapper = styled_1.styled.div `
58
58
  padding: ${({ theme }) => theme.spacing(2)};
59
59
  }
60
60
 
61
+ /* Причина игнора: Не критично для отображения */
62
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
61
63
  .${constants_4.dashboardLayoutClassnames.root}:not(:has(.${constants_1.dashboardSidebarClassnames.root}))
62
64
  & {
63
65
  display: none;
@@ -89,6 +89,8 @@ exports.SidebarHeader = styled_1.styled.header `
89
89
 
90
90
  border-bottom: 1px solid ${({ theme }) => theme.palette.grey[300]};
91
91
 
92
+ /* Причина игнора: Не критично для отображения */
93
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
92
94
  &:has(.${constants_3.menuOrganizationClassnames.button}) {
93
95
  padding: 0;
94
96
  }
@@ -8,6 +8,7 @@ exports.Item = styled_1.styled.div `
8
8
 
9
9
  opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};
10
10
  background-color: ${({ theme }) => theme.palette.background.default};
11
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
11
12
  mix-blend-mode: ${({ $isDisabled }) => $isDisabled ? 'luminosity' : 'normal'};
12
13
 
13
14
  transition: ${({ theme }) => {
@@ -24,6 +25,8 @@ exports.Item = styled_1.styled.div `
24
25
  background-color: ${({ theme }) => theme.palette.primary[100]};
25
26
  }
26
27
 
28
+ /* Причина игнора: Не критично для отображения */
29
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
27
30
  &:has(.${constants_1.sidebarPopoverItemClassnames.content}:focus-visible) {
28
31
  border-radius: ${({ theme }) => theme.shape.small};
29
32
  outline: 2px solid ${({ theme }) => theme.palette.components.focused};
@@ -32,5 +32,6 @@ exports.DisabledDataGridWrapper = (0, styled_1.styled)(exports.DataGridWrapper,
32
32
  pointer-events: none;
33
33
 
34
34
  background: ${({ theme }) => theme.palette.background.element};
35
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
35
36
  mix-blend-mode: luminosity;
36
37
  `;
@@ -14,6 +14,7 @@ exports.DisabledDataGridWrapper = (0, styled_1.styled)(exports.DataGridWrapper)
14
14
  pointer-events: none;
15
15
 
16
16
  background: ${({ theme }) => theme.palette.background.element};
17
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
17
18
  mix-blend-mode: luminosity;
18
19
  `;
19
20
  exports.FooterRow = styled_1.styled.footer `
@@ -23,6 +23,6 @@ const YearPicker = ({ date: initialDate, selectedDate, onChange, rangeDate, ...h
23
23
  : null,
24
24
  });
25
25
  const { year: yearCaption } = (0, react_1.useContext)(ConfigProvider_1.ConfigContext).datePickerLanguageMap;
26
- return ((0, jsx_runtime_1.jsxs)(DateCalendar_1.DateCalendarWrapper, { children: [(0, jsx_runtime_1.jsx)(DateCalendar_1.DateCalendarHead, { ...headProps, arrowPostfixTitle: yearCaption.plural, isPlural: true, onPrevClick: handlePrevClick, onNextClick: handleNextClick, headBtnText: `${grid[0]?.year}-${grid.at(-1)?.year}` }), (0, jsx_runtime_1.jsx)(DateCalendar_1.DateCalendarGridLarge, { className: constants_1.datePickerClassnames.yearsContainer, children: grid.map(({ year, date, isDisabled, isSelected, ...props }, index) => ((0, jsx_runtime_1.jsx)(DateCalendar_1.DateCalendarGridButtonLarge, { onClick: () => onChange?.(date), lengthInRow: constants_1.ELEMENTS_COUNT_IN_ROW_IN_LARGE_GRID, isPreviousItemInSelectedRange: grid[index - 1]?.isInSelectedRange, disabled: isDisabled, selected: isSelected, isTooltipActive: false, ...props, children: year }, year))) })] }));
26
+ return ((0, jsx_runtime_1.jsxs)(DateCalendar_1.DateCalendarWrapper, { children: [(0, jsx_runtime_1.jsx)(DateCalendar_1.DateCalendarHead, { ...headProps, arrowPostfixTitle: yearCaption.plural, isPlural: true, onPrevClick: handlePrevClick, onNextClick: handleNextClick, headBtnText: `${grid[0]?.year}-${grid[grid.length - 1]?.year}` }), (0, jsx_runtime_1.jsx)(DateCalendar_1.DateCalendarGridLarge, { className: constants_1.datePickerClassnames.yearsContainer, children: grid.map(({ year, date, isDisabled, isSelected, ...props }, index) => ((0, jsx_runtime_1.jsx)(DateCalendar_1.DateCalendarGridButtonLarge, { onClick: () => onChange?.(date), lengthInRow: constants_1.ELEMENTS_COUNT_IN_ROW_IN_LARGE_GRID, isPreviousItemInSelectedRange: grid[index - 1]?.isInSelectedRange, disabled: isDisabled, selected: isSelected, isTooltipActive: false, ...props, children: year }, year))) })] }));
27
27
  };
28
28
  exports.YearPicker = YearPicker;
@@ -47,6 +47,8 @@ exports.StyledDialog = (0, styled_1.styled)(Dialog_1.default, {
47
47
  box-shadow: ${({ theme }) => theme.elevation[300]};
48
48
  }
49
49
 
50
+ /* Причина игнора: Не критично для отображения */
51
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
50
52
  &:not(:has(.${DialogActions_1.dialogActionsClassnames.root})) .${DialogContent_1.dialogContentClassnames.root} {
51
53
  padding-bottom: ${({ theme }) => theme.spacing(6)};
52
54
  }
@@ -12,6 +12,8 @@ exports.Wrapper = (0, styled_1.styled)('details') `
12
12
  border: 1px solid ${({ theme }) => theme.palette.grey[300]};
13
13
  border-radius: ${({ theme }) => theme.shape.medium};
14
14
 
15
+ /* Причина игнора: Не критично для отображения */
16
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
15
17
  &:has(.${constants_1.expansionPanelClassnames.summary}:focus-visible) {
16
18
  border-radius: ${({ theme }) => theme.shape.medium};
17
19
  outline: 2px solid ${({ theme }) => theme.palette.components.focused};
@@ -21,6 +21,8 @@ exports.StyledButton = (0, styled_1.styled)(Button_1.Button) `
21
21
  padding: ${({ theme: { spacing } }) => spacing(4, 5)};
22
22
  }
23
23
 
24
+ /* Причина игнора: Не критично для отображения */
25
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
24
26
  &:has(.${Loader_1.loaderClassnames.root}) {
25
27
  justify-content: center;
26
28
  }
@@ -91,10 +91,12 @@ exports.StyledPopover = (0, styled_1.styled)(Popover_1.Popover) `
91
91
 
92
92
  height: calc(100vh - ${constants_1.OFFSET_TOP_SCREEN});
93
93
 
94
+ /* Причина игнора: прогрессивное улучшение */
95
+ /* stylelint-disable plugin/no-unsupported-browser-features */
94
96
  @supports (height: 100dvh) {
95
97
  height: calc(100dvh - ${constants_1.OFFSET_TOP_SCREEN});
96
98
  }
97
-
99
+ /* stylelint-enable plugin/no-unsupported-browser-features */
98
100
  }
99
101
  }
100
102
 
@@ -58,9 +58,12 @@ exports.Wrapper = styled_1.styled.div `
58
58
 
59
59
  height: 100vh;
60
60
 
61
+ /* Причина игнора: Прогрессивное улучшение */
62
+ /* stylelint-disable plugin/no-unsupported-browser-features */
61
63
  @supports (height: 100dvh) {
62
64
  height: 100dvh;
63
65
  }
66
+ /* stylelint-enable plugin/no-unsupported-browser-features */
64
67
 
65
68
  .Toastify:not(:last-child) {
66
69
  overflow: hidden;
@@ -84,6 +84,8 @@ exports.Content = styled_1.styled.div `
84
84
  }
85
85
  }
86
86
 
87
+ /* Причина игнора: Не критично для отображения */
88
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
87
89
  &:has(.${PdfViewer_1.pdfViewerClassnames.document}.${PdfViewer_1.pdfViewerClassnames.zoom}) {
88
90
  scroll-behavior: auto;
89
91
  scrollbar-gutter: auto;
@@ -22,7 +22,7 @@ const useLogic = ({ main, secondary, secondaryVisible, withCollapseOnLaptop = fa
22
22
  ? 'Свернуть и вернуть шапку сервиса'
23
23
  : 'Раскрыть на весь экран';
24
24
  // Все действия убираются в кнопку с троеточием на laptop разрешениях
25
- const getCollapsedActions = (0, react_1.useCallback)(() => {
25
+ const collapsedActions = (0, react_1.useMemo)(() => {
26
26
  const fromMain = main?.flatMap((action) => {
27
27
  if ('isNested' in action && action.isNested) {
28
28
  return action.actions.map((nested) => ({
@@ -43,15 +43,20 @@ const useLogic = ({ main, secondary, secondaryVisible, withCollapseOnLaptop = fa
43
43
  ...rest,
44
44
  disabled: disabledAction || disabled,
45
45
  }));
46
- return [
46
+ const allActions = [
47
47
  ...(fromMain || []),
48
48
  ...(fromSecondaryVisible || []),
49
49
  ...(fromSecondary || []),
50
50
  ];
51
+ // Если действие только одно — схлопывание не происходит
52
+ if (allActions.length <= 1) {
53
+ return [];
54
+ }
55
+ return allActions;
51
56
  }, [main, secondary, secondaryVisible, disabledAction]);
52
57
  const classnames = (0, react_1.useMemo)(() => {
53
58
  return (0, classNames_1.classNames)({
54
- [constants_1.actionsClassnames.withCollapseOnLaptop]: withCollapseOnLaptop,
59
+ [constants_1.actionsClassnames.withCollapseOnLaptop]: withCollapseOnLaptop && collapsedActions.length > 0,
55
60
  });
56
61
  }, [withCollapseOnLaptop]);
57
62
  return {
@@ -60,7 +65,7 @@ const useLogic = ({ main, secondary, secondaryVisible, withCollapseOnLaptop = fa
60
65
  isFocusedMode,
61
66
  handleClick,
62
67
  tooltipTitle,
63
- collapsedActions: getCollapsedActions(),
68
+ collapsedActions,
64
69
  classnames,
65
70
  };
66
71
  };
@@ -5,6 +5,9 @@ const DataGrid_1 = require("../../DataGrid");
5
5
  const styled_1 = require("../../styled");
6
6
  const createThumbStyles = (theme) => (0, styled_1.css) `
7
7
  pointer-events: all;
8
+
9
+ /* Причина игнора: Не поддерживается на мобильных устройствах. Не критично */
10
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
8
11
  cursor: col-resize;
9
12
 
10
13
  transform-origin: top;
@@ -28,7 +31,10 @@ const createThumbStyles = (theme) => (0, styled_1.css) `
28
31
  duration: theme.transitions.duration.short,
29
32
  })};
30
33
 
34
+ /* Причина игнора: прогрессивное улучшение */
35
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
31
36
  @supports (container-type: size) {
37
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
32
38
  height: 100cqh;
33
39
  max-height: var(--thumb-height);
34
40
  }
@@ -38,12 +44,15 @@ const createThumbActiveStyles = (theme) => (0, styled_1.css) `
38
44
 
39
45
  color: ${theme.palette.primary.dark};
40
46
 
47
+ /* Причина игнора: прогрессивное улучшение */
48
+ /* stylelint-disable plugin/no-unsupported-browser-features */
41
49
  @supports (container-type: size) {
42
50
  transform: translateY(calc(100cqh / 2 - var(--thumb-height) / 2))
43
51
  scaleX(0.4);
44
52
 
45
53
  max-height: calc(100cqh - var(--thumb-height) / 2);
46
54
  }
55
+ /* stylelint-enable plugin/no-unsupported-browser-features */
47
56
  `;
48
57
  const createThumbHoverStyles = (theme) => (0, styled_1.css) `
49
58
  color: ${theme.palette.grey[500]};
@@ -134,6 +143,8 @@ exports.InputSlider = styled_1.styled.input `
134
143
  ${({ theme }) => createThumbActiveStyles(theme)}
135
144
  }
136
145
 
146
+ /* Причина игнора: Не критично для отображения */
147
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
137
148
  .${DataGrid_1.dataGridClassnames.root}:has(.${DataGrid_1.dataGridClassnames.header}:hover) &,
138
149
  &:focus-visible,
139
150
  &:hover,
@@ -37,9 +37,13 @@ exports.StyledDrawer = (0, styled_1.styled)(Drawer_1.default, {
37
37
  }) `
38
38
  height: 100vh;
39
39
 
40
+ /* Причина игнора: Прогрессивное улучшение */
41
+ /* stylelint-disable plugin/no-unsupported-browser-features */
40
42
  @supports (height: 100dvh) {
41
43
  height: 100dvh;
42
44
  }
45
+ /* stylelint-enable plugin/no-unsupported-browser-features */
46
+
43
47
  .${Drawer_1.drawerClasses.paper} {
44
48
  width: ${({ $size }) => getSize($size)};
45
49
  height: calc(100% - ${constants_1.SIDE_DIALOG_SCREEN_OFFSET});
@@ -22,6 +22,8 @@ const nonForwardableProps = new Set([
22
22
  exports.StaticCalendarGridButton = (0, styled_1.styled)(StaticCalendarButton_1.StaticCalendarButton, {
23
23
  shouldForwardProp: (propName) => !nonForwardableProps.has(propName),
24
24
  }) `
25
+ /* Причина игнора: Не поддерживается на мобильных устройствах. Не критично */
26
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
25
27
  cursor: ${({ $isNotInteractable, $isDraggable }) => ($isDraggable && 'grab') || ($isNotInteractable && 'initial')};
26
28
 
27
29
  position: relative;
@@ -39,6 +39,8 @@ exports.StyledStepper = (0, styled_1.styled)(Stepper_1.default) `
39
39
  margin-left: 9px;
40
40
  }
41
41
 
42
+ /* Причина игнора: Не критично для отображения */
43
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
42
44
  .${Step_1.stepClasses.vertical}:has(.${StepContent_1.stepContentClasses.root}) {
43
45
  + .${StepConnector_1.stepConnectorClasses.vertical} {
44
46
  display: none;
@@ -36,9 +36,13 @@ exports.FirstStep = styled_1.styled.div `
36
36
  width: 100%;
37
37
  height: 100vh;
38
38
 
39
+ /* Причина игнора: Прогрессивное улучшение */
40
+ /* stylelint-disable plugin/no-unsupported-browser-features */
39
41
  @supports (height: 100dvh) {
40
42
  height: 100dvh;
41
43
  }
44
+ /* stylelint-enable plugin/no-unsupported-browser-features */
45
+
42
46
  opacity: 0;
43
47
  background-color: ${({ theme }) => theme.palette.background.paper};
44
48
 
@@ -5,6 +5,7 @@ const Grid_1 = require("../../components/Grid");
5
5
  const styled_1 = require("../../components/styled");
6
6
  const constants_1 = require("../FormFilters/constants");
7
7
  exports.Container = (0, styled_1.styled)(Grid_1.Grid) `
8
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
8
9
  display: contents;
9
10
 
10
11
  > * {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astral/ui",
3
- "version": "4.32.1",
3
+ "version": "4.33.0",
4
4
  "browser": "./index.js",
5
5
  "main": "./node/index.js",
6
6
  "dependencies": {