@geotab/zenith 3.16.0-beta.0 → 3.16.0-beta.2

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 (335) hide show
  1. package/README.md +25 -0
  2. package/dist/advancedGroupsFilter/advancedGroupsFilter.js +3 -3
  3. package/dist/advancedGroupsFilter/advancedGroupsFilterForm.js +2 -2
  4. package/dist/advancedGroupsFilter/advancedGroupsFilterFormSection.js +7 -7
  5. package/dist/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.js +1 -1
  6. package/dist/alertRaw/alertRaw.js +1 -1
  7. package/dist/banner/bannerMultipLine.js +1 -1
  8. package/dist/banner/bannerSingleLine.js +1 -1
  9. package/dist/banner/utils/useSummaryBannerProp.js +1 -1
  10. package/dist/betaPill/betaPill.js +4 -4
  11. package/dist/bookmark/bookmark.js +2 -2
  12. package/dist/bulkEditControl/bulkEditControl.js +5 -5
  13. package/dist/calendar/calendar.js +30 -30
  14. package/dist/calendar/calendarUtils.js +6 -6
  15. package/dist/card/card.js +1 -1
  16. package/dist/chart/accessibleChart/accessibleChartNarrative.js +13 -13
  17. package/dist/chart/accessibleChart/accessibleChartTable.js +5 -5
  18. package/dist/chart/accessibleChart/generatePieNarrative.js +6 -6
  19. package/dist/chart/barChart.js +1 -1
  20. package/dist/chart/chart.js +1 -1
  21. package/dist/chart/chartAxis/chartAxis.js +2 -2
  22. package/dist/chart/lineChart.js +1 -1
  23. package/dist/chart/pieChart.js +1 -1
  24. package/dist/checkboxListWithAction/checkboxListWithAction.js +4 -4
  25. package/dist/chip/chip.js +1 -1
  26. package/dist/columnsSelector/columnsSelector.js +2 -2
  27. package/dist/columnsSelector/columnsTab/columnsTab.js +1 -1
  28. package/dist/columnsSelector/columnsTabGroup/columnsTabGroup.js +1 -1
  29. package/dist/controlledPopup/controlledPopup.d.ts +1 -1
  30. package/dist/controlledPopup/controlledPopup.js +17 -3
  31. package/dist/dataFeed/feedExpandControl/feedExpandControl.js +2 -2
  32. package/dist/dataGrid/columns/checkboxColumn/checkboxHeaderCell.js +1 -1
  33. package/dist/dataGrid/dataGrid.js +1 -1
  34. package/dist/dataGrid/emptySearchList/emptySearchList.js +1 -1
  35. package/dist/dataGrid/entitiesListActions/actions/columnsListButton.js +1 -1
  36. package/dist/dataGrid/entitiesListActions/actions/fullscreenButton.js +2 -2
  37. package/dist/dataGrid/withFlexibleColumns/components/columnSettings.js +2 -2
  38. package/dist/dataGrid/withFlexibleColumns/components/columnSettingsSidePanel.js +1 -1
  39. package/dist/dataGrid/withFlexibleColumns/withFlexibleColumns.js +1 -1
  40. package/dist/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +5 -5
  41. package/dist/dataGrid/withSelectableRows/withSelectableRows.js +4 -4
  42. package/dist/dataGrid/withSortableColumns/columns/sortableColumnWrapper.js +2 -2
  43. package/dist/dateInputInner/dateInputInner.js +7 -7
  44. package/dist/dateInputInner/dateInputInnerControlBlock.js +2 -2
  45. package/dist/dateInputRaw/dateInputRaw.js +3 -3
  46. package/dist/dateInputRaw/utils/getLabel.js +2 -2
  47. package/dist/dateRangeInner/dateRangeInner.js +1 -1
  48. package/dist/dateRangeRaw/dateRangeRaw.js +10 -10
  49. package/dist/dateRangeRaw/utils/dateRangeUtils.js +17 -17
  50. package/dist/dateSelectionWrapper/dateSelectionWrapper.js +4 -4
  51. package/dist/dialog/dialogContent.js +1 -1
  52. package/dist/dropdown/dropdownTrigger.d.ts +1 -1
  53. package/dist/dropdownRaw/dropdownList.js +9 -9
  54. package/dist/dropdownRaw/dropdownPopup.js +3 -3
  55. package/dist/dropdownRaw/dropdownRaw.js +249 -3
  56. package/dist/dropdownRaw/dropdownSearchableTrigger.d.ts +2 -1
  57. package/dist/dropdownRaw/dropdownSearchableTrigger.js +8 -6
  58. package/dist/dropdownRaw/dropdownTrigger.d.ts +2 -1
  59. package/dist/dropdownRaw/dropdownTrigger.js +2 -2
  60. package/dist/dropdownRaw/types.d.ts +7 -0
  61. package/dist/favoriteButton/favoriteButton.js +1 -1
  62. package/dist/fileUpload/components/dropZoneContent.js +4 -4
  63. package/dist/fileUpload/components/templateDownloadSection.js +1 -1
  64. package/dist/fileUpload/components/uploadedFilesSection.js +2 -2
  65. package/dist/fileUpload/fileUpload.js +6 -6
  66. package/dist/filters/components/filtersContainer.js +3 -3
  67. package/dist/filters/components/filtersEmptyState.js +2 -2
  68. package/dist/filters/components/filtersSaveModal.js +5 -5
  69. package/dist/filters/components/filtersSavedChipComponent.js +11 -11
  70. package/dist/filters/components/filtersSearchItemData.js +1 -1
  71. package/dist/filters/components/filtersSearchList.js +9 -9
  72. package/dist/filters/components/filtersSelect.js +1 -1
  73. package/dist/filters/components/filtersSelectListItem.js +2 -2
  74. package/dist/filters/components/filtersSidePanel.js +8 -8
  75. package/dist/filters/filters.js +4 -3
  76. package/dist/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +18 -18
  77. package/dist/filtersBar/components/resetComponentButton.js +1 -1
  78. package/dist/filtersBar/filtersBarActions/filtersBarActions.js +4 -4
  79. package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +2 -2
  80. package/dist/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +5 -5
  81. package/dist/filtersBar/filtersContainer/filtersContainer.js +2 -2
  82. package/dist/formField/hooks/useError.js +3 -3
  83. package/dist/formGroup/components/reviewListToggle/reviewListToggle.js +2 -2
  84. package/dist/formGroup/hooks/useToggle.js +1 -1
  85. package/dist/formLayout/hooks/useError.js +3 -3
  86. package/dist/formLayout/hooks/useFormButtons.js +3 -3
  87. package/dist/formSection/hooks/useError.js +3 -3
  88. package/dist/formStepper/components/formStep.js +1 -1
  89. package/dist/formStepper/formStepper.js +2 -2
  90. package/dist/formStepperButtons/formStepperButtons.js +4 -4
  91. package/dist/groupsFilterRaw/groupsFilterAdjustmentState.js +4 -4
  92. package/dist/groupsFilterRaw/groupsFilterBox.js +3 -3
  93. package/dist/groupsFilterRaw/groupsFilterCommon.js +2 -2
  94. package/dist/groupsFilterRaw/groupsFilterCurrentlySelectedState.js +5 -5
  95. package/dist/groupsFilterRaw/groupsFilterHelper.js +2 -2
  96. package/dist/groupsFilterRaw/groupsFilterInitialState.js +8 -8
  97. package/dist/groupsFilterRaw/groupsFilterMenu.js +3 -3
  98. package/dist/groupsFilterRaw/groupsFilterRaw.js +8 -8
  99. package/dist/groupsFilterRaw/groupsFilterTrigger.js +2 -2
  100. package/dist/groupsFilterRaw/groupsHelper.js +22 -22
  101. package/dist/header/components/collapsedItemsControl/collapsedItemsControl.js +1 -1
  102. package/dist/header/components/mobileFilterControl/mobileFilterControl.js +1 -1
  103. package/dist/header/components/mobileSearchControl/mobileSearchControl.js +3 -3
  104. package/dist/header/headerBack.js +1 -1
  105. package/dist/index.css +89 -83
  106. package/dist/index.d.ts +3 -0
  107. package/dist/index.js +8 -3
  108. package/dist/lineChart/lineChart.js +1 -1
  109. package/dist/lineChartMini/lineChartMini.js +1 -1
  110. package/dist/list/itemData/itemDataInternal.js +2 -2
  111. package/dist/list/listItem/listItem.js +2 -2
  112. package/dist/menu/components/menuErrorItem.js +2 -2
  113. package/dist/mobileSheet/mobileSheet.js +2 -2
  114. package/dist/modal/modal.js +1 -1
  115. package/dist/nav/navFooter/navEditFooter/navEditFooter.js +2 -2
  116. package/dist/nav/navFooter/navFooter.js +1 -1
  117. package/dist/nav/navFooter/navFooterAction/navFooterAction.js +1 -1
  118. package/dist/nav/navHeader/navHeader.js +2 -2
  119. package/dist/nav/navHeader/navHeaderSearch/navHeaderSearch.js +2 -2
  120. package/dist/nav/navMobileBar/navMobileBar.js +1 -1
  121. package/dist/notification/notification.js +1 -1
  122. package/dist/pagination/paginationArrow.js +2 -2
  123. package/dist/pagination/paginationText/paginationText.js +1 -1
  124. package/dist/pill/components/pillNonActionable/pillNonActionable.js +1 -1
  125. package/dist/pillBox/components/pillBoxItem.js +1 -1
  126. package/dist/pillBox/pillBox.js +3 -3
  127. package/dist/pillExpandable/pillExpandable.js +1 -1
  128. package/dist/pillExpandable/pillExpandableAlignments.js +65 -48
  129. package/dist/progressIndicator/progressIndicator.d.ts +4 -4
  130. package/dist/progressIndicator/progressIndicator.js +4 -4
  131. package/dist/rangeRaw/rangeRaw.js +7 -7
  132. package/dist/rangeRaw/utils/rangeHelper.js +7 -7
  133. package/dist/searchInputRaw/searchInputRaw.js +2 -2
  134. package/dist/selectList/selectList.js +2 -2
  135. package/dist/skeleton/skeleton.js +1 -1
  136. package/dist/sortControl/sortControl.js +5 -5
  137. package/dist/stepperRaw/stepperRaw.js +2 -2
  138. package/dist/summary/summary.js +2 -2
  139. package/dist/summaryTile/summaryTile.js +1 -1
  140. package/dist/table/actions/actionsMenu.js +2 -2
  141. package/dist/table/detailPanel/detailPanel.js +1 -1
  142. package/dist/table/detailPanel/detailPanelHeader.js +2 -2
  143. package/dist/table/flexible/columnSettings.js +2 -2
  144. package/dist/table/flexible/columnsPopup.js +1 -1
  145. package/dist/table/nested/useNestedRows.js +2 -2
  146. package/dist/table/selectable/selectableHeader.js +5 -5
  147. package/dist/table/selectable/useSelectableRows.js +2 -2
  148. package/dist/table/sortable/mobileSortControl.js +3 -3
  149. package/dist/table/sortable/sortableHeader.js +2 -2
  150. package/dist/table/table.d.ts +4 -0
  151. package/dist/table/table.js +10 -6
  152. package/dist/tabs/tabs.js +2 -2
  153. package/dist/tag/tag.d.ts +3 -2
  154. package/dist/tag/tag.js +3 -2
  155. package/dist/timePickerRaw/timePickerRaw.js +7 -7
  156. package/dist/toastRaw/toastRaw.js +1 -1
  157. package/dist/toggleButtonRaw/toggleButtonRaw.js +2 -2
  158. package/dist/tooltip/tooltip.js +5 -2
  159. package/dist/utils/formatDate.js +37 -37
  160. package/dist/utils/localization/flipAlignment.js +5 -1
  161. package/dist/utils/localization/getSupportedLanguage.d.ts +1 -1
  162. package/dist/utils/localization/getSupportedLanguage.js +8 -2
  163. package/dist/utils/localization/getTextDirection.js +1 -1
  164. package/dist/utils/localization/languageContext.d.ts +1 -1
  165. package/dist/utils/localization/translations/{ar.json → ar-001.json} +54 -53
  166. package/dist/utils/localization/translationsDictionary.js +1 -1
  167. package/dist/utils/localization/useRTLAlignment.d.ts +6 -0
  168. package/dist/utils/localization/useRTLAlignment.js +6 -0
  169. package/esm/advancedGroupsFilter/advancedGroupsFilter.js +3 -3
  170. package/esm/advancedGroupsFilter/advancedGroupsFilterForm.js +2 -2
  171. package/esm/advancedGroupsFilter/advancedGroupsFilterFormSection.js +7 -7
  172. package/esm/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.js +1 -1
  173. package/esm/alertRaw/alertRaw.js +1 -1
  174. package/esm/banner/bannerMultipLine.js +1 -1
  175. package/esm/banner/bannerSingleLine.js +1 -1
  176. package/esm/banner/utils/useSummaryBannerProp.js +1 -1
  177. package/esm/betaPill/betaPill.js +4 -4
  178. package/esm/bookmark/bookmark.js +2 -2
  179. package/esm/bulkEditControl/bulkEditControl.js +5 -5
  180. package/esm/calendar/calendar.js +30 -30
  181. package/esm/calendar/calendarUtils.js +6 -6
  182. package/esm/card/card.js +1 -1
  183. package/esm/chart/accessibleChart/accessibleChartNarrative.js +13 -13
  184. package/esm/chart/accessibleChart/accessibleChartTable.js +5 -5
  185. package/esm/chart/accessibleChart/generatePieNarrative.js +6 -6
  186. package/esm/chart/barChart.js +1 -1
  187. package/esm/chart/chart.js +1 -1
  188. package/esm/chart/chartAxis/chartAxis.js +2 -2
  189. package/esm/chart/lineChart.js +1 -1
  190. package/esm/chart/pieChart.js +1 -1
  191. package/esm/checkboxListWithAction/checkboxListWithAction.js +4 -4
  192. package/esm/chip/chip.js +1 -1
  193. package/esm/columnsSelector/columnsSelector.js +2 -2
  194. package/esm/columnsSelector/columnsTab/columnsTab.js +1 -1
  195. package/esm/columnsSelector/columnsTabGroup/columnsTabGroup.js +1 -1
  196. package/esm/controlledPopup/controlledPopup.d.ts +1 -1
  197. package/esm/controlledPopup/controlledPopup.js +17 -3
  198. package/esm/dataFeed/feedExpandControl/feedExpandControl.js +2 -2
  199. package/esm/dataGrid/columns/checkboxColumn/checkboxHeaderCell.js +1 -1
  200. package/esm/dataGrid/dataGrid.js +1 -1
  201. package/esm/dataGrid/emptySearchList/emptySearchList.js +1 -1
  202. package/esm/dataGrid/entitiesListActions/actions/columnsListButton.js +1 -1
  203. package/esm/dataGrid/entitiesListActions/actions/fullscreenButton.js +2 -2
  204. package/esm/dataGrid/withFlexibleColumns/components/columnSettings.js +2 -2
  205. package/esm/dataGrid/withFlexibleColumns/components/columnSettingsSidePanel.js +1 -1
  206. package/esm/dataGrid/withFlexibleColumns/withFlexibleColumns.js +1 -1
  207. package/esm/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +5 -5
  208. package/esm/dataGrid/withSelectableRows/withSelectableRows.js +4 -4
  209. package/esm/dataGrid/withSortableColumns/columns/sortableColumnWrapper.js +2 -2
  210. package/esm/dateInputInner/dateInputInner.js +7 -7
  211. package/esm/dateInputInner/dateInputInnerControlBlock.js +2 -2
  212. package/esm/dateInputRaw/dateInputRaw.js +3 -3
  213. package/esm/dateInputRaw/utils/getLabel.js +2 -2
  214. package/esm/dateRangeInner/dateRangeInner.js +1 -1
  215. package/esm/dateRangeRaw/dateRangeRaw.js +10 -10
  216. package/esm/dateRangeRaw/utils/dateRangeUtils.js +17 -17
  217. package/esm/dateSelectionWrapper/dateSelectionWrapper.js +4 -4
  218. package/esm/dialog/dialogContent.js +1 -1
  219. package/esm/dropdown/dropdownTrigger.d.ts +1 -1
  220. package/esm/dropdownRaw/dropdownList.js +9 -9
  221. package/esm/dropdownRaw/dropdownPopup.js +3 -3
  222. package/esm/dropdownRaw/dropdownRaw.js +249 -3
  223. package/esm/dropdownRaw/dropdownSearchableTrigger.d.ts +2 -1
  224. package/esm/dropdownRaw/dropdownSearchableTrigger.js +8 -6
  225. package/esm/dropdownRaw/dropdownTrigger.d.ts +2 -1
  226. package/esm/dropdownRaw/dropdownTrigger.js +2 -2
  227. package/esm/dropdownRaw/types.d.ts +7 -0
  228. package/esm/favoriteButton/favoriteButton.js +1 -1
  229. package/esm/fileUpload/components/dropZoneContent.js +4 -4
  230. package/esm/fileUpload/components/templateDownloadSection.js +1 -1
  231. package/esm/fileUpload/components/uploadedFilesSection.js +2 -2
  232. package/esm/fileUpload/fileUpload.js +6 -6
  233. package/esm/filters/components/filtersContainer.js +3 -3
  234. package/esm/filters/components/filtersEmptyState.js +2 -2
  235. package/esm/filters/components/filtersSaveModal.js +5 -5
  236. package/esm/filters/components/filtersSavedChipComponent.js +11 -11
  237. package/esm/filters/components/filtersSearchItemData.js +1 -1
  238. package/esm/filters/components/filtersSearchList.js +9 -9
  239. package/esm/filters/components/filtersSelect.js +1 -1
  240. package/esm/filters/components/filtersSelectListItem.js +2 -2
  241. package/esm/filters/components/filtersSidePanel.js +8 -8
  242. package/esm/filters/filters.js +4 -3
  243. package/esm/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +18 -18
  244. package/esm/filtersBar/components/resetComponentButton.js +1 -1
  245. package/esm/filtersBar/filtersBarActions/filtersBarActions.js +4 -4
  246. package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +2 -2
  247. package/esm/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +5 -5
  248. package/esm/filtersBar/filtersContainer/filtersContainer.js +2 -2
  249. package/esm/formField/hooks/useError.js +3 -3
  250. package/esm/formGroup/components/reviewListToggle/reviewListToggle.js +2 -2
  251. package/esm/formGroup/hooks/useToggle.js +1 -1
  252. package/esm/formLayout/hooks/useError.js +3 -3
  253. package/esm/formLayout/hooks/useFormButtons.js +3 -3
  254. package/esm/formSection/hooks/useError.js +3 -3
  255. package/esm/formStepper/components/formStep.js +1 -1
  256. package/esm/formStepper/formStepper.js +2 -2
  257. package/esm/formStepperButtons/formStepperButtons.js +4 -4
  258. package/esm/groupsFilterRaw/groupsFilterAdjustmentState.js +4 -4
  259. package/esm/groupsFilterRaw/groupsFilterBox.js +3 -3
  260. package/esm/groupsFilterRaw/groupsFilterCommon.js +2 -2
  261. package/esm/groupsFilterRaw/groupsFilterCurrentlySelectedState.js +5 -5
  262. package/esm/groupsFilterRaw/groupsFilterHelper.js +2 -2
  263. package/esm/groupsFilterRaw/groupsFilterInitialState.js +8 -8
  264. package/esm/groupsFilterRaw/groupsFilterMenu.js +3 -3
  265. package/esm/groupsFilterRaw/groupsFilterRaw.js +8 -8
  266. package/esm/groupsFilterRaw/groupsFilterTrigger.js +2 -2
  267. package/esm/groupsFilterRaw/groupsHelper.js +22 -22
  268. package/esm/header/components/collapsedItemsControl/collapsedItemsControl.js +1 -1
  269. package/esm/header/components/mobileFilterControl/mobileFilterControl.js +1 -1
  270. package/esm/header/components/mobileSearchControl/mobileSearchControl.js +3 -3
  271. package/esm/header/headerBack.js +1 -1
  272. package/esm/index.d.ts +3 -0
  273. package/esm/index.js +2 -0
  274. package/esm/lineChart/lineChart.js +1 -1
  275. package/esm/lineChartMini/lineChartMini.js +1 -1
  276. package/esm/list/itemData/itemDataInternal.js +2 -2
  277. package/esm/list/listItem/listItem.js +2 -2
  278. package/esm/menu/components/menuErrorItem.js +2 -2
  279. package/esm/mobileSheet/mobileSheet.js +2 -2
  280. package/esm/modal/modal.js +1 -1
  281. package/esm/nav/navFooter/navEditFooter/navEditFooter.js +2 -2
  282. package/esm/nav/navFooter/navFooter.js +1 -1
  283. package/esm/nav/navFooter/navFooterAction/navFooterAction.js +1 -1
  284. package/esm/nav/navHeader/navHeader.js +2 -2
  285. package/esm/nav/navHeader/navHeaderSearch/navHeaderSearch.js +2 -2
  286. package/esm/nav/navMobileBar/navMobileBar.js +1 -1
  287. package/esm/notification/notification.js +1 -1
  288. package/esm/pagination/paginationArrow.js +2 -2
  289. package/esm/pagination/paginationText/paginationText.js +1 -1
  290. package/esm/pill/components/pillNonActionable/pillNonActionable.js +1 -1
  291. package/esm/pillBox/components/pillBoxItem.js +1 -1
  292. package/esm/pillBox/pillBox.js +3 -3
  293. package/esm/pillExpandable/pillExpandable.js +1 -1
  294. package/esm/pillExpandable/pillExpandableAlignments.js +65 -48
  295. package/esm/progressIndicator/progressIndicator.d.ts +4 -4
  296. package/esm/progressIndicator/progressIndicator.js +4 -4
  297. package/esm/rangeRaw/rangeRaw.js +7 -7
  298. package/esm/rangeRaw/utils/rangeHelper.js +7 -7
  299. package/esm/searchInputRaw/searchInputRaw.js +2 -2
  300. package/esm/selectList/selectList.js +2 -2
  301. package/esm/skeleton/skeleton.js +1 -1
  302. package/esm/sortControl/sortControl.js +5 -5
  303. package/esm/stepperRaw/stepperRaw.js +2 -2
  304. package/esm/summary/summary.js +2 -2
  305. package/esm/summaryTile/summaryTile.js +1 -1
  306. package/esm/table/actions/actionsMenu.js +2 -2
  307. package/esm/table/detailPanel/detailPanel.js +1 -1
  308. package/esm/table/detailPanel/detailPanelHeader.js +2 -2
  309. package/esm/table/flexible/columnSettings.js +2 -2
  310. package/esm/table/flexible/columnsPopup.js +1 -1
  311. package/esm/table/nested/useNestedRows.js +2 -2
  312. package/esm/table/selectable/selectableHeader.js +5 -5
  313. package/esm/table/selectable/useSelectableRows.js +2 -2
  314. package/esm/table/sortable/mobileSortControl.js +3 -3
  315. package/esm/table/sortable/sortableHeader.js +2 -2
  316. package/esm/table/table.d.ts +4 -0
  317. package/esm/table/table.js +9 -5
  318. package/esm/tabs/tabs.js +2 -2
  319. package/esm/tag/tag.d.ts +3 -2
  320. package/esm/tag/tag.js +3 -2
  321. package/esm/timePickerRaw/timePickerRaw.js +7 -7
  322. package/esm/toastRaw/toastRaw.js +1 -1
  323. package/esm/toggleButtonRaw/toggleButtonRaw.js +2 -2
  324. package/esm/tooltip/tooltip.js +5 -2
  325. package/esm/utils/formatDate.js +37 -37
  326. package/esm/utils/localization/flipAlignment.js +5 -1
  327. package/esm/utils/localization/getSupportedLanguage.d.ts +1 -1
  328. package/esm/utils/localization/getSupportedLanguage.js +8 -2
  329. package/esm/utils/localization/getTextDirection.js +1 -1
  330. package/esm/utils/localization/languageContext.d.ts +1 -1
  331. package/esm/utils/localization/translations/{ar.json → ar-001.json} +54 -53
  332. package/esm/utils/localization/translationsDictionary.js +1 -1
  333. package/esm/utils/localization/useRTLAlignment.d.ts +6 -0
  334. package/esm/utils/localization/useRTLAlignment.js +6 -0
  335. package/package.json +1 -1
