@geotab/zenith 3.10.0 → 3.11.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/README.md +29 -0
- package/dist/calendar/calendar.js +7 -4
- package/dist/card/components/title.js +4 -1
- package/dist/card/components/titleLink.js +5 -2
- package/dist/chart/barChart/getDefaultOptions.d.ts +2 -1
- package/dist/chart/barChart/getDefaultOptions.js +5 -2
- package/dist/chart/barChart.js +6 -4
- package/dist/chart/lineChart/getDefaultOptions.d.ts +2 -1
- package/dist/chart/lineChart/getDefaultOptions.js +5 -2
- package/dist/chart/lineChart.js +4 -2
- package/dist/checkboxListWithAction/checkboxListWithAction.js +4 -1
- package/dist/commonHelpers/arrowNavigation/components/arrowButton/arrowButton.js +4 -1
- package/dist/commonStyles/pillStyles/pillContent.less +13 -14
- package/dist/commonStyles/pillStyles/pillStyles.less +4 -5
- package/dist/commonStyles/pillStyles/pillTextContent.less +2 -2
- package/dist/commonStyles/typography/typography.less +579 -19
- package/dist/controlledPopup/controlledPopup.d.ts +1 -0
- package/dist/controlledPopup/controlledPopup.js +3 -1
- package/dist/dataGrid/cell/cell.d.ts +2 -1
- package/dist/dataGrid/cell/cell.js +2 -2
- package/dist/dataGrid/dataGrid.js +7 -4
- package/dist/dataGrid/listColumn.d.ts +2 -0
- package/dist/dataGrid/row/row.d.ts +2 -1
- package/dist/dataGrid/row/row.js +13 -9
- package/dist/dataGrid/withFlexibleColumns/components/columnSettingsList.js +2 -1
- package/dist/dataGrid/withSelectableRows/components/bulkActions/bulkActions.d.ts +4 -0
- package/dist/dateRangeInner/dateRangeInner.js +5 -2
- package/dist/dateRangeRaw/dateRangeRaw.js +5 -2
- package/dist/dateRangeRaw/utils/parseLabel.js +1 -1
- package/dist/dropdownRaw/dropdownRaw.js +12 -6
- package/dist/fileUpload/components/dropZoneContent.js +100 -100
- package/dist/fileUpload/fileUpload.js +100 -100
- package/dist/filters/components/filtersSearchList.js +4 -1
- package/dist/filtersBar/filtersContainer/filtersContainer.js +62 -61
- package/dist/formStepperButtons/formStepperButtons.js +4 -1
- package/dist/groupsFilterRaw/groupsFilterAdjustmentState.js +4 -1
- package/dist/groupsFilterRaw/groupsFilterInitialState.js +4 -1
- package/dist/header/headerBack.js +4 -1
- package/dist/icons/iconAlignLeft.js +1 -3
- package/dist/icons/iconAlignmentLeft.js +1 -3
- package/dist/icons/iconAlignmentRight.js +1 -3
- package/dist/icons/iconArrowBottomLeft.js +1 -3
- package/dist/icons/iconArrowBottomRight.js +1 -3
- package/dist/icons/iconArrowLeftPath.js +1 -3
- package/dist/icons/iconArrowRight.js +1 -3
- package/dist/icons/iconArrowRightCircle.js +1 -3
- package/dist/icons/iconArrowRightPath.js +1 -3
- package/dist/icons/iconArrowTopLeft.js +1 -3
- package/dist/icons/iconArrowTopRight.js +1 -3
- package/dist/icons/iconChevronDoubleRight.js +1 -3
- package/dist/icons/iconChevronRight.js +1 -3
- package/dist/icons/iconChevronRightSmall.js +1 -3
- package/dist/icons/iconCornerDownLeft.js +1 -3
- package/dist/icons/iconCornerDownRight.js +1 -3
- package/dist/icons/iconCornerLeftDown.js +1 -3
- package/dist/icons/iconCornerLeftUp.js +1 -3
- package/dist/icons/iconCornerRightDown.js +1 -3
- package/dist/icons/iconCornerRightUp.js +1 -3
- package/dist/icons/iconCornerUpLeft.js +1 -3
- package/dist/icons/iconCornerUpRight.js +1 -3
- package/dist/index.css +3254 -2922
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/lineChartMini/lineChartMini.js +15 -3
- package/dist/list/itemData/itemDataInternal.js +4 -1
- package/dist/list/listItem/listItem.js +4 -1
- package/dist/menu/components/controlledMenuList/controlledMenuList.d.ts +27 -0
- package/dist/menu/components/controlledMenuList/controlledMenuList.js +126 -0
- package/dist/menu/components/createControlledMenuList.d.ts +37 -0
- package/dist/menu/components/createControlledMenuList.js +55 -0
- package/dist/menu/components/createMenuItem.d.ts +67 -0
- package/dist/menu/components/createMenuItem.js +97 -0
- package/dist/menu/components/menuButton.js +12 -3
- package/dist/menu/components/menuItem.d.ts +1 -2
- package/dist/menu/components/menuItem.js +20 -74
- package/dist/menu/contexts/usePathContext.d.ts +2 -0
- package/dist/menu/contexts/usePathContext.js +9 -0
- package/dist/menu/controlledMenu.js +8 -175
- package/dist/menu/utils/buildMenuContent.d.ts +2 -0
- package/dist/menu/utils/buildMenuContent.js +38 -0
- package/dist/menu/utils/findContent.d.ts +2 -2
- package/dist/menu/utils/findContent.js +4 -3
- package/dist/menu/utils/getItemLabel.d.ts +2 -0
- package/dist/menu/utils/getItemLabel.js +8 -0
- package/dist/menu/utils/getSafeRel.d.ts +1 -0
- package/dist/menu/utils/getSafeRel.js +14 -0
- package/dist/menu/utils/isMenuItem.d.ts +2 -0
- package/dist/menu/utils/isMenuItem.js +13 -0
- package/dist/menu/utils/isSafeHref.d.ts +1 -0
- package/dist/menu/utils/isSafeHref.js +10 -0
- package/dist/menu/utils/normalizeSeparators.d.ts +2 -0
- package/dist/menu/utils/normalizeSeparators.js +23 -0
- package/dist/menu/utils/resolveKeys.d.ts +12 -0
- package/dist/menu/utils/resolveKeys.js +22 -0
- package/dist/menu/utils/useLastValidSheet.d.ts +7 -0
- package/dist/menu/utils/useLastValidSheet.js +30 -0
- package/dist/menu/utils/useMenuItemCore.d.ts +31 -0
- package/dist/menu/utils/useMenuItemCore.js +54 -0
- package/dist/menu/utils/useMenuItemKeyboardNav.d.ts +2 -0
- package/dist/menu/utils/useMenuItemKeyboardNav.js +15 -0
- package/dist/menu/utils/useMenuListKeyboardNav.d.ts +12 -0
- package/dist/menu/utils/useMenuListKeyboardNav.js +77 -0
- package/dist/menu/utils/useMenuPath.d.ts +6 -0
- package/dist/menu/utils/useMenuPath.js +35 -0
- package/dist/nav/navItem/navItem.js +10 -5
- package/dist/nav/navSection/navSection.js +7 -5
- package/dist/pagination/paginationArrow.js +10 -3
- package/dist/radioGroupRaw/radioGroupRaw.js +2 -1
- package/dist/rangeRaw/rangeRaw.js +0 -1
- package/dist/selectList/selectList.helpers.d.ts +1 -1
- package/dist/selectList/selectList.helpers.js +29 -4
- package/dist/selectList/selectList.js +3 -1
- package/dist/selectList/selectList.reducer.js +1 -2
- package/dist/selectList/selectListItem.js +4 -1
- package/dist/sortControl/sortControl.js +59 -4
- package/dist/table/children/useTableChildren.d.ts +1 -1
- package/dist/table/children/useTableChildren.js +3 -3
- package/dist/table/flexible/columnsList.js +4 -2
- package/dist/table/selectable/useSelectableRows.d.ts +8 -0
- package/dist/table/selectable/useSelectableRows.js +14 -6
- package/dist/table/table.js +1 -7
- package/dist/tabs/tabs.js +60 -58
- package/dist/tabs/tabsTestHelper.js +2 -2
- package/dist/timePickerRaw/timePickerRaw.js +1 -1
- package/dist/toggleButtonRaw/toggleButtonRaw.js +5 -2
- package/dist/utils/localization/translations/ar.json +3 -1
- package/dist/utils/localization/translations/cs.json +9 -5
- package/dist/utils/localization/translations/da-DK.json +9 -5
- package/dist/utils/localization/translations/de.json +9 -5
- package/dist/utils/localization/translations/en.json +5 -1
- package/dist/utils/localization/translations/es.json +9 -5
- package/dist/utils/localization/translations/fi-FI.json +9 -5
- package/dist/utils/localization/translations/fr-FR.json +9 -5
- package/dist/utils/localization/translations/fr.json +9 -5
- package/dist/utils/localization/translations/hu-HU.json +9 -5
- package/dist/utils/localization/translations/id.json +9 -5
- package/dist/utils/localization/translations/it.json +9 -5
- package/dist/utils/localization/translations/ja.json +9 -5
- package/dist/utils/localization/translations/ko-KR.json +9 -5
- package/dist/utils/localization/translations/ms.json +9 -5
- package/dist/utils/localization/translations/nb-NO.json +9 -5
- package/dist/utils/localization/translations/nl.json +9 -5
- package/dist/utils/localization/translations/pl.json +9 -5
- package/dist/utils/localization/translations/pt-BR.json +9 -5
- package/dist/utils/localization/translations/pt-PT.json +9 -5
- package/dist/utils/localization/translations/ro-RO.json +9 -5
- package/dist/utils/localization/translations/sk-SK.json +9 -5
- package/dist/utils/localization/translations/sv.json +9 -5
- package/dist/utils/localization/translations/th.json +9 -5
- package/dist/utils/localization/translations/tr.json +9 -5
- package/dist/utils/localization/translations/zh-Hans.json +9 -5
- package/dist/utils/localization/translations/zh-TW.json +9 -5
- package/dist/utils/localization/useDirectionalIcon.d.ts +3 -0
- package/dist/utils/localization/useDirectionalIcon.js +9 -0
- package/dist/utils/positioningUtils/alignments.d.ts +2 -2
- package/dist/utils/positioningUtils/alignments.js +2 -2
- package/dist/utils/positioningUtils/calculatePosition.js +4 -6
- package/esm/calendar/calendar.js +7 -4
- package/esm/card/components/title.js +4 -1
- package/esm/card/components/titleLink.js +5 -2
- package/esm/chart/barChart/getDefaultOptions.d.ts +2 -1
- package/esm/chart/barChart/getDefaultOptions.js +5 -2
- package/esm/chart/barChart.js +6 -4
- package/esm/chart/lineChart/getDefaultOptions.d.ts +2 -1
- package/esm/chart/lineChart/getDefaultOptions.js +5 -2
- package/esm/chart/lineChart.js +4 -2
- package/esm/checkboxListWithAction/checkboxListWithAction.js +4 -1
- package/esm/commonHelpers/arrowNavigation/components/arrowButton/arrowButton.js +4 -1
- package/esm/controlledPopup/controlledPopup.d.ts +1 -0
- package/esm/controlledPopup/controlledPopup.js +3 -1
- package/esm/dataGrid/cell/cell.d.ts +2 -1
- package/esm/dataGrid/cell/cell.js +2 -2
- package/esm/dataGrid/dataGrid.js +7 -4
- package/esm/dataGrid/listColumn.d.ts +2 -0
- package/esm/dataGrid/row/row.d.ts +2 -1
- package/esm/dataGrid/row/row.js +13 -9
- package/esm/dataGrid/withFlexibleColumns/components/columnSettingsList.js +2 -1
- package/esm/dataGrid/withSelectableRows/components/bulkActions/bulkActions.d.ts +4 -0
- package/esm/dateRangeInner/dateRangeInner.js +5 -2
- package/esm/dateRangeRaw/dateRangeRaw.js +5 -2
- package/esm/dateRangeRaw/utils/parseLabel.js +1 -1
- package/esm/dropdownRaw/dropdownRaw.js +12 -6
- package/esm/fileUpload/components/dropZoneContent.js +100 -100
- package/esm/fileUpload/fileUpload.js +100 -100
- package/esm/filters/components/filtersSearchList.js +4 -1
- package/esm/filtersBar/filtersContainer/filtersContainer.js +62 -61
- package/esm/formStepperButtons/formStepperButtons.js +4 -1
- package/esm/groupsFilterRaw/groupsFilterAdjustmentState.js +4 -1
- package/esm/groupsFilterRaw/groupsFilterInitialState.js +4 -1
- package/esm/header/headerBack.js +4 -1
- package/esm/icons/iconAlignLeft.js +1 -3
- package/esm/icons/iconAlignmentLeft.js +1 -3
- package/esm/icons/iconAlignmentRight.js +1 -3
- package/esm/icons/iconArrowBottomLeft.js +1 -3
- package/esm/icons/iconArrowBottomRight.js +1 -3
- package/esm/icons/iconArrowLeftPath.js +1 -3
- package/esm/icons/iconArrowRight.js +1 -3
- package/esm/icons/iconArrowRightCircle.js +1 -3
- package/esm/icons/iconArrowRightPath.js +1 -3
- package/esm/icons/iconArrowTopLeft.js +1 -3
- package/esm/icons/iconArrowTopRight.js +1 -3
- package/esm/icons/iconChevronDoubleRight.js +1 -3
- package/esm/icons/iconChevronRight.js +1 -3
- package/esm/icons/iconChevronRightSmall.js +1 -3
- package/esm/icons/iconCornerDownLeft.js +1 -3
- package/esm/icons/iconCornerDownRight.js +1 -3
- package/esm/icons/iconCornerLeftDown.js +1 -3
- package/esm/icons/iconCornerLeftUp.js +1 -3
- package/esm/icons/iconCornerRightDown.js +1 -3
- package/esm/icons/iconCornerRightUp.js +1 -3
- package/esm/icons/iconCornerUpLeft.js +1 -3
- package/esm/icons/iconCornerUpRight.js +1 -3
- package/esm/index.d.ts +1 -0
- package/esm/index.js +1 -0
- package/esm/lineChartMini/lineChartMini.js +15 -3
- package/esm/list/itemData/itemDataInternal.js +4 -1
- package/esm/list/listItem/listItem.js +4 -1
- package/esm/menu/components/controlledMenuList/controlledMenuList.d.ts +27 -0
- package/esm/menu/components/controlledMenuList/controlledMenuList.js +123 -0
- package/esm/menu/components/createControlledMenuList.d.ts +37 -0
- package/esm/menu/components/createControlledMenuList.js +51 -0
- package/esm/menu/components/createMenuItem.d.ts +67 -0
- package/esm/menu/components/createMenuItem.js +93 -0
- package/esm/menu/components/menuButton.js +12 -3
- package/esm/menu/components/menuItem.d.ts +1 -2
- package/esm/menu/components/menuItem.js +20 -74
- package/esm/menu/contexts/usePathContext.d.ts +2 -0
- package/esm/menu/contexts/usePathContext.js +5 -0
- package/esm/menu/controlledMenu.js +10 -177
- package/esm/menu/utils/buildMenuContent.d.ts +2 -0
- package/esm/menu/utils/buildMenuContent.js +34 -0
- package/esm/menu/utils/findContent.d.ts +2 -2
- package/esm/menu/utils/findContent.js +4 -3
- package/esm/menu/utils/getItemLabel.d.ts +2 -0
- package/esm/menu/utils/getItemLabel.js +4 -0
- package/esm/menu/utils/getSafeRel.d.ts +1 -0
- package/esm/menu/utils/getSafeRel.js +10 -0
- package/esm/menu/utils/isMenuItem.d.ts +2 -0
- package/esm/menu/utils/isMenuItem.js +9 -0
- package/esm/menu/utils/isSafeHref.d.ts +1 -0
- package/esm/menu/utils/isSafeHref.js +6 -0
- package/esm/menu/utils/normalizeSeparators.d.ts +2 -0
- package/esm/menu/utils/normalizeSeparators.js +19 -0
- package/esm/menu/utils/resolveKeys.d.ts +12 -0
- package/esm/menu/utils/resolveKeys.js +18 -0
- package/esm/menu/utils/useLastValidSheet.d.ts +7 -0
- package/esm/menu/utils/useLastValidSheet.js +26 -0
- package/esm/menu/utils/useMenuItemCore.d.ts +31 -0
- package/esm/menu/utils/useMenuItemCore.js +50 -0
- package/esm/menu/utils/useMenuItemKeyboardNav.d.ts +2 -0
- package/esm/menu/utils/useMenuItemKeyboardNav.js +11 -0
- package/esm/menu/utils/useMenuListKeyboardNav.d.ts +12 -0
- package/esm/menu/utils/useMenuListKeyboardNav.js +73 -0
- package/esm/menu/utils/useMenuPath.d.ts +6 -0
- package/esm/menu/utils/useMenuPath.js +31 -0
- package/esm/nav/navItem/navItem.js +10 -5
- package/esm/nav/navSection/navSection.js +7 -5
- package/esm/pagination/paginationArrow.js +10 -3
- package/esm/radioGroupRaw/radioGroupRaw.js +2 -1
- package/esm/rangeRaw/rangeRaw.js +0 -1
- package/esm/selectList/selectList.helpers.d.ts +1 -1
- package/esm/selectList/selectList.helpers.js +29 -4
- package/esm/selectList/selectList.js +3 -1
- package/esm/selectList/selectList.reducer.js +1 -2
- package/esm/selectList/selectListItem.js +4 -1
- package/esm/sortControl/sortControl.js +59 -4
- package/esm/table/children/useTableChildren.d.ts +1 -1
- package/esm/table/children/useTableChildren.js +3 -3
- package/esm/table/flexible/columnsList.js +4 -2
- package/esm/table/selectable/useSelectableRows.d.ts +8 -0
- package/esm/table/selectable/useSelectableRows.js +14 -6
- package/esm/table/table.js +1 -7
- package/esm/tabs/tabs.js +60 -58
- package/esm/tabs/tabsTestHelper.js +2 -2
- package/esm/testHelpers/mockAbsoluteAlignment.d.ts +1 -0
- package/esm/testHelpers/mockAbsoluteAlignment.js +10 -0
- package/esm/timePickerRaw/timePickerRaw.js +1 -1
- package/esm/toggleButtonRaw/toggleButtonRaw.js +5 -2
- package/esm/utils/localization/translations/ar.json +3 -1
- package/esm/utils/localization/translations/cs.json +9 -5
- package/esm/utils/localization/translations/da-DK.json +9 -5
- package/esm/utils/localization/translations/de.json +9 -5
- package/esm/utils/localization/translations/en.json +5 -1
- package/esm/utils/localization/translations/es.json +9 -5
- package/esm/utils/localization/translations/fi-FI.json +9 -5
- package/esm/utils/localization/translations/fr-FR.json +9 -5
- package/esm/utils/localization/translations/fr.json +9 -5
- package/esm/utils/localization/translations/hu-HU.json +9 -5
- package/esm/utils/localization/translations/id.json +9 -5
- package/esm/utils/localization/translations/it.json +9 -5
- package/esm/utils/localization/translations/ja.json +9 -5
- package/esm/utils/localization/translations/ko-KR.json +9 -5
- package/esm/utils/localization/translations/ms.json +9 -5
- package/esm/utils/localization/translations/nb-NO.json +9 -5
- package/esm/utils/localization/translations/nl.json +9 -5
- package/esm/utils/localization/translations/pl.json +9 -5
- package/esm/utils/localization/translations/pt-BR.json +9 -5
- package/esm/utils/localization/translations/pt-PT.json +9 -5
- package/esm/utils/localization/translations/ro-RO.json +9 -5
- package/esm/utils/localization/translations/sk-SK.json +9 -5
- package/esm/utils/localization/translations/sv.json +9 -5
- package/esm/utils/localization/translations/th.json +9 -5
- package/esm/utils/localization/translations/tr.json +9 -5
- package/esm/utils/localization/translations/zh-Hans.json +9 -5
- package/esm/utils/localization/translations/zh-TW.json +9 -5
- package/esm/utils/localization/useDirectionalIcon.d.ts +3 -0
- package/esm/utils/localization/useDirectionalIcon.js +5 -0
- package/esm/utils/positioningUtils/alignments.d.ts +2 -2
- package/esm/utils/positioningUtils/alignments.js +2 -2
- package/esm/utils/positioningUtils/calculatePosition.js +4 -6
- package/package.json +123 -122
|
@@ -44,9 +44,11 @@ const getFormatFromDateRange = (minDate, maxDate, ticks) => {
|
|
|
44
44
|
}
|
|
45
45
|
return { unit: "millisecond", format: "HH:mm:ss.l" };
|
|
46
46
|
};
|
|
47
|
-
export const getDefaultOptions = (yAxis, xAxis, isTimedData, ticks, isDark, translate) => {
|
|
47
|
+
export const getDefaultOptions = (yAxis, xAxis, isTimedData, ticks, isDark, translate, isRtl = false) => {
|
|
48
48
|
const time = getFormatFromDateRange(xAxis.minDate, xAxis.maxDate, ticks);
|
|
49
49
|
const textColor = isDark ? "#C0CCD8" : "#4E677E";
|
|
50
|
+
const primaryYPosition = isRtl ? "right" : "left";
|
|
51
|
+
const secondaryYPosition = isRtl ? "left" : "right";
|
|
50
52
|
const scales = {
|
|
51
53
|
x: {
|
|
52
54
|
title: {
|
|
@@ -55,6 +57,7 @@ export const getDefaultOptions = (yAxis, xAxis, isTimedData, ticks, isDark, tran
|
|
|
55
57
|
grid: {
|
|
56
58
|
display: false
|
|
57
59
|
},
|
|
60
|
+
reverse: isRtl,
|
|
58
61
|
type: isTimedData ? "time" : "linear",
|
|
59
62
|
time: isTimedData
|
|
60
63
|
? {
|
|
@@ -101,7 +104,7 @@ export const getDefaultOptions = (yAxis, xAxis, isTimedData, ticks, isDark, tran
|
|
|
101
104
|
border: defaultGridBorderStyle,
|
|
102
105
|
min: yAxis[i].min,
|
|
103
106
|
max: yAxis[i].max,
|
|
104
|
-
position: i === 0 ?
|
|
107
|
+
position: i === 0 ? primaryYPosition : secondaryYPosition
|
|
105
108
|
};
|
|
106
109
|
}
|
|
107
110
|
return {
|
package/esm/chart/lineChart.js
CHANGED
|
@@ -31,6 +31,7 @@ import { getDefaultOptions } from "./lineChart/getDefaultOptions";
|
|
|
31
31
|
import { useHidden } from "./utils/useHidden";
|
|
32
32
|
import { LinePlugin } from "./plugins/linePlugin/linePlugin";
|
|
33
33
|
import { useLanguage } from "../utils/localization/useLanguage";
|
|
34
|
+
import { useIsRTL } from "../utils/localization/useIsRTL";
|
|
34
35
|
import { useChartTicks } from "./lineChart/useChartTicks";
|
|
35
36
|
import { ChartInsight } from "./chartInsight/chartInsight";
|
|
36
37
|
import { getXAxisMeta } from "./utils/getXAxisMeta";
|
|
@@ -43,6 +44,7 @@ export const LineChart = (_a) => {
|
|
|
43
44
|
const { translate } = useLanguage();
|
|
44
45
|
const isDrive = useDrive();
|
|
45
46
|
const isMobile = useMobile();
|
|
47
|
+
const isRtl = useIsRTL();
|
|
46
48
|
const fontSize = useMemo(() => (isDrive ? (isMobile ? 14 : 16) : 12), [isDrive, isMobile]);
|
|
47
49
|
const { dark } = useContext(themeContext);
|
|
48
50
|
useEffect(() => {
|
|
@@ -73,7 +75,7 @@ export const LineChart = (_a) => {
|
|
|
73
75
|
const yAxisMeta = useMemo(() => getYAxisMeta(chartData), [chartData]);
|
|
74
76
|
const xAxisMeta = useMemo(() => getXAxisMeta(chartData, isTimedData), [chartData, isTimedData]);
|
|
75
77
|
const { chartRef, ticks } = useChartTicks();
|
|
76
|
-
const defOptions = useMemo(() => getDefaultOptions(yAxisMeta, xAxisMeta, isTimedData, ticks, dark, translate), [yAxisMeta, xAxisMeta, isTimedData, ticks, dark, translate]);
|
|
78
|
+
const defOptions = useMemo(() => getDefaultOptions(yAxisMeta, xAxisMeta, isTimedData, ticks, dark, translate, isRtl), [yAxisMeta, xAxisMeta, isTimedData, ticks, dark, translate, isRtl]);
|
|
77
79
|
const chartOptions = deepMerge(defOptions, options);
|
|
78
80
|
const chartTooltip = useMemo(() => LinePlugin(tooltipId, tooltip, dark), [tooltip, tooltipId, dark]);
|
|
79
81
|
const chartLegend = useMemo(() => legendPlugin(legendId, legend, isDrive, isHidden, toggleHidden), [isDrive, legend, legendId, isHidden, toggleHidden]);
|
|
@@ -82,5 +84,5 @@ export const LineChart = (_a) => {
|
|
|
82
84
|
const intSummary = useSummary(summary, chartData);
|
|
83
85
|
const isMainHidden = useMemo(() => isHidden(0), [isHidden]);
|
|
84
86
|
const toggleMainDataset = useCallback(() => toggleHidden(0), [toggleHidden]);
|
|
85
|
-
return (_jsxs("div", { className: classNames(["zen-chart", className || ""]), ref: chartRef, children: [insight ? _jsx(ChartInsight, Object.assign({}, insight)) : null, summary !== false ? _jsx(Summary, Object.assign({}, intSummary, { onToggle: toggleMainDataset, isEnabled: isMainHidden })) : null, (isDrive ? undefined : xLabels) || yLabels.length > 0 ? _jsx(ChartAxis, { xLabel: isDrive ? undefined : xLabels, yLabels: yLabels }) : null, _jsx("div", { className: "zen-chart__chart", children: _jsx(Line, Object.assign({ width: 100, height: 100, options: chartOptions, data: chartData, plugins: chartPlugins, "aria-hidden": true }, rest)) }), _jsx("div", { className: "zen-chart__legend", id: legendId }), isDrive && xLabels ? _jsx("div", { className: "zen-chart__x-axis", children: xLabels }) : null, _jsx(AccessibleChart, { type: "line", data: chartData, options: chartOptions })] }));
|
|
87
|
+
return (_jsxs("div", { className: classNames(["zen-chart", className || ""]), ref: chartRef, children: [insight ? _jsx(ChartInsight, Object.assign({}, insight)) : null, summary !== false ? _jsx(Summary, Object.assign({}, intSummary, { onToggle: toggleMainDataset, isEnabled: isMainHidden })) : null, (isDrive ? undefined : xLabels) || yLabels.length > 0 ? (_jsx(ChartAxis, { xLabel: isDrive ? undefined : xLabels, yLabels: yLabels, yAxisPosition: isRtl ? "left" : "right" })) : null, _jsx("div", { className: "zen-chart__chart", children: _jsx(Line, Object.assign({ width: 100, height: 100, options: chartOptions, data: chartData, plugins: chartPlugins, "aria-hidden": true }, rest)) }), _jsx("div", { className: "zen-chart__legend", id: legendId }), isDrive && xLabels ? _jsx("div", { className: "zen-chart__x-axis", children: xLabels }) : null, _jsx(AccessibleChart, { type: "line", data: chartData, options: chartOptions })] }));
|
|
86
88
|
};
|
|
@@ -4,6 +4,8 @@ import { Fragment, useCallback, useEffect, useId, useRef, useState } from "react
|
|
|
4
4
|
import { Checkbox } from "../checkbox/checkbox";
|
|
5
5
|
import { classNames } from "../commonHelpers/classNames/classNames";
|
|
6
6
|
import { IconChevronRight } from "../icons/iconChevronRight";
|
|
7
|
+
import { IconChevronLeft } from "../icons/iconChevronLeft";
|
|
8
|
+
import { useDirectionalIcon } from "../utils/localization/useDirectionalIcon";
|
|
7
9
|
import { useLanguage } from "../utils/localization/useLanguage";
|
|
8
10
|
import { useDriveClassName } from "../utils/theme/useDriveClassName";
|
|
9
11
|
injectString("cs", "Number of selected child groups - {count}", "Po\u010Det vybran\xFDch pod\u0159\xEDzen\xFDch skupin\xA0\u2013 {count}");
|
|
@@ -127,6 +129,7 @@ export const CheckboxListWithAction = ({
|
|
|
127
129
|
translate
|
|
128
130
|
} = useLanguage();
|
|
129
131
|
const driveComponentClass = useDriveClassName("zen-checkbox-list-with-action");
|
|
132
|
+
const ChevronIcon = useDirectionalIcon(IconChevronRight, IconChevronLeft);
|
|
130
133
|
const listId = useId();
|
|
131
134
|
const checkboxId = `${listId}_check_list-item_`;
|
|
132
135
|
const navigationInstructionsId = `${listId}_navigation_instructions`;
|
|
@@ -361,7 +364,7 @@ export const CheckboxListWithAction = ({
|
|
|
361
364
|
})), _jsxs("div", Object.assign({
|
|
362
365
|
className: "zen-checkbox-list-with-action__label-info"
|
|
363
366
|
}, otherArgs, {
|
|
364
|
-
children: [getLabelColorInfo(option.color, option.isWithAction, option.partialChecked, otherArgs), option.isWithAction && _jsx(
|
|
367
|
+
children: [getLabelColorInfo(option.color, option.isWithAction, option.partialChecked, otherArgs), option.isWithAction && _jsx(ChevronIcon, {
|
|
365
368
|
size: "large"
|
|
366
369
|
})]
|
|
367
370
|
}))]
|
|
@@ -4,9 +4,12 @@ import { Button } from "../../../../button/button";
|
|
|
4
4
|
import { IconChevronLeft } from "../../../../icons/iconChevronLeft";
|
|
5
5
|
import { IconChevronRight } from "../../../../icons/iconChevronRight";
|
|
6
6
|
import { useDrive } from "../../../../utils/theme/useDrive";
|
|
7
|
+
import { useDirectionalIcon } from "../../../../utils/localization/useDirectionalIcon";
|
|
7
8
|
import { driveIconSize } from "../../../../svgIcon/svgIconSize";
|
|
8
9
|
export const ArrowNavButton = ({ value, isHidden, disabled, className, arrowButtonHandler, onMouseDown, onMouseUp }) => {
|
|
9
10
|
const isDrive = useDrive();
|
|
10
11
|
const iconSize = isDrive ? driveIconSize("large") : "large";
|
|
11
|
-
|
|
12
|
+
const LeftIcon = useDirectionalIcon(IconChevronLeft, IconChevronRight);
|
|
13
|
+
const RightIcon = useDirectionalIcon(IconChevronRight, IconChevronLeft);
|
|
14
|
+
return (_jsx(Button, { type: "tertiary-black", className: classNames(["zen-arrow-nav-button", isHidden ? "zen-arrow-nav-button--invisible" : "", className !== null && className !== void 0 ? className : ""]), "aria-label": value, disabled: disabled, onClick: arrowButtonHandler, "data-action": value, onMouseDown: onMouseDown, onMouseUp: onMouseUp, children: value === "left" ? (_jsx(LeftIcon, { size: iconSize, className: "zen-arrow-nav-button__icon" })) : (_jsx(RightIcon, { size: iconSize, className: "zen-arrow-nav-button__icon" })) }));
|
|
12
15
|
};
|
|
@@ -9,6 +9,7 @@ import { TAlignment as TAlignmentAbsolute } from "../absolute/absolute";
|
|
|
9
9
|
export type TAlignment = "top" | "top-left" | "top-right" | "left" | "left-top" | "left-bottom" | "right" | "right-top" | "right-bottom" | "bottom" | "bottom-left" | "bottom-right";
|
|
10
10
|
export interface IControlledPopup extends IZenComponentProps {
|
|
11
11
|
triggerRef: RefObject<HTMLElement | null>;
|
|
12
|
+
/** Alignment of the popup relative to its trigger. Defaults to `"bottom-left"` (flips to `"bottom-right"` in RTL). */
|
|
12
13
|
alignment?: TAlignmentAbsolute;
|
|
13
14
|
id?: string;
|
|
14
15
|
className?: string;
|
|
@@ -3,10 +3,12 @@ import { useEffect, useId } from "react";
|
|
|
3
3
|
import { Absolute } from "../absolute/absolute";
|
|
4
4
|
import { classNames } from "../commonHelpers/classNames/classNames";
|
|
5
5
|
import { useClientReady } from "../commonHelpers/hooks/useClientReady";
|
|
6
|
+
import { useRTLAlignment } from "../utils/localization/useRTLAlignment";
|
|
6
7
|
export const ControlledPopup = ({ isOpen, id, paddingX, paddingY, triggerRef, className, children, alignment, inline, onOpenChange, useTrapFocusWithTrigger, shouldHoldScroll, ariaLabel, ariaLabelledby, recalculateOnScroll, closeOnScroll, preventAttributesAutoSet, focusOnOpen, role = "dialog" }) => {
|
|
7
8
|
const autoId = useId();
|
|
8
9
|
const popupId = id || autoId;
|
|
9
10
|
const isClientReady = useClientReady();
|
|
11
|
+
const rtlAlignment = useRTLAlignment(alignment !== null && alignment !== void 0 ? alignment : "bottom-left");
|
|
10
12
|
useEffect(() => {
|
|
11
13
|
if (!triggerRef.current || !isClientReady) {
|
|
12
14
|
return;
|
|
@@ -21,5 +23,5 @@ export const ControlledPopup = ({ isOpen, id, paddingX, paddingY, triggerRef, cl
|
|
|
21
23
|
triggerRef.current.setAttribute("aria-expanded", isOpen ? "true" : "false");
|
|
22
24
|
triggerRef.current.setAttribute("aria-controls", popupId);
|
|
23
25
|
}, [triggerRef, isOpen, popupId, preventAttributesAutoSet, isClientReady]);
|
|
24
|
-
return (_jsx(Absolute, Object.assign({ triggerRef: triggerRef, alignment:
|
|
26
|
+
return (_jsx(Absolute, Object.assign({ triggerRef: triggerRef, alignment: rtlAlignment, id: popupId, isOpen: isOpen, className: classNames(["zen-popup", className ? className : ""]), paddingX: paddingX, paddingY: paddingY, inline: inline, onOpenChange: onOpenChange, useTrapFocusWithTrigger: useTrapFocusWithTrigger, shouldHoldScroll: shouldHoldScroll }, (role !== false && typeof role === "string" ? { role } : {}), (role !== false && ariaLabel ? { ariaLabel } : {}), (role !== false && ariaLabelledby ? { ariaLabelledby } : {}), { recalculateOnScroll: recalculateOnScroll, closeOnScroll: closeOnScroll, focusOnOpen: focusOnOpen, children: children })));
|
|
25
27
|
};
|
|
@@ -13,8 +13,9 @@ export interface IDataGridCell<T extends IEntityWithId> extends IZenComponentPro
|
|
|
13
13
|
defaultValue: string | undefined;
|
|
14
14
|
entity: T;
|
|
15
15
|
width?: number;
|
|
16
|
+
maxWidth?: number;
|
|
16
17
|
colspan?: number;
|
|
17
18
|
onClick?: () => void;
|
|
18
19
|
isActive?: boolean;
|
|
19
20
|
}
|
|
20
|
-
export declare const DataGridCell: <T extends IEntityWithId>({ index, limited, visibleOnHover, isVisible, width, render, renderWrappers, renderPlaceholder, defaultValue, entity, colspan, className, onClick, isActive }: IDataGridCell<T>) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare const DataGridCell: <T extends IEntityWithId>({ index, limited, visibleOnHover, isVisible, width, maxWidth, render, renderWrappers, renderPlaceholder, defaultValue, entity, colspan, className, onClick, isActive }: IDataGridCell<T>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,7 +4,7 @@ import { classNames } from "../../commonHelpers/classNames/classNames";
|
|
|
4
4
|
import { isPromiseLike } from "../columns/basicColumn";
|
|
5
5
|
import { isActiveElement } from "../../list/utils/isActiveElement";
|
|
6
6
|
import { zen } from "../../utils/zen";
|
|
7
|
-
const Cell = ({ index, limited, visibleOnHover, isVisible, width, render, renderWrappers, renderPlaceholder, defaultValue, entity, colspan, className, onClick, isActive }) => {
|
|
7
|
+
const Cell = ({ index, limited, visibleOnHover, isVisible, width, maxWidth, render, renderWrappers, renderPlaceholder, defaultValue, entity, colspan, className, onClick, isActive }) => {
|
|
8
8
|
const [content, setContent] = useState("");
|
|
9
9
|
const placeholderRenderer = useCallback(() => {
|
|
10
10
|
const renderFn = renderPlaceholder || (() => "...");
|
|
@@ -69,6 +69,6 @@ const Cell = ({ index, limited, visibleOnHover, isVisible, width, render, render
|
|
|
69
69
|
visibleOnHover ? "zen-data-grid__row-cell--visible-on-hover" : "",
|
|
70
70
|
onClick ? "zen-data-grid__row-cell--clickable" : "",
|
|
71
71
|
limited ? "zen-ellipsis" : ""
|
|
72
|
-
]), style: { minWidth: width || "auto", maxWidth: width || "auto" }, role: "gridcell", children: content }));
|
|
72
|
+
]), style: { minWidth: width || "auto", maxWidth: maxWidth ? `${Math.max(width !== null && width !== void 0 ? width : 0, maxWidth)}px` : width || "auto" }, role: "gridcell", children: content }));
|
|
73
73
|
};
|
|
74
74
|
export const DataGridCell = memo(Cell);
|
package/esm/dataGrid/dataGrid.js
CHANGED
|
@@ -49,7 +49,7 @@ const getHeaderPropsFromWrappers = wrappers => wrappers.reduce((result, wrapper)
|
|
|
49
49
|
const props = (_a = wrapper.getHeaderProps) === null || _a === void 0 ? void 0 : _a.call(wrapper);
|
|
50
50
|
return props ? Object.assign(Object.assign({}, result), props) : result;
|
|
51
51
|
}, {});
|
|
52
|
-
const getColumnWidth = defaultWidth => Math.floor(Math.max(defaultWidth, MIN_CELL_WIDTH));
|
|
52
|
+
const getColumnWidth = (defaultWidth, minWidth) => Math.floor(Math.max(defaultWidth, minWidth !== null && minWidth !== void 0 ? minWidth : MIN_CELL_WIDTH));
|
|
53
53
|
export const EmptyList = ({
|
|
54
54
|
children
|
|
55
55
|
}) => _jsx("div", {
|
|
@@ -144,12 +144,13 @@ const DataGridInner = ({
|
|
|
144
144
|
setVisibleRows(visible);
|
|
145
145
|
}, [entities]);
|
|
146
146
|
const listOfDefaultWidthColumns = useMemo(() => columnsList.map(column => column.meta.defaultWidth), [columnsList]);
|
|
147
|
+
const listOfMinWidthColumns = useMemo(() => columnsList.map(column => column.meta.minWidth), [columnsList]);
|
|
147
148
|
const {
|
|
148
149
|
result: observerResult
|
|
149
150
|
} = useResizeObserver({
|
|
150
151
|
target: gridRef.current
|
|
151
152
|
});
|
|
152
|
-
const allocatedSpace = listOfDefaultWidthColumns.reduce((acc, width) => acc + (width === undefined ? 0 : getColumnWidth(width)), 0);
|
|
153
|
+
const allocatedSpace = listOfDefaultWidthColumns.reduce((acc, width, index) => acc + (width === undefined ? 0 : getColumnWidth(width, listOfMinWidthColumns[index])), 0);
|
|
153
154
|
const unallocatedSpace = observerResult && observerResult.contentRect.width - allocatedSpace || 0;
|
|
154
155
|
const flexibleColumnsQty = listOfDefaultWidthColumns.filter(width => width === undefined).length;
|
|
155
156
|
const flexibleColumnWidth = getColumnWidth(unallocatedSpace / flexibleColumnsQty);
|
|
@@ -172,18 +173,19 @@ const DataGridInner = ({
|
|
|
172
173
|
}, [updateScroll, scheduleLazyRender]);
|
|
173
174
|
const getCellParams = useCallback(columnIndex => {
|
|
174
175
|
const defaultWidth = listOfDefaultWidthColumns[columnIndex];
|
|
176
|
+
const minWidth = listOfMinWidthColumns[columnIndex];
|
|
175
177
|
const limited = !!defaultWidth && defaultWidth > 0;
|
|
176
178
|
const isFirst = columnIndex === 0;
|
|
177
179
|
const isLast = columnIndex === listOfDefaultWidthColumns.length - 1;
|
|
178
180
|
// If the column is the last one or doesn't have a default width, it should be limited to the remaining space
|
|
179
|
-
const width = getColumnWidth(defaultWidth || flexibleColumnWidth);
|
|
181
|
+
const width = getColumnWidth(defaultWidth || flexibleColumnWidth, minWidth);
|
|
180
182
|
return {
|
|
181
183
|
limited,
|
|
182
184
|
isFirst,
|
|
183
185
|
isLast,
|
|
184
186
|
width
|
|
185
187
|
};
|
|
186
|
-
}, [listOfDefaultWidthColumns, flexibleColumnWidth]);
|
|
188
|
+
}, [listOfDefaultWidthColumns, listOfMinWidthColumns, flexibleColumnWidth]);
|
|
187
189
|
const renderHeaderCell = useCallback((column, columnIndex) => {
|
|
188
190
|
var _a;
|
|
189
191
|
const {
|
|
@@ -222,6 +224,7 @@ const DataGridInner = ({
|
|
|
222
224
|
expanded: expandedRows && expandedRows.indexOf(entity.id) > -1,
|
|
223
225
|
onExpandedChange: entity.children && entity.children.length > 0 ? isExpanded => onExpandedChange && onExpandedChange(entity.id, isExpanded) : undefined,
|
|
224
226
|
isActive: active === entity.id,
|
|
227
|
+
active: active,
|
|
225
228
|
onClick: onClick,
|
|
226
229
|
isTreeGrid: isTreeGrid,
|
|
227
230
|
ariaPosinset: entityIndex + 1,
|
|
@@ -2,6 +2,8 @@ import { ReactNode } from "react";
|
|
|
2
2
|
import { ColumnSortDirection } from "../table/table";
|
|
3
3
|
export interface IListColumnMeta<T, N = T> {
|
|
4
4
|
readonly defaultWidth?: number;
|
|
5
|
+
readonly minWidth?: number;
|
|
6
|
+
readonly maxWidth?: number;
|
|
5
7
|
readonly defaultValue?: string;
|
|
6
8
|
readonly lazyLoad?: boolean;
|
|
7
9
|
readonly visibleOnHover?: boolean;
|
|
@@ -16,7 +16,8 @@ export interface IDataGridRow<T extends IRowEntity<N>, N extends IEntityWithId>
|
|
|
16
16
|
ariaPosinset: number;
|
|
17
17
|
ariaSetsize: number;
|
|
18
18
|
isActive?: boolean;
|
|
19
|
+
active?: string;
|
|
19
20
|
onClick?: (id: string) => void;
|
|
20
21
|
}
|
|
21
22
|
export declare const MIN_CELL_WIDTH = 100;
|
|
22
|
-
export declare const DataGridRow: <T extends IRowEntity<N>, N extends IEntityWithId = T>({ id, entity, columns, visibleRows, flexibleColumnWidth, isLastRow, className, expanded, onExpandedChange, isTreeGrid, ariaPosinset, ariaSetsize, onClick, isActive }: IDataGridRow<T, N>) => import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export declare const DataGridRow: <T extends IRowEntity<N>, N extends IEntityWithId = T>({ id, entity, columns, visibleRows, flexibleColumnWidth, isLastRow, className, expanded, onExpandedChange, isTreeGrid, ariaPosinset, ariaSetsize, onClick, isActive, active }: IDataGridRow<T, N>) => import("react/jsx-runtime").JSX.Element;
|
package/esm/dataGrid/row/row.js
CHANGED
|
@@ -3,10 +3,12 @@ import { memo, useCallback, useId, useMemo } from "react";
|
|
|
3
3
|
import { classNames } from "../../commonHelpers/classNames/classNames";
|
|
4
4
|
import { DataGridCell } from "../cell/cell";
|
|
5
5
|
export const MIN_CELL_WIDTH = 100;
|
|
6
|
-
const getColumnWidth = (defaultWidth) => Math.floor(Math.max(defaultWidth, MIN_CELL_WIDTH));
|
|
7
|
-
const Row = ({ id, entity, columns, visibleRows, flexibleColumnWidth, isLastRow, className, expanded, onExpandedChange, isTreeGrid, ariaPosinset, ariaSetsize, onClick, isActive }) => {
|
|
6
|
+
const getColumnWidth = (defaultWidth, minWidth) => Math.floor(Math.max(defaultWidth, minWidth !== null && minWidth !== void 0 ? minWidth : MIN_CELL_WIDTH));
|
|
7
|
+
const Row = ({ id, entity, columns, visibleRows, flexibleColumnWidth, isLastRow, className, expanded, onExpandedChange, isTreeGrid, ariaPosinset, ariaSetsize, onClick, isActive, active }) => {
|
|
8
8
|
const isVisible = visibleRows.has(entity.id);
|
|
9
9
|
const listOfDefaultWidthColumns = useMemo(() => columns.map(column => column.meta.defaultWidth), [columns]);
|
|
10
|
+
const listOfMinWidthColumns = useMemo(() => columns.map(column => column.meta.minWidth), [columns]);
|
|
11
|
+
const listOfMaxWidthColumns = useMemo(() => columns.map(column => column.meta.maxWidth), [columns]);
|
|
10
12
|
const getColWidth = useCallback((columnIndex, colspan) => {
|
|
11
13
|
const colsp = colspan || 1;
|
|
12
14
|
let columnWidth = 0;
|
|
@@ -15,26 +17,28 @@ const Row = ({ id, entity, columns, visibleRows, flexibleColumnWidth, isLastRow,
|
|
|
15
17
|
continue;
|
|
16
18
|
}
|
|
17
19
|
const defaultWidth = listOfDefaultWidthColumns[columnIndex + i];
|
|
20
|
+
const minWidth = listOfMinWidthColumns[columnIndex + i];
|
|
18
21
|
// If the column is the last one or doesn't have a default width, it should be limited to the remaining space
|
|
19
|
-
const width = getColumnWidth(defaultWidth || flexibleColumnWidth);
|
|
22
|
+
const width = getColumnWidth(defaultWidth || flexibleColumnWidth, minWidth);
|
|
20
23
|
columnWidth += width;
|
|
21
24
|
}
|
|
22
25
|
return columnWidth;
|
|
23
|
-
}, [flexibleColumnWidth, listOfDefaultWidthColumns]);
|
|
26
|
+
}, [flexibleColumnWidth, listOfDefaultWidthColumns, listOfMinWidthColumns]);
|
|
24
27
|
const getCellParams = useCallback((columnIndex, colspan) => {
|
|
25
28
|
const width = getColWidth(columnIndex, colspan);
|
|
26
29
|
const defaultWidth = listOfDefaultWidthColumns[columnIndex];
|
|
30
|
+
const maxWidth = listOfMaxWidthColumns[columnIndex];
|
|
27
31
|
const limited = !!defaultWidth && defaultWidth > 0;
|
|
28
32
|
const isFirst = columnIndex === 0;
|
|
29
33
|
const isLast = columnIndex === listOfDefaultWidthColumns.length - 1;
|
|
30
|
-
return { limited, isFirst, isLast, width };
|
|
31
|
-
}, [getColWidth, listOfDefaultWidthColumns]);
|
|
34
|
+
return { limited, isFirst, isLast, width, maxWidth };
|
|
35
|
+
}, [getColWidth, listOfDefaultWidthColumns, listOfMaxWidthColumns]);
|
|
32
36
|
const mainRowId = useId();
|
|
33
37
|
const renderCells = useCallback((rowEntity, isNested) => columns.reduce((acc, column, index) => {
|
|
34
38
|
const colspanFn = column.colspan;
|
|
35
39
|
let colspan = colspanFn ? (typeof colspanFn === "function" ? colspanFn(rowEntity) : colspanFn) : undefined;
|
|
36
40
|
colspan = colspan && colspan > 1 ? colspan : undefined;
|
|
37
|
-
const { limited, width } = getCellParams(index, colspan);
|
|
41
|
+
const { limited, width, maxWidth } = getCellParams(index, colspan);
|
|
38
42
|
if (acc.colspan > 0) {
|
|
39
43
|
acc.colspan--;
|
|
40
44
|
return acc;
|
|
@@ -49,9 +53,9 @@ const Row = ({ id, entity, columns, visibleRows, flexibleColumnWidth, isLastRow,
|
|
|
49
53
|
? column.columnComponent.renderNested.bind(column.columnComponent)
|
|
50
54
|
: column.columnComponent.render.bind(column.columnComponent))
|
|
51
55
|
: column.columnComponent.render.bind(column.columnComponent);
|
|
52
|
-
acc.cells.push(_jsx(DataGridCell, { render: e => renderFn(e, isNested), renderPlaceholder: column.meta.renderPlaceholder, renderWrappers: renderWrappers, defaultValue: column.meta.defaultValue, entity: rowEntity, index: index, limited: limited, visibleOnHover: column.meta.visibleOnHover, width: column.meta.visibleOnHover ? 0 : width, isVisible: isVisible, colspan: colspan, onClick: !isNested && onExpandedChange ? () => onExpandedChange(!expanded) : onClick ? () => onClick(rowEntity.id) : undefined, isActive: isActive, className: isNested ? "zen-data-grid__row-cell--nested" : "" }, `${rowEntity.id}_${column.name}`));
|
|
56
|
+
acc.cells.push(_jsx(DataGridCell, { render: e => renderFn(e, isNested), renderPlaceholder: column.meta.renderPlaceholder, renderWrappers: renderWrappers, defaultValue: column.meta.defaultValue, entity: rowEntity, index: index, limited: limited, visibleOnHover: column.meta.visibleOnHover, width: column.meta.visibleOnHover ? 0 : width, maxWidth: column.meta.visibleOnHover ? undefined : maxWidth, isVisible: isVisible, colspan: colspan, onClick: !isNested && onExpandedChange ? () => onExpandedChange(!expanded) : onClick ? () => onClick(rowEntity.id) : undefined, isActive: isNested ? active === rowEntity.id : isActive || active === rowEntity.id, className: isNested ? "zen-data-grid__row-cell--nested" : "" }, `${rowEntity.id}_${column.name}`));
|
|
53
57
|
return acc;
|
|
54
|
-
}, { cells: [], colspan: 0 }).cells, [columns, expanded, getCellParams, isVisible, onExpandedChange, isActive, onClick]);
|
|
58
|
+
}, { cells: [], colspan: 0 }).cells, [columns, expanded, getCellParams, isVisible, onExpandedChange, isActive, active, onClick]);
|
|
55
59
|
const cells = useMemo(() => renderCells(entity, false), [entity, renderCells]);
|
|
56
60
|
const nestedCells = useMemo(() => (expanded && entity.children ? entity.children : []).map(nestedEntity => renderCells(nestedEntity, true)), [entity.children, expanded, renderCells]);
|
|
57
61
|
return (_jsxs(_Fragment, { children: [_jsx("tr", { "data-row-id": id, id: mainRowId, role: "row", "aria-level": isTreeGrid ? 1 : undefined, "aria-posinset": isTreeGrid ? ariaPosinset : undefined, "aria-setsize": isTreeGrid ? ariaSetsize : undefined, "aria-expanded": isTreeGrid ? expanded : undefined, className: classNames(["zen-data-grid__row", className || "", isLastRow ? "zen-data-grid__row--last" : ""]), children: cells }, mainRowId), nestedCells.map((nestedRow, index) => (_jsx("tr", { id: `${mainRowId}_child_${index}`, role: "row", "aria-level": 2, "aria-posinset": index + 1, "aria-setsize": nestedCells.length, className: "zen-data-grid__row zen-data-grid__row--nested", children: nestedRow }, `${mainRowId}_child_${index}`)))] }));
|
|
@@ -18,6 +18,7 @@ const SubColumnsList = ({ title, columns, settings, disabledColumns, onChange, s
|
|
|
18
18
|
showCheckbox: true,
|
|
19
19
|
children: c.title
|
|
20
20
|
})), [columns, disabledColumns, sortColumnsInt]);
|
|
21
|
+
const allDisabled = useMemo(() => items.every(item => item.disabled), [items]);
|
|
21
22
|
const state = columns.reduce((res, c) => {
|
|
22
23
|
res.set(c.id, settings.get(c.name) !== false ? CheckboxState.On : CheckboxState.Off);
|
|
23
24
|
return res;
|
|
@@ -30,7 +31,7 @@ const SubColumnsList = ({ title, columns, settings, disabledColumns, onChange, s
|
|
|
30
31
|
});
|
|
31
32
|
onChange && onChange(newSettings);
|
|
32
33
|
}, [columns, settings, onChange]);
|
|
33
|
-
const list = useMemo(() => _jsx(SelectList, { id: id, items: items, value: state, title: title || "", multiselect: true, showCheckbox: true, onChange: onChangeItem }), [id, items, state, title, onChangeItem]);
|
|
34
|
+
const list = useMemo(() => (_jsx(SelectList, { id: id, items: items, value: state, title: title || "", multiselect: true, showCheckbox: true, onChange: onChangeItem, disabled: allDisabled })), [id, items, state, title, onChangeItem, allDisabled]);
|
|
34
35
|
if (!title) {
|
|
35
36
|
return list;
|
|
36
37
|
}
|
|
@@ -7,6 +7,10 @@ import { DeviceType } from "../../../../commonHelpers/hooks/deviceType";
|
|
|
7
7
|
type TBulkAction = IBulkActionLink | IBulkActionButton;
|
|
8
8
|
export interface IBulkActionsProps extends IZenComponentProps {
|
|
9
9
|
selected: number;
|
|
10
|
+
/**
|
|
11
|
+
* When `true`, displays "All selected" instead of a count, and enables action buttons
|
|
12
|
+
* even when `selected` is 0 (i.e., cross-page "select all" is active).
|
|
13
|
+
*/
|
|
10
14
|
allSelected?: boolean;
|
|
11
15
|
onClearSelection: () => void;
|
|
12
16
|
onSelectAll?: () => void;
|
|
@@ -6,6 +6,8 @@ import { useLanguage } from "../utils/localization/useLanguage";
|
|
|
6
6
|
import { userFormatContext } from "../utils/userFormat/userFormatContext";
|
|
7
7
|
import { deformatDate, formatDate } from "../utils/formatDate";
|
|
8
8
|
import { IconChevronRight } from "../icons/iconChevronRight";
|
|
9
|
+
import { IconChevronLeft } from "../icons/iconChevronLeft";
|
|
10
|
+
import { useDirectionalIcon } from "../utils/localization/useDirectionalIcon";
|
|
9
11
|
import { parseLabel } from "../dateRange/dateRange";
|
|
10
12
|
import { normalizeDates } from "../filtersBar/components/filtersBarPeriodPicker/normalizeDates";
|
|
11
13
|
import { classNames } from "../commonHelpers/classNames/classNames";
|
|
@@ -60,6 +62,7 @@ export const DateRangeInner = ({
|
|
|
60
62
|
translate
|
|
61
63
|
} = useLanguage();
|
|
62
64
|
const isMobileView = !!setShowMobileCalendar;
|
|
65
|
+
const ChevronIcon = useDirectionalIcon(IconChevronRight, IconChevronLeft);
|
|
63
66
|
const {
|
|
64
67
|
dateFormat,
|
|
65
68
|
weekStartsOnSunday,
|
|
@@ -98,7 +101,7 @@ export const DateRangeInner = ({
|
|
|
98
101
|
}) : null]
|
|
99
102
|
}), _jsx("div", {
|
|
100
103
|
className: "zen-date-range-inner__mobile-custom-icon-wrapper",
|
|
101
|
-
children: _jsx(
|
|
104
|
+
children: _jsx(ChevronIcon, {
|
|
102
105
|
size: "large"
|
|
103
106
|
})
|
|
104
107
|
})]
|
|
@@ -119,7 +122,7 @@ export const DateRangeInner = ({
|
|
|
119
122
|
key: option.id
|
|
120
123
|
}));
|
|
121
124
|
return optionsToPass;
|
|
122
|
-
}, [calendarLabel, isMobileView, onOptionSelect, options, selection, setShowMobileCalendar]);
|
|
125
|
+
}, [ChevronIcon, calendarLabel, isMobileView, onOptionSelect, options, selection, setShowMobileCalendar]);
|
|
123
126
|
const calendarId = useMemo(() => `${id}-calendar`, [id]);
|
|
124
127
|
const optionSelectHandler = useCallback(e => {
|
|
125
128
|
let selectedValue = e.target.value;
|
|
@@ -21,6 +21,7 @@ import { areMapsEqual } from "./utils/areMapsEqual";
|
|
|
21
21
|
import { IconChevronLeftSmall } from "../icons/iconChevronLeftSmall";
|
|
22
22
|
import { useDrive } from "../utils/theme/useDrive";
|
|
23
23
|
import { IconChevronRightSmall } from "../icons/iconChevronRightSmall";
|
|
24
|
+
import { useDirectionalIcon } from "../utils/localization/useDirectionalIcon";
|
|
24
25
|
import { ReviewTextControl } from "../formGroup/components/reviewTextControl";
|
|
25
26
|
import { Chip } from "../chip/chip";
|
|
26
27
|
import { useChipStatus } from "../chip/chipStatusProvider";
|
|
@@ -290,6 +291,8 @@ export const DateRangeRaw = props => {
|
|
|
290
291
|
} = useLanguage();
|
|
291
292
|
const isMobile = useMobile();
|
|
292
293
|
const isDrive = useDrive();
|
|
294
|
+
const PrevStepperIcon = useDirectionalIcon(IconChevronLeftSmall, IconChevronRightSmall);
|
|
295
|
+
const NextStepperIcon = useDirectionalIcon(IconChevronRightSmall, IconChevronLeftSmall);
|
|
293
296
|
const chipStatus = useChipStatus();
|
|
294
297
|
const driveWrapperTriggerClassName = useDriveClassName("zen-date-range-wrapper");
|
|
295
298
|
const mobileWrapperTriggerClassName = useMobileClassName("zen-date-range-wrapper");
|
|
@@ -696,7 +699,7 @@ export const DateRangeRaw = props => {
|
|
|
696
699
|
className: classNames(["zen-date-range__stepper", "zen-date-range__stepper--left"]),
|
|
697
700
|
title: translate("Previous"),
|
|
698
701
|
"aria-label": translate("Previous date period"),
|
|
699
|
-
children: _jsx(
|
|
702
|
+
children: _jsx(PrevStepperIcon, {
|
|
700
703
|
size: isDrive || isMobile ? "huge" : "large"
|
|
701
704
|
})
|
|
702
705
|
}), popupTriggerComponent, _jsx("button", {
|
|
@@ -706,7 +709,7 @@ export const DateRangeRaw = props => {
|
|
|
706
709
|
className: classNames(["zen-date-range__stepper", "zen-date-range__stepper--right"]),
|
|
707
710
|
title: translate("Next"),
|
|
708
711
|
"aria-label": translate("Next date period"),
|
|
709
|
-
children: _jsx(
|
|
712
|
+
children: _jsx(NextStepperIcon, {
|
|
710
713
|
size: isDrive || isMobile ? "huge" : "large"
|
|
711
714
|
})
|
|
712
715
|
})]
|
|
@@ -7,5 +7,5 @@ export const parseLabel = (option, dateFormat, translate, toLocalFn) => {
|
|
|
7
7
|
localeFrom.getFullYear() === localeTo.getFullYear()) {
|
|
8
8
|
return formatDate(localeFrom, dateFormat, translate);
|
|
9
9
|
}
|
|
10
|
-
return `${formatDate(localeFrom, dateFormat, translate)}
|
|
10
|
+
return `${formatDate(localeFrom, dateFormat, translate)} – ${formatDate(localeTo, dateFormat, translate)}`;
|
|
11
11
|
};
|
|
@@ -543,12 +543,18 @@ export const DropdownRaw = props => {
|
|
|
543
543
|
}, [setChecked, setSearch]);
|
|
544
544
|
const debouncedGetData = useDebounce((signal, searchValue, isChecked) => getData ? (isCheckboxMode ? getData(signal, searchValue, isChecked) : getData(signal, searchValue)).then(dta => handleData(dta, searchValue)).catch(handleError) : customGetData(searchValue).then(dta => handleData(dta, searchValue)).catch(handleError), 200);
|
|
545
545
|
const controlData = useCallback((signal, searchValue, isChecked) => {
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
546
|
+
if (isQueryMode) {
|
|
547
|
+
handleQueryMode(searchValue, isChecked);
|
|
548
|
+
} else if (!getData && dataItems && !searchValue) {
|
|
549
|
+
handleData(dataItems, "");
|
|
550
|
+
} else {
|
|
551
|
+
dispatchState({
|
|
552
|
+
type: StateActionType.ShowWaiting,
|
|
553
|
+
payload: undefined
|
|
554
|
+
});
|
|
555
|
+
debouncedGetData(signal, searchValue, isChecked);
|
|
556
|
+
}
|
|
557
|
+
}, [debouncedGetData, handleData, handleQueryMode, isQueryMode, getData, dataItems]);
|
|
552
558
|
useEffect(() => {
|
|
553
559
|
var _a;
|
|
554
560
|
const timeoutId = (_a = zen.setTimeout) === null || _a === void 0 ? void 0 : _a.call(zen, () => {
|