@geotab/zenith 3.9.2 → 3.10.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.
Files changed (244) hide show
  1. package/README.md +15 -3
  2. package/dist/absolute/absolute.d.ts +7 -1
  3. package/dist/absolute/absolute.js +8 -4
  4. package/dist/alertRaw/alertRaw.js +4 -4
  5. package/dist/alertRaw/components/alertAnimation.js +2 -2
  6. package/dist/banner/bannerMultipLine.js +4 -4
  7. package/dist/banner/bannerSingleLine.js +4 -4
  8. package/dist/betaPill/betaPill.d.ts +4 -9
  9. package/dist/betaPill/betaPill.js +7 -8
  10. package/dist/bookmark/bookmark.d.ts +2 -1
  11. package/dist/bookmark/bookmark.js +4 -2
  12. package/dist/card/components/cardButton/cardButton.d.ts +2 -1
  13. package/dist/card/components/cardButton/cardButton.js +3 -3
  14. package/dist/checkbox/checkbox.js +2 -2
  15. package/dist/commonStyles/rangeFieldMixin.less +9 -9
  16. package/dist/controlledPopup/controlledPopup.d.ts +2 -1
  17. package/dist/controlledPopup/controlledPopup.js +2 -2
  18. package/dist/dataFeed/hooks/useVisibleColumns.js +1 -1
  19. package/dist/dataGrid/extensions/toBasicColumn.js +2 -1
  20. package/dist/dataGrid/listColumn.d.ts +1 -0
  21. package/dist/dataGrid/withFlexibleColumns/components/columnSettingsList.d.ts +2 -2
  22. package/dist/dataGrid/withFlexibleColumns/components/columnSettingsList.js +5 -5
  23. package/dist/dataGrid/withFlexibleColumns/withFlexibleColumns.js +15 -6
  24. package/dist/dialog/dialogContent.js +4 -4
  25. package/dist/dropdownRaw/dropdownHelper.d.ts +4 -1
  26. package/dist/dropdownRaw/dropdownHelper.js +2 -1
  27. package/dist/dropdownRaw/dropdownRaw.js +2 -2
  28. package/dist/dropdownRaw/dropdownTrigger.d.ts +1 -1
  29. package/dist/dropdownRaw/dropdownTrigger.js +1 -1
  30. package/dist/fileUpload/components/uploadedFilesSection.js +3 -3
  31. package/dist/filters/components/filtersSavedChipComponent.js +3 -3
  32. package/dist/filters/components/filtersSearchItemData.js +3 -3
  33. package/dist/filters/components/filtersSidePanel.js +4 -4
  34. package/dist/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +4 -4
  35. package/dist/formGroup/components/reviewListToggle/reviewListToggle.js +13 -13
  36. package/dist/groupsFilterRaw/groupsFilterInitialState.js +1 -1
  37. package/dist/headerTitle/headerTitle.d.ts +3 -9
  38. package/dist/headerTitle/headerTitle.js +2 -3
  39. package/dist/icons/iconAlignLeft.js +3 -1
  40. package/dist/icons/iconAlignmentLeft.js +3 -1
  41. package/dist/icons/iconAlignmentRight.js +3 -1
  42. package/dist/icons/iconArrowBottomLeft.js +3 -1
  43. package/dist/icons/iconArrowBottomRight.js +3 -1
  44. package/dist/icons/iconArrowLeftPath.js +3 -1
  45. package/dist/icons/iconArrowRight.js +3 -1
  46. package/dist/icons/iconArrowRightCircle.js +3 -1
  47. package/dist/icons/iconArrowRightPath.js +3 -1
  48. package/dist/icons/iconArrowTopLeft.js +3 -1
  49. package/dist/icons/iconArrowTopRight.js +3 -1
  50. package/dist/icons/iconChevronDoubleRight.js +3 -1
  51. package/dist/icons/iconChevronRight.js +3 -1
  52. package/dist/icons/iconChevronRightSmall.js +3 -1
  53. package/dist/icons/iconCornerDownLeft.js +3 -1
  54. package/dist/icons/iconCornerDownRight.js +3 -1
  55. package/dist/icons/iconCornerLeftDown.js +3 -1
  56. package/dist/icons/iconCornerLeftUp.js +3 -1
  57. package/dist/icons/iconCornerRightDown.js +3 -1
  58. package/dist/icons/iconCornerRightUp.js +3 -1
  59. package/dist/icons/iconCornerUpLeft.js +3 -1
  60. package/dist/icons/iconCornerUpRight.js +3 -1
  61. package/dist/icons/iconLayoutSidebar.js +3 -1
  62. package/dist/icons/iconPinFilled.d.ts +3 -0
  63. package/dist/icons/iconPinFilled.js +12 -0
  64. package/dist/icons/iconSidebar.js +3 -1
  65. package/dist/icons/iconUndock.js +3 -1
  66. package/dist/index.css +556 -504
  67. package/dist/index.d.ts +1 -0
  68. package/dist/index.js +8 -6
  69. package/dist/list/listItem/listItem.d.ts +3 -1
  70. package/dist/list/listItem/listItem.js +4 -2
  71. package/dist/menu/controlledMenu.d.ts +1 -0
  72. package/dist/menu/controlledMenu.js +2 -2
  73. package/dist/mobileSheet/mobileSheet.js +4 -4
  74. package/dist/modal/modal.js +4 -4
  75. package/dist/nav/nav.d.ts +7 -1
  76. package/dist/nav/nav.js +11 -6
  77. package/dist/nav/navEmpty/navEmpty.d.ts +10 -0
  78. package/dist/nav/navEmpty/navEmpty.js +7 -0
  79. package/dist/notification/notification.js +4 -4
  80. package/dist/notification/pushNotification/pushNotification.js +1 -1
  81. package/dist/pill/components/pillNonActionable/pillNonActionable.js +4 -4
  82. package/dist/pillExpandable/pillExpandable.js +4 -4
  83. package/dist/table/detailPanel/detailPanelHeader.js +4 -4
  84. package/dist/table/flexible/columnsList.d.ts +1 -2
  85. package/dist/table/flexible/columnsList.js +6 -5
  86. package/dist/table/flexible/columnsPopup.js +0 -3
  87. package/dist/table/flexible/useFlexibleColumns.d.ts +1 -0
  88. package/dist/table/flexible/useFlexibleColumns.js +4 -3
  89. package/dist/table/loading/useLoading.d.ts +1 -0
  90. package/dist/table/loading/useLoading.js +1 -1
  91. package/dist/table/nested/useNestedRows.d.ts +1 -0
  92. package/dist/table/selectable/useSelectableRows.js +23 -5
  93. package/dist/table/table.d.ts +1 -0
  94. package/dist/table/table.js +7 -2
  95. package/dist/tabs/tabItem/tabItem.d.ts +2 -1
  96. package/dist/tabs/tabItem/tabItem.js +4 -2
  97. package/dist/tabs/tabs.d.ts +1 -0
  98. package/dist/tabs/tabs.js +2 -1
  99. package/dist/toastRaw/components/toastAnimation.js +2 -2
  100. package/dist/toastRaw/toastRaw.js +4 -4
  101. package/dist/toggleButtonRaw/toggleButtonRaw.js +13 -13
  102. package/dist/tooltip/tooltip.js +4 -4
  103. package/dist/utils/localization/flipAlignment.d.ts +2 -0
  104. package/dist/utils/localization/flipAlignment.js +19 -0
  105. package/dist/utils/localization/makeLanguageWrapper.d.ts +8 -0
  106. package/dist/utils/localization/makeLanguageWrapper.js +11 -0
  107. package/dist/utils/localization/translations/cs.json +2 -2
  108. package/dist/utils/localization/translations/da-DK.json +2 -2
  109. package/dist/utils/localization/translations/es.json +2 -2
  110. package/dist/utils/localization/translations/fi-FI.json +1 -1
  111. package/dist/utils/localization/translations/hu-HU.json +2 -2
  112. package/dist/utils/localization/translations/ko-KR.json +2 -2
  113. package/dist/utils/localization/translations/ms.json +1 -1
  114. package/dist/utils/localization/translations/nb-NO.json +1 -1
  115. package/dist/utils/localization/translations/pt-BR.json +2 -2
  116. package/dist/utils/localization/translations/pt-PT.json +3 -3
  117. package/dist/utils/localization/translations/ro-RO.json +5 -5
  118. package/dist/utils/localization/translations/sk-SK.json +1 -1
  119. package/dist/utils/localization/translations/zh-Hans.json +1 -1
  120. package/dist/utils/localization/useIsRTL.d.ts +1 -0
  121. package/dist/utils/localization/useIsRTL.js +6 -0
  122. package/dist/utils/localization/useRTLAlignment.d.ts +2 -0
  123. package/dist/utils/localization/useRTLAlignment.js +10 -0
  124. package/esm/absolute/absolute.d.ts +7 -1
  125. package/esm/absolute/absolute.js +8 -4
  126. package/esm/alertRaw/alertRaw.js +4 -4
  127. package/esm/alertRaw/components/alertAnimation.js +2 -2
  128. package/esm/banner/bannerMultipLine.js +4 -4
  129. package/esm/banner/bannerSingleLine.js +4 -4
  130. package/esm/betaPill/betaPill.d.ts +4 -9
  131. package/esm/betaPill/betaPill.js +7 -8
  132. package/esm/bookmark/bookmark.d.ts +2 -1
  133. package/esm/bookmark/bookmark.js +4 -2
  134. package/esm/card/components/cardButton/cardButton.d.ts +2 -1
  135. package/esm/card/components/cardButton/cardButton.js +3 -3
  136. package/esm/checkbox/checkbox.js +2 -2
  137. package/esm/controlledPopup/controlledPopup.d.ts +2 -1
  138. package/esm/controlledPopup/controlledPopup.js +2 -2
  139. package/esm/dataFeed/hooks/useVisibleColumns.js +1 -1
  140. package/esm/dataGrid/extensions/toBasicColumn.js +2 -1
  141. package/esm/dataGrid/listColumn.d.ts +1 -0
  142. package/esm/dataGrid/withFlexibleColumns/components/columnSettingsList.d.ts +2 -2
  143. package/esm/dataGrid/withFlexibleColumns/components/columnSettingsList.js +5 -5
  144. package/esm/dataGrid/withFlexibleColumns/withFlexibleColumns.js +15 -6
  145. package/esm/dialog/dialogContent.js +4 -4
  146. package/esm/dropdownRaw/dropdownHelper.d.ts +4 -1
  147. package/esm/dropdownRaw/dropdownHelper.js +2 -1
  148. package/esm/dropdownRaw/dropdownRaw.js +2 -2
  149. package/esm/dropdownRaw/dropdownTrigger.d.ts +1 -1
  150. package/esm/dropdownRaw/dropdownTrigger.js +1 -1
  151. package/esm/fileUpload/components/uploadedFilesSection.js +3 -3
  152. package/esm/filters/components/filtersSavedChipComponent.js +3 -3
  153. package/esm/filters/components/filtersSearchItemData.js +3 -3
  154. package/esm/filters/components/filtersSidePanel.js +4 -4
  155. package/esm/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +4 -4
  156. package/esm/formGroup/components/reviewListToggle/reviewListToggle.js +13 -13
  157. package/esm/groupsFilterRaw/groupsFilterInitialState.js +1 -1
  158. package/esm/headerTitle/headerTitle.d.ts +3 -9
  159. package/esm/headerTitle/headerTitle.js +2 -3
  160. package/esm/icons/iconAlignLeft.js +3 -1
  161. package/esm/icons/iconAlignmentLeft.js +3 -1
  162. package/esm/icons/iconAlignmentRight.js +3 -1
  163. package/esm/icons/iconArrowBottomLeft.js +3 -1
  164. package/esm/icons/iconArrowBottomRight.js +3 -1
  165. package/esm/icons/iconArrowLeftPath.js +3 -1
  166. package/esm/icons/iconArrowRight.js +3 -1
  167. package/esm/icons/iconArrowRightCircle.js +3 -1
  168. package/esm/icons/iconArrowRightPath.js +3 -1
  169. package/esm/icons/iconArrowTopLeft.js +3 -1
  170. package/esm/icons/iconArrowTopRight.js +3 -1
  171. package/esm/icons/iconChevronDoubleRight.js +3 -1
  172. package/esm/icons/iconChevronRight.js +3 -1
  173. package/esm/icons/iconChevronRightSmall.js +3 -1
  174. package/esm/icons/iconCornerDownLeft.js +3 -1
  175. package/esm/icons/iconCornerDownRight.js +3 -1
  176. package/esm/icons/iconCornerLeftDown.js +3 -1
  177. package/esm/icons/iconCornerLeftUp.js +3 -1
  178. package/esm/icons/iconCornerRightDown.js +3 -1
  179. package/esm/icons/iconCornerRightUp.js +3 -1
  180. package/esm/icons/iconCornerUpLeft.js +3 -1
  181. package/esm/icons/iconCornerUpRight.js +3 -1
  182. package/esm/icons/iconLayoutSidebar.js +3 -1
  183. package/esm/icons/iconPinFilled.d.ts +3 -0
  184. package/esm/icons/iconPinFilled.js +8 -0
  185. package/esm/icons/iconSidebar.js +3 -1
  186. package/esm/icons/iconUndock.js +3 -1
  187. package/esm/index.d.ts +1 -0
  188. package/esm/index.js +1 -0
  189. package/esm/list/listItem/listItem.d.ts +3 -1
  190. package/esm/list/listItem/listItem.js +4 -2
  191. package/esm/menu/controlledMenu.d.ts +1 -0
  192. package/esm/menu/controlledMenu.js +2 -2
  193. package/esm/mobileSheet/mobileSheet.js +4 -4
  194. package/esm/modal/modal.js +4 -4
  195. package/esm/nav/nav.d.ts +7 -1
  196. package/esm/nav/nav.js +11 -6
  197. package/esm/nav/navEmpty/navEmpty.d.ts +10 -0
  198. package/esm/nav/navEmpty/navEmpty.js +3 -0
  199. package/esm/notification/notification.js +4 -4
  200. package/esm/notification/pushNotification/pushNotification.js +1 -1
  201. package/esm/pill/components/pillNonActionable/pillNonActionable.js +4 -4
  202. package/esm/pillExpandable/pillExpandable.js +4 -4
  203. package/esm/table/detailPanel/detailPanelHeader.js +4 -4
  204. package/esm/table/flexible/columnsList.d.ts +1 -2
  205. package/esm/table/flexible/columnsList.js +6 -5
  206. package/esm/table/flexible/columnsPopup.js +0 -3
  207. package/esm/table/flexible/useFlexibleColumns.d.ts +1 -0
  208. package/esm/table/flexible/useFlexibleColumns.js +4 -3
  209. package/esm/table/loading/useLoading.d.ts +1 -0
  210. package/esm/table/loading/useLoading.js +1 -1
  211. package/esm/table/nested/useNestedRows.d.ts +1 -0
  212. package/esm/table/selectable/useSelectableRows.js +23 -5
  213. package/esm/table/table.d.ts +1 -0
  214. package/esm/table/table.js +7 -2
  215. package/esm/tabs/tabItem/tabItem.d.ts +2 -1
  216. package/esm/tabs/tabItem/tabItem.js +4 -2
  217. package/esm/tabs/tabs.d.ts +1 -0
  218. package/esm/tabs/tabs.js +2 -1
  219. package/esm/toastRaw/components/toastAnimation.js +2 -2
  220. package/esm/toastRaw/toastRaw.js +4 -4
  221. package/esm/toggleButtonRaw/toggleButtonRaw.js +13 -13
  222. package/esm/tooltip/tooltip.js +4 -4
  223. package/esm/utils/localization/flipAlignment.d.ts +2 -0
  224. package/esm/utils/localization/flipAlignment.js +15 -0
  225. package/esm/utils/localization/makeLanguageWrapper.d.ts +8 -0
  226. package/esm/utils/localization/makeLanguageWrapper.js +7 -0
  227. package/esm/utils/localization/translations/cs.json +2 -2
  228. package/esm/utils/localization/translations/da-DK.json +2 -2
  229. package/esm/utils/localization/translations/es.json +2 -2
  230. package/esm/utils/localization/translations/fi-FI.json +1 -1
  231. package/esm/utils/localization/translations/hu-HU.json +2 -2
  232. package/esm/utils/localization/translations/ko-KR.json +2 -2
  233. package/esm/utils/localization/translations/ms.json +1 -1
  234. package/esm/utils/localization/translations/nb-NO.json +1 -1
  235. package/esm/utils/localization/translations/pt-BR.json +2 -2
  236. package/esm/utils/localization/translations/pt-PT.json +3 -3
  237. package/esm/utils/localization/translations/ro-RO.json +5 -5
  238. package/esm/utils/localization/translations/sk-SK.json +1 -1
  239. package/esm/utils/localization/translations/zh-Hans.json +1 -1
  240. package/esm/utils/localization/useIsRTL.d.ts +1 -0
  241. package/esm/utils/localization/useIsRTL.js +2 -0
  242. package/esm/utils/localization/useRTLAlignment.d.ts +2 -0
  243. package/esm/utils/localization/useRTLAlignment.js +6 -0
  244. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -556,6 +556,7 @@ export { IconPhone } from "./icons/iconPhone";
