@geotab/zenith 3.14.1 → 3.15.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -2
- package/dist/advancedGroupsFilter/advancedGroupsFilterFormSection.js +17 -7
- package/dist/alert/banner.d.ts +2 -3
- package/dist/alert/hooks/useAlertState.d.ts +0 -1
- package/dist/banner/bannerMultipLine.d.ts +0 -1
- package/dist/banner/bannerSingleLine.d.ts +0 -1
- package/dist/banner/utils/isSummaryErrorElement.d.ts +1 -2
- package/dist/calendar/dateUtils.js +2 -2
- package/dist/card/card.js +17 -7
- package/dist/card/components/content.d.ts +0 -1
- package/dist/cardContainer/helpers/getSizeClass.js +1 -2
- package/dist/chart/accessibleChart/accessibleChart.js +1 -1
- package/dist/chart/accessibleChart/accessibleChartNarrative.d.ts +1 -1
- package/dist/chart/accessibleChart/accessibleChartNarrative.js +11 -5
- package/dist/chart/accessibleChart/generatePieNarrative.d.ts +7 -0
- package/dist/chart/accessibleChart/generatePieNarrative.js +179 -0
- package/dist/chart/accessibleChart/interfaces.d.ts +1 -0
- package/dist/chart/barChart/getDefaultOptions.js +5 -6
- package/dist/chart/barChart.js +152 -50
- package/dist/chart/interfaces.d.ts +0 -1
- package/dist/chart/lineChart/getDefaultOptions.js +5 -6
- package/dist/chart/lineChart/useChartTicks.d.ts +0 -1
- package/dist/chart/lineChart/useSummary.d.ts +7 -8
- package/dist/chart/lineChart.js +167 -59
- package/dist/chart/pieChart.js +174 -76
- package/dist/chart/plugins/linePlugin/getInterpolatedValue.js +10 -2
- package/dist/chart/utils/convertDates.d.ts +1 -1
- package/dist/chart/utils/getFormattedLabel.js +1 -2
- package/dist/chart/utils/getNiceAxisRange.d.ts +21 -0
- package/dist/chart/utils/getNiceAxisRange.js +76 -0
- package/dist/chart/utils/getRange.js +2 -2
- package/dist/chart/utils/getYAxisMeta.d.ts +2 -5
- package/dist/chart/utils/getYAxisMeta.js +17 -2
- package/dist/chart/utils/getYAxisTickCount.d.ts +15 -0
- package/dist/chart/utils/getYAxisTickCount.js +19 -0
- package/dist/chart/utils/resampleArrayEvenly.js +1 -2
- package/dist/checkbox/checkbox.js +17 -7
- package/dist/checkboxListWithAction/checkboxListWithAction.d.ts +0 -1
- package/dist/chip/chip.d.ts +0 -1
- package/dist/chip/utils/useChip.d.ts +0 -1
- package/dist/commonHelpers/HOC/reducerLogger/reducerLogger.d.ts +1 -1
- package/dist/commonHelpers/arrowNavigation/components/arrowButton/arrowButton.d.ts +0 -1
- package/dist/commonHelpers/arrowNavigation/hooks/useHoldOnScroll.d.ts +0 -1
- package/dist/commonHelpers/generateId.js +1 -2
- package/dist/commonHelpers/hooks/breakpoints.d.ts +4 -0
- package/dist/commonHelpers/hooks/breakpoints.js +7 -0
- package/dist/commonHelpers/hooks/fetch.reducer.d.ts +1 -1
- package/dist/commonHelpers/hooks/fetch.reducer.js +1 -2
- package/dist/commonHelpers/hooks/useDebouncedMemo.d.ts +0 -1
- package/dist/commonHelpers/hooks/useDebouncedMemo.js +1 -2
- package/dist/commonHelpers/hooks/useDeviceType.js +2 -2
- package/dist/commonHelpers/hooks/useEscape.d.ts +1 -1
- package/dist/commonHelpers/hooks/useGridSize.d.ts +0 -1
- package/dist/commonHelpers/hooks/useMobileOrTablet.d.ts +1 -0
- package/dist/commonHelpers/hooks/useMobileOrTablet.js +21 -0
- package/dist/commonHelpers/hooks/usePillSize.d.ts +0 -1
- package/dist/{gridLayout → commonHelpers}/hooks/useTablet.js +8 -11
- package/dist/commonHelpers/utils.js +3 -3
- package/dist/commonStyles/colors/colors.less +1 -0
- package/dist/dataFeed/dataFeed.d.ts +1 -1
- package/dist/dataFeed/dataFeed.js +2 -2
- package/dist/dataFeed/dataFeedCell/dataFeedCell.d.ts +3 -1
- package/dist/dataFeed/dataFeedColumnsItems.d.ts +2 -2
- package/dist/dataGrid/cell/cell.d.ts +3 -1
- package/dist/dataGrid/columns/actionsColumn/actionsButton.js +1 -2
- package/dist/dataGrid/columns/actionsColumn/actionsColumn.d.ts +3 -3
- package/dist/dataGrid/dataGrid.d.ts +13 -1
- package/dist/dataGrid/dataGrid.js +48 -3
- package/dist/dataGrid/emptySearchList/emptySearchList.d.ts +0 -1
- package/dist/dataGrid/row/row.d.ts +3 -1
- package/dist/dataGrid/withActions/withActions.d.ts +1 -1
- package/dist/dataGrid/withFlexibleColumns/components/columnSettingsList.js +1 -2
- package/dist/dataGrid/withFlexibleColumns/withFlexibleColumns.d.ts +1 -1
- package/dist/dataGrid/withLoading/withLoading.d.ts +1 -1
- package/dist/dataGrid/withSelectableRows/withLimitedSelectableRows.d.ts +1 -1
- package/dist/dataGrid/withSelectableRows/withSelectableRows.d.ts +1 -1
- package/dist/dataGrid/withSortableColumns/withSortableColumns.d.ts +1 -1
- package/dist/dateInputInner/dateInputInnerReducer.js +2 -2
- package/dist/dateRangeRaw/utils/areMapsEqual.js +1 -2
- package/dist/dialog/dialog.d.ts +0 -1
- package/dist/dropdown/dropdown.js +1 -1
- package/dist/dropdown/useDropdownState.d.ts +0 -1
- package/dist/dropdownRaw/dropdownHelper.js +2 -2
- package/dist/dropdownRaw/dropdownList.d.ts +3 -2
- package/dist/dropdownRaw/dropdownList.js +31 -49
- package/dist/dropdownRaw/dropdownRaw.js +34 -13
- package/dist/dropdownRaw/stateReducer/stateReducer.d.ts +4 -1
- package/dist/dropdownRaw/stateReducer/stateReducer.js +33 -23
- package/dist/dropdownRaw/stateReducer/stateReducerHelper.d.ts +1 -2
- package/dist/dropdownRaw/stateReducer/stateReducerHelper.js +8 -13
- package/dist/dropdownRaw/types.d.ts +20 -0
- package/dist/feedbackContainer/feedbackContainer.js +17 -7
- package/dist/feedbackContainer/hooks/useFeedbackAlert.d.ts +0 -1
- package/dist/feedbackContainer/hooks/useFeedbackToast.d.ts +0 -1
- package/dist/filters/components/filtersDropdown.js +2 -2
- package/dist/filters/components/filtersItem.d.ts +2 -2
- package/dist/filters/components/filtersSearchList.d.ts +0 -1
- package/dist/filters/components/filtersSelect.d.ts +0 -1
- package/dist/filters/components/filtersSelectCompact.d.ts +0 -1
- package/dist/filters/components/filtersSelectListItem.d.ts +0 -1
- package/dist/filters/components/filtersSelectUnfoldingPill.d.ts +0 -1
- package/dist/filters/components/filtersSidePanelItem.js +17 -7
- package/dist/filters/filtersHelper.d.ts +1 -1
- package/dist/filters/filtersHelper.js +5 -5
- package/dist/filters/filtersHooks.d.ts +0 -1
- package/dist/filtersBar/components/filtersBarDropdownWithCheckbox/filtersBarDropdownWithCheckbox.js +1 -1
- package/dist/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +2 -2
- package/dist/filtersBar/filtersBar.js +2 -2
- package/dist/filtersBar/filtersBarActions/filtersBarActions.d.ts +0 -1
- package/dist/filtersBar/filtersBarInterfaces.d.ts +0 -1
- package/dist/filtersBar/filtersBarReducer.js +2 -2
- package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelDropdownWithCheckbox/filtersBarSidePanelDropdownWithCheckbox.d.ts +4 -10
- package/dist/filtersBar/filtersBarSidePanel/sidePanelReducer.js +2 -2
- package/dist/filtersBar/utils/getNumberOfChangedFilters.js +1 -2
- package/dist/footerButtons/footerButtons.js +17 -7
- package/dist/formField/components/formFieldAdditionalInfo.d.ts +0 -1
- package/dist/formField/components/formFieldCounter.d.ts +0 -1
- package/dist/formField/components/formFieldLoading.d.ts +0 -1
- package/dist/formField/components/formFieldSkeleton.d.ts +0 -1
- package/dist/formField/components/formFieldWithLabel.d.ts +0 -1
- package/dist/formField/components/formFieldWithoutLabel.d.ts +0 -1
- package/dist/formField/formField.d.ts +1 -1
- package/dist/formField/hooks/useBanner.d.ts +0 -1
- package/dist/formField/hooks/useDisabled.d.ts +1 -1
- package/dist/formGroup/components/customRow/customRow.d.ts +0 -1
- package/dist/formGroup/formGroup.js +17 -7
- package/dist/formGroup/hooks/listHooks/useStateToElements.d.ts +0 -1
- package/dist/formGroup/hooks/listHooks/useStateToElements.js +1 -1
- package/dist/formGroup/utils/formGroupProvider.d.ts +0 -1
- package/dist/formGroup/utils/isFormLabel.d.ts +1 -1
- package/dist/formGroupItem/formGroupItem.d.ts +0 -1
- package/dist/formLayout/components/layoutColumn/layoutColum.d.ts +0 -1
- package/dist/formLayout/hooks/useFormButtons.d.ts +1 -1
- package/dist/formLayout/types.d.ts +0 -1
- package/dist/formLayout/utils/attachHeadings.d.ts +1 -1
- package/dist/formLayout/utils/attachSeparators.d.ts +0 -1
- package/dist/formLayout/utils/getChildrenWithCustomColumns.d.ts +1 -2
- package/dist/formLayout/utils/getChildrenWithCustomColumns.js +2 -2
- package/dist/formLayout/utils/getFieldLabel.js +5 -5
- package/dist/formSection/components/actions.d.ts +0 -1
- package/dist/formSection/components/additional.d.ts +0 -1
- package/dist/formSection/utils/isFormSection.d.ts +2 -4
- package/dist/formStepper/components/formStepRaw.d.ts +0 -1
- package/dist/formStepper/formStepper.d.ts +0 -1
- package/dist/formStepper/formStepper.js +5 -5
- package/dist/formStepperButtons/formStepperButtons.js +3 -3
- package/dist/gridLayout/hooks/useStretch.js +1 -1
- package/dist/gridLayout/utils/convertStateToClasses.js +1 -2
- package/dist/gridLayout/utils/gridLayoutProvider.d.ts +0 -1
- package/dist/gridLayout/utils/gridLayoutProvider.js +1 -1
- package/dist/gridLayout/utils/isGridItem.d.ts +1 -1
- package/dist/groupsFilter/groupsHelper.d.ts +5 -5
- package/dist/groupsFilterRaw/groupsFilterHelper.js +16 -16
- package/dist/groupsFilterRaw/groupsHelper.d.ts +1 -1
- package/dist/groupsFilterRaw/groupsHelper.js +4 -4
- package/dist/groupsFilterRaw/stateReducer/stateReducer.d.ts +1 -1
- package/dist/groupsFilterRaw/stateReducer/stateReducer.js +2 -2
- package/dist/groupsFilterRaw/testData.js +3 -4
- package/dist/groupsFilterRaw/uiStateReducer/uiStateReducer.js +2 -2
- package/dist/header/components/collapsedItemsControl/utils/handleCustomMenuWrapper.js +5 -0
- package/dist/header/components/mobileFilterControl/mobileFilterControl.d.ts +0 -1
- package/dist/header/components/mobileSearchControl/mobileSearchControl.d.ts +0 -1
- package/dist/header/header.js +17 -7
- package/dist/header/headerButton.d.ts +0 -1
- package/dist/header/headerContext.d.ts +1 -2
- package/dist/header/headerHelpers.d.ts +5 -5
- package/dist/header/headerHelpers.js +17 -7
- package/dist/header/hooks/useNonFittingElements.d.ts +3 -4
- package/dist/headerTitle/headerTitle.d.ts +0 -1
- package/dist/icons/iconAce.d.ts +3 -0
- package/dist/icons/iconAce.js +12 -0
- package/dist/icons/iconBreak.d.ts +3 -0
- package/dist/icons/iconBreak.js +12 -0
- package/dist/icons/iconChevronStepper.d.ts +3 -0
- package/dist/icons/iconChevronStepper.js +12 -0
- package/dist/icons/iconPotato.d.ts +3 -0
- package/dist/icons/iconPotato.js +12 -0
- package/dist/icons/iconToggleLarge.d.ts +3 -0
- package/dist/icons/iconToggleLarge.js +12 -0
- package/dist/icons/iconToggleSmall.d.ts +3 -0
- package/dist/icons/iconToggleSmall.js +12 -0
- package/dist/icons/iconTrendNeutral.d.ts +3 -0
- package/dist/icons/iconTrendNeutral.js +12 -0
- package/dist/icons/iconTruck.d.ts +3 -0
- package/dist/icons/iconTruck.js +12 -0
- package/dist/index.css +234 -33
- package/dist/index.d.ts +8 -0
- package/dist/index.js +30 -13
- package/dist/layout/layout.d.ts +2 -1
- package/dist/layout/layout.js +17 -7
- package/dist/layout/layoutBanner.d.ts +0 -1
- package/dist/lineChart/lineChart.d.ts +1 -0
- package/dist/lineChart/lineChart.js +135 -70
- package/dist/lineChartMini/lineChartMini.d.ts +1 -0
- package/dist/lineChartMini/lineChartMini.js +141 -73
- package/dist/list/itemData/itemData.d.ts +2 -1
- package/dist/list/itemData/itemDataInternal.d.ts +2 -1
- package/dist/list/list.d.ts +0 -1
- package/dist/list/utils/changeOrder.js +1 -2
- package/dist/list/utils/isDataListitem.d.ts +1 -1
- package/dist/list/viewportProvider/viewportContext.d.ts +0 -1
- package/dist/menu/components/controlledMenuList/controlledMenuList.d.ts +2 -4
- package/dist/menu/components/controlledMenuList/controlledMenuList.js +3 -1
- package/dist/menu/components/createControlledMenuList.js +1 -2
- package/dist/menu/components/createMenuItem.js +1 -2
- package/dist/menu/contexts/usePathContext.js +1 -2
- package/dist/menu/utils/buildMenuContent.js +1 -2
- package/dist/menu/utils/findPrevFocusable.js +1 -2
- package/dist/menu/utils/useDisplayContent.d.ts +21 -0
- package/dist/menu/utils/useDisplayContent.js +35 -0
- package/dist/menu/utils/useMenuItemKeyboardNav.js +1 -2
- package/dist/miniTabs/miniTabsHelper.js +17 -7
- package/dist/mobileSheet/components/mobileSheetTitle.d.ts +0 -1
- package/dist/modal/modal.js +17 -7
- package/dist/nav/context/nav.context.d.ts +0 -1
- package/dist/nav/navFooter/navEditFooter/navEditFooter.d.ts +0 -1
- package/dist/nav/navFooter/navFooter.d.ts +1 -1
- package/dist/nav/navFooter/navFooterAction/navFooterAction.d.ts +2 -1
- package/dist/nav/navFooter/navFooterAction/navFooterAction.js +3 -1
- package/dist/nav/navItem/navItem.d.ts +2 -0
- package/dist/nav/navItem/navItem.js +56 -47
- package/dist/nav/navItem/navItemContent.d.ts +19 -0
- package/dist/nav/navItem/navItemContent.js +21 -0
- package/dist/nav/navItem/navItemType.d.ts +7 -0
- package/dist/nav/navItem/navItemType.js +9 -0
- package/dist/nav/utils/navUtils.d.ts +2 -4
- package/dist/nav/utils/navUtils.js +2 -2
- package/dist/overview/overview.d.ts +0 -1
- package/dist/pageHeader/pageHeader.d.ts +1 -1
- package/dist/pageHeader/pageHeaderButton.d.ts +0 -1
- package/dist/pageHeader/pageHeaderHelpers.d.ts +1 -1
- package/dist/pageHeader/pageHeaderMenu.d.ts +0 -1
- package/dist/pagination/paginationArrow.d.ts +0 -1
- package/dist/pill/interfaces/pill.interface.d.ts +0 -1
- package/dist/pillBox/components/pillBoxItem.d.ts +1 -2
- package/dist/popup/popup.js +17 -7
- package/dist/progressIndicator/progressIndicator.d.ts +39 -0
- package/dist/progressIndicator/progressIndicator.js +30 -0
- package/dist/progressIndicator/progressIndicatorUtils.d.ts +12 -0
- package/dist/progressIndicator/progressIndicatorUtils.js +30 -0
- package/dist/radioGroupRaw/radioGroupRaw.js +17 -7
- package/dist/radioGroupRaw/types.d.ts +0 -1
- package/dist/react-chartjs/dateFns/dateFns.js +10 -11
- package/dist/react-chartjs/utils.d.ts +3 -3
- package/dist/react-chartjs/utils.js +8 -9
- package/dist/searchInputRaw/searchInputRaw.js +17 -7
- package/dist/searchInputRaw/types.d.ts +0 -1
- package/dist/selectField/selectField.d.ts +2 -3
- package/dist/selectList/selectList.d.ts +0 -1
- package/dist/selectRaw/hooks/usePopupWidth.js +17 -7
- package/dist/selectRaw/selectRaw.js +20 -7
- package/dist/sidePanel/sidePanelCell/sidePanelCell.d.ts +0 -1
- package/dist/summaries/utils/splitIntoPairs.js +1 -2
- package/dist/summaryTile/summaryTile.js +17 -7
- package/dist/summaryTile/summaryTileTrigger.js +17 -7
- package/dist/table/actions/actionsMenu.d.ts +0 -1
- package/dist/table/children/useTableChildren.d.ts +7 -7
- package/dist/table/detailPanel/interfaces.d.ts +0 -1
- package/dist/table/flexible/columnsList.js +1 -2
- package/dist/table/loading/useLoading.d.ts +10 -10
- package/dist/table/nested/nestedData.d.ts +3 -1
- package/dist/table/nested/useNestedRows.d.ts +2 -2
- package/dist/table/selectable/selectableHeader.d.ts +2 -1
- package/dist/table/selectable/selectableHeader.js +4 -3
- package/dist/table/selectable/useSelectableRows.d.ts +1 -1
- package/dist/table/selectable/useSelectableRows.js +7 -4
- package/dist/table/table.d.ts +16 -1
- package/dist/table/table.js +101 -5
- package/dist/tag/tag.d.ts +19 -0
- package/dist/tag/tag.js +14 -0
- package/dist/textIconButton/textIconButton.js +17 -7
- package/dist/toastRaw/toastRaw.d.ts +1 -1
- package/dist/toastRaw/toastRaw.js +3 -1
- package/dist/toggleButtonRaw/toggleButtonRaw.js +17 -7
- package/dist/toggleButtonRaw/types.d.ts +0 -1
- package/dist/tooltip/tooltip.js +17 -7
- package/dist/tooltipInfo/tooltipInfo.d.ts +0 -1
- package/dist/utils/compareElementsUtils/isArraysEqualDeeply.js +1 -2
- package/dist/utils/compareElementsUtils/isElementsEqual.js +2 -2
- package/dist/utils/escapeHtml.js +1 -2
- package/dist/utils/localization/directionContext.d.ts +0 -1
- package/dist/utils/localization/languageContext.d.ts +0 -1
- package/dist/utils/localization/translations/en.json +12 -1
- package/dist/utils/theme/themeContext.d.ts +0 -1
- package/dist/utils/topWindow/topWindowContext.d.ts +0 -1
- package/dist/utils/useFadeComponent.d.ts +0 -1
- package/dist/utils/userFormat/userFormatContext.d.ts +0 -1
- package/dist/waiting/waiting.d.ts +2 -1
- package/dist/waiting/waiting.js +23 -6
- package/esm/alert/banner.d.ts +2 -3
- package/esm/alert/hooks/useAlertState.d.ts +0 -1
- package/esm/banner/bannerMultipLine.d.ts +0 -1
- package/esm/banner/bannerSingleLine.d.ts +0 -1
- package/esm/banner/utils/isSummaryErrorElement.d.ts +1 -2
- package/esm/card/components/content.d.ts +0 -1
- package/esm/chart/accessibleChart/accessibleChart.js +1 -1
- package/esm/chart/accessibleChart/accessibleChartNarrative.d.ts +1 -1
- package/esm/chart/accessibleChart/accessibleChartNarrative.js +8 -2
- package/esm/chart/accessibleChart/generatePieNarrative.d.ts +7 -0
- package/esm/chart/accessibleChart/generatePieNarrative.js +167 -0
- package/esm/chart/accessibleChart/interfaces.d.ts +1 -0
- package/esm/chart/barChart/getDefaultOptions.js +5 -6
- package/esm/chart/barChart.js +147 -50
- package/esm/chart/interfaces.d.ts +0 -1
- package/esm/chart/lineChart/getDefaultOptions.js +5 -6
- package/esm/chart/lineChart/useChartTicks.d.ts +0 -1
- package/esm/chart/lineChart/useSummary.d.ts +7 -8
- package/esm/chart/lineChart.js +162 -59
- package/esm/chart/pieChart.js +169 -76
- package/esm/chart/plugins/linePlugin/getInterpolatedValue.js +9 -0
- package/esm/chart/utils/convertDates.d.ts +1 -1
- package/esm/chart/utils/getNiceAxisRange.d.ts +21 -0
- package/esm/chart/utils/getNiceAxisRange.js +72 -0
- package/esm/chart/utils/getRange.js +2 -2
- package/esm/chart/utils/getYAxisMeta.d.ts +2 -5
- package/esm/chart/utils/getYAxisMeta.js +17 -2
- package/esm/chart/utils/getYAxisTickCount.d.ts +15 -0
- package/esm/chart/utils/getYAxisTickCount.js +15 -0
- package/esm/checkboxListWithAction/checkboxListWithAction.d.ts +0 -1
- package/esm/chip/chip.d.ts +0 -1
- package/esm/chip/utils/useChip.d.ts +0 -1
- package/esm/commonHelpers/HOC/reducerLogger/reducerLogger.d.ts +1 -1
- package/esm/commonHelpers/arrowNavigation/components/arrowButton/arrowButton.d.ts +0 -1
- package/esm/commonHelpers/arrowNavigation/hooks/useHoldOnScroll.d.ts +0 -1
- package/esm/commonHelpers/hooks/breakpoints.d.ts +4 -0
- package/esm/commonHelpers/hooks/breakpoints.js +4 -0
- package/esm/commonHelpers/hooks/fetch.reducer.d.ts +1 -1
- package/esm/commonHelpers/hooks/useDebouncedMemo.d.ts +0 -1
- package/esm/commonHelpers/hooks/useDeviceType.js +2 -2
- package/esm/commonHelpers/hooks/useEscape.d.ts +1 -1
- package/esm/commonHelpers/hooks/useGridSize.d.ts +0 -1
- package/esm/commonHelpers/hooks/useMobileOrTablet.d.ts +1 -0
- package/esm/commonHelpers/hooks/useMobileOrTablet.js +17 -0
- package/esm/commonHelpers/hooks/usePillSize.d.ts +0 -1
- package/esm/commonHelpers/hooks/useTablet.js +17 -0
- package/esm/dataFeed/dataFeed.d.ts +1 -1
- package/esm/dataFeed/dataFeed.js +2 -2
- package/esm/dataFeed/dataFeedCell/dataFeedCell.d.ts +3 -1
- package/esm/dataFeed/dataFeedColumnsItems.d.ts +2 -2
- package/esm/dataGrid/cell/cell.d.ts +3 -1
- package/esm/dataGrid/columns/actionsColumn/actionsColumn.d.ts +3 -3
- package/esm/dataGrid/dataGrid.d.ts +13 -1
- package/esm/dataGrid/dataGrid.js +48 -3
- package/esm/dataGrid/emptySearchList/emptySearchList.d.ts +0 -1
- package/esm/dataGrid/row/row.d.ts +3 -1
- package/esm/dataGrid/withActions/withActions.d.ts +1 -1
- package/esm/dataGrid/withFlexibleColumns/withFlexibleColumns.d.ts +1 -1
- package/esm/dataGrid/withLoading/withLoading.d.ts +1 -1
- package/esm/dataGrid/withSelectableRows/withLimitedSelectableRows.d.ts +1 -1
- package/esm/dataGrid/withSelectableRows/withSelectableRows.d.ts +1 -1
- package/esm/dataGrid/withSortableColumns/withSortableColumns.d.ts +1 -1
- package/esm/dialog/dialog.d.ts +0 -1
- package/esm/dropdown/dropdown.js +1 -1
- package/esm/dropdown/useDropdownState.d.ts +0 -1
- package/esm/dropdownRaw/dropdownList.d.ts +3 -2
- package/esm/dropdownRaw/dropdownList.js +14 -42
- package/esm/dropdownRaw/dropdownRaw.js +35 -14
- package/esm/dropdownRaw/stateReducer/stateReducer.d.ts +4 -1
- package/esm/dropdownRaw/stateReducer/stateReducer.js +32 -22
- package/esm/dropdownRaw/stateReducer/stateReducerHelper.d.ts +1 -2
- package/esm/dropdownRaw/stateReducer/stateReducerHelper.js +5 -10
- package/esm/dropdownRaw/types.d.ts +20 -0
- package/esm/feedbackContainer/hooks/useFeedbackAlert.d.ts +0 -1
- package/esm/feedbackContainer/hooks/useFeedbackToast.d.ts +0 -1
- package/esm/filters/components/filtersItem.d.ts +2 -2
- package/esm/filters/components/filtersSearchList.d.ts +0 -1
- package/esm/filters/components/filtersSelect.d.ts +0 -1
- package/esm/filters/components/filtersSelectCompact.d.ts +0 -1
- package/esm/filters/components/filtersSelectListItem.d.ts +0 -1
- package/esm/filters/components/filtersSelectUnfoldingPill.d.ts +0 -1
- package/esm/filters/filtersHelper.d.ts +1 -1
- package/esm/filters/filtersHooks.d.ts +0 -1
- package/esm/filtersBar/components/filtersBarDropdownWithCheckbox/filtersBarDropdownWithCheckbox.js +1 -1
- package/esm/filtersBar/filtersBar.js +2 -2
- package/esm/filtersBar/filtersBarActions/filtersBarActions.d.ts +0 -1
- package/esm/filtersBar/filtersBarInterfaces.d.ts +0 -1
- package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelDropdownWithCheckbox/filtersBarSidePanelDropdownWithCheckbox.d.ts +4 -10
- package/esm/formField/components/formFieldAdditionalInfo.d.ts +0 -1
- package/esm/formField/components/formFieldCounter.d.ts +0 -1
- package/esm/formField/components/formFieldLoading.d.ts +0 -1
- package/esm/formField/components/formFieldSkeleton.d.ts +0 -1
- package/esm/formField/components/formFieldWithLabel.d.ts +0 -1
- package/esm/formField/components/formFieldWithoutLabel.d.ts +0 -1
- package/esm/formField/formField.d.ts +1 -1
- package/esm/formField/hooks/useBanner.d.ts +0 -1
- package/esm/formField/hooks/useDisabled.d.ts +1 -1
- package/esm/formGroup/components/customRow/customRow.d.ts +0 -1
- package/esm/formGroup/hooks/listHooks/useStateToElements.d.ts +0 -1
- package/esm/formGroup/hooks/listHooks/useStateToElements.js +1 -1
- package/esm/formGroup/utils/formGroupProvider.d.ts +0 -1
- package/esm/formGroup/utils/isFormLabel.d.ts +1 -1
- package/esm/formGroupItem/formGroupItem.d.ts +0 -1
- package/esm/formLayout/components/layoutColumn/layoutColum.d.ts +0 -1
- package/esm/formLayout/hooks/useFormButtons.d.ts +1 -1
- package/esm/formLayout/types.d.ts +0 -1
- package/esm/formLayout/utils/attachHeadings.d.ts +1 -1
- package/esm/formLayout/utils/attachSeparators.d.ts +0 -1
- package/esm/formLayout/utils/getChildrenWithCustomColumns.d.ts +1 -2
- package/esm/formLayout/utils/getChildrenWithCustomColumns.js +2 -2
- package/esm/formLayout/utils/getFieldLabel.js +5 -5
- package/esm/formSection/components/actions.d.ts +0 -1
- package/esm/formSection/components/additional.d.ts +0 -1
- package/esm/formSection/utils/isFormSection.d.ts +2 -4
- package/esm/formStepper/components/formStepRaw.d.ts +0 -1
- package/esm/formStepper/formStepper.d.ts +0 -1
- package/esm/formStepper/formStepper.js +5 -5
- package/esm/formStepperButtons/formStepperButtons.js +3 -3
- package/esm/gridLayout/hooks/useStretch.js +1 -1
- package/esm/gridLayout/utils/gridLayoutProvider.d.ts +0 -1
- package/esm/gridLayout/utils/gridLayoutProvider.js +1 -1
- package/esm/gridLayout/utils/isGridItem.d.ts +1 -1
- package/esm/groupsFilter/groupsHelper.d.ts +5 -5
- package/esm/groupsFilterRaw/groupsHelper.d.ts +1 -1
- package/esm/groupsFilterRaw/stateReducer/stateReducer.d.ts +1 -1
- package/esm/groupsFilterRaw/testData.js +1 -2
- package/esm/header/components/collapsedItemsControl/utils/handleCustomMenuWrapper.js +5 -0
- package/esm/header/components/mobileFilterControl/mobileFilterControl.d.ts +0 -1
- package/esm/header/components/mobileSearchControl/mobileSearchControl.d.ts +0 -1
- package/esm/header/headerButton.d.ts +0 -1
- package/esm/header/headerContext.d.ts +1 -2
- package/esm/header/headerHelpers.d.ts +5 -5
- package/esm/header/hooks/useNonFittingElements.d.ts +3 -4
- package/esm/headerTitle/headerTitle.d.ts +0 -1
- package/esm/icons/iconAce.d.ts +3 -0
- package/esm/icons/iconAce.js +8 -0
- package/esm/icons/iconBreak.d.ts +3 -0
- package/esm/icons/iconBreak.js +8 -0
- package/esm/icons/iconChevronStepper.d.ts +3 -0
- package/esm/icons/iconChevronStepper.js +8 -0
- package/esm/icons/iconPotato.d.ts +3 -0
- package/esm/icons/iconPotato.js +8 -0
- package/esm/icons/iconToggleLarge.d.ts +3 -0
- package/esm/icons/iconToggleLarge.js +8 -0
- package/esm/icons/iconToggleSmall.d.ts +3 -0
- package/esm/icons/iconToggleSmall.js +8 -0
- package/esm/icons/iconTrendNeutral.d.ts +3 -0
- package/esm/icons/iconTrendNeutral.js +8 -0
- package/esm/icons/iconTruck.d.ts +3 -0
- package/esm/icons/iconTruck.js +8 -0
- package/esm/index.d.ts +8 -0
- package/esm/index.js +8 -0
- package/esm/layout/layout.d.ts +2 -1
- package/esm/layout/layoutBanner.d.ts +0 -1
- package/esm/lineChart/lineChart.d.ts +1 -0
- package/esm/lineChart/lineChart.js +129 -69
- package/esm/lineChartMini/lineChartMini.d.ts +1 -0
- package/esm/lineChartMini/lineChartMini.js +136 -73
- package/esm/list/itemData/itemData.d.ts +2 -1
- package/esm/list/itemData/itemDataInternal.d.ts +2 -1
- package/esm/list/list.d.ts +0 -1
- package/esm/list/utils/isDataListitem.d.ts +1 -1
- package/esm/list/viewportProvider/viewportContext.d.ts +0 -1
- package/esm/menu/components/controlledMenuList/controlledMenuList.d.ts +2 -4
- package/esm/menu/components/controlledMenuList/controlledMenuList.js +3 -1
- package/esm/menu/utils/useDisplayContent.d.ts +21 -0
- package/esm/menu/utils/useDisplayContent.js +31 -0
- package/esm/mobileSheet/components/mobileSheetTitle.d.ts +0 -1
- package/esm/nav/context/nav.context.d.ts +0 -1
- package/esm/nav/navFooter/navEditFooter/navEditFooter.d.ts +0 -1
- package/esm/nav/navFooter/navFooter.d.ts +1 -1
- package/esm/nav/navFooter/navFooterAction/navFooterAction.d.ts +2 -1
- package/esm/nav/navFooter/navFooterAction/navFooterAction.js +3 -1
- package/esm/nav/navItem/navItem.d.ts +2 -0
- package/esm/nav/navItem/navItem.js +57 -48
- package/esm/nav/navItem/navItemContent.d.ts +19 -0
- package/esm/nav/navItem/navItemContent.js +17 -0
- package/esm/nav/navItem/navItemType.d.ts +7 -0
- package/esm/nav/navItem/navItemType.js +6 -0
- package/esm/nav/utils/navUtils.d.ts +2 -4
- package/esm/overview/overview.d.ts +0 -1
- package/esm/pageHeader/pageHeader.d.ts +1 -1
- package/esm/pageHeader/pageHeaderButton.d.ts +0 -1
- package/esm/pageHeader/pageHeaderHelpers.d.ts +1 -1
- package/esm/pageHeader/pageHeaderMenu.d.ts +0 -1
- package/esm/pagination/paginationArrow.d.ts +0 -1
- package/esm/pill/interfaces/pill.interface.d.ts +0 -1
- package/esm/pillBox/components/pillBoxItem.d.ts +1 -2
- package/esm/progressIndicator/progressIndicator.d.ts +39 -0
- package/esm/progressIndicator/progressIndicator.js +26 -0
- package/esm/progressIndicator/progressIndicatorUtils.d.ts +12 -0
- package/esm/progressIndicator/progressIndicatorUtils.js +25 -0
- package/esm/radioGroupRaw/types.d.ts +0 -1
- package/esm/react-chartjs/utils.d.ts +3 -3
- package/esm/searchInputRaw/types.d.ts +0 -1
- package/esm/selectField/selectField.d.ts +2 -3
- package/esm/selectList/selectList.d.ts +0 -1
- package/esm/selectRaw/selectRaw.js +3 -0
- package/esm/sidePanel/sidePanelCell/sidePanelCell.d.ts +0 -1
- package/esm/table/actions/actionsMenu.d.ts +0 -1
- package/esm/table/children/useTableChildren.d.ts +7 -7
- package/esm/table/detailPanel/interfaces.d.ts +0 -1
- package/esm/table/loading/useLoading.d.ts +10 -10
- package/esm/table/nested/nestedData.d.ts +3 -1
- package/esm/table/nested/useNestedRows.d.ts +2 -2
- package/esm/table/selectable/selectableHeader.d.ts +2 -1
- package/esm/table/selectable/selectableHeader.js +4 -3
- package/esm/table/selectable/useSelectableRows.d.ts +1 -1
- package/esm/table/selectable/useSelectableRows.js +7 -4
- package/esm/table/table.d.ts +16 -1
- package/esm/table/table.js +102 -6
- package/esm/tag/tag.d.ts +19 -0
- package/esm/tag/tag.js +10 -0
- package/esm/testHelpers/geotab-axe/index.d.ts +0 -1
- package/esm/toastRaw/toastRaw.d.ts +1 -1
- package/esm/toastRaw/toastRaw.js +3 -1
- package/esm/toggleButtonRaw/types.d.ts +0 -1
- package/esm/tooltipInfo/tooltipInfo.d.ts +0 -1
- package/esm/utils/localization/directionContext.d.ts +0 -1
- package/esm/utils/localization/languageContext.d.ts +0 -1
- package/esm/utils/localization/translations/en.json +12 -1
- package/esm/utils/theme/themeContext.d.ts +0 -1
- package/esm/utils/topWindow/topWindowContext.d.ts +0 -1
- package/esm/utils/useFadeComponent.d.ts +0 -1
- package/esm/utils/userFormat/userFormatContext.d.ts +0 -1
- package/esm/waiting/waiting.d.ts +2 -1
- package/esm/waiting/waiting.js +24 -7
- package/package.json +13 -6
- package/esm/gridLayout/hooks/useTablet.js +0 -20
- /package/dist/{gridLayout → commonHelpers}/hooks/useTablet.d.ts +0 -0
- /package/esm/{gridLayout → commonHelpers}/hooks/useTablet.d.ts +0 -0
package/esm/chart/lineChart.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
1
|
+
import { injectString } from "../utils/localization/translationsDictionary";
|
|
2
|
+
var __rest = this && this.__rest || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
6
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
11
9
|
};
|
|
12
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
11
|
import { useCallback, useContext, useEffect, useId, useMemo } from "react";
|
|
14
12
|
import { Line } from "../react-chartjs/typedCharts";
|
|
15
13
|
import { Chart as ChartJS, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend, Filler, TimeScale } from "chart.js/auto";
|
|
@@ -39,52 +37,157 @@ import { getXAxisMeta } from "./utils/getXAxisMeta";
|
|
|
39
37
|
import { userFormatContext } from "../utils/userFormat/userFormatContext";
|
|
40
38
|
import { Summary } from "../summary/summary";
|
|
41
39
|
import { AccessibleChart } from "./accessibleChart/accessibleChart";
|
|
40
|
+
injectString("cs", "Line chart", "Spojnicov\xFD graf");
|
|
41
|
+
injectString("da-DK", "Line chart", "Linjediagram");
|
|
42
|
+
injectString("de", "Line chart", "Liniendiagramm");
|
|
43
|
+
injectString("en", "Line chart", "Line chart");
|
|
44
|
+
injectString("es", "Line chart", "Gr\xE1fico de l\xEDneas");
|
|
45
|
+
injectString("fi-FI", "Line chart", "Viivakaavio");
|
|
46
|
+
injectString("fr", "Line chart", "Graphique lin\xE9aire");
|
|
47
|
+
injectString("fr-FR", "Line chart", "Graphique lin\xE9aire");
|
|
48
|
+
injectString("hu-HU", "Line chart", "Vonaldiagram");
|
|
49
|
+
injectString("id", "Line chart", "Bagan garis");
|
|
50
|
+
injectString("it", "Line chart", "Grafico a linee");
|
|
51
|
+
injectString("ja", "Line chart", "\u6298\u308C\u7DDA\u30B0\u30E9\u30D5");
|
|
52
|
+
injectString("ko-KR", "Line chart", "\uC120\uD615 \uCC28\uD2B8");
|
|
53
|
+
injectString("ms", "Line chart", "Carta garisan");
|
|
54
|
+
injectString("nb-NO", "Line chart", "Linjediagram");
|
|
55
|
+
injectString("nl", "Line chart", "Lijndiagram");
|
|
56
|
+
injectString("pl", "Line chart", "Wykres liniowy");
|
|
57
|
+
injectString("pt-BR", "Line chart", "Gr\xE1fico de linhas");
|
|
58
|
+
injectString("pt-PT", "Line chart", "Gr\xE1fico de linhas");
|
|
59
|
+
injectString("sk-SK", "Line chart", "\u010Ciarov\xFD graf");
|
|
60
|
+
injectString("sv", "Line chart", "Linjediagram");
|
|
61
|
+
injectString("th", "Line chart", "\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E40\u0E2A\u0E49\u0E19");
|
|
62
|
+
injectString("tr", "Line chart", "\xC7izgi grafik");
|
|
63
|
+
injectString("zh-Hans", "Line chart", "\u6298\u7EBF\u56FE");
|
|
64
|
+
injectString("zh-TW", "Line chart", "\u6298\u7DDA\u5716");
|
|
65
|
+
injectString("ro-RO", "Line chart", "Grafic liniar");
|
|
66
|
+
injectString("ar", "Line chart", "\u0645\u062E\u0637\u0637 \u062E\u0637\u064A");
|
|
67
|
+
injectString("lt-LT", "Line chart", "Linijin\u0117 diagrama");
|
|
68
|
+
injectString("lv-LV", "Line chart", "L\u012Bniju diagramma");
|
|
69
|
+
injectString("ka-GE", "Line chart", "\u10EE\u10D0\u10D6\u10DD\u10D5\u10D0\u10DC\u10D8 \u10E1\u10E5\u10D4\u10DB\u10D0");
|
|
70
|
+
injectString("el-GR", "Line chart", "\u0393\u03C1\u03AC\u03C6\u03B7\u03BC\u03B1 \u03B3\u03C1\u03B1\u03BC\u03BC\u03CE\u03BD");
|
|
71
|
+
injectString("et-EE", "Line chart", "Joondiagramm");
|
|
72
|
+
injectString("bg-BG", "Line chart", "\u041B\u0438\u043D\u0435\u0439\u043D\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u0430");
|
|
42
73
|
ChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend, Filler, TimeScale);
|
|
43
|
-
export const LineChart =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
74
|
+
export const LineChart = _a => {
|
|
75
|
+
var {
|
|
76
|
+
data,
|
|
77
|
+
options = {},
|
|
78
|
+
axis,
|
|
79
|
+
insight,
|
|
80
|
+
summary,
|
|
81
|
+
legend,
|
|
82
|
+
tooltip,
|
|
83
|
+
plugins,
|
|
84
|
+
className
|
|
85
|
+
} = _a,
|
|
86
|
+
rest = __rest(_a, ["data", "options", "axis", "insight", "summary", "legend", "tooltip", "plugins", "className"]);
|
|
87
|
+
const {
|
|
88
|
+
translate
|
|
89
|
+
} = useLanguage();
|
|
90
|
+
const isDrive = useDrive();
|
|
91
|
+
const isMobile = useMobile();
|
|
92
|
+
const isRtl = useIsRTL();
|
|
93
|
+
const fontSize = useMemo(() => isDrive ? isMobile ? 14 : 16 : 12, [isDrive, isMobile]);
|
|
94
|
+
const {
|
|
95
|
+
dark
|
|
96
|
+
} = useContext(themeContext);
|
|
97
|
+
useEffect(() => {
|
|
98
|
+
ChartJS.defaults.font = {
|
|
99
|
+
family: "Roboto",
|
|
100
|
+
size: fontSize
|
|
101
|
+
};
|
|
102
|
+
ChartJS.defaults.color = dark ? "#FFFFFF" : "#1F2833";
|
|
103
|
+
}, [fontSize, dark]);
|
|
104
|
+
const legendId = useId();
|
|
105
|
+
const tooltipId = useId();
|
|
106
|
+
const narrativeId = useId();
|
|
107
|
+
const {
|
|
108
|
+
isHidden,
|
|
109
|
+
toggleHidden,
|
|
110
|
+
hiddenCount
|
|
111
|
+
} = useHidden();
|
|
112
|
+
const {
|
|
113
|
+
toLocalDateTime
|
|
114
|
+
} = useContext(userFormatContext);
|
|
115
|
+
const isTimedData = useMemo(() => isDateRange(data, true), [data]);
|
|
116
|
+
const chartData = useMemo(() => {
|
|
117
|
+
const chData = Object.assign({}, data);
|
|
118
|
+
chData.datasets = chData.datasets.map((ds, i) => getDefaultDatasetStyle(ds, i));
|
|
119
|
+
chData.datasets = chData.datasets.reduce((acc, dataset, dsIndex) => {
|
|
120
|
+
acc.push(dataset);
|
|
121
|
+
if (dataset.trendData) {
|
|
122
|
+
acc.push(Object.assign(Object.assign({}, dataset), {
|
|
123
|
+
data: dataset.trendData,
|
|
124
|
+
borderDash: [5, 5],
|
|
125
|
+
parentIndex: dsIndex
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
return acc;
|
|
129
|
+
}, []);
|
|
130
|
+
chData.datasets = chData.datasets.map((ds, i) => isHidden(ds.parentIndex !== undefined ? ds.parentIndex : i) ? Object.assign(Object.assign({}, ds), {
|
|
131
|
+
hidden: true
|
|
132
|
+
}) : ds);
|
|
133
|
+
return convertDates(chData, toLocalDateTime);
|
|
134
|
+
}, [data, isHidden, toLocalDateTime]);
|
|
135
|
+
const yAxisMeta = useMemo(() => getYAxisMeta(chartData), [chartData]);
|
|
136
|
+
const xAxisMeta = useMemo(() => getXAxisMeta(chartData, isTimedData), [chartData, isTimedData]);
|
|
137
|
+
const stableXAxisMeta = useLastVisibleXAxisMeta(xAxisMeta, hiddenCount, data.datasets.length);
|
|
138
|
+
const {
|
|
139
|
+
chartRef,
|
|
140
|
+
ticks
|
|
141
|
+
} = useChartTicks();
|
|
142
|
+
const defOptions = useMemo(() => getDefaultOptions(yAxisMeta, stableXAxisMeta, isTimedData, ticks, dark, translate, isRtl), [yAxisMeta, stableXAxisMeta, isTimedData, ticks, dark, translate, isRtl]);
|
|
143
|
+
const chartOptions = deepMerge(defOptions, options);
|
|
144
|
+
const chartTooltip = useMemo(() => LinePlugin(tooltipId, tooltip, dark), [tooltip, tooltipId, dark]);
|
|
145
|
+
const chartLegend = useMemo(() => legendPlugin(legendId, legend, isDrive, isHidden, toggleHidden), [isDrive, legend, legendId, isHidden, toggleHidden]);
|
|
146
|
+
const chartPlugins = useMemo(() => [...(plugins || []), chartTooltip, chartLegend], [plugins, chartTooltip, chartLegend]);
|
|
147
|
+
const {
|
|
148
|
+
xLabels,
|
|
149
|
+
yLabels
|
|
150
|
+
} = useAxisLabels(axis, chartOptions);
|
|
151
|
+
const intSummary = useSummary(summary, chartData);
|
|
152
|
+
const isMainHidden = useMemo(() => isHidden(0), [isHidden]);
|
|
153
|
+
const toggleMainDataset = useCallback(() => toggleHidden(0), [toggleHidden]);
|
|
154
|
+
return _jsxs(_Fragment, {
|
|
155
|
+
children: [_jsxs("div", {
|
|
156
|
+
className: classNames(["zen-chart", className || ""]),
|
|
157
|
+
ref: chartRef,
|
|
158
|
+
tabIndex: 0,
|
|
159
|
+
role: "figure",
|
|
160
|
+
"aria-label": translate("Line chart"),
|
|
161
|
+
"aria-describedby": narrativeId,
|
|
162
|
+
children: [insight ? _jsx(ChartInsight, Object.assign({}, insight)) : null, summary !== false ? _jsx(Summary, Object.assign({}, intSummary, {
|
|
163
|
+
onToggle: toggleMainDataset,
|
|
164
|
+
isEnabled: isMainHidden
|
|
165
|
+
})) : null, (isDrive ? undefined : xLabels) || yLabels.length > 0 ? _jsx(ChartAxis, {
|
|
166
|
+
xLabel: isDrive ? undefined : xLabels,
|
|
167
|
+
yLabels: yLabels,
|
|
168
|
+
yAxisPosition: isRtl ? "left" : "right"
|
|
169
|
+
}) : null, _jsx("div", {
|
|
170
|
+
className: "zen-chart__chart",
|
|
171
|
+
children: _jsx(Line, Object.assign({
|
|
172
|
+
width: 100,
|
|
173
|
+
height: 100,
|
|
174
|
+
options: chartOptions,
|
|
175
|
+
data: chartData,
|
|
176
|
+
plugins: chartPlugins,
|
|
177
|
+
"aria-hidden": true
|
|
178
|
+
}, rest))
|
|
179
|
+
}), _jsx("div", {
|
|
180
|
+
className: "zen-chart__legend",
|
|
181
|
+
id: legendId
|
|
182
|
+
}), isDrive && xLabels ? _jsx("div", {
|
|
183
|
+
className: "zen-chart__x-axis",
|
|
184
|
+
children: xLabels
|
|
185
|
+
}) : null]
|
|
186
|
+
}), _jsx(AccessibleChart, {
|
|
187
|
+
type: "line",
|
|
188
|
+
data: chartData,
|
|
189
|
+
options: chartOptions,
|
|
190
|
+
narrativeId: narrativeId
|
|
191
|
+
})]
|
|
192
|
+
});
|
|
193
|
+
};
|
package/esm/chart/pieChart.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
1
|
+
import { injectString } from "../utils/localization/translationsDictionary";
|
|
2
|
+
var __rest = this && this.__rest || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
6
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
11
9
|
};
|
|
12
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
11
|
import { useCallback, useContext, useEffect, useId, useMemo, useRef } from "react";
|
|
14
12
|
import { Pie } from "../react-chartjs/typedCharts";
|
|
15
13
|
import { Chart as ChartJS, PieController, ArcElement } from "chart.js/auto";
|
|
@@ -31,69 +29,164 @@ import { AccessibleChart } from "./accessibleChart/accessibleChart";
|
|
|
31
29
|
import { centerTextPlugin } from "./pieChart/centerTextPlugin";
|
|
32
30
|
import { pieLegendPlugin } from "./pieChart/pieLegendPlugin";
|
|
33
31
|
import { legendPlugin } from "./plugins/legend/legendPlugin";
|
|
32
|
+
import { useLanguage } from "../utils/localization/useLanguage";
|
|
33
|
+
injectString("cs", "Pie chart", "V\xFDse\u010Dov\xFD graf");
|
|
34
|
+
injectString("da-DK", "Pie chart", "Cirkeldiagram");
|
|
35
|
+
injectString("de", "Pie chart", "Kreisdiagramm");
|
|
36
|
+
injectString("en", "Pie chart", "Pie chart");
|
|
37
|
+
injectString("es", "Pie chart", "Gr\xE1fico de torta");
|
|
38
|
+
injectString("fi-FI", "Pie chart", "Ympyr\xE4kaavio");
|
|
39
|
+
injectString("fr", "Pie chart", "Graphique \xE0 secteurs");
|
|
40
|
+
injectString("fr-FR", "Pie chart", "Diagramme circulaire");
|
|
41
|
+
injectString("hu-HU", "Pie chart", "Keresztdiagram");
|
|
42
|
+
injectString("id", "Pie chart", "Bagan pai");
|
|
43
|
+
injectString("it", "Pie chart", "Grafico a torta");
|
|
44
|
+
injectString("ja", "Pie chart", "\u5186\u30B0\u30E9\u30D5");
|
|
45
|
+
injectString("ko-KR", "Pie chart", "\uD30C\uC774 \uCC28\uD2B8");
|
|
46
|
+
injectString("ms", "Pie chart", "Carta pai");
|
|
47
|
+
injectString("nb-NO", "Pie chart", "Sirkeldiagram");
|
|
48
|
+
injectString("nl", "Pie chart", "Cirkeldiagram");
|
|
49
|
+
injectString("pl", "Pie chart", "Wykres ko\u0142owy");
|
|
50
|
+
injectString("pt-BR", "Pie chart", "Gr\xE1fico de pizza");
|
|
51
|
+
injectString("pt-PT", "Pie chart", "Gr\xE1fico de setores");
|
|
52
|
+
injectString("sk-SK", "Pie chart", "Kol\xE1\u010Dov\xFD graf");
|
|
53
|
+
injectString("sv", "Pie chart", "Cirkeldiagram");
|
|
54
|
+
injectString("th", "Pie chart", "\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E27\u0E07\u0E01\u0E25\u0E21");
|
|
55
|
+
injectString("tr", "Pie chart", "Pasta grafik");
|
|
56
|
+
injectString("zh-Hans", "Pie chart", "\u997C\u56FE");
|
|
57
|
+
injectString("zh-TW", "Pie chart", "\u5713\u5F62\u5716");
|
|
58
|
+
injectString("ro-RO", "Pie chart", "Diagram\u0103 circular\u0103");
|
|
59
|
+
injectString("ar", "Pie chart", "\u0645\u062E\u0637\u0637 \u062F\u0627\u0626\u0631\u064A");
|
|
60
|
+
injectString("lt-LT", "Pie chart", "Skritulin\u0117 diagrama");
|
|
61
|
+
injectString("lv-LV", "Pie chart", "Sektoru diagramma");
|
|
62
|
+
injectString("ka-GE", "Pie chart", "\u10EC\u10E0\u10D8\u10E3\u10DA\u10D8 \u10E1\u10E5\u10D4\u10DB\u10D0");
|
|
63
|
+
injectString("el-GR", "Pie chart", "\u0393\u03C1\u03AC\u03C6\u03B7\u03BC\u03B1 \u03C0\u03AF\u03C4\u03B1\u03C2");
|
|
64
|
+
injectString("et-EE", "Pie chart", "Sektordiagramm");
|
|
65
|
+
injectString("bg-BG", "Pie chart", "\u041A\u0440\u044A\u0433\u043E\u0432\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u0430");
|
|
34
66
|
ChartJS.register(PieController, ArcElement);
|
|
35
|
-
export const PieChart =
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
67
|
+
export const PieChart = _a => {
|
|
68
|
+
var {
|
|
69
|
+
data,
|
|
70
|
+
options = {},
|
|
71
|
+
insight,
|
|
72
|
+
summary,
|
|
73
|
+
legend,
|
|
74
|
+
tooltip,
|
|
75
|
+
plugins,
|
|
76
|
+
className
|
|
77
|
+
} = _a,
|
|
78
|
+
rest = __rest(_a, ["data", "options", "insight", "summary", "legend", "tooltip", "plugins", "className"]);
|
|
79
|
+
const {
|
|
80
|
+
isHorizontal
|
|
81
|
+
} = options;
|
|
82
|
+
const {
|
|
83
|
+
translate
|
|
84
|
+
} = useLanguage();
|
|
85
|
+
const isDrive = useDrive();
|
|
86
|
+
const isMobile = useMobile();
|
|
87
|
+
const fontSize = useMemo(() => isDrive ? isMobile ? 14 : 16 : 12, [isDrive, isMobile]);
|
|
88
|
+
const {
|
|
89
|
+
dark
|
|
90
|
+
} = useContext(themeContext);
|
|
91
|
+
const legendId = useId();
|
|
92
|
+
const tooltipId = useId();
|
|
93
|
+
const narrativeId = useId();
|
|
94
|
+
const containerRef = useRef(null);
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
var _a;
|
|
97
|
+
const el = containerRef.current;
|
|
98
|
+
const styles = el ? (_a = zen.getComputedStyle) === null || _a === void 0 ? void 0 : _a.call(zen, el) : undefined;
|
|
99
|
+
const fontFamily = (styles === null || styles === void 0 ? void 0 : styles.getPropertyValue("--main-font").trim()) || "Roboto";
|
|
100
|
+
const color = (styles === null || styles === void 0 ? void 0 : styles.getPropertyValue("--text-primary").trim()) || "";
|
|
101
|
+
ChartJS.defaults.font = {
|
|
102
|
+
family: fontFamily,
|
|
103
|
+
size: fontSize
|
|
104
|
+
};
|
|
105
|
+
ChartJS.defaults.color = color;
|
|
106
|
+
}, [fontSize, dark]);
|
|
107
|
+
const defOptions = useMemo(() => getDefaultOptions(), []);
|
|
108
|
+
const chartOptions = deepMerge(defOptions, options);
|
|
109
|
+
const {
|
|
110
|
+
isHidden,
|
|
111
|
+
toggleHidden: rawToggle
|
|
112
|
+
} = useHidden();
|
|
113
|
+
const pieData = data.datasets[0].data;
|
|
114
|
+
const toggleHidden = useCallback(index => {
|
|
115
|
+
if (!isHidden(index)) {
|
|
116
|
+
const visibleCount = pieData.filter((_, i) => !isHidden(i)).length;
|
|
117
|
+
if (visibleCount <= 1) return;
|
|
118
|
+
}
|
|
119
|
+
rawToggle(index);
|
|
120
|
+
}, [isHidden, rawToggle, pieData]);
|
|
121
|
+
const chartData = useMemo(() => {
|
|
122
|
+
const chData = Object.assign({}, data);
|
|
123
|
+
chData.datasets = chData.datasets.map(ds => getDefaultDatasetStyle(ds));
|
|
124
|
+
chData.datasets[0].data = chData.datasets[0].data.map((value, index) => isHidden(index) ? 0 : value);
|
|
125
|
+
return chData;
|
|
126
|
+
}, [data, isHidden]);
|
|
127
|
+
const chartTooltip = useMemo(() => TooltipPlugin(tooltipId, tooltip, "left", isHidden, dark), [tooltipId, tooltip, isHidden, dark]);
|
|
128
|
+
const effectiveLegend = useMemo(() => isHorizontal && legend !== false ? Object.assign(Object.assign({}, legend), {
|
|
129
|
+
position: "right",
|
|
130
|
+
showBar: true,
|
|
131
|
+
showPercentage: true
|
|
132
|
+
}) : legend, [isHorizontal, legend]);
|
|
133
|
+
const legendData = useMemo(() => {
|
|
134
|
+
var _a;
|
|
135
|
+
return Object.assign(Object.assign({}, data), {
|
|
136
|
+
datasets: [Object.assign(Object.assign({}, data.datasets[0]), {
|
|
137
|
+
backgroundColor: (_a = chartData.datasets[0]) === null || _a === void 0 ? void 0 : _a.backgroundColor
|
|
138
|
+
}), ...data.datasets.slice(1)]
|
|
139
|
+
});
|
|
140
|
+
}, [data, chartData]);
|
|
141
|
+
const chartLegend = useMemo(() => isHorizontal ? pieLegendPlugin(legendId, effectiveLegend, isDrive, legendData, isHidden, toggleHidden) : legendPlugin(legendId, legend, isDrive, isHidden, toggleHidden), [isDrive, isHorizontal, effectiveLegend, legend, legendId, legendData, isHidden, toggleHidden]);
|
|
142
|
+
const resolvedCenterText = useMemo(() => {
|
|
143
|
+
if (!options.centerText) return undefined;
|
|
144
|
+
const {
|
|
145
|
+
getValue,
|
|
146
|
+
value,
|
|
147
|
+
label
|
|
148
|
+
} = options.centerText;
|
|
149
|
+
if (getValue) {
|
|
150
|
+
const visibleValues = chartData.datasets[0].data.filter((_, i) => !isHidden(i));
|
|
151
|
+
return {
|
|
152
|
+
value: getValue(visibleValues),
|
|
153
|
+
label
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
value,
|
|
158
|
+
label
|
|
159
|
+
};
|
|
160
|
+
}, [options.centerText, chartData, isHidden]);
|
|
161
|
+
const chartCenterText = useMemo(() => centerTextPlugin(resolvedCenterText), [resolvedCenterText]);
|
|
162
|
+
const chartPlugins = useMemo(() => [...(plugins || []), chartLegend, chartTooltip, chartCenterText], [chartLegend, chartTooltip, chartCenterText, plugins]);
|
|
163
|
+
const intSummary = useSummary(summary, chartData);
|
|
164
|
+
const legendRight = isHorizontal;
|
|
165
|
+
return _jsxs(_Fragment, {
|
|
166
|
+
children: [_jsxs("div", {
|
|
167
|
+
ref: containerRef,
|
|
168
|
+
className: classNames(["zen-chart", legendRight ? "zen-chart--legend-right" : "", className || ""]),
|
|
169
|
+
tabIndex: 0,
|
|
170
|
+
role: "figure",
|
|
171
|
+
"aria-label": translate("Pie chart"),
|
|
172
|
+
"aria-describedby": narrativeId,
|
|
173
|
+
children: [insight ? _jsx(ChartInsight, Object.assign({}, insight)) : null, summary ? _jsx(Summary, Object.assign({}, intSummary)) : null, _jsx("div", {
|
|
174
|
+
className: "zen-chart__chart",
|
|
175
|
+
children: _jsx(Pie, Object.assign({
|
|
176
|
+
options: chartOptions,
|
|
177
|
+
data: chartData,
|
|
178
|
+
plugins: chartPlugins
|
|
179
|
+
}, rest, {
|
|
180
|
+
"aria-hidden": true
|
|
181
|
+
}))
|
|
182
|
+
}), _jsx("div", {
|
|
183
|
+
className: "zen-chart__legend",
|
|
184
|
+
id: legendId
|
|
185
|
+
})]
|
|
186
|
+
}), _jsx(AccessibleChart, {
|
|
187
|
+
type: "pie",
|
|
188
|
+
data: data,
|
|
189
|
+
narrativeId: narrativeId
|
|
190
|
+
})]
|
|
191
|
+
});
|
|
192
|
+
};
|
|
@@ -37,6 +37,15 @@ export function getInterpolatedValue(xScale, data, datasetIndex, xPixel) {
|
|
|
37
37
|
if (x1 === x2) {
|
|
38
38
|
return y1;
|
|
39
39
|
}
|
|
40
|
+
// Sub-pixel tolerance: element.x (from Chart.js) and xScale.getPixelForValue()
|
|
41
|
+
// can disagree by a fraction of a pixel, causing the cursor to land just past a
|
|
42
|
+
// data point and interpolate with the next segment instead of returning the exact value.
|
|
43
|
+
if (Math.abs(x - x1) < 0.5) {
|
|
44
|
+
return y1;
|
|
45
|
+
}
|
|
46
|
+
if (Math.abs(x - x2) < 0.5) {
|
|
47
|
+
return y2;
|
|
48
|
+
}
|
|
40
49
|
const interpolatedY = y1 + ((y2 - y1) * (x - x1)) / (x2 - x1);
|
|
41
50
|
return interpolatedY;
|
|
42
51
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { IBarChartData } from "../barChart/interfaces";
|
|
2
2
|
import { ILineChartData } from "../lineChart/interfaces";
|
|
3
|
-
export declare const convertDates: (data: ILineChartData | IBarChartData, toLocalDateTime: (date: Date | string) => Date) =>
|
|
3
|
+
export declare const convertDates: (data: ILineChartData | IBarChartData, toLocalDateTime: (date: Date | string) => Date) => typeof data;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Computes a Y-axis min/max pair that:
|
|
3
|
+
* - Fully contains the original [min, max] range.
|
|
4
|
+
* - Splits into exactly `tickCount - 1` equal, "nice" (round-number) steps, so an axis
|
|
5
|
+
* configured with this min/max and `ticks.count = tickCount` renders exactly `tickCount`
|
|
6
|
+
* human-friendly tick values (e.g. 0, 25, 50, 75, 100) instead of arbitrary decimals.
|
|
7
|
+
*
|
|
8
|
+
* This is what allows forcing the same `ticks.count` across multiple Y-axes (see
|
|
9
|
+
* getYAxisTickCount) without sacrificing round-number tick labels: Chart.js's own tick
|
|
10
|
+
* generator produces evenly-spaced (but not necessarily round) values whenever `ticks.count`
|
|
11
|
+
* is combined with an explicit `min`/`max`, so the min/max passed in must already be "niced".
|
|
12
|
+
*
|
|
13
|
+
* **Precondition:** `min <= max`. An inverted range (`min > max`) produces a negative
|
|
14
|
+
* `rawStep`, which causes an early return of the original pair unchanged — Chart.js does not
|
|
15
|
+
* handle inverted axes gracefully. The current call chain enforces this via `normalizeRange`,
|
|
16
|
+
* so the inverted case is unreachable in practice; direct callers must guarantee it themselves.
|
|
17
|
+
*/
|
|
18
|
+
export declare const getNiceAxisRange: (min: number, max: number, tickCount: number) => {
|
|
19
|
+
min: number;
|
|
20
|
+
max: number;
|
|
21
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Classic "nice numbers" step candidates, used to pick human-friendly tick spacing
|
|
2
|
+
// (e.g. 1, 2, 2.5, 5, 10, 20, 25, 50, 100...) instead of arbitrary decimals. 2.5 is included
|
|
3
|
+
// alongside the more common 1-2-5 sequence because omitting it causes the axis range to
|
|
4
|
+
// overshoot the data significantly more often (e.g. a range of 94 rounds up to a step of 50,
|
|
5
|
+
// i.e. a span of 200, instead of a step of 25, i.e. a span of 100).
|
|
6
|
+
const NICE_STEP_MULTIPLIERS = [1, 2, 2.5, 5];
|
|
7
|
+
/**
|
|
8
|
+
* Returns a sorted list of "nice" step candidates at or above `minStep`, spanning a few orders
|
|
9
|
+
* of magnitude so callers can pick the smallest one that satisfies their range requirement.
|
|
10
|
+
*/
|
|
11
|
+
const getNiceStepCandidatesAtLeast = (minStep) => {
|
|
12
|
+
if (!Number.isFinite(minStep) || minStep <= 0) {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
const exponent = Math.floor(Math.log10(minStep));
|
|
16
|
+
const candidates = [];
|
|
17
|
+
// Search a window around the raw step's magnitude; one order of magnitude below covers
|
|
18
|
+
// rounding edge cases (e.g. minStep just above a power of ten), and several above ensure
|
|
19
|
+
// we can always find a candidate whose range covers the data even for very large steps.
|
|
20
|
+
for (let e = exponent - 1; e <= exponent + 6; e++) {
|
|
21
|
+
for (const multiplier of NICE_STEP_MULTIPLIERS) {
|
|
22
|
+
candidates.push(multiplier * Math.pow(10, e));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return candidates.filter(candidate => candidate >= minStep * 0.999).sort((a, b) => a - b);
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Rounds `value` to a sensible number of decimal places derived from `step`'s magnitude, to
|
|
29
|
+
* avoid floating point artifacts like 0.30000000000000004 ending up in tick labels.
|
|
30
|
+
*/
|
|
31
|
+
const roundToStepPrecision = (value, step) => {
|
|
32
|
+
const decimals = Math.max(0, -Math.floor(Math.log10(step)) + 2);
|
|
33
|
+
const factor = Math.pow(10, decimals);
|
|
34
|
+
return Math.round(value * factor) / factor;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Computes a Y-axis min/max pair that:
|
|
38
|
+
* - Fully contains the original [min, max] range.
|
|
39
|
+
* - Splits into exactly `tickCount - 1` equal, "nice" (round-number) steps, so an axis
|
|
40
|
+
* configured with this min/max and `ticks.count = tickCount` renders exactly `tickCount`
|
|
41
|
+
* human-friendly tick values (e.g. 0, 25, 50, 75, 100) instead of arbitrary decimals.
|
|
42
|
+
*
|
|
43
|
+
* This is what allows forcing the same `ticks.count` across multiple Y-axes (see
|
|
44
|
+
* getYAxisTickCount) without sacrificing round-number tick labels: Chart.js's own tick
|
|
45
|
+
* generator produces evenly-spaced (but not necessarily round) values whenever `ticks.count`
|
|
46
|
+
* is combined with an explicit `min`/`max`, so the min/max passed in must already be "niced".
|
|
47
|
+
*
|
|
48
|
+
* **Precondition:** `min <= max`. An inverted range (`min > max`) produces a negative
|
|
49
|
+
* `rawStep`, which causes an early return of the original pair unchanged — Chart.js does not
|
|
50
|
+
* handle inverted axes gracefully. The current call chain enforces this via `normalizeRange`,
|
|
51
|
+
* so the inverted case is unreachable in practice; direct callers must guarantee it themselves.
|
|
52
|
+
*/
|
|
53
|
+
export const getNiceAxisRange = (min, max, tickCount) => {
|
|
54
|
+
if (!Number.isFinite(min) || !Number.isFinite(max) || tickCount < 2) {
|
|
55
|
+
return { min, max };
|
|
56
|
+
}
|
|
57
|
+
const safeMax = min === max ? min + 1 : max;
|
|
58
|
+
const rawStep = (safeMax - min) / (tickCount - 1);
|
|
59
|
+
if (!(rawStep > 0)) {
|
|
60
|
+
return { min, max: safeMax };
|
|
61
|
+
}
|
|
62
|
+
const candidates = getNiceStepCandidatesAtLeast(rawStep);
|
|
63
|
+
for (const step of candidates) {
|
|
64
|
+
const niceMin = Math.floor(min / step) * step;
|
|
65
|
+
const niceMax = niceMin + step * (tickCount - 1);
|
|
66
|
+
if (niceMax >= safeMax) {
|
|
67
|
+
return { min: roundToStepPrecision(niceMin, step), max: roundToStepPrecision(niceMax, step) };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Should be unreachable given the generated candidate range, but fall back safely.
|
|
71
|
+
return { min, max: safeMax };
|
|
72
|
+
};
|
|
@@ -3,12 +3,12 @@ export const getRange = (data) => {
|
|
|
3
3
|
const { min, max } = getMinMax(data);
|
|
4
4
|
let range = max - min;
|
|
5
5
|
if (range === 0) {
|
|
6
|
-
range = min * 0.1;
|
|
6
|
+
range = Math.abs(min) * 0.1;
|
|
7
7
|
}
|
|
8
8
|
const suggestedMin = min - range * 0.1;
|
|
9
9
|
const suggestedMax = max + range * 0.1;
|
|
10
10
|
return {
|
|
11
|
-
min: suggestedMin,
|
|
11
|
+
min: min >= 0 && suggestedMin < 0 ? 0 : suggestedMin,
|
|
12
12
|
max: suggestedMax
|
|
13
13
|
};
|
|
14
14
|
};
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
+
import { IYAxisMeta } from "../interfaces";
|
|
1
2
|
import { ILineChartData } from "../lineChart/interfaces";
|
|
2
3
|
import { IBarChartData } from "../barChart/interfaces";
|
|
3
|
-
export declare const getYAxisMeta: (data: ILineChartData | IBarChartData, stacked?: boolean) =>
|
|
4
|
-
min: number;
|
|
5
|
-
max: number;
|
|
6
|
-
name: string;
|
|
7
|
-
}[];
|
|
4
|
+
export declare const getYAxisMeta: (data: ILineChartData | IBarChartData, stacked?: boolean) => IYAxisMeta[];
|