@geotab/zenith 3.14.1 → 3.15.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.
Files changed (523) hide show
  1. package/README.md +28 -2
  2. package/dist/advancedGroupsFilter/advancedGroupsFilterFormSection.js +17 -7
  3. package/dist/alert/banner.d.ts +2 -3
  4. package/dist/alert/hooks/useAlertState.d.ts +0 -1
  5. package/dist/banner/bannerMultipLine.d.ts +0 -1
  6. package/dist/banner/bannerSingleLine.d.ts +0 -1
  7. package/dist/banner/utils/isSummaryErrorElement.d.ts +1 -2
  8. package/dist/calendar/dateUtils.js +2 -2
  9. package/dist/card/card.js +17 -7
  10. package/dist/card/components/content.d.ts +0 -1
  11. package/dist/cardContainer/helpers/getSizeClass.js +1 -2
  12. package/dist/chart/accessibleChart/accessibleChart.js +1 -1
  13. package/dist/chart/accessibleChart/accessibleChartNarrative.d.ts +1 -1
  14. package/dist/chart/accessibleChart/accessibleChartNarrative.js +11 -5
  15. package/dist/chart/accessibleChart/generatePieNarrative.d.ts +7 -0
  16. package/dist/chart/accessibleChart/generatePieNarrative.js +179 -0
  17. package/dist/chart/accessibleChart/interfaces.d.ts +1 -0
  18. package/dist/chart/barChart/getDefaultOptions.js +5 -6
  19. package/dist/chart/barChart.js +152 -50
  20. package/dist/chart/interfaces.d.ts +0 -1
  21. package/dist/chart/lineChart/getDefaultOptions.js +5 -6
  22. package/dist/chart/lineChart/useChartTicks.d.ts +0 -1
  23. package/dist/chart/lineChart/useSummary.d.ts +7 -8
  24. package/dist/chart/lineChart.js +167 -59
  25. package/dist/chart/pieChart.js +174 -76
  26. package/dist/chart/plugins/linePlugin/getInterpolatedValue.js +1 -2
  27. package/dist/chart/plugins/linePlugin/linePlugin.js +29 -7
  28. package/dist/chart/utils/convertDates.d.ts +1 -1
  29. package/dist/chart/utils/getFormattedLabel.js +1 -2
  30. package/dist/chart/utils/getNiceAxisRange.d.ts +21 -0
  31. package/dist/chart/utils/getNiceAxisRange.js +76 -0
  32. package/dist/chart/utils/getRange.js +2 -2
  33. package/dist/chart/utils/getYAxisMeta.d.ts +2 -5
  34. package/dist/chart/utils/getYAxisMeta.js +17 -2
  35. package/dist/chart/utils/getYAxisTickCount.d.ts +15 -0
  36. package/dist/chart/utils/getYAxisTickCount.js +19 -0
  37. package/dist/chart/utils/resampleArrayEvenly.js +1 -2
  38. package/dist/checkbox/checkbox.js +17 -7
  39. package/dist/checkboxListWithAction/checkboxListWithAction.d.ts +0 -1
  40. package/dist/chip/chip.d.ts +0 -1
  41. package/dist/chip/utils/useChip.d.ts +0 -1
  42. package/dist/commonHelpers/HOC/reducerLogger/reducerLogger.d.ts +1 -1
  43. package/dist/commonHelpers/arrowNavigation/components/arrowButton/arrowButton.d.ts +0 -1
  44. package/dist/commonHelpers/arrowNavigation/hooks/useHoldOnScroll.d.ts +0 -1
  45. package/dist/commonHelpers/generateId.js +1 -2
  46. package/dist/commonHelpers/hooks/breakpoints.d.ts +4 -0
  47. package/dist/commonHelpers/hooks/breakpoints.js +7 -0
  48. package/dist/commonHelpers/hooks/fetch.reducer.d.ts +1 -1
  49. package/dist/commonHelpers/hooks/fetch.reducer.js +1 -2
  50. package/dist/commonHelpers/hooks/useDebouncedMemo.d.ts +0 -1
  51. package/dist/commonHelpers/hooks/useDebouncedMemo.js +1 -2
  52. package/dist/commonHelpers/hooks/useDeviceType.js +2 -2
  53. package/dist/commonHelpers/hooks/useEscape.d.ts +1 -1
  54. package/dist/commonHelpers/hooks/useGridSize.d.ts +0 -1
  55. package/dist/commonHelpers/hooks/useMobileOrTablet.d.ts +1 -0
  56. package/dist/commonHelpers/hooks/useMobileOrTablet.js +21 -0
  57. package/dist/commonHelpers/hooks/usePillSize.d.ts +0 -1
  58. package/dist/{gridLayout → commonHelpers}/hooks/useTablet.js +8 -11
  59. package/dist/commonHelpers/utils.js +3 -3
  60. package/dist/commonStyles/colors/colors.less +1 -0
  61. package/dist/dataFeed/dataFeed.d.ts +1 -1
  62. package/dist/dataFeed/dataFeed.js +2 -2
  63. package/dist/dataFeed/dataFeedCell/dataFeedCell.d.ts +3 -1
  64. package/dist/dataFeed/dataFeedColumnsItems.d.ts +2 -2
  65. package/dist/dataGrid/cell/cell.d.ts +3 -1
  66. package/dist/dataGrid/columns/actionsColumn/actionsButton.js +1 -2
  67. package/dist/dataGrid/columns/actionsColumn/actionsColumn.d.ts +3 -3
  68. package/dist/dataGrid/dataGrid.d.ts +13 -1
  69. package/dist/dataGrid/dataGrid.js +48 -3
  70. package/dist/dataGrid/emptySearchList/emptySearchList.d.ts +0 -1
  71. package/dist/dataGrid/row/row.d.ts +3 -1
  72. package/dist/dataGrid/withActions/withActions.d.ts +1 -1
  73. package/dist/dataGrid/withFlexibleColumns/components/columnSettingsList.js +1 -2
  74. package/dist/dataGrid/withFlexibleColumns/withFlexibleColumns.d.ts +1 -1
  75. package/dist/dataGrid/withLoading/withLoading.d.ts +1 -1
  76. package/dist/dataGrid/withSelectableRows/withLimitedSelectableRows.d.ts +1 -1
  77. package/dist/dataGrid/withSelectableRows/withSelectableRows.d.ts +1 -1
  78. package/dist/dataGrid/withSortableColumns/withSortableColumns.d.ts +1 -1
  79. package/dist/dateInputInner/dateInputInnerReducer.js +2 -2
  80. package/dist/dateRangeRaw/utils/areMapsEqual.js +1 -2
  81. package/dist/dialog/dialog.d.ts +0 -1
  82. package/dist/dropdown/dropdown.js +1 -1
  83. package/dist/dropdown/useDropdownState.d.ts +0 -1
  84. package/dist/dropdownRaw/dropdownHelper.js +2 -2
  85. package/dist/dropdownRaw/dropdownList.d.ts +3 -2
  86. package/dist/dropdownRaw/dropdownList.js +31 -49
  87. package/dist/dropdownRaw/dropdownRaw.js +34 -13
  88. package/dist/dropdownRaw/stateReducer/stateReducer.d.ts +4 -1
  89. package/dist/dropdownRaw/stateReducer/stateReducer.js +33 -23
  90. package/dist/dropdownRaw/stateReducer/stateReducerHelper.d.ts +1 -2
  91. package/dist/dropdownRaw/stateReducer/stateReducerHelper.js +8 -13
  92. package/dist/dropdownRaw/types.d.ts +20 -0
  93. package/dist/feedbackContainer/feedbackContainer.js +17 -7
  94. package/dist/feedbackContainer/hooks/useFeedbackAlert.d.ts +0 -1
  95. package/dist/feedbackContainer/hooks/useFeedbackToast.d.ts +0 -1
  96. package/dist/filters/components/filtersDropdown.js +2 -2
  97. package/dist/filters/components/filtersItem.d.ts +2 -2
  98. package/dist/filters/components/filtersSearchList.d.ts +0 -1
  99. package/dist/filters/components/filtersSelect.d.ts +0 -1
  100. package/dist/filters/components/filtersSelectCompact.d.ts +0 -1
  101. package/dist/filters/components/filtersSelectListItem.d.ts +0 -1
  102. package/dist/filters/components/filtersSelectUnfoldingPill.d.ts +0 -1
  103. package/dist/filters/components/filtersSidePanelItem.js +17 -7
  104. package/dist/filters/filtersHelper.d.ts +1 -1
  105. package/dist/filters/filtersHelper.js +5 -5
  106. package/dist/filters/filtersHooks.d.ts +0 -1
  107. package/dist/filtersBar/components/filtersBarDropdownWithCheckbox/filtersBarDropdownWithCheckbox.js +1 -1
  108. package/dist/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +2 -2
  109. package/dist/filtersBar/filtersBar.js +2 -2
  110. package/dist/filtersBar/filtersBarActions/filtersBarActions.d.ts +0 -1
  111. package/dist/filtersBar/filtersBarInterfaces.d.ts +0 -1
  112. package/dist/filtersBar/filtersBarReducer.js +2 -2
  113. package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelDropdownWithCheckbox/filtersBarSidePanelDropdownWithCheckbox.d.ts +4 -10
  114. package/dist/filtersBar/filtersBarSidePanel/sidePanelReducer.js +2 -2
  115. package/dist/filtersBar/utils/getNumberOfChangedFilters.js +1 -2
  116. package/dist/footerButtons/footerButtons.js +17 -7
  117. package/dist/formField/components/formFieldAdditionalInfo.d.ts +0 -1
  118. package/dist/formField/components/formFieldCounter.d.ts +0 -1
  119. package/dist/formField/components/formFieldLoading.d.ts +0 -1
  120. package/dist/formField/components/formFieldSkeleton.d.ts +0 -1
  121. package/dist/formField/components/formFieldWithLabel.d.ts +0 -1
  122. package/dist/formField/components/formFieldWithoutLabel.d.ts +0 -1
  123. package/dist/formField/formField.d.ts +1 -1
  124. package/dist/formField/hooks/useBanner.d.ts +0 -1
  125. package/dist/formField/hooks/useDisabled.d.ts +1 -1
  126. package/dist/formGroup/components/customRow/customRow.d.ts +0 -1
  127. package/dist/formGroup/formGroup.js +17 -7
  128. package/dist/formGroup/hooks/listHooks/useStateToElements.d.ts +0 -1
  129. package/dist/formGroup/hooks/listHooks/useStateToElements.js +1 -1
  130. package/dist/formGroup/utils/formGroupProvider.d.ts +0 -1
  131. package/dist/formGroup/utils/isFormLabel.d.ts +1 -1
  132. package/dist/formGroupItem/formGroupItem.d.ts +0 -1
  133. package/dist/formLayout/components/layoutColumn/layoutColum.d.ts +0 -1
  134. package/dist/formLayout/hooks/useFormButtons.d.ts +1 -1
  135. package/dist/formLayout/types.d.ts +0 -1
  136. package/dist/formLayout/utils/attachHeadings.d.ts +1 -1
  137. package/dist/formLayout/utils/attachSeparators.d.ts +0 -1
  138. package/dist/formLayout/utils/getChildrenWithCustomColumns.d.ts +1 -2
  139. package/dist/formLayout/utils/getChildrenWithCustomColumns.js +2 -2
  140. package/dist/formLayout/utils/getFieldLabel.js +5 -5
  141. package/dist/formSection/components/actions.d.ts +0 -1
  142. package/dist/formSection/components/additional.d.ts +0 -1
  143. package/dist/formSection/utils/isFormSection.d.ts +2 -4
  144. package/dist/formStepper/components/formStepRaw.d.ts +0 -1
  145. package/dist/formStepper/formStepper.d.ts +0 -1
  146. package/dist/formStepper/formStepper.js +5 -5
  147. package/dist/formStepperButtons/formStepperButtons.js +3 -3
  148. package/dist/gridLayout/hooks/useStretch.js +1 -1
  149. package/dist/gridLayout/utils/convertStateToClasses.js +1 -2
  150. package/dist/gridLayout/utils/gridLayoutProvider.d.ts +0 -1
  151. package/dist/gridLayout/utils/gridLayoutProvider.js +1 -1
  152. package/dist/gridLayout/utils/isGridItem.d.ts +1 -1
  153. package/dist/groupsFilter/groupsHelper.d.ts +5 -5
  154. package/dist/groupsFilterRaw/groupsFilterHelper.js +16 -16
  155. package/dist/groupsFilterRaw/groupsHelper.d.ts +1 -1
  156. package/dist/groupsFilterRaw/groupsHelper.js +4 -4
  157. package/dist/groupsFilterRaw/stateReducer/stateReducer.d.ts +1 -1
  158. package/dist/groupsFilterRaw/stateReducer/stateReducer.js +2 -2
  159. package/dist/groupsFilterRaw/testData.js +3 -4
  160. package/dist/groupsFilterRaw/uiStateReducer/uiStateReducer.js +2 -2
  161. package/dist/header/components/collapsedItemsControl/utils/handleCustomMenuWrapper.js +5 -0
  162. package/dist/header/components/mobileFilterControl/mobileFilterControl.d.ts +0 -1
  163. package/dist/header/components/mobileSearchControl/mobileSearchControl.d.ts +0 -1
  164. package/dist/header/header.js +17 -7
  165. package/dist/header/headerButton.d.ts +0 -1
  166. package/dist/header/headerContext.d.ts +1 -2
  167. package/dist/header/headerHelpers.d.ts +5 -5
  168. package/dist/header/headerHelpers.js +17 -7
  169. package/dist/header/hooks/useNonFittingElements.d.ts +3 -4
  170. package/dist/headerTitle/headerTitle.d.ts +0 -1
  171. package/dist/icons/iconAce.d.ts +3 -0
  172. package/dist/icons/iconAce.js +12 -0
  173. package/dist/icons/iconBreak.d.ts +3 -0
  174. package/dist/icons/iconBreak.js +12 -0
  175. package/dist/icons/iconChevronStepper.d.ts +3 -0
  176. package/dist/icons/iconChevronStepper.js +12 -0
  177. package/dist/icons/iconPotato.d.ts +3 -0
  178. package/dist/icons/iconPotato.js +12 -0
  179. package/dist/icons/iconToggleLarge.d.ts +3 -0
  180. package/dist/icons/iconToggleLarge.js +12 -0
  181. package/dist/icons/iconToggleSmall.d.ts +3 -0
  182. package/dist/icons/iconToggleSmall.js +12 -0
  183. package/dist/icons/iconTrendNeutral.d.ts +3 -0
  184. package/dist/icons/iconTrendNeutral.js +12 -0
  185. package/dist/icons/iconTruck.d.ts +3 -0
  186. package/dist/icons/iconTruck.js +12 -0
  187. package/dist/index.css +219 -169
  188. package/dist/index.d.ts +8 -0
  189. package/dist/index.js +30 -13
  190. package/dist/layout/layout.d.ts +2 -1
  191. package/dist/layout/layout.js +17 -7
  192. package/dist/layout/layoutBanner.d.ts +0 -1
  193. package/dist/lineChart/lineChart.d.ts +1 -0
  194. package/dist/lineChart/lineChart.js +135 -70
  195. package/dist/lineChartMini/lineChartMini.d.ts +1 -0
  196. package/dist/lineChartMini/lineChartMini.js +141 -73
  197. package/dist/list/itemData/itemData.d.ts +2 -1
  198. package/dist/list/itemData/itemDataInternal.d.ts +2 -1
  199. package/dist/list/list.d.ts +0 -1
  200. package/dist/list/utils/changeOrder.js +1 -2
  201. package/dist/list/utils/isDataListitem.d.ts +1 -1
  202. package/dist/list/viewportProvider/viewportContext.d.ts +0 -1
  203. package/dist/menu/components/controlledMenuList/controlledMenuList.d.ts +2 -4
  204. package/dist/menu/components/controlledMenuList/controlledMenuList.js +3 -1
  205. package/dist/menu/components/createControlledMenuList.js +1 -2
  206. package/dist/menu/components/createMenuItem.js +1 -2
  207. package/dist/menu/contexts/usePathContext.js +1 -2
  208. package/dist/menu/utils/buildMenuContent.js +1 -2
  209. package/dist/menu/utils/findPrevFocusable.js +1 -2
  210. package/dist/menu/utils/useDisplayContent.d.ts +21 -0
  211. package/dist/menu/utils/useDisplayContent.js +35 -0
  212. package/dist/menu/utils/useMenuItemKeyboardNav.js +1 -2
  213. package/dist/miniTabs/miniTabsHelper.js +17 -7
  214. package/dist/mobileSheet/components/mobileSheetTitle.d.ts +0 -1
  215. package/dist/modal/modal.js +17 -7
  216. package/dist/nav/context/nav.context.d.ts +0 -1
  217. package/dist/nav/navFooter/navEditFooter/navEditFooter.d.ts +0 -1
  218. package/dist/nav/navFooter/navFooter.d.ts +1 -1
  219. package/dist/nav/navFooter/navFooterAction/navFooterAction.d.ts +2 -1
  220. package/dist/nav/navFooter/navFooterAction/navFooterAction.js +3 -1
  221. package/dist/nav/navItem/navItem.d.ts +2 -0
  222. package/dist/nav/navItem/navItem.js +56 -47
  223. package/dist/nav/navItem/navItemContent.d.ts +19 -0
  224. package/dist/nav/navItem/navItemContent.js +21 -0
  225. package/dist/nav/navItem/navItemType.d.ts +7 -0
  226. package/dist/nav/navItem/navItemType.js +9 -0
  227. package/dist/nav/utils/navUtils.d.ts +2 -4
  228. package/dist/nav/utils/navUtils.js +2 -2
  229. package/dist/overview/overview.d.ts +0 -1
  230. package/dist/pageHeader/pageHeader.d.ts +1 -1
  231. package/dist/pageHeader/pageHeaderButton.d.ts +0 -1
  232. package/dist/pageHeader/pageHeaderHelpers.d.ts +1 -1
  233. package/dist/pageHeader/pageHeaderMenu.d.ts +0 -1
  234. package/dist/pagination/paginationArrow.d.ts +0 -1
  235. package/dist/pill/interfaces/pill.interface.d.ts +0 -1
  236. package/dist/pillBox/components/pillBoxItem.d.ts +1 -2
  237. package/dist/popup/popup.js +17 -7
  238. package/dist/progressIndicator/progressIndicator.d.ts +39 -0
  239. package/dist/progressIndicator/progressIndicator.js +30 -0
  240. package/dist/progressIndicator/progressIndicatorUtils.d.ts +12 -0
  241. package/dist/progressIndicator/progressIndicatorUtils.js +30 -0
  242. package/dist/radioGroupRaw/radioGroupRaw.js +17 -7
  243. package/dist/radioGroupRaw/types.d.ts +0 -1
  244. package/dist/react-chartjs/dateFns/dateFns.js +10 -11
  245. package/dist/react-chartjs/utils.d.ts +3 -3
  246. package/dist/react-chartjs/utils.js +8 -9
  247. package/dist/searchInputRaw/searchInputRaw.js +17 -7
  248. package/dist/searchInputRaw/types.d.ts +0 -1
  249. package/dist/selectField/selectField.d.ts +2 -3
  250. package/dist/selectList/selectList.d.ts +0 -1
  251. package/dist/selectRaw/hooks/usePopupWidth.js +17 -7
  252. package/dist/selectRaw/selectRaw.js +20 -7
  253. package/dist/sidePanel/sidePanelCell/sidePanelCell.d.ts +0 -1
  254. package/dist/summaries/utils/splitIntoPairs.js +1 -2
  255. package/dist/summaryTile/summaryTile.js +17 -7
  256. package/dist/summaryTile/summaryTileTrigger.js +17 -7
  257. package/dist/table/actions/actionsMenu.d.ts +0 -1
  258. package/dist/table/children/useTableChildren.d.ts +7 -7
  259. package/dist/table/detailPanel/interfaces.d.ts +0 -1
  260. package/dist/table/flexible/columnsList.js +1 -2
  261. package/dist/table/loading/useLoading.d.ts +10 -10
  262. package/dist/table/nested/nestedData.d.ts +3 -1
  263. package/dist/table/nested/useNestedRows.d.ts +2 -2
  264. package/dist/table/selectable/selectableHeader.d.ts +2 -1
  265. package/dist/table/selectable/selectableHeader.js +4 -3
  266. package/dist/table/selectable/useSelectableRows.d.ts +1 -1
  267. package/dist/table/selectable/useSelectableRows.js +7 -4
  268. package/dist/table/table.d.ts +16 -1
  269. package/dist/table/table.js +101 -5
  270. package/dist/tag/tag.d.ts +19 -0
  271. package/dist/tag/tag.js +14 -0
  272. package/dist/textIconButton/textIconButton.js +17 -7
  273. package/dist/toastRaw/toastRaw.d.ts +1 -1
  274. package/dist/toastRaw/toastRaw.js +3 -1
  275. package/dist/toggleButtonRaw/toggleButtonRaw.js +17 -7
  276. package/dist/toggleButtonRaw/types.d.ts +0 -1
  277. package/dist/tooltip/tooltip.js +17 -7
  278. package/dist/tooltipInfo/tooltipInfo.d.ts +0 -1
  279. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  280. package/dist/utils/compareElementsUtils/isArraysEqualDeeply.js +1 -2
  281. package/dist/utils/compareElementsUtils/isElementsEqual.js +2 -2
  282. package/dist/utils/escapeHtml.js +1 -2
  283. package/dist/utils/localization/directionContext.d.ts +0 -1
  284. package/dist/utils/localization/languageContext.d.ts +0 -1
  285. package/dist/utils/localization/translations/en.json +12 -1
  286. package/dist/utils/theme/themeContext.d.ts +0 -1
  287. package/dist/utils/topWindow/topWindowContext.d.ts +0 -1
  288. package/dist/utils/useFadeComponent.d.ts +0 -1
  289. package/dist/utils/userFormat/userFormatContext.d.ts +0 -1
  290. package/dist/waiting/waiting.d.ts +2 -1
  291. package/dist/waiting/waiting.js +23 -6
  292. package/esm/alert/banner.d.ts +2 -3
  293. package/esm/alert/hooks/useAlertState.d.ts +0 -1
  294. package/esm/banner/bannerMultipLine.d.ts +0 -1
  295. package/esm/banner/bannerSingleLine.d.ts +0 -1
  296. package/esm/banner/utils/isSummaryErrorElement.d.ts +1 -2
  297. package/esm/card/components/content.d.ts +0 -1
  298. package/esm/chart/accessibleChart/accessibleChart.js +1 -1
  299. package/esm/chart/accessibleChart/accessibleChartNarrative.d.ts +1 -1
  300. package/esm/chart/accessibleChart/accessibleChartNarrative.js +8 -2
  301. package/esm/chart/accessibleChart/generatePieNarrative.d.ts +7 -0
  302. package/esm/chart/accessibleChart/generatePieNarrative.js +167 -0
  303. package/esm/chart/accessibleChart/interfaces.d.ts +1 -0
  304. package/esm/chart/barChart/getDefaultOptions.js +5 -6
  305. package/esm/chart/barChart.js +147 -50
  306. package/esm/chart/interfaces.d.ts +0 -1
  307. package/esm/chart/lineChart/getDefaultOptions.js +5 -6
  308. package/esm/chart/lineChart/useChartTicks.d.ts +0 -1
  309. package/esm/chart/lineChart/useSummary.d.ts +7 -8
  310. package/esm/chart/lineChart.js +162 -59
  311. package/esm/chart/pieChart.js +169 -76
  312. package/esm/chart/plugins/linePlugin/linePlugin.js +29 -7
  313. package/esm/chart/utils/convertDates.d.ts +1 -1
  314. package/esm/chart/utils/getNiceAxisRange.d.ts +21 -0
  315. package/esm/chart/utils/getNiceAxisRange.js +72 -0
  316. package/esm/chart/utils/getRange.js +2 -2
  317. package/esm/chart/utils/getYAxisMeta.d.ts +2 -5
  318. package/esm/chart/utils/getYAxisMeta.js +17 -2
  319. package/esm/chart/utils/getYAxisTickCount.d.ts +15 -0
  320. package/esm/chart/utils/getYAxisTickCount.js +15 -0
  321. package/esm/checkboxListWithAction/checkboxListWithAction.d.ts +0 -1
  322. package/esm/chip/chip.d.ts +0 -1
  323. package/esm/chip/utils/useChip.d.ts +0 -1
  324. package/esm/commonHelpers/HOC/reducerLogger/reducerLogger.d.ts +1 -1
  325. package/esm/commonHelpers/arrowNavigation/components/arrowButton/arrowButton.d.ts +0 -1
  326. package/esm/commonHelpers/arrowNavigation/hooks/useHoldOnScroll.d.ts +0 -1
  327. package/esm/commonHelpers/hooks/breakpoints.d.ts +4 -0
  328. package/esm/commonHelpers/hooks/breakpoints.js +4 -0
  329. package/esm/commonHelpers/hooks/fetch.reducer.d.ts +1 -1
  330. package/esm/commonHelpers/hooks/useDebouncedMemo.d.ts +0 -1
  331. package/esm/commonHelpers/hooks/useDeviceType.js +2 -2
  332. package/esm/commonHelpers/hooks/useEscape.d.ts +1 -1
  333. package/esm/commonHelpers/hooks/useGridSize.d.ts +0 -1
  334. package/esm/commonHelpers/hooks/useMobileOrTablet.d.ts +1 -0
  335. package/esm/commonHelpers/hooks/useMobileOrTablet.js +17 -0
  336. package/esm/commonHelpers/hooks/usePillSize.d.ts +0 -1
  337. package/esm/commonHelpers/hooks/useTablet.js +17 -0
  338. package/esm/dataFeed/dataFeed.d.ts +1 -1
  339. package/esm/dataFeed/dataFeed.js +2 -2
  340. package/esm/dataFeed/dataFeedCell/dataFeedCell.d.ts +3 -1
  341. package/esm/dataFeed/dataFeedColumnsItems.d.ts +2 -2
  342. package/esm/dataGrid/cell/cell.d.ts +3 -1
  343. package/esm/dataGrid/columns/actionsColumn/actionsColumn.d.ts +3 -3
  344. package/esm/dataGrid/dataGrid.d.ts +13 -1
  345. package/esm/dataGrid/dataGrid.js +48 -3
  346. package/esm/dataGrid/emptySearchList/emptySearchList.d.ts +0 -1
  347. package/esm/dataGrid/row/row.d.ts +3 -1
  348. package/esm/dataGrid/withActions/withActions.d.ts +1 -1
  349. package/esm/dataGrid/withFlexibleColumns/withFlexibleColumns.d.ts +1 -1
  350. package/esm/dataGrid/withLoading/withLoading.d.ts +1 -1
  351. package/esm/dataGrid/withSelectableRows/withLimitedSelectableRows.d.ts +1 -1
  352. package/esm/dataGrid/withSelectableRows/withSelectableRows.d.ts +1 -1
  353. package/esm/dataGrid/withSortableColumns/withSortableColumns.d.ts +1 -1
  354. package/esm/dialog/dialog.d.ts +0 -1
  355. package/esm/dropdown/dropdown.js +1 -1
  356. package/esm/dropdown/useDropdownState.d.ts +0 -1
  357. package/esm/dropdownRaw/dropdownList.d.ts +3 -2
  358. package/esm/dropdownRaw/dropdownList.js +14 -42
  359. package/esm/dropdownRaw/dropdownRaw.js +35 -14
  360. package/esm/dropdownRaw/stateReducer/stateReducer.d.ts +4 -1
  361. package/esm/dropdownRaw/stateReducer/stateReducer.js +32 -22
  362. package/esm/dropdownRaw/stateReducer/stateReducerHelper.d.ts +1 -2
  363. package/esm/dropdownRaw/stateReducer/stateReducerHelper.js +5 -10
  364. package/esm/dropdownRaw/types.d.ts +20 -0
  365. package/esm/feedbackContainer/hooks/useFeedbackAlert.d.ts +0 -1
  366. package/esm/feedbackContainer/hooks/useFeedbackToast.d.ts +0 -1
  367. package/esm/filters/components/filtersItem.d.ts +2 -2
  368. package/esm/filters/components/filtersSearchList.d.ts +0 -1
  369. package/esm/filters/components/filtersSelect.d.ts +0 -1
  370. package/esm/filters/components/filtersSelectCompact.d.ts +0 -1
  371. package/esm/filters/components/filtersSelectListItem.d.ts +0 -1
  372. package/esm/filters/components/filtersSelectUnfoldingPill.d.ts +0 -1
  373. package/esm/filters/filtersHelper.d.ts +1 -1
  374. package/esm/filters/filtersHooks.d.ts +0 -1
  375. package/esm/filtersBar/components/filtersBarDropdownWithCheckbox/filtersBarDropdownWithCheckbox.js +1 -1
  376. package/esm/filtersBar/filtersBar.js +2 -2
  377. package/esm/filtersBar/filtersBarActions/filtersBarActions.d.ts +0 -1
  378. package/esm/filtersBar/filtersBarInterfaces.d.ts +0 -1
  379. package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelDropdownWithCheckbox/filtersBarSidePanelDropdownWithCheckbox.d.ts +4 -10
  380. package/esm/formField/components/formFieldAdditionalInfo.d.ts +0 -1
  381. package/esm/formField/components/formFieldCounter.d.ts +0 -1
  382. package/esm/formField/components/formFieldLoading.d.ts +0 -1
  383. package/esm/formField/components/formFieldSkeleton.d.ts +0 -1
  384. package/esm/formField/components/formFieldWithLabel.d.ts +0 -1
  385. package/esm/formField/components/formFieldWithoutLabel.d.ts +0 -1
  386. package/esm/formField/formField.d.ts +1 -1
  387. package/esm/formField/hooks/useBanner.d.ts +0 -1
  388. package/esm/formField/hooks/useDisabled.d.ts +1 -1
  389. package/esm/formGroup/components/customRow/customRow.d.ts +0 -1
  390. package/esm/formGroup/hooks/listHooks/useStateToElements.d.ts +0 -1
  391. package/esm/formGroup/hooks/listHooks/useStateToElements.js +1 -1
  392. package/esm/formGroup/utils/formGroupProvider.d.ts +0 -1
  393. package/esm/formGroup/utils/isFormLabel.d.ts +1 -1
  394. package/esm/formGroupItem/formGroupItem.d.ts +0 -1
  395. package/esm/formLayout/components/layoutColumn/layoutColum.d.ts +0 -1
  396. package/esm/formLayout/hooks/useFormButtons.d.ts +1 -1
  397. package/esm/formLayout/types.d.ts +0 -1
  398. package/esm/formLayout/utils/attachHeadings.d.ts +1 -1
  399. package/esm/formLayout/utils/attachSeparators.d.ts +0 -1
  400. package/esm/formLayout/utils/getChildrenWithCustomColumns.d.ts +1 -2
  401. package/esm/formLayout/utils/getChildrenWithCustomColumns.js +2 -2
  402. package/esm/formLayout/utils/getFieldLabel.js +5 -5
  403. package/esm/formSection/components/actions.d.ts +0 -1
  404. package/esm/formSection/components/additional.d.ts +0 -1
  405. package/esm/formSection/utils/isFormSection.d.ts +2 -4
  406. package/esm/formStepper/components/formStepRaw.d.ts +0 -1
  407. package/esm/formStepper/formStepper.d.ts +0 -1
  408. package/esm/formStepper/formStepper.js +5 -5
  409. package/esm/formStepperButtons/formStepperButtons.js +3 -3
  410. package/esm/gridLayout/hooks/useStretch.js +1 -1
  411. package/esm/gridLayout/utils/gridLayoutProvider.d.ts +0 -1
  412. package/esm/gridLayout/utils/gridLayoutProvider.js +1 -1
  413. package/esm/gridLayout/utils/isGridItem.d.ts +1 -1
  414. package/esm/groupsFilter/groupsHelper.d.ts +5 -5
  415. package/esm/groupsFilterRaw/groupsHelper.d.ts +1 -1
  416. package/esm/groupsFilterRaw/stateReducer/stateReducer.d.ts +1 -1
  417. package/esm/groupsFilterRaw/testData.js +1 -2
  418. package/esm/header/components/collapsedItemsControl/utils/handleCustomMenuWrapper.js +5 -0
  419. package/esm/header/components/mobileFilterControl/mobileFilterControl.d.ts +0 -1
  420. package/esm/header/components/mobileSearchControl/mobileSearchControl.d.ts +0 -1
  421. package/esm/header/headerButton.d.ts +0 -1
  422. package/esm/header/headerContext.d.ts +1 -2
  423. package/esm/header/headerHelpers.d.ts +5 -5
  424. package/esm/header/hooks/useNonFittingElements.d.ts +3 -4
  425. package/esm/headerTitle/headerTitle.d.ts +0 -1
  426. package/esm/icons/iconAce.d.ts +3 -0
  427. package/esm/icons/iconAce.js +8 -0
  428. package/esm/icons/iconBreak.d.ts +3 -0
  429. package/esm/icons/iconBreak.js +8 -0
  430. package/esm/icons/iconChevronStepper.d.ts +3 -0
  431. package/esm/icons/iconChevronStepper.js +8 -0
  432. package/esm/icons/iconPotato.d.ts +3 -0
  433. package/esm/icons/iconPotato.js +8 -0
  434. package/esm/icons/iconToggleLarge.d.ts +3 -0
  435. package/esm/icons/iconToggleLarge.js +8 -0
  436. package/esm/icons/iconToggleSmall.d.ts +3 -0
  437. package/esm/icons/iconToggleSmall.js +8 -0
  438. package/esm/icons/iconTrendNeutral.d.ts +3 -0
  439. package/esm/icons/iconTrendNeutral.js +8 -0
  440. package/esm/icons/iconTruck.d.ts +3 -0
  441. package/esm/icons/iconTruck.js +8 -0
  442. package/esm/index.d.ts +8 -0
  443. package/esm/index.js +8 -0
  444. package/esm/layout/layout.d.ts +2 -1
  445. package/esm/layout/layoutBanner.d.ts +0 -1
  446. package/esm/lineChart/lineChart.d.ts +1 -0
  447. package/esm/lineChart/lineChart.js +129 -69
  448. package/esm/lineChartMini/lineChartMini.d.ts +1 -0
  449. package/esm/lineChartMini/lineChartMini.js +136 -73
  450. package/esm/list/itemData/itemData.d.ts +2 -1
  451. package/esm/list/itemData/itemDataInternal.d.ts +2 -1
  452. package/esm/list/list.d.ts +0 -1
  453. package/esm/list/utils/isDataListitem.d.ts +1 -1
  454. package/esm/list/viewportProvider/viewportContext.d.ts +0 -1
  455. package/esm/menu/components/controlledMenuList/controlledMenuList.d.ts +2 -4
  456. package/esm/menu/components/controlledMenuList/controlledMenuList.js +3 -1
  457. package/esm/menu/utils/useDisplayContent.d.ts +21 -0
  458. package/esm/menu/utils/useDisplayContent.js +31 -0
  459. package/esm/mobileSheet/components/mobileSheetTitle.d.ts +0 -1
  460. package/esm/nav/context/nav.context.d.ts +0 -1
  461. package/esm/nav/navFooter/navEditFooter/navEditFooter.d.ts +0 -1
  462. package/esm/nav/navFooter/navFooter.d.ts +1 -1
  463. package/esm/nav/navFooter/navFooterAction/navFooterAction.d.ts +2 -1
  464. package/esm/nav/navFooter/navFooterAction/navFooterAction.js +3 -1
  465. package/esm/nav/navItem/navItem.d.ts +2 -0
  466. package/esm/nav/navItem/navItem.js +57 -48
  467. package/esm/nav/navItem/navItemContent.d.ts +19 -0
  468. package/esm/nav/navItem/navItemContent.js +17 -0
  469. package/esm/nav/navItem/navItemType.d.ts +7 -0
  470. package/esm/nav/navItem/navItemType.js +6 -0
  471. package/esm/nav/utils/navUtils.d.ts +2 -4
  472. package/esm/overview/overview.d.ts +0 -1
  473. package/esm/pageHeader/pageHeader.d.ts +1 -1
  474. package/esm/pageHeader/pageHeaderButton.d.ts +0 -1
  475. package/esm/pageHeader/pageHeaderHelpers.d.ts +1 -1
  476. package/esm/pageHeader/pageHeaderMenu.d.ts +0 -1
  477. package/esm/pagination/paginationArrow.d.ts +0 -1
  478. package/esm/pill/interfaces/pill.interface.d.ts +0 -1
  479. package/esm/pillBox/components/pillBoxItem.d.ts +1 -2
  480. package/esm/progressIndicator/progressIndicator.d.ts +39 -0
  481. package/esm/progressIndicator/progressIndicator.js +26 -0
  482. package/esm/progressIndicator/progressIndicatorUtils.d.ts +12 -0
  483. package/esm/progressIndicator/progressIndicatorUtils.js +25 -0
  484. package/esm/radioGroupRaw/types.d.ts +0 -1
  485. package/esm/react-chartjs/utils.d.ts +3 -3
  486. package/esm/searchInputRaw/types.d.ts +0 -1
  487. package/esm/selectField/selectField.d.ts +2 -3
  488. package/esm/selectList/selectList.d.ts +0 -1
  489. package/esm/selectRaw/selectRaw.js +3 -0
  490. package/esm/sidePanel/sidePanelCell/sidePanelCell.d.ts +0 -1
  491. package/esm/table/actions/actionsMenu.d.ts +0 -1
  492. package/esm/table/children/useTableChildren.d.ts +7 -7
  493. package/esm/table/detailPanel/interfaces.d.ts +0 -1
  494. package/esm/table/loading/useLoading.d.ts +10 -10
  495. package/esm/table/nested/nestedData.d.ts +3 -1
  496. package/esm/table/nested/useNestedRows.d.ts +2 -2
  497. package/esm/table/selectable/selectableHeader.d.ts +2 -1
  498. package/esm/table/selectable/selectableHeader.js +4 -3
  499. package/esm/table/selectable/useSelectableRows.d.ts +1 -1
  500. package/esm/table/selectable/useSelectableRows.js +7 -4
  501. package/esm/table/table.d.ts +16 -1
  502. package/esm/table/table.js +102 -6
  503. package/esm/tag/tag.d.ts +19 -0
  504. package/esm/tag/tag.js +10 -0
  505. package/esm/testHelpers/geotab-axe/index.d.ts +0 -1
  506. package/esm/toastRaw/toastRaw.d.ts +1 -1
  507. package/esm/toastRaw/toastRaw.js +3 -1
  508. package/esm/toggleButtonRaw/types.d.ts +0 -1
  509. package/esm/tooltipInfo/tooltipInfo.d.ts +0 -1
  510. package/esm/tsconfig.esm.tsbuildinfo +1 -0
  511. package/esm/utils/localization/directionContext.d.ts +0 -1
  512. package/esm/utils/localization/languageContext.d.ts +0 -1
  513. package/esm/utils/localization/translations/en.json +12 -1
  514. package/esm/utils/theme/themeContext.d.ts +0 -1
  515. package/esm/utils/topWindow/topWindowContext.d.ts +0 -1
  516. package/esm/utils/useFadeComponent.d.ts +0 -1
  517. package/esm/utils/userFormat/userFormatContext.d.ts +0 -1
  518. package/esm/waiting/waiting.d.ts +2 -1
  519. package/esm/waiting/waiting.js +24 -7
  520. package/package.json +13 -6
  521. package/esm/gridLayout/hooks/useTablet.js +0 -20
  522. /package/dist/{gridLayout → commonHelpers}/hooks/useTablet.d.ts +0 -0
  523. /package/esm/{gridLayout → commonHelpers}/hooks/useTablet.d.ts +0 -0
