@k-int/stripes-kint-components 5.30.0 → 5.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/es/index.js +8 -0
- package/es/lib/ButtonTypedown/ButtonTypedown.js +58 -0
- package/es/lib/ButtonTypedown/index.js +13 -0
- package/es/lib/Typedown/Typedown.js +85 -44
- package/es/lib/hooks/typedownHooks/useTypedown.js +104 -81
- package/package.json +1 -1
- package/src/artifacts/coverage-jest/ActionList/ActionList.js.html +1 -1
- package/src/artifacts/coverage-jest/ActionList/ActionListFieldArray.js.html +1 -1
- package/src/artifacts/coverage-jest/ActionList/index.html +1 -1
- package/src/artifacts/coverage-jest/ActionList/index.js.html +1 -1
- package/src/artifacts/coverage-jest/ButtonTypedown/ButtonTypedown.js.html +241 -0
- package/src/artifacts/coverage-jest/ButtonTypedown/index.html +131 -0
- package/src/artifacts/coverage-jest/ButtonTypedown/index.js.html +88 -0
- package/src/artifacts/coverage-jest/ComboButton/ComboButton.js.html +1 -1
- package/src/artifacts/coverage-jest/ComboButton/index.html +1 -1
- package/src/artifacts/coverage-jest/ComboButton/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesLookup.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesSettings.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyForm.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyView.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEdit.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEditCtx.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesListField.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyField.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyFormCard.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/testResources.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilter.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterField.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterForm.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesRule.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/testResources.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/useOperators.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/useParseActiveFilterStrings.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/useValueProps.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesView.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesViewCtx.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertyCard.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/testResources.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CycleButton/CycleButton.js.html +1 -1
- package/src/artifacts/coverage-jest/CycleButton/index.html +1 -1
- package/src/artifacts/coverage-jest/CycleButton/index.js.html +1 -1
- package/src/artifacts/coverage-jest/FieldLabel/FieldLabel.js.html +1 -1
- package/src/artifacts/coverage-jest/FieldLabel/index.html +1 -1
- package/src/artifacts/coverage-jest/FieldLabel/index.js.html +1 -1
- package/src/artifacts/coverage-jest/FormModal/FormModal.js.html +1 -1
- package/src/artifacts/coverage-jest/FormModal/index.html +1 -1
- package/src/artifacts/coverage-jest/FormModal/index.js.html +1 -1
- package/src/artifacts/coverage-jest/FormattedKintMessage/FormattedKintMessage.js.html +1 -1
- package/src/artifacts/coverage-jest/FormattedKintMessage/index.html +1 -1
- package/src/artifacts/coverage-jest/FormattedKintMessage/index.js.html +1 -1
- package/src/artifacts/coverage-jest/IconSelect/IconSelect.js.html +1 -1
- package/src/artifacts/coverage-jest/IconSelect/index.html +1 -1
- package/src/artifacts/coverage-jest/IconSelect/index.js.html +1 -1
- package/src/artifacts/coverage-jest/NoResultsMessage/NoResultsMessage.js.html +1 -1
- package/src/artifacts/coverage-jest/NoResultsMessage/index.html +1 -1
- package/src/artifacts/coverage-jest/NoResultsMessage/index.js.html +1 -1
- package/src/artifacts/coverage-jest/NumberField/NumberField.js.html +1 -1
- package/src/artifacts/coverage-jest/NumberField/index.html +1 -1
- package/src/artifacts/coverage-jest/NumberField/index.js.html +1 -1
- package/src/artifacts/coverage-jest/QueryTypedown/QueryTypedown.js.html +1 -1
- package/src/artifacts/coverage-jest/QueryTypedown/index.html +1 -1
- package/src/artifacts/coverage-jest/QueryTypedown/index.js.html +1 -1
- package/src/artifacts/coverage-jest/RefdataButtons/RefdataButtons.js.html +1 -1
- package/src/artifacts/coverage-jest/RefdataButtons/index.html +1 -1
- package/src/artifacts/coverage-jest/RefdataButtons/index.js.html +1 -1
- package/src/artifacts/coverage-jest/ResponsiveButtonGroup/ResponsiveButtonGroup.js.html +1 -1
- package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.html +1 -1
- package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.js.html +1 -1
- package/src/artifacts/coverage-jest/ResponsiveButtonGroup/useResponsiveButtonGroupSizing.js.html +1 -1
- package/src/artifacts/coverage-jest/RichSelect/RichSelect.js.html +1 -1
- package/src/artifacts/coverage-jest/RichSelect/index.html +1 -1
- package/src/artifacts/coverage-jest/RichSelect/index.js.html +1 -1
- package/src/artifacts/coverage-jest/RichSelect/useSelectedOption.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/SASQLookupComponent.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/TableBody.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/index.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQRoute/SASQRoute.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQRoute/index.html +1 -1
- package/src/artifacts/coverage-jest/SASQRoute/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQViewComponent/SASQViewComponent.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQViewComponent/index.html +1 -1
- package/src/artifacts/coverage-jest/SASQViewComponent/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SearchField/SearchField.js.html +1 -1
- package/src/artifacts/coverage-jest/SearchField/index.html +1 -1
- package/src/artifacts/coverage-jest/SearchField/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SearchKeyControl/SearchKeyControl.js.html +1 -1
- package/src/artifacts/coverage-jest/SearchKeyControl/index.html +1 -1
- package/src/artifacts/coverage-jest/SearchKeyControl/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/EditableRefdataCategoryList.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataList/EditableRefdataList.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsList.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/EditableSettingsListFieldArray.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/EditSettingValue.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/RenderSettingValue.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/SettingField.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/RefdataCategoriesSettings.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPage.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/SettingPagePane.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/SettingsFormContainer.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsField.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/StaticSettingsFieldComponent.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/constants/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/constants/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/constants/queryKeys.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/contexts/SettingsContext.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/contexts/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/contexts/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/useSettingCallout.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/useSettingsSectionInitalValues.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useStaticSettingsSection.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/useAppSettings.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/useSettingSection.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettings/useSettings.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/Tags.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/hooks/index.html +1 -1
- package/src/artifacts/coverage-jest/Tags/hooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/hooks/useTags.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/hooks/useTagsEnabled.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/index.html +1 -1
- package/src/artifacts/coverage-jest/Tags/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/tagsConfig.js.html +1 -1
- package/src/artifacts/coverage-jest/Typedown/Typedown.js.html +219 -60
- package/src/artifacts/coverage-jest/Typedown/index.html +15 -15
- package/src/artifacts/coverage-jest/Typedown/index.js.html +1 -1
- package/src/artifacts/coverage-jest/cobertura-coverage.xml +196 -99
- package/src/artifacts/coverage-jest/constants/comparators.js.html +1 -1
- package/src/artifacts/coverage-jest/constants/customProperties.js.html +1 -1
- package/src/artifacts/coverage-jest/constants/endpoints.js.html +1 -1
- package/src/artifacts/coverage-jest/constants/eventCodes.js.html +1 -1
- package/src/artifacts/coverage-jest/constants/index.html +1 -1
- package/src/artifacts/coverage-jest/constants/pagination.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/useIntlKey.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/useIntlKeyStore.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/useKintIntl.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/typedownHooks/index.html +14 -14
- package/src/artifacts/coverage-jest/hooks/typedownHooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedown.js.html +170 -116
- package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownData.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownToggle.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useActionListRef.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useActiveElement.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useCustomProperties.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useHelperApp.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/useInvalidateRefdata.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useKiwtFieldArray.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useKiwtSASQuery.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useLocalPageStore.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useLocalStorageState.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useModConfigEntries.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/useMutateCustomProperties.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateGeneric/useMutateGeneric.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateModConfigEntry.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/useMutateRefdataCategory.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/useMutateRefdataValue.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/usePrevNextPagination.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useQIndex.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useRefdata.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useSASQQueryMeta.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/useStandaloneSASQQueryParameter.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useTemplates.js.html +1 -1
- package/src/artifacts/coverage-jest/index.html +39 -24
- package/src/artifacts/coverage-jest/utils/buildUrl.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/deparseKiwtQueryFilters.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/index.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/index.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryFilters.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryGroups.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryString.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/generateKiwtQuery.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/generateKiwtQueryParams.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.html +1 -1
- package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/groupCustomPropertiesByCtx.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/highlightString.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/index.html +1 -1
- package/src/artifacts/coverage-jest/utils/index.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/matchString.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/modConfigEntriesQueryKey.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/parseErrorResponse.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/parseModConfigEntry.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/refdataOptions.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.html +1 -1
- package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/refdataQueryKey/refdataQueryKey.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/selectorSafe.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/sortByLabel.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/toCamelCase.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/typedownQueryKey.js.html +1 -1
- package/src/artifacts/coverage-jest/validators/index.html +1 -1
- package/src/artifacts/coverage-jest/validators/index.js.html +1 -1
- package/src/artifacts/coverage-jest/validators/validators.js.html +1 -1
- package/src/index.js +4 -0
- package/src/lib/ButtonTypedown/ButtonTypedown.js +52 -0
- package/src/lib/ButtonTypedown/README.md +53 -0
- package/src/lib/ButtonTypedown/index.js +1 -0
- package/src/lib/Typedown/README.md +24 -21
- package/src/lib/Typedown/Typedown.js +101 -48
- package/src/lib/hooks/typedownHooks/useTypedown.js +105 -87
- package/styles/TypeDown.css +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [5.31.0](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/compare/v5.30.0...v5.31.0) (2025-12-12)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **Typedown:** Prevent typedown from closing when scrollbar is clicked ([34d072a](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/commit/34d072ab76570953343f6ab221eb7a87e0e0957b))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **ButtonTypedown:** Added new Typedown variant specifically designed to work more like a dropdown with the search inside the list ([7d2be52](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/commit/7d2be52ab9015cfbd11920c7ba193d3f7a2fff9f))
|
|
12
|
+
* **Typedown:** Ability to renderHeader, improvements to focus handling ([d7cd617](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/commit/d7cd617f5e66840d83deca046d3dc51979f6be69))
|
|
13
|
+
* **Typedown:** Typedown renderTrigger and getDisplayValue ([3c492ca](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/commit/3c492ca8de9cb3a0c2d48d99670a4e6b187bb3d0))
|
|
14
|
+
|
|
1
15
|
# [5.30.0](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/compare/v5.29.1...v5.30.0) (2025-12-10)
|
|
2
16
|
|
|
3
17
|
|
package/es/index.js
CHANGED
|
@@ -7,6 +7,7 @@ var _exportNames = {
|
|
|
7
7
|
ActionList: true,
|
|
8
8
|
Typedown: true,
|
|
9
9
|
QueryTypedown: true,
|
|
10
|
+
ButtonTypedown: true,
|
|
10
11
|
SearchField: true,
|
|
11
12
|
SearchKeyControl: true,
|
|
12
13
|
SASQRoute: true,
|
|
@@ -53,6 +54,12 @@ Object.defineProperty(exports, "ActionList", {
|
|
|
53
54
|
return _ActionList.default;
|
|
54
55
|
}
|
|
55
56
|
});
|
|
57
|
+
Object.defineProperty(exports, "ButtonTypedown", {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
get: function () {
|
|
60
|
+
return _ButtonTypedown.default;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
56
63
|
Object.defineProperty(exports, "ComboButton", {
|
|
57
64
|
enumerable: true,
|
|
58
65
|
get: function () {
|
|
@@ -339,6 +346,7 @@ Object.keys(_Settings).forEach(function (key) {
|
|
|
339
346
|
var _ActionList = _interopRequireDefault(require("./lib/ActionList"));
|
|
340
347
|
var _Typedown = _interopRequireDefault(require("./lib/Typedown"));
|
|
341
348
|
var _QueryTypedown = _interopRequireDefault(require("./lib/QueryTypedown"));
|
|
349
|
+
var _ButtonTypedown = _interopRequireDefault(require("./lib/ButtonTypedown"));
|
|
342
350
|
var _SearchField = _interopRequireDefault(require("./lib/SearchField"));
|
|
343
351
|
var _SearchKeyControl = _interopRequireDefault(require("./lib/SearchKeyControl"));
|
|
344
352
|
var _SASQRoute = _interopRequireDefault(require("./lib/SASQRoute"));
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
|
+
var _components = require("@folio/stripes/components");
|
|
9
|
+
var _SearchField = _interopRequireDefault(require("../SearchField"));
|
|
10
|
+
var _Typedown = _interopRequireDefault(require("../Typedown"));
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
const ButtonTypedown = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
onType,
|
|
16
|
+
// We need these manually
|
|
17
|
+
renderListItem,
|
|
18
|
+
...typedownProps
|
|
19
|
+
} = _ref;
|
|
20
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typedown.default, {
|
|
21
|
+
getDisplayValue: () => false,
|
|
22
|
+
renderHeader: _ref2 => {
|
|
23
|
+
let {
|
|
24
|
+
currentlyTyped
|
|
25
|
+
} = _ref2;
|
|
26
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SearchField.default, {
|
|
27
|
+
marginBottom0: true,
|
|
28
|
+
onChange: onType,
|
|
29
|
+
value: currentlyTyped
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
renderListItem: renderListItem,
|
|
33
|
+
renderTrigger: _ref3 => {
|
|
34
|
+
let {
|
|
35
|
+
selectedValue,
|
|
36
|
+
triggerComponentRef,
|
|
37
|
+
triggerId,
|
|
38
|
+
typedownTriggerKeyDownHandler
|
|
39
|
+
} = _ref3;
|
|
40
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropdownButton, {
|
|
41
|
+
ref: triggerComponentRef,
|
|
42
|
+
buttonStyle: "dropdownItem",
|
|
43
|
+
fullWidth: true,
|
|
44
|
+
id: triggerId,
|
|
45
|
+
marginBottom0: true,
|
|
46
|
+
onKeyDown: typedownTriggerKeyDownHandler,
|
|
47
|
+
children: renderListItem(selectedValue)
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
...typedownProps
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
var _default = exports.default = ButtonTypedown;
|
|
54
|
+
ButtonTypedown.propTypes = {
|
|
55
|
+
onType: _propTypes.default.func.isRequired,
|
|
56
|
+
renderListItem: _propTypes.default.func.isRequired
|
|
57
|
+
// REST OF TYPEDOWN PROPS
|
|
58
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _ButtonTypedown.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _ButtonTypedown = _interopRequireDefault(require("./ButtonTypedown"));
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = require("react");
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
10
|
var _get = _interopRequireDefault(require("lodash/get"));
|
|
@@ -15,7 +15,6 @@ var _typedownHooks = require("../hooks/typedownHooks");
|
|
|
15
15
|
var _selectorSafe = _interopRequireDefault(require("../utils/selectorSafe"));
|
|
16
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
19
18
|
const Typedown = _ref => {
|
|
20
19
|
let {
|
|
21
20
|
className,
|
|
@@ -23,6 +22,8 @@ const Typedown = _ref => {
|
|
|
23
22
|
displayClearItem = true,
|
|
24
23
|
displayValueWhileOpen = true,
|
|
25
24
|
endOfList,
|
|
25
|
+
getDisplayValue,
|
|
26
|
+
// Can overrule displayValue entirely
|
|
26
27
|
id,
|
|
27
28
|
initialOpenDelay = 800,
|
|
28
29
|
// Initial opening delay of 800ms (handles any stripes animations)
|
|
@@ -34,13 +35,16 @@ const Typedown = _ref => {
|
|
|
34
35
|
onChange,
|
|
35
36
|
onType,
|
|
36
37
|
renderFooter = null,
|
|
38
|
+
renderHeader = null,
|
|
37
39
|
renderListItem = null,
|
|
40
|
+
renderTrigger = null,
|
|
38
41
|
required,
|
|
39
42
|
selectedStyles,
|
|
40
43
|
// A way to pass any styles that need to be applied globally on selection
|
|
41
44
|
uniqueIdentificationPath = 'id'
|
|
42
45
|
} = _ref;
|
|
43
46
|
const selectedUniqueId = (0, _get.default)(input.value, uniqueIdentificationPath);
|
|
47
|
+
const [selectedValue, setSelectedValue] = (0, _react.useState)(input.value); // Track what's been selected in state as well
|
|
44
48
|
|
|
45
49
|
// Display data needs to be in line with data options but also able to react to default handleType
|
|
46
50
|
const [displayData, setDisplayData] = (0, _react.useState)(dataOptions);
|
|
@@ -53,7 +57,7 @@ const Typedown = _ref => {
|
|
|
53
57
|
}, [dataOptions]);
|
|
54
58
|
|
|
55
59
|
// Setup default handleType
|
|
56
|
-
const handleType = e => {
|
|
60
|
+
const handleType = (0, _react.useCallback)(e => {
|
|
57
61
|
const regex = new RegExp(`${e.target.value.toLowerCase()}`);
|
|
58
62
|
if (onType) {
|
|
59
63
|
onType(e);
|
|
@@ -70,20 +74,20 @@ const Typedown = _ref => {
|
|
|
70
74
|
} else {
|
|
71
75
|
setExactMatch(false);
|
|
72
76
|
}
|
|
73
|
-
};
|
|
77
|
+
}, [dataOptions, displayData, filterPath, onType, uniqueIdentificationPath]);
|
|
74
78
|
|
|
75
79
|
// Hook to set up all the essentials
|
|
76
80
|
const {
|
|
77
81
|
refs: {
|
|
78
82
|
listRef,
|
|
79
83
|
triggerRef,
|
|
84
|
+
triggerComponentRef,
|
|
80
85
|
overlayRef,
|
|
81
|
-
footerRef
|
|
86
|
+
footerRef,
|
|
87
|
+
headerRef
|
|
82
88
|
},
|
|
83
89
|
handlers: {
|
|
84
|
-
handleNextFocus
|
|
85
|
-
listKeyDownHandler,
|
|
86
|
-
searchFieldKeyDownHandler
|
|
90
|
+
handleNextFocus
|
|
87
91
|
},
|
|
88
92
|
variables: {
|
|
89
93
|
open,
|
|
@@ -98,15 +102,43 @@ const Typedown = _ref => {
|
|
|
98
102
|
let optionIsSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
99
103
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
100
104
|
className: _TypeDown.default.listItem,
|
|
101
|
-
children: renderListItem ? renderListItem(option, currentlyTyped, exactMatch, optionIsSelected) : (0, _get.default)(option, uniqueIdentificationPath)
|
|
105
|
+
children: renderListItem ? renderListItem(option, currentlyTyped, exactMatch, optionIsSelected, selectedValue) : (0, _get.default)(option, uniqueIdentificationPath)
|
|
102
106
|
});
|
|
103
|
-
}, [currentlyTyped, exactMatch, renderListItem, uniqueIdentificationPath]);
|
|
107
|
+
}, [currentlyTyped, exactMatch, renderListItem, selectedValue, uniqueIdentificationPath]);
|
|
104
108
|
const handleChange = (0, _react.useCallback)(value => {
|
|
105
109
|
input.onChange(value);
|
|
110
|
+
setSelectedValue(value);
|
|
106
111
|
if (typeof onChange === 'function') {
|
|
107
112
|
onChange(value);
|
|
108
113
|
}
|
|
109
114
|
}, [input, onChange]);
|
|
115
|
+
const renderTypedownTrigger = () => {
|
|
116
|
+
const triggerComponentId = `typedown-trigger-${(0, _selectorSafe.default)(input.name)}`;
|
|
117
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
118
|
+
ref: triggerRef,
|
|
119
|
+
id: `typedown-parent-${(0, _selectorSafe.default)(input.name)}-trigger`,
|
|
120
|
+
children: renderTrigger ? renderTrigger({
|
|
121
|
+
// Pass all props in that searchfield uses.
|
|
122
|
+
handleType,
|
|
123
|
+
input,
|
|
124
|
+
// Pass input? Useful when not controlled I guess
|
|
125
|
+
meta,
|
|
126
|
+
selectedValue,
|
|
127
|
+
triggerComponentId,
|
|
128
|
+
triggerComponentRef
|
|
129
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_SearchField.default, {
|
|
130
|
+
ref: triggerComponentRef
|
|
131
|
+
// Pass meta through so correct styling gets applied to the TextField
|
|
132
|
+
,
|
|
133
|
+
id: triggerComponentId,
|
|
134
|
+
label: label,
|
|
135
|
+
marginBottom0: true,
|
|
136
|
+
meta: meta,
|
|
137
|
+
onChange: handleType,
|
|
138
|
+
required: required
|
|
139
|
+
})
|
|
140
|
+
});
|
|
141
|
+
};
|
|
110
142
|
const dropDown = (0, _react.useCallback)(() => {
|
|
111
143
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
112
144
|
className: _TypeDown.default.dropdownMenu,
|
|
@@ -114,10 +146,26 @@ const Typedown = _ref => {
|
|
|
114
146
|
style: {
|
|
115
147
|
'--searchWidth': `${searchWidth}px`
|
|
116
148
|
},
|
|
117
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
149
|
+
children: [renderHeader && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
150
|
+
ref: headerRef,
|
|
151
|
+
className: _TypeDown.default.header,
|
|
152
|
+
id: `typedown-header-${(0, _selectorSafe.default)(input.name)}`,
|
|
153
|
+
children: renderHeader({
|
|
154
|
+
currentlyTyped,
|
|
155
|
+
displayData,
|
|
156
|
+
handleType,
|
|
157
|
+
exactMatch
|
|
158
|
+
})
|
|
159
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
118
160
|
ref: listRef,
|
|
119
161
|
className: _TypeDown.default.listContainer,
|
|
120
|
-
id: "typedown-list"
|
|
162
|
+
id: "typedown-list"
|
|
163
|
+
/* This is an acceptable exception to the no-static-element-interactions
|
|
164
|
+
* as we are only PREVENTING interactions, namely focus change on scrollbar click
|
|
165
|
+
* Without this, the typedown closes instantly when the scrollbar is clicked or dragged.
|
|
166
|
+
* This does NOT prevent item click, as e.propagation is not prevented.
|
|
167
|
+
*/,
|
|
168
|
+
onMouseDown: e => e.preventDefault(),
|
|
121
169
|
children: displayData?.length ? displayData?.map((d, index) => {
|
|
122
170
|
const isSelectedEval = isSelected ? isSelected(input.value, d) : (0, _get.default)(input.value, uniqueIdentificationPath) === (0, _get.default)(d, uniqueIdentificationPath);
|
|
123
171
|
const selectedCSS = selectedStyles ?? _TypeDown.default.selectedMenuButton;
|
|
@@ -131,7 +179,6 @@ const Typedown = _ref => {
|
|
|
131
179
|
handleChange(d);
|
|
132
180
|
handleNextFocus();
|
|
133
181
|
},
|
|
134
|
-
onKeyDown: listKeyDownHandler,
|
|
135
182
|
type: "button",
|
|
136
183
|
children: renderItem(d, isSelectedEval)
|
|
137
184
|
}, `typedown-button-[${index}]`);
|
|
@@ -143,32 +190,33 @@ const Typedown = _ref => {
|
|
|
143
190
|
children: renderFooter(displayData, currentlyTyped, exactMatch)
|
|
144
191
|
})]
|
|
145
192
|
});
|
|
146
|
-
}, [currentlyTyped, displayData, endOfList, exactMatch, footerRef, handleChange, handleNextFocus, input.name, input.value, isSelected,
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
children:
|
|
152
|
-
|
|
153
|
-
,
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
onChange: handleType,
|
|
159
|
-
onKeyDown: searchFieldKeyDownHandler,
|
|
160
|
-
required: required
|
|
161
|
-
})
|
|
162
|
-
});
|
|
163
|
-
};
|
|
193
|
+
}, [currentlyTyped, displayData, endOfList, exactMatch, footerRef, handleChange, handleNextFocus, handleType, headerRef, input.name, input.value, isSelected, listRef, renderFooter, renderHeader, renderItem, searchWidth, selectedStyles, uniqueIdentificationPath]);
|
|
194
|
+
const renderSelectedItem = (0, _react.useCallback)(() => /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
195
|
+
className: (0, _classnames.default)(_TypeDown.default.selectedDisplay),
|
|
196
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
197
|
+
className: _TypeDown.default.selectedItem,
|
|
198
|
+
children: renderItem(input.value)
|
|
199
|
+
}), displayClearItem && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.IconButton, {
|
|
200
|
+
className: _TypeDown.default.clearItem,
|
|
201
|
+
icon: "times-circle-solid",
|
|
202
|
+
onClick: () => handleChange()
|
|
203
|
+
})]
|
|
204
|
+
}), [displayClearItem, handleChange, input.value, renderItem]);
|
|
164
205
|
const displayValue = (0, _react.useMemo)(() => {
|
|
206
|
+
// Allow full control over whether to display the value
|
|
207
|
+
if (getDisplayValue) {
|
|
208
|
+
return getDisplayValue({
|
|
209
|
+
selectedUniqueId,
|
|
210
|
+
open
|
|
211
|
+
});
|
|
212
|
+
}
|
|
165
213
|
return !!selectedUniqueId && (!open || displayValueWhileOpen);
|
|
166
|
-
}, [displayValueWhileOpen, open, selectedUniqueId]);
|
|
214
|
+
}, [displayValueWhileOpen, getDisplayValue, open, selectedUniqueId]);
|
|
167
215
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
168
216
|
ref: resizeRef,
|
|
169
217
|
className: (0, _classnames.default)(_TypeDown.default.typedown, className),
|
|
170
218
|
id: `typedown-id-${id}`,
|
|
171
|
-
children: [
|
|
219
|
+
children: [renderTypedownTrigger(), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Popper, {
|
|
172
220
|
anchorRef: triggerRef,
|
|
173
221
|
className: (0, _classnames.default)(_TypeDown.default.dropdown, _TypeDown.default.fullWidth),
|
|
174
222
|
isOpen: open,
|
|
@@ -192,17 +240,7 @@ const Typedown = _ref => {
|
|
|
192
240
|
overlayRef: overlayRef,
|
|
193
241
|
portal: portal,
|
|
194
242
|
children: dropDown()
|
|
195
|
-
}, "typedown-menu-toggle"), displayValue &&
|
|
196
|
-
className: (0, _classnames.default)(_TypeDown.default.selectedDisplay),
|
|
197
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
198
|
-
className: _TypeDown.default.selectedItem,
|
|
199
|
-
children: renderItem(input.value)
|
|
200
|
-
}), displayClearItem && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.IconButton, {
|
|
201
|
-
className: _TypeDown.default.clearItem,
|
|
202
|
-
icon: "times-circle-solid",
|
|
203
|
-
onClick: () => handleChange()
|
|
204
|
-
})]
|
|
205
|
-
})]
|
|
243
|
+
}, "typedown-menu-toggle"), displayValue && renderSelectedItem()]
|
|
206
244
|
});
|
|
207
245
|
};
|
|
208
246
|
Typedown.propTypes = {
|
|
@@ -212,6 +250,7 @@ Typedown.propTypes = {
|
|
|
212
250
|
displayValueWhileOpen: _propTypes.default.bool,
|
|
213
251
|
endOfList: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.node, _propTypes.default.element]),
|
|
214
252
|
filterPath: _propTypes.default.string,
|
|
253
|
+
getDisplayValue: _propTypes.default.func,
|
|
215
254
|
id: _propTypes.default.string,
|
|
216
255
|
initialOpenDelay: _propTypes.default.number,
|
|
217
256
|
input: _propTypes.default.object,
|
|
@@ -220,8 +259,10 @@ Typedown.propTypes = {
|
|
|
220
259
|
meta: _propTypes.default.object,
|
|
221
260
|
onChange: _propTypes.default.func,
|
|
222
261
|
onType: _propTypes.default.func,
|
|
262
|
+
renderHeader: _propTypes.default.func,
|
|
223
263
|
renderFooter: _propTypes.default.func,
|
|
224
264
|
renderListItem: _propTypes.default.func,
|
|
265
|
+
renderTrigger: _propTypes.default.func,
|
|
225
266
|
required: _propTypes.default.bool,
|
|
226
267
|
selectedStyles: _propTypes.default.string,
|
|
227
268
|
uniqueIdentificationPath: _propTypes.default.string
|
|
@@ -8,97 +8,120 @@ var _react = require("react");
|
|
|
8
8
|
var _reactResizeDetector = require("react-resize-detector");
|
|
9
9
|
var _components = require("@folio/stripes/components");
|
|
10
10
|
var _eventCodes = require("../../constants/eventCodes");
|
|
11
|
-
var _selectorSafe = _interopRequireDefault(require("../../utils/selectorSafe"));
|
|
12
11
|
var _useTypedownToggle = _interopRequireDefault(require("./useTypedownToggle"));
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
const useTypedown = function (name) {
|
|
15
14
|
let {
|
|
16
15
|
timeout = 800
|
|
17
16
|
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
18
|
-
//
|
|
19
|
-
const
|
|
17
|
+
// SET UP STATE HOLDING DOM ELEMENTS
|
|
18
|
+
const [list, setListElement] = (0, _react.useState)();
|
|
19
|
+
const [trigger, setTriggerElement] = (0, _react.useState)();
|
|
20
|
+
const [footer, setFooterElement] = (0, _react.useState)();
|
|
21
|
+
const [header, setHeaderElement] = (0, _react.useState)();
|
|
20
22
|
|
|
21
23
|
// SET UP REFS
|
|
22
|
-
const listRef = (0, _react.useRef)();
|
|
23
24
|
const triggerRef = (0, _react.useRef)();
|
|
24
25
|
const overlayRef = (0, _react.useRef)();
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
26
|
+
const listRef = (0, _react.useCallback)(node => setListElement(node), []);
|
|
27
|
+
const triggerComponentRef = (0, _react.useCallback)(node => setTriggerElement(node), []);
|
|
28
|
+
const footerRef = (0, _react.useCallback)(node => setFooterElement(node), []);
|
|
29
|
+
const headerRef = (0, _react.useCallback)(node => setHeaderElement(node), []);
|
|
30
|
+
(0, _react.useEffect)(() => {
|
|
31
|
+
const configs = [
|
|
32
|
+
// --- HEADER CONFIG ---
|
|
33
|
+
{
|
|
34
|
+
element: header,
|
|
35
|
+
allowTabThroughContents: true,
|
|
36
|
+
previousElement: trigger,
|
|
37
|
+
nextElement: (footer && (0, _components.getFirstFocusable)(footer)) ?? (0, _components.getNextFocusable)(trigger, false),
|
|
38
|
+
downElement: list && (0, _components.getFirstFocusable)(list),
|
|
39
|
+
upElement: list && (0, _components.getLastFocusable)(list)
|
|
40
|
+
},
|
|
41
|
+
// --- FOOTER CONFIG ---
|
|
42
|
+
{
|
|
43
|
+
element: footer,
|
|
44
|
+
allowTabThroughContents: true,
|
|
45
|
+
previousElement: (header && (0, _components.getLastFocusable)(header)) ?? trigger,
|
|
46
|
+
nextElement: (0, _components.getNextFocusable)(trigger, false),
|
|
47
|
+
downElement: list && (0, _components.getFirstFocusable)(list),
|
|
48
|
+
upElement: list && (0, _components.getLastFocusable)(list)
|
|
49
|
+
},
|
|
50
|
+
// --- LIST/CONTAINER CONFIG ---
|
|
51
|
+
{
|
|
52
|
+
element: list,
|
|
53
|
+
allowUpDownThroughContents: true,
|
|
54
|
+
previousElement: (header && (0, _components.getLastFocusable)(header)) ?? trigger,
|
|
55
|
+
nextElement: (footer && (0, _components.getFirstFocusable)(footer)) ?? (0, _components.getNextFocusable)(trigger, false)
|
|
56
|
+
},
|
|
57
|
+
// --- TRIGGER CONFIG ---
|
|
58
|
+
{
|
|
59
|
+
element: trigger,
|
|
60
|
+
nextElement: (header && (0, _components.getFirstFocusable)(header)) ?? (footer && (0, _components.getFirstFocusable)(footer)) ?? (0, _components.getNextFocusable)(trigger, false),
|
|
61
|
+
previousElement: (0, _components.getPreviousFocusable)(trigger, false),
|
|
62
|
+
downElement: list && (0, _components.getFirstFocusable)(list),
|
|
63
|
+
upElement: list && (0, _components.getLastFocusable)(list)
|
|
64
|
+
}].filter(c => c.element); // Filter out configs where the element (e.g., header) is null
|
|
28
65
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
66
|
+
const cleanups = [];
|
|
67
|
+
const setupListener = config => {
|
|
68
|
+
const handler = e => {
|
|
69
|
+
if (e.code === _eventCodes.TAB) {
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
if (config.allowTabThroughContents) {
|
|
72
|
+
const focusFunc = e.shiftKey ? _components.getPreviousFocusable : _components.getNextFocusable;
|
|
73
|
+
const elem = focusFunc(config.element, true, true, false, true);
|
|
74
|
+
if (elem) {
|
|
75
|
+
// Focus on next focusable element
|
|
76
|
+
elem.focus();
|
|
77
|
+
} else if (e.shiftKey) {
|
|
78
|
+
// We are at the beginning of the list moving backwards, focus on the previous element
|
|
79
|
+
config.previousElement.focus();
|
|
80
|
+
} else {
|
|
81
|
+
// We are at the end of the list, move onto next focusable element in page
|
|
82
|
+
config.nextElement.focus();
|
|
83
|
+
}
|
|
84
|
+
} else if (e.shiftKey) {
|
|
85
|
+
config.previousElement.focus();
|
|
86
|
+
} else {
|
|
87
|
+
config.nextElement.focus();
|
|
88
|
+
}
|
|
89
|
+
} else if (e.code === _eventCodes.DOWN_ARROW || e.code === _eventCodes.UP_ARROW) {
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
// Prevent the default behaviour
|
|
92
|
+
e.preventDefault();
|
|
93
|
+
if (config.allowUpDownThroughContents) {
|
|
94
|
+
const focusFunc = e.code === _eventCodes.UP_ARROW ? _components.getPreviousFocusable : _components.getNextFocusable;
|
|
95
|
+
const elem = focusFunc(config.element, true, true, true, true); // Allow looping through elements
|
|
96
|
+
if (elem) {
|
|
97
|
+
elem.focus();
|
|
98
|
+
}
|
|
99
|
+
} else if (e.code === _eventCodes.UP_ARROW) {
|
|
100
|
+
config.upElement.focus();
|
|
101
|
+
} else {
|
|
102
|
+
config.downElement.focus();
|
|
103
|
+
}
|
|
46
104
|
}
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
footer.setAttribute('hasListener', 'true');
|
|
50
|
-
}
|
|
105
|
+
};
|
|
51
106
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (elem) {
|
|
57
|
-
elem.focus();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (e.code === _eventCodes.DOWN_ARROW) {
|
|
61
|
-
const elem = (0, _components.getFirstFocusable)(listRef.current, true, true);
|
|
62
|
-
if (elem) {
|
|
63
|
-
elem.focus();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
107
|
+
// Add event listener and add the removal of said event listener to the cleanup function
|
|
108
|
+
config.element.addEventListener('keydown', handler);
|
|
109
|
+
cleanups.push(() => config.element.removeEventListener('keydown', handler));
|
|
110
|
+
};
|
|
66
111
|
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
if (e.code === _eventCodes.DOWN_ARROW) {
|
|
81
|
-
const elem = (0, _components.getNextFocusable)(listRef.current, true, true);
|
|
82
|
-
elem.focus();
|
|
83
|
-
}
|
|
84
|
-
if (e.code === _eventCodes.UP_ARROW) {
|
|
85
|
-
const elem = (0, _components.getPreviousFocusable)(listRef.current, true, true);
|
|
86
|
-
elem.focus();
|
|
87
|
-
}
|
|
88
|
-
if (e.code === _eventCodes.TAB) {
|
|
89
|
-
e.preventDefault();
|
|
90
|
-
let elem;
|
|
91
|
-
if (!e.shiftKey && !footerRef.current) {
|
|
92
|
-
elem = (0, _components.getNextFocusable)(searchFieldComponent, false);
|
|
93
|
-
} else if (!e.shiftKey) {
|
|
94
|
-
elem = (0, _components.getNextFocusable)(footerRef.current, true, true, true, true);
|
|
95
|
-
} else {
|
|
96
|
-
elem = searchFieldComponent;
|
|
97
|
-
}
|
|
98
|
-
elem.focus();
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
const handleNextFocus = () => (0, _components.getNextFocusable)(searchFieldComponent, false).focus();
|
|
112
|
+
// Setup the event listener for each config entry
|
|
113
|
+
configs.forEach(setupListener);
|
|
114
|
+
|
|
115
|
+
// Cleanup any event listeners
|
|
116
|
+
return () => {
|
|
117
|
+
cleanups.forEach(cleanup => cleanup());
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// Re-add the listener ANY time any of the elements changes (this is why we're using callback refs)
|
|
121
|
+
}, [header, trigger, footer, list]);
|
|
122
|
+
|
|
123
|
+
// TODO is this still necessary?
|
|
124
|
+
const handleNextFocus = () => (0, _components.getNextFocusable)(trigger, false).focus();
|
|
102
125
|
|
|
103
126
|
// SET UP VARIABLES
|
|
104
127
|
const {
|
|
@@ -127,13 +150,13 @@ const useTypedown = function (name) {
|
|
|
127
150
|
refs: {
|
|
128
151
|
listRef,
|
|
129
152
|
triggerRef,
|
|
153
|
+
triggerComponentRef,
|
|
130
154
|
overlayRef,
|
|
131
|
-
footerRef
|
|
155
|
+
footerRef,
|
|
156
|
+
headerRef
|
|
132
157
|
},
|
|
133
158
|
handlers: {
|
|
134
|
-
handleNextFocus
|
|
135
|
-
listKeyDownHandler,
|
|
136
|
-
searchFieldKeyDownHandler
|
|
159
|
+
handleNextFocus
|
|
137
160
|
},
|
|
138
161
|
variables: {
|
|
139
162
|
open: useOpen ? open : false,
|
package/package.json
CHANGED
|
@@ -358,7 +358,7 @@ export default ActionList;
|
|
|
358
358
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
359
359
|
Code coverage generated by
|
|
360
360
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
361
|
-
at 2025-12-
|
|
361
|
+
at 2025-12-12T16:39:50.848Z
|
|
362
362
|
</div>
|
|
363
363
|
<script src="../prettify.js"></script>
|
|
364
364
|
<script>
|
|
@@ -1495,7 +1495,7 @@ export default ActionListFieldArray;
|
|
|
1495
1495
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1496
1496
|
Code coverage generated by
|
|
1497
1497
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1498
|
-
at 2025-12-
|
|
1498
|
+
at 2025-12-12T16:39:50.848Z
|
|
1499
1499
|
</div>
|
|
1500
1500
|
<script src="../prettify.js"></script>
|
|
1501
1501
|
<script>
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
132
132
|
Code coverage generated by
|
|
133
133
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
134
|
-
at 2025-12-
|
|
134
|
+
at 2025-12-12T16:39:50.848Z
|
|
135
135
|
</div>
|
|
136
136
|
<script src="../prettify.js"></script>
|
|
137
137
|
<script>
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
74
74
|
Code coverage generated by
|
|
75
75
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
76
|
-
at 2025-12-
|
|
76
|
+
at 2025-12-12T16:39:50.848Z
|
|
77
77
|
</div>
|
|
78
78
|
<script src="../prettify.js"></script>
|
|
79
79
|
<script>
|