556
556
  export { IconPhoneMobile } from "./icons/iconPhoneMobile";
557
557
  export { IconPin } from "./icons/iconPin";
558
558
  export { IconPin2 } from "./icons/iconPin2";
559
+ export { IconPinFilled } from "./icons/iconPinFilled";
559
560
  export { IconPinLocation } from "./icons/iconPinLocation";
560
561
  export { IconPinLocation2 } from "./icons/iconPinLocation2";
561
562
  export { IconPinLocation3 } from "./icons/iconPinLocation3";
package/dist/index.js CHANGED
@@ -12,12 +12,12 @@ exports.IconDock = exports.IconDispatchAsset = exports.IconDisk2 = exports.IconD
12
12
  exports.IconFolderCloud2 = exports.IconFolderCloud = exports.IconFolderBookmarks = exports.IconFolderAdd = exports.IconFolder2 = exports.IconFolder = exports.IconFocus = exports.IconFingerPrint = exports.IconFilterDesc = exports.IconFilterAsc = exports.IconFilter3Desc = exports.IconFilter3Asc = exports.IconFilter3 = exports.IconFilter2 = exports.IconFilter = exports.IconFileSync5 = exports.IconFileSync4 = exports.IconFileSync3 = exports.IconFileSync2 = exports.IconFileSync = exports.IconFileLocked = exports.IconFileCopy = exports.IconFile = exports.IconFaceId = exports.IconEyeOff = exports.IconEye = exports.IconExpand = exports.IconException = exports.IconExcel = exports.IconEvse = exports.IconEuro = exports.IconEthereum = exports.IconEsc = exports.IconEmailNotification = exports.IconEmail2 = exports.IconEmail = exports.IconEditSmall = exports.IconEditBig = exports.IconEdit2 = exports.IconEdit = exports.IconDvir = exports.IconDriver = exports.IconDrive = exports.IconDownload = exports.IconDotVertical = exports.IconDotHorizontal = exports.IconDotGrid = exports.IconDollar = exports.IconDocumentWithLines = exports.IconDocument = void 0;
