@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.
- package/README.md +25 -0
- package/dist/advancedGroupsFilter/advancedGroupsFilter.js +3 -3
- package/dist/advancedGroupsFilter/advancedGroupsFilterForm.js +2 -2
- package/dist/advancedGroupsFilter/advancedGroupsFilterFormSection.js +7 -7
- package/dist/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.js +1 -1
- package/dist/alertRaw/alertRaw.js +1 -1
- package/dist/banner/bannerMultipLine.js +1 -1
- package/dist/banner/bannerSingleLine.js +1 -1
- package/dist/banner/utils/useSummaryBannerProp.js +1 -1
- package/dist/betaPill/betaPill.js +4 -4
- package/dist/bookmark/bookmark.js +2 -2
- package/dist/bulkEditControl/bulkEditControl.js +5 -5
- package/dist/calendar/calendar.js +30 -30
- package/dist/calendar/calendarUtils.js +6 -6
- package/dist/card/card.js +1 -1
- package/dist/chart/accessibleChart/accessibleChartNarrative.js +13 -13
- package/dist/chart/accessibleChart/accessibleChartTable.js +5 -5
- package/dist/chart/accessibleChart/generatePieNarrative.js +6 -6
- package/dist/chart/barChart.js +1 -1
- package/dist/chart/chart.js +1 -1
- package/dist/chart/chartAxis/chartAxis.js +2 -2
- package/dist/chart/lineChart.js +1 -1
- package/dist/chart/pieChart.js +1 -1
- package/dist/checkboxListWithAction/checkboxListWithAction.js +4 -4
- package/dist/chip/chip.js +1 -1
- package/dist/columnsSelector/columnsSelector.js +2 -2
- package/dist/columnsSelector/columnsTab/columnsTab.js +1 -1
- package/dist/columnsSelector/columnsTabGroup/columnsTabGroup.js +1 -1
- package/dist/controlledPopup/controlledPopup.d.ts +1 -1
- package/dist/controlledPopup/controlledPopup.js +17 -3
- package/dist/dataFeed/feedExpandControl/feedExpandControl.js +2 -2
- package/dist/dataGrid/columns/checkboxColumn/checkboxHeaderCell.js +1 -1
- package/dist/dataGrid/dataGrid.js +1 -1
- package/dist/dataGrid/emptySearchList/emptySearchList.js +1 -1
- package/dist/dataGrid/entitiesListActions/actions/columnsListButton.js +1 -1
- package/dist/dataGrid/entitiesListActions/actions/fullscreenButton.js +2 -2
- package/dist/dataGrid/withFlexibleColumns/components/columnSettings.js +2 -2
- package/dist/dataGrid/withFlexibleColumns/components/columnSettingsSidePanel.js +1 -1
- package/dist/dataGrid/withFlexibleColumns/withFlexibleColumns.js +1 -1
- package/dist/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +5 -5
- package/dist/dataGrid/withSelectableRows/withSelectableRows.js +4 -4
- package/dist/dataGrid/withSortableColumns/columns/sortableColumnWrapper.js +2 -2
- package/dist/dateInputInner/dateInputInner.js +7 -7
- package/dist/dateInputInner/dateInputInnerControlBlock.js +2 -2
- package/dist/dateInputRaw/dateInputRaw.js +3 -3
- package/dist/dateInputRaw/utils/getLabel.js +2 -2
- package/dist/dateRangeInner/dateRangeInner.js +1 -1
- package/dist/dateRangeRaw/dateRangeRaw.js +10 -10
- package/dist/dateRangeRaw/utils/dateRangeUtils.js +17 -17
- package/dist/dateSelectionWrapper/dateSelectionWrapper.js +4 -4
- package/dist/dialog/dialogContent.js +1 -1
- package/dist/dropdown/dropdownTrigger.d.ts +1 -1
- package/dist/dropdownRaw/dropdownList.js +9 -9
- package/dist/dropdownRaw/dropdownPopup.js +3 -3
- package/dist/dropdownRaw/dropdownRaw.js +249 -3
- package/dist/dropdownRaw/dropdownSearchableTrigger.d.ts +2 -1
- package/dist/dropdownRaw/dropdownSearchableTrigger.js +8 -6
- package/dist/dropdownRaw/dropdownTrigger.d.ts +2 -1
- package/dist/dropdownRaw/dropdownTrigger.js +2 -2
- package/dist/dropdownRaw/types.d.ts +7 -0
- package/dist/favoriteButton/favoriteButton.js +1 -1
- package/dist/fileUpload/components/dropZoneContent.js +4 -4
- package/dist/fileUpload/components/templateDownloadSection.js +1 -1
- package/dist/fileUpload/components/uploadedFilesSection.js +2 -2
- package/dist/fileUpload/fileUpload.js +6 -6
- package/dist/filters/components/filtersContainer.js +3 -3
- package/dist/filters/components/filtersEmptyState.js +2 -2
- package/dist/filters/components/filtersSaveModal.js +5 -5
- package/dist/filters/components/filtersSavedChipComponent.js +11 -11
- package/dist/filters/components/filtersSearchItemData.js +1 -1
- package/dist/filters/components/filtersSearchList.js +9 -9
- package/dist/filters/components/filtersSelect.js +1 -1
- package/dist/filters/components/filtersSelectListItem.js +2 -2
- package/dist/filters/components/filtersSidePanel.js +8 -8
- package/dist/filters/filters.js +4 -3
- package/dist/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +18 -18
- package/dist/filtersBar/components/resetComponentButton.js +1 -1
- package/dist/filtersBar/filtersBarActions/filtersBarActions.js +4 -4
- package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +2 -2
- package/dist/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +5 -5
- package/dist/filtersBar/filtersContainer/filtersContainer.js +2 -2
- package/dist/formField/hooks/useError.js +3 -3
- package/dist/formGroup/components/reviewListToggle/reviewListToggle.js +2 -2
- package/dist/formGroup/hooks/useToggle.js +1 -1
- package/dist/formLayout/hooks/useError.js +3 -3
- package/dist/formLayout/hooks/useFormButtons.js +3 -3
- package/dist/formSection/hooks/useError.js +3 -3
- package/dist/formStepper/components/formStep.js +1 -1
- package/dist/formStepper/formStepper.js +2 -2
- package/dist/formStepperButtons/formStepperButtons.js +4 -4
- package/dist/groupsFilterRaw/groupsFilterAdjustmentState.js +4 -4
- package/dist/groupsFilterRaw/groupsFilterBox.js +3 -3
- package/dist/groupsFilterRaw/groupsFilterCommon.js +2 -2
- package/dist/groupsFilterRaw/groupsFilterCurrentlySelectedState.js +5 -5
- package/dist/groupsFilterRaw/groupsFilterHelper.js +2 -2
- package/dist/groupsFilterRaw/groupsFilterInitialState.js +8 -8
- package/dist/groupsFilterRaw/groupsFilterMenu.js +3 -3
- package/dist/groupsFilterRaw/groupsFilterRaw.js +8 -8
- package/dist/groupsFilterRaw/groupsFilterTrigger.js +2 -2
- package/dist/groupsFilterRaw/groupsHelper.js +22 -22
- package/dist/header/components/collapsedItemsControl/collapsedItemsControl.js +1 -1
- package/dist/header/components/mobileFilterControl/mobileFilterControl.js +1 -1
- package/dist/header/components/mobileSearchControl/mobileSearchControl.js +3 -3
- package/dist/header/headerBack.js +1 -1
- package/dist/index.css +89 -83
- package/dist/index.d.ts +3 -0
- package/dist/index.js +8 -3
- package/dist/lineChart/lineChart.js +1 -1
- package/dist/lineChartMini/lineChartMini.js +1 -1
- package/dist/list/itemData/itemDataInternal.js +2 -2
- package/dist/list/listItem/listItem.js +2 -2
- package/dist/menu/components/menuErrorItem.js +2 -2
- package/dist/mobileSheet/mobileSheet.js +2 -2
- package/dist/modal/modal.js +1 -1
- package/dist/nav/navFooter/navEditFooter/navEditFooter.js +2 -2
- package/dist/nav/navFooter/navFooter.js +1 -1
- package/dist/nav/navFooter/navFooterAction/navFooterAction.js +1 -1
- package/dist/nav/navHeader/navHeader.js +2 -2
- package/dist/nav/navHeader/navHeaderSearch/navHeaderSearch.js +2 -2
- package/dist/nav/navMobileBar/navMobileBar.js +1 -1
- package/dist/notification/notification.js +1 -1
- package/dist/pagination/paginationArrow.js +2 -2
- package/dist/pagination/paginationText/paginationText.js +1 -1
- package/dist/pill/components/pillNonActionable/pillNonActionable.js +1 -1
- package/dist/pillBox/components/pillBoxItem.js +1 -1
- package/dist/pillBox/pillBox.js +3 -3
- package/dist/pillExpandable/pillExpandable.js +1 -1
- package/dist/pillExpandable/pillExpandableAlignments.js +65 -48
- package/dist/progressIndicator/progressIndicator.d.ts +4 -4
- package/dist/progressIndicator/progressIndicator.js +4 -4
- package/dist/rangeRaw/rangeRaw.js +7 -7
- package/dist/rangeRaw/utils/rangeHelper.js +7 -7
- package/dist/searchInputRaw/searchInputRaw.js +2 -2
- package/dist/selectList/selectList.js +2 -2
- package/dist/skeleton/skeleton.js +1 -1
- package/dist/sortControl/sortControl.js +5 -5
- package/dist/stepperRaw/stepperRaw.js +2 -2
- package/dist/summary/summary.js +2 -2
- package/dist/summaryTile/summaryTile.js +1 -1
- package/dist/table/actions/actionsMenu.js +2 -2
- package/dist/table/detailPanel/detailPanel.js +1 -1
- package/dist/table/detailPanel/detailPanelHeader.js +2 -2
- package/dist/table/flexible/columnSettings.js +2 -2
- package/dist/table/flexible/columnsPopup.js +1 -1
- package/dist/table/nested/useNestedRows.js +2 -2
- package/dist/table/selectable/selectableHeader.js +5 -5
- package/dist/table/selectable/useSelectableRows.js +2 -2
- package/dist/table/sortable/mobileSortControl.js +3 -3
- package/dist/table/sortable/sortableHeader.js +2 -2
- package/dist/table/table.d.ts +4 -0
- package/dist/table/table.js +10 -6
- package/dist/tabs/tabs.js +2 -2
- package/dist/tag/tag.d.ts +3 -2
- package/dist/tag/tag.js +3 -2
- package/dist/timePickerRaw/timePickerRaw.js +7 -7
- package/dist/toastRaw/toastRaw.js +1 -1
- package/dist/toggleButtonRaw/toggleButtonRaw.js +2 -2
- package/dist/tooltip/tooltip.js +5 -2
- package/dist/utils/formatDate.js +37 -37
- package/dist/utils/localization/flipAlignment.js +5 -1
- package/dist/utils/localization/getSupportedLanguage.d.ts +1 -1
- package/dist/utils/localization/getSupportedLanguage.js +8 -2
- package/dist/utils/localization/getTextDirection.js +1 -1
- package/dist/utils/localization/languageContext.d.ts +1 -1
- package/dist/utils/localization/translations/{ar.json → ar-001.json} +54 -53
- package/dist/utils/localization/translationsDictionary.js +1 -1
- package/dist/utils/localization/useRTLAlignment.d.ts +6 -0
- package/dist/utils/localization/useRTLAlignment.js +6 -0
- package/esm/advancedGroupsFilter/advancedGroupsFilter.js +3 -3
- package/esm/advancedGroupsFilter/advancedGroupsFilterForm.js +2 -2
- package/esm/advancedGroupsFilter/advancedGroupsFilterFormSection.js +7 -7
- package/esm/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.js +1 -1
- package/esm/alertRaw/alertRaw.js +1 -1
- package/esm/banner/bannerMultipLine.js +1 -1
- package/esm/banner/bannerSingleLine.js +1 -1
- package/esm/banner/utils/useSummaryBannerProp.js +1 -1
- package/esm/betaPill/betaPill.js +4 -4
- package/esm/bookmark/bookmark.js +2 -2
- package/esm/bulkEditControl/bulkEditControl.js +5 -5
- package/esm/calendar/calendar.js +30 -30
- package/esm/calendar/calendarUtils.js +6 -6
- package/esm/card/card.js +1 -1
- package/esm/chart/accessibleChart/accessibleChartNarrative.js +13 -13
- package/esm/chart/accessibleChart/accessibleChartTable.js +5 -5
- package/esm/chart/accessibleChart/generatePieNarrative.js +6 -6
- package/esm/chart/barChart.js +1 -1
- package/esm/chart/chart.js +1 -1
- package/esm/chart/chartAxis/chartAxis.js +2 -2
- package/esm/chart/lineChart.js +1 -1
- package/esm/chart/pieChart.js +1 -1
- package/esm/checkboxListWithAction/checkboxListWithAction.js +4 -4
- package/esm/chip/chip.js +1 -1
- package/esm/columnsSelector/columnsSelector.js +2 -2
- package/esm/columnsSelector/columnsTab/columnsTab.js +1 -1
- package/esm/columnsSelector/columnsTabGroup/columnsTabGroup.js +1 -1
- package/esm/controlledPopup/controlledPopup.d.ts +1 -1
- package/esm/controlledPopup/controlledPopup.js +17 -3
- package/esm/dataFeed/feedExpandControl/feedExpandControl.js +2 -2
- package/esm/dataGrid/columns/checkboxColumn/checkboxHeaderCell.js +1 -1
- package/esm/dataGrid/dataGrid.js +1 -1
- package/esm/dataGrid/emptySearchList/emptySearchList.js +1 -1
- package/esm/dataGrid/entitiesListActions/actions/columnsListButton.js +1 -1
- package/esm/dataGrid/entitiesListActions/actions/fullscreenButton.js +2 -2
- package/esm/dataGrid/withFlexibleColumns/components/columnSettings.js +2 -2
- package/esm/dataGrid/withFlexibleColumns/components/columnSettingsSidePanel.js +1 -1
- package/esm/dataGrid/withFlexibleColumns/withFlexibleColumns.js +1 -1
- package/esm/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +5 -5
- package/esm/dataGrid/withSelectableRows/withSelectableRows.js +4 -4
- package/esm/dataGrid/withSortableColumns/columns/sortableColumnWrapper.js +2 -2
- package/esm/dateInputInner/dateInputInner.js +7 -7
- package/esm/dateInputInner/dateInputInnerControlBlock.js +2 -2
- package/esm/dateInputRaw/dateInputRaw.js +3 -3
- package/esm/dateInputRaw/utils/getLabel.js +2 -2
- package/esm/dateRangeInner/dateRangeInner.js +1 -1
- package/esm/dateRangeRaw/dateRangeRaw.js +10 -10
- package/esm/dateRangeRaw/utils/dateRangeUtils.js +17 -17
- package/esm/dateSelectionWrapper/dateSelectionWrapper.js +4 -4
- package/esm/dialog/dialogContent.js +1 -1
- package/esm/dropdown/dropdownTrigger.d.ts +1 -1
- package/esm/dropdownRaw/dropdownList.js +9 -9
- package/esm/dropdownRaw/dropdownPopup.js +3 -3
- package/esm/dropdownRaw/dropdownRaw.js +249 -3
- package/esm/dropdownRaw/dropdownSearchableTrigger.d.ts +2 -1
- package/esm/dropdownRaw/dropdownSearchableTrigger.js +8 -6
- package/esm/dropdownRaw/dropdownTrigger.d.ts +2 -1
- package/esm/dropdownRaw/dropdownTrigger.js +2 -2
- package/esm/dropdownRaw/types.d.ts +7 -0
- package/esm/favoriteButton/favoriteButton.js +1 -1
- package/esm/fileUpload/components/dropZoneContent.js +4 -4
- package/esm/fileUpload/components/templateDownloadSection.js +1 -1
- package/esm/fileUpload/components/uploadedFilesSection.js +2 -2
- package/esm/fileUpload/fileUpload.js +6 -6
- package/esm/filters/components/filtersContainer.js +3 -3
- package/esm/filters/components/filtersEmptyState.js +2 -2
- package/esm/filters/components/filtersSaveModal.js +5 -5
- package/esm/filters/components/filtersSavedChipComponent.js +11 -11
- package/esm/filters/components/filtersSearchItemData.js +1 -1
- package/esm/filters/components/filtersSearchList.js +9 -9
- package/esm/filters/components/filtersSelect.js +1 -1
- package/esm/filters/components/filtersSelectListItem.js +2 -2
- package/esm/filters/components/filtersSidePanel.js +8 -8
- package/esm/filters/filters.js +4 -3
- package/esm/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +18 -18
- package/esm/filtersBar/components/resetComponentButton.js +1 -1
- package/esm/filtersBar/filtersBarActions/filtersBarActions.js +4 -4
- package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +2 -2
- package/esm/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +5 -5
- package/esm/filtersBar/filtersContainer/filtersContainer.js +2 -2
- package/esm/formField/hooks/useError.js +3 -3
- package/esm/formGroup/components/reviewListToggle/reviewListToggle.js +2 -2
- package/esm/formGroup/hooks/useToggle.js +1 -1
- package/esm/formLayout/hooks/useError.js +3 -3
- package/esm/formLayout/hooks/useFormButtons.js +3 -3
- package/esm/formSection/hooks/useError.js +3 -3
- package/esm/formStepper/components/formStep.js +1 -1
- package/esm/formStepper/formStepper.js +2 -2
- package/esm/formStepperButtons/formStepperButtons.js +4 -4
- package/esm/groupsFilterRaw/groupsFilterAdjustmentState.js +4 -4
- package/esm/groupsFilterRaw/groupsFilterBox.js +3 -3
- package/esm/groupsFilterRaw/groupsFilterCommon.js +2 -2
- package/esm/groupsFilterRaw/groupsFilterCurrentlySelectedState.js +5 -5
- package/esm/groupsFilterRaw/groupsFilterHelper.js +2 -2
- package/esm/groupsFilterRaw/groupsFilterInitialState.js +8 -8
- package/esm/groupsFilterRaw/groupsFilterMenu.js +3 -3
- package/esm/groupsFilterRaw/groupsFilterRaw.js +8 -8
- package/esm/groupsFilterRaw/groupsFilterTrigger.js +2 -2
- package/esm/groupsFilterRaw/groupsHelper.js +22 -22
- package/esm/header/components/collapsedItemsControl/collapsedItemsControl.js +1 -1
- package/esm/header/components/mobileFilterControl/mobileFilterControl.js +1 -1
- package/esm/header/components/mobileSearchControl/mobileSearchControl.js +3 -3
- package/esm/header/headerBack.js +1 -1
- package/esm/index.d.ts +3 -0
- package/esm/index.js +2 -0
- package/esm/lineChart/lineChart.js +1 -1
- package/esm/lineChartMini/lineChartMini.js +1 -1
- package/esm/list/itemData/itemDataInternal.js +2 -2
- package/esm/list/listItem/listItem.js +2 -2
- package/esm/menu/components/menuErrorItem.js +2 -2
- package/esm/mobileSheet/mobileSheet.js +2 -2
- package/esm/modal/modal.js +1 -1
- package/esm/nav/navFooter/navEditFooter/navEditFooter.js +2 -2
- package/esm/nav/navFooter/navFooter.js +1 -1
- package/esm/nav/navFooter/navFooterAction/navFooterAction.js +1 -1
- package/esm/nav/navHeader/navHeader.js +2 -2
- package/esm/nav/navHeader/navHeaderSearch/navHeaderSearch.js +2 -2
- package/esm/nav/navMobileBar/navMobileBar.js +1 -1
- package/esm/notification/notification.js +1 -1
- package/esm/pagination/paginationArrow.js +2 -2
- package/esm/pagination/paginationText/paginationText.js +1 -1
- package/esm/pill/components/pillNonActionable/pillNonActionable.js +1 -1
- package/esm/pillBox/components/pillBoxItem.js +1 -1
- package/esm/pillBox/pillBox.js +3 -3
- package/esm/pillExpandable/pillExpandable.js +1 -1
- package/esm/pillExpandable/pillExpandableAlignments.js +65 -48
- package/esm/progressIndicator/progressIndicator.d.ts +4 -4
- package/esm/progressIndicator/progressIndicator.js +4 -4
- package/esm/rangeRaw/rangeRaw.js +7 -7
- package/esm/rangeRaw/utils/rangeHelper.js +7 -7
- package/esm/searchInputRaw/searchInputRaw.js +2 -2
- package/esm/selectList/selectList.js +2 -2
- package/esm/skeleton/skeleton.js +1 -1
- package/esm/sortControl/sortControl.js +5 -5
- package/esm/stepperRaw/stepperRaw.js +2 -2
- package/esm/summary/summary.js +2 -2
- package/esm/summaryTile/summaryTile.js +1 -1
- package/esm/table/actions/actionsMenu.js +2 -2
- package/esm/table/detailPanel/detailPanel.js +1 -1
- package/esm/table/detailPanel/detailPanelHeader.js +2 -2
- package/esm/table/flexible/columnSettings.js +2 -2
- package/esm/table/flexible/columnsPopup.js +1 -1
- package/esm/table/nested/useNestedRows.js +2 -2
- package/esm/table/selectable/selectableHeader.js +5 -5
- package/esm/table/selectable/useSelectableRows.js +2 -2
- package/esm/table/sortable/mobileSortControl.js +3 -3
- package/esm/table/sortable/sortableHeader.js +2 -2
- package/esm/table/table.d.ts +4 -0
- package/esm/table/table.js +9 -5
- package/esm/tabs/tabs.js +2 -2
- package/esm/tag/tag.d.ts +3 -2
- package/esm/tag/tag.js +3 -2
- package/esm/timePickerRaw/timePickerRaw.js +7 -7
- package/esm/toastRaw/toastRaw.js +1 -1
- package/esm/toggleButtonRaw/toggleButtonRaw.js +2 -2
- package/esm/tooltip/tooltip.js +5 -2
- package/esm/utils/formatDate.js +37 -37
- package/esm/utils/localization/flipAlignment.js +5 -1
- package/esm/utils/localization/getSupportedLanguage.d.ts +1 -1
- package/esm/utils/localization/getSupportedLanguage.js +8 -2
- package/esm/utils/localization/getTextDirection.js +1 -1
- package/esm/utils/localization/languageContext.d.ts +1 -1
- package/esm/utils/localization/translations/{ar.json → ar-001.json} +54 -53
- package/esm/utils/localization/translationsDictionary.js +1 -1
- package/esm/utils/localization/useRTLAlignment.d.ts +6 -0
- package/esm/utils/localization/useRTLAlignment.js +6 -0
- 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
|
-
|
|
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
|
-
},
|
|
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");
|