@@ -0,0 +1,17 @@
1
+ import { useCallback, useContext, useMemo, useState } from "react";
2
+ import { topWindowContext } from "../../utils/topWindow/topWindowContext";
3
+ import { getParentWindow } from "../../utils/getParentWindow";
4
+ import { useResize } from "./useResize";
5
+ import { zen } from "../../utils/zen";
6
+ import { Breakpoints } from "./breakpoints";
7
+ const isMobileOrTabletUtil = (width) => width <= Breakpoints.TabletMaxWidth;
8
+ export const useMobileOrTablet = () => {
9
+ const { topWindow } = useContext(topWindowContext);
10
+ const win = useMemo(() => topWindow || getParentWindow(zen), [topWindow]);
11
+ const [value, setValue] = useState(isMobileOrTabletUtil(win.innerWidth));
12
+ const onResize = useCallback(() => {
13
+ setValue(isMobileOrTabletUtil(win.innerWidth));
14
+ }, [win]);
15
+ useResize(onResize, true);
16
+ return value;
17
+ };
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { IPill } from "../../pill/interfaces/pill.interface";
3
2
  import { IPillNonActionable } from "../../pill/interfaces/pillNonActionable.interface";
4
3
  interface IPillSize extends Pick<IPill, "size">, Pick<IPillNonActionable, "onClose"> {
@@ -0,0 +1,17 @@
1
+ import { useCallback, useContext, useMemo, useState } from "react";
2
+ import { topWindowContext } from "../../utils/topWindow/topWindowContext";
3
+ import { getParentWindow } from "../../utils/getParentWindow";
4
+ import { useResize } from "./useResize";
5
+ import { zen } from "../../utils/zen";
6
+ import { Breakpoints } from "./breakpoints";
7
+ const isTabletUtil = (width) => width > Breakpoints.MobileMaxWidth && width <= Breakpoints.TabletMaxWidth;
8
+ export const useTablet = () => {
9
+ const { topWindow } = useContext(topWindowContext);
10
+ const win = useMemo(() => topWindow || getParentWindow(zen), [topWindow]);
11
+ const [isTablet, setIsTablet] = useState(isTabletUtil(win.innerWidth));
12
+ const onResize = useCallback(() => {
13
+ setIsTablet(isTabletUtil(win.innerWidth));
14
+ }, [win]);
15
+ useResize(onResize, true);
16
+ return isTablet;
17
+ };
@@ -30,7 +30,7 @@ export interface IDataFeed<T, N = T> extends IDataGrid<T, N> {
30
30
  }
31
31
  export declare const EmptyList: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
32
32
  export declare const Footer: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
33
- declare const DataFeedInner: <T extends IRowEntity<N>, N extends IEntityWithId>({ entities, columns, feedWrappers, className, expanded, options, description, children, actions, actionsAsync, primaryActions, itemsPerPage, rowClassName, expandedRows, onExpandedChange, activePage, onClick }: IDataFeed<T, N>, ref: ForwardedRef<HTMLElement>) => import("react/jsx-runtime").JSX.Element;
33
+ declare const DataFeedInner: <T extends IRowEntity<N>, N extends IEntityWithId>({ entities, columns, feedWrappers, className, expanded, options, description, children, actions, actionsAsync, primaryActions, itemsPerPage, rowClassName, expandedRows, onExpandedChange, activePage, onClick, isLoading }: IDataFeed<T, N>, ref: ForwardedRef<HTMLElement>) => import("react/jsx-runtime").JSX.Element;
34
34
  export interface IDataFeedStaticProps {
35
35
  EmptyList: typeof EmptyList;
36
36
  Footer: typeof Footer;
@@ -20,7 +20,7 @@ const checkCloseToTheEnd = (feedContainerElt) => {
20
20
  return distanceToTheBottom < endOfFeedThreshold;
21
21
  };
22
22
  const FIRST_RENDERED_ROWS = 50;
23
- const DataFeedInner = ({ entities, columns, feedWrappers, className, expanded, options, description, children, actions, actionsAsync, primaryActions, itemsPerPage = 1000, rowClassName, expandedRows, onExpandedChange, activePage, onClick }, ref) => {
23
+ const DataFeedInner = ({ entities, columns, feedWrappers, className, expanded, options, description, children, actions, actionsAsync, primaryActions, itemsPerPage = 1000, rowClassName, expandedRows, onExpandedChange, activePage, onClick, isLoading }, ref) => {
24
24
  const [pages, setPages] = useState(1);
25
25
  const data = useMemo(() => entities.slice(0, itemsPerPage * pages), [entities, itemsPerPage, pages]);
26
26
  const initialVisibleRows = useMemo(() => data.slice(0, FIRST_RENDERED_ROWS).map(r => r.id), [data]);
@@ -141,7 +141,7 @@ const DataFeedInner = ({ entities, columns, feedWrappers, className, expanded, o
141
141
  onExpandedChange,
142
142
  onClick
143
143
  ]);
144
- return (_jsx("div", { className: "zen-data-grid-wrapper", children: _jsxs("div", { className: classNames(["zen-data-grid", className || ""]), ref: feedRef, onScroll: handleScroll, children: [_jsx("div", { role: "feed", className: "zen-data-grid__feed zen-data-feed", "aria-label": description, "aria-busy": "false", children: feedItems }), emptyList && data.length === 0 ? emptyList : null, footer] }) }));
144
+ return (_jsx("div", { className: "zen-data-grid-wrapper", children: _jsxs("div", { className: classNames(["zen-data-grid", className || ""]), ref: feedRef, onScroll: handleScroll, children: [_jsx("div", { role: "feed", className: "zen-data-grid__feed zen-data-feed", "aria-label": description, "aria-busy": !!isLoading, children: feedItems }), emptyList && data.length === 0 ? emptyList : null, footer] }) }));
145
145
  };
146
146
  const DataFeed = forwardRef(DataFeedInner);
147
147
  DataFeed.EmptyList = EmptyList;
@@ -15,4 +15,6 @@ export interface IDataFeedCell<T extends object> extends IZenComponentProps {
15
15
  isNested: boolean;
16
16
  onClick?: () => void;
17
17
  }
18
- export declare const DataFeedCell: <T extends object>({ limited, visibleOnHover, isVisible, title, render, renderWrappers, renderPlaceholder, defaultValue, entity, isNested }: IDataFeedCell<T>) => import("react/jsx-runtime").JSX.Element;
18
+ declare const FeedCell: <T extends object>({ limited, visibleOnHover, isVisible, title, render, renderWrappers, renderPlaceholder, defaultValue, entity, isNested }: IDataFeedCell<T>) => import("react/jsx-runtime").JSX.Element;
19
+ export declare const DataFeedCell: typeof FeedCell;
20
+ export {};
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { IActionWithId } from "../dataGrid/columns/actionsColumn/actionsColumn";
3
2
  import { IListColumnStrict } from "../dataGrid/extensions/toBasicColumn";
4
3
  import { IRowEntity } from "../dataGrid/row/row";
@@ -25,5 +24,6 @@ interface IFeedItem<T extends IRowEntity<N>, N extends IEntityWithId> {
25
24
  primaryActions?: IActionWithId<T>[] | ((e: T, isNested: boolean) => IActionWithId<T>[]);
26
25
  onClick?: (id: string) => void;
27
26
  }
28
- export declare const FeedItem: <T extends IRowEntity<N>, N extends IEntityWithId>({ columnsList, feedWrappers, expanded, collapsedColumnsQty, visibleColumns, visibleRows, entity, index, className, isRowExpanded, onExpandedChange, actions, actionsAsync, primaryActions, onClick }: IFeedItem<T, N>) => import("react/jsx-runtime").JSX.Element;
27
+ declare const FeedItemInner: <T extends IRowEntity<N>, N extends IEntityWithId>({ columnsList, feedWrappers, expanded, collapsedColumnsQty, visibleColumns, visibleRows, entity, index, className, isRowExpanded, onExpandedChange, actions, actionsAsync, primaryActions, onClick }: IFeedItem<T, N>) => import("react/jsx-runtime").JSX.Element;
28
+ export declare const FeedItem: typeof FeedItemInner;
29
29
  export {};
@@ -18,4 +18,6 @@ export interface IDataGridCell<T extends IEntityWithId> extends IZenComponentPro
18
18
  onClick?: () => void;
19
19
  isActive?: boolean;
20
20
  }
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;
21
+ declare const Cell: <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;
22
+ export declare const DataGridCell: typeof Cell;
23
+ export {};
@@ -46,8 +46,8 @@ export declare class ActionsColumn<T extends IRowEntity<N>, N extends IEntityWit
46
46
  constructor(actionsOptions: IActionsColumnOptions<T | N>);
47
47
  get options(): IActionsColumnOptions<T | N>;
48
48
  set options(actionsOptions: IActionsColumnOptions<T | N>);
49
- get columnActions(): IActionWithId<N | T> | ((entity: T, isNested: boolean) => import("react").JSX.Element) | undefined;
50
- get columnActionsAsync(): ((entity: T, isNested: boolean) => PromiseLike<import("react").JSX.Element>) | undefined;
51
- get columnPrimaryActions(): IActionWithId<N | T>[] | ((entity: N | T, isNested: boolean) => IAction<T>[]) | undefined;
49
+ get columnActions(): IActionWithId<N | T> | ((entity: T, isNested: boolean) => React.JSX.Element) | undefined;
50
+ get columnActionsAsync(): ((entity: T, isNested: boolean) => PromiseLike<React.JSX.Element>) | undefined;
51
+ get columnPrimaryActions(): IActionWithId<N | T>[] | ((entity: T | N, isNested: boolean) => IAction<T>[]) | undefined;
52
52
  }
53
53
  export {};
@@ -17,6 +17,18 @@ export interface IDataGrid<T, N = T> extends Omit<IZenComponentProps, "children"
17
17
  onExpandedChange?: (id: string, isExpanded: boolean) => void;
18
18
  active?: string | undefined;
19
19
  onClick?: (id: string) => void;
20
+ /**
21
+ * Called when the user scrolls within ~100 px of the grid bottom (once per approach to the bottom).
22
+ * Also fires after each `entities` change while the grid is already near the bottom — this drives
23
+ * viewport-fill on initial load and greedy load-ahead on appends, so it can fire without new scroll
24
+ * input. The caller is responsible for preventing concurrent fetches (e.g. ignore it while `isLoading`).
25
+ */
26
+ onScrollEnd?: () => void;
27
+ /**
28
+ * When true, sets `aria-busy` on the grid `<table>` for assistive technology while a fetch is in
29
+ * flight. Callers should also treat it as the guard signal for `onScrollEnd` (skip re-entrant fetches).
30
+ */
31
+ isLoading?: boolean;
20
32
  }