13
13
  exports.IconLayout = exports.IconLayers = exports.IconLaptop = exports.IconLab = exports.IconKeyboardUp2 = exports.IconKeyboardUp = exports.IconKeyboardDown = exports.IconKeyboard = exports.IconItalic = exports.IconInspect = exports.IconInfoSquare = exports.IconInfoCircle = exports.IconInbox = exports.IconImages2 = exports.IconImages = exports.IconImage = exports.IconImac = exports.IconIcon = exports.IconITS = exports.IconHourglass = exports.IconHomeSimple = exports.IconHomeRoof = exports.IconHomeDoor2 = exports.IconHomeDoor = exports.IconHistory = exports.IconHexonalWarning = exports.IconHeart = exports.IconHeadphones = exports.IconHarness = exports.IconGrids2 = exports.IconGrids = exports.IconGraphStatistics = exports.IconGraphPresentation = exports.IconGraphLines = exports.IconGraphChart = exports.IconGraph = exports.IconGrab = exports.IconGlobus = exports.IconGift = exports.IconGeotabSales = exports.IconGeotabDrive = exports.IconGamepad = exports.IconFuelGas = exports.IconFork = exports.IconFolders = exports.IconFolderUpload = exports.IconFolderShared = exports.IconFolderRestricted = exports.IconFolderDownload = exports.IconFolderDelete = void 0;
14
14
  exports.IconMobi = exports.IconMinusSquare = exports.IconMinusCircle = exports.IconMinus = exports.IconMinimize = exports.IconMicrophone2 = exports.IconMicrophone = exports.IconMenuCircle = exports.IconMenu3 = exports.IconMenu2 = exports.IconMenu = exports.IconMemory2 = exports.IconMemory = exports.IconMedal = exports.IconMarketplace = exports.IconMap = exports.IconMagicEyes = exports.IconMagic2 = exports.IconMagic = exports.IconMacbook = exports.IconLowDataQuality = exports.IconLogout = exports.IconLogin = exports.IconLock = exports.IconLocationOff = exports.IconLocationMap = exports.IconLocationCompass = exports.IconLoader = exports.IconList = exports.IconLinkLines = exports.IconLink3 = exports.IconLink2 = exports.IconLink = exports.IconLightning = exports.IconLightBulb = exports.IconLifeBuoy = exports.IconLeaf = exports.IconLayoutWindow5 = exports.IconLayoutWindow4 = exports.IconLayoutWindow3 = exports.IconLayoutWindow2 = exports.IconLayoutWindow = exports.IconLayoutTopbar = exports.IconLayoutTop = exports.IconLayoutSidebar = exports.IconLayoutSearch = exports.IconLayoutRight = exports.IconLayoutLeft = exports.IconLayoutColumn = exports.IconLayoutBottom = void 0;
