@geotab/zenith 3.11.1 → 3.12.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 (636) hide show
  1. package/README.md +24 -0
  2. package/dist/absolute/absolute.d.ts +21 -1
  3. package/dist/absolute/absolute.js +46 -6
  4. package/dist/advancedGroupsFilter/advancedGroupsFilter.js +3 -3
  5. package/dist/advancedGroupsFilter/advancedGroupsFilterForm.js +2 -2
  6. package/dist/advancedGroupsFilter/advancedGroupsFilterFormSection.js +7 -7
  7. package/dist/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.js +1 -1
  8. package/dist/alert/banner.d.ts +3 -1
  9. package/dist/alertRaw/alertRaw.js +1 -1
  10. package/dist/banner/banner.d.ts +5 -2
  11. package/dist/banner/banner.js +13 -2
  12. package/dist/banner/bannerErrorSummary.d.ts +7 -0
  13. package/dist/banner/bannerErrorSummary.js +8 -0
  14. package/dist/banner/bannerMultipLine.js +1 -1
  15. package/dist/banner/bannerSingleLine.js +1 -1
  16. package/dist/banner/utils/buildSummaryErrorList.d.ts +1 -0
  17. package/dist/banner/utils/buildSummaryErrorList.js +16 -0
  18. package/dist/banner/utils/hasSummaryErrorChild.d.ts +1 -0
  19. package/dist/banner/utils/hasSummaryErrorChild.js +7 -0
  20. package/dist/banner/utils/isSummaryErrorBanner.d.ts +2 -0
  21. package/dist/banner/utils/isSummaryErrorBanner.js +6 -0
  22. package/dist/banner/utils/isSummaryErrorElement.d.ts +3 -0
  23. package/dist/banner/utils/isSummaryErrorElement.js +7 -0
  24. package/dist/banner/utils/useSummaryBannerProp.d.ts +6 -0
  25. package/dist/banner/utils/useSummaryBannerProp.js +34 -0
  26. package/dist/betaPill/betaPill.js +4 -4
  27. package/dist/bookmark/bookmark.js +2 -2
  28. package/dist/bulkEditControl/bulkEditControl.js +5 -5
  29. package/dist/calendar/calendar.js +37 -34
  30. package/dist/calendar/calendarUtils.js +6 -4
  31. package/dist/card/card.js +1 -1
  32. package/dist/card/components/title.js +4 -1
  33. package/dist/card/components/titleLink.js +5 -2
  34. package/dist/chart/accessibleChart/accessibleChartNarrative.js +13 -13
  35. package/dist/chart/accessibleChart/accessibleChartTable.js +5 -5
  36. package/dist/chart/barChart/getDefaultOptions.d.ts +2 -1
  37. package/dist/chart/barChart/getDefaultOptions.js +5 -2
  38. package/dist/chart/barChart.js +6 -4
  39. package/dist/chart/chart.js +1 -1
  40. package/dist/chart/chartAxis/chartAxis.js +2 -2
  41. package/dist/chart/lineChart/getDefaultOptions.d.ts +4 -1
  42. package/dist/chart/lineChart/getDefaultOptions.js +7 -2
  43. package/dist/chart/lineChart.js +7 -3
  44. package/dist/chart/plugins/linePlugin/linePlugin.js +5 -4
  45. package/dist/chart/utils/getXAxisMeta.js +8 -5
  46. package/dist/chart/utils/isDateRange.js +1 -1
  47. package/dist/chart/utils/useHidden.d.ts +1 -0
  48. package/dist/chart/utils/useHidden.js +1 -1
  49. package/dist/chart/utils/useLastVisibleXAxisMeta.d.ts +2 -0
  50. package/dist/chart/utils/useLastVisibleXAxisMeta.js +15 -0
  51. package/dist/checkboxListWithAction/checkboxListWithAction.js +8 -5
  52. package/dist/chip/chip.js +1 -1
  53. package/dist/columnsSelector/columnsSelector.js +2 -2
  54. package/dist/columnsSelector/columnsTab/columnsTab.js +1 -1
  55. package/dist/columnsSelector/columnsTabGroup/columnsTabGroup.js +1 -1
  56. package/dist/commonHelpers/arrowNavigation/components/arrowButton/arrowButton.js +4 -1
  57. package/dist/commonStyles/columnsList.less +59 -0
  58. package/dist/commonStyles/link/link.less +1 -1
  59. package/dist/commonStyles/pillStyles/pillContent.less +14 -15
  60. package/dist/commonStyles/pillStyles/pillStyles.less +4 -5
  61. package/dist/commonStyles/pillStyles/pillTextContent.less +2 -2
  62. package/dist/commonStyles/pillStyles/pillTypes.less +1 -1
  63. package/dist/commonStyles/popupMixin.less +1 -1
  64. package/dist/commonStyles/selectButton.less +1 -1
  65. package/dist/commonStyles/typography/typography.less +545 -19
  66. package/dist/controlledPopup/controlledPopup.d.ts +1 -0
  67. package/dist/controlledPopup/controlledPopup.js +3 -1
  68. package/dist/dataFeed/feedExpandControl/feedExpandControl.js +5 -0
  69. package/dist/dataGrid/cell/cell.d.ts +2 -1
  70. package/dist/dataGrid/cell/cell.js +2 -2
  71. package/dist/dataGrid/columns/checkboxColumn/checkboxHeaderCell.js +1 -1
  72. package/dist/dataGrid/dataGrid.js +8 -5
  73. package/dist/dataGrid/emptySearchList/emptySearchList.js +1 -1
  74. package/dist/dataGrid/entitiesListActions/actions/columnsListButton.js +1 -1
  75. package/dist/dataGrid/entitiesListActions/actions/fullscreenButton.js +2 -2
  76. package/dist/dataGrid/listColumn.d.ts +2 -0
  77. package/dist/dataGrid/row/row.d.ts +2 -1
  78. package/dist/dataGrid/row/row.js +13 -9
  79. package/dist/dataGrid/withFlexibleColumns/components/columnSettings.js +2 -2
  80. package/dist/dataGrid/withFlexibleColumns/components/columnSettingsList.d.ts +1 -1
  81. package/dist/dataGrid/withFlexibleColumns/components/columnSettingsList.js +45 -116
  82. package/dist/dataGrid/withFlexibleColumns/components/columnSettingsSidePanel.js +4 -0
  83. package/dist/dataGrid/withFlexibleColumns/withFlexibleColumns.js +29 -29
  84. package/dist/dataGrid/withSelectableRows/components/bulkActions/bulkActions.d.ts +4 -0
  85. package/dist/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +5 -5
  86. package/dist/dataGrid/withSelectableRows/withSelectableRows.js +4 -3
  87. package/dist/dataGrid/withSortableColumns/columns/sortableColumnWrapper.js +2 -2
  88. package/dist/dateInputInner/dateInputInner.js +7 -7
  89. package/dist/dateInputInner/dateInputInnerControlBlock.js +2 -2
  90. package/dist/dateInputRaw/dateInputRaw.js +4 -4
  91. package/dist/dateInputRaw/utils/getLabel.js +2 -2
  92. package/dist/dateRangeInner/dateRangeInner.js +6 -3
  93. package/dist/dateRangeRaw/dateRangeRaw.d.ts +1 -0
  94. package/dist/dateRangeRaw/dateRangeRaw.js +21 -15
  95. package/dist/dateRangeRaw/types.d.ts +1 -0
  96. package/dist/dateRangeRaw/utils/dateRangeUtils.js +17 -17
  97. package/dist/dateRangeRaw/utils/parseLabel.js +1 -1
  98. package/dist/dateSelectionWrapper/dateSelectionWrapper.js +4 -4
  99. package/dist/dialog/dialogContent.js +1 -1
  100. package/dist/dropdown/dropdownTrigger.d.ts +1 -1
  101. package/dist/dropdownRaw/dropdownList.js +9 -9
  102. package/dist/dropdownRaw/dropdownPopup.js +3 -3
  103. package/dist/dropdownRaw/dropdownRaw.js +34 -17
  104. package/dist/dropdownRaw/dropdownSearchableTrigger.d.ts +2 -1
  105. package/dist/dropdownRaw/dropdownSearchableTrigger.js +8 -6
  106. package/dist/dropdownRaw/dropdownTrigger.d.ts +2 -1
  107. package/dist/dropdownRaw/dropdownTrigger.js +2 -2
  108. package/dist/dropdownRaw/types.d.ts +2 -0
  109. package/dist/favoriteButton/favoriteButton.js +1 -1
  110. package/dist/fileUpload/components/dropZoneContent.js +104 -104
  111. package/dist/fileUpload/components/templateDownloadSection.js +1 -1
  112. package/dist/fileUpload/components/uploadedFilesSection.js +2 -2
  113. package/dist/fileUpload/fileUpload.js +106 -106
  114. package/dist/filterButton/filterButton.d.ts +1 -0
  115. package/dist/filters/components/filtersContainer.js +2 -2
  116. package/dist/filters/components/filtersDropdown.d.ts +1 -1
  117. package/dist/filters/components/filtersEmptyState.js +2 -2
  118. package/dist/filters/components/filtersSaveModal.js +5 -5
  119. package/dist/filters/components/filtersSavedChipComponent.js +11 -11
  120. package/dist/filters/components/filtersSearchItemData.js +1 -1
  121. package/dist/filters/components/filtersSearchList.js +14 -11
  122. package/dist/filters/components/filtersSelect.js +1 -1
  123. package/dist/filters/components/filtersSelectListItem.js +2 -2
  124. package/dist/filters/components/filtersSidePanel.js +8 -8
  125. package/dist/filters/filters.js +7 -7
  126. package/dist/filtersBar/components/filtersBarGroupsFilter/filtersBarGroupsFilter.d.ts +1 -1
  127. package/dist/filtersBar/components/filtersBarPeriodPicker/filtersBarPeriodPicker.d.ts +1 -0
  128. package/dist/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +18 -18
  129. package/dist/filtersBar/components/resetComponentButton.js +1 -1
  130. package/dist/filtersBar/filtersBarActions/filtersBarActions.js +3 -3
  131. package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +2 -2
  132. package/dist/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +5 -5
  133. package/dist/filtersBar/filtersContainer/filtersContainer.js +62 -61
  134. package/dist/formField/hooks/useError.js +3 -3
  135. package/dist/formField/hooks/useFormFieldProps.d.ts +1 -1
  136. package/dist/formField/hooks/useFormFieldProps.js +4 -2
  137. package/dist/formGroup/components/reviewListToggle/reviewListToggle.js +2 -2
  138. package/dist/formGroup/hooks/useCustomRow.js +46 -32
  139. package/dist/formGroup/hooks/useRowElements.js +9 -6
  140. package/dist/formGroup/hooks/useToggle.js +1 -1
  141. package/dist/formGroup/types.d.ts +4 -0
  142. package/dist/formGroup/utils/normalizeFieldId.d.ts +1 -0
  143. package/dist/formGroup/utils/normalizeFieldId.js +5 -0
  144. package/dist/formGroup/utils/resolveId.d.ts +7 -0
  145. package/dist/formGroup/utils/resolveId.js +6 -0
  146. package/dist/formLayout/components/getLayoutColumns.js +4 -2
  147. package/dist/formLayout/hooks/useError.js +3 -3
  148. package/dist/formLayout/hooks/useErrorSummary.d.ts +6 -0
  149. package/dist/formLayout/hooks/useErrorSummary.js +34 -0
  150. package/dist/formLayout/hooks/useFormButtons.js +3 -3
  151. package/dist/formLayout/utils/applyGridPropsStatic.js +1 -1
  152. package/dist/formLayout/utils/flattenErrors.d.ts +5 -0
  153. package/dist/formLayout/utils/flattenErrors.js +14 -0
  154. package/dist/formLayout/utils/getChildrenWithCustomColumns.js +3 -0
  155. package/dist/formLayout/utils/getFieldLabel.d.ts +1 -0
  156. package/dist/formLayout/utils/getFieldLabel.js +26 -0
  157. package/dist/formSection/hooks/useError.js +3 -3
  158. package/dist/formStepper/components/formStep.js +1 -1
  159. package/dist/formStepper/formStepper.js +2 -2
  160. package/dist/formStepperButtons/formStepperButtons.js +8 -5
  161. package/dist/gridLayout/hooks/useGridClasses.js +3 -9
  162. package/dist/groupButtonRaw/groupButtonRaw.js +2 -2
  163. package/dist/groupButtonRaw/types.d.ts +1 -0
  164. package/dist/groupsFilterRaw/groupsFilterAdjustmentState.js +8 -5
  165. package/dist/groupsFilterRaw/groupsFilterBox.js +3 -3
  166. package/dist/groupsFilterRaw/groupsFilterCommon.js +2 -2
  167. package/dist/groupsFilterRaw/groupsFilterCurrentlySelectedState.js +5 -5
  168. package/dist/groupsFilterRaw/groupsFilterHelper.js +2 -2
  169. package/dist/groupsFilterRaw/groupsFilterInitialState.js +12 -9
  170. package/dist/groupsFilterRaw/groupsFilterMenu.js +3 -3
  171. package/dist/groupsFilterRaw/groupsFilterRaw.d.ts +1 -0
  172. package/dist/groupsFilterRaw/groupsFilterRaw.js +15 -10
  173. package/dist/groupsFilterRaw/groupsFilterTrigger.d.ts +2 -1
  174. package/dist/groupsFilterRaw/groupsFilterTrigger.js +8 -5
  175. package/dist/groupsFilterRaw/groupsHelper.js +22 -22
  176. package/dist/groupsFilterRaw/types.d.ts +2 -0
  177. package/dist/header/components/collapsedItemsControl/collapsedItemsControl.js +1 -1
  178. package/dist/header/components/mobileFilterControl/mobileFilterControl.js +1 -1
  179. package/dist/header/components/mobileSearchControl/mobileSearchControl.js +3 -3
  180. package/dist/header/header.js +1 -1
  181. package/dist/header/headerBack.js +5 -2
  182. package/dist/header/headerHelpers.d.ts +1 -0
  183. package/dist/header/headerHelpers.js +10 -1
  184. package/dist/header/hooks/useNonFittingElements.js +1 -1
  185. package/dist/icons/iconAlignLeft.js +1 -3
  186. package/dist/icons/iconAlignmentLeft.js +1 -3
  187. package/dist/icons/iconAlignmentRight.js +1 -3
  188. package/dist/icons/iconArrowBottomLeft.js +1 -3
  189. package/dist/icons/iconArrowBottomRight.js +1 -3
  190. package/dist/icons/iconArrowLeftPath.js +1 -3
  191. package/dist/icons/iconArrowRight.js +1 -3
  192. package/dist/icons/iconArrowRightCircle.js +1 -3
  193. package/dist/icons/iconArrowRightPath.js +1 -3
  194. package/dist/icons/iconArrowTopLeft.js +1 -3
  195. package/dist/icons/iconArrowTopRight.js +1 -3
  196. package/dist/icons/iconChevronDoubleRight.js +1 -3
  197. package/dist/icons/iconChevronRight.js +1 -3
  198. package/dist/icons/iconChevronRightSmall.js +1 -3
  199. package/dist/icons/iconCornerDownLeft.js +1 -3
  200. package/dist/icons/iconCornerDownRight.js +1 -3
  201. package/dist/icons/iconCornerLeftDown.js +1 -3
  202. package/dist/icons/iconCornerLeftUp.js +1 -3
  203. package/dist/icons/iconCornerRightDown.js +1 -3
  204. package/dist/icons/iconCornerRightUp.js +1 -3
  205. package/dist/icons/iconCornerUpLeft.js +1 -3
  206. package/dist/icons/iconCornerUpRight.js +1 -3
  207. package/dist/index.css +3628 -3321
  208. package/dist/index.d.ts +1 -0
  209. package/dist/index.js +16 -14
  210. package/dist/lineChartMini/lineChartMini.js +15 -3
  211. package/dist/list/itemData/itemDataInternal.js +6 -3
  212. package/dist/list/listItem/listItem.js +6 -3
  213. package/dist/menu/components/controlledMenuList/controlledMenuList.js +4 -1
  214. package/dist/menu/components/menuButton.d.ts +2 -1
  215. package/dist/menu/components/menuButton.js +7 -4
  216. package/dist/menu/components/menuErrorItem.js +2 -2
  217. package/dist/menu/components/menuItem.js +4 -4
  218. package/dist/menu/utils/useMenuItemCore.js +1 -3
  219. package/dist/miniTabs/miniTabs.d.ts +1 -0
  220. package/dist/miniTabs/miniTabs.js +1 -1
  221. package/dist/miniTabs/miniTabsHeaderItem.d.ts +2 -1
  222. package/dist/miniTabs/miniTabsHeaderItem.js +1 -1
  223. package/dist/miniTabs/miniTabsItem.d.ts +1 -0
  224. package/dist/mobileSheet/mobileSheet.js +2 -2
  225. package/dist/modal/modal.js +1 -1
  226. package/dist/nav/navFooter/navEditFooter/navEditFooter.js +2 -2
  227. package/dist/nav/navFooter/navFooter.js +1 -1
  228. package/dist/nav/navFooter/navFooterAction/navFooterAction.js +1 -1
  229. package/dist/nav/navHeader/navHeader.js +2 -2
  230. package/dist/nav/navHeader/navHeaderSearch/navHeaderSearch.js +2 -2
  231. package/dist/nav/navItem/navItem.js +4 -1
  232. package/dist/nav/navMobileBar/navMobileBar.js +1 -1
  233. package/dist/notification/notification.js +1 -1
  234. package/dist/pagination/paginationArrow.js +12 -5
  235. package/dist/pagination/paginationText/paginationText.js +1 -1
  236. package/dist/pill/components/pillNonActionable/pillNonActionable.js +1 -1
  237. package/dist/pillBox/components/pillBoxItem.js +1 -1
  238. package/dist/pillBox/pillBox.js +3 -3
  239. package/dist/pillExpandable/pillContent.js +12 -3
  240. package/dist/pillExpandable/pillExpandable.d.ts +4 -1
  241. package/dist/pillExpandable/pillExpandable.js +5 -3
  242. package/dist/pillExpandable/pillExpandableSimple.d.ts +1 -1
  243. package/dist/pillExpandable/pillExpandableSimple.js +4 -4
  244. package/dist/radioGroupRaw/radioGroupRaw.js +2 -1
  245. package/dist/rangeRaw/rangeRaw.js +7 -8
  246. package/dist/rangeRaw/utils/rangeHelper.js +7 -7
  247. package/dist/searchInputRaw/searchInputRaw.js +6 -3
  248. package/dist/selectList/selectList.js +2 -2
  249. package/dist/selectList/selectListItem.js +4 -1
  250. package/dist/skeleton/skeleton.js +1 -1
  251. package/dist/sortControl/sortControl.js +6 -7
  252. package/dist/stepperRaw/stepperRaw.js +5 -0
  253. package/dist/summary/summary.js +2 -2
  254. package/dist/summaryTile/summaryTile.d.ts +4 -2
  255. package/dist/summaryTile/summaryTile.js +59 -26
  256. package/dist/summaryTileBar/summaryTileBar.d.ts +4 -2
  257. package/dist/summaryTileBar/summaryTileBar.js +2 -2
  258. package/dist/table/actions/actionsMenu.js +2 -2
  259. package/dist/table/children/useTableChildren.d.ts +1 -1
  260. package/dist/table/children/useTableChildren.js +3 -3
  261. package/dist/table/detailPanel/detailPanel.js +1 -1
  262. package/dist/table/detailPanel/detailPanelHeader.js +2 -2
  263. package/dist/table/flexible/columnSettings.js +2 -2
  264. package/dist/table/flexible/columnsList.js +47 -117
  265. package/dist/table/flexible/columnsPopup.d.ts +1 -1
  266. package/dist/table/flexible/columnsPopup.js +1 -1
  267. package/dist/table/nested/useNestedRows.js +2 -2
  268. package/dist/table/selectable/selectableHeader.js +5 -4
  269. package/dist/table/selectable/useSelectableRows.d.ts +8 -0
  270. package/dist/table/selectable/useSelectableRows.js +16 -8
  271. package/dist/table/sortable/mobileSortControl.js +1 -1
  272. package/dist/table/sortable/sortableHeader.js +2 -2
  273. package/dist/table/table.js +3 -9
  274. package/dist/tabs/tabItem/tabItem.d.ts +2 -1
  275. package/dist/tabs/tabItem/tabItem.js +7 -2
  276. package/dist/tabs/tabs.d.ts +2 -1
  277. package/dist/tabs/tabs.js +71 -61
  278. package/dist/tabs/tabsTestHelper.js +2 -2
  279. package/dist/timePickerRaw/timePickerRaw.js +11 -9
  280. package/dist/timePickerRaw/types.d.ts +1 -0
  281. package/dist/toastRaw/toastRaw.js +1 -1
  282. package/dist/toggleButtonRaw/toggleButtonRaw.js +7 -4
  283. package/dist/tooltip/tooltip.js +13 -5
  284. package/dist/utils/formatDate.js +37 -37
  285. package/dist/utils/localization/flipAlignment.js +12 -1
  286. package/dist/utils/localization/languageContext.d.ts +1 -1
  287. package/dist/utils/localization/translations/cs.json +7 -5
  288. package/dist/utils/localization/translations/da-DK.json +7 -5
  289. package/dist/utils/localization/translations/de.json +7 -5
  290. package/dist/utils/localization/translations/en.json +12 -1
  291. package/dist/utils/localization/translations/es.json +7 -5
  292. package/dist/utils/localization/translations/fi-FI.json +7 -5
  293. package/dist/utils/localization/translations/fr-FR.json +7 -5
  294. package/dist/utils/localization/translations/fr.json +7 -5
  295. package/dist/utils/localization/translations/hu-HU.json +7 -5
  296. package/dist/utils/localization/translations/id.json +7 -5
  297. package/dist/utils/localization/translations/it.json +7 -5
  298. package/dist/utils/localization/translations/ja.json +7 -5
  299. package/dist/utils/localization/translations/ko-KR.json +7 -5
  300. package/dist/utils/localization/translations/ms.json +7 -5
  301. package/dist/utils/localization/translations/nb-NO.json +7 -5
  302. package/dist/utils/localization/translations/nl.json +7 -5
  303. package/dist/utils/localization/translations/pl.json +7 -5
  304. package/dist/utils/localization/translations/pt-BR.json +7 -5
  305. package/dist/utils/localization/translations/pt-PT.json +7 -5
  306. package/dist/utils/localization/translations/ro-RO.json +7 -5
  307. package/dist/utils/localization/translations/sk-SK.json +7 -5
  308. package/dist/utils/localization/translations/sv.json +7 -5
  309. package/dist/utils/localization/translations/th.json +7 -5
  310. package/dist/utils/localization/translations/tr.json +7 -5
  311. package/dist/utils/localization/translations/zh-Hans.json +7 -5
  312. package/dist/utils/localization/translations/zh-TW.json +7 -5
  313. package/dist/utils/localization/useDirectionalIcon.d.ts +3 -0
  314. package/dist/utils/localization/useDirectionalIcon.js +9 -0
  315. package/dist/utils/positioningUtils/alignments.d.ts +2 -2
  316. package/dist/utils/positioningUtils/alignments.js +2 -2
  317. package/dist/utils/positioningUtils/calculatePosition.d.ts +2 -1
  318. package/dist/utils/positioningUtils/calculatePosition.js +11 -11
  319. package/dist/utils/positioningUtils/normalizeLogicalAlignment.d.ts +4 -0
  320. package/dist/utils/positioningUtils/normalizeLogicalAlignment.js +36 -0
  321. package/esm/absolute/absolute.d.ts +21 -1
  322. package/esm/absolute/absolute.js +46 -6
  323. package/esm/advancedGroupsFilter/advancedGroupsFilter.js +3 -3
  324. package/esm/advancedGroupsFilter/advancedGroupsFilterForm.js +2 -2
  325. package/esm/advancedGroupsFilter/advancedGroupsFilterFormSection.js +7 -7
  326. package/esm/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.js +1 -1
  327. package/esm/alert/banner.d.ts +3 -1
  328. package/esm/alertRaw/alertRaw.js +1 -1
  329. package/esm/banner/banner.d.ts +5 -2
  330. package/esm/banner/banner.js +13 -2
  331. package/esm/banner/bannerErrorSummary.d.ts +7 -0
  332. package/esm/banner/bannerErrorSummary.js +4 -0
  333. package/esm/banner/bannerMultipLine.js +1 -1
  334. package/esm/banner/bannerSingleLine.js +1 -1
  335. package/esm/banner/utils/buildSummaryErrorList.d.ts +1 -0
  336. package/esm/banner/utils/buildSummaryErrorList.js +12 -0
  337. package/esm/banner/utils/hasSummaryErrorChild.d.ts +1 -0
  338. package/esm/banner/utils/hasSummaryErrorChild.js +3 -0
  339. package/esm/banner/utils/isSummaryErrorBanner.d.ts +2 -0
  340. package/esm/banner/utils/isSummaryErrorBanner.js +2 -0
  341. package/esm/banner/utils/isSummaryErrorElement.d.ts +3 -0
  342. package/esm/banner/utils/isSummaryErrorElement.js +3 -0
  343. package/esm/banner/utils/useSummaryBannerProp.d.ts +6 -0
  344. package/esm/banner/utils/useSummaryBannerProp.js +25 -0
  345. package/esm/betaPill/betaPill.js +4 -4
  346. package/esm/bookmark/bookmark.js +2 -2
  347. package/esm/bulkEditControl/bulkEditControl.js +5 -5
  348. package/esm/calendar/calendar.js +37 -34
  349. package/esm/calendar/calendarUtils.js +6 -4
  350. package/esm/card/card.js +1 -1
  351. package/esm/card/components/title.js +4 -1
  352. package/esm/card/components/titleLink.js +5 -2
  353. package/esm/chart/accessibleChart/accessibleChartNarrative.js +13 -13
  354. package/esm/chart/accessibleChart/accessibleChartTable.js +5 -5
  355. package/esm/chart/barChart/getDefaultOptions.d.ts +2 -1
  356. package/esm/chart/barChart/getDefaultOptions.js +5 -2
  357. package/esm/chart/barChart.js +6 -4
  358. package/esm/chart/chart.js +1 -1
  359. package/esm/chart/chartAxis/chartAxis.js +2 -2
  360. package/esm/chart/lineChart/getDefaultOptions.d.ts +4 -1
  361. package/esm/chart/lineChart/getDefaultOptions.js +7 -2
  362. package/esm/chart/lineChart.js +7 -3
  363. package/esm/chart/plugins/linePlugin/linePlugin.js +5 -4
  364. package/esm/chart/utils/getXAxisMeta.js +8 -5
  365. package/esm/chart/utils/isDateRange.js +1 -1
  366. package/esm/chart/utils/useHidden.d.ts +1 -0
  367. package/esm/chart/utils/useHidden.js +1 -1
  368. package/esm/chart/utils/useLastVisibleXAxisMeta.d.ts +2 -0
  369. package/esm/chart/utils/useLastVisibleXAxisMeta.js +11 -0
  370. package/esm/checkboxListWithAction/checkboxListWithAction.js +8 -5
  371. package/esm/chip/chip.js +1 -1
  372. package/esm/columnsSelector/columnsSelector.js +2 -2
  373. package/esm/columnsSelector/columnsTab/columnsTab.js +1 -1
  374. package/esm/columnsSelector/columnsTabGroup/columnsTabGroup.js +1 -1
  375. package/esm/commonHelpers/arrowNavigation/components/arrowButton/arrowButton.js +4 -1
  376. package/esm/controlledPopup/controlledPopup.d.ts +1 -0
  377. package/esm/controlledPopup/controlledPopup.js +3 -1
  378. package/esm/dataFeed/feedExpandControl/feedExpandControl.js +3 -0
  379. package/esm/dataGrid/cell/cell.d.ts +2 -1
  380. package/esm/dataGrid/cell/cell.js +2 -2
  381. package/esm/dataGrid/columns/checkboxColumn/checkboxHeaderCell.js +1 -1
  382. package/esm/dataGrid/dataGrid.js +8 -5
  383. package/esm/dataGrid/emptySearchList/emptySearchList.js +1 -1
  384. package/esm/dataGrid/entitiesListActions/actions/columnsListButton.js +1 -1
  385. package/esm/dataGrid/entitiesListActions/actions/fullscreenButton.js +2 -2
  386. package/esm/dataGrid/listColumn.d.ts +2 -0
  387. package/esm/dataGrid/row/row.d.ts +2 -1
  388. package/esm/dataGrid/row/row.js +13 -9
  389. package/esm/dataGrid/withFlexibleColumns/components/columnSettings.js +2 -2
  390. package/esm/dataGrid/withFlexibleColumns/components/columnSettingsList.d.ts +1 -1
  391. package/esm/dataGrid/withFlexibleColumns/components/columnSettingsList.js +44 -110
  392. package/esm/dataGrid/withFlexibleColumns/components/columnSettingsSidePanel.js +2 -0
  393. package/esm/dataGrid/withFlexibleColumns/withFlexibleColumns.js +29 -29
  394. package/esm/dataGrid/withSelectableRows/components/bulkActions/bulkActions.d.ts +4 -0
  395. package/esm/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +5 -5
  396. package/esm/dataGrid/withSelectableRows/withSelectableRows.js +4 -3
  397. package/esm/dataGrid/withSortableColumns/columns/sortableColumnWrapper.js +2 -2
  398. package/esm/dateInputInner/dateInputInner.js +7 -7
  399. package/esm/dateInputInner/dateInputInnerControlBlock.js +2 -2
  400. package/esm/dateInputRaw/dateInputRaw.js +4 -4
  401. package/esm/dateInputRaw/utils/getLabel.js +2 -2
  402. package/esm/dateRangeInner/dateRangeInner.js +6 -3
  403. package/esm/dateRangeRaw/dateRangeRaw.d.ts +1 -0
  404. package/esm/dateRangeRaw/dateRangeRaw.js +21 -15
  405. package/esm/dateRangeRaw/types.d.ts +1 -0
  406. package/esm/dateRangeRaw/utils/dateRangeUtils.js +17 -17
  407. package/esm/dateRangeRaw/utils/parseLabel.js +1 -1
  408. package/esm/dateSelectionWrapper/dateSelectionWrapper.js +4 -4
  409. package/esm/dialog/dialogContent.js +1 -1
  410. package/esm/dropdown/dropdownTrigger.d.ts +1 -1
  411. package/esm/dropdownRaw/dropdownList.js +9 -9
  412. package/esm/dropdownRaw/dropdownPopup.js +3 -3
  413. package/esm/dropdownRaw/dropdownRaw.js +34 -17
  414. package/esm/dropdownRaw/dropdownSearchableTrigger.d.ts +2 -1
  415. package/esm/dropdownRaw/dropdownSearchableTrigger.js +8 -6
  416. package/esm/dropdownRaw/dropdownTrigger.d.ts +2 -1
  417. package/esm/dropdownRaw/dropdownTrigger.js +2 -2
  418. package/esm/dropdownRaw/types.d.ts +2 -0
  419. package/esm/favoriteButton/favoriteButton.js +1 -1
  420. package/esm/fileUpload/components/dropZoneContent.js +104 -104
  421. package/esm/fileUpload/components/templateDownloadSection.js +1 -1
  422. package/esm/fileUpload/components/uploadedFilesSection.js +2 -2
  423. package/esm/fileUpload/fileUpload.js +106 -106
  424. package/esm/filterButton/filterButton.d.ts +1 -0
  425. package/esm/filters/components/filtersContainer.js +2 -2
  426. package/esm/filters/components/filtersDropdown.d.ts +1 -1
  427. package/esm/filters/components/filtersEmptyState.js +2 -2
  428. package/esm/filters/components/filtersSaveModal.js +5 -5
  429. package/esm/filters/components/filtersSavedChipComponent.js +11 -11
  430. package/esm/filters/components/filtersSearchItemData.js +1 -1
  431. package/esm/filters/components/filtersSearchList.js +14 -11
  432. package/esm/filters/components/filtersSelect.js +1 -1
  433. package/esm/filters/components/filtersSelectListItem.js +2 -2
  434. package/esm/filters/components/filtersSidePanel.js +8 -8
  435. package/esm/filters/filters.js +7 -7
  436. package/esm/filtersBar/components/filtersBarGroupsFilter/filtersBarGroupsFilter.d.ts +1 -1
  437. package/esm/filtersBar/components/filtersBarPeriodPicker/filtersBarPeriodPicker.d.ts +1 -0
  438. package/esm/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +18 -18
  439. package/esm/filtersBar/components/resetComponentButton.js +1 -1
  440. package/esm/filtersBar/filtersBarActions/filtersBarActions.js +3 -3
  441. package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +2 -2
  442. package/esm/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +5 -5
  443. package/esm/filtersBar/filtersContainer/filtersContainer.js +62 -61
  444. package/esm/formField/hooks/useError.js +3 -3
  445. package/esm/formField/hooks/useFormFieldProps.d.ts +1 -1
  446. package/esm/formField/hooks/useFormFieldProps.js +4 -2
  447. package/esm/formGroup/components/reviewListToggle/reviewListToggle.js +2 -2
  448. package/esm/formGroup/hooks/useCustomRow.js +46 -32
  449. package/esm/formGroup/hooks/useRowElements.js +9 -6
  450. package/esm/formGroup/hooks/useToggle.js +1 -1
  451. package/esm/formGroup/types.d.ts +4 -0
  452. package/esm/formGroup/utils/normalizeFieldId.d.ts +1 -0
  453. package/esm/formGroup/utils/normalizeFieldId.js +1 -0
  454. package/esm/formGroup/utils/resolveId.d.ts +7 -0
  455. package/esm/formGroup/utils/resolveId.js +2 -0
  456. package/esm/formLayout/components/getLayoutColumns.js +4 -2
  457. package/esm/formLayout/hooks/useError.js +3 -3
  458. package/esm/formLayout/hooks/useErrorSummary.d.ts +6 -0
  459. package/esm/formLayout/hooks/useErrorSummary.js +30 -0
  460. package/esm/formLayout/hooks/useFormButtons.js +3 -3
  461. package/esm/formLayout/utils/applyGridPropsStatic.js +1 -1
  462. package/esm/formLayout/utils/flattenErrors.d.ts +5 -0
  463. package/esm/formLayout/utils/flattenErrors.js +10 -0
  464. package/esm/formLayout/utils/getChildrenWithCustomColumns.js +3 -0
  465. package/esm/formLayout/utils/getFieldLabel.d.ts +1 -0
  466. package/esm/formLayout/utils/getFieldLabel.js +22 -0
  467. package/esm/formSection/hooks/useError.js +3 -3
  468. package/esm/formStepper/components/formStep.js +1 -1
  469. package/esm/formStepper/formStepper.js +2 -2
  470. package/esm/formStepperButtons/formStepperButtons.js +8 -5
  471. package/esm/gridLayout/hooks/useGridClasses.js +3 -9
  472. package/esm/groupButtonRaw/groupButtonRaw.js +2 -2
  473. package/esm/groupButtonRaw/types.d.ts +1 -0
  474. package/esm/groupsFilterRaw/groupsFilterAdjustmentState.js +8 -5
  475. package/esm/groupsFilterRaw/groupsFilterBox.js +3 -3
  476. package/esm/groupsFilterRaw/groupsFilterCommon.js +2 -2
  477. package/esm/groupsFilterRaw/groupsFilterCurrentlySelectedState.js +5 -5
  478. package/esm/groupsFilterRaw/groupsFilterHelper.js +2 -2
  479. package/esm/groupsFilterRaw/groupsFilterInitialState.js +12 -9
  480. package/esm/groupsFilterRaw/groupsFilterMenu.js +3 -3
  481. package/esm/groupsFilterRaw/groupsFilterRaw.d.ts +1 -0
  482. package/esm/groupsFilterRaw/groupsFilterRaw.js +15 -10
  483. package/esm/groupsFilterRaw/groupsFilterTrigger.d.ts +2 -1
  484. package/esm/groupsFilterRaw/groupsFilterTrigger.js +8 -5
  485. package/esm/groupsFilterRaw/groupsHelper.js +22 -22
  486. package/esm/groupsFilterRaw/types.d.ts +2 -0
  487. package/esm/header/components/collapsedItemsControl/collapsedItemsControl.js +1 -1
  488. package/esm/header/components/mobileFilterControl/mobileFilterControl.js +1 -1
  489. package/esm/header/components/mobileSearchControl/mobileSearchControl.js +3 -3
  490. package/esm/header/header.js +2 -2
  491. package/esm/header/headerBack.js +5 -2
  492. package/esm/header/headerHelpers.d.ts +1 -0
  493. package/esm/header/headerHelpers.js +8 -0
  494. package/esm/header/hooks/useNonFittingElements.js +1 -1
  495. package/esm/icons/iconAlignLeft.js +1 -3
  496. package/esm/icons/iconAlignmentLeft.js +1 -3
  497. package/esm/icons/iconAlignmentRight.js +1 -3
  498. package/esm/icons/iconArrowBottomLeft.js +1 -3
  499. package/esm/icons/iconArrowBottomRight.js +1 -3
  500. package/esm/icons/iconArrowLeftPath.js +1 -3
  501. package/esm/icons/iconArrowRight.js +1 -3
  502. package/esm/icons/iconArrowRightCircle.js +1 -3
  503. package/esm/icons/iconArrowRightPath.js +1 -3
  504. package/esm/icons/iconArrowTopLeft.js +1 -3
  505. package/esm/icons/iconArrowTopRight.js +1 -3
  506. package/esm/icons/iconChevronDoubleRight.js +1 -3
  507. package/esm/icons/iconChevronRight.js +1 -3
  508. package/esm/icons/iconChevronRightSmall.js +1 -3
  509. package/esm/icons/iconCornerDownLeft.js +1 -3
  510. package/esm/icons/iconCornerDownRight.js +1 -3
  511. package/esm/icons/iconCornerLeftDown.js +1 -3
  512. package/esm/icons/iconCornerLeftUp.js +1 -3
  513. package/esm/icons/iconCornerRightDown.js +1 -3
  514. package/esm/icons/iconCornerRightUp.js +1 -3
  515. package/esm/icons/iconCornerUpLeft.js +1 -3
  516. package/esm/icons/iconCornerUpRight.js +1 -3
  517. package/esm/index.d.ts +1 -0
  518. package/esm/index.js +1 -0
  519. package/esm/lineChartMini/lineChartMini.js +15 -3
  520. package/esm/list/itemData/itemDataInternal.js +6 -3
  521. package/esm/list/listItem/listItem.js +6 -3
  522. package/esm/menu/components/controlledMenuList/controlledMenuList.js +4 -1
  523. package/esm/menu/components/menuButton.d.ts +2 -1
  524. package/esm/menu/components/menuButton.js +7 -4
  525. package/esm/menu/components/menuErrorItem.js +2 -2
  526. package/esm/menu/components/menuItem.js +4 -4
  527. package/esm/menu/utils/useMenuItemCore.js +1 -3
  528. package/esm/miniTabs/miniTabs.d.ts +1 -0
  529. package/esm/miniTabs/miniTabs.js +1 -1
  530. package/esm/miniTabs/miniTabsHeaderItem.d.ts +2 -1
  531. package/esm/miniTabs/miniTabsHeaderItem.js +1 -1
  532. package/esm/miniTabs/miniTabsItem.d.ts +1 -0
  533. package/esm/mobileSheet/mobileSheet.js +2 -2
  534. package/esm/modal/modal.js +1 -1
  535. package/esm/nav/navFooter/navEditFooter/navEditFooter.js +2 -2
  536. package/esm/nav/navFooter/navFooter.js +1 -1
  537. package/esm/nav/navFooter/navFooterAction/navFooterAction.js +1 -1
  538. package/esm/nav/navHeader/navHeader.js +2 -2
  539. package/esm/nav/navHeader/navHeaderSearch/navHeaderSearch.js +2 -2
  540. package/esm/nav/navItem/navItem.js +4 -1
  541. package/esm/nav/navMobileBar/navMobileBar.js +1 -1
  542. package/esm/notification/notification.js +1 -1
  543. package/esm/pagination/paginationArrow.js +12 -5
  544. package/esm/pagination/paginationText/paginationText.js +1 -1
  545. package/esm/pill/components/pillNonActionable/pillNonActionable.js +1 -1
  546. package/esm/pillBox/components/pillBoxItem.js +1 -1
  547. package/esm/pillBox/pillBox.js +3 -3
  548. package/esm/pillExpandable/pillContent.js +12 -3
  549. package/esm/pillExpandable/pillExpandable.d.ts +4 -1
  550. package/esm/pillExpandable/pillExpandable.js +5 -3
  551. package/esm/pillExpandable/pillExpandableSimple.d.ts +1 -1
  552. package/esm/pillExpandable/pillExpandableSimple.js +4 -4
  553. package/esm/radioGroupRaw/radioGroupRaw.js +2 -1
  554. package/esm/rangeRaw/rangeRaw.js +7 -8
  555. package/esm/rangeRaw/utils/rangeHelper.js +7 -7
  556. package/esm/searchInputRaw/searchInputRaw.js +6 -3
  557. package/esm/selectList/selectList.js +2 -2
  558. package/esm/selectList/selectListItem.js +4 -1
  559. package/esm/skeleton/skeleton.js +1 -1
  560. package/esm/sortControl/sortControl.js +6 -7
  561. package/esm/stepperRaw/stepperRaw.js +3 -0
  562. package/esm/summary/summary.js +2 -2
  563. package/esm/summaryTile/summaryTile.d.ts +4 -2
  564. package/esm/summaryTile/summaryTile.js +59 -26
  565. package/esm/summaryTileBar/summaryTileBar.d.ts +4 -2
  566. package/esm/summaryTileBar/summaryTileBar.js +2 -2
  567. package/esm/table/actions/actionsMenu.js +2 -2
  568. package/esm/table/children/useTableChildren.d.ts +1 -1
  569. package/esm/table/children/useTableChildren.js +3 -3
  570. package/esm/table/detailPanel/detailPanel.js +1 -1
  571. package/esm/table/detailPanel/detailPanelHeader.js +2 -2
  572. package/esm/table/flexible/columnSettings.js +2 -2
  573. package/esm/table/flexible/columnsList.js +46 -111
  574. package/esm/table/flexible/columnsPopup.d.ts +1 -1
  575. package/esm/table/flexible/columnsPopup.js +1 -1
  576. package/esm/table/nested/useNestedRows.js +2 -2
  577. package/esm/table/selectable/selectableHeader.js +5 -4
  578. package/esm/table/selectable/useSelectableRows.d.ts +8 -0
  579. package/esm/table/selectable/useSelectableRows.js +16 -8
  580. package/esm/table/sortable/mobileSortControl.js +1 -1
  581. package/esm/table/sortable/sortableHeader.js +2 -2
  582. package/esm/table/table.js +3 -9
  583. package/esm/tabs/tabItem/tabItem.d.ts +2 -1
  584. package/esm/tabs/tabItem/tabItem.js +7 -2
  585. package/esm/tabs/tabs.d.ts +2 -1
  586. package/esm/tabs/tabs.js +71 -61
  587. package/esm/tabs/tabsTestHelper.js +2 -2
  588. package/esm/testHelpers/mockAbsoluteAlignment.d.ts +1 -0
  589. package/esm/testHelpers/mockAbsoluteAlignment.js +10 -0
  590. package/esm/timePickerRaw/timePickerRaw.js +11 -9
  591. package/esm/timePickerRaw/types.d.ts +1 -0
  592. package/esm/toastRaw/toastRaw.js +1 -1
  593. package/esm/toggleButtonRaw/toggleButtonRaw.js +7 -4
  594. package/esm/tooltip/tooltip.js +13 -5
  595. package/esm/utils/formatDate.js +37 -37
  596. package/esm/utils/localization/flipAlignment.js +12 -1
  597. package/esm/utils/localization/languageContext.d.ts +1 -1
  598. package/esm/utils/localization/translations/cs.json +7 -5
  599. package/esm/utils/localization/translations/da-DK.json +7 -5
  600. package/esm/utils/localization/translations/de.json +7 -5
  601. package/esm/utils/localization/translations/en.json +12 -1
  602. package/esm/utils/localization/translations/es.json +7 -5
  603. package/esm/utils/localization/translations/fi-FI.json +7 -5
  604. package/esm/utils/localization/translations/fr-FR.json +7 -5
  605. package/esm/utils/localization/translations/fr.json +7 -5
  606. package/esm/utils/localization/translations/hu-HU.json +7 -5
  607. package/esm/utils/localization/translations/id.json +7 -5
  608. package/esm/utils/localization/translations/it.json +7 -5
  609. package/esm/utils/localization/translations/ja.json +7 -5
  610. package/esm/utils/localization/translations/ko-KR.json +7 -5
  611. package/esm/utils/localization/translations/ms.json +7 -5
  612. package/esm/utils/localization/translations/nb-NO.json +7 -5
  613. package/esm/utils/localization/translations/nl.json +7 -5
  614. package/esm/utils/localization/translations/pl.json +7 -5
  615. package/esm/utils/localization/translations/pt-BR.json +7 -5
  616. package/esm/utils/localization/translations/pt-PT.json +7 -5
  617. package/esm/utils/localization/translations/ro-RO.json +7 -5
  618. package/esm/utils/localization/translations/sk-SK.json +7 -5
  619. package/esm/utils/localization/translations/sv.json +7 -5
  620. package/esm/utils/localization/translations/th.json +7 -5
  621. package/esm/utils/localization/translations/tr.json +7 -5
  622. package/esm/utils/localization/translations/zh-Hans.json +7 -5
  623. package/esm/utils/localization/translations/zh-TW.json +7 -5
  624. package/esm/utils/localization/useDirectionalIcon.d.ts +3 -0
  625. package/esm/utils/localization/useDirectionalIcon.js +5 -0
  626. package/esm/utils/positioningUtils/alignments.d.ts +2 -2
  627. package/esm/utils/positioningUtils/alignments.js +2 -2
  628. package/esm/utils/positioningUtils/calculatePosition.d.ts +2 -1
  629. package/esm/utils/positioningUtils/calculatePosition.js +11 -11
  630. package/esm/utils/positioningUtils/normalizeLogicalAlignment.d.ts +4 -0
  631. package/esm/utils/positioningUtils/normalizeLogicalAlignment.js +32 -0
  632. package/package.json +11 -12
  633. package/dist/utils/localization/translations/en-json.d.ts +0 -317
  634. package/dist/utils/localization/translations/en-json.js +0 -320
  635. package/esm/utils/localization/translations/en-json.d.ts +0 -317
  636. package/esm/utils/localization/translations/en-json.js +0 -317