@@ -30,6 +30,13 @@ import { LIST_LIMIT } from "../dropdown/dropdown";
30
30
  import { zen } from "../utils/zen";
31
31
  import { isChildOf } from "../utils/isChildOf";
32
32
  import { getFirstFocusableItem } from "../utils/keyboardHelpers";
33
+ import { useIsomorphicLayoutEffect } from "../commonHelpers/hooks/useIsomorphicLayoutEffect";
34
+ /**
35
+ * Returns the first groupsMap key whose `name` exactly matches `text` (case-insensitive),
36
+ * restricted to leaf items (no children) and excluding the internal ROOT_GROUP_ID sentinel.
37
+ * Only matching leaves prevents accidentally dispatching a group-container ID for grouped
38
+ * dropdowns where a continent/category name might equal the AutoFill text.
39
+ */
33
40
  injectString("cs", "Filter by group", "Filtrovat podle skupiny");
34
41
  injectString("da-DK", "Filter by group", "Filtrer efter gruppe");
35
42
  injectString("de", "Filter by group", "Nach Gruppe filtern");
@@ -56,13 +63,23 @@ injectString("tr", "Filter by group", "Gruba g\xF6re filtrele");
56
63
  injectString("zh-Hans", "Filter by group", "\u6309\u7EC4\u8FC7\u6EE4");