15
- exports.IconPlusFile = exports.IconPlusCircle = exports.IconPlus = exports.IconPlay = exports.IconPinLocation3 = exports.IconPinLocation2 = exports.IconPinLocation = exports.IconPin2 = exports.IconPin = exports.IconPhoneMobile = exports.IconPhone = exports.IconPerformance = exports.IconPercent = exports.IconPeopleLike = exports.IconPeopleGroup2 = exports.IconPeopleGroup = exports.IconPeople = exports.IconPencil2 = exports.IconPencil = exports.IconPause = exports.IconPassword = exports.IconPaperPlane = exports.IconPackage3 = exports.IconPackage2 = exports.IconPackage = exports.IconPDF = exports.IconOptAlt = exports.IconOpt = exports.IconOpen2 = exports.IconOpen = exports.IconOnDuty = exports.IconNumberedList = exports.IconNotifications = exports.IconNotificationOff = exports.IconNotificationBell = exports.IconNotificationAlarm = exports.IconNote = exports.IconNewspaper = exports.IconNews = exports.IconNavigationFooterExpanded = exports.IconNavigationFooterCollapsed = exports.IconMyGeotab = exports.IconMyAdmin = exports.IconMove2 = exports.IconMove = exports.IconMouseScrollUp = exports.IconMouseScrollDown = exports.IconMouse = exports.IconMoon = exports.IconMoney = void 0;
16
- exports.IconShield4 = exports.IconShield3 = exports.IconShield2 = exports.IconShield = exports.IconShare3 = exports.IconShare = exports.IconSettings8 = exports.IconSettings7 = exports.IconSettings6 = exports.IconSettings4 = exports.IconSettings3 = exports.IconSettings2 = exports.IconSettings1 = exports.IconServer3 = exports.IconServer2 = exports.IconServer = exports.IconSend = exports.IconSecuredLines = exports.IconSecured = exports.IconSeatbelt = exports.IconSearchPage = exports.IconSearchLines = exports.IconSearchDocument = exports.IconSearch = exports.IconSdCard = exports.IconRuler = exports.IconRoute = exports.IconRotateRepeat2 = exports.IconRotateRepeat = exports.IconRotateCounterclockwise = exports.IconRotateClockwise = exports.IconResizeSmall = exports.IconResizeBig = exports.IconRepeat2 = exports.IconRepeat = exports.IconRemovePeople = exports.IconRefrigeration = exports.IconRedo2 = exports.IconRedo = exports.IconRecord = exports.IconReceipt = exports.IconRadar = exports.IconQuestion = exports.IconPuzzle = exports.IconPullRequest = exports.IconProcessor = exports.IconPrinter = exports.IconPound = exports.IconPlusSquare = exports.IconPlusLines = void 0;
17
- exports.IconVolumeMinimum = exports.IconVolumeHalf = exports.IconVolumeFull = exports.IconVolumeDown = exports.IconVoice = exports.IconVisitPage = exports.IconVideoReplay = exports.IconVideo2 = exports.IconVideo = exports.IconUsbHub = exports.IconUsb = exports.IconUpload = exports.IconUnlocked = exports.IconUndock = exports.IconUndo2 = exports.IconUndo = exports.IconUnderline = exports.IconUmbrella = exports.IconTrailer = exports.IconThumbsUp = exports.IconThumbsDown = exports.IconThermometer = exports.IconThermograph = exports.IconTextSize = exports.IconTelevision2 = exports.IconTelevision = exports.IconTarget3 = exports.IconTarget2 = exports.IconTarget = exports.IconTachographTimeCard = exports.IconTachograph = exports.IconTable = exports.IconSupport = exports.IconSun = exports.IconStrikeThrough = exports.IconStore = exports.IconStorage = exports.IconStopwatch = exports.IconStarFilled = exports.IconStarAi = exports.IconStar = exports.IconSquare = exports.IconSpeaker = exports.IconSortVertical = exports.IconSortHorizontal = exports.IconSort2Vertical = exports.IconSort2Horizontal = exports.IconSmiley = exports.IconSign = exports.IconSidebar = void 0;
18
- exports.isLink = exports.isButton = exports.findPrevFocusable = exports.findNextFocusable = exports.findLastFocusable = exports.findFirstFocusable = exports.Menu = exports.ControlledMenu = exports.isDragNotClick = exports.changeOrder = exports.ListItem = exports.List = exports.ItemData = exports.ItemCompact = exports.LineChartMini = exports.getDefaultDatasetStyle = exports.htmlLegendPlugin = exports.LEGEND_PLUGIN_ID = exports.LineChart = exports.useLayoutSize = exports.LayoutFullScreenProvider = exports.useLayoutFullScreen = exports.LayoutFullScreenElementProvider = exports.useLayoutFullScreenElement = exports.Layout = exports.ImageTapToUpload = exports.ImageNothingFound = exports.ImageNoMatchingAssets = exports.ImageLooking = exports.ImageCloudUpload = exports.ImageAdjustFilter = exports.IconZoom2 = exports.IconZoom = exports.IconZone = exports.IconYen = exports.IconWrite = exports.IconWrench = exports.IconWorld = exports.IconWorkday = exports.IconWifi2 = exports.IconWifi = exports.IconWhisper = exports.IconWebcam = exports.IconWatch2 = exports.IconWatch = exports.IconWarning = exports.IconWallet1 = exports.IconWallet = exports.IconVolumeOn = exports.IconVolumeOff = void 0;
19
- exports.TabBar = exports.SummaryTileBarDisplayName = exports.SummaryTileBar = exports.getTypeClassName = exports.SummaryTileTrigger = exports.SummaryTile = exports.SummaryTileDisplayName = exports.SummaryTileSize = exports.SummaryTileType = exports.Summary = exports.Summaries = exports.Stepper = exports.SortControl = exports.SortDirections = exports.Skeleton = exports.LazyContent = exports.SidePanel = exports.CUSTOM_POPUP_COMPONENT_CLASSNAME = exports.SidePanelCloseReason = exports.isChildPopup = exports.SelectField = exports.Select = exports.SearchInput = exports.Range = exports.RadioGroup = exports.Radio = exports.ProgressBar = exports.ProgreesBarSize = exports.ProgressBarType = exports.PrimaryIcon = exports.Popup = exports.PillExpandable = exports.Pill = exports.PaginationType = exports.Pagination = exports.PageLayout = exports.PageContentLayout = exports.PageHeaderMenu = exports.PageHeaderMenuDisplayName = exports.PageHeaderButton = exports.PageHeaderButtonDisplayName = exports.PageHeader = exports.PageHeaderDisplayName = exports.Notification = exports.getPredefinedFocusableItem = exports.DialogContentNew = exports.Modal = exports.MobileSheet = exports.MiniTabs = exports.MiniTabsSize = void 0;
20
- exports.Waiting = exports.UserFormatProvider = exports.useDrive = exports.ThemeProvider = exports.ThemeDrive = exports.ThemeDark = exports.useLanguage = exports.useDirection = exports.injectString = exports.dictionaries = exports.LanguageProvider = exports.getFirstFocusableItem = exports.getNewFocusableItem = exports.HeaderButtonsProvider = exports.AbortablePromise = exports.Tooltip = exports.removeArrowClasses = exports.calculateArrowPosition = exports.ToggleButtonRaw = exports.ToggleButton = exports.Toast = exports.useToast = exports.TimePicker = exports.TextareaRaw = exports.Textarea = exports.TextInputRaw = exports.TextInput = exports.TextIconButton = exports.ButtonIconPosition = exports.Tabs = exports.TabsDisplayName = exports.ActionLinkColumn = exports.CheckboxColumn = exports.MainColumn = exports.ActionsColumn = exports.getSortableValue = exports.ColumnSortDirection = exports.getEmptySelection = exports.Table = exports.useNestedRows = exports.NestedData = exports.TabBarContent = void 0;
15
+ exports.IconPlusCircle = exports.IconPlus = exports.IconPlay = exports.IconPinLocation3 = exports.IconPinLocation2 = exports.IconPinLocation = exports.IconPinFilled = exports.IconPin2 = exports.IconPin = exports.IconPhoneMobile = exports.IconPhone = exports.IconPerformance = exports.IconPercent = exports.IconPeopleLike = exports.IconPeopleGroup2 = exports.IconPeopleGroup = exports.IconPeople = exports.IconPencil2 = exports.IconPencil = exports.IconPause = exports.IconPassword = exports.IconPaperPlane = exports.IconPackage3 = exports.IconPackage2 = exports.IconPackage = exports.IconPDF = exports.IconOptAlt = exports.IconOpt = exports.IconOpen2 = exports.IconOpen = exports.IconOnDuty = exports.IconNumberedList = exports.IconNotifications = exports.IconNotificationOff = exports.IconNotificationBell = exports.IconNotificationAlarm = exports.IconNote = exports.IconNewspaper = exports.IconNews = exports.IconNavigationFooterExpanded = exports.IconNavigationFooterCollapsed = exports.IconMyGeotab = exports.IconMyAdmin = exports.IconMove2 = exports.IconMove = exports.IconMouseScrollUp = exports.IconMouseScrollDown = exports.IconMouse = exports.IconMoon = exports.IconMoney = void 0;
16
+ exports.IconShield3 = exports.IconShield2 = exports.IconShield = exports.IconShare3 = exports.IconShare = exports.IconSettings8 = exports.IconSettings7 = exports.IconSettings6 = exports.IconSettings4 = exports.IconSettings3 = exports.IconSettings2 = exports.IconSettings1 = exports.IconServer3 = exports.IconServer2 = exports.IconServer = exports.IconSend = exports.IconSecuredLines = exports.IconSecured = exports.IconSeatbelt = exports.IconSearchPage = exports.IconSearchLines = exports.IconSearchDocument = exports.IconSearch = exports.IconSdCard = exports.IconRuler = exports.IconRoute = exports.IconRotateRepeat2 = exports.IconRotateRepeat = exports.IconRotateCounterclockwise = exports.IconRotateClockwise = exports.IconResizeSmall = exports.IconResizeBig = exports.IconRepeat2 = exports.IconRepeat = exports.IconRemovePeople = exports.IconRefrigeration = exports.IconRedo2 = exports.IconRedo = exports.IconRecord = exports.IconReceipt = exports.IconRadar = exports.IconQuestion = exports.IconPuzzle = exports.IconPullRequest = exports.IconProcessor = exports.IconPrinter = exports.IconPound = exports.IconPlusSquare = exports.IconPlusLines = exports.IconPlusFile = void 0;
17
+ exports.IconVolumeHalf = exports.IconVolumeFull = exports.IconVolumeDown = exports.IconVoice = exports.IconVisitPage = exports.IconVideoReplay = exports.IconVideo2 = exports.IconVideo = exports.IconUsbHub = exports.IconUsb = exports.IconUpload = exports.IconUnlocked = exports.IconUndock = exports.IconUndo2 = exports.IconUndo = exports.IconUnderline = exports.IconUmbrella = exports.IconTrailer = exports.IconThumbsUp = exports.IconThumbsDown = exports.IconThermometer = exports.IconThermograph = exports.IconTextSize = exports.IconTelevision2 = exports.IconTelevision = exports.IconTarget3 = exports.IconTarget2 = exports.IconTarget = exports.IconTachographTimeCard = exports.IconTachograph = exports.IconTable = exports.IconSupport = exports.IconSun = exports.IconStrikeThrough = exports.IconStore = exports.IconStorage = exports.IconStopwatch = exports.IconStarFilled = exports.IconStarAi = exports.IconStar = exports.IconSquare = exports.IconSpeaker = exports.IconSortVertical = exports.IconSortHorizontal = exports.IconSort2Vertical = exports.IconSort2Horizontal = exports.IconSmiley = exports.IconSign = exports.IconSidebar = exports.IconShield4 = void 0;
18
+ exports.isButton = exports.findPrevFocusable = exports.findNextFocusable = exports.findLastFocusable = exports.findFirstFocusable = exports.Menu = exports.ControlledMenu = exports.isDragNotClick = exports.changeOrder = exports.ListItem = exports.List = exports.ItemData = exports.ItemCompact = exports.LineChartMini = exports.getDefaultDatasetStyle = exports.htmlLegendPlugin = exports.LEGEND_PLUGIN_ID = exports.LineChart = exports.useLayoutSize = exports.LayoutFullScreenProvider = exports.useLayoutFullScreen = exports.LayoutFullScreenElementProvider = exports.useLayoutFullScreenElement = exports.Layout = exports.ImageTapToUpload = exports.ImageNothingFound = exports.ImageNoMatchingAssets = exports.ImageLooking = exports.ImageCloudUpload = exports.ImageAdjustFilter = exports.IconZoom2 = exports.IconZoom = exports.IconZone = exports.IconYen = exports.IconWrite = exports.IconWrench = exports.IconWorld = exports.IconWorkday = exports.IconWifi2 = exports.IconWifi = exports.IconWhisper = exports.IconWebcam = exports.IconWatch2 = exports.IconWatch = exports.IconWarning = exports.IconWallet1 = exports.IconWallet = exports.IconVolumeOn = exports.IconVolumeOff = exports.IconVolumeMinimum = void 0;
19
+ exports.SummaryTileBarDisplayName = exports.SummaryTileBar = exports.getTypeClassName = exports.SummaryTileTrigger = exports.SummaryTile = exports.SummaryTileDisplayName = exports.SummaryTileSize = exports.SummaryTileType = exports.Summary = exports.Summaries = exports.Stepper = exports.SortControl = exports.SortDirections = exports.Skeleton = exports.LazyContent = exports.SidePanel = exports.CUSTOM_POPUP_COMPONENT_CLASSNAME = exports.SidePanelCloseReason = exports.isChildPopup = exports.SelectField = exports.Select = exports.SearchInput = exports.Range = exports.RadioGroup = exports.Radio = exports.ProgressBar = exports.ProgreesBarSize = exports.ProgressBarType = exports.PrimaryIcon = exports.Popup = exports.PillExpandable = exports.Pill = exports.PaginationType = exports.Pagination = exports.PageLayout = exports.PageContentLayout = exports.PageHeaderMenu = exports.PageHeaderMenuDisplayName = exports.PageHeaderButton = exports.PageHeaderButtonDisplayName = exports.PageHeader = exports.PageHeaderDisplayName = exports.Notification = exports.getPredefinedFocusableItem = exports.DialogContentNew = exports.Modal = exports.MobileSheet = exports.MiniTabs = exports.MiniTabsSize = exports.isLink = void 0;
20
+ exports.Waiting = exports.UserFormatProvider = exports.useDrive = exports.ThemeProvider = exports.ThemeDrive = exports.ThemeDark = exports.useLanguage = exports.useDirection = exports.injectString = exports.dictionaries = exports.LanguageProvider = exports.getFirstFocusableItem = exports.getNewFocusableItem = exports.HeaderButtonsProvider = exports.AbortablePromise = exports.Tooltip = exports.removeArrowClasses = exports.calculateArrowPosition = exports.ToggleButtonRaw = exports.ToggleButton = exports.Toast = exports.useToast = exports.TimePicker = exports.TextareaRaw = exports.Textarea = exports.TextInputRaw = exports.TextInput = exports.TextIconButton = exports.ButtonIconPosition = exports.Tabs = exports.TabsDisplayName = exports.ActionLinkColumn = exports.CheckboxColumn = exports.MainColumn = exports.ActionsColumn = exports.getSortableValue = exports.ColumnSortDirection = exports.getEmptySelection = exports.Table = exports.useNestedRows = exports.NestedData = exports.TabBarContent = exports.TabBar = void 0;
21
21
  /* eslint-disable max-len */
22
22
  var absolute_1 = require("./absolute/absolute");
23
23
  Object.defineProperty(exports, "Absolute", { enumerable: true, get: function () { return absolute_1.Absolute; } });
@@ -1208,6 +1208,8 @@ var iconPin_1 = require("./icons/iconPin");
1208
1208
  Object.defineProperty(exports, "IconPin", { enumerable: true, get: function () { return iconPin_1.IconPin; } });
1209
1209
  var iconPin2_1 = require("./icons/iconPin2");
1210
1210
  Object.defineProperty(exports, "IconPin2", { enumerable: true, get: function () { return iconPin2_1.IconPin2; } });
1211
+ var iconPinFilled_1 = require("./icons/iconPinFilled");
1212
+ Object.defineProperty(exports, "IconPinFilled", { enumerable: true, get: function () { return iconPinFilled_1.IconPinFilled; } });
1211
1213
  var iconPinLocation_1 = require("./icons/iconPinLocation");
1212
1214
  Object.defineProperty(exports, "IconPinLocation", { enumerable: true, get: function () { return iconPinLocation_1.IconPinLocation; } });
1213
1215
  var iconPinLocation2_1 = require("./icons/iconPinLocation2");
@@ -13,5 +13,7 @@ export interface IListItem extends IZenComponentProps {
13
13
  link?: string;
14
14
  target?: React.HTMLAttributeAnchorTarget;
15
15
  onDragStart?: (e: React.PointerEvent<HTMLElement>) => void;
16
+ wrap?: boolean;
17
+ vertical?: boolean;
16
18
  }