21
33
  export declare const NOT_INTERACTIVE_MODIFIER = "zen-data-grid--not-interactive";
22
34
  export declare const DRAGGING_MODIFIER = "zen-data-grid--dragging";
@@ -25,7 +37,7 @@ export declare const VERTICAL_SCROLL_MODIFIER = "zen-data-grid--vertical-scroll"
25
37
  export declare const MIN_CELL_WIDTH = 100;
26
38
  export declare const EmptyList: FC<PropsWithChildren>;
27
39
  export declare const Footer: FC<PropsWithChildren>;
28
- declare const DataGridInner: <T extends IRowEntity<N>, N extends IEntityWithId = T>({ entities, columns, className, description, emptyCellTitle, children, rowClassName, expandedRows, onExpandedChange, active, onClick }: IDataGrid<T, N>, ref: ForwardedRef<HTMLElement>) => import("react/jsx-runtime").JSX.Element;
40
+ declare const DataGridInner: <T extends IRowEntity<N>, N extends IEntityWithId = T>({ entities, columns, className, description, emptyCellTitle, children, rowClassName, expandedRows, onExpandedChange, active, onClick, onScrollEnd, isLoading }: IDataGrid<T, N>, ref: ForwardedRef<HTMLElement>) => import("react/jsx-runtime").JSX.Element;
29
41
  export interface IDataGridStaticProps {
30
42
  EmptyList: typeof EmptyList;
31
43
  Footer: typeof Footer;
@@ -69,6 +69,7 @@ export const Footer = ({
69
69
  children: children
70
70
  });
71
71
  const FIRST_RENDERED_ROWS = 100;
72
+ const SCROLL_END_THRESHOLD = 100;
72
73
  const DataGridInner = ({
73
74
  entities,
74
75
  columns,
@@ -80,7 +81,9 @@ const DataGridInner = ({
80
81
  expandedRows,
81
82
  onExpandedChange,
82
83
  active,
83
- onClick
84
+ onClick,
85
+ onScrollEnd,
86
+ isLoading
84
87
  }, ref) => {
85
88
  const {
86
89
  translate
@@ -96,6 +99,8 @@ const DataGridInner = ({
96
99
  const gridRef = useRef(null);
97
100
  const bodyRef = useRef(null);
98
101
  const lazyRenderTimerRef = useRef(0);
102
+ const scrollEndFiredRef = useRef(false);
103
+ const prevEntitiesRef = useRef(entities);
99
104
  const rowsMap = useMemo(() => new Map(entities.map(entity => [entity.id, entity])), [entities]);
100
105
  const emptyList = useMemo(() => Children.toArray(children).find(child => child.type === EmptyList), [children]);
101
106
  const footer = useMemo(() => Children.toArray(children).find(child => child.type === Footer), [children]);
@@ -173,10 +178,48 @@ const DataGridInner = ({
173
178
  setVerticalScrollApplied(scrollTop > 0);
174
179
  }
175
180
  }, [horizontalScrollApplied, setHorizontalScrollApplied, verticalScrollApplied, setVerticalScrollApplied]);
181
+ const checkScrollEnd = useCallback(() => {
182
+ const grid = gridRef.current;
183
+ if (!grid || !onScrollEnd) {
184
+ return;
185
+ }
186
+ // scrollHeight is 0 before layout (or for an empty grid) — nothing to measure yet.
187
+ if (grid.scrollHeight === 0) {
188
+ return;
189
+ }
190
+ const distanceToTheBottom = grid.scrollHeight - grid.scrollTop - grid.clientHeight;
191
+ if (distanceToTheBottom < SCROLL_END_THRESHOLD) {
192
+ if (!scrollEndFiredRef.current) {
193
+ scrollEndFiredRef.current = true;
194
+ onScrollEnd();
195
+ }
196
+ } else {
197
+ scrollEndFiredRef.current = false;
198
+ }
199
+ }, [onScrollEnd]);
176
200
  const handleScroll = useCallback(() => {
177
201
  updateScroll();
178
202
  scheduleLazyRender();
179
- }, [updateScroll, scheduleLazyRender]);
203
+ checkScrollEnd();
204
+ }, [updateScroll, scheduleLazyRender, checkScrollEnd]);
205
+ useEffect(() => {
206
+ // On a data change (load-more append, or a sort/filter that replaces the list):
207
+ // re-arm the once-per-approach guard so a stale "already fired" flag can't suppress the
208
+ // next trigger, then re-check fit. The re-check covers the viewport-fit case: if the new
209
+ // content doesn't fill the viewport there is no scrollbar and no scroll event, so the next
210
+ // page must be requested here. Resize alone intentionally does not run this (see useResize).
211
+ if (prevEntitiesRef.current !== entities) {
212
+ prevEntitiesRef.current = entities;
213
+ scrollEndFiredRef.current = false;
214
+ }
215
+ // Intentionally unconditional: this covers BOTH viewport-fill (new content too short to
216
+ // scroll) AND greedy load-ahead (user parked near the bottom while a page lands, so the
217
+ // next page is requested without further scroll input). Consequence: onScrollEnd is NOT
218
+ // strictly "once per manual approach" — it keeps firing while near the bottom until
219
+ // hasMore is false or the user scrolls away. Callers MUST guard with their own isLoading
220
+ // to avoid concurrent fetches (documented on the onScrollEnd prop).
221
+ checkScrollEnd();
222
+ }, [entities, checkScrollEnd]);
180
223
  const getCellParams = useCallback(columnIndex => {
181
224
  const defaultWidth = listOfDefaultWidthColumns[columnIndex];
182
225
  const minWidth = listOfMinWidthColumns[columnIndex];
@@ -239,7 +282,8 @@ const DataGridInner = ({
239
282
  const body = useMemo(() => entities.map((entity, entityIndex) => renderRow(entity, entityIndex, entities.length)), [entities, renderRow]);
240
283
  const headerContent = useMemo(() => columnsList.map((column, index) => renderHeaderCell(column, index)), [columnsList, renderHeaderCell]);
241
284
  useResize(() => {
242
- handleScroll();
285
+ updateScroll();
286
+ scheduleLazyRender();
243
287
  }, true);
244
288
  const gridClasses = classNames(["zen-data-grid", className, horizontalScrollApplied ? HORIZONTAL_SCROLL_MODIFIER : "", verticalScrollApplied ? VERTICAL_SCROLL_MODIFIER : ""]);
245
289
  return _jsx("div", {
@@ -252,6 +296,7 @@ const DataGridInner = ({
252
296
  children: [_jsxs("table", {
253
297
  className: "zen-data-grid__table",
254
298
  "aria-label": description,
299
+ "aria-busy": !!isLoading,
255
300
  role: isTreeGrid ? "treegrid" : undefined,
256
301
  children: [_jsx("thead", {
257
302
  className: "zen-data-grid__header",
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { IEmptyState } from "../../emptyState/emptyState";
3
2
  export interface IEmptySearchList extends Omit<IEmptyState, "children"> {
4
3
  image?: React.ReactNode;
@@ -20,4 +20,6 @@ export interface IDataGridRow<T extends IRowEntity<N>, N extends IEntityWithId>
20
20
  onClick?: (id: string) => void;
21
21
  }
22
22
  export declare const MIN_CELL_WIDTH = 100;
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;
23
+ declare const Row: <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;
24
+ export declare const DataGridRow: typeof Row;
25
+ export {};
@@ -7,7 +7,7 @@ export interface IActionColumnsProps<T extends IEntityWithId> {
7
7
  columns: IListColumn<T, T>[];
8
8
  ref?: RefObject<HTMLElement | null>;
9
9
  }
10
- export declare const withActions: <T extends IEntityWithId, P extends IDataGrid<T, T>>(DataGridComponent: ComponentType<P>) => {
10
+ export declare const withActions: <T extends IEntityWithId, P extends IDataGrid<T>>(DataGridComponent: ComponentType<P>) => {
11
11
  (props: IActionColumnsProps<T> & P): import("react/jsx-runtime").JSX.Element;
12
12
  displayName: string;
13
13
  };
@@ -23,7 +23,7 @@ export interface IFlexibleColumnsListProps<T> {
23
23
  ref?: RefObject<HTMLElement | null>;
24
24
  }
25
25
  export declare const withFlexibleColumns: {
26
- <T extends IEntityWithId, P extends IDataGrid<T, T>>(DataGridComponent: ComponentType<P>): {
26
+ <T extends IEntityWithId, P extends IDataGrid<T>>(DataGridComponent: ComponentType<P>): {
27
27
  (props: IFlexibleColumnsListProps<T> & P): import("react/jsx-runtime").JSX.Element;
28
28
  displayName: string;
29
29
  };
@@ -19,7 +19,7 @@ export interface IWithLoadingProps<T> {
19
19
  export interface ILoadingEntity extends IEntityWithId {
20
20
  isLoading?: boolean;
21
21
  }
22
- export declare const withLoading: <T extends IEntityWithId, P extends IDataGrid<T, T>>(DataGridComponent: ComponentType<P>) => {
22
+ export declare const withLoading: <T extends IEntityWithId, P extends IDataGrid<T>>(DataGridComponent: ComponentType<P>) => {
23
23
  (props: IWithLoadingProps<T> & Partial<Pick<ISelectableRowsList<T, T>, "selectMode">> & P): import("react/jsx-runtime").JSX.Element;
24
24
  displayName: string;
25
25
  };
@@ -12,7 +12,7 @@ export interface ILimitedSelectableRowsList<T extends IEntityWithId> extends ISe
12
12
  /**
13
13
  * @deprecated Please use withSelectableRows with options checkboxVisible/checkboxDisabled instead
14
14
  */
15
- export declare const withLimitedSelectableRows: <T extends IEntityWithId, P extends IDataGrid<T, T>>(DataGridComponent: ComponentType<P>) => {
15
+ export declare const withLimitedSelectableRows: <T extends IEntityWithId, P extends IDataGrid<T>>(DataGridComponent: ComponentType<P>) => {
16
16
  (props: ILimitedSelectableRowsList<T> & P): import("react/jsx-runtime").JSX.Element;
17
17
  displayName: string;
18
18
  };
@@ -33,7 +33,7 @@ export interface ISelectableRowsList<T, N = T> {
33
33
  ref?: RefObject<HTMLElement | null>;
34
34
  }
35
35
  export declare const getSelections: (selections: ISelectableRowsListSelections | undefined) => Set<string>;
36
- export declare const withSelectableRows: <T extends IEntityWithId, P extends IDataGrid<T, T>>(DataGridComponent: ComponentType<P>) => {
36
+ export declare const withSelectableRows: <T extends IEntityWithId, P extends IDataGrid<T>>(DataGridComponent: ComponentType<P>) => {
37
37
  (props: ISelectableRowsList<T, T> & P): import("react/jsx-runtime").JSX.Element;
38
38
  displayName: string;
39
39
  translations: string[];
@@ -18,7 +18,7 @@ export interface ISortableColumnsListProps<T> {
18
18
  ref?: RefObject<HTMLElement | null>;
19
19
  }
20
20
  export declare const withSortableColumns: {
21
- <T extends IEntityWithId, P extends IDataGrid<T, T>>(DataGridComponent: ComponentType<P>): (props: ISortableColumnsListProps<T> & P) => import("react/jsx-runtime").JSX.Element;
21
+ <T extends IEntityWithId, P extends IDataGrid<T>>(DataGridComponent: ComponentType<P>): (props: ISortableColumnsListProps<T> & P) => import("react/jsx-runtime").JSX.Element;
22
22
  translations: string[];
23
23
  };
24
24
  export {};
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import "./dialog.less";
3
2
  import { DialogContent } from "./dialogContent";
4
3
  export interface IDialog {
@@ -20,4 +20,4 @@ export const Dropdown = (_a) => {
20
20
  var props = __rest(_a, []);
21
21
  return _jsx(DropDownFormField, Object.assign({}, props));
22
22
  };
23
- export const TRANSLATIONS = ["Filter by group", "Open filter", "Clear search", "Select all", "Deselect all", "Clear", "Back", "No data"];
23
+ export const TRANSLATIONS = ["Filter by group", "Open filter", "Clear search", "Select all", "Clear", "Back", "No data"];
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const useDropdownState: (withCheckbox?: boolean, debounceTimeout?: number) => {
3
2
  checked?: boolean | undefined;
4
3
  setChecked?: import("react").Dispatch<import("react").SetStateAction<boolean>> | undefined;
@@ -13,7 +13,8 @@ export interface IDropdownList extends IZenComponentProps {
13
13
  onSelect: (id: string) => void;
14
14
  onSingleSelect: (reset: boolean, selected?: string) => void;
15
15
  backButtonName?: string;
16
- isAllSelected: boolean;
16
+ isSelectAllActive?: boolean;
17
+ shouldBlockItems?: boolean;
17
18
  listData: ICheckboxListWithActionOption[] | ISelectListItem[];
18
19
  isWithFooter: boolean;
19
20
  width?: number;
@@ -39,6 +40,6 @@ interface IDropdownEmptyList extends Pick<IDropdownList, "className" | "width" |
39
40
  hasError: boolean;
40
41
  }
41
42
  export declare const EmptyList: ({ className, width, onClearClick, onApplyClick, onCancelClick, hasApplyButton, isApplyDisabled, isClearButtonDisabled, isWithFooter, hasError }: IDropdownEmptyList) => import("react/jsx-runtime").JSX.Element;
42
- export declare const DropdownList: ({ onBackButtonClick, onSelectAllClick, onClearClick, onApplyClick, onCancelClick, onChange, onSelect, onSingleSelect, listData, isAllSelected, backButtonName, width, minWidth, isSelectAllButtonDisable, hasSelectAllButton, filterName, isMultiselect, hasApplyButton, isApplyDisabled, isClearButtonDisabled, activeValue, forceSelection, isWithFooter, isMobile, handleCheckboxChange, checkboxLabel, isChecked, listElementRef, listId }: IDropdownList) => import("react/jsx-runtime").JSX.Element;
43
+ export declare const DropdownList: ({ onBackButtonClick, onSelectAllClick, onClearClick, onApplyClick, onCancelClick, onChange, onSelect, onSingleSelect, listData, isSelectAllActive, shouldBlockItems, backButtonName, width, minWidth, isSelectAllButtonDisable, hasSelectAllButton, filterName, isMultiselect, hasApplyButton, isApplyDisabled, isClearButtonDisabled, activeValue, forceSelection, isWithFooter, isMobile, handleCheckboxChange, checkboxLabel, isChecked, listElementRef, listId }: IDropdownList) => import("react/jsx-runtime").JSX.Element;
43
44
  export declare const TRANSLATIONS: string[];
44
45
  export {};
@@ -178,39 +178,6 @@ injectString("ka-GE", "Apply", "\u10D2\u10D0\u10DB\u10DD\u10E7\u10D4\u10DC\u10D4
178
178
  injectString("el-GR", "Apply", "\u0395\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE");
179
179
  injectString("et-EE", "Apply", "Rakenda");
180
180
  injectString("bg-BG", "Apply", "\u041F\u0440\u0438\u043B\u0430\u0433\u0430\u043D\u0435");
181
- injectString("cs", "Deselect all", "Zru\u0161it v\xFDb\u011Br v\u0161ech");
182
- injectString("da-DK", "Deselect all", "Frav\xE6lg alle");
183
- injectString("de", "Deselect all", "Auswahl f\xFCr alle aufheben");
184
- injectString("en", "Deselect all", "Deselect all");
185
- injectString("es", "Deselect all", "Deseleccionar todo");
186
- injectString("fi-FI", "Deselect all", "Poista kaikki valinnat");
187
- injectString("fr", "Deselect all", "D\xE9s\xE9lectionner tout");
188
- injectString("fr-FR", "Deselect all", "D\xE9s\xE9lectionner tout");
189
- injectString("hu-HU", "Deselect all", "Ne v\xE1lassz ki semmit.");
190
- injectString("id", "Deselect all", "Batalkan pilih semua");
191
- injectString("it", "Deselect all", "Deselezionare tutto");
192
- injectString("ja", "Deselect all", "\u3059\u3079\u3066\u3092\u9078\u629E\u89E3\u9664");
193
- injectString("ko-KR", "Deselect all", "\uBAA8\uB450 \uC120\uD0DD \uCDE8\uC18C");
194
- injectString("ms", "Deselect all", "Nyahpilih semua");
195
- injectString("nb-NO", "Deselect all", "Fjern alle valg");
196
- injectString("nl", "Deselect all", "Alles deselecteren");
197
- injectString("pl", "Deselect all", "Usu\u0144 wyb\xF3r wszystkich");
198
- injectString("pt-BR", "Deselect all", "Desmarcar tudo");
199
- injectString("pt-PT", "Deselect all", "Desmarcar tudo");
200
- injectString("sk-SK", "Deselect all", "Zru\u0161 v\xFDber v\u0161etk\xFDch.");
201
- injectString("sv", "Deselect all", "Avmarkera alla");
202
- injectString("th", "Deselect all", "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01\u0E01\u0E32\u0E23\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14");
203
- injectString("tr", "Deselect all", "T\xFCm\xFCn\xFCn se\xE7imini iptal et");
204
- injectString("zh-Hans", "Deselect all", "\u53D6\u6D88\u5168\u9009");
205
- injectString("zh-TW", "Deselect all", "\u53D6\u6D88\u5168\u9078");
206
- injectString("ro-RO", "Deselect all", "Deselecta\u021Bi tot");
207
- injectString("ar", "Deselect all", "\u0625\u0644\u063A\u0627\u0621 \u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644");
208
- injectString("lt-LT", "Deselect all", "At\u017Eym\u0117ti visus");
209
- injectString("lv-LV", "Deselect all", "Atcelt visas atlases");
210
- injectString("ka-GE", "Deselect all", "\u10E7\u10D5\u10D4\u10DA\u10D0\u10E1 \u10DB\u10DD\u10EE\u10E1\u10DC\u10D0");
211
- injectString("el-GR", "Deselect all", "\u039A\u03B1\u03C4\u03AC\u03C1\u03B3\u03B7\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03CE\u03BD");
212
- injectString("et-EE", "Deselect all", "T\xFChista k\xF5ik valikud");
213
- injectString("bg-BG", "Deselect all", "\u041F\u0440\u0435\u043C\u0430\u0445\u0432\u0430\u043D\u0435 \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 \u0438\u0437\u0431\u043E\u0440\u0438");
214
181
  injectString("cs", "Select all", "Vybrat v\u0161e");
215
182
  injectString("da-DK", "Select all", "V\xE6lg alle");
216
183
  injectString("de", "Select all", "Alle ausw\xE4hlen");
@@ -373,7 +340,8 @@ export const DropdownList = ({
373
340
  onSelect,
374
341
  onSingleSelect,
375
342
  listData,
376
- isAllSelected,
343
+ isSelectAllActive,
344
+ shouldBlockItems,
377
345
  backButtonName,
378
346
  width,
379
347
  minWidth,
@@ -402,7 +370,7 @@ export const DropdownList = ({
402
370
  const internalListId = useId();
403
371
  const selectListId = listId || internalListId;
404
372
  const handleSelectAllClick = () => {
405
- onSelectAllClick(isAllSelected);
373
+ onSelectAllClick(!!isSelectAllActive);
406
374
  };
407
375
  const handleBackButtonKeyDown = useCallback(event => {
408
376
  if (event.key === "ArrowLeft") {
@@ -430,13 +398,14 @@ export const DropdownList = ({
430
398
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
431
399
  forceSelection ? onSingleSelect(false, newActiveEl || activeValue) : onSingleSelect(false, newActiveEl);
432
400
  }, [activeValue, forceSelection, onSingleSelect]);
433
- const selectButtonLabel = isAllSelected ? translate("Deselect all") : translate("Select all");
434
- const getActionButton = (label, title, icon, isDisabled, clickHandler, size, onKeyDown) => _jsx("button", {
401
+ const selectButtonLabel = translate("Select all");
402
+ const getActionButton = (label, title, icon, isDisabled, clickHandler, size, onKeyDown, isSelected) => _jsx("button", {
435
403
  type: "button",
436
404
  disabled: isDisabled,
437
405
  onClick: clickHandler,
438
406
  onKeyDown: onKeyDown,
439
- className: "zen-dropdown-list__item zen-dropdown-list__item--interactive zen-dropdown-list__action-button zen-dropdown-list__action-button-back",
407
+ "aria-pressed": isSelected,
408
+ className: classNames(["zen-dropdown-list__item zen-dropdown-list__item--interactive zen-dropdown-list__action-button zen-dropdown-list__action-button-back", isSelected ? "zen-dropdown-list__action-button--selected" : ""]),
440
409
  title: title,
441
410
  children: _jsxs(_Fragment, {
442
411
  children: [React.createElement(icon, {
@@ -472,11 +441,14 @@ export const DropdownList = ({
472
441
  });
473
442
  return values;
474
443
  };
444
+ const multiselectOptions = shouldBlockItems ? listData.map(item => Object.assign(Object.assign({}, item), {
445
+ blocked: true
446
+ })) : listData;
475
447
  return _jsx("div", {
476
448
  className: "zen-dropdown-list__elements",
477
449
  ref: listElementRef,
478
450
  children: isMultiselect ? _jsx(CheckboxListWithAction, {
479
- options: listData,
451
+ options: multiselectOptions,
480
452
  label: "",
481
453
  onChange: handleChange,
482
454
  onClick: handleClick
@@ -492,7 +464,7 @@ export const DropdownList = ({
492
464
  value: createValue(listData, activeValue)
493
465
  })
494
466
  });
495
- }, [listElementRef, isMultiselect, listData, handleChange, handleClick, handleSingleChange, translate, selectListId, forceSelection, activeValue]);
467
+ }, [listElementRef, isMultiselect, shouldBlockItems, listData, handleChange, handleClick, handleSingleChange, translate, selectListId, forceSelection, activeValue]);
496
468
  return _jsxs("div", Object.assign({
497
469
  className: classNames(["zen-dropdown-list", driveComponentClass || ""])
498
470
  }, styleWidth, {
@@ -510,7 +482,7 @@ export const DropdownList = ({
510
482
  }) : null, backButtonName ? _jsx("div", {
511
483
  className: "zen-dropdown-list__item-wrapper",
512
484
  children: getActionButton(backButtonName, translate("Back"), IconBackArrow, false, onBackButtonClick, "large", handleBackButtonKeyDown)
513
- }) : null, hasSelectAllButton ? getActionButton(selectButtonLabel, selectButtonLabel, IconCheckRadio, !!isSelectAllButtonDisable, handleSelectAllClick, isDrive ? "huger" : "huge") : null, listDataComponent, isWithFooter ? _jsxs("div", {
485
+ }) : null, hasSelectAllButton ? getActionButton(selectButtonLabel, selectButtonLabel, IconCheckRadio, !!isSelectAllButtonDisable, handleSelectAllClick, isDrive ? "huger" : "huge", undefined, isSelectAllActive) : null, listDataComponent, isWithFooter ? _jsxs("div", {
514
486
  className: "zen-dropdown-list__footer",
515
487
  children: [_jsx(Button, {
516
488
  onClick: isMultiselect ? onClearClick : handleClearClick,
@@ -538,4 +510,4 @@ export const DropdownList = ({
538
510
  }) : null]
539
511
  }));
540
512
  };
541
- export const TRANSLATIONS = ["Select all", "Deselect all", "Clear", "Back", "No data"];
513
+ export const TRANSLATIONS = ["Select all", "Clear", "Back", "No data"];
@@ -8,7 +8,7 @@ import { getInitialState, stateReducer, ROOT_GROUP_ID } from "./stateReducer/sta
8
8
  import { StateActionType } from "./stateReducer/stateActionType";
9
9
  import { FOCUSABLE_SELECTOR } from "../utils/focusableSelector";
10
10
  import { useEscape } from "../commonHelpers/hooks/useEscape";
11
- import { checkIsDataProblem, compareObjectsArrays, compareStringsArrays, createListDataOptions, getDataForChange, getListDataWithDisabled, getSelectedCount, getStringFromAllSelected, getStringFromSelected, isAllChildrenSelected, isAllItemsHasOneParent, isEveryItemSelected, prepareSelectedIdsToItems, sortDropdownItemArray } from "./dropdownHelper";
11
+ import { checkIsDataProblem, compareObjectsArrays, compareStringsArrays, createListDataOptions, getDataForChange, getListDataWithDisabled, getSelectedCount, getStringFromAllSelected, getStringFromSelected, isAllItemsHasOneParent, isEveryItemSelected, prepareSelectedIdsToItems, sortDropdownItemArray } from "./dropdownHelper";
12
12
  import { DropdownTrigger } from "./dropdownTrigger";
13
13
  import { isFocusable } from "../dialog/dialogHelpers";
14
14
  import { useLanguage } from "../utils/localization/useLanguage";
@@ -109,7 +109,10 @@ export const DropdownRaw = props => {
109
109
  mobileSheetStackingClassName,
110
110
  isError,
111
111
  firstParentNodeIsVisible,
112
- dataAnalyticsId
112
+ dataAnalyticsId,
113
+ hideSelectAllOnSearch = false,
114
+ blockItemsOnSelectAll = false,
115
+ autoPromoteSelectAll = false
113
116
  } = props;
114
117
  const {
115
118
  isFormSection
@@ -147,7 +150,7 @@ export const DropdownRaw = props => {
147
150
  const isQueryMode = useMemo(() => typeof getData === "undefined" && typeof dataItems === "undefined", [getData, dataItems]);
148
151
  const isCheckboxMode = useMemo(() => checkboxLabel && typeof value === "object" && "isChecked" in value && typeof value.isChecked === "boolean" || false, [checkboxLabel, value]);
149
152
  const [initialInChecked] = useState(isCheckboxMode ? value.isChecked : undefined);
150
- const [state, dispatchState] = useReducer(stateReducer, getInitialState(isFullSelectionMode, isQueryMode ? (fetchState === null || fetchState === void 0 ? void 0 : fetchState.data) || [] : dataItems || [], isFullSelectionMode || isCheckboxMode ? value.selected : value, listLimit, defaultValue ? isFullSelectionMode || isCheckboxMode ? defaultValue.selected : defaultValue : undefined, isFullSelectionMode ? value.isAllSelected : undefined, defaultValue ? isFullSelectionMode ? defaultValue.isAllSelected : undefined : undefined, isCheckboxMode ? value.isChecked : undefined, isCheckboxMode && defaultValue ? defaultValue.isChecked : undefined, firstParentNodeIsVisible));
153
+ const [state, dispatchState] = useReducer(stateReducer, getInitialState(isFullSelectionMode, isQueryMode ? (fetchState === null || fetchState === void 0 ? void 0 : fetchState.data) || [] : dataItems || [], isFullSelectionMode || isCheckboxMode ? value.selected : value, listLimit, defaultValue ? isFullSelectionMode || isCheckboxMode ? defaultValue.selected : defaultValue : undefined, isFullSelectionMode ? value.isAllSelected : undefined, defaultValue ? isFullSelectionMode ? defaultValue.isAllSelected : undefined : undefined, isCheckboxMode ? value.isChecked : undefined, isCheckboxMode && defaultValue ? defaultValue.isChecked : undefined, firstParentNodeIsVisible, autoPromoteSelectAll));
151
154
  const chipStatus = useChipStatus();
152
155
  const isMobile = useMobile();
153
156
  const popupId = useId();
@@ -174,6 +177,7 @@ export const DropdownRaw = props => {
174
177
  const getNamedItemsHasBeenCalled = useRef(false);
175
178
  const selectedItemsLoader = useRef(undefined);
176
179
  const previousMapDataItems = useRef(isQueryMode ? (fetchState === null || fetchState === void 0 ? void 0 : fetchState.data) || [] : !getData && (dataItems === null || dataItems === void 0 ? void 0 : dataItems.length) ? dataItems : []);
180
+ const previousFetchStateData = useRef(isQueryMode ? fetchState === null || fetchState === void 0 ? void 0 : fetchState.data : undefined);
177
181
  const prevIsLoading = useRef(isLoading);
178
182
  const prevIsChecked = useRef(isCheckboxMode ? value.isChecked : undefined);
179
183
  const currentAllSelected = useMemo(() => state.isNestedList || !multiselect || !isFullSelectionMode ? undefined : state.isAllSelected, [state.isNestedList, state.isAllSelected, multiselect, isFullSelectionMode]);
@@ -380,7 +384,9 @@ export const DropdownRaw = props => {
380
384
  }, [handleClose]);
381
385
  const memoizedAllowClosing = useMemo(() => state.currentId === undefined || state.currentId === state.rootId, [state.currentId, state.rootId]);
382
386
  const handleSingleSelection = useCallback((reset, selected) => {
383
- const shouldBeClosed = !hasApplyButton && memoizedAllowClosing && (!reset && selected || reset);
387
+ var _a, _b;
388
+ const isLeaf = !!selected && !((_b = (_a = state.groupsMap[selected]) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.length);
389
+ const shouldBeClosed = !hasApplyButton && (memoizedAllowClosing || isLeaf) && (reset || !!selected);
384
390
  dispatchState({
385
391
  type: StateActionType.ChangeSingleSelection,
386
392
  payload: {
@@ -393,7 +399,7 @@ export const DropdownRaw = props => {
393
399
  type: StateActionType.SetInputValue,
394
400
  payload: ""
395
401
  });
396
- }, [handleEscape, hasApplyButton, memoizedAllowClosing]);
402
+ }, [handleEscape, hasApplyButton, memoizedAllowClosing, state.groupsMap]);
397
403
  const handleSelectAllClick = useCallback(isAllSelect => {
398
404
  if (isFullSelectionMode) {
399
405
  dispatchState({
@@ -529,8 +535,12 @@ export const DropdownRaw = props => {
529
535
  payload: undefined
530
536
  });
531
537
  }, [errorHandler]);
532
- const handleDataQuery = useCallback((dta, searchVal) => {
533
- if (dta.length && !searchVal && !compareObjectsArrays(dta, previousMapDataItems.current)) {
538
+ const handleDataQuery = useCallback((dta, searchVal, dataChanged = true) => {
539
+ // Only (re)build groupsMap from a genuine, freshly fetched full list. In query mode the parent's
540
+ // fetchState.data lags behind the typed search value, so when a search is cleared this effect can run
541
+ // with the previous, search-filtered data while searchVal is already empty. Rebuilding groupsMap from
542
+ // that stale subset shrinks it and makes the current selection look like "all selected".
543
+ if (dataChanged && dta.length && !searchVal && !compareObjectsArrays(dta, previousMapDataItems.current)) {
534
544
  dispatchState({
535
545
  type: StateActionType.CreateMap,
536
546
  payload: dta
@@ -577,7 +587,9 @@ export const DropdownRaw = props => {
577
587
  if (!isQueryMode || (fetchState === null || fetchState === void 0 ? void 0 : fetchState.isLoading)) {
578
588
  return;
579
589
  }
580
- handleDataQuery((fetchState === null || fetchState === void 0 ? void 0 : fetchState.data) || [], state.inputValue);
590
+ const dataChanged = (fetchState === null || fetchState === void 0 ? void 0 : fetchState.data) !== previousFetchStateData.current;
591
+ previousFetchStateData.current = fetchState === null || fetchState === void 0 ? void 0 : fetchState.data;
592
+ handleDataQuery((fetchState === null || fetchState === void 0 ? void 0 : fetchState.data) || [], state.inputValue, dataChanged);
581
593
  });
582
594
  return () => {
583
595
  var _a;
@@ -876,7 +888,15 @@ export const DropdownRaw = props => {
876
888
  });
877
889
  }
878
890
  if (state.showList) {
879
- const isSearchMode = state.inputValue && !state.currentId;
891
+ const isSearchMode = Boolean(state.inputValue) && !state.currentId;
892
+ const selectAllActiveForCurrentLevel = state.selectAllActiveForId === (state.currentId || state.rootId);
893
+ // DESIGN INTENT: button state (isSelectAllActive) is truth-based — shows pressed whenever
894
+ // all items are actually selected, including after search+clear where selectAllActiveForId
895
+ // was cleared. shouldBlockItems is intent-based — only activates when "Select all" was
896
+ // explicitly clicked (selectAllActiveForCurrentLevel), never from manual individual selection.
897
+ // This asymmetry is intentional: the button restores its visual state post-search, but
898
+ // blocking does not, to avoid unexpected UX when users manually select all items.
899
+ const isAllCurrentLevelSelected = !isSearchMode && !isFullSelectionMode ? isEveryItemSelected(getListDataWithDisabled(state.listData, state.isNestedList), state.selectedIds) : false;
880
900
  const currentListData = createListDataOptions(state, translate, isSearchMode ? sortDropdownItemArray(state.listData, sortFn).slice(0, listLimit).filter(el => el.id !== state.rootId) :
881
901
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
882
902
  sortDropdownItemArray(((_b = state.groupsMap[state.currentId || state.rootId]) === null || _b === void 0 ? void 0 : _b.children) || [], sortFn).slice(0, listLimit) || [], multiselect, currentAllSelected);
@@ -892,16 +912,17 @@ export const DropdownRaw = props => {
892
912
  activeValue: state.selectedIds.length ? state.selectedIds[0] : "root",
893
913
  backButtonName: state.currentId && state.groupsMap[state.currentId] ? getGroupDescription(state.groupsMap[state.currentId], translate) : undefined,
894
914
  filterName: isMobile ? undefined : filterName,
895
- isAllSelected: currentAllSelected ? currentAllSelected : isSearchMode ? isEveryItemSelected(getListDataWithDisabled(state.listData, state.isNestedList), state.selectedIds) : currentAllSelected === undefined ? isAllChildrenSelected(state, state.currentId || state.rootId) : false,
915
+ isSelectAllActive: isFullSelectionMode ? currentAllSelected : isSearchMode ? isEveryItemSelected(getListDataWithDisabled(state.listData, state.isNestedList), state.selectedIds) : selectAllActiveForCurrentLevel || isAllCurrentLevelSelected,
916
+ shouldBlockItems: blockItemsOnSelectAll && !state.inputValue && !isFullSelectionMode && selectAllActiveForCurrentLevel,
896
917
  isMultiselect: multiselect,
897
918
  forceSelection: forceSelection,
898
919
  listData: currentListData,
899
920
  width: width || currentWidth === 180 ? undefined : currentWidth,
900
921
  minWidth: currentWidth,
901
- hasSelectAllButton: selectAllButton && multiselect,
922
+ hasSelectAllButton: selectAllButton && multiselect && !(hideSelectAllOnSearch && state.inputValue),
902
923
  hasApplyButton: hasApplyButton,
903
924
  isApplyDisabled: memoizedIsApplyButtonDisabled,
904
- isSelectAllButtonDisable: currentListData.length === 0 || isSearchMode !== "" && state.isNestedList && isAllItemsHasOneParent(state.listData.filter(el => el.id !== state.rootId), (((_c = state.groupsMap[state.rootId]) === null || _c === void 0 ? void 0 : _c.children) || []).map(el => el.id)),
925
+ isSelectAllButtonDisable: currentListData.length === 0 || isSearchMode && state.isNestedList && isAllItemsHasOneParent(state.listData.filter(el => el.id !== state.rootId), (((_c = state.groupsMap[state.rootId]) === null || _c === void 0 ? void 0 : _c.children) || []).map(el => el.id)),
905
926
  isClearButtonDisabled: memoizedIsClearButtonDisabled,
906
927
  isWithFooter: memoizedWithFooter && !isMobile,
907
928
  isMobile: isMobile,
@@ -913,7 +934,7 @@ export const DropdownRaw = props => {
913
934
  });
914
935
  }
915
936
  return null;
916
- }, [state, isLoading, isQueryMode, fetchState === null || fetchState === void 0 ? void 0 : fetchState.isLoading, fetchState === null || fetchState === void 0 ? void 0 : fetchState.error, handleClearClick, handleCancelClick, handleApplyClick, hasApplyButton, memoizedWithFooter, translate, sortFn, listLimit, multiselect, currentAllSelected, handleBackButtonClick, handleSelectAllInSearch, handleSelectAllClick, handleSelect, handleChangeCurrentId, handleSingleSelection, isMobile, filterName, forceSelection, width, selectAllButton, memoizedIsApplyButtonDisabled, memoizedIsClearButtonDisabled, isCheckboxMode, handleCheckboxChange, checkboxLabel, selectListId]);
937
+ }, [state, isLoading, isQueryMode, fetchState === null || fetchState === void 0 ? void 0 : fetchState.isLoading, fetchState === null || fetchState === void 0 ? void 0 : fetchState.error, handleClearClick, handleCancelClick, handleApplyClick, hasApplyButton, memoizedWithFooter, translate, sortFn, listLimit, multiselect, currentAllSelected, handleBackButtonClick, handleSelectAllInSearch, handleSelectAllClick, handleSelect, handleChangeCurrentId, handleSingleSelection, isMobile, filterName, forceSelection, width, selectAllButton, hideSelectAllOnSearch, memoizedIsApplyButtonDisabled, memoizedIsClearButtonDisabled, isCheckboxMode, handleCheckboxChange, checkboxLabel, selectListId, isFullSelectionMode, blockItemsOnSelectAll]);
917
938
  const currentStringFromSelected = isFullSelectionMode && hasApplyButton && state.globalIsAllSelected || isFullSelectionMode && !hasApplyButton && state.isAllSelected ? getStringFromAllSelected(state.groupsMap, translate, state.rootId) : getStringFromSelected(hasApplyButton ? state.globalSelectedIds : state.selectedIds, state.groupsMapSelected, translate, state.rootId);
918
939
  const memoizedCurrentSelection = useMemo(() => showSelection && !state.inputValue ? currentStringFromSelected : "", [showSelection, state.inputValue, currentStringFromSelected]);
919
940
  const parentTriggerWidth = ((_b = comboboxRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) || 420;
@@ -1011,4 +1032,4 @@ export const DropdownRaw = props => {
1011
1032
  });
1012
1033
  };
1013
1034
  DropdownRaw.displayName = "DropdownRaw";
1014
- export const TRANSLATIONS = ["Filter by group", "Open filter", "Clear search", "Select all", "Deselect all", "Clear", "Back", "No data"];
1035
+ export const TRANSLATIONS = ["Filter by group", "Open filter", "Clear search", "Select all", "Clear", "Back", "No data"];