@axinom/mosaic-ui 0.69.0-rc.2 → 0.69.0-rc.21
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/dist/components/Buttons/Button/Button.d.ts +3 -3
- package/dist/components/Buttons/Button/Button.d.ts.map +1 -1
- package/dist/components/Buttons/Button.model.d.ts +2 -1
- package/dist/components/Buttons/Button.model.d.ts.map +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.models.d.ts +0 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.models.d.ts.map +1 -1
- package/dist/components/DateTime/TimePicker/ScrollColumn/ScrollColumn.d.ts +2 -2
- package/dist/components/DateTime/TimePicker/ScrollColumn/ScrollColumn.d.ts.map +1 -1
- package/dist/components/DynamicDataList/DynamicDataList.d.ts +1 -1
- package/dist/components/DynamicDataList/DynamicDataList.d.ts.map +1 -1
- package/dist/components/DynamicDataList/DynamicDataList.model.d.ts +0 -1
- package/dist/components/DynamicDataList/DynamicDataList.model.d.ts.map +1 -1
- package/dist/components/DynamicDataList/DynamicListDataEntry/DynamicListDataEntry.d.ts +2 -2
- package/dist/components/DynamicDataList/DynamicListDataEntry/DynamicListDataEntry.d.ts.map +1 -1
- package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/createInputRenderer/createInputRenderer.d.ts +1 -1
- package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/createInputRenderer/createInputRenderer.d.ts.map +1 -1
- package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/createSelectRenderer/createSelectRenderer.d.ts +1 -1
- package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/createSelectRenderer/createSelectRenderer.d.ts.map +1 -1
- package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/renderers.model.d.ts +2 -0
- package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/renderers.model.d.ts.map +1 -1
- package/dist/components/DynamicDataList/DynamicListHeader/DynamicListHeader.d.ts +2 -2
- package/dist/components/DynamicDataList/DynamicListHeader/DynamicListHeader.d.ts.map +1 -1
- package/dist/components/DynamicDataList/DynamicListRow/DynamicListRow.d.ts +2 -2
- package/dist/components/DynamicDataList/DynamicListRow/DynamicListRow.d.ts.map +1 -1
- package/dist/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.actions.d.ts +2 -2
- package/dist/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.actions.d.ts.map +1 -1
- package/dist/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.d.ts.map +1 -1
- package/dist/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.init.d.ts.map +1 -1
- package/dist/components/DynamicDataList/helpers/useColumnDefs.d.ts +1 -1
- package/dist/components/DynamicDataList/helpers/useColumnDefs.d.ts.map +1 -1
- package/dist/components/DynamicDataList/helpers/useDataHandler.d.ts +1 -1
- package/dist/components/DynamicDataList/helpers/useDataHandler.d.ts.map +1 -1
- package/dist/components/DynamicDataList/helpers/useRowAnimation.d.ts.map +1 -1
- package/dist/components/DynamicDataList/helpers/useRowEditing.d.ts.map +1 -1
- package/dist/components/EmptyStation/EmptyStation.d.ts.map +1 -1
- package/dist/components/Explorer/BulkEdit/FormFieldsConfigConverter.d.ts.map +1 -1
- package/dist/components/Explorer/BulkEdit/GenerateMutation.d.ts.map +1 -1
- package/dist/components/Explorer/BulkEdit/helpers/FieldWrapper.d.ts.map +1 -1
- package/dist/components/Explorer/BulkEdit/useBulkEdit.d.ts.map +1 -1
- package/dist/components/Explorer/Explorer.d.ts +1 -1
- package/dist/components/Explorer/Explorer.d.ts.map +1 -1
- package/dist/components/Explorer/Explorer.model.d.ts +0 -1
- package/dist/components/Explorer/Explorer.model.d.ts.map +1 -1
- package/dist/components/Explorer/NavigationExplorer/NavigationExplorer.d.ts +1 -1
- package/dist/components/Explorer/NavigationExplorer/NavigationExplorer.d.ts.map +1 -1
- package/dist/components/Explorer/QuickEdit/useQuickEdit.d.ts.map +1 -1
- package/dist/components/Explorer/SelectionExplorer/SelectionExplorer.d.ts +1 -1
- package/dist/components/Explorer/SelectionExplorer/SelectionExplorer.d.ts.map +1 -1
- package/dist/components/Explorer/helpers/useActions.d.ts +0 -1
- package/dist/components/Explorer/helpers/useActions.d.ts.map +1 -1
- package/dist/components/Explorer/helpers/useDataProvider.d.ts +0 -1
- package/dist/components/Explorer/helpers/useDataProvider.d.ts.map +1 -1
- package/dist/components/Explorer/helpers/useFilters.d.ts +0 -1
- package/dist/components/Explorer/helpers/useFilters.d.ts.map +1 -1
- package/dist/components/FieldSelection/FieldSelection.d.ts +1 -0
- package/dist/components/FieldSelection/FieldSelection.d.ts.map +1 -1
- package/dist/components/Filters/Filter/Filter.d.ts +2 -2
- package/dist/components/Filters/Filter/Filter.d.ts.map +1 -1
- package/dist/components/Filters/Filters.d.ts +2 -2
- package/dist/components/Filters/Filters.d.ts.map +1 -1
- package/dist/components/Filters/Filters.model.d.ts +0 -1
- package/dist/components/Filters/Filters.model.d.ts.map +1 -1
- package/dist/components/Filters/Validators/DateRangeFilterValidator.d.ts.map +1 -1
- package/dist/components/Filters/Validators/NumberRangeFilterValidator.d.ts.map +1 -1
- package/dist/components/FormElements/DynamicDataListControl/DynamicDataListControl.d.ts +0 -1
- package/dist/components/FormElements/DynamicDataListControl/DynamicDataListControl.d.ts.map +1 -1
- package/dist/components/FormElements/DynamicDataListControl/DynamicDataListField.d.ts +2 -2
- package/dist/components/FormElements/DynamicDataListControl/DynamicDataListField.d.ts.map +1 -1
- package/dist/components/FormElements/FormGroup/FormGroup.d.ts +12 -0
- package/dist/components/FormElements/FormGroup/FormGroup.d.ts.map +1 -0
- package/dist/components/FormElements/FormGroupTitle/FormGroupTitle.d.ts +5 -0
- package/dist/components/FormElements/FormGroupTitle/FormGroupTitle.d.ts.map +1 -1
- package/dist/components/FormElements/FormikDebug/FormikDebug.d.ts +0 -1
- package/dist/components/FormElements/FormikDebug/FormikDebug.d.ts.map +1 -1
- package/dist/components/FormElements/ReadOnly/ReadOnlyField.d.ts +2 -2
- package/dist/components/FormElements/ReadOnly/ReadOnlyField.d.ts.map +1 -1
- package/dist/components/FormElements/ReadOnlyText/ReadOnlyTextField.d.ts +2 -2
- package/dist/components/FormElements/ReadOnlyText/ReadOnlyTextField.d.ts.map +1 -1
- package/dist/components/FormElements/Tags/Tags.d.ts +2 -2
- package/dist/components/FormElements/Tags/Tags.d.ts.map +1 -1
- package/dist/components/FormElements/Tags/TagsField.d.ts +2 -2
- package/dist/components/FormElements/Tags/TagsField.d.ts.map +1 -1
- package/dist/components/FormElements/formStoryHelper.d.ts.map +1 -1
- package/dist/components/FormElements/index.d.ts +1 -0
- package/dist/components/FormElements/index.d.ts.map +1 -1
- package/dist/components/FormElements/useFormikError.d.ts.map +1 -1
- package/dist/components/FormStation/Create/Create.d.ts +2 -2
- package/dist/components/FormStation/Create/Create.d.ts.map +1 -1
- package/dist/components/FormStation/Details/Details.d.ts +2 -2
- package/dist/components/FormStation/Details/Details.d.ts.map +1 -1
- package/dist/components/FormStation/FormStation.d.ts +2 -2
- package/dist/components/FormStation/FormStation.d.ts.map +1 -1
- package/dist/components/FormStation/FormStationActions/FormStationActions.d.ts +1 -1
- package/dist/components/FormStation/FormStationActions/FormStationActions.d.ts.map +1 -1
- package/dist/components/FormStation/FormStationHeader/FormStationHeader.d.ts.map +1 -1
- package/dist/components/FormStation/SaveOnDemand/SaveOnDemand.d.ts +0 -1
- package/dist/components/FormStation/SaveOnDemand/SaveOnDemand.d.ts.map +1 -1
- package/dist/components/FormStation/SaveOnNavigate/handleNavigationAttempt.d.ts.map +1 -1
- package/dist/components/FormStation/helpers/useTitle.d.ts.map +1 -1
- package/dist/components/InfoPanel/hooks/useCollapse.d.ts +0 -1
- package/dist/components/InfoPanel/hooks/useCollapse.d.ts.map +1 -1
- package/dist/components/InlineMenu/InlineMenu.d.ts.map +1 -1
- package/dist/components/List/List.d.ts +2 -2
- package/dist/components/List/List.d.ts.map +1 -1
- package/dist/components/List/List.model.d.ts +0 -1
- package/dist/components/List/List.model.d.ts.map +1 -1
- package/dist/components/List/List.stories.helper.d.ts.map +1 -1
- package/dist/components/List/ListHeader/ColumnLabel/ColumnLabel.d.ts +2 -2
- package/dist/components/List/ListHeader/ColumnLabel/ColumnLabel.d.ts.map +1 -1
- package/dist/components/List/ListHeader/ListHeader.d.ts +2 -2
- package/dist/components/List/ListHeader/ListHeader.d.ts.map +1 -1
- package/dist/components/List/ListRow/ListRow.d.ts +2 -4
- package/dist/components/List/ListRow/ListRow.d.ts.map +1 -1
- package/dist/components/List/ListRow/ListRowCell/ListRowCell.d.ts +0 -1
- package/dist/components/List/ListRow/ListRowCell/ListRowCell.d.ts.map +1 -1
- package/dist/components/List/ListRow/ListRowCell/renderData.d.ts.map +1 -1
- package/dist/components/List/ListRow/ListRowLoader.d.ts +2 -2
- package/dist/components/List/ListRow/ListRowLoader.d.ts.map +1 -1
- package/dist/components/List/ListRow/Renderers/BooleanDotRenderer/BooleanDotRenderer.d.ts +0 -1
- package/dist/components/List/ListRow/Renderers/BooleanDotRenderer/BooleanDotRenderer.d.ts.map +1 -1
- package/dist/components/List/ListRow/Renderers/DateRenderer/DateRenderer.d.ts.map +1 -1
- package/dist/components/List/ListRow/Renderers/ExternalLinkRenderer/ExternalLinkRenderer.d.ts.map +1 -1
- package/dist/components/List/ListRow/Renderers/StateRenderer/StateRenderer.d.ts +1 -1
- package/dist/components/List/ListRow/Renderers/StateRenderer/StateRenderer.d.ts.map +1 -1
- package/dist/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.d.ts +0 -1
- package/dist/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.d.ts.map +1 -1
- package/dist/components/List/ListRow/Renderers/TimestampRenderer/TimestampRenderer.d.ts.map +1 -1
- package/dist/components/List/ListRowRenderer/ListRowRenderer.d.ts.map +1 -1
- package/dist/components/List/helpers.d.ts.map +1 -1
- package/dist/components/List/useColumnsSize.d.ts +0 -2
- package/dist/components/List/useColumnsSize.d.ts.map +1 -1
- package/dist/components/Loaders/skeletons.d.ts +0 -1
- package/dist/components/Loaders/skeletons.d.ts.map +1 -1
- package/dist/components/Modal/useModal.d.ts.map +1 -1
- package/dist/components/PageHeader/PageHeaderActionsGroup/PageHeaderActionsGroupsContext.d.ts +0 -1
- package/dist/components/PageHeader/PageHeaderActionsGroup/PageHeaderActionsGroupsContext.d.ts.map +1 -1
- package/dist/components/PageHeader/helpers/useElementWidthObserver.d.ts +1 -2
- package/dist/components/PageHeader/helpers/useElementWidthObserver.d.ts.map +1 -1
- package/dist/components/Tabs/TabList/ScrollContainer/useScroll.d.ts.map +1 -1
- package/dist/components/Utils/Postgraphile/FilterTransformer.d.ts.map +1 -1
- package/dist/components/Utils/Postgraphile/SortTransformer.d.ts.map +1 -1
- package/dist/components/Utils/State/GlobalState.d.ts.map +1 -1
- package/dist/helpers/idleCallbackHelpers.d.ts +0 -1
- package/dist/helpers/idleCallbackHelpers.d.ts.map +1 -1
- package/dist/helpers/storybook.d.ts.map +1 -1
- package/dist/helpers/testing.d.ts +6 -21
- package/dist/helpers/testing.d.ts.map +1 -1
- package/dist/helpers/utils.d.ts +1 -2
- package/dist/helpers/utils.d.ts.map +1 -1
- package/dist/hooks/useDEBUGDetectChanges/useDEBUGDetectChanges.d.ts.map +1 -1
- package/dist/hooks/useDEBUGRenderCount/useDEBUGRenderCount.d.ts.map +1 -1
- package/dist/hooks/useDebounce/useDebounce.d.ts +1 -2
- package/dist/hooks/useDebounce/useDebounce.d.ts.map +1 -1
- package/dist/hooks/useExpand/useExpand.d.ts.map +1 -1
- package/dist/hooks/useReactRouterPause/utils.d.ts.map +1 -1
- package/dist/hooks/useResize/useResize.d.ts +0 -1
- package/dist/hooks/useResize/useResize.d.ts.map +1 -1
- package/dist/hooks/useTabTitle/useTabTitle.d.ts.map +1 -1
- package/dist/hooks/useValueOrOnDemand/useValueOrOnDemand.d.ts +1 -1
- package/dist/hooks/useValueOrOnDemand/useValueOrOnDemand.d.ts.map +1 -1
- package/dist/index.es.js +4 -4
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/utils/ErrorMapper/ErrorMapper.d.ts.map +1 -1
- package/dist/utils/ErrorTypeToStationError.d.ts.map +1 -1
- package/dist/utils/ToolTipHelpers.d.ts.map +1 -1
- package/dist/validators/timestamp/timestamp.d.ts.map +1 -1
- package/package.json +11 -10
- package/src/components/Accordion/Accordion.spec.tsx +1 -1
- package/src/components/Accordion/AccordionItem/AccordionItem.spec.tsx +2 -2
- package/src/components/Actions/Action/Action.spec.tsx +189 -228
- package/src/components/Actions/Actions.spec.tsx +42 -32
- package/src/components/Buttons/Button/Button.spec.tsx +110 -115
- package/src/components/Buttons/Button/Button.tsx +4 -0
- package/src/components/Buttons/Button.model.ts +2 -0
- package/src/components/Buttons/CompositeButton/CompositeButton.spec.tsx +122 -121
- package/src/components/Buttons/TextButton/TextButton.spec.tsx +85 -90
- package/src/components/ConfirmDialog/ConfirmDialog.spec.tsx +75 -79
- package/src/components/DateTime/DatePicker/DatePicker.spec.tsx +8 -7
- package/src/components/DateTime/DateTimePicker.spec.tsx +43 -62
- package/src/components/DateTime/TimePicker/ScrollColumn/ScrollColumn.spec.tsx +19 -16
- package/src/components/DateTime/TimePicker/TimePicker.spec.tsx +44 -73
- package/src/components/DynamicDataList/DynamicDataList.spec.tsx +112 -107
- package/src/components/DynamicDataList/DynamicListDataEntry/DynamicListDataEntry.spec.tsx +91 -144
- package/src/components/DynamicDataList/DynamicListDataEntry/DynamicListDataEntry.tsx +38 -20
- package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/createInputRenderer/createInputRenderer.spec.tsx +18 -15
- package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/createInputRenderer/createInputRenderer.tsx +2 -0
- package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/createSelectRenderer/createSelectRenderer.spec.tsx +53 -28
- package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/createSelectRenderer/createSelectRenderer.tsx +2 -0
- package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/renderers.model.ts +2 -0
- package/src/components/DynamicDataList/DynamicListHeader/DynamicListHeader.scss +19 -5
- package/src/components/DynamicDataList/DynamicListHeader/DynamicListHeader.spec.tsx +72 -76
- package/src/components/DynamicDataList/DynamicListRow/DynamicListRow.scss +9 -2
- package/src/components/DynamicDataList/DynamicListRow/DynamicListRow.spec.tsx +86 -113
- package/src/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.actions.spec.ts +1 -0
- package/src/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.init.spec.ts +1 -0
- package/src/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.spec.ts +6 -5
- package/src/components/EmptyStation/EmptyStation.spec.tsx +41 -37
- package/src/components/Explorer/BulkEdit/FormFieldsConfigConverter.spec.tsx +29 -28
- package/src/components/Explorer/BulkEdit/FormFieldsConfigConverter.tsx +1 -0
- package/src/components/Explorer/BulkEdit/GenerateMutation.spec.tsx +1 -0
- package/src/components/Explorer/BulkEdit/helpers/FieldWrapper.scss +1 -0
- package/src/components/Explorer/BulkEdit/helpers/FieldWrapper.tsx +1 -0
- package/src/components/Explorer/Explorer.spec.tsx +513 -825
- package/src/components/Explorer/NavigationExplorer/NavigationExplorer.spec.tsx +90 -131
- package/src/components/Explorer/QuickEdit/useQuickEdit.spec.tsx +36 -56
- package/src/components/Explorer/SelectionExplorer/SelectionExplorer.spec.tsx +59 -65
- package/src/components/Explorer/helpers/InMemoryDataProvider.spec.ts +1 -0
- package/src/components/Explorer/helpers/useFilters.spec.tsx +13 -11
- package/src/components/Explorer/helpers/useStationMessage.spec.tsx +4 -3
- package/src/components/Explorer/helpers/useSubtitle.spec.tsx +1 -0
- package/src/components/FieldSelection/FieldSelection.scss +1 -1
- package/src/components/FieldSelection/FieldSelection.spec.tsx +1 -1
- package/src/components/FieldSelection/FieldSelection.tsx +6 -2
- package/src/components/Filters/Filter/Filter.spec.tsx +78 -47
- package/src/components/Filters/Filters.spec.tsx +56 -58
- package/src/components/Filters/SelectionTypes/DateTimeFilter/DateTimeFilter.spec.tsx +45 -46
- package/src/components/Filters/SelectionTypes/FreeTextFilter/FreeTextFilter.spec.tsx +23 -23
- package/src/components/Filters/SelectionTypes/NumericTextFilter/NumericTextFilter.spec.tsx +37 -28
- package/src/components/Filters/SelectionTypes/OptionsFilter/OptionsFilter.spec.tsx +14 -12
- package/src/components/Filters/Validators/DateRangeFilterValidator.spec.ts +1 -0
- package/src/components/Filters/Validators/NumberRangeFilterValidator.spec.ts +1 -0
- package/src/components/FormElements/BooleanView/BooleanViewField.spec.tsx +34 -31
- package/src/components/FormElements/Checkbox/Checkbox.spec.tsx +129 -128
- package/src/components/FormElements/CustomTags/CustomTags.spec.tsx +312 -446
- package/src/components/FormElements/DateTimeField/DateTimeText.spec.tsx +61 -52
- package/src/components/FormElements/DynamicDataListControl/DynamicDataListControl.spec.tsx +19 -24
- package/src/components/FormElements/FileUploadControl/FileUploadControl.spec.tsx +67 -60
- package/src/components/FormElements/FormElementContainer/FormElementContainer.spec.tsx +13 -12
- package/src/components/FormElements/FormGroup/FormGroup.scss +62 -0
- package/src/components/FormElements/FormGroup/FormGroup.stories.tsx +25 -0
- package/src/components/FormElements/FormGroup/FormGroup.tsx +60 -0
- package/src/components/FormElements/FormGroupTitle/FormGroupTitle.tsx +5 -0
- package/src/components/FormElements/Link/LinkField.spec.tsx +24 -23
- package/src/components/FormElements/MaskedSingleLineText/MaskedSingleLineText.spec.tsx +4 -3
- package/src/components/FormElements/Radio/Radio.spec.tsx +170 -172
- package/src/components/FormElements/ReadOnly/ReadOnlyField.spec.tsx +23 -22
- package/src/components/FormElements/ReadOnlyText/ReadOnlyTextField.spec.tsx +23 -22
- package/src/components/FormElements/Select/Select.spec.tsx +30 -29
- package/src/components/FormElements/SingleLineText/SingleLineText.spec.tsx +46 -42
- package/src/components/FormElements/Tags/Tags.spec.tsx +59 -53
- package/src/components/FormElements/TextArea/TextArea.spec.tsx +44 -29
- package/src/components/FormElements/ToggleButton/ToggleButton.spec.tsx +188 -165
- package/src/components/FormElements/index.ts +1 -0
- package/src/components/FormStation/FormStation.spec.tsx +273 -198
- package/src/components/FormStation/FormStation.stories.tsx +15 -13
- package/src/components/FormStation/FormStationHeader/FormStationHeader.tsx +5 -3
- package/src/components/FormStation/SaveOnNavigate/SaveOnNavigate.spec.tsx +23 -20
- package/src/components/FormStation/SaveOnNavigate/handleNavigationAttempt.spec.ts +25 -24
- package/src/components/FormStation/helpers/useTitle.spec.ts +9 -7
- package/src/components/Hub/Hub.spec.tsx +13 -10
- package/src/components/Hub/Tile/Tile.spec.tsx +29 -25
- package/src/components/Icons/Icons.spec.tsx +25 -27
- package/src/components/Icons/Icons.tsx +1 -1
- package/src/components/InfoPanel/InfoImage/InfoImage.spec.tsx +4 -3
- package/src/components/InfoPanel/InfoPanel.scss +2 -0
- package/src/components/InfoPanel/InfoPanel.spec.tsx +4 -3
- package/src/components/InfoPanel/Paragraph/Paragraph.spec.tsx +4 -3
- package/src/components/InfoPanel/Section/Section.spec.tsx +39 -46
- package/src/components/InfoPanel/hooks/useCollapse.ts +9 -7
- package/src/components/InlineMenu/InlineMenu.spec.tsx +24 -23
- package/src/components/InlineMenu/InlineMenu.tsx +3 -0
- package/src/components/LandingPageHeader/LandingPageHeader.spec.tsx +9 -8
- package/src/components/LandingPageTiles/LandingPageTiles.spec.tsx +29 -28
- package/src/components/LandingPageTiles/TileLarge/TileLarge.spec.tsx +68 -61
- package/src/components/LandingPageTiles/TileSmall/TileSmall.spec.tsx +50 -32
- package/src/components/List/List.spec.tsx +337 -241
- package/src/components/List/ListCheckBox/ListCheckBox.spec.tsx +54 -48
- package/src/components/List/ListHeader/ColumnLabel/ColumnLabel.scss +4 -1
- package/src/components/List/ListHeader/ColumnLabel/ColumnLabel.spec.tsx +46 -43
- package/src/components/List/ListHeader/ListHeader.spec.tsx +82 -66
- package/src/components/List/ListRow/ListRow.spec.tsx +125 -130
- package/src/components/List/ListRow/ListRowCell/ListRowCell.spec.tsx +57 -100
- package/src/components/List/ListRow/ListRowLoader.spec.tsx +16 -12
- package/src/components/List/ListRow/Renderers/BooleanDotRenderer/BooleanDotRenderer.spec.tsx +12 -9
- package/src/components/List/ListRow/Renderers/ExternalLinkRenderer/ExternalLinkRenderer.spec.tsx +40 -35
- package/src/components/List/ListRow/Renderers/StateRenderer/StateRenderer.spec.tsx +14 -17
- package/src/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.spec.tsx +18 -17
- package/src/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.tsx +2 -2
- package/src/components/List/ListRowRenderer/ListRowRenderer.spec.tsx +82 -68
- package/src/components/Loaders/ImageLoader/ImageLoader.spec.tsx +88 -96
- package/src/components/Loaders/Loader/Loader.spec.tsx +51 -24
- package/src/components/Message/Message.spec.tsx +56 -44
- package/src/components/MessageBar/MessageBar.scss +3 -0
- package/src/components/MessageBar/MessageBar.spec.tsx +88 -85
- package/src/components/Modal/Modal.spec.tsx +92 -87
- package/src/components/NavigationAwareStation/NavigationAwareStation.spec.tsx +23 -22
- package/src/components/PageHeader/PageHeader.spec.tsx +22 -21
- package/src/components/PageHeader/PageHeaderAction/PageHeaderAction.spec.tsx +275 -193
- package/src/components/PageHeader/PageHeaderActionsGroup/PageHeaderActionsGroup.spec.tsx +39 -34
- package/src/components/ProgressBar/ProgressBar.spec.tsx +18 -15
- package/src/components/Utils/Postgraphile/CreateConnectionRenderer.spec.ts +1 -0
- package/src/components/Utils/Postgraphile/FilterTransformer.spec.ts +1 -0
- package/src/components/Utils/Postgraphile/RangeTransformer.spec.ts +1 -0
- package/src/components/Utils/Postgraphile/SortTransformer.spec.ts +1 -0
- package/src/components/Utils/Postgraphile/UpdateGQLFragmentGenerator.spec.ts +1 -0
- package/src/components/Utils/Postgraphile/generateArrayMutations.spec.ts +1 -0
- package/src/components/Utils/Postgraphile/getArrayDiff.spec.ts +1 -0
- package/src/components/Utils/Postgraphile/getFormDiff.spec.ts +1 -0
- package/src/components/Utils/State/GlobalState.spec.ts +4 -2
- package/src/components/Utils/Transformers/Boolean.spec.ts +1 -0
- package/src/components/Utils/Transformers/DateTime.spec.ts +2 -1
- package/src/components/Utils/Transformers/FileSize.spec.ts +1 -0
- package/src/components/Utils/Transformers/SortArray.spec.ts +1 -0
- package/src/components/Utils/Transformers/Timestamp.spec.ts +3 -2
- package/src/components/Utils/Transformers/TitleCase.spec.ts +1 -0
- package/src/components/VisualElements/ImgElement.spec.tsx +34 -35
- package/src/components/VisualElements/SvgElement.spec.tsx +72 -69
- package/src/helpers/testing.ts +9 -76
- package/src/hooks/useBusy/useBusy.spec.tsx +8 -9
- package/src/hooks/useClickOutside/useClickOutside.spec.tsx +19 -51
- package/src/hooks/useDebounce/useDebounce.spec.tsx +31 -26
- package/src/hooks/useExpand/useExpand.spec.tsx +30 -21
- package/src/hooks/useTabTitle/useTabTitle.spec.tsx +18 -18
- package/src/hooks/useValueOrOnDemand/useValueOrOnDemand.spec.tsx +31 -52
- package/src/styles/variables.scss +3 -1
- package/src/utils/ErrorMapper/ApolloClient/ApolloErrorMapper.spec.ts +1 -0
- package/src/utils/ErrorMapper/ErrorMapper.spec.ts +1 -0
- package/src/utils/ErrorTypeToStationError.spec.tsx +12 -11
- package/src/utils/ToolTipHelpers.spec.ts +1 -0
- package/src/validators/timestamp/timestamp.spec.ts +1 -0
- package/dist/helpers/hooksTestingHelpers.d.ts +0 -7
- package/dist/helpers/hooksTestingHelpers.d.ts.map +0 -1
- package/src/helpers/hooksTestingHelpers.tsx +0 -22
|
@@ -1,66 +1,67 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render } from '@testing-library/react';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
3
4
|
import { ReadOnlyTextField } from './ReadOnlyTextField';
|
|
4
5
|
|
|
5
6
|
describe('ReadOnlyTextField', () => {
|
|
6
7
|
it('renders the component without crashing', () => {
|
|
7
|
-
const
|
|
8
|
+
const { container } = render(<ReadOnlyTextField />);
|
|
8
9
|
|
|
9
|
-
expect(
|
|
10
|
+
expect(container).toBeTruthy();
|
|
10
11
|
});
|
|
11
12
|
|
|
12
13
|
it('displays a label', () => {
|
|
13
14
|
const mockLabel = 'mockLabel';
|
|
14
|
-
const
|
|
15
|
+
const { container } = render(<ReadOnlyTextField label={mockLabel} />);
|
|
15
16
|
|
|
16
|
-
const label =
|
|
17
|
+
const label = container.querySelector('label');
|
|
17
18
|
|
|
18
|
-
expect(label
|
|
19
|
+
expect(label?.textContent).toBe(mockLabel);
|
|
19
20
|
});
|
|
20
21
|
|
|
21
22
|
it('renders a string value', () => {
|
|
22
23
|
const mockValue = 'mockLabel';
|
|
23
|
-
const
|
|
24
|
+
const { container } = render(<ReadOnlyTextField value={mockValue} />);
|
|
24
25
|
|
|
25
|
-
const input =
|
|
26
|
+
const input = container.querySelector('input') as HTMLInputElement;
|
|
26
27
|
|
|
27
|
-
expect(input.
|
|
28
|
+
expect(input.value).toBe(mockValue);
|
|
28
29
|
});
|
|
29
30
|
|
|
30
31
|
it('renders a numeric value', () => {
|
|
31
32
|
const mockValue = 3;
|
|
32
|
-
const
|
|
33
|
+
const { container } = render(<ReadOnlyTextField value={mockValue} />);
|
|
33
34
|
|
|
34
|
-
const input =
|
|
35
|
+
const input = container.querySelector('input') as HTMLInputElement;
|
|
35
36
|
|
|
36
|
-
expect(input.
|
|
37
|
+
expect(input.value).toBe(String(mockValue));
|
|
37
38
|
});
|
|
38
39
|
|
|
39
40
|
it('renders an array of values', () => {
|
|
40
41
|
const mockValue = ['de', 'en', 'ja', 'fr'];
|
|
41
|
-
const
|
|
42
|
+
const { container } = render(<ReadOnlyTextField value={mockValue} />);
|
|
42
43
|
|
|
43
|
-
const input =
|
|
44
|
+
const input = container.querySelector('input') as HTMLInputElement;
|
|
44
45
|
|
|
45
|
-
expect(input.
|
|
46
|
+
expect(input.value).toBe('de, en, ja, fr');
|
|
46
47
|
});
|
|
47
48
|
|
|
48
49
|
it('defaults to empty strings for label and value', () => {
|
|
49
50
|
const mockDefaults = '';
|
|
50
|
-
const
|
|
51
|
+
const { container } = render(<ReadOnlyTextField />);
|
|
51
52
|
|
|
52
|
-
const label =
|
|
53
|
-
const input =
|
|
53
|
+
const label = container.querySelector('label');
|
|
54
|
+
const input = container.querySelector('input') as HTMLInputElement;
|
|
54
55
|
|
|
55
|
-
expect(label
|
|
56
|
-
expect(input.
|
|
56
|
+
expect(label?.textContent).toBe(mockDefaults);
|
|
57
|
+
expect(input.value).toBe(mockDefaults);
|
|
57
58
|
});
|
|
58
59
|
|
|
59
60
|
it('triggers transform functions once per render', () => {
|
|
60
|
-
const spy =
|
|
61
|
+
const spy = vi.fn();
|
|
61
62
|
const mockValue = 3;
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
render(<ReadOnlyTextField value={mockValue} transform={spy} />);
|
|
64
65
|
|
|
65
66
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
66
67
|
expect(spy).toHaveBeenCalledWith(3);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fireEvent, render } from '@testing-library/react';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
3
4
|
import { Select } from './Select';
|
|
4
5
|
|
|
5
6
|
const mockLabel = 'mockLabel';
|
|
@@ -20,52 +21,50 @@ const mockOptions = [
|
|
|
20
21
|
];
|
|
21
22
|
|
|
22
23
|
describe('Select', () => {
|
|
23
|
-
afterEach(() => {
|
|
24
|
-
document.body.innerHTML = '';
|
|
25
|
-
});
|
|
26
|
-
|
|
27
24
|
it('renders the component without crashing', () => {
|
|
28
|
-
const
|
|
25
|
+
const { container } = render(<Select name="test-name" options={[]} />);
|
|
29
26
|
|
|
30
|
-
expect(
|
|
27
|
+
expect(container).toBeTruthy();
|
|
31
28
|
});
|
|
32
29
|
|
|
33
30
|
it('displays a label', () => {
|
|
34
|
-
const
|
|
31
|
+
const { container } = render(
|
|
35
32
|
<Select name="test-name" label={mockLabel} options={[]} />,
|
|
36
33
|
);
|
|
37
34
|
|
|
38
|
-
const label =
|
|
35
|
+
const label = container.querySelector('[data-test-id="form-field-label"]');
|
|
39
36
|
|
|
40
|
-
expect(label
|
|
37
|
+
expect(label?.textContent).toBe(mockLabel);
|
|
41
38
|
});
|
|
42
39
|
|
|
43
40
|
it('the given value must be filled in input', () => {
|
|
44
|
-
const
|
|
41
|
+
const { container } = render(
|
|
45
42
|
<Select name={'test-name'} options={mockOptions} value="2" />,
|
|
46
43
|
);
|
|
47
44
|
|
|
48
|
-
const input =
|
|
45
|
+
const input = container.querySelector(
|
|
46
|
+
'[role="combobox"]',
|
|
47
|
+
) as HTMLInputElement;
|
|
49
48
|
|
|
50
|
-
expect(input.
|
|
49
|
+
expect(input.value).toEqual(mockOptions[1].label);
|
|
51
50
|
});
|
|
52
51
|
|
|
53
52
|
it('the popper must be rendered on input click', () => {
|
|
54
|
-
const
|
|
53
|
+
const { container } = render(
|
|
55
54
|
<Select name={'test-name'} options={mockOptions} value="2" />,
|
|
56
55
|
);
|
|
57
|
-
const input =
|
|
58
|
-
|
|
56
|
+
const input = container.querySelector('[role="combobox"]') as HTMLElement;
|
|
57
|
+
fireEvent.mouseDown(input);
|
|
59
58
|
|
|
60
59
|
const popper = document.querySelector('[role="tooltip"]');
|
|
61
60
|
expect(popper).not.toBeNull();
|
|
62
61
|
});
|
|
63
62
|
|
|
64
63
|
it('raises change, blur, and focus events', () => {
|
|
65
|
-
const changeSpy =
|
|
66
|
-
const blurSpy =
|
|
67
|
-
const focusSpy =
|
|
68
|
-
const
|
|
64
|
+
const changeSpy = vi.fn();
|
|
65
|
+
const blurSpy = vi.fn();
|
|
66
|
+
const focusSpy = vi.fn();
|
|
67
|
+
const { container } = render(
|
|
69
68
|
<Select
|
|
70
69
|
name={'test-name'}
|
|
71
70
|
onChange={changeSpy}
|
|
@@ -75,30 +74,32 @@ describe('Select', () => {
|
|
|
75
74
|
/>,
|
|
76
75
|
);
|
|
77
76
|
|
|
78
|
-
const input =
|
|
79
|
-
|
|
77
|
+
const input = container.querySelector('[role="combobox"]') as HTMLElement;
|
|
78
|
+
fireEvent.mouseDown(input);
|
|
80
79
|
const firstOption = document.querySelector('[role="option"]');
|
|
81
80
|
firstOption?.dispatchEvent(new Event('click', { bubbles: true }));
|
|
82
81
|
|
|
83
82
|
expect(changeSpy).toHaveBeenCalledTimes(1);
|
|
84
83
|
|
|
85
|
-
|
|
84
|
+
fireEvent.blur(input);
|
|
86
85
|
expect(blurSpy).toHaveBeenCalledTimes(1);
|
|
87
86
|
|
|
88
|
-
|
|
87
|
+
fireEvent.focus(input);
|
|
89
88
|
expect(focusSpy).toHaveBeenCalledTimes(1);
|
|
90
89
|
});
|
|
91
90
|
|
|
92
91
|
it('applies error styling and renders error message when an error is passed', () => {
|
|
93
92
|
const mockErrorMessage = 'test-error-message';
|
|
94
|
-
const
|
|
93
|
+
const { container } = render(
|
|
95
94
|
<Select name={'test-name'} error={mockErrorMessage} options={[]} />,
|
|
96
95
|
);
|
|
97
96
|
|
|
98
|
-
const errorMsg =
|
|
99
|
-
|
|
97
|
+
const errorMsg = container.querySelector(
|
|
98
|
+
'[data-test-id="form-field-error"]',
|
|
99
|
+
);
|
|
100
|
+
const input = container.querySelector('[role="combobox"]');
|
|
100
101
|
|
|
101
|
-
expect(errorMsg
|
|
102
|
-
expect(input.
|
|
102
|
+
expect(errorMsg?.textContent).toBe(mockErrorMessage);
|
|
103
|
+
expect(input?.classList.contains('hasError')).toBe(true);
|
|
103
104
|
});
|
|
104
105
|
});
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fireEvent, render } from '@testing-library/react';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
3
4
|
import { SingleLineText } from './SingleLineText';
|
|
4
5
|
|
|
5
6
|
describe('SingleLineText', () => {
|
|
6
7
|
it('renders the component without crashing', () => {
|
|
7
|
-
const
|
|
8
|
+
const { container } = render(<SingleLineText name={'test-name'} />);
|
|
8
9
|
|
|
9
|
-
expect(
|
|
10
|
+
expect(container).toBeTruthy();
|
|
10
11
|
});
|
|
11
12
|
|
|
12
13
|
it('displays a label', () => {
|
|
13
14
|
const mockLabel = 'mockLabel';
|
|
14
|
-
const
|
|
15
|
+
const { container } = render(
|
|
15
16
|
<SingleLineText name={'test-name'} label={mockLabel} />,
|
|
16
17
|
);
|
|
17
18
|
|
|
18
|
-
const label =
|
|
19
|
+
const label = container.querySelector('label');
|
|
19
20
|
|
|
20
|
-
expect(label
|
|
21
|
+
expect(label?.textContent).toBe(mockLabel);
|
|
21
22
|
});
|
|
22
23
|
|
|
23
24
|
it('sets input field using the value prop and emits updated values', () => {
|
|
24
|
-
const spy =
|
|
25
|
+
const spy = vi.fn();
|
|
25
26
|
const mockValue = 'test-value';
|
|
26
27
|
const mockValueUpdated = 'updated-test-value';
|
|
27
|
-
const
|
|
28
|
+
const { container } = render(
|
|
28
29
|
<SingleLineText name={'test-name'} value={mockValue} onChange={spy} />,
|
|
29
30
|
);
|
|
30
31
|
|
|
31
|
-
const input =
|
|
32
|
+
const input = container.querySelector('input') as HTMLInputElement;
|
|
32
33
|
|
|
33
|
-
expect(input.
|
|
34
|
+
expect(input.value).toEqual(mockValue);
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
fireEvent.change(input, { target: { value: mockValueUpdated } });
|
|
36
37
|
|
|
37
38
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
);
|
|
39
|
+
const callArg = spy.mock.calls[0][0];
|
|
40
|
+
expect(callArg.target.value).toBe(mockValueUpdated);
|
|
41
41
|
});
|
|
42
42
|
|
|
43
43
|
it('uses optional props when passed in', () => {
|
|
@@ -52,21 +52,27 @@ describe('SingleLineText', () => {
|
|
|
52
52
|
type: 'number',
|
|
53
53
|
} as Record<string, unknown>;
|
|
54
54
|
|
|
55
|
-
const
|
|
55
|
+
const { container } = render(
|
|
56
56
|
<SingleLineText name={'test-name'} {...mockProps} />,
|
|
57
57
|
);
|
|
58
58
|
|
|
59
|
-
const input =
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
const input = container.querySelector('input') as HTMLInputElement;
|
|
60
|
+
expect(input.autocomplete).toBe(mockProps.autoComplete);
|
|
61
|
+
// React's autoFocus focuses the element programmatically, not via the attribute
|
|
62
|
+
expect(document.activeElement).toBe(input);
|
|
63
|
+
expect(input.disabled).toBe(mockProps.disabled);
|
|
64
|
+
expect(input.id).toBe(mockProps.id);
|
|
65
|
+
expect(input.name).toBe(mockProps.name);
|
|
66
|
+
expect(input.placeholder).toBe(mockProps.placeholder);
|
|
67
|
+
expect(input.type).toBe(mockProps.type);
|
|
62
68
|
});
|
|
63
69
|
|
|
64
70
|
it('raises change, blur, and focus events', () => {
|
|
65
|
-
const changeSpy =
|
|
66
|
-
const blurSpy =
|
|
67
|
-
const focusSpy =
|
|
71
|
+
const changeSpy = vi.fn();
|
|
72
|
+
const blurSpy = vi.fn();
|
|
73
|
+
const focusSpy = vi.fn();
|
|
68
74
|
const mockValue = 'test input';
|
|
69
|
-
const
|
|
75
|
+
const { container } = render(
|
|
70
76
|
<SingleLineText
|
|
71
77
|
name={'test-name'}
|
|
72
78
|
onChange={changeSpy}
|
|
@@ -75,38 +81,38 @@ describe('SingleLineText', () => {
|
|
|
75
81
|
/>,
|
|
76
82
|
);
|
|
77
83
|
|
|
78
|
-
const input =
|
|
84
|
+
const input = container.querySelector('input') as HTMLInputElement;
|
|
79
85
|
|
|
80
|
-
|
|
86
|
+
fireEvent.change(input, { target: { value: mockValue } });
|
|
81
87
|
expect(changeSpy).toHaveBeenCalledTimes(1);
|
|
82
88
|
|
|
83
|
-
|
|
89
|
+
fireEvent.blur(input);
|
|
84
90
|
expect(blurSpy).toHaveBeenCalledTimes(1);
|
|
85
91
|
|
|
86
|
-
|
|
92
|
+
fireEvent.focus(input);
|
|
87
93
|
expect(focusSpy).toHaveBeenCalledTimes(1);
|
|
88
94
|
});
|
|
89
95
|
|
|
90
96
|
it('applies error styling and renders error message when an error is passed', () => {
|
|
91
97
|
const mockErrorMessage = 'test-error-message';
|
|
92
|
-
const
|
|
98
|
+
const { container } = render(
|
|
93
99
|
<SingleLineText name={'test-name'} error={mockErrorMessage} />,
|
|
94
100
|
);
|
|
95
101
|
|
|
96
|
-
const errorMsg =
|
|
97
|
-
const errorStyling =
|
|
102
|
+
const errorMsg = container.querySelector('small');
|
|
103
|
+
const errorStyling = container.querySelector('input');
|
|
98
104
|
|
|
99
|
-
expect(errorMsg
|
|
100
|
-
expect(errorStyling.
|
|
105
|
+
expect(errorMsg?.textContent).toBe(mockErrorMessage);
|
|
106
|
+
expect(errorStyling?.classList.contains('hasError')).toBe(true);
|
|
101
107
|
});
|
|
102
108
|
|
|
103
109
|
it('show a dummy value as the input value, when type is password', () => {
|
|
104
110
|
const dummyPwd = '0000000000';
|
|
105
|
-
const
|
|
111
|
+
const { container } = render(
|
|
106
112
|
<SingleLineText name={'test-pwd'} type="password" isSet={true} />,
|
|
107
113
|
);
|
|
108
114
|
|
|
109
|
-
const input =
|
|
115
|
+
const input = container.querySelector('input') as HTMLInputElement;
|
|
110
116
|
|
|
111
117
|
expect(input.value).toBe(dummyPwd);
|
|
112
118
|
});
|
|
@@ -114,9 +120,9 @@ describe('SingleLineText', () => {
|
|
|
114
120
|
it('when user changes the value it should be displayed, when type is password', () => {
|
|
115
121
|
const initialVal = undefined;
|
|
116
122
|
const mockValueUpdated = 'New Password';
|
|
117
|
-
const changeSpy =
|
|
123
|
+
const changeSpy = vi.fn();
|
|
118
124
|
|
|
119
|
-
const
|
|
125
|
+
const { container } = render(
|
|
120
126
|
<SingleLineText
|
|
121
127
|
name={'test-pwd'}
|
|
122
128
|
type="password"
|
|
@@ -125,13 +131,11 @@ describe('SingleLineText', () => {
|
|
|
125
131
|
/>,
|
|
126
132
|
);
|
|
127
133
|
|
|
128
|
-
const input =
|
|
129
|
-
|
|
134
|
+
const input = container.querySelector('input') as HTMLInputElement;
|
|
135
|
+
fireEvent.change(input, { target: { value: mockValueUpdated } });
|
|
130
136
|
|
|
131
|
-
expect(changeSpy).
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}),
|
|
135
|
-
);
|
|
137
|
+
expect(changeSpy).toHaveBeenCalledTimes(1);
|
|
138
|
+
const callArg = changeSpy.mock.calls[0][0];
|
|
139
|
+
expect(callArg.target.value).toBe(mockValueUpdated);
|
|
136
140
|
});
|
|
137
141
|
});
|
|
@@ -1,37 +1,40 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fireEvent, render } from '@testing-library/react';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { Select } from '../Select/Select';
|
|
3
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
5
4
|
import { Tags } from './Tags';
|
|
6
5
|
|
|
7
|
-
function selectFirstOption(
|
|
8
|
-
const input =
|
|
9
|
-
|
|
10
|
-
const firstOption = document.querySelector('[role="option"]');
|
|
11
|
-
|
|
6
|
+
function selectFirstOption(container: HTMLElement) {
|
|
7
|
+
const input = container.querySelector('[role="combobox"]') as HTMLElement;
|
|
8
|
+
fireEvent.mouseDown(input);
|
|
9
|
+
const firstOption = document.querySelector('[role="option"]') as HTMLElement;
|
|
10
|
+
if (firstOption) {
|
|
11
|
+
fireEvent.click(firstOption);
|
|
12
|
+
}
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
describe('Tags', () => {
|
|
15
16
|
it('renders the component without crashing', () => {
|
|
16
|
-
const
|
|
17
|
+
const { container } = render(<Tags name={'test-name'} />);
|
|
17
18
|
|
|
18
|
-
expect(
|
|
19
|
+
expect(container).toBeTruthy();
|
|
19
20
|
});
|
|
20
21
|
|
|
21
22
|
it('displays a label', () => {
|
|
22
23
|
const mockLabel = 'mockLabel';
|
|
23
|
-
const
|
|
24
|
+
const { container } = render(<Tags name={'test-name'} label={mockLabel} />);
|
|
24
25
|
|
|
25
|
-
const label =
|
|
26
|
+
const label = container.querySelector('label');
|
|
26
27
|
|
|
27
|
-
expect(label
|
|
28
|
+
expect(label?.textContent).toBe(mockLabel);
|
|
28
29
|
});
|
|
29
30
|
|
|
30
31
|
it('displays a tag for each currently selected tag', () => {
|
|
31
32
|
const mockValue: string[] = ['1', '2', '3'];
|
|
32
|
-
const
|
|
33
|
+
const { container } = render(<Tags name={'test-name'} value={mockValue} />);
|
|
33
34
|
|
|
34
|
-
const tags =
|
|
35
|
+
const tags = Array.from(container.querySelectorAll('span > span')).map(
|
|
36
|
+
(node) => node.textContent,
|
|
37
|
+
);
|
|
35
38
|
|
|
36
39
|
expect(tags).toHaveLength(3);
|
|
37
40
|
expect(tags).toEqual(mockValue);
|
|
@@ -39,19 +42,19 @@ describe('Tags', () => {
|
|
|
39
42
|
|
|
40
43
|
it(`each Button component should have type of 'button'`, () => {
|
|
41
44
|
const mockValue = ['1', '2', '3'];
|
|
42
|
-
const
|
|
45
|
+
const { container } = render(<Tags name={'test-name'} value={mockValue} />);
|
|
43
46
|
|
|
44
|
-
const buttons =
|
|
47
|
+
const buttons = container.querySelectorAll('button');
|
|
45
48
|
|
|
46
49
|
buttons.forEach((button) => {
|
|
47
|
-
expect(button.
|
|
50
|
+
expect(button.type).toBe('button');
|
|
48
51
|
});
|
|
49
52
|
});
|
|
50
53
|
|
|
51
54
|
it('raises onChange when selecting a tag along with the new value', () => {
|
|
52
|
-
const changeSpy =
|
|
55
|
+
const changeSpy = vi.fn();
|
|
53
56
|
const mockValue: string[] = ['1'];
|
|
54
|
-
const
|
|
57
|
+
const { container } = render(
|
|
55
58
|
<Tags
|
|
56
59
|
name={'test-name'}
|
|
57
60
|
onChange={changeSpy}
|
|
@@ -60,7 +63,7 @@ describe('Tags', () => {
|
|
|
60
63
|
/>,
|
|
61
64
|
);
|
|
62
65
|
|
|
63
|
-
selectFirstOption(
|
|
66
|
+
selectFirstOption(container);
|
|
64
67
|
|
|
65
68
|
expect(changeSpy).toHaveBeenCalledTimes(1);
|
|
66
69
|
expect(changeSpy).toHaveBeenCalledWith(
|
|
@@ -71,9 +74,9 @@ describe('Tags', () => {
|
|
|
71
74
|
});
|
|
72
75
|
|
|
73
76
|
it('raises onChange when removing a tag along with the new value', () => {
|
|
74
|
-
const changeSpy =
|
|
77
|
+
const changeSpy = vi.fn();
|
|
75
78
|
const mockValue: string[] = ['1'];
|
|
76
|
-
const
|
|
79
|
+
const { container } = render(
|
|
77
80
|
<Tags
|
|
78
81
|
name={'test-name'}
|
|
79
82
|
onChange={changeSpy}
|
|
@@ -82,13 +85,11 @@ describe('Tags', () => {
|
|
|
82
85
|
/>,
|
|
83
86
|
);
|
|
84
87
|
|
|
85
|
-
const x =
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
persist: jest.fn(),
|
|
89
|
-
});
|
|
88
|
+
const x = container.querySelector(
|
|
89
|
+
'[data-test-id="tags-delete"]',
|
|
90
|
+
) as HTMLElement;
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
fireEvent.click(x);
|
|
92
93
|
|
|
93
94
|
expect(changeSpy).toHaveBeenCalledTimes(1);
|
|
94
95
|
expect(changeSpy).toHaveBeenCalledWith(
|
|
@@ -99,33 +100,35 @@ describe('Tags', () => {
|
|
|
99
100
|
});
|
|
100
101
|
|
|
101
102
|
it('shows select element when current selected tags and optional tags are the not same length', () => {
|
|
102
|
-
const
|
|
103
|
+
const { container } = render(
|
|
103
104
|
<Tags name={'test-name'} value={['1']} tagsOptions={['1', '2']} />,
|
|
104
105
|
);
|
|
105
106
|
|
|
106
|
-
const select =
|
|
107
|
+
const select = container.querySelector('[role="combobox"]');
|
|
107
108
|
|
|
108
|
-
expect(select).
|
|
109
|
+
expect(select).toBeInTheDocument();
|
|
109
110
|
});
|
|
110
111
|
|
|
111
112
|
it('hides select element when current selected tags and optional tags are the same length', () => {
|
|
112
|
-
const
|
|
113
|
+
const { container, rerender } = render(
|
|
113
114
|
<Tags name={'test-name'} value={['1']} tagsOptions={['1', '2']} />,
|
|
114
115
|
);
|
|
115
116
|
|
|
116
|
-
selectFirstOption(
|
|
117
|
+
selectFirstOption(container);
|
|
117
118
|
|
|
118
|
-
|
|
119
|
+
rerender(
|
|
120
|
+
<Tags name={'test-name'} value={['1', '2']} tagsOptions={['1', '2']} />,
|
|
121
|
+
);
|
|
119
122
|
|
|
120
|
-
const select =
|
|
123
|
+
const select = container.querySelector('[role="combobox"]');
|
|
121
124
|
|
|
122
|
-
expect(select).
|
|
125
|
+
expect(select).not.toBeInTheDocument();
|
|
123
126
|
});
|
|
124
127
|
|
|
125
128
|
it('raises blur and focus events', () => {
|
|
126
|
-
const blurSpy =
|
|
127
|
-
const focusSpy =
|
|
128
|
-
const
|
|
129
|
+
const blurSpy = vi.fn();
|
|
130
|
+
const focusSpy = vi.fn();
|
|
131
|
+
const { container } = render(
|
|
129
132
|
<Tags
|
|
130
133
|
name={'test-name'}
|
|
131
134
|
onBlur={blurSpy}
|
|
@@ -134,17 +137,17 @@ describe('Tags', () => {
|
|
|
134
137
|
/>,
|
|
135
138
|
);
|
|
136
139
|
|
|
137
|
-
const select =
|
|
140
|
+
const select = container.querySelector('[role="combobox"]') as HTMLElement;
|
|
138
141
|
|
|
139
|
-
|
|
142
|
+
fireEvent.blur(select);
|
|
140
143
|
expect(blurSpy).toHaveBeenCalledTimes(1);
|
|
141
144
|
|
|
142
|
-
|
|
145
|
+
fireEvent.focus(select);
|
|
143
146
|
expect(focusSpy).toHaveBeenCalledTimes(1);
|
|
144
147
|
});
|
|
145
148
|
|
|
146
149
|
it('uses the displayValue for existing tags when tagOptions are objects', () => {
|
|
147
|
-
const
|
|
150
|
+
const { container } = render(
|
|
148
151
|
<Tags
|
|
149
152
|
name={'test-name'}
|
|
150
153
|
value={['1', '3']}
|
|
@@ -159,7 +162,9 @@ describe('Tags', () => {
|
|
|
159
162
|
/>,
|
|
160
163
|
);
|
|
161
164
|
|
|
162
|
-
const tags =
|
|
165
|
+
const tags = Array.from(container.querySelectorAll('span > span')).map(
|
|
166
|
+
(node) => node.textContent,
|
|
167
|
+
);
|
|
163
168
|
|
|
164
169
|
expect(tags).toHaveLength(2);
|
|
165
170
|
|
|
@@ -167,7 +172,7 @@ describe('Tags', () => {
|
|
|
167
172
|
});
|
|
168
173
|
|
|
169
174
|
it('uses the displayValue for available tags when tagOptions are objects', () => {
|
|
170
|
-
const
|
|
175
|
+
const { container } = render(
|
|
171
176
|
<Tags
|
|
172
177
|
name={'test-name'}
|
|
173
178
|
value={['1', '3']}
|
|
@@ -182,8 +187,8 @@ describe('Tags', () => {
|
|
|
182
187
|
/>,
|
|
183
188
|
);
|
|
184
189
|
|
|
185
|
-
const input =
|
|
186
|
-
|
|
190
|
+
const input = container.querySelector('[role="combobox"]') as HTMLElement;
|
|
191
|
+
fireEvent.mouseDown(input);
|
|
187
192
|
|
|
188
193
|
const popper = document.querySelector('[role="tooltip"]');
|
|
189
194
|
|
|
@@ -199,14 +204,15 @@ describe('Tags', () => {
|
|
|
199
204
|
|
|
200
205
|
it('applies error styling and renders error message when an error is passed', () => {
|
|
201
206
|
const mockErrorMessage = 'test-error-message';
|
|
202
|
-
const
|
|
207
|
+
const { container } = render(
|
|
203
208
|
<Tags name={'test-name'} error={mockErrorMessage} tagsOptions={['1']} />,
|
|
204
209
|
);
|
|
205
210
|
|
|
206
|
-
const errorMsg =
|
|
207
|
-
|
|
211
|
+
const errorMsg = container.querySelector('small');
|
|
212
|
+
// The hasError class is applied to the Select component's container, not the combobox itself
|
|
213
|
+
const selectContainer = container.querySelector('.hasError');
|
|
208
214
|
|
|
209
|
-
expect(errorMsg
|
|
210
|
-
expect(
|
|
215
|
+
expect(errorMsg?.textContent).toBe(mockErrorMessage);
|
|
216
|
+
expect(selectContainer).toBeInTheDocument();
|
|
211
217
|
});
|
|
212
218
|
});
|