17
- export declare const ListItem: ({ id, className, image, name, secondary, status, actions, onClick, link, target, onDragStart }: IListItem) => import("react/jsx-runtime").JSX.Element;
19
+ export declare const ListItem: ({ id, className, image, name, secondary, status, actions, onClick, link, target, onDragStart, wrap, vertical }: IListItem) => import("react/jsx-runtime").JSX.Element;
@@ -87,7 +87,9 @@ const ListItem = ({
87
87
  onClick,
88
88
  link,
89
89
  target,
90
- onDragStart
90
+ onDragStart,
91
+ wrap,
92
+ vertical
91
93
  }) => {
92
94
  const isMobile = (0, useMobile_1.useMobile)();
93
95
  const driveClassName = (0, useDriveClassName_1.useDriveClassName)("zen-list-item");
@@ -177,7 +179,7 @@ const ListItem = ({
177
179
  const clickableClassName = (0, react_1.useMemo)(() => onClick || link ? "zen-list-item--clickable" : "", [link, onClick]);
178
180
  return (0, jsx_runtime_1.jsxs)("li", {
179
181
  id: id,
180
- className: (0, classNames_1.classNames)(["zen-list-item", mobileClassName || driveClassName || "", clickableClassName, className || ""]),
182
+ className: (0, classNames_1.classNames)(["zen-list-item", mobileClassName || driveClassName || "", clickableClassName, wrap ? "zen-list-item--wrap" : "", vertical ? "zen-list-item--vertical" : "", className || ""]),
181
183
  onClick: handleClick,
182
184
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
183
185
  ref: itemRef,
@@ -17,6 +17,7 @@ export interface IControlledMenu extends IZenComponentProps {
17
17
  ariaLabel?: string;
18
18
  ariaLabelledby?: string;
19
19
  listClassName?: string;
20
+ closeOnScroll?: boolean;
20
21
  }
21
22
  type TControlledMenu = FC<IControlledMenu> & {
22
23
  Item: FC<IMenuControlledItem>;
@@ -23,7 +23,7 @@ const generateId_1 = require("../commonHelpers/generateId");
23
23
  const pathProvider_1 = require("./contexts/pathProvider");
24
24
  const menuSeparator_1 = require("./components/menuSeparator");
25
25
  const focusableSelector_1 = require("../utils/focusableSelector");
26
- const ControlledMenu = ({ children, isOpen, setIsOpen, triggerRef, ariaLabel, ariaLabelledby, id, title, className = "", listClassName = "", paddingX = 0, paddingY = 0, alignment }) => {
26
+ const ControlledMenu = ({ children, isOpen, setIsOpen, triggerRef, ariaLabel, ariaLabelledby, id, title, className = "", listClassName = "", paddingX = 0, paddingY = 0, alignment, closeOnScroll = true }) => {
27
27
  const [deviceType, setDeviceType] = (0, react_1.useState)(deviceType_1.DeviceType.Desktop);
28
28
  const isMobile = deviceType === deviceType_1.DeviceType.Mobile;
29
29
  const memoizedOnChange = (0, react_1.useCallback)(setIsOpen, [setIsOpen]);
@@ -218,7 +218,7 @@ const ControlledMenu = ({ children, isOpen, setIsOpen, triggerRef, ariaLabel, ar
218
218
  if (isMobile) {
219
219
  return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(pathProvider_1.PathProvider, { path: path, onOpenBranch: onOpenBranch, closeBranch: closeBranch, navigatedViaKeyboardRef: navigatedViaKeyboardRef, keyboardActiveRef: keyboardActiveRef, children: (0, jsx_runtime_1.jsxs)(mobileSheet_1.MobileSheet, { label: title, isOpen: isOpen, triggerRef: triggerRef, onHidePanel: hideMenu, onCloseClick: hideMenu, children: [(0, jsx_runtime_1.jsx)(mobileSheet_1.MobileSheet.Title, { children: title }), (0, jsx_runtime_1.jsx)(mobileSheet_1.MobileSheet.Content, { children: renderMenuList() })] }) }) }));
220
220
  }
221
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(pathProvider_1.PathProvider, { path: path, onOpenBranch: onOpenBranch, closeBranch: closeBranch, navigatedViaKeyboardRef: navigatedViaKeyboardRef, keyboardActiveRef: keyboardActiveRef, children: (0, jsx_runtime_1.jsx)(controlledPopup_1.ControlledPopup, { id: id, useTrapFocusWithTrigger: "on", className: (0, classNames_1.classNames)(["zen-controlled-menu", className]), onOpenChange: memoizedOnChange, isOpen: isOpen, triggerRef: triggerRef, paddingX: paddingX, paddingY: paddingY, alignment: alignment, ariaLabelledby: ariaLabelledby, ariaLabel: ariaLabel || title, recalculateOnScroll: true,
221
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(pathProvider_1.PathProvider, { path: path, onOpenBranch: onOpenBranch, closeBranch: closeBranch, navigatedViaKeyboardRef: navigatedViaKeyboardRef, keyboardActiveRef: keyboardActiveRef, children: (0, jsx_runtime_1.jsx)(controlledPopup_1.ControlledPopup, { id: id, useTrapFocusWithTrigger: "on", className: (0, classNames_1.classNames)(["zen-controlled-menu", className]), onOpenChange: memoizedOnChange, isOpen: isOpen, triggerRef: triggerRef, paddingX: paddingX, paddingY: paddingY, alignment: alignment, ariaLabelledby: ariaLabelledby, ariaLabel: ariaLabel || title, closeOnScroll: closeOnScroll,
222
222
  // focusOnOpen is false - ControlledMenu handles focus based on input method
223
223
  // (keyboard vs mouse) in its own useEffect
224
224
  focusOnOpen: false, children: renderMenuList() }) }) }));
@@ -49,10 +49,10 @@ injectString("da-DK", "Close", "Luk");
49
49
  injectString("de", "Close", "Schlie\xDFen");
50
50
  injectString("en", "Close", "Close");
51
51
  injectString("es", "Close", "Cerrar");
52
- injectString("fi-FI", "Close", "Sulje");
52
+ injectString("fi-FI", "Close", "Sulkea");
53
53
  injectString("fr", "Close", "Fermer");
54
54
  injectString("fr-FR", "Close", "Fermer");
55
- injectString("hu-HU", "Close", "Z\xE1rd be.");
55
+ injectString("hu-HU", "Close", "Bez\xE1r\xE1s");
56
56
  injectString("id", "Close", "Tutup");
57
57
  injectString("it", "Close", "Chiudere");
58
58
  injectString("ja", "Close", "\u9589\u3058\u308B");
@@ -63,13 +63,13 @@ injectString("nl", "Close", "Sluiten");
63
63
  injectString("pl", "Close", "Zamknij");
64
64
  injectString("pt-BR", "Close", "Fechar");
65
65
  injectString("pt-PT", "Close", "Fechar");
66
- injectString("sk-SK", "Close", "Zatvor");
66
+ injectString("sk-SK", "Close", "Zatvori\u0165");
67
67
  injectString("sv", "Close", "St\xE4ng");
68
68
  injectString("th", "Close", "\u0E1B\u0E34\u0E14");
69
69
  injectString("tr", "Close", "Kapat");
70
70
  injectString("zh-Hans", "Close", "\u5173\u95ED");
71
71
  injectString("zh-TW", "Close", "\u95DC\u9589");
72
- injectString("ro-RO", "Close", "\xCEnchide\u021Bi");
72
+ injectString("ro-RO", "Close", "\xCEnchide");
73
73
  injectString("ar-SA", "Close", "\u0625\u063A\u0644\u0627\u0642");
74
74
  const iconBackArrow_1 = require("../icons/deprecated/iconBackArrow");
75
75
  const iconClose_1 = require("../icons/iconClose");
@@ -45,10 +45,10 @@ injectString("da-DK", "Close", "Luk");
45
45
  injectString("de", "Close", "Schlie\xDFen");
46
46
  injectString("en", "Close", "Close");
47
47
  injectString("es", "Close", "Cerrar");
48
- injectString("fi-FI", "Close", "Sulje");
48
+ injectString("fi-FI", "Close", "Sulkea");
49
49
  injectString("fr", "Close", "Fermer");
50
50
  injectString("fr-FR", "Close", "Fermer");
51
- injectString("hu-HU", "Close", "Z\xE1rd be.");
51
+ injectString("hu-HU", "Close", "Bez\xE1r\xE1s");
52
52
  injectString("id", "Close", "Tutup");
53
53
  injectString("it", "Close", "Chiudere");
54
54
  injectString("ja", "Close", "\u9589\u3058\u308B");
@@ -59,13 +59,13 @@ injectString("nl", "Close", "Sluiten");
59
59
  injectString("pl", "Close", "Zamknij");
60
60
  injectString("pt-BR", "Close", "Fechar");
61
61
  injectString("pt-PT", "Close", "Fechar");
62
- injectString("sk-SK", "Close", "Zatvor");
62
+ injectString("sk-SK", "Close", "Zatvori\u0165");
63
63
  injectString("sv", "Close", "St\xE4ng");
64
64
  injectString("th", "Close", "\u0E1B\u0E34\u0E14");
65
65
  injectString("tr", "Close", "Kapat");
66
66
  injectString("zh-Hans", "Close", "\u5173\u95ED");
67
67
  injectString("zh-TW", "Close", "\u95DC\u9589");
68
- injectString("ro-RO", "Close", "\xCEnchide\u021Bi");
68
+ injectString("ro-RO", "Close", "\xCEnchide");
69
69
  injectString("ar-SA", "Close", "\u0625\u063A\u0644\u0627\u0642");
70
70
  const react_1 = __importStar(require("react"));
71
71
  const classNames_1 = require("../commonHelpers/classNames/classNames");
package/dist/nav/nav.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { IZenComponentProps } from "../commonHelpers/zenComponent";
2
2
  import "./nav.less";
3
+ import { FC } from "react";
4
+ import { NavEmpty } from "./navEmpty/navEmpty";
3
5
  export interface INav extends IZenComponentProps {
4
6
  mobileBarContainer: HTMLElement | null;
5
7
  collapsed?: boolean;
@@ -8,8 +10,12 @@ export interface INav extends IZenComponentProps {
8
10
  isMobileMenuOpen?: boolean;
9
11
  onIsMobileMenuOpenToggle?: (isOpen: boolean) => void;
10
12
  onEditModeToggle?: (isEdit: boolean) => void;
13
+ showEmptyState?: boolean;
14
+ showSectionDividers?: boolean;
11
15
  }
12
16
  /**
13
17
  * @beta This component is not fully ready yet and may change in future releases.
14
18
  */
15
- export declare const Nav: ({ children, className, collapsed, onCollapseToggle, onMenuVisibilityToggle, mobileBarContainer, isMobileMenuOpen, onIsMobileMenuOpenToggle, onEditModeToggle }: INav) => import("react/jsx-runtime").JSX.Element;
19
+ export declare const Nav: FC<INav> & {
20
+ Empty: typeof NavEmpty;
21
+ };
package/dist/nav/nav.js CHANGED
@@ -13,6 +13,8 @@ const navMobileBar_1 = require("./navMobileBar/navMobileBar");
13
13
  const useMobile_1 = require("../commonHelpers/hooks/useMobile");
14
14
  const focusableSelector_1 = require("../utils/focusableSelector");
15
15
  const zen_1 = require("../utils/zen");
16
+ const emptyState_1 = require("../emptyState/emptyState");
17
+ const navEmpty_1 = require("./navEmpty/navEmpty");
16
18
  const NavContent = ({ children }) => {
17
19
  const { isEditState } = (0, nav_context_1.useNavContext)();
18
20
  const contentRef = (0, react_1.useRef)(null);
@@ -54,7 +56,8 @@ const NavContent = ({ children }) => {
54
56
  /**
55
57
  * @beta This component is not fully ready yet and may change in future releases.
56
58
  */
57
- const Nav = ({ children, className, collapsed = false, onCollapseToggle, onMenuVisibilityToggle, mobileBarContainer, isMobileMenuOpen = false, onIsMobileMenuOpenToggle, onEditModeToggle
59
+ // eslint-disable-next-line @typescript-eslint/naming-convention
60
+ const Nav = ({ children, className, collapsed = false, onCollapseToggle, onMenuVisibilityToggle, mobileBarContainer, isMobileMenuOpen = false, onIsMobileMenuOpenToggle, onEditModeToggle, showEmptyState = false, showSectionDividers = true
58
61
  // eslint-disable-next-line complexity
59
62
  }) => {
60
63
  const menuRef = (0, react_1.useRef)(null);
@@ -91,8 +94,11 @@ const Nav = ({ children, className, collapsed = false, onCollapseToggle, onMenuV
91
94
  const secondaryFooter = footer && (0, navUtils_1.filterPrimaryNavItems)(footer, true);
92
95
  const primaryFooter = footer && (0, navUtils_1.filterPrimaryNavItems)(footer, false);
93
96
  const footerToRender = isEditState ? editFooter : isMobile ? secondaryFooter : footer;
97
+ const isCollapsedEmptyState = !isEditState && showEmptyState && collapsed && !isMobile;
98
+ const shouldRenderEmptyState = !isEditState && showEmptyState && !isCollapsedEmptyState;
94
99
  const primaryItems = [...primarySections, ...(primaryFooter ? [primaryFooter] : [])].flatMap(e => (0, navUtils_1.collectNavItems)(e));
95
100
  const editListItems = childrenArray.find(child => { var _a; return ((_a = child.type) === null || _a === void 0 ? void 0 : _a.displayName) === "NavEditSection"; });
101
+ const navEmptyChild = childrenArray.find(child => { var _a; return ((_a = child.type) === null || _a === void 0 ? void 0 : _a.displayName) === "NavEmpty"; });
96
102
  const onSearchOpen = (0, react_1.useCallback)((isOpen) => {
97
103
  isOpen && onCollapseToggle && onCollapseToggle(false);
98
104
  setIsSearchOpen(isOpen || isMobile);
@@ -154,10 +160,9 @@ const Nav = ({ children, className, collapsed = false, onCollapseToggle, onMenuV
154
160
  className || ""
155
161
  ]), children: [header
156
162
  ? (0, react_1.cloneElement)(header, Object.assign(Object.assign({}, header.props), { className: (0, classNames_1.classNames)(["zen-nav__header", header.props.className || ""]) }))
157
- : null, (0, jsx_runtime_1.jsx)(NavContent, { children: isEditState
158
- ? editListItems
159
- : sectionsToRender.map((section, index) => ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, react_1.cloneElement)(section, {
160
- className: (0, classNames_1.classNames)(["zen-nav__section", section.props.className || ""])
161
- }), isMobile || index < sectionsToRender.length - 1 ? (0, jsx_runtime_1.jsx)(navDivider_1.NavDivider, {}) : null] }, index))) }), footerToRender] })) : null, mobileBarContainer && isMobile && navMobileBarPortal] }));
163
+ : null, (0, jsx_runtime_1.jsx)(NavContent, { children: isEditState ? (editListItems) : isCollapsedEmptyState ? null : shouldRenderEmptyState ? ((0, jsx_runtime_1.jsx)("div", { className: "zen-nav__empty-state", children: (0, jsx_runtime_1.jsx)(emptyState_1.EmptyState, { description: navEmptyChild === null || navEmptyChild === void 0 ? void 0 : navEmptyChild.props.description, image: navEmptyChild === null || navEmptyChild === void 0 ? void 0 : navEmptyChild.props.image, children: navEmptyChild === null || navEmptyChild === void 0 ? void 0 : navEmptyChild.props.children }) })) : (sectionsToRender.map((section, index) => ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, react_1.cloneElement)(section, {
164
+ className: (0, classNames_1.classNames)(["zen-nav__section", section.props.className || ""])
165
+ }), showSectionDividers && (isMobile || index < sectionsToRender.length - 1) ? (0, jsx_runtime_1.jsx)(navDivider_1.NavDivider, {}) : null] }, index)))) }), footerToRender] })) : null, mobileBarContainer && isMobile && navMobileBarPortal] }));
162
166
  };
163
167
  exports.Nav = Nav;
168
+ exports.Nav.Empty = navEmpty_1.NavEmpty;
@@ -0,0 +1,10 @@
1
+ import { ReactNode } from "react";
2
+ export interface INavEmpty {
3
+ description?: string;
4
+ image?: ReactNode | React.FC;
5
+ children?: ReactNode;
6
+ }
7
+ export declare const NavEmpty: {
8
+ (_: INavEmpty): import("react/jsx-runtime").JSX.Element;
9
+ displayName: string;
10
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NavEmpty = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const NavEmpty = (_) => (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
6
+ exports.NavEmpty = NavEmpty;
7
+ exports.NavEmpty.displayName = "NavEmpty";
@@ -19,10 +19,10 @@ injectString("da-DK", "Close", "Luk");
19
19
  injectString("de", "Close", "Schlie\xDFen");
20
20
  injectString("en", "Close", "Close");
21
21
  injectString("es", "Close", "Cerrar");
22
- injectString("fi-FI", "Close", "Sulje");
22
+ injectString("fi-FI", "Close", "Sulkea");
23
23
  injectString("fr", "Close", "Fermer");
24
24
  injectString("fr-FR", "Close", "Fermer");
25
- injectString("hu-HU", "Close", "Z\xE1rd be.");
25
+ injectString("hu-HU", "Close", "Bez\xE1r\xE1s");
26
26
  injectString("id", "Close", "Tutup");
27
27
  injectString("it", "Close", "Chiudere");
28
28
  injectString("ja", "Close", "\u9589\u3058\u308B");
@@ -33,13 +33,13 @@ injectString("nl", "Close", "Sluiten");
33
33
  injectString("pl", "Close", "Zamknij");
34
34
  injectString("pt-BR", "Close", "Fechar");
35
35
  injectString("pt-PT", "Close", "Fechar");
36
- injectString("sk-SK", "Close", "Zatvor");
36
+ injectString("sk-SK", "Close", "Zatvori\u0165");
37
37
  injectString("sv", "Close", "St\xE4ng");
38
38
  injectString("th", "Close", "\u0E1B\u0E34\u0E14");
39
39
  injectString("tr", "Close", "Kapat");
40
40
  injectString("zh-Hans", "Close", "\u5173\u95ED");
41
41
  injectString("zh-TW", "Close", "\u95DC\u9589");
42
- injectString("ro-RO", "Close", "\xCEnchide\u021Bi");
42
+ injectString("ro-RO", "Close", "\xCEnchide");
43
43
  injectString("ar-SA", "Close", "\u0625\u063A\u0644\u0627\u0642");
44
44
  const pushNotification_1 = __importDefault(require("./pushNotification/pushNotification"));
45
45
  const classNames_1 = require("../commonHelpers/classNames/classNames");
@@ -9,7 +9,7 @@ const PushNotification = ({ children, isOpen }) => {
9
9
  if (!ref.current || !isOpen) {
10
10
  return;
11
11
  }
12
- ref.current.animate([{ left: "120%" }, { left: "0%" }], {
12
+ ref.current.animate([{ insetInlineStart: "120%" }, { insetInlineStart: "0%" }], {
13
13
  duration: 150,
14
14
  iterations: 1,
15
15
  delay: 0
@@ -20,10 +20,10 @@ injectString("da-DK", "Close", "Luk");
20
20
  injectString("de", "Close", "Schlie\xDFen");
21
21
  injectString("en", "Close", "Close");
22
22
  injectString("es", "Close", "Cerrar");
23
- injectString("fi-FI", "Close", "Sulje");
23
+ injectString("fi-FI", "Close", "Sulkea");
24
24
  injectString("fr", "Close", "Fermer");
25
25
  injectString("fr-FR", "Close", "Fermer");
26
- injectString("hu-HU", "Close", "Z\xE1rd be.");
26
+ injectString("hu-HU", "Close", "Bez\xE1r\xE1s");
27
27
  injectString("id", "Close", "Tutup");
28
28
  injectString("it", "Close", "Chiudere");
29
29
  injectString("ja", "Close", "\u9589\u3058\u308B");
@@ -34,13 +34,13 @@ injectString("nl", "Close", "Sluiten");
34
34
  injectString("pl", "Close", "Zamknij");
35
35
  injectString("pt-BR", "Close", "Fechar");
36
36
  injectString("pt-PT", "Close", "Fechar");
37
- injectString("sk-SK", "Close", "Zatvor");
37
+ injectString("sk-SK", "Close", "Zatvori\u0165");
38
38
  injectString("sv", "Close", "St\xE4ng");
39
39
  injectString("th", "Close", "\u0E1B\u0E34\u0E14");
40
40
  injectString("tr", "Close", "Kapat");
41
41
  injectString("zh-Hans", "Close", "\u5173\u95ED");
42
42
  injectString("zh-TW", "Close", "\u95DC\u9589");
43
- injectString("ro-RO", "Close", "\xCEnchide\u021Bi");
43
+ injectString("ro-RO", "Close", "\xCEnchide");
44
44
  injectString("ar-SA", "Close", "\u0625\u063A\u0644\u0627\u0642");
45
45
  const useDriveClassName_1 = require("../../../utils/theme/useDriveClassName");
46
46
  const NonActionablePill = ({
@@ -16,24 +16,24 @@ injectString("es", "View all", "Ver todo");
16
16
  injectString("fi-FI", "View all", "N\xE4yt\xE4 kaikki");
17
17
  injectString("fr", "View all", "Afficher tout");
18
18
  injectString("fr-FR", "View all", "Tout afficher");
19
- injectString("hu-HU", "View all", "Mutasd az \xF6sszeset.");
19
+ injectString("hu-HU", "View all", "\xD6sszes megtekint\xE9se");
20
20
  injectString("id", "View all", "Lihat semua");
21
21
  injectString("it", "View all", "Visualizzare tutto");
22
22
  injectString("ja", "View all", "\u3059\u3079\u3066\u8868\u793A");
23
23
  injectString("ko-KR", "View all", "\uC804\uCCB4 \uBCF4\uAE30");
24
24
  injectString("ms", "View all", "Lihat semua");
25
- injectString("nb-NO", "View all", "Se alle");
25
+ injectString("nb-NO", "View all", "Vis alle");
26
26
  injectString("nl", "View all", "Alles weergeven");
27
27
  injectString("pl", "View all", "Wy\u015Bwietl wszystkie");
28
28
  injectString("pt-BR", "View all", "Visualizar tudo");
29
- injectString("pt-PT", "View all", "Visualizar tudo");
29
+ injectString("pt-PT", "View all", "Ver tudo");
30
30
  injectString("sk-SK", "View all", "Zobrazi\u0165 v\u0161etko");
31
31
  injectString("sv", "View all", "Visa alla");
32
32
  injectString("th", "View all", "\u0E14\u0E39\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14");
33
33
  injectString("tr", "View all", "T\xFCm\xFCn\xFC g\xF6r\xFCnt\xFCle");
34
34
  injectString("zh-Hans", "View all", "\u67E5\u770B\u5168\u90E8");
35
35
  injectString("zh-TW", "View all", "\u6AA2\u8996\u5168\u90E8");
36
- injectString("ro-RO", "View all", "Afi\u0219a\u021Bi tot");
36
+ injectString("ro-RO", "View all", "Vezi tot");
37
37
  injectString("ar-SA", "View all", "\u0639\u0631\u0636 \u0627\u0644\u0643\u0644");
38
38
  injectString("cs", "Expand", "Rozbalit");
39
39
  injectString("da-DK", "Expand", "Udvid");
@@ -44,10 +44,10 @@ injectString("da-DK", "Close", "Luk");
44
44
  injectString("de", "Close", "Schlie\xDFen");
45
45
  injectString("en", "Close", "Close");
46
46
  injectString("es", "Close", "Cerrar");
47
- injectString("fi-FI", "Close", "Sulje");
47
+ injectString("fi-FI", "Close", "Sulkea");
48
48
  injectString("fr", "Close", "Fermer");
49
49
  injectString("fr-FR", "Close", "Fermer");
50
- injectString("hu-HU", "Close", "Z\xE1rd be.");
50
+ injectString("hu-HU", "Close", "Bez\xE1r\xE1s");
51
51
  injectString("id", "Close", "Tutup");
52
52
  injectString("it", "Close", "Chiudere");
53
53
  injectString("ja", "Close", "\u9589\u3058\u308B");
@@ -58,13 +58,13 @@ injectString("nl", "Close", "Sluiten");
58
58
  injectString("pl", "Close", "Zamknij");
59
59
  injectString("pt-BR", "Close", "Fechar");
60
60
  injectString("pt-PT", "Close", "Fechar");
61
- injectString("sk-SK", "Close", "Zatvor");
61
+ injectString("sk-SK", "Close", "Zatvori\u0165");
62
62
  injectString("sv", "Close", "St\xE4ng");
63
63
  injectString("th", "Close", "\u0E1B\u0E34\u0E14");
64
64
  injectString("tr", "Close", "Kapat");
65
65
  injectString("zh-Hans", "Close", "\u5173\u95ED");
66
66
  injectString("zh-TW", "Close", "\u95DC\u9589");
67
- injectString("ro-RO", "Close", "\xCEnchide\u021Bi");
67
+ injectString("ro-RO", "Close", "\xCEnchide");
68
68
  injectString("ar-SA", "Close", "\u0625\u063A\u0644\u0627\u0642");
69
69
  const useMobile_1 = require("../../commonHelpers/hooks/useMobile");
70
70
  const DetailPanelHeader = ({
@@ -16,10 +16,9 @@ export interface IColumnsGroup {
16
16
  interface IColumnSettingsList<T extends IRowEntity<N>, N extends IEntityWithId> extends IZenComponentProps {
17
17
  columns: IListColumn<T, N>[];
18
18
  settings: Map<string, boolean>;
19
- firstColumn: string;
20
19
  onChange?: (newState: Map<string, boolean>) => void;
21
20
  sortGroups?: (a: string, b: string) => number;
22
21
  sortColumns?: (a: string, b: string) => number;
23
22
  }
24
- export declare function ColumnSettingsList<T extends IRowEntity<N>, N extends IEntityWithId>({ columns, settings, firstColumn, onChange, sortGroups, sortColumns }: IColumnSettingsList<T, N>): import("react/jsx-runtime").JSX.Element[];
23
+ export declare function ColumnSettingsList<T extends IRowEntity<N>, N extends IEntityWithId>({ columns, settings, onChange, sortGroups, sortColumns }: IColumnSettingsList<T, N>): import("react/jsx-runtime").JSX.Element[];
25
24
  export {};
@@ -44,7 +44,7 @@ const SubColumnsList = ({
44
44
  title,
45
45
  columns,
46
46
  settings,
47
- firstColumn,
47
+ lastVisibleColumnId,
48
48
  onChange,
49
49
  sortColumns
50
50
  }) => {
@@ -61,10 +61,10 @@ const SubColumnsList = ({
61
61
  const items = (0, react_1.useMemo)(() => columns.sort(sortColumnsInt).map(c => ({
62
62
  id: c.id,
63
63
  title: c.title,
64
- disabled: c.id === firstColumn,
64
+ disabled: !!c.alwaysVisible || c.id === lastVisibleColumnId,
65
65
  showCheckbox: true,
66
66
  children: c.title
67
- })), [columns, firstColumn, sortColumnsInt]);
67
+ })), [columns, sortColumnsInt, lastVisibleColumnId]);
68
68
  const state = columns.reduce((res, c) => {
69
69
  res.set(c.id, settings.get(c.id) !== false ? checkboxState_1.CheckboxState.On : checkboxState_1.CheckboxState.Off);
70
70
  return res;
@@ -100,7 +100,6 @@ const SubColumnsList = ({
100
100
  function ColumnSettingsList({
101
101
  columns,
102
102
  settings,
103
- firstColumn,
104
103
  onChange,
105
104
  sortGroups,
106
105
  sortColumns
@@ -112,11 +111,13 @@ function ColumnSettingsList({
112
111
  }
113
112
  return 0;
114
113
  }, [sortGroups]);
114
+ const visibleColumns = columns.filter(c => settings.get(c.id) !== false);
115
+ const lastVisibleColumnId = visibleColumns.length === 1 ? visibleColumns[0].id : undefined;
115
116
  return Array.from(groupped.entries()).sort(sortGroupsInt).map(([title, cs]) => (0, jsx_runtime_1.jsx)(SubColumnsList, {
116
117
  title: title,
117
118
  columns: cs,
118
119
  settings: settings,
119
- firstColumn: firstColumn,
120
+ lastVisibleColumnId: lastVisibleColumnId,
120
121
  onChange: onChange,
121
122
  sortColumns: sortColumns
122
123
  }, cs.map(c => c.id).join("-")));
@@ -56,13 +56,10 @@ const ColumnsPopup = ({
56
56
  translate
57
57
  } = (0, useLanguage_1.useLanguage)();
58
58
  const listOfColumns = (0, react_1.useMemo)(() => {
59
- var _a;
60
- const firstColumn = ((_a = columns[0]) === null || _a === void 0 ? void 0 : _a.id) || "";
61
59
  const columnSettingsMap = new Map(columnSettings.map(s => [s.name, s.visible]));
62
60
  return (0, jsx_runtime_1.jsx)(columnsList_1.ColumnSettingsList, {
63
61
  columns: columns.filter(c => c.title),
64
62
  settings: columnSettingsMap,
65
- firstColumn: firstColumn,
66
63
  onChange: newSettings => {
67
64
  const settings = columnSettings.map(s => {
68
65
  const visible = newSettings.get(s.name) !== false;
@@ -17,4 +17,5 @@ export declare const getColumnSettings: (pageName: string, defaultValue?: IColum
17
17
  export declare const useFlexibleColumns: <T extends IRowEntity<N>, N extends IEntityWithId>(columns: IListColumn<T, N>[], flexible: IFlexibleColumnsOptions | undefined, gridRef: RefObject<HTMLElement | null>, columnsPopupRef: RefObject<HTMLElement | null> | undefined, isFeed: boolean) => {
18
18
  flexibleColumns: IListColumn<T, N>[];
19
19
  columnsPopup: import("react/jsx-runtime").JSX.Element | null;
20
+ allColumnsHidden: boolean;
20
21
  };
@@ -116,11 +116,12 @@ const useFlexibleColumns = (columns, flexible, gridRef, columnsPopupRef, isFeed)
116
116
  if (flexible.columnsPopup === false) {
117
117
  return null;
118
118
  }
119
- if (flexibleColumns.length === 0) {
119
+ const configurableColumns = columns.filter(c => c.title && !(c.columnComponent instanceof actionsColumn_1.ActionsColumn));
120
+ if (configurableColumns.length === 0 || configurableColumns.every(c => c.alwaysVisible)) {
120
121
  return null;
121
122
  }
122
123
  return ((0, jsx_runtime_1.jsx)(columnsPopup_1.ColumnsPopup, { columns: columns.filter(c => !(c.columnComponent instanceof actionsColumn_1.ActionsColumn)), columnSettings: columnSettings, triggerRef: columnsPopupRef, sortGroups: flexible.sortGroups, sortColumns: flexible.sortColumns, onReset: onResetListener, onChange: onChangeListener }));
123
- }, [columnSettings, columns, columnsPopupRef, flexible, flexibleColumns.length, onChangeListener, onResetListener]);
124
+ }, [columnSettings, columns, columnsPopupRef, flexible, onChangeListener, onResetListener]);
124
125
  const onReorderListener = (0, react_1.useCallback)(async ([from, to]) => {
125
126
  if (from === to) {
126
127
  return;
@@ -177,6 +178,6 @@ const useFlexibleColumns = (columns, flexible, gridRef, columnsPopupRef, isFeed)
177
178
  return;
178
179
  };
179
180
  }, [onResizeColumn, onReorderListener, gridRef, flexibleColumns, isFeed, isDraggable]);
180
- return { flexibleColumns, columnsPopup };
181
+ return { flexibleColumns, columnsPopup, allColumnsHidden: !!flexible && flexibleColumns.length === 0 };
181
182
  };
182
183
  exports.useFlexibleColumns = useFlexibleColumns;
@@ -31,6 +31,7 @@ export declare const useLoading: <T extends IRowEntity<N>, N extends IEntityWith
31
31
  wrappers?: import("../table").IListColumnWrapper<T, N>[] | undefined;
32
32
  sortable?: boolean | undefined;
33
33
  draggable?: boolean | undefined;
34
+ alwaysVisible?: boolean | undefined;
34
35
  colspan?: number | ((entity: T | N) => number | undefined) | undefined;
35
36
  group?: string | undefined;
36
37
  visible?: boolean | undefined;
@@ -9,7 +9,7 @@ const skeleton_1 = require("../../skeleton/skeleton");
9
9
  exports.DEFAULT_LOADING_ROWS = 50;
10
10
  const LoadingCell = ({ width, className }) => (0, jsx_runtime_1.jsx)(skeleton_1.Skeleton, { width: width, className: className });
11
11
  const useLoading = (columns, entities, isLoading, loading) => {
12
- const sampleEntity = (0, react_1.useMemo)(() => columns.map(column => ({ [column.id]: column.title })).reduce((acc, el) => (Object.assign(Object.assign({}, acc), el))), [columns]);
12
+ const sampleEntity = (0, react_1.useMemo)(() => columns.map(column => ({ [column.id]: column.title })).reduce((acc, el) => (Object.assign(Object.assign({}, acc), el)), {}), [columns]);
13
13
  // Cache skeleton entities with stable IDs - only regenerate when rows count or columns change
14
14
  // This prevents skeletons from flickering when unrelated Table props change
15
15
  const skeletonEntities = (0, react_1.useMemo)(() => new Array((loading === null || loading === void 0 ? void 0 : loading.rows) || exports.DEFAULT_LOADING_ROWS).fill(undefined).map(() => (Object.assign(Object.assign({}, sampleEntity), { isLoading: true, id: (0, generateId_1.generateId)() }))), [loading === null || loading === void 0 ? void 0 : loading.rows, sampleEntity]);
@@ -12,6 +12,7 @@ export declare const useNestedRows: <T extends IRowEntity<N>, N extends IEntityW
12
12
  meta?: import("../../dataGrid/listColumn").IListColumnMeta<T, N> | undefined;
13
13
  columnComponent?: import("../../dataGrid/listColumn").IColumnComponent<T, N> | undefined;
14
14
  wrappers?: import("../../dataGrid/listColumn").IListColumnWrapper<T, N>[] | undefined;
15
+ alwaysVisible?: boolean | undefined;
15
16
  colspan?: number | ((entity: T | N) => number | undefined) | undefined;
16
17
  }[];
17
18
  nestedFeedWrapper: (primaryData: ReactNode, secondaryData: ReactNode, entity: T | N, isNested: boolean) => [ReactNode, ReactNode];
@@ -149,6 +149,7 @@ const useSelectableRows = (columns, entities, isMobile, selectMode, setSelectMod
149
149
  setSelectMode(newValue.all || newValue.selected.length > 0);
150
150
  }, [checkboxDisabled, checkboxVisible, entities, selectable, setSelectMode, setState, getNewSelection]);
151
151
  const onChangeSelectionState = (0, react_1.useCallback)(newState => {
152
+ var _a, _b;
152
153
  if (newState === interfaces_1.SelectionState.All) {
153
154
  (selectable === null || selectable === void 0 ? void 0 : selectable.onSelect) && selectable.onSelect({
154
155
  selected: [],
@@ -167,8 +168,10 @@ const useSelectableRows = (columns, entities, isMobile, selectMode, setSelectMod
167
168
  }
168
169
  const newSelections = (0, getCurrentPageSelection_1.getCurrentPageSelection)(entities, selectable);
169
170
  setState(newState);
171
+ const previousSelections = (_b = (_a = selectable === null || selectable === void 0 ? void 0 : selectable.selection) === null || _a === void 0 ? void 0 : _a.selected) !== null && _b !== void 0 ? _b : [];
172
+ const mergedSelections = new Set([...previousSelections, ...newSelections]);
170
173
  const newValue = {
171
- selected: [...newSelections],
174
+ selected: [...mergedSelections],
172
175
  all: false
173
176
  };
174
177
  selectable === null || selectable === void 0 ? void 0 : selectable.onSelect(newValue);
@@ -228,9 +231,24 @@ const useSelectableRows = (columns, entities, isMobile, selectMode, setSelectMod
228
231
  checked: state === interfaces_1.SelectionState.CurrentPage || state === interfaces_1.SelectionState.All,
229
232
  indeterminate: state === interfaces_1.SelectionState.Partial,
230
233
  onChange: newValue => {
231
- const newState = newValue ? selectable.turnOffSelectAll ? interfaces_1.SelectionState.CurrentPage : interfaces_1.SelectionState.All : interfaces_1.SelectionState.None;
232
- setState(newState);
233
- onChangeSelectionState(newState);
234
+ var _a, _b;
235
+ if (newValue) {
236
+ const newState = selectable.turnOffSelectAll ? interfaces_1.SelectionState.CurrentPage : interfaces_1.SelectionState.All;
237
+ setState(newState);
238
+ onChangeSelectionState(newState);
239
+ } else {
240
+ // Intentionally different from onSelect(None) ("Deselect all" menu item, which clears everything).
241
+ // Unchecking the header checkbox only removes the current page from the selection, preserving other pages.
242
+ const currentPageIds = (0, getCurrentPageSelection_1.getCurrentPageSelection)(entities, selectable);
243
+ const remaining = ((_b = (_a = selectable.selection) === null || _a === void 0 ? void 0 : _a.selected) !== null && _b !== void 0 ? _b : []).filter(id => !currentPageIds.has(id));
244
+ const newState = remaining.length > 0 ? interfaces_1.SelectionState.Partial : interfaces_1.SelectionState.None;
245
+ setState(newState);
246
+ selectable.onSelect({
247
+ selected: remaining,
248
+ all: false
249
+ });
250
+ setSelectMode(remaining.length > 0);
251
+ }
234
252
  },
235
253
  calculateSelectionState: () => selectableState,
236
254
  checkboxInHeader: selectable.checkboxInHeader !== undefined ? selectable.checkboxInHeader : selectable.selectionLimit !== undefined ? false : undefined,
@@ -244,7 +262,7 @@ const useSelectableRows = (columns, entities, isMobile, selectMode, setSelectMod
244
262
  return cell;
245
263
  }
246
264
  };
247
- }, [checkboxDisabled, checkboxTitle, checkboxVisible, headerTitle, onChangeSelectionState, onSelectListener, selectable, selectableState, state, isMobile, checkboxPlaceholder, isEntityChecked]);
265
+ }, [checkboxDisabled, checkboxTitle, checkboxVisible, headerTitle, onChangeSelectionState, onSelectListener, selectable, selectableState, state, isMobile, checkboxPlaceholder, isEntityChecked, entities, setSelectMode]);
248
266
  const selectableFeedWrapper = (0, react_1.useCallback)((primaryData, secondaryData, entity, isNested) => {
249
267
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
250
268
  if (!entity) {