package/README.md CHANGED
@@ -45,8 +45,32 @@ Now components are ready for usage.
45
45
 
46
46
  Zenith library provides components defined in Zenith Design System. It includes very basic blocks like colors, icons, font presets, atom components like buttons, checkboxes etc and high order components - header, table, filters bar etc. List of existing components can be found in [Storybook](https://developers.geotab.com/zenith-storybook/index.html).
47
47
 
48
+ Markdown reference for each component (used by AI tooling and IRIS) lives in [`documentation/components/`](./documentation/components/). These are kept in sync with the source via the [`/zenith-doc-sync`](https://git.geotab.com/ai-hub/skill-playground/skill-workflow-zenith-doc-sync) skill when component code changes.
49
+
48
50
  ## Change log
49
51
 
52
+ ### 3.12.0
53
+
54
+ - Add `ErrorSummaryBanner` component for aggregating form validation errors
55
+ - Add accessible disabled state to `Tab` and `TabItem`
56
+ - Replace CSS RTL icon flip with directional counterpart icons for correct RTL rendering
57
+ - Add `data-analytics-id` prop to `ExpandablePill`, `MiniTabs`, `FiltersBar`, and `Menu` components
58
+ - Add `aria-` and property forwarding to `SummaryTile` and sub-components
59
+ - Add missing translation keys and fix missing FileUploader drop zone translations
60
+ - Convert all remaining components to rem units
61
+ - Add logical alignment direction values to `TAlignment` for RTL-aware positioning
62
+ - Rename public typography CSS classes to zen- prefix
63
+ - Fix duplicated `id` attribute in `Header` menu
64
+ - Fix `Header` menu: restore focus to trigger after selection
65
+ - Fix `Toggle` screen reader announcements on keyboard navigation and hover
66
+ - Fix dialog content scroll
67
+ - Fix mobile view table content double-line
68
+ - Fix calendar range showing incorrect edge
69
+ - Fix prop in nested row
70
+ - Fix LineChart legend date handling and x-axis range
71
+ - Fix `DataGrid` `minWidth` and `maxWidth` not enforced during column resize
72
+ - Fix `DataGrid` column selector: double scrollbar, screen reader announcements, and VoiceOver double-announcement
73
+
50
74
  ### 3.11.1
51
75
 
52
76
  - Fix `SummaryTile` accessibility: add `tooltipAriaLabel` prop for accessible tooltip name
@@ -2,7 +2,27 @@ import { RefObject } from "react";
2
2
  import "./absolute.less";
3
3
  import { IZenComponentProps } from "../commonHelpers/zenComponent";
4
4
  import { IAlignment } from "../utils/positioningUtils/alignments";
5
- export type TAlignment = "top" | "top-left" | "top-right" | "left" | "left-top" | "left-bottom" | "right" | "right-top" | "right-bottom" | "bottom" | "bottom-left" | "bottom-right";
5
+ export type TAlignment = "top" | "top-start" | "top-end" | "start" | "start-top" | "start-bottom" | "end" | "end-top" | "end-bottom" | "bottom" | "bottom-start" | "bottom-end"
6
+ /** @deprecated Use "top-start" for RTL-aware positioning. */
7
+ | "top-left"
8
+ /** @deprecated Use "top-end" for RTL-aware positioning. */
9
+ | "top-right"
10
+ /** @deprecated Use "start" for RTL-aware positioning. */
11
+ | "left"
12
+ /** @deprecated Use "start-top" for RTL-aware positioning. */
13
+ | "left-top"
14
+ /** @deprecated Use "start-bottom" for RTL-aware positioning. */
15
+ | "left-bottom"
16
+ /** @deprecated Use "end" for RTL-aware positioning. */
17
+ | "right"
18
+ /** @deprecated Use "end-top" for RTL-aware positioning. */
19
+ | "right-top"
20
+ /** @deprecated Use "end-bottom" for RTL-aware positioning. */
21
+ | "right-bottom"
22
+ /** @deprecated Use "bottom-start" for RTL-aware positioning. */
23
+ | "bottom-left"
24
+ /** @deprecated Use "bottom-end" for RTL-aware positioning. */
25
+ | "bottom-right";
6
26
  export type TTrapFocus = "on" | "off" | "withTrigger" | "none";
7
27
  export interface IAbsolute extends IZenComponentProps {
8
28
  triggerRef: RefObject<HTMLElement | null>;
@@ -19,11 +19,19 @@ const useScroll_1 = require("../commonHelpers/hooks/useScroll");
19
19
  const getScrollableParent_1 = require("../utils/getScrollableParent");
20
20
  const useClientReady_1 = require("../commonHelpers/hooks/useClientReady");
21
21
  const zen_1 = require("../utils/zen");
22
+ const useDirection_1 = require("../utils/localization/useDirection");
22
23
  const Absolute = ({ isOpen, id, paddingX, paddingY, className, children, triggerRef, alignment, inline, onOpenChange, useTrapFocusWithTrigger = "off", shouldHoldScroll, stateFullChilds, role, ariaLabel, ariaLabelledby, alignmentsFn, recalculateOnScroll, closeOnScroll, recalculateTrigger = true, focusOnOpen = true }) => {
23
24
  const popupRef = (0, react_1.useRef)(null);
24
25
  const prevScroll = (0, react_1.useRef)(0);
26
+ // True when the popup is closed by an external gesture (click-outside, scroll-close)
27
+ // where focus intentionally moves away from the popup — prevents focus returning to trigger.
28
+ const closedByExternalRef = (0, react_1.useRef)(false);
29
+ // Tracks whether the popup has ever been open, so the close effect is skipped on initial mount
30
+ // (prevents returnFocusToTrigger from firing when isOpen starts as false).
31
+ const hadBeenOpenRef = (0, react_1.useRef)(false);
25
32
  const { dark } = (0, react_1.useContext)(themeContext_1.themeContext);
26
33
  const isClientReady = (0, useClientReady_1.useClientReady)();
34
+ const direction = (0, useDirection_1.useDirection)();
27
35
  const onScrollHandler = e => {
28
36
  var _a;
29
37
  prevScroll.current = (_a = e.target) === null || _a === void 0 ? void 0 : _a.scrollTop;
@@ -52,16 +60,16 @@ const Absolute = ({ isOpen, id, paddingX, paddingY, className, children, trigger
52
60
  }
53
61
  return (0, getScrollableParent_1.getScrollableParent)(triggerRef.current);
54
62
  }, [triggerRef, isOpen, recalculateOnScroll, closeOnScroll]);
55
- const calculatePosition = (0, react_1.useCallback)(() => (0, calculatePosition_1.calculatePosition)(triggerRef, popupRef, paddingX, paddingY, inline, alignment, alignmentsFn, parent ? parent : undefined), [triggerRef, paddingX, paddingY, inline, alignment, alignmentsFn, popupRef, parent]);
63
+ const calculatePosition = (0, react_1.useCallback)(() => (0, calculatePosition_1.calculatePosition)(triggerRef, popupRef, paddingX, paddingY, inline, alignment, alignmentsFn, parent ? parent : undefined, undefined, direction), [triggerRef, paddingX, paddingY, inline, alignment, alignmentsFn, popupRef, parent, direction]);
56
64
  const handleCloseOnScroll = (0, react_1.useCallback)(() => {
65
+ closedByExternalRef.current = true;
57
66
  onOpenChange(false);
58
67
  }, [onOpenChange]);
59
68
  (0, useResize_1.useResize)(calculatePosition, isOpen);
60
69
  (0, useScroll_1.useScroll)(calculatePosition, isOpen && !!recalculateOnScroll, parent);
61
70
  (0, useScroll_1.useScroll)(handleCloseOnScroll, isOpen && !!closeOnScroll, parent);
62
71
  (0, react_1.useLayoutEffect)(calculatePosition, [isOpen, children, recalculateTrigger, calculatePosition]);
63
- function handleEscape() {
64
- onOpenChange(false);
72
+ const returnFocusToTrigger = (0, react_1.useCallback)(() => {
65
73
  if (!triggerRef.current) {
66
74
  return;
67
75
  }
@@ -69,9 +77,40 @@ const Absolute = ({ isOpen, id, paddingX, paddingY, className, children, trigger
69
77
  triggerRef.current.focus();
70
78
  return;
71
79
  }
72
- const focusable = [...Array.from(triggerRef.current.querySelectorAll(focusableSelector_1.FOCUSABLE_SELECTOR))];
73
- (focusable[0] || triggerRef.current).focus();
74
- }
80
+ const focusable = Array.from(triggerRef.current.querySelectorAll(focusableSelector_1.FOCUSABLE_SELECTOR));
81
+ const target = focusable.find(el => (0, dialogHelpers_1.isFocusable)(el)) || triggerRef.current;
82
+ if (!(0, dialogHelpers_1.isFocusable)(target)) {
83
+ if (process.env.NODE_ENV !== "production") {
84
+ console.warn("[Absolute] returnFocusToTrigger: trigger has no focusable element. Keyboard focus position may be lost.");
85
+ }
86
+ return;
87
+ }
88
+ target.focus();
89
+ }, [triggerRef]);
90
+ const handleEscape = (0, react_1.useCallback)(() => {
91
+ onOpenChange(false);
92
+ }, [onOpenChange]);
93
+ // Return focus to the trigger when the popup closes due to item selection (isOpen: true → false)
94
+ // but not when closed by an external gesture (click-outside) where focus intentionally moved away,
95
+ // and not on initial mount when the popup starts closed.
96
+ (0, react_1.useEffect)(() => {
97
+ var _a, _b;
98
+ if (isOpen) {
99
+ hadBeenOpenRef.current = true;
100
+ closedByExternalRef.current = false;
101
+ return;
102
+ }
103
+ if (!hadBeenOpenRef.current || closedByExternalRef.current) {
104
+ return;
105
+ }
106
+ // Only return focus if it is still inside the popup (or lost to body after unmount).
107
+ // Prevents stealing focus when focus is intentionally elsewhere and popup closes externally.
108
+ const activeEl = (_a = zen_1.zen.document) === null || _a === void 0 ? void 0 : _a.activeElement;
109
+ const focusIsInsideOrLost = !activeEl || activeEl === ((_b = zen_1.zen.document) === null || _b === void 0 ? void 0 : _b.body) || (popupRef.current && popupRef.current.contains(activeEl));
110
+ if (focusIsInsideOrLost) {
111
+ returnFocusToTrigger();
112
+ }
113
+ }, [isOpen, returnFocusToTrigger]);
75
114
  const condition = (0, react_1.useCallback)(() => (useTrapFocusWithTrigger === "off" ? false : true), [useTrapFocusWithTrigger]);
76
115
  (0, useTrapFocus_1.useTrapFocus)(popupRef, useTrapFocusWithTrigger === "withTrigger" ? triggerRef : undefined, isOpen, condition);
77
116
  (0, useEscape_1.useEscape)(popupRef, handleEscape, isOpen);
@@ -92,6 +131,7 @@ const Absolute = ({ isOpen, id, paddingX, paddingY, className, children, trigger
92
131
  if (isClickInPopup || isClickOnTrigger || stateFullChilds) {
93
132
  return;
94
133
  }
134
+ closedByExternalRef.current = true;
95
135
  onOpenChange(false);
96
136
  };
97
137
  if (isOpen) {
@@ -35,7 +35,7 @@ injectString("tr", "Advanced groups filter", "Geli\u015Fmi\u015F grup filtresi")
35
35
  injectString("zh-Hans", "Advanced groups filter", "\u9AD8\u7EA7\u7EC4\u7B5B\u9009\u5668");
36
36
  injectString("zh-TW", "Advanced groups filter", "\u9032\u968E\u7FA4\u7D44\u7BE9\u9078");
37
37
  injectString("ro-RO", "Advanced groups filter", "Filtru de grupuri avansat");
38
- injectString("ar-SA", "Advanced groups filter", "\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0627\u0644\u0645\u062A\u0642\u062F\u0645\u0629");
38
+ injectString("ar", "Advanced groups filter", "\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0627\u0644\u0645\u062A\u0642\u062F\u0645\u0629");
39
39
  injectString("cs", "Cancel", "Zru\u0161it");
40
40
  injectString("da-DK", "Cancel", "Annuller");
41
41
  injectString("de", "Cancel", "Abbrechen");
@@ -62,7 +62,7 @@ injectString("tr", "Cancel", "\u0130ptal");
62
62
  injectString("zh-Hans", "Cancel", "\u53D6\u6D88");
63
63
  injectString("zh-TW", "Cancel", "\u53D6\u6D88");
64
64
  injectString("ro-RO", "Cancel", "Anula\u021Bi");
65
- injectString("ar-SA", "Cancel", "\u0625\u0644\u063A\u0627\u0621");
65
+ injectString("ar", "Cancel", "\u0625\u0644\u063A\u0627\u0621");
66
66
  injectString("cs", "Apply", "Pou\u017E\xEDt");
67
67
  injectString("da-DK", "Apply", "Anvend");
68
68
  injectString("de", "Apply", "Anwenden");
@@ -89,7 +89,7 @@ injectString("tr", "Apply", "Uygula");
89
89
  injectString("zh-Hans", "Apply", "\u5E94\u7528");
90
90
  injectString("zh-TW", "Apply", "\u5957\u7528");
91
91
  injectString("ro-RO", "Apply", "Aplica\u021Bi");
92
- injectString("ar-SA", "Apply", "\u062A\u0637\u0628\u064A\u0642");
92
+ injectString("ar", "Apply", "\u062A\u0637\u0628\u064A\u0642");
93
93
  const advancedGroupsFilterFormHelper_1 = require("./advancedGroupsFilterFormHelper");
94
94
  const advancedGroupsFilterForm_1 = require("./advancedGroupsFilterForm");
95
95
  const classNames_1 = require("../commonHelpers/classNames/classNames");
@@ -34,7 +34,7 @@ injectString("tr", "Create conditions below to filter the entire system.", "T\xF
34
34
  injectString("zh-Hans", "Create conditions below to filter the entire system.", "\u5728\u4E0B\u9762\u521B\u5EFA\u6761\u4EF6\u4EE5\u7B5B\u9009\u6574\u4E2A\u7CFB\u7EDF\u3002");
35
35
  injectString("zh-TW", "Create conditions below to filter the entire system.", "\u5728\u4E0B\u65B9\u5EFA\u7ACB\u689D\u4EF6\u4EE5\u7BE9\u9078\u6574\u500B\u7CFB\u7D71\u3002");
36
36
  injectString("ro-RO", "Create conditions below to filter the entire system.", "Crea\u021Bi condi\u021Biile de mai jos pentru a filtra \xEEntregul sistem.");
37
- injectString("ar-SA", "Create conditions below to filter the entire system.", "\u0623\u0646\u0634\u0626 \u0634\u0631\u0648\u0637\u064B\u0627 \u0623\u062F\u0646\u0627\u0647 \u0644\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 \u0628\u0623\u0643\u0645\u0644\u0647.");
37
+ injectString("ar", "Create conditions below to filter the entire system.", "\u0623\u0646\u0634\u0626 \u0634\u0631\u0648\u0637\u064B\u0627 \u0623\u062F\u0646\u0627\u0647 \u0644\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 \u0628\u0623\u0643\u0645\u0644\u0647.");
38
38
  injectString("cs", "Add new condition", "P\u0159idat novou podm\xEDnku");
39
39
  injectString("da-DK", "Add new condition", "Tilf\xF8j ny betingelse");
40
40
  injectString("de", "Add new condition", "Neue Bedingung hinzuf\xFCgen");
@@ -61,7 +61,7 @@ injectString("tr", "Add new condition", "Yeni ko\u015Ful ekle");
61
61
  injectString("zh-Hans", "Add new condition", "\u6DFB\u52A0\u65B0\u6761\u4EF6");
62
62
  injectString("zh-TW", "Add new condition", "\u65B0\u589E\u689D\u4EF6");
63
63
  injectString("ro-RO", "Add new condition", "Ad\u0103uga\u021Bi o condi\u021Bie nou\u0103");
64
- injectString("ar-SA", "Add new condition", "\u0625\u0636\u0627\u0641\u0629 \u0634\u0631\u0637 \u062C\u062F\u064A\u062F");
64
+ injectString("ar", "Add new condition", "\u0625\u0636\u0627\u0641\u0629 \u0634\u0631\u0637 \u062C\u062F\u064A\u062F");
65
65
  const textIconButton_1 = require("../textIconButton/textIconButton");
66
66
  const advancedGroupsFilterFormSection_1 = require("./advancedGroupsFilterFormSection");
67
67
  const groupsHelper_1 = require("../groupsFilterRaw/groupsHelper");
@@ -65,7 +65,7 @@ injectString("tr", "And", "Ve");
65
65
  injectString("zh-Hans", "And", "\u548C");
66
66
  injectString("zh-TW", "And", "\u548C");
67
67
  injectString("ro-RO", "And", "\u0218i");
68
- injectString("ar-SA", "And", "\u0648");
68
+ injectString("ar", "And", "\u0648");
69
69
  injectString("cs", "Or", "Nebo");
70
70
  injectString("da-DK", "Or", "Eller");
71
71
  injectString("de", "Or", "Oder");
@@ -92,7 +92,7 @@ injectString("tr", "Or", "Veya");
92
92
  injectString("zh-Hans", "Or", "\u6216");
93
93
  injectString("zh-TW", "Or", "\u6216");
94
94
  injectString("ro-RO", "Or", "Sau");
95
- injectString("ar-SA", "Or", "\u0623\u0648");
95
+ injectString("ar", "Or", "\u0623\u0648");
96
96
  injectString("cs", "Operator", "Oper\xE1tor");
97
97
  injectString("da-DK", "Operator", "Operat\xF8r");
98
98
  injectString("de", "Operator", "Operator");
@@ -119,7 +119,7 @@ injectString("tr", "Operator", "Operat\xF6r");
119
119
  injectString("zh-Hans", "Operator", "\u64CD\u4F5C\u5458");
120
120
  injectString("zh-TW", "Operator", "\u904B\u7B97\u5B50");
121
121
  injectString("ro-RO", "Operator", "Operator");
122
- injectString("ar-SA", "Operator", "\u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0634\u063A\u064A\u0644");
122
+ injectString("ar", "Operator", "\u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0634\u063A\u064A\u0644");
123
123
  injectString("cs", "Groups", "Skupiny");
124
124
  injectString("da-DK", "Groups", "Grupper");
125
125
  injectString("de", "Groups", "Gruppen");
@@ -146,7 +146,7 @@ injectString("tr", "Groups", "Gruplar");
146
146
  injectString("zh-Hans", "Groups", "\u7EC4");
147
147
  injectString("zh-TW", "Groups", "\u7FA4\u7D44");
148
148
  injectString("ro-RO", "Groups", "Grupuri");
149
- injectString("ar-SA", "Groups", "\u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A");
149
+ injectString("ar", "Groups", "\u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A");
150
150
  injectString("cs", "Remove condition", "Odebrat podm\xEDnku");
151
151
  injectString("da-DK", "Remove condition", "Fjern betingelse");
152
152
  injectString("de", "Remove condition", "Bedingung entfernen");
@@ -173,7 +173,7 @@ injectString("tr", "Remove condition", "Ko\u015Fulu kald\u0131r");
173
173
  injectString("zh-Hans", "Remove condition", "\u5220\u9664\u6761\u4EF6");
174
174
  injectString("zh-TW", "Remove condition", "\u79FB\u9664\u689D\u4EF6");
175
175
  injectString("ro-RO", "Remove condition", "Elimina\u021Bi condi\u021Bia");
176
- injectString("ar-SA", "Remove condition", "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0634\u0631\u0637");
176
+ injectString("ar", "Remove condition", "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0634\u0631\u0637");
177
177
  injectString("cs", "Select groups\u2026", "Vybrat skupiny\u2026");
178
178
  injectString("da-DK", "Select groups\u2026", "V\xE6lg grupper...");
179
179
  injectString("de", "Select groups\u2026", "Gruppen ausw\xE4hlen\xA0\u2026");
@@ -200,7 +200,7 @@ injectString("tr", "Select groups\u2026", "Gruplar\u0131 se\xE7\u2026");
200
200
  injectString("zh-Hans", "Select groups\u2026", "\u9009\u62E9\u7EC4\u2026");
201
201
  injectString("zh-TW", "Select groups\u2026", "\u9078\u53D6\u7FA4\u7D44...");
202
202
  injectString("ro-RO", "Select groups\u2026", "Selecta\u021Bi grupurile\u2026");
203
- injectString("ar-SA", "Select groups\u2026", "\u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A\u2026");
203
+ injectString("ar", "Select groups\u2026", "\u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A\u2026");
204
204
  injectString("cs", "GroupCompanyId", "Skupina spole\u010Dnosti");
205
205
  injectString("da-DK", "GroupCompanyId", "Virksomhedsgruppe");
206
206
  injectString("de", "GroupCompanyId", "Unternehmensgruppe");
@@ -227,7 +227,7 @@ injectString("tr", "GroupCompanyId", "\u015Eirket grubu");
227
227
  injectString("zh-Hans", "GroupCompanyId", "\u516C\u53F8\u7EC4");
228
228
  injectString("zh-TW", "GroupCompanyId", "\u516C\u53F8\u7FA4\u7D44");
229
229
  injectString("ro-RO", "GroupCompanyId", "Grup de companii");
230
- injectString("ar-SA", "GroupCompanyId", "\u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u0634\u0631\u0643\u0629");
230
+ injectString("ar", "GroupCompanyId", "\u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u0634\u0631\u0643\u0629");
231
231
  const react_1 = __importStar(require("react"));
232
232
  const groupButton_1 = require("../groupButton/groupButton");
233
233
  const groupsFilterInterfaces_1 = require("../groupsFilterRaw/groupsFilterInterfaces");
@@ -35,7 +35,7 @@ injectString("tr", "Use multiple operators when searching for a specific group.
35
35
  injectString("zh-Hans", "Use multiple operators when searching for a specific group. For example, filtering for assets that belong to the Tractor group and the Toronto group displays a list of tractors that belong to the Toronto branch.", "\u641C\u7D22\u7279\u5B9A\u7EC4\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u591A\u4E2A\u8FD0\u7B97\u7B26\u3002\u4F8B\u5982\uFF0C\u7B5B\u9009\u5C5E\u4E8E\u201C\u7275\u5F15\u8F66\u201D\u7EC4\u548C\u201C\u591A\u4F26\u591A\u201D\u7EC4\u7684\u8D44\u4EA7\uFF0C\u5C31\u4F1A\u663E\u793A\u5C5E\u4E8E\u591A\u4F26\u591A\u5206\u652F\u7684\u7275\u5F15\u8F66\u5217\u8868\u3002");
36
36
  injectString("zh-TW", "Use multiple operators when searching for a specific group. For example, filtering for assets that belong to the Tractor group and the Toronto group displays a list of tractors that belong to the Toronto branch.", "\u641C\u5C0B\u7279\u5B9A\u7FA4\u7D44\u6642\uFF0C\u8ACB\u4F7F\u7528\u591A\u500B\u904B\u7B97\u5B50\u3002\u4F8B\u5982\uFF0C\u82E5\u7BE9\u9078\u5C6C\u65BC\u727D\u5F15\u6A5F\u7FA4\u7D44\u548C\u591A\u502B\u591A\u7FA4\u7D44\u7684\u8CC7\u7522\uFF0C\u5247\u6703\u986F\u793A\u5C6C\u65BC\u591A\u502B\u591A\u5206\u516C\u53F8\u7684\u727D\u5F15\u6A5F\u6E05\u55AE\u3002");
37
37
  injectString("ro-RO", "Use multiple operators when searching for a specific group. For example, filtering for assets that belong to the Tractor group and the Toronto group displays a list of tractors that belong to the Toronto branch.", "Utiliza\u021Bi mai mul\u021Bi operatori c\xE2nd c\u0103uta\u021Bi un anumit grup. De exemplu, prin filtrarea activelor care apar\u021Bin grupului Tractor \u0219i grupului Toronto, se afi\u0219eaz\u0103 o list\u0103 de tractoare care apar\u021Bin filialei Toronto.");
38
- injectString("ar-SA", "Use multiple operators when searching for a specific group. For example, filtering for assets that belong to the Tractor group and the Toronto group displays a list of tractors that belong to the Toronto branch.", "\u0627\u0633\u062A\u062E\u062F\u0645 \u0639\u0648\u0627\u0645\u0644 \u062A\u0634\u063A\u064A\u0644 \u0645\u062A\u0639\u062F\u062F\u0629 \u0639\u0646\u062F \u0627\u0644\u0628\u062D\u062B \u0639\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u0645\u0639\u064A\u0646\u0629. \u0639\u0644\u0649 \u0633\u0628\u064A\u0644 \u0627\u0644\u0645\u062B\u0627\u0644\u060C \u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0623\u0635\u0648\u0644 \u0627\u0644\u062A\u064A \u062A\u0646\u062A\u0645\u064A \u0625\u0644\u0649 \u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u062C\u0631\u0627\u0631\u0627\u062A \u0648\u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0648\u0631\u0646\u062A\u0648 \u062A\u0639\u0631\u0636 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062C\u0631\u0627\u0631\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0646\u062A\u0645\u064A \u0625\u0644\u0649 \u0641\u0631\u0639 \u062A\u0648\u0631\u0646\u062A\u0648.");
38
+ injectString("ar", "Use multiple operators when searching for a specific group. For example, filtering for assets that belong to the Tractor group and the Toronto group displays a list of tractors that belong to the Toronto branch.", "\u0627\u0633\u062A\u062E\u062F\u0645 \u0639\u0648\u0627\u0645\u0644 \u062A\u0634\u063A\u064A\u0644 \u0645\u062A\u0639\u062F\u062F\u0629 \u0639\u0646\u062F \u0627\u0644\u0628\u062D\u062B \u0639\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u0645\u0639\u064A\u0646\u0629. \u0639\u0644\u0649 \u0633\u0628\u064A\u0644 \u0627\u0644\u0645\u062B\u0627\u0644\u060C \u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0623\u0635\u0648\u0644 \u0627\u0644\u062A\u064A \u062A\u0646\u062A\u0645\u064A \u0625\u0644\u0649 \u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u062C\u0631\u0627\u0631\u0627\u062A \u0648\u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0648\u0631\u0646\u062A\u0648 \u062A\u0639\u0631\u0636 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062C\u0631\u0627\u0631\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0646\u062A\u0645\u064A \u0625\u0644\u0649 \u0641\u0631\u0639 \u062A\u0648\u0631\u0646\u062A\u0648.");
39
39
  const useLanguage_1 = require("../utils/localization/useLanguage");
40
40
  const classNames_1 = require("../commonHelpers/classNames/classNames");
41
41
  const AdvancedGroupsFilterSectionTooltip = ({
@@ -1,2 +1,4 @@
1
1
  /// <reference types="react" />
2
- export declare const Banner: import("react").FC<import("../banner/banner").IBanner>;
2
+ export declare const Banner: import("react").FC<import("../banner/banner").IBanner> & {
3
+ ErrorSummary: import("react").FC<import("../banner/bannerErrorSummary").IBannerErrorSummary>;
4
+ };
@@ -40,7 +40,7 @@ injectString("tr", "Close", "Kapat");
40
40
  injectString("zh-Hans", "Close", "\u5173\u95ED");
41
41
  injectString("zh-TW", "Close", "\u95DC\u9589");
42
42
  injectString("ro-RO", "Close", "\xCEnchide");
43
- injectString("ar-SA", "Close", "\u0625\u063A\u0644\u0627\u0642");
43
+ injectString("ar", "Close", "\u0625\u063A\u0644\u0627\u0642");
44
44
  const alertAnimation_1 = __importDefault(require("./components/alertAnimation"));
45
45
  const classNames_1 = require("../commonHelpers/classNames/classNames");
46
46
  const buttonType_1 = require("../button/buttonType");
@@ -1,7 +1,8 @@
1
1
  import "./banner.less";
2
+ import { FC } from "react";
2
3
  import { TBannerSize } from "./bannerUtils";
3
4
  import { IZenIdComponentProps } from "../commonHelpers/zenComponent";
4
- import { FC } from "react";
5
+ import { BannerErrorSummary } from "./bannerErrorSummary";
5
6
  export declare const BannerDisplayName = "Banner";
6
7
  export interface IBannerAction {
7
8
  link?: string;
@@ -24,4 +25,6 @@ export interface IBanner extends Partial<IZenIdComponentProps> {
24
25
  ariaAtomic?: "true" | "false";
25
26
  ariaLive?: "off" | "assertive" | "polite";
26
27
  }
27
- export declare const Banner: FC<IBanner>;
28
+ export declare const Banner: FC<IBanner> & {
29
+ ErrorSummary: typeof BannerErrorSummary;
30
+ };
@@ -5,10 +5,20 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const bannerSingleLine_1 = require("./bannerSingleLine");
6
6
  const bannerMultipLine_1 = require("./bannerMultipLine");
7
7
  const useMobile_1 = require("../commonHelpers/hooks/useMobile");
8
+ const bannerErrorSummary_1 = require("./bannerErrorSummary");
9
+ const hasSummaryErrorChild_1 = require("./utils/hasSummaryErrorChild");
10
+ const useSummaryBannerProp_1 = require("./utils/useSummaryBannerProp");
8
11
  exports.BannerDisplayName = "Banner";
9
- const Banner = ({ children, header, type = "warning", icon, action, size, onClose, multiline, role = "status", ariaAtomic = "true", ariaLive = "polite", primaryAction, className, id }) => {
12
+ // eslint-disable-next-line @typescript-eslint/naming-convention
13
+ const Banner = (props) => {
14
+ const { children, header, type, icon, action, size, onClose, multiline, role = "status", ariaAtomic = "true", ariaLive = "polite", primaryAction, className, id } = props;
10
15
  const isMobile = (0, useMobile_1.useMobile)();
11
- const isMultiline = multiline === undefined ? isMobile : multiline;
16
+ const forceSummaryError = (0, hasSummaryErrorChild_1.hasSummaryErrorChild)(children) && (type === "error" || type === undefined);
17
+ const isMultiline = forceSummaryError ? true : multiline === undefined ? isMobile : multiline;
18
+ const summaryErrorProps = (0, useSummaryBannerProp_1.useSummaryBannerProp)(props);
19
+ if (Object.keys(summaryErrorProps).length) {
20
+ return (0, jsx_runtime_1.jsx)(bannerMultipLine_1.BannerMultiline, Object.assign({}, summaryErrorProps));
21
+ }
12
22
  return isMultiline ? ((0, jsx_runtime_1.jsx)(bannerMultipLine_1.BannerMultiline, { children,
13
23
  header,
14
24
  type,
@@ -37,3 +47,4 @@ const Banner = ({ children, header, type = "warning", icon, action, size, onClos
37
47
  };
38
48
  exports.Banner = Banner;
39
49
  exports.Banner.displayName = exports.BannerDisplayName;
50
+ exports.Banner.ErrorSummary = bannerErrorSummary_1.BannerErrorSummary;
@@ -0,0 +1,7 @@
1
+ import { FC } from "react";
2
+ export declare const BannerErrorSummaryDisplayName = "Banner.ErrorSummary";
3
+ export interface IBannerErrorSummary {
4
+ value: string;
5
+ link: string;
6
+ }
7
+ export declare const BannerErrorSummary: FC<IBannerErrorSummary>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BannerErrorSummary = exports.BannerErrorSummaryDisplayName = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ exports.BannerErrorSummaryDisplayName = "Banner.ErrorSummary";
6
+ const BannerErrorSummary = ({ value, link }) => ((0, jsx_runtime_1.jsx)("a", { href: link, className: "zen-banner__summary-error-link zen-link", children: value }));
7
+ exports.BannerErrorSummary = BannerErrorSummary;
8
+ exports.BannerErrorSummary.displayName = exports.BannerErrorSummaryDisplayName;
@@ -40,7 +40,7 @@ injectString("tr", "Close", "Kapat");
40
40
  injectString("zh-Hans", "Close", "\u5173\u95ED");
41
41
  injectString("zh-TW", "Close", "\u95DC\u9589");
42
42
  injectString("ro-RO", "Close", "\xCEnchide");
43
- injectString("ar-SA", "Close", "\u0625\u063A\u0644\u0627\u0642");
43
+ injectString("ar", "Close", "\u0625\u063A\u0644\u0627\u0642");
44
44
  const bannerUtils_1 = require("./bannerUtils");
45
45
  const useLanguage_1 = require("../utils/localization/useLanguage");
46
46
  const typeIcon_1 = __importDefault(require("./typeIcon"));
@@ -40,7 +40,7 @@ injectString("tr", "Close", "Kapat");
40
40
  injectString("zh-Hans", "Close", "\u5173\u95ED");
41
41
  injectString("zh-TW", "Close", "\u95DC\u9589");
42
42
  injectString("ro-RO", "Close", "\xCEnchide");
43
- injectString("ar-SA", "Close", "\u0625\u063A\u0644\u0627\u0642");
43
+ injectString("ar", "Close", "\u0625\u063A\u0644\u0627\u0642");
44
44
  const button_1 = require("../button/button");
45
45
  const buttonType_1 = require("../button/buttonType");
46
46
  const typeIcon_1 = __importDefault(require("./typeIcon"));
@@ -0,0 +1 @@
1
+ export declare const buildSummaryErrorList: (children: React.ReactNode) => React.ReactNode;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildSummaryErrorList = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const isSummaryErrorElement_1 = require("./isSummaryErrorElement");
7
+ const buildSummaryErrorList = (children) => {
8
+ const items = react_1.Children.toArray(children)
9
+ .filter(isSummaryErrorElement_1.isSummaryErrorElement)
10
+ .map(child => {
11
+ const { value, link } = child.props;
12
+ return link ? ((0, jsx_runtime_1.jsx)("a", { href: link, className: "zen-link zen-banner__summary-error-link", children: value }, `${value}-${link}`)) : ((0, jsx_runtime_1.jsx)("span", { className: "zen-banner__summary-error-link", children: value }, value));
13
+ });
14
+ return (0, jsx_runtime_1.jsx)("div", { className: "zen-banner__summary-error-list", children: items });
15
+ };
16
+ exports.buildSummaryErrorList = buildSummaryErrorList;
@@ -0,0 +1 @@
1
+ export declare const hasSummaryErrorChild: (children: React.ReactNode) => boolean;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasSummaryErrorChild = void 0;
4
+ const react_1 = require("react");
5
+ const isSummaryErrorElement_1 = require("./isSummaryErrorElement");
6
+ const hasSummaryErrorChild = (children) => react_1.Children.toArray(children).some(isSummaryErrorElement_1.isSummaryErrorElement);
7
+ exports.hasSummaryErrorChild = hasSummaryErrorChild;
@@ -0,0 +1,2 @@
1
+ import type { BannerType } from "../banner";
2
+ export declare const isSummaryErrorBanner: (type: BannerType | undefined, children: React.ReactNode) => boolean;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSummaryErrorBanner = void 0;
4
+ const hasSummaryErrorChild_1 = require("./hasSummaryErrorChild");
5
+ const isSummaryErrorBanner = (type, children) => (type === undefined || type === "error") && (0, hasSummaryErrorChild_1.hasSummaryErrorChild)(children);
6
+ exports.isSummaryErrorBanner = isSummaryErrorBanner;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { IBannerErrorSummary } from "../bannerErrorSummary";
3
+ export declare const isSummaryErrorElement: (child: React.ReactNode) => child is import("react").ReactElement<IBannerErrorSummary, string | import("react").JSXElementConstructor<any>>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSummaryErrorElement = void 0;
4
+ const react_1 = require("react");
5
+ const bannerErrorSummary_1 = require("../bannerErrorSummary");
6
+ const isSummaryErrorElement = (child) => (0, react_1.isValidElement)(child) && child.type.displayName === bannerErrorSummary_1.BannerErrorSummaryDisplayName;
7
+ exports.isSummaryErrorElement = isSummaryErrorElement;
@@ -0,0 +1,6 @@
1
+ import type { IBanner, IBannerAction } from "../banner";
2
+ interface IBannerInner {
3
+ primaryAction?: IBannerAction;
4
+ }
5
+ export declare const useSummaryBannerProp: (props: IBanner & IBannerInner) => Partial<IBanner & IBannerInner>;
6
+ export {};
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ const {
4
+ injectString
5
+ } = require("../../utils/localization/translationsDictionary");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.useSummaryBannerProp = void 0;
10
+ const useLanguage_1 = require("../../utils/localization/useLanguage");
11
+ const hasSummaryErrorChild_1 = require("./hasSummaryErrorChild");
12
+ const buildSummaryErrorList_1 = require("./buildSummaryErrorList");
13
+ injectString("en", "Please correct the following errors.", "Please correct the following errors.");
14
+ const useSummaryBannerProp = props => {
15
+ const {
16
+ children,
17
+ type
18
+ } = props;
19
+ const {
20
+ translate
21
+ } = (0, useLanguage_1.useLanguage)();
22
+ const isSummaryBanner = (0, hasSummaryErrorChild_1.hasSummaryErrorChild)(children) && (type === "error" || type === undefined);
23
+ if (!isSummaryBanner) {
24
+ return {};
25
+ }
26
+ return Object.assign(Object.assign({}, props), {
27
+ type: "error",
28
+ header: translate("Please correct the following errors."),
29
+ onClose: undefined,
30
+ children: (0, buildSummaryErrorList_1.buildSummaryErrorList)(children),
31
+ action: undefined
32
+ });
33
+ };
34
+ exports.useSummaryBannerProp = useSummaryBannerProp;
@@ -42,7 +42,7 @@ injectString("tr", "Send feedback", "Geri bildirim g\xF6nder");
42
42
  injectString("zh-Hans", "Send feedback", "\u53D1\u9001\u53CD\u9988");
43
43
  injectString("zh-TW", "Send feedback", "\u50B3\u9001\u610F\u898B\u56DE\u994B");
44
44
  injectString("ro-RO", "Send feedback", "Trimite\u021Bi feedback");
45
- injectString("ar-SA", "Send feedback", "\u0625\u0631\u0633\u0627\u0644 \u0645\u0644\u0627\u062D\u0638\u0627\u062A");
45
+ injectString("ar", "Send feedback", "\u0625\u0631\u0633\u0627\u0644 \u0645\u0644\u0627\u062D\u0638\u0627\u062A");
46
46
  injectString("cs", "Manage beta option", "Manage beta option");
47
47
  injectString("da-DK", "Manage beta option", "Styr beta-indstillingen");
48
48
  injectString("de", "Manage beta option", "Manage beta option");
@@ -69,7 +69,7 @@ injectString("tr", "Manage beta option", "Manage beta option");
69
69
  injectString("zh-Hans", "Manage beta option", "Manage beta option");
70
70
  injectString("zh-TW", "Manage beta option", "\u7BA1\u7406\u6E2C\u8A66\u7248\u9078\u9805");
71
71
  injectString("ro-RO", "Manage beta option", "Administra\u021Bi op\u021Biunea beta");
72
- injectString("ar-SA", "Manage beta option", "\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u062E\u064A\u0627\u0631 \u0627\u0644\u062A\u062C\u0631\u064A\u0628\u064A");
72
+ injectString("ar", "Manage beta option", "\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u062E\u064A\u0627\u0631 \u0627\u0644\u062A\u062C\u0631\u064A\u0628\u064A");
73
73
  injectString("cs", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.");
74
74
  injectString("da-DK", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.", "Funktionen er stadig under test og virker ikke helt endnu. Din feedback er guld v\xE6rd og hj\xE6lper os med fremtidige forbedringer.");
75
75
  injectString("de", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.");
@@ -96,7 +96,7 @@ injectString("tr", "This feature is still in testing, and is not fully supported
96
96
  injectString("zh-Hans", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.");
97
97
  injectString("zh-TW", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.", "\u6B64\u529F\u80FD\u4ECD\u5728\u6E2C\u8A66\u968E\u6BB5\uFF0C\u5C1A\u672A\u5B8C\u5168\u652F\u63F4\u3002\u60A8\u7684\u610F\u898B\u56DE\u994B\u5C0D\u6211\u5011\u4F86\u8AAA\u975E\u5E38\u91CD\u8981\uFF0C\u80FD\u5354\u52A9\u6211\u5011\u78BA\u8A8D\u672A\u4F86\u6539\u9032\u7684\u65B9\u5411\u3002");
98
98
  injectString("ro-RO", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.", "Aceast\u0103 func\u021Bie este \xEEn testare \u0219i \xEEnc\u0103 nu este complet compatibil\u0103. Feedbackul dvs. este important \u0219i ne va ajuta la \xEEmbun\u0103t\u0103\u021Birile viitoare.");
99
- injectString("ar-SA", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.", "\u0647\u0630\u0647 \u0627\u0644\u0645\u064A\u0632\u0629 \u0644\u0627 \u062A\u0632\u0627\u0644 \u0642\u064A\u062F \u0627\u0644\u0627\u062E\u062A\u0628\u0627\u0631 \u0648\u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645\u0629 \u0628\u0627\u0644\u0643\u0627\u0645\u0644 \u0628\u0639\u062F. \u0645\u0644\u0627\u062D\u0638\u0627\u062A\u0643 \u0642\u064A\u0645\u0629 \u0644\u0644\u0645\u0633\u0627\u0639\u062F\u0629 \u0641\u064A \u062A\u0648\u062C\u064A\u0647 \u0627\u0644\u062A\u062D\u0633\u064A\u0646\u0627\u062A \u0627\u0644\u0645\u0633\u062A\u0642\u0628\u0644\u064A\u0629.");
99
+ injectString("ar", "This feature is still in testing, and is not fully supported yet. Your feedback is valuable to help guide future enhancements.", "\u0647\u0630\u0647 \u0627\u0644\u0645\u064A\u0632\u0629 \u0644\u0627 \u062A\u0632\u0627\u0644 \u0642\u064A\u062F \u0627\u0644\u0627\u062E\u062A\u0628\u0627\u0631 \u0648\u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645\u0629 \u0628\u0627\u0644\u0643\u0627\u0645\u0644 \u0628\u0639\u062F. \u0645\u0644\u0627\u062D\u0638\u0627\u062A\u0643 \u0642\u064A\u0645\u0629 \u0644\u0644\u0645\u0633\u0627\u0639\u062F\u0629 \u0641\u064A \u062A\u0648\u062C\u064A\u0647 \u0627\u0644\u062A\u062D\u0633\u064A\u0646\u0627\u062A \u0627\u0644\u0645\u0633\u062A\u0642\u0628\u0644\u064A\u0629.");
100
100
  injectString("cs", "Beta", "Beta");
101
101
  injectString("da-DK", "Beta", "Beta");
102
102
  injectString("de", "Beta", "Beta");
@@ -123,7 +123,7 @@ injectString("tr", "Beta", "Beta");
123
123
  injectString("zh-Hans", "Beta", "\u6D4B\u8BD5\u7248");
124
124
  injectString("zh-TW", "Beta", "\u6E2C\u8A66\u7248");
125
125
  injectString("ro-RO", "Beta", "Beta");
126
- injectString("ar-SA", "Beta", "\u062A\u062C\u0631\u064A\u0628\u064A");
126
+ injectString("ar", "Beta", "\u062A\u062C\u0631\u064A\u0628\u064A");
127
127
  const BetaPill = props => {
128
128
  const {
129
129
  className,
@@ -34,7 +34,7 @@ injectString("tr", "Remove page from bookmarks", "Sayfay\u0131 yer imlerinden ka
34
34
  injectString("zh-Hans", "Remove page from bookmarks", "\u5220\u9664\u6B64\u9875\u9762\u7684\u4E66\u7B7E");
35
35
  injectString("zh-TW", "Remove page from bookmarks", "\u5F9E\u66F8\u7C64\u79FB\u9664\u9801\u9762");
36
36
  injectString("ro-RO", "Remove page from bookmarks", "Elimina\u021Bi pagina din marcaje");
37
- injectString("ar-SA", "Remove page from bookmarks", "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0635\u0641\u062D\u0629 \u0645\u0646 \u0627\u0644\u0645\u0641\u0636\u0644\u0629");
37
+ injectString("ar", "Remove page from bookmarks", "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0635\u0641\u062D\u0629 \u0645\u0646 \u0627\u0644\u0645\u0641\u0636\u0644\u0629");
38
38
  injectString("cs", "Add page to bookmarks", "P\u0159idat str\xE1nku do z\xE1lo\u017Eek");
39
39
  injectString("da-DK", "Add page to bookmarks", "F\xF8j side til bogm\xE6rker");
40
40
  injectString("de", "Add page to bookmarks", "Seite zu Lesezeichen hinzuf\xFCgen");
@@ -61,7 +61,7 @@ injectString("tr", "Add page to bookmarks", "Sayfay\u0131 yer imlerine ekle");
61
61
  injectString("zh-Hans", "Add page to bookmarks", "\u5C06\u9875\u9762\u6DFB\u52A0\u5230\u4E66\u7B7E");
62
62
  injectString("zh-TW", "Add page to bookmarks", "\u65B0\u589E\u9801\u9762\u81F3\u66F8\u7C64");
63
63
  injectString("ro-RO", "Add page to bookmarks", "Ad\u0103uga\u021Bi pagina la marcaje");
64
- injectString("ar-SA", "Add page to bookmarks", "\u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0635\u0641\u062D\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0641\u0636\u0644\u0629");
64
+ injectString("ar", "Add page to bookmarks", "\u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0635\u0641\u062D\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0641\u0636\u0644\u0629");
65
65
  const classNames_1 = require("../commonHelpers/classNames/classNames");
66
66
  const textIconButton_1 = require("../textIconButton/textIconButton");
67
67
  const svgIconSize_1 = require("../svgIcon/svgIconSize");
@@ -37,7 +37,7 @@ injectString("tr", "Select visible", "G\xF6r\xFCn\xFCr olan\u0131 se\xE7");
37
37
  injectString("zh-Hans", "Select visible", "\u9009\u62E9\u53EF\u89C1");
38
38
  injectString("zh-TW", "Select visible", "\u9078\u53D6\u53EF\u898B\u9805\u76EE");
39
39
  injectString("ro-RO", "Select visible", "Selecta\u021Bi ce este vizibil");
40
- injectString("ar-SA", "Select visible", "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0645\u0631\u0626\u064A");
40
+ injectString("ar", "Select visible", "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0645\u0631\u0626\u064A");
41
41
  injectString("cs", "Select individual", "Vybrat jednotliv\u011B");
42
42
  injectString("da-DK", "Select individual", "V\xE6lg individuel");
43
43
  injectString("de", "Select individual", "Einzelne ausw\xE4hlen");
@@ -64,7 +64,7 @@ injectString("tr", "Select individual", "Ki\u015Fi se\xE7");
64
64
  injectString("zh-Hans", "Select individual", "\u9009\u62E9\u4E2A\u4EBA");
65
65
  injectString("zh-TW", "Select individual", "\u9078\u53D6\u500B\u5225\u9805\u76EE");
66
66
  injectString("ro-RO", "Select individual", "Selecta\u021Bi individual");
67
- injectString("ar-SA", "Select individual", "\u062A\u062D\u062F\u064A\u062F \u0641\u0631\u062F\u064A");
67
+ injectString("ar", "Select individual", "\u062A\u062D\u062F\u064A\u062F \u0641\u0631\u062F\u064A");
68
68
  injectString("cs", "Select all", "Vybrat v\u0161e");
69
69
  injectString("da-DK", "Select all", "V\xE6lg alle");
70
70
  injectString("de", "Select all", "Alle ausw\xE4hlen");
@@ -91,7 +91,7 @@ injectString("tr", "Select all", "T\xFCm\xFCn\xFC se\xE7");
91
91
  injectString("zh-Hans", "Select all", "\u5168\u9009");
92
92
  injectString("zh-TW", "Select all", "\u5168\u9078");
93
93
  injectString("ro-RO", "Select all", "Selecta\u021Bi tot");
94
- injectString("ar-SA", "Select all", "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644");
94
+ injectString("ar", "Select all", "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644");
95
95
  injectString("cs", "Select none", "Zru\u0161it v\xFDb\u011Br");
96
96
  injectString("da-DK", "Select none", "V\xE6lg ingen");
97
97
  injectString("de", "Select none", "Keine ausw\xE4hlen");
@@ -118,7 +118,7 @@ injectString("tr", "Select none", "Hi\xE7birini se\xE7me");
118
118
  injectString("zh-Hans", "Select none", "\u6CA1\u6709\u9009\u62E9");
119
119
  injectString("zh-TW", "Select none", "\u5168\u4E0D\u9078");
120
120
  injectString("ro-RO", "Select none", "Nu selecta\u021Bi nimic");
121
- injectString("ar-SA", "Select none", "\u0625\u0644\u063A\u0627\u0621 \u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644");
121
+ injectString("ar", "Select none", "\u0625\u0644\u063A\u0627\u0621 \u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644");
122
122
  injectString("cs", "Multiple Selection Menu", "Nab\xEDdka s\xA0v\xEDcen\xE1sobn\xFDm v\xFDb\u011Brem");
123
123
  injectString("da-DK", "Multiple Selection Menu", "Menu med flere valg");
124
124
  injectString("de", "Multiple Selection Menu", "Mehrere Auswahlmen\xFCs");
@@ -145,7 +145,7 @@ injectString("tr", "Multiple Selection Menu", "\xC7oklu Se\xE7im Men\xFCs\xFC");
145
145
  injectString("zh-Hans", "Multiple Selection Menu", "\u591A\u4E2A\u9009\u62E9\u83DC\u5355");
146
146
  injectString("zh-TW", "Multiple Selection Menu", "\u591A\u91CD\u9078\u64C7\u9078\u55AE");
147
147
  injectString("ro-RO", "Multiple Selection Menu", "Meniu selectare multipl\u0103");
148
- injectString("ar-SA", "Multiple Selection Menu", "\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0645\u062A\u0639\u062F\u062F");
148
+ injectString("ar", "Multiple Selection Menu", "\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0645\u062A\u0639\u062F\u062F");
149
149
  var BulkEditItemType;
150
150
  (function (BulkEditItemType) {
151
151
  BulkEditItemType["SelectVisible"] = "selectVisible";