57
64
  injectString("zh-TW", "Filter by group", "\u4F9D\u7FA4\u7D44\u7BE9\u9078");
58
65
  injectString("ro-RO", "Filter by group", "Filtra\u021Bi dup\u0103 grup");
59
- injectString("ar", "Filter by group", "\u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629");
66
+ injectString("ar-001", "Filter by group", "\u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629");
60
67
  injectString("lt-LT", "Filter by group", "Filtruoti pagal grup\u0119");
61
68
  injectString("lv-LV", "Filter by group", "Filtr\u0113t p\u0113c grupas");
62
69
  injectString("ka-GE", "Filter by group", "\u10EF\u10D2\u10E3\u10E4\u10D8\u10E1 \u10DB\u10D8\u10EE\u10D4\u10D3\u10D5\u10D8\u10D7 \u10E4\u10D8\u10DA\u10E2\u10E0\u10D0\u10EA\u10D8\u10D0");
63
70
  injectString("el-GR", "Filter by group", "\u03A6\u03B9\u03BB\u03C4\u03C1\u03AC\u03C1\u03B9\u03C3\u03BC\u03B1 \u03B1\u03BD\u03AC \u03BF\u03BC\u03AC\u03B4\u03B1");
64
71
  injectString("et-EE", "Filter by group", "Filtreeri grupi j\xE4rgi");
65
72
  injectString("bg-BG", "Filter by group", "\u0424\u0438\u043B\u0442\u0440\u0438\u0440\u0430\u043D\u0435 \u043F\u043E \u0433\u0440\u0443\u043F\u0430");
73
+ function findAutoFillMatch(groupsMap, text) {
74
+ return Object.keys(groupsMap).find(id => {
75
+ var _a;
76
+ if (id === ROOT_GROUP_ID) return false;
77
+ const item = groupsMap[id];
78
+ // Skip group-container nodes — only selectable leaf items should be auto-selected.
79
+ if ((_a = item === null || item === void 0 ? void 0 : item.children) === null || _a === void 0 ? void 0 : _a.length) return false;
80
+ return (item === null || item === void 0 ? void 0 : item.name) && item.name.toLocaleLowerCase() === text.toLocaleLowerCase();
81
+ });
82
+ }
66
83
  export const DropdownRaw = props => {
67
84
  var _a, _b;
68
85
  const {
@@ -81,6 +98,7 @@ export const DropdownRaw = props => {
81
98
  triggerAriaLabel,
82
99
  id: propId,
83
100
  inputId,
101
+ autocomplete,
84
102
  filterName,
85
103
  showCounterPill = true,
86
104
  showSelection,
@@ -158,6 +176,19 @@ export const DropdownRaw = props => {
158
176
  const comboboxRef = useRef(null);
159
177
  const inputRef = useRef(null);
160
178
  const contentRef = useRef(null);
179
+ // Tracks isOpenCombo without stale closures in native DOM event handlers
180
+ const isOpenComboRef = useRef(false);
181
+ // Stores the value set by browser AutoFill so onSearchChange can detect and consume it
182
+ const pendingAutoFillValueRef = useRef(null);
183
+ // Tracks the last AutoFill value that was directly dispatched by the native listener.
184
+ // Prevents double-dispatch when Chrome/Firefox fire both 'input' and 'change' for the same fill.
185
+ const autoFillJustHandledRef = useRef(null);
186
+ // Mirror of state.groupsMap kept current by useLayoutEffect so callbacks that need
187
+ // it don't depend on state directly (avoids memoisation busting on every data fetch)
188
+ const groupsMapRef = useRef(state.groupsMap);
189
+ // Mirror of state.selectedIds for the native listener and deferred effect, which run
190
+ // outside React's event cycle and cannot read state directly without stale closure risk.
191
+ const selectedIdsRef = useRef(state.selectedIds);
161
192
  const prevSelectedIds = useRef({
162
193
  selected: [],
163
194
  isAllSelected: undefined,
@@ -367,6 +398,12 @@ export const DropdownRaw = props => {
367
398
  (focusable[0] || triggerRef.current).focus();
368
399
  }, []);
369
400
  const handleEscape = useCallback(() => {
401
+ // Clear any pending AutoFill. The user escaped — they don't want an auto-selection,
402
+ // regardless of whether groupsMap is already populated or not. Clearing here makes
403
+ // the AutoFill lifecycle explicit: the pending intent is cancelled on every close,
404
+ // preventing the deferred effect from selecting an item after a user dismissal.
405
+ pendingAutoFillValueRef.current = null;
406
+ autoFillJustHandledRef.current = null;
370
407
  dispatchState({
371
408
  type: StateActionType.SetIsOpenCombo,
372
409
  payload: false
@@ -682,15 +719,216 @@ export const DropdownRaw = props => {
682
719
  controlData(currentAbort.signal, state.inputValue, state.isChecked);
683
720
  }, [controlData, state.inputValue, state.isChecked, isCheckboxMode]);
684
721
  useEscape(triggerRef, handleEscape, state.isOpenCombo);
722
+ // useIsomorphicLayoutEffect (falls back to useEffect on SSR) keeps the refs current
723
+ // before any paint so there is no one-render gap where a same-frame AutoFill event
724
+ // could read stale values. The isomorphic variant avoids React's SSR warning.
725
+ useIsomorphicLayoutEffect(() => {
726
+ isOpenComboRef.current = state.isOpenCombo;
727
+ }, [state.isOpenCombo]);
728
+ useIsomorphicLayoutEffect(() => {
729
+ groupsMapRef.current = state.groupsMap;
730
+ }, [state.groupsMap]);
731
+ useIsomorphicLayoutEffect(() => {
732
+ selectedIdsRef.current = state.selectedIds;
733
+ }, [state.selectedIds]);
734
+ // Handle browser AutoFill on searchable dropdown triggers.
735
+ // We listen to BOTH 'input' and 'change' because browser behaviour varies:
736
+ // • Chrome/Firefox fire 'input' then 'change' for autofill
737
+ // • Safari fires only 'change' (React's onChange, mapped to 'input', never fires)
738
+ // By listening to both and dispatching directly when data is available, we handle all
739
+ // browsers without depending on React's synthetic onChange reaching onSearchChange.
740
+ //
741
+ // Double-dispatch guard (Chrome/Firefox): autoFillJustHandledRef records the value that
742
+ // was just dispatched. The second event of the same autofill pair sees the same value and
743
+ // skips, then resets the guard for the next autofill.
744
+ //
745
+ // Known limitation — browser text-autocomplete history (per-field suggestions shown when
746
+ // a user re-visits a field they have typed into before) also fires these events while the
747
+ // popup is closed, making it indistinguishable from real AutoFill. There is no cross-browser
748
+ // API to distinguish the two cases reliably; this is an accepted trade-off for the AutoFill UX.
749
+ useEffect(() => {
750
+ // inputRef uses a non-null cast (MutableRefObject<HTMLInputElement>), so we need an
751
+ // explicit nullable cast to safely guard against the ref not yet being populated.
752
+ const input = inputRef.current;
753
+ // isReadOnly renders ReviewTextControl instead of the trigger input — the input element
754
+ // doesn't exist. Including isReadOnly in the deps ensures the listener re-attaches
755
+ // when a view/edit toggle transitions the dropdown from read-only to editable.
756
+ if (!input || !searchField || chip || isMobile || isReadOnly) {
757
+ return;
758
+ }
759
+ const handleNativeAutoFill = e => {
760
+ const autoFillValue = e.target.value;
761
+ if (!autoFillValue || isOpenComboRef.current) return;
762
+ // Double-dispatch guard: skip the second event of the same autofill pair
763
+ // (Chrome/Firefox fire both 'input' and 'change' for one fill).
764
+ if (autoFillJustHandledRef.current === autoFillValue) {
765
+ // Do NOT re-set pendingAutoFillValueRef here. Doing so would leave it alive
766
+ // after the immediate dispatch and allow a later state.groupsMap change (e.g.
767
+ // an external data refresh) to wake the deferred effect and re-dispatch
768
+ // ChangeSelection — toggling a multiselect item back off.
769
+ // Do NOT clear autoFillJustHandledRef here either. Clearing it would allow the
770
+ // native 'change' listener of this same pair to fall through and dispatch a second
771
+ // time (in Chrome/Firefox the guard fires for the 'change' event; if cleared, the
772
+ // listener would treat it as a new autofill and dispatch again — toggle-off bug).
773
+ // Known limitation: if the browser re-fills the same value without any popup
774
+ // interaction between fills, autoFillJustHandledRef is still set and the refill
775
+ // is silently dropped. handleEscape and handleTriggerClick clear the guard for
776
+ // the common case; a timestamp-based expiry could address the edge case later.
777
+ return;
778
+ }
779
+ // Always record the pending value so onSearchChange can skip controlData
780
+ // and the deferred effect can retry if data isn't loaded yet.
781
+ pendingAutoFillValueRef.current = autoFillValue;
782
+ const currentGroupsMap = groupsMapRef.current;
783
+ if (Object.keys(currentGroupsMap).length === 0) {
784
+ // getData hasn't resolved yet — deferred useEffect handles it once data arrives.
785
+ return;
786
+ }
787
+ const matchedId = findAutoFillMatch(currentGroupsMap, autoFillValue);
788
+ if (matchedId) {
789
+ // Dispatch directly so selection works even when React's onChange doesn't fire
790
+ // (Safari autofill fires 'change' but not 'input', so onSearchChange may not run).
791
+ autoFillJustHandledRef.current = autoFillValue; // guard for onSearchChange + second event
792
+ // Clear pendingRef immediately after dispatch. In Safari, onSearchChange never
793
+ // runs after a native 'change', so pendingRef would remain set indefinitely. A
794
+ // later state.groupsMap change (e.g. external data refresh) would then re-trigger
795
+ // the deferred effect, which dispatches ChangeSelection again — toggling a
796
+ // multiselect item back off. Clearing here prevents that ghost re-dispatch.
797
+ pendingAutoFillValueRef.current = null;
798
+ if (multiselect) {
799
+ // ChangeSelection has toggle semantics — dispatching when the item is already
800
+ // selected would deselect it, emitting an incorrect onChange in edit forms.
801
+ // AutoFill must be idempotent: if the item is already selected, no-op.
802
+ if (!selectedIdsRef.current.includes(matchedId)) {
803
+ dispatchState({
804
+ type: StateActionType.ChangeSelection,
805
+ payload: {
806
+ value: true,
807
+ itemId: matchedId
808
+ }
809
+ });
810
+ }
811
+ } else {
812
+ // Dispatch directly instead of via handleSingleSelection to avoid the
813
+ // focus hijack: handleSingleSelection → handleEscape → triggerRef.focus()
814
+ // steals browser focus mid-form fill and disrupts tab order for the user.
815
+ dispatchState({
816
+ type: StateActionType.ChangeSingleSelection,
817
+ payload: {
818
+ value: matchedId,
819
+ reset: false
820
+ }
821
+ });
822
+ }
823
+ // Clear the AutoFill text from the search input (same for both modes).
824
+ dispatchState({
825
+ type: StateActionType.SetInputValue,
826
+ payload: ""
827
+ });
828
+ return;
829
+ }
830
+ // No match: pendingAutoFillValueRef stays set; onSearchChange will clear it and
831
+ // return early without calling controlData, leaving the text visible for the user.
832
+ };
833
+ input.addEventListener("input", handleNativeAutoFill);
834
+ input.addEventListener("change", handleNativeAutoFill);
835
+ // eslint-disable-next-line consistent-return
836
+ return () => {
837
+ input.removeEventListener("input", handleNativeAutoFill);
838
+ input.removeEventListener("change", handleNativeAutoFill);
839
+ };
840
+ // inputRef is a stable MutableRefObject (never changes identity), so it is not listed
841
+ // as a dep. isReadOnly is listed so the effect re-runs when a view/edit toggle
842
+ // transitions the dropdown to editable — without it the listener never attaches.
843
+ // multiselect is listed because the listener dispatches different actions for each mode.
844
+ }, [searchField, chip, isMobile, isReadOnly, multiselect]);
845
+ // Deferred AutoFill: for getData-based dropdowns, groupsMap may be empty when AutoFill
846
+ // fires on page load (data hasn't resolved yet). onSearchChange keeps pendingAutoFillValueRef
847
+ // alive in that case and sets inputValue as a placeholder. This effect retries the lookup
848
+ // every time groupsMap is updated; it exits immediately when there is nothing pending.
849
+ useEffect(() => {
850
+ // Defensive guard matching the native listener: only process deferred AutoFill for
851
+ // searchable non-chip desktop triggers. isReadOnly is included so the deferred effect
852
+ // does not dispatch when the component renders in read-only mode (no input mounted).
853
+ if (!searchField || chip || isMobile || isReadOnly) return;
854
+ const pendingValue = pendingAutoFillValueRef.current;
855
+ if (!pendingValue || Object.keys(groupsMapRef.current).length === 0) return;
856
+ pendingAutoFillValueRef.current = null;
857
+ const matchedId = findAutoFillMatch(groupsMapRef.current, pendingValue);
858
+ if (matchedId) {
859
+ if (multiselect) {
860
+ // Same idempotency guard as the native listener: skip if already selected to
861
+ // avoid toggling the item off in an edit form that pre-populates the value.
862
+ if (!selectedIdsRef.current.includes(matchedId)) {
863
+ dispatchState({
864
+ type: StateActionType.ChangeSelection,
865
+ payload: {
866
+ value: true,
867
+ itemId: matchedId
868
+ }
869
+ });
870
+ }
871
+ } else {
872
+ dispatchState({
873
+ type: StateActionType.ChangeSingleSelection,
874
+ payload: {
875
+ value: matchedId,
876
+ reset: false
877
+ }
878
+ });
879
+ }
880
+ // Clear the placeholder inputValue that onSearchChange set while data was loading.
881
+ dispatchState({
882
+ type: StateActionType.SetInputValue,
883
+ payload: ""
884
+ });
885
+ }
886
+ // No match: leave inputValue at the AutoFill text so the user can see what was tried.
887
+ // onSearchChange already set it to pendingValue; not clearing it is intentional.
888
+ }, [state.groupsMap, multiselect, searchField, chip, isMobile, isReadOnly]);
685
889
  const onSearchChange = useCallback(event => {
686
- const newValue = event ? event.currentTarget.value : "";
890
+ // Use event.target (not currentTarget) to match the native listener which also
891
+ // reads e.target.value — the two must read the same property when comparing.
892
+ const newValue = event ? event.target.value : "";
893
+ // AutoFill path — two distinct cases, checked in order:
894
+ //
895
+ // 1. Native listener dispatched (data was available, autoFillJustHandledRef set):
896
+ // Skip SetInputValue entirely — the listener already sent SetInputValue("") and
897
+ // pendingRef was cleared right after dispatch. React 18 batches same-tick dispatches
898
+ // and the last wins, so dispatching the autofill text here would override "".
899
+ // This branch fires for every onChange that belongs to the same autofill pair
900
+ // (e.g. from 'input' then 'change' in Chrome/Firefox).
901
+ // Note — hasApplyButton: AutoFill bypasses the staged-selection flow because user
902
+ // intent is unambiguous. The "when change inside" effect already gates onChangeInner
903
+ // behind hasApplyButton, so external onChange is still withheld until Apply is clicked.
904
+ if (autoFillJustHandledRef.current === newValue) {
905
+ // Do NOT clear autoFillJustHandledRef — the guard in handleNativeAutoFill
906
+ // still needs it for the second native event (Chrome/Firefox 'change' after 'input').
907
+ // It is cleared by handleEscape / handleTriggerClick on the next user interaction.
908
+ return;
909
+ }
910
+ // 2. getData pending or no-match (pendingRef set by native listener, no dispatch yet):
911
+ // Keep pendingRef alive for the deferred useEffect; show the autofill text and
912
+ // skip controlData to avoid an unexpected search API call with the raw text.
913
+ if (pendingAutoFillValueRef.current !== null && pendingAutoFillValueRef.current === newValue) {
914
+ dispatchState({
915
+ type: StateActionType.SetInputValue,
916
+ payload: newValue
917
+ });
918
+ return;
919
+ }
920
+ // Normal search path (not an AutoFill event).
921
+ pendingAutoFillValueRef.current = null;
687
922
  dispatchState({
688
923
  type: StateActionType.SetInputValue,
689
924
  payload: newValue
690
925
  });
691
926
  const currentAbort = abortToken.current;
692
927
  controlData(currentAbort.signal, newValue, state.isChecked);
693
- }, [controlData, state.isChecked]);
928
+ },
929
+ // state.groupsMap and multiselect intentionally omitted: lookup and dispatch now happen
930
+ // in the native listener. This callback only needs to skip controlData cleanly.
931
+ [controlData, state.isChecked]);
694
932
  const onInputChange = useCallback(newValue => {
695
933
  dispatchState({
696
934
  type: StateActionType.SetInputValue,
@@ -712,6 +950,13 @@ export const DropdownRaw = props => {
712
950
  controlData(currentAbort.signal, state.inputValue, isChecked);
713
951
  }, [controlData, state.inputValue]);
714
952
  const handleTriggerClick = useCallback(newVal => {
953
+ if (newVal) {
954
+ // User is manually opening the dropdown to browse. Cancel any pending AutoFill
955
+ // so the deferred useEffect doesn't auto-select once getData resolves — the user
956
+ // is now in control and an invisible selection would be surprising.
957
+ pendingAutoFillValueRef.current = null;
958
+ autoFillJustHandledRef.current = null;
959
+ }
715
960
  const currentAbort = abortToken.current;
716
961
  dispatchState({
717
962
  type: StateActionType.SetCurrentId,
@@ -977,6 +1222,7 @@ export const DropdownRaw = props => {
977
1222
  triggerAriaLabel: triggerAriaLabel,
978
1223
  triggerRef: triggerRef,
979
1224
  inputRef: inputRef,
1225
+ autocomplete: autocomplete,
980
1226
  buttonType: buttonType,
981
1227
  handleFocusOnPopup: handleFocusOnPopup,
982
1228
  popupId: memoizedAllyPattern === "selectOnlyCombobox" ? selectListId : popupId,
@@ -20,11 +20,12 @@ interface IDropdownSearchableTrigger {
20
20
  name?: string;
21
21
  onBlur?: () => void;
22
22
  popupId?: string;
23
+ autocomplete?: string;
23
24
  handleFocusOnPopup?: () => void;
24
25
  dataAnalyticsId?: string;
25
26
  }
26
27
  export declare const DropdownSearchableTrigger: {
27
- ({ value, className, onChange, placeholder, isOpenPopup, inputRef, handleClick, width, title, id, disabled, count, currentSelection, isError, fullWidth, ref, name, onBlur, popupId, handleFocusOnPopup, dataAnalyticsId, ...otherProps }: IDropdownSearchableTrigger): import("react/jsx-runtime").JSX.Element;
28
+ ({ value, className, onChange, placeholder, isOpenPopup, inputRef, handleClick, width, title, id, disabled, count, currentSelection, isError, fullWidth, ref, name, onBlur, popupId, autocomplete, handleFocusOnPopup, dataAnalyticsId, ...otherProps }: IDropdownSearchableTrigger): import("react/jsx-runtime").JSX.Element;
28
29
  displayName: string;
29
30
  };
30
31
  export declare const TRANSLATIONS: string[];
@@ -43,7 +43,7 @@ injectString("tr", "Filter by group", "Gruba g\xF6re filtrele");
43
43
  injectString("zh-Hans", "Filter by group", "\u6309\u7EC4\u8FC7\u6EE4");
44
44
  injectString("zh-TW", "Filter by group", "\u4F9D\u7FA4\u7D44\u7BE9\u9078");
45
45
  injectString("ro-RO", "Filter by group", "Filtra\u021Bi dup\u0103 grup");
46
- injectString("ar", "Filter by group", "\u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629");
46
+ injectString("ar-001", "Filter by group", "\u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629");
47
47
  injectString("lt-LT", "Filter by group", "Filtruoti pagal grup\u0119");
48
48
  injectString("lv-LV", "Filter by group", "Filtr\u0113t p\u0113c grupas");
49
49
  injectString("ka-GE", "Filter by group", "\u10EF\u10D2\u10E3\u10E4\u10D8\u10E1 \u10DB\u10D8\u10EE\u10D4\u10D3\u10D5\u10D8\u10D7 \u10E4\u10D8\u10DA\u10E2\u10E0\u10D0\u10EA\u10D8\u10D0");
@@ -76,7 +76,7 @@ injectString("tr", "Clear search", "Aramay\u0131 temizle");
76
76
  injectString("zh-Hans", "Clear search", "\u6E05\u9664\u641C\u7D22");
77
77
  injectString("zh-TW", "Clear search", "\u6E05\u9664\u641C\u5C0B");
78
78
  injectString("ro-RO", "Clear search", "\u0218terge\u021Bi c\u0103utarea");
79
- injectString("ar", "Clear search", "\u0645\u0633\u062D \u0627\u0644\u0628\u062D\u062B");
79
+ injectString("ar-001", "Clear search", "\u0645\u0633\u062D \u0627\u0644\u0628\u062D\u062B");
80
80
  injectString("lt-LT", "Clear search", "I\u0161valyti paie\u0161k\u0105");
81
81
  injectString("lv-LV", "Clear search", "Not\u012Br\u012Bt mekl\u0113\u0161anu");
82
82
  injectString("ka-GE", "Clear search", "\u10EB\u10D8\u10D4\u10D1\u10D8\u10E1 \u10D2\u10D0\u10E1\u10E3\u10E4\u10D7\u10D0\u10D5\u10D4\u10D1\u10D0");
@@ -109,7 +109,7 @@ injectString("tr", "Close filter", "Filtreyi kapat");
109
109
  injectString("zh-Hans", "Close filter", "\u5173\u95ED\u7B5B\u9009\u5668");
110
110
  injectString("zh-TW", "Close filter", "\u95DC\u9589\u7BE9\u9078\u5668");
111
111
  injectString("ro-RO", "Close filter", "\xCEnchide\u021Bi filtrul");
112
- injectString("ar", "Close filter", "\u0625\u063A\u0644\u0627\u0642 \u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629");
112
+ injectString("ar-001", "Close filter", "\u0625\u063A\u0644\u0627\u0642 \u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629");
113
113
  injectString("lt-LT", "Close filter", "U\u017Edaryti filtr\u0105");
114
114
  injectString("lv-LV", "Close filter", "Aizv\u0113rt filtru");
115
115
  injectString("ka-GE", "Close filter", "\u10E4\u10D8\u10DA\u10E2\u10E0\u10D8\u10E1 \u10D3\u10D0\u10EE\u10E3\u10E0\u10D5\u10D0");
@@ -142,7 +142,7 @@ injectString("tr", "Open filter", "Filtreyi a\xE7");
142
142
  injectString("zh-Hans", "Open filter", "\u6253\u5F00\u7B5B\u9009\u5668");
143
143
  injectString("zh-TW", "Open filter", "\u958B\u555F\u7BE9\u9078\u689D\u4EF6");
144
144
  injectString("ro-RO", "Open filter", "Deschide\u021Bi filtrul");
145
- injectString("ar", "Open filter", "\u0641\u062A\u062D \u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629");
145
+ injectString("ar-001", "Open filter", "\u0641\u062A\u062D \u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629");
146
146
  injectString("lt-LT", "Open filter", "Atidaryti filtr\u0105");
147
147
  injectString("lv-LV", "Open filter", "Atv\u0113rt filtru");
148
148
  injectString("ka-GE", "Open filter", "\u10E4\u10D8\u10DA\u10E2\u10E0\u10D8\u10E1 \u10D2\u10D0\u10EE\u10E1\u10DC\u10D0");
@@ -170,10 +170,11 @@ export const DropdownSearchableTrigger = _a => {
170
170
  name,
171
171
  onBlur,
172
172
  popupId,
173
+ autocomplete,
173
174
  handleFocusOnPopup,
174
175
  dataAnalyticsId
175
176
  } = _a,
176
- otherProps = __rest(_a, ["value", "className", "onChange", "placeholder", "isOpenPopup", "inputRef", "handleClick", "width", "title", "id", "disabled", "count", "currentSelection", "isError", "fullWidth", "ref", "name", "onBlur", "popupId", "handleFocusOnPopup", "dataAnalyticsId"])
177
+ otherProps = __rest(_a, ["value", "className", "onChange", "placeholder", "isOpenPopup", "inputRef", "handleClick", "width", "title", "id", "disabled", "count", "currentSelection", "isError", "fullWidth", "ref", "name", "onBlur", "popupId", "autocomplete", "handleFocusOnPopup", "dataAnalyticsId"])
177
178
  // eslint-disable-next-line complexity
178
179
  ;
179
180
  const {
@@ -247,7 +248,8 @@ export const DropdownSearchableTrigger = _a => {
247
248
  ariaLabel: placeholder,
248
249
  ariaAutocomplete: "list",
249
250
  ariaHaspopup: "dialog",
250
- role: "combobox"
251
+ role: "combobox",
252
+ autocomplete: autocomplete
251
253
  })
252
254
  }), count ? _jsx("div", {
253
255
  className: "zen-dropdown-searchable-trigger__label-element",
@@ -18,6 +18,7 @@ export interface IDropdownTrigger extends IZenComponentProps {
18
18
  triggerAriaLabel?: string;
19
19
  triggerRef: React.RefObject<HTMLElement | null>;
20
20
  inputRef?: React.RefObject<HTMLInputElement | null>;
21
+ autocomplete?: string;
21
22
  buttonType?: TFilterButton;
22
23
  isError?: boolean;
23
24
  name?: string;
@@ -27,5 +28,5 @@ export interface IDropdownTrigger extends IZenComponentProps {
27
28
  allyPattern?: "selectOnlyCombobox" | "comboboxWithDialog" | "buttonWithDialog" | "buttonWithMenu";
28
29
  dataAnalyticsId?: string;
29
30
  }
30
- export declare const DropdownTrigger: ({ name, onBlur, isActive, id, triggerRef, searchField, placeholder, disabled, fullWidth, currentSelection, handleClick, inputValue, className, onSearchChange, width, title, triggerAriaLabel, count, inputRef, buttonType, isError, popupId, handleFocusOnPopup, allyPattern, dataAnalyticsId, ...otherProps }: IDropdownTrigger) => import("react/jsx-runtime").JSX.Element;
31
+ export declare const DropdownTrigger: ({ name, onBlur, isActive, id, triggerRef, searchField, placeholder, disabled, fullWidth, currentSelection, handleClick, inputValue, className, onSearchChange, width, title, triggerAriaLabel, count, inputRef, autocomplete, buttonType, isError, popupId, handleFocusOnPopup, allyPattern, dataAnalyticsId, ...otherProps }: IDropdownTrigger) => import("react/jsx-runtime").JSX.Element;
31
32
  export declare const TRANSLATIONS: string[];
@@ -16,13 +16,13 @@ import { useMemo, useRef } from "react";
16
16
  import { classNames } from "../commonHelpers/classNames/classNames";
17
17
  import { getAllyTriggerProps } from "./dropdownHelper";
18
18
  export const DropdownTrigger = (_a) => {
19
- var { name, onBlur, isActive, id, triggerRef, searchField, placeholder, disabled, fullWidth, currentSelection, handleClick, inputValue, className, onSearchChange = () => { }, width, title, triggerAriaLabel, count, inputRef, buttonType, isError, popupId, handleFocusOnPopup, allyPattern = "buttonWithDialog", dataAnalyticsId } = _a, otherProps = __rest(_a, ["name", "onBlur", "isActive", "id", "triggerRef", "searchField", "placeholder", "disabled", "fullWidth", "currentSelection", "handleClick", "inputValue", "className", "onSearchChange", "width", "title", "triggerAriaLabel", "count", "inputRef", "buttonType", "isError", "popupId", "handleFocusOnPopup", "allyPattern", "dataAnalyticsId"]);
19
+ var { name, onBlur, isActive, id, triggerRef, searchField, placeholder, disabled, fullWidth, currentSelection, handleClick, inputValue, className, onSearchChange = () => { }, width, title, triggerAriaLabel, count, inputRef, autocomplete, buttonType, isError, popupId, handleFocusOnPopup, allyPattern = "buttonWithDialog", dataAnalyticsId } = _a, otherProps = __rest(_a, ["name", "onBlur", "isActive", "id", "triggerRef", "searchField", "placeholder", "disabled", "fullWidth", "currentSelection", "handleClick", "inputValue", "className", "onSearchChange", "width", "title", "triggerAriaLabel", "count", "inputRef", "autocomplete", "buttonType", "isError", "popupId", "handleFocusOnPopup", "allyPattern", "dataAnalyticsId"]);
20
20
  const elInpRef = useRef(null);
21
21
  const handleButtonClick = () => {
22
22
  handleClick(!isActive);
23
23
  };
24
24
  const allyTriggerProps = useMemo(() => getAllyTriggerProps(allyPattern), [allyPattern]);
25
- return (_jsx(_Fragment, { children: searchField ? (_jsx(DropdownSearchableTrigger, Object.assign({ value: inputValue || "", name: name, onChange: onSearchChange, isOpenPopup: isActive, inputRef: inputRef || elInpRef, handleClick: handleClick, handleFocusOnPopup: handleFocusOnPopup, ref: triggerRef, width: width, placeholder: placeholder, disabled: disabled, id: id, title: title, count: count, currentSelection: currentSelection, className: className, isError: isError, fullWidth: fullWidth, popupId: popupId, dataAnalyticsId: dataAnalyticsId }, otherProps))) : (_jsx(FilterButton, Object.assign({ ref: triggerRef, id: id, name: name, onBlur: onBlur, className: classNames(["zen-dropdown__trigger-button", isError ? "zen-dropdown__trigger-button--error" : "", className || ""]), onClick: handleButtonClick, disabled: disabled, isActive: isActive, fullWidth: width ? true : fullWidth, maxWidth: width, minWidth: width, quantity: count || undefined, type: buttonType, title: title, ariaLabel: triggerAriaLabel || currentSelection || placeholder, "aria-expanded": isActive, "aria-controls": popupId }, allyTriggerProps, { dataAnalyticsId: dataAnalyticsId }, otherProps, { children: currentSelection ? (_jsx("span", { className: classNames([
25
+ return (_jsx(_Fragment, { children: searchField ? (_jsx(DropdownSearchableTrigger, Object.assign({ value: inputValue || "", name: name, onChange: onSearchChange, isOpenPopup: isActive, inputRef: inputRef || elInpRef, handleClick: handleClick, handleFocusOnPopup: handleFocusOnPopup, ref: triggerRef, width: width, placeholder: placeholder, disabled: disabled, id: id, title: title, count: count, currentSelection: currentSelection, className: className, isError: isError, fullWidth: fullWidth, popupId: popupId, autocomplete: autocomplete, dataAnalyticsId: dataAnalyticsId }, otherProps))) : (_jsx(FilterButton, Object.assign({ ref: triggerRef, id: id, name: name, onBlur: onBlur, className: classNames(["zen-dropdown__trigger-button", isError ? "zen-dropdown__trigger-button--error" : "", className || ""]), onClick: handleButtonClick, disabled: disabled, isActive: isActive, fullWidth: width ? true : fullWidth, maxWidth: width, minWidth: width, quantity: count || undefined, type: buttonType, title: title, ariaLabel: triggerAriaLabel || currentSelection || placeholder, "aria-expanded": isActive, "aria-controls": popupId }, allyTriggerProps, { dataAnalyticsId: dataAnalyticsId }, otherProps, { children: currentSelection ? (_jsx("span", { className: classNames([
26
26
  "zen-dropdown__trigger-button-text",
27
27
  buttonType ? `zen-dropdown__trigger-button-text--${buttonType.toString()}` : ""
28
28
  ]), children: currentSelection })) : (placeholder) }))) }));
@@ -42,6 +42,13 @@ interface IDropdownBase extends IChipsParent {
42
42
  title?: string;
43
43
  triggerAriaLabel?: string;
44
44
  inputId?: string;
45
+ /**
46
+ * HTML `autocomplete` attribute forwarded to the searchable trigger input.
47
+ * Use tokens such as `"country-name"` or `"address-level1"` to participate in
48
+ * browser AutoFill section grouping and improve fill accuracy. Only applies when
49
+ * `searchField={true}`.
50
+ */
51
+ autocomplete?: string;
45
52
  filterName?: string;
46
53
  showCounterPill?: boolean;
47
54
  showSelection?: boolean;
@@ -35,7 +35,7 @@ injectString("tr", "Favorite", "Favori");
35
35
  injectString("zh-Hans", "Favorite", "\u6536\u85CF");
36
36
  injectString("zh-TW", "Favorite", "\u6211\u7684\u6700\u611B");
37
37
  injectString("ro-RO", "Favorite", "Preferat");
38
- injectString("ar", "Favorite", "\u0645\u0641\u0636\u0644");
38
+ injectString("ar-001", "Favorite", "\u0645\u0641\u0636\u0644");
39
39
  injectString("lt-LT", "Favorite", "M\u0117gstamas");
40
40
  injectString("lv-LV", "Favorite", "Favor\u012Bts");
41
41
  injectString("ka-GE", "Favorite", "\u10E0\u10E9\u10D4\u10E3\u10DA\u10D8");
@@ -30,7 +30,7 @@ injectString("tr", "Tap to add files", "Dosya eklemek i\xE7in dokunun");
30
30
  injectString("zh-Hans", "Tap to add files", "\u70B9\u51FB\u6DFB\u52A0\u6587\u4EF6");
31
31
  injectString("zh-TW", "Tap to add files", "\u9EDE\u9078\u4EE5\u65B0\u589E\u6A94\u6848");
32
32
  injectString("ro-RO", "Tap to add files", "Atinge\u021Bi pentru a ad\u0103uga fi\u0219iere");
33
- injectString("ar", "Tap to add files", "\u0627\u0646\u0642\u0631 \u0644\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0641\u0627\u062A");
33
+ injectString("ar-001", "Tap to add files", "\u0627\u0646\u0642\u0631 \u0644\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0641\u0627\u062A");
34
34
  injectString("lt-LT", "Tap to add files", "Bakstel\u0117kite, kad prid\u0117tum\u0117te fail\u0173");
35
35
  injectString("lv-LV", "Tap to add files", "Pieskarieties, lai pievienotu failus");
36
36
  injectString("ka-GE", "Tap to add files", "\u10E4\u10D0\u10D8\u10DA\u10D4\u10D1\u10D8\u10E1 \u10D3\u10D0\u10E1\u10D0\u10DB\u10D0\u10E2\u10D4\u10D1\u10DA\u10D0\u10D3 \u10E8\u10D4\u10D4\u10EE\u10D4\u10D7");
@@ -63,7 +63,7 @@ injectString("tr", "Drag & drop files or", "Dosyalar\u0131 s\xFCr\xFCkleyip b\u0
63
63
  injectString("zh-Hans", "Drag & drop files or", "\u62D6\u653E\u6587\u4EF6\u6216");
64
64
  injectString("zh-TW", "Drag & drop files or", "\u62D6\u653E\u6A94\u6848\u6216");
65
65
  injectString("ro-RO", "Drag & drop files or", "Glisa\u021Bi \u0219i fixa\u021Bi fi\u0219iere sau");
66
- injectString("ar", "Drag & drop files or", "\u0633\u062D\u0628 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0648\u0625\u0641\u0644\u0627\u062A\u0647\u0627 \u0623\u0648");
66
+ injectString("ar-001", "Drag & drop files or", "\u0633\u062D\u0628 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0648\u0625\u0641\u0644\u0627\u062A\u0647\u0627 \u0623\u0648");
67
67
  injectString("lt-LT", "Drag & drop files or", "Nuvilkite failus arba");
68
68
  injectString("lv-LV", "Drag & drop files or", "Velciet un nometiet failus vai");
69
69
  injectString("ka-GE", "Drag & drop files or", "\u10E4\u10D0\u10D8\u10DA\u10D4\u10D1\u10D8\u10E1 \u10D2\u10D0\u10D3\u10DB\u10DD\u10D7\u10E0\u10D4\u10D5\u10D0 \u10D0\u10DC");
@@ -96,7 +96,7 @@ injectString("tr", "Browse", "G\xF6zat");
96
96
  injectString("zh-Hans", "Browse", "\u6D4F\u89C8");
97
97
  injectString("zh-TW", "Browse", "\u700F\u89BD");
98
98
  injectString("ro-RO", "Browse", "R\u0103sfoire");
99
- injectString("ar", "Browse", "\u062A\u0635\u0641\u062D");
99
+ injectString("ar-001", "Browse", "\u062A\u0635\u0641\u062D");
100
100
  injectString("lt-LT", "Browse", "Nar\u0161yti");
101
101
  injectString("lv-LV", "Browse", "P\u0101rl\u016Bkot");
102
102
  injectString("ka-GE", "Browse", "\u10D3\u10D0\u10D7\u10D5\u10D0\u10DA\u10D8\u10D4\u10E0\u10D4\u10D1\u10D0");
@@ -129,7 +129,7 @@ injectString("tr", "Supported Formats:", "Desteklenen Bi\xE7imler:");
129
129
  injectString("zh-Hans", "Supported Formats:", "\u652F\u6301\u7684\u683C\u5F0F\uFF1A");
130
130
  injectString("zh-TW", "Supported Formats:", "\u652F\u63F4\u7684\u683C\u5F0F\uFF1A");
131
131
  injectString("ro-RO", "Supported Formats:", "Formate acceptate:");
132
- injectString("ar", "Supported Formats:", "\u0627\u0644\u0635\u064A\u063A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629:");
132
+ injectString("ar-001", "Supported Formats:", "\u0627\u0644\u0635\u064A\u063A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629:");
133
133
  injectString("lt-LT", "Supported Formats:", "Palaikomi formatai:");
134
134
  injectString("lv-LV", "Supported Formats:", "Atbalst\u012Btie form\u0101ti:");
135
135
  injectString("ka-GE", "Supported Formats:", "\u10DB\u10EE\u10D0\u10E0\u10D3\u10D0\u10ED\u10D4\u10E0\u10D8\u10DA\u10D8 \u10E4\u10DD\u10E0\u10DB\u10D0\u10E2\u10D4\u10D1\u10D8:");
@@ -28,7 +28,7 @@ injectString("tr", "Download", "\u0130ndir");
28
28
  injectString("zh-Hans", "Download", "\u4E0B\u8F7D");
29
29
  injectString("zh-TW", "Download", "\u4E0B\u8F09");
30
30
  injectString("ro-RO", "Download", "Desc\u0103rca\u021Bi");
31
- injectString("ar", "Download", "\u062A\u0646\u0632\u064A\u0644");
31
+ injectString("ar-001", "Download", "\u062A\u0646\u0632\u064A\u0644");
32
32
  injectString("lt-LT", "Download", "Atsisi\u0173sti");
33
33
  injectString("lv-LV", "Download", "Lejupiel\u0101d\u0113t");
34
34
  injectString("ka-GE", "Download", "\u10E9\u10D0\u10DB\u10DD\u10E2\u10D5\u10D8\u10E0\u10D7\u10D5\u10D0");
@@ -36,7 +36,7 @@ injectString("tr", "Uploaded", "Uploaded");
36
36
  injectString("zh-Hans", "Uploaded", "Uploaded");
37
37
  injectString("zh-TW", "Uploaded", "Uploaded");
38
38
  injectString("ro-RO", "Uploaded", "Uploaded");
39
- injectString("ar", "Uploaded", "\u062A\u0645 \u0627\u0644\u0631\u0641\u0639");
39
+ injectString("ar-001", "Uploaded", "\u062A\u0645 \u0627\u0644\u0631\u0641\u0639");
40
40
  injectString("lt-LT", "Uploaded", "\u012Ekelta");
41
41
  injectString("lv-LV", "Uploaded", "Aug\u0161upiel\u0101d\u0113ts");
42
42
  injectString("ka-GE", "Uploaded", "\u10D0\u10E2\u10D5\u10D8\u10E0\u10D7\u10E3\u10DA\u10D8\u10D0");
@@ -69,7 +69,7 @@ injectString("tr", "Remove", "Kald\u0131r");
69
69
  injectString("zh-Hans", "Remove", "\u79FB\u9664");
70
70
  injectString("zh-TW", "Remove", "\u79FB\u9664");
71
71
  injectString("ro-RO", "Remove", "Elimin\u0103");
72
- injectString("ar", "Remove", "\u0625\u0632\u0627\u0644\u0629");
72
+ injectString("ar-001", "Remove", "\u0625\u0632\u0627\u0644\u0629");
73
73
  injectString("lt-LT", "Remove", "Pa\u0161alinti");
74
74
  injectString("lv-LV", "Remove", "No\u0146emt");
75
75
  injectString("ka-GE", "Remove", "\u10EC\u10D0\u10E8\u10DA\u10D0");
@@ -35,7 +35,7 @@ injectString("tr", "Tap to add files", "Dosya eklemek i\xE7in dokunun");
35
35
  injectString("zh-Hans", "Tap to add files", "\u70B9\u51FB\u6DFB\u52A0\u6587\u4EF6");
36
36
  injectString("zh-TW", "Tap to add files", "\u9EDE\u9078\u4EE5\u65B0\u589E\u6A94\u6848");
37
37
  injectString("ro-RO", "Tap to add files", "Atinge\u021Bi pentru a ad\u0103uga fi\u0219iere");
38
- injectString("ar", "Tap to add files", "\u0627\u0646\u0642\u0631 \u0644\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0641\u0627\u062A");
38
+ injectString("ar-001", "Tap to add files", "\u0627\u0646\u0642\u0631 \u0644\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0641\u0627\u062A");
39
39
  injectString("lt-LT", "Tap to add files", "Bakstel\u0117kite, kad prid\u0117tum\u0117te fail\u0173");
40
40
  injectString("lv-LV", "Tap to add files", "Pieskarieties, lai pievienotu failus");
41
41
  injectString("ka-GE", "Tap to add files", "\u10E4\u10D0\u10D8\u10DA\u10D4\u10D1\u10D8\u10E1 \u10D3\u10D0\u10E1\u10D0\u10DB\u10D0\u10E2\u10D4\u10D1\u10DA\u10D0\u10D3 \u10E8\u10D4\u10D4\u10EE\u10D4\u10D7");
@@ -68,7 +68,7 @@ injectString("tr", "Drag & drop files or", "Dosyalar\u0131 s\xFCr\xFCkleyip b\u0
68
68
  injectString("zh-Hans", "Drag & drop files or", "\u62D6\u653E\u6587\u4EF6\u6216");
69
69
  injectString("zh-TW", "Drag & drop files or", "\u62D6\u653E\u6A94\u6848\u6216");
70
70
  injectString("ro-RO", "Drag & drop files or", "Glisa\u021Bi \u0219i fixa\u021Bi fi\u0219iere sau");
71
- injectString("ar", "Drag & drop files or", "\u0633\u062D\u0628 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0648\u0625\u0641\u0644\u0627\u062A\u0647\u0627 \u0623\u0648");
71
+ injectString("ar-001", "Drag & drop files or", "\u0633\u062D\u0628 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0648\u0625\u0641\u0644\u0627\u062A\u0647\u0627 \u0623\u0648");
72
72
  injectString("lt-LT", "Drag & drop files or", "Nuvilkite failus arba");
73
73
  injectString("lv-LV", "Drag & drop files or", "Velciet un nometiet failus vai");
74
74
  injectString("ka-GE", "Drag & drop files or", "\u10E4\u10D0\u10D8\u10DA\u10D4\u10D1\u10D8\u10E1 \u10D2\u10D0\u10D3\u10DB\u10DD\u10D7\u10E0\u10D4\u10D5\u10D0 \u10D0\u10DC");
@@ -101,7 +101,7 @@ injectString("tr", "Browse", "G\xF6zat");
101
101
  injectString("zh-Hans", "Browse", "\u6D4F\u89C8");
102
102
  injectString("zh-TW", "Browse", "\u700F\u89BD");
103
103
  injectString("ro-RO", "Browse", "R\u0103sfoire");
104
- injectString("ar", "Browse", "\u062A\u0635\u0641\u062D");
104
+ injectString("ar-001", "Browse", "\u062A\u0635\u0641\u062D");
105
105
  injectString("lt-LT", "Browse", "Nar\u0161yti");
106
106
  injectString("lv-LV", "Browse", "P\u0101rl\u016Bkot");
107
107
  injectString("ka-GE", "Browse", "\u10D3\u10D0\u10D7\u10D5\u10D0\u10DA\u10D8\u10D4\u10E0\u10D4\u10D1\u10D0");
@@ -134,7 +134,7 @@ injectString("tr", "Upload files.", "Upload files.");
134
134
  injectString("zh-Hans", "Upload files.", "Upload files.");
135
135
  injectString("zh-TW", "Upload files.", "Upload files.");
136
136
  injectString("ro-RO", "Upload files.", "Upload files.");
137
- injectString("ar", "Upload files.", "\u0631\u0641\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062A.");
137
+ injectString("ar-001", "Upload files.", "\u0631\u0641\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062A.");
138
138
  injectString("lt-LT", "Upload files.", "\u012Ekelti failus.");
139
139
  injectString("lv-LV", "Upload files.", "Aug\u0161upiel\u0101d\u0113t failus.");
140
140
  injectString("ka-GE", "Upload files.", "\u10E4\u10D0\u10D8\u10DA\u10D4\u10D1\u10D8\u10E1 \u10D0\u10E2\u10D5\u10D8\u10E0\u10D7\u10D5\u10D0.");
@@ -167,7 +167,7 @@ injectString("tr", "Supported Formats:", "Desteklenen Bi\xE7imler:");
167
167
  injectString("zh-Hans", "Supported Formats:", "\u652F\u6301\u7684\u683C\u5F0F\uFF1A");
168
168
  injectString("zh-TW", "Supported Formats:", "\u652F\u63F4\u7684\u683C\u5F0F\uFF1A");
169
169
  injectString("ro-RO", "Supported Formats:", "Formate acceptate:");
170
- injectString("ar", "Supported Formats:", "\u0627\u0644\u0635\u064A\u063A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629:");
170
+ injectString("ar-001", "Supported Formats:", "\u0627\u0644\u0635\u064A\u063A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629:");
171
171
  injectString("lt-LT", "Supported Formats:", "Palaikomi formatai:");
172
172
  injectString("lv-LV", "Supported Formats:", "Atbalst\u012Btie form\u0101ti:");
173
173
  injectString("ka-GE", "Supported Formats:", "\u10DB\u10EE\u10D0\u10E0\u10D3\u10D0\u10ED\u10D4\u10E0\u10D8\u10DA\u10D8 \u10E4\u10DD\u10E0\u10DB\u10D0\u10E2\u10D4\u10D1\u10D8:");
@@ -200,7 +200,7 @@ injectString("tr", "File upload area", "File upload area");
200
200
  injectString("zh-Hans", "File upload area", "File upload area");
201
201
  injectString("zh-TW", "File upload area", "File upload area");
202
202
  injectString("ro-RO", "File upload area", "File upload area");
203
- injectString("ar", "File upload area", "\u0645\u0646\u0637\u0642\u0629 \u0631\u0641\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062A");
203
+ injectString("ar-001", "File upload area", "\u0645\u0646\u0637\u0642\u0629 \u0631\u0641\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062A");
204
204
  injectString("lt-LT", "File upload area", "Fail\u0173 \u012Fk\u0117limo sritis");
205
205
  injectString("lv-LV", "File upload area", "Failu aug\u0161upiel\u0101des zona");
206
206
  injectString("ka-GE", "File upload area", "\u10E4\u10D0\u10D8\u10DA\u10D8\u10E1 \u10D0\u10E2\u10D5\u10D8\u10E0\u10D7\u10D5\u10D8\u10E1 \u10D6\u10DD\u10DC\u10D0");
@@ -41,7 +41,7 @@ injectString("tr", "All Filters", "T\xFCm Filtreler");
41
41
  injectString("zh-Hans", "All Filters", "\u6240\u6709\u7B5B\u9009\u5668");
42
42
  injectString("zh-TW", "All Filters", "\u6240\u6709\u7BE9\u9078\u5668");
43
43
  injectString("ro-RO", "All Filters", "Toate filtrele");
44
- injectString("ar", "All Filters", "\u0643\u0644 \u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629");
44
+ injectString("ar-001", "All Filters", "\u0643\u0644 \u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629");
45
45
  injectString("lt-LT", "All Filters", "Visi filtrai");
46
46
  injectString("lv-LV", "All Filters", "Visi filtri");
47
47
  injectString("ka-GE", "All Filters", "\u10E7\u10D5\u10D4\u10DA\u10D0 \u10E4\u10D8\u10DA\u10E2\u10E0\u10D8");
@@ -74,7 +74,7 @@ injectString("tr", "Clear", "Temizle");
74
74
  injectString("zh-Hans", "Clear", "\u6E05\u9664");
75
75
  injectString("zh-TW", "Clear", "\u6E05\u9664");
76
76
  injectString("ro-RO", "Clear", "\u0218terge\u021Bi");
77
- injectString("ar", "Clear", "\u0645\u0633\u062D");
77
+ injectString("ar-001", "Clear", "\u0645\u0633\u062D");
78
78
  injectString("lt-LT", "Clear", "I\u0161valyti");
79
79
  injectString("lv-LV", "Clear", "Not\u012Br\u012Bt");
80
80
  injectString("ka-GE", "Clear", "\u10D2\u10D0\u10E1\u10E3\u10E4\u10D7\u10D0\u10D5\u10D4\u10D1\u10D0");
@@ -107,7 +107,7 @@ injectString("tr", "Save", "Kaydet");
107
107
  injectString("zh-Hans", "Save", "\u4FDD\u5B58");
108
108
  injectString("zh-TW", "Save", "\u5132\u5B58");
109
109
  injectString("ro-RO", "Save", "Salva\u021Bi");
110
- injectString("ar", "Save", "\u062D\u0641\u0638");
110
+ injectString("ar-001", "Save", "\u062D\u0641\u0638");
111
111
  injectString("lt-LT", "Save", "I\u0161saugoti");
112
112
  injectString("lv-LV", "Save", "Saglab\u0101t");
113
113
  injectString("ka-GE", "Save", "\u10E8\u10D4\u10DC\u10D0\u10EE\u10D5\u10D0");