@eccenca/gui-elements 24.4.1 → 25.0.0-rc.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 +136 -3
- package/README.md +63 -16
- package/dist/cjs/cmem/markdown/Markdown.js.map +1 -1
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js +67 -13
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -1
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlowV12.js +45 -0
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlowV12.js.map +1 -0
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlowV9.js +30 -0
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlowV9.js.map +1 -0
- package/dist/cjs/cmem/react-flow/StickyNoteModal/StickyNoteModal.js +2 -2
- package/dist/cjs/cmem/react-flow/StickyNoteModal/StickyNoteModal.js.map +1 -1
- package/dist/cjs/cmem/react-flow/configuration/graph.js +12 -10
- package/dist/cjs/cmem/react-flow/configuration/graph.js.map +1 -1
- package/dist/cjs/cmem/react-flow/configuration/linking.js +2 -0
- package/dist/cjs/cmem/react-flow/configuration/linking.js.map +1 -1
- package/dist/cjs/cmem/react-flow/configuration/unspecified.js +2 -1
- package/dist/cjs/cmem/react-flow/configuration/unspecified.js.map +1 -1
- package/dist/cjs/cmem/react-flow/configuration/workflow.js +2 -0
- package/dist/cjs/cmem/react-flow/configuration/workflow.js.map +1 -1
- package/dist/cjs/cmem/react-flow/extensions/scrollOnDragHook.js +9 -3
- package/dist/cjs/cmem/react-flow/extensions/scrollOnDragHook.js.map +1 -1
- package/dist/cjs/cmem/react-flow/index.js +5 -1
- package/dist/cjs/cmem/react-flow/index.js.map +1 -1
- package/dist/cjs/common/index.js +5 -0
- package/dist/cjs/common/index.js.map +1 -1
- package/dist/cjs/common/utils/CssCustomProperties.js +9 -3
- package/dist/cjs/common/utils/CssCustomProperties.js.map +1 -1
- package/dist/cjs/common/utils/colorCalculateDistance.js +27 -0
- package/dist/cjs/common/utils/colorCalculateDistance.js.map +1 -0
- package/dist/cjs/common/utils/colorHash.js +143 -0
- package/dist/cjs/common/utils/colorHash.js.map +1 -0
- package/dist/cjs/common/utils/getColorConfiguration.js +37 -4
- package/dist/cjs/common/utils/getColorConfiguration.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +14 -11
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js +4 -1
- package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js +1 -3
- package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +18 -7
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/cjs/components/AutocompleteField/autoCompleteFieldUtils.js.map +1 -1
- package/dist/cjs/components/Button/Button.js +11 -26
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/Chat/ChatArea.js +55 -0
- package/dist/cjs/components/Chat/ChatArea.js.map +1 -0
- package/dist/cjs/components/Chat/ChatContent.js +55 -0
- package/dist/cjs/components/Chat/ChatContent.js.map +1 -0
- package/dist/cjs/components/Chat/ChatContentCollapsed.js +24 -0
- package/dist/cjs/components/Chat/ChatContentCollapsed.js.map +1 -0
- package/dist/cjs/components/Chat/ChatField.js +53 -0
- package/dist/cjs/components/Chat/ChatField.js.map +1 -0
- package/dist/cjs/components/{AutocompleteField → Chat}/index.js +4 -7
- package/dist/cjs/components/Chat/index.js.map +1 -0
- package/dist/cjs/components/CodeAutocompleteField/index.js +6 -1
- package/dist/cjs/components/CodeAutocompleteField/index.js.map +1 -1
- package/dist/cjs/components/ContentGroup/ContentGroup.js +1 -1
- package/dist/cjs/components/ContentGroup/ContentGroup.js.map +1 -1
- package/dist/cjs/components/Dialog/Modal.js +15 -2
- package/dist/cjs/components/Dialog/Modal.js.map +1 -1
- package/dist/cjs/components/Dialog/ModalContext.js +45 -0
- package/dist/cjs/components/Dialog/ModalContext.js.map +1 -0
- package/dist/cjs/components/Dialog/SimpleDialog.js +2 -1
- package/dist/cjs/components/Dialog/SimpleDialog.js.map +1 -1
- package/dist/cjs/components/Dialog/index.js +1 -0
- package/dist/cjs/components/Dialog/index.js.map +1 -1
- package/dist/cjs/components/Form/FieldItem.js +2 -19
- package/dist/cjs/components/Form/FieldItem.js.map +1 -1
- package/dist/cjs/components/Form/FieldSet.js +2 -20
- package/dist/cjs/components/Form/FieldSet.js.map +1 -1
- package/dist/cjs/components/Icon/BaseIcon.js +2 -2
- package/dist/cjs/components/Icon/BaseIcon.js.map +1 -1
- package/dist/cjs/components/Icon/IconButton.js.map +1 -1
- package/dist/cjs/components/Icon/canonicalIconNames.js +7 -0
- package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/cjs/components/MultiSelect/MultiSelect.js +14 -27
- package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/cjs/components/MultiSuggestField/index.js +18 -0
- package/dist/cjs/components/MultiSuggestField/index.js.map +1 -0
- package/dist/cjs/components/Notification/Notification.js +3 -23
- package/dist/cjs/components/Notification/Notification.js.map +1 -1
- package/dist/cjs/components/OverviewItem/OverviewItemList.js +1 -2
- package/dist/cjs/components/OverviewItem/OverviewItemList.js.map +1 -1
- package/dist/cjs/components/Spinner/Spinner.js +18 -11
- package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
- package/dist/cjs/components/SuggestField/index.js +5 -2
- package/dist/cjs/components/SuggestField/index.js.map +1 -1
- package/dist/cjs/components/Table/Table.js.map +1 -1
- package/dist/cjs/components/Table/TableContainer.js.map +1 -1
- package/dist/cjs/components/Tabs/Tab.js +3 -2
- package/dist/cjs/components/Tabs/Tab.js.map +1 -1
- package/dist/cjs/components/TextField/SearchField.js.map +1 -1
- package/dist/cjs/components/TextField/TextArea.js +2 -2
- package/dist/cjs/components/TextField/TextArea.js.map +1 -1
- package/dist/cjs/components/TextReducer/TextReducer.js +83 -0
- package/dist/cjs/components/TextReducer/TextReducer.js.map +1 -0
- package/dist/cjs/components/Tooltip/Tooltip.js +3 -1
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/Typography/OverflowText.js.map +1 -1
- package/dist/cjs/components/VisualTour/VisualTour.js +200 -0
- package/dist/cjs/components/VisualTour/VisualTour.js.map +1 -0
- package/dist/cjs/components/index.js +7 -7
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/configuration/constants.js +3 -1
- package/dist/cjs/configuration/constants.js.map +1 -1
- package/dist/cjs/extensions/codemirror/CodeMirror.js +5 -3
- package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +3 -0
- package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeBezier.js +50 -0
- package/dist/cjs/extensions/react-flow/edges/EdgeBezier.js.map +1 -0
- package/dist/cjs/extensions/react-flow/edges/EdgeDefault.js +21 -3
- package/dist/cjs/extensions/react-flow/edges/EdgeDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeDefaultV12.js +46 -22
- package/dist/cjs/extensions/react-flow/edges/EdgeDefaultV12.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeDefs.js +3 -0
- package/dist/cjs/extensions/react-flow/edges/EdgeDefs.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeNew.js +41 -0
- package/dist/cjs/extensions/react-flow/edges/EdgeNew.js.map +1 -0
- package/dist/cjs/extensions/react-flow/edges/EdgeStep.js +19 -2
- package/dist/cjs/extensions/react-flow/edges/EdgeStep.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeStraight.js +6 -0
- package/dist/cjs/extensions/react-flow/edges/EdgeStraight.js.map +1 -0
- package/dist/cjs/extensions/react-flow/edges/utils.js +12 -1
- package/dist/cjs/extensions/react-flow/edges/utils.js.map +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleDefault.js +14 -15
- package/dist/cjs/extensions/react-flow/handles/HandleDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/index.js +6 -6
- package/dist/cjs/extensions/react-flow/index.js.map +1 -1
- package/dist/cjs/extensions/react-flow/markers/MarkerArrowClosedInverse.js +3 -0
- package/dist/cjs/extensions/react-flow/markers/MarkerArrowClosedInverse.js.map +1 -1
- package/dist/cjs/extensions/react-flow/markers/ReactFlowMarkers.js +17 -2
- package/dist/cjs/extensions/react-flow/markers/ReactFlowMarkers.js.map +1 -1
- package/dist/cjs/extensions/react-flow/minimap/MiniMap.js +21 -2
- package/dist/cjs/extensions/react-flow/minimap/MiniMap.js.map +1 -1
- package/dist/cjs/extensions/react-flow/minimap/MiniMapV12.js +51 -0
- package/dist/cjs/extensions/react-flow/minimap/MiniMapV12.js.map +1 -0
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +57 -54
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js +2 -2
- package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/nodeUtils.js +2 -1
- package/dist/cjs/extensions/react-flow/nodes/nodeUtils.js.map +1 -1
- package/dist/cjs/extensions/react-flow/versionsupport.js +13 -11
- package/dist/cjs/extensions/react-flow/versionsupport.js.map +1 -1
- package/dist/cjs/index.js +1 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/cmem/markdown/Markdown.js.map +1 -1
- package/dist/esm/cmem/react-flow/ReactFlow/ReactFlow.js +67 -13
- package/dist/esm/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -1
- package/dist/esm/cmem/react-flow/ReactFlow/ReactFlowV12.js +66 -0
- package/dist/esm/cmem/react-flow/ReactFlow/ReactFlowV12.js.map +1 -0
- package/dist/esm/{legacy-replacements/Button/AffirmativeButton.js → cmem/react-flow/ReactFlow/ReactFlowV9.js} +12 -7
- package/dist/esm/cmem/react-flow/ReactFlow/ReactFlowV9.js.map +1 -0
- package/dist/esm/cmem/react-flow/StickyNoteModal/StickyNoteModal.js +3 -3
- package/dist/esm/cmem/react-flow/StickyNoteModal/StickyNoteModal.js.map +1 -1
- package/dist/esm/cmem/react-flow/configuration/graph.js +12 -10
- package/dist/esm/cmem/react-flow/configuration/graph.js.map +1 -1
- package/dist/esm/cmem/react-flow/configuration/linking.js +2 -0
- package/dist/esm/cmem/react-flow/configuration/linking.js.map +1 -1
- package/dist/esm/cmem/react-flow/configuration/unspecified.js +2 -1
- package/dist/esm/cmem/react-flow/configuration/unspecified.js.map +1 -1
- package/dist/esm/cmem/react-flow/configuration/workflow.js +2 -0
- package/dist/esm/cmem/react-flow/configuration/workflow.js.map +1 -1
- package/dist/esm/cmem/react-flow/extensions/scrollOnDragHook.js +7 -1
- package/dist/esm/cmem/react-flow/extensions/scrollOnDragHook.js.map +1 -1
- package/dist/esm/cmem/react-flow/index.js +2 -1
- package/dist/esm/cmem/react-flow/index.js.map +1 -1
- package/dist/esm/common/index.js +5 -0
- package/dist/esm/common/index.js.map +1 -1
- package/dist/esm/common/utils/CssCustomProperties.js +9 -3
- package/dist/esm/common/utils/CssCustomProperties.js.map +1 -1
- package/dist/esm/common/utils/colorCalculateDistance.js +21 -0
- package/dist/esm/common/utils/colorCalculateDistance.js.map +1 -0
- package/dist/esm/common/utils/colorHash.js +140 -0
- package/dist/esm/common/utils/colorHash.js.map +1 -0
- package/dist/esm/common/utils/getColorConfiguration.js +37 -4
- package/dist/esm/common/utils/getColorConfiguration.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +14 -12
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js +4 -1
- package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js +1 -3
- package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
- package/dist/esm/components/AutocompleteField/AutoCompleteField.js +17 -7
- package/dist/esm/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/esm/components/AutocompleteField/autoCompleteFieldUtils.js.map +1 -1
- package/dist/esm/components/Button/Button.js +11 -26
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Chat/ChatArea.js +59 -0
- package/dist/esm/components/Chat/ChatArea.js.map +1 -0
- package/dist/esm/components/Chat/ChatContent.js +59 -0
- package/dist/esm/components/Chat/ChatContent.js.map +1 -0
- package/dist/esm/components/Chat/ChatContentCollapsed.js +45 -0
- package/dist/esm/components/Chat/ChatContentCollapsed.js.map +1 -0
- package/dist/esm/components/Chat/ChatField.js +57 -0
- package/dist/esm/components/Chat/ChatField.js.map +1 -0
- package/dist/esm/components/Chat/index.js +5 -0
- package/dist/esm/components/Chat/index.js.map +1 -0
- package/dist/esm/components/CodeAutocompleteField/index.js +4 -1
- package/dist/esm/components/CodeAutocompleteField/index.js.map +1 -1
- package/dist/esm/components/ContentGroup/ContentGroup.js +1 -1
- package/dist/esm/components/ContentGroup/ContentGroup.js.map +1 -1
- package/dist/esm/components/Dialog/Modal.js +15 -2
- package/dist/esm/components/Dialog/Modal.js.map +1 -1
- package/dist/esm/components/Dialog/ModalContext.js +63 -0
- package/dist/esm/components/Dialog/ModalContext.js.map +1 -0
- package/dist/esm/components/Dialog/SimpleDialog.js +2 -1
- package/dist/esm/components/Dialog/SimpleDialog.js.map +1 -1
- package/dist/esm/components/Dialog/index.js +1 -0
- package/dist/esm/components/Dialog/index.js.map +1 -1
- package/dist/esm/components/Form/FieldItem.js +2 -19
- package/dist/esm/components/Form/FieldItem.js.map +1 -1
- package/dist/esm/components/Form/FieldSet.js +2 -20
- package/dist/esm/components/Form/FieldSet.js.map +1 -1
- package/dist/esm/components/Icon/BaseIcon.js +2 -2
- package/dist/esm/components/Icon/BaseIcon.js.map +1 -1
- package/dist/esm/components/Icon/IconButton.js.map +1 -1
- package/dist/esm/components/Icon/canonicalIconNames.js +7 -0
- package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/esm/components/MultiSelect/MultiSelect.js +13 -27
- package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/esm/components/MultiSuggestField/index.js +2 -0
- package/dist/esm/components/MultiSuggestField/index.js.map +1 -0
- package/dist/esm/components/Notification/Notification.js +3 -23
- package/dist/esm/components/Notification/Notification.js.map +1 -1
- package/dist/esm/components/OverviewItem/OverviewItemList.js +1 -2
- package/dist/esm/components/OverviewItem/OverviewItemList.js.map +1 -1
- package/dist/esm/components/Spinner/Spinner.js +16 -14
- package/dist/esm/components/Spinner/Spinner.js.map +1 -1
- package/dist/esm/components/SuggestField/index.js +4 -1
- package/dist/esm/components/SuggestField/index.js.map +1 -1
- package/dist/esm/components/Table/Table.js.map +1 -1
- package/dist/esm/components/Table/TableContainer.js.map +1 -1
- package/dist/esm/components/Tabs/Tab.js +3 -2
- package/dist/esm/components/Tabs/Tab.js.map +1 -1
- package/dist/esm/components/TextField/SearchField.js.map +1 -1
- package/dist/esm/components/TextField/TextArea.js +2 -2
- package/dist/esm/components/TextField/TextArea.js.map +1 -1
- package/dist/esm/components/TextReducer/TextReducer.js +65 -0
- package/dist/esm/components/TextReducer/TextReducer.js.map +1 -0
- package/dist/esm/components/Tooltip/Tooltip.js +3 -1
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Typography/OverflowText.js.map +1 -1
- package/dist/esm/components/VisualTour/VisualTour.js +213 -0
- package/dist/esm/components/VisualTour/VisualTour.js.map +1 -0
- package/dist/esm/components/index.js +7 -7
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/configuration/constants.js +2 -0
- package/dist/esm/configuration/constants.js.map +1 -1
- package/dist/esm/extensions/codemirror/CodeMirror.js +7 -5
- package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +3 -0
- package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeBezier.js +35 -0
- package/dist/esm/extensions/react-flow/edges/EdgeBezier.js.map +1 -0
- package/dist/esm/extensions/react-flow/edges/EdgeDefault.js +21 -3
- package/dist/esm/extensions/react-flow/edges/EdgeDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeDefaultV12.js +24 -20
- package/dist/esm/extensions/react-flow/edges/EdgeDefaultV12.js.map +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeDefs.js +3 -0
- package/dist/esm/extensions/react-flow/edges/EdgeDefs.js.map +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeNew.js +45 -0
- package/dist/esm/extensions/react-flow/edges/EdgeNew.js.map +1 -0
- package/dist/esm/extensions/react-flow/edges/EdgeStep.js +19 -2
- package/dist/esm/extensions/react-flow/edges/EdgeStep.js.map +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeStraight.js +2 -0
- package/dist/esm/extensions/react-flow/edges/EdgeStraight.js.map +1 -0
- package/dist/esm/extensions/react-flow/edges/utils.js +27 -1
- package/dist/esm/extensions/react-flow/edges/utils.js.map +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleDefault.js +16 -17
- package/dist/esm/extensions/react-flow/handles/HandleDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/index.js +6 -3
- package/dist/esm/extensions/react-flow/index.js.map +1 -1
- package/dist/esm/extensions/react-flow/markers/MarkerArrowClosedInverse.js +3 -0
- package/dist/esm/extensions/react-flow/markers/MarkerArrowClosedInverse.js.map +1 -1
- package/dist/esm/extensions/react-flow/markers/ReactFlowMarkers.js +17 -2
- package/dist/esm/extensions/react-flow/markers/ReactFlowMarkers.js.map +1 -1
- package/dist/esm/extensions/react-flow/minimap/MiniMap.js +22 -3
- package/dist/esm/extensions/react-flow/minimap/MiniMap.js.map +1 -1
- package/dist/esm/extensions/react-flow/minimap/MiniMapV12.js +36 -0
- package/dist/esm/extensions/react-flow/minimap/MiniMapV12.js.map +1 -0
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js +84 -81
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeDefault.js +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/nodeUtils.js +2 -1
- package/dist/esm/extensions/react-flow/nodes/nodeUtils.js.map +1 -1
- package/dist/esm/extensions/react-flow/versionsupport.js +15 -13
- package/dist/esm/extensions/react-flow/versionsupport.js.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/types/cmem/markdown/Markdown.d.ts +1 -8
- package/dist/types/cmem/react-flow/ReactFlow/ReactFlow.d.ts +38 -6
- package/dist/types/cmem/react-flow/ReactFlow/ReactFlowV12.d.ts +7 -0
- package/dist/types/cmem/react-flow/ReactFlow/ReactFlowV9.d.ts +7 -0
- package/dist/types/cmem/react-flow/configuration/graph.d.ts +9 -9
- package/dist/types/cmem/react-flow/configuration/linking.d.ts +6 -6
- package/dist/types/cmem/react-flow/configuration/unspecified.d.ts +3 -3
- package/dist/types/cmem/react-flow/configuration/workflow.d.ts +4 -4
- package/dist/types/cmem/react-flow/extensions/scrollOnDragHook.d.ts +19 -16
- package/dist/types/cmem/react-flow/index.d.ts +2 -1
- package/dist/types/common/index.d.ts +5 -1
- package/dist/types/common/utils/CssCustomProperties.d.ts +6 -6
- package/dist/types/common/utils/colorCalculateDistance.d.ts +12 -0
- package/dist/types/common/utils/colorHash.d.ts +29 -0
- package/dist/types/common/utils/getColorConfiguration.d.ts +1 -1
- package/dist/types/components/AutoSuggestion/AutoSuggestion.d.ts +7 -17
- package/dist/types/components/AutoSuggestion/AutoSuggestionList.d.ts +4 -4
- package/dist/types/components/AutoSuggestion/ExtendedCodeEditor.d.ts +0 -1
- package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +18 -10
- package/dist/types/components/AutocompleteField/autoCompleteFieldUtils.d.ts +2 -2
- package/dist/types/components/AutocompleteField/interfaces.d.ts +2 -4
- package/dist/types/components/Button/Button.d.ts +13 -26
- package/dist/types/components/Chat/ChatArea.d.ts +34 -0
- package/dist/types/components/Chat/ChatContent.d.ts +49 -0
- package/dist/types/components/Chat/ChatContentCollapsed.d.ts +28 -0
- package/dist/types/components/Chat/ChatField.d.ts +20 -0
- package/dist/types/components/Chat/index.d.ts +4 -0
- package/dist/types/components/CodeAutocompleteField/index.d.ts +5 -1
- package/dist/types/components/Dialog/Modal.d.ts +11 -2
- package/dist/types/components/Dialog/ModalContext.d.ts +13 -0
- package/dist/types/components/Dialog/SimpleDialog.d.ts +0 -1
- package/dist/types/components/Dialog/index.d.ts +1 -0
- package/dist/types/components/Form/FieldItem.d.ts +1 -25
- package/dist/types/components/Form/FieldSet.d.ts +1 -21
- package/dist/types/components/Icon/BaseIcon.d.ts +1 -10
- package/dist/types/components/Icon/IconButton.d.ts +2 -1
- package/dist/types/components/Icon/canonicalIconNames.d.ts +7 -0
- package/dist/types/components/MultiSelect/MultiSelect.d.ts +17 -33
- package/dist/types/components/MultiSuggestField/index.d.ts +1 -0
- package/dist/types/components/Notification/Notification.d.ts +1 -24
- package/dist/types/components/OverviewItem/OverviewItemList.d.ts +1 -6
- package/dist/types/components/Spinner/Spinner.d.ts +16 -14
- package/dist/types/components/SuggestField/index.d.ts +6 -2
- package/dist/types/components/Table/Table.d.ts +1 -1
- package/dist/types/components/Table/TableContainer.d.ts +2 -2
- package/dist/types/components/Tabs/Tab.d.ts +4 -4
- package/dist/types/components/TextField/SearchField.d.ts +1 -1
- package/dist/types/components/TextReducer/TextReducer.d.ts +28 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts +2 -1
- package/dist/types/components/Typography/OverflowText.d.ts +0 -5
- package/dist/types/components/VisualTour/VisualTour.d.ts +39 -0
- package/dist/types/components/index.d.ts +7 -7
- package/dist/types/configuration/constants.d.ts +2 -0
- package/dist/types/extensions/codemirror/CodeMirror.d.ts +9 -6
- package/dist/types/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.d.ts +2 -0
- package/dist/types/extensions/react-flow/edges/EdgeBezier.d.ts +20 -0
- package/dist/types/extensions/react-flow/edges/EdgeDefault.d.ts +29 -7
- package/dist/types/extensions/react-flow/edges/EdgeDefaultV12.d.ts +16 -27
- package/dist/types/extensions/react-flow/edges/EdgeDefs.d.ts +3 -0
- package/dist/types/extensions/react-flow/edges/EdgeLabel.d.ts +1 -1
- package/dist/types/extensions/react-flow/edges/EdgeNew.d.ts +3 -0
- package/dist/types/extensions/react-flow/edges/EdgeStep.d.ts +23 -5
- package/dist/types/extensions/react-flow/edges/EdgeStraight.d.ts +1 -0
- package/dist/types/extensions/react-flow/edges/utils.d.ts +2 -0
- package/dist/types/extensions/react-flow/handles/HandleDefault.d.ts +12 -6
- package/dist/types/extensions/react-flow/index.d.ts +6 -2
- package/dist/types/extensions/react-flow/markers/MarkerArrowClosedInverse.d.ts +3 -0
- package/dist/types/extensions/react-flow/markers/ReactFlowMarkers.d.ts +21 -2
- package/dist/types/extensions/react-flow/minimap/MiniMap.d.ts +18 -7
- package/dist/types/extensions/react-flow/minimap/MiniMapV12.d.ts +10 -0
- package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +15 -12
- package/dist/types/extensions/react-flow/nodes/NodeDefault.d.ts +7 -3
- package/dist/types/extensions/react-flow/nodes/nodeUtils.d.ts +12 -5
- package/dist/types/extensions/react-flow/versionsupport.d.ts +8 -4
- package/dist/types/index.d.ts +1 -2
- package/package.json +6 -6
- package/src/_shame.scss +1 -1
- package/src/cmem/markdown/Markdown.stories.tsx +0 -1
- package/src/cmem/markdown/Markdown.tsx +4 -12
- package/src/cmem/react-flow/ReactFlow/ReactFlow.stories.tsx +472 -366
- package/src/cmem/react-flow/ReactFlow/ReactFlow.tsx +176 -72
- package/src/cmem/react-flow/ReactFlow/ReactFlowV12.tsx +56 -0
- package/src/cmem/react-flow/ReactFlow/ReactFlowV9.tsx +29 -0
- package/src/cmem/react-flow/StickyNoteModal/StickyNoteModal.tsx +0 -1
- package/src/cmem/react-flow/_canvas.scss +1 -1
- package/src/cmem/react-flow/_edges.scss +13 -13
- package/src/cmem/react-flow/_handles.scss +18 -18
- package/src/cmem/react-flow/_minimap.scss +29 -19
- package/src/cmem/react-flow/configuration/_colors-graph.scss +19 -36
- package/src/cmem/react-flow/configuration/_colors-linking.scss +14 -26
- package/src/cmem/react-flow/configuration/_colors-workflow.scss +15 -27
- package/src/cmem/react-flow/configuration/graph.ts +13 -11
- package/src/cmem/react-flow/configuration/linking.ts +3 -1
- package/src/cmem/react-flow/configuration/unspecified.ts +2 -1
- package/src/cmem/react-flow/configuration/workflow.ts +3 -1
- package/src/cmem/react-flow/extensions/scrollOnDragHook.ts +19 -21
- package/src/cmem/react-flow/index.ts +2 -1
- package/src/cmem/react-flow/nodes/_colors.scss +20 -20
- package/src/common/index.ts +5 -0
- package/src/common/scss/_color-functions.scss +144 -0
- package/src/common/utils/CssCustomProperties.ts +22 -15
- package/src/common/utils/colorCalculateDistance.ts +28 -0
- package/src/common/utils/colorHash.ts +195 -0
- package/src/common/utils/getColorConfiguration.ts +45 -7
- package/src/components/Accordion/accordion.scss +6 -5
- package/src/components/Application/_colors.scss +15 -0
- package/src/components/Application/_header.scss +7 -7
- package/src/components/Application/_toolbar.scss +5 -5
- package/src/components/Application/application.scss +1 -0
- package/src/components/Application/stories/Application.stories.tsx +2 -2
- package/src/components/Application/stories/ColorPalettes.stories.tsx +885 -0
- package/src/components/AutoSuggestion/AutoSuggestion.tsx +16 -32
- package/src/components/AutoSuggestion/AutoSuggestionList.tsx +13 -6
- package/src/components/AutoSuggestion/ExtendedCodeEditor.tsx +1 -7
- package/src/components/AutocompleteField/AutoCompleteField.tsx +21 -13
- package/src/components/AutocompleteField/autoCompleteFieldUtils.tsx +2 -2
- package/src/components/AutocompleteField/interfaces.ts +1 -5
- package/src/components/Button/Button.stories.tsx +7 -5
- package/src/components/Button/Button.tsx +23 -63
- package/src/components/Button/button.scss +94 -32
- package/src/components/Card/card.scss +13 -13
- package/src/components/Chat/ChatArea.tsx +114 -0
- package/src/components/Chat/ChatContent.tsx +132 -0
- package/src/components/Chat/ChatContentCollapsed.tsx +64 -0
- package/src/components/Chat/ChatField.tsx +75 -0
- package/src/components/Chat/_chat.scss +86 -0
- package/src/components/Chat/index.ts +4 -0
- package/src/components/Chat/stories/ChatArea.stories.tsx +61 -0
- package/src/components/Chat/stories/ChatContent.stories.tsx +61 -0
- package/src/components/Chat/stories/ChatContentCollapsed.stories.tsx +24 -0
- package/src/components/Chat/stories/ChatField.stories.tsx +23 -0
- package/src/components/Checkbox/checkbox.scss +2 -2
- package/src/components/CodeAutocompleteField/index.ts +8 -1
- package/src/components/ContentGroup/ContentGroup.tsx +1 -1
- package/src/components/ContentGroup/_contentgroup.scss +8 -2
- package/src/components/Dialog/Modal.tsx +30 -2
- package/src/components/Dialog/ModalContext.tsx +48 -0
- package/src/components/Dialog/SimpleDialog.tsx +2 -1
- package/src/components/Dialog/dialog.scss +4 -1
- package/src/components/Dialog/index.ts +1 -0
- package/src/components/Dialog/stories/Modal.stories.tsx +143 -2
- package/src/components/Form/FieldItem.tsx +2 -57
- package/src/components/Form/FieldSet.tsx +1 -45
- package/src/components/Form/form.scss +2 -2
- package/src/components/Icon/BaseIcon.tsx +0 -14
- package/src/components/Icon/IconButton.tsx +2 -1
- package/src/components/Icon/canonicalIconNames.tsx +7 -0
- package/src/components/Icon/icon.scss +6 -0
- package/src/components/Icon/stories/Icon.stories.tsx +65 -5
- package/src/components/Icon/stories/IconButton.stories.tsx +2 -1
- package/src/components/Label/label.scss +1 -1
- package/src/components/Link/link.scss +1 -1
- package/src/components/Menu/menu.scss +4 -27
- package/src/components/MultiSelect/MultiSelect.tsx +23 -60
- package/src/components/MultiSuggestField/MultiSuggestField.stories.tsx +1 -1
- package/src/components/MultiSuggestField/index.ts +1 -0
- package/src/components/Notification/Notification.stories.tsx +24 -10
- package/src/components/Notification/Notification.tsx +3 -51
- package/src/components/Notification/notification.scss +10 -5
- package/src/components/OverviewItem/OverviewItemList.tsx +0 -7
- package/src/components/OverviewItem/overviewitem.scss +6 -9
- package/src/components/OverviewItem/stories/OverviewItemList.stories.tsx +0 -1
- package/src/components/Pagination/pagination.scss +1 -1
- package/src/components/ProgressBar/Stories/ProgressBar.stories.tsx +7 -1
- package/src/components/Select/Select.stories.tsx +1 -1
- package/src/components/Spinner/Spinner.tsx +30 -23
- package/src/components/Spinner/Stories/spinner.stories.tsx +1 -1
- package/src/components/Spinner/spinner.scss +10 -5
- package/src/components/Sticky/sticky.scss +7 -7
- package/src/components/SuggestField/index.ts +7 -1
- package/src/components/Table/Table.tsx +1 -2
- package/src/components/Table/TableContainer.tsx +2 -2
- package/src/components/Table/table.scss +34 -46
- package/src/components/Tabs/Tab.tsx +3 -2
- package/src/components/Tabs/stories/Tab.stories.tsx +1 -1
- package/src/components/Tabs/stories/TabPanel.stories.tsx +1 -1
- package/src/components/Tabs/stories/TabTitle.stories.tsx +1 -1
- package/src/components/Tag/tag.scss +89 -68
- package/src/components/TextField/SearchField.tsx +1 -6
- package/src/components/TextField/TextArea.tsx +2 -2
- package/src/components/TextField/stories/SearchField.stories.tsx +0 -4
- package/src/components/TextField/textfield.scss +31 -23
- package/src/components/TextReducer/TextReducer.stories.tsx +47 -0
- package/src/components/TextReducer/TextReducer.tsx +98 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +2 -0
- package/src/components/Tooltip/Tooltip.test.tsx +63 -0
- package/src/components/Tooltip/Tooltip.tsx +7 -2
- package/src/components/Tooltip/tooltip.scss +7 -3
- package/src/components/Typography/OverflowText.tsx +1 -6
- package/src/components/Typography/typography.scss +1 -1
- package/src/components/VisualTour/VisualTour.tsx +381 -0
- package/src/components/VisualTour/stories/VisualTour.stories.tsx +112 -0
- package/src/components/VisualTour/stories/defaultTour.ts +42 -0
- package/src/components/VisualTour/visualTour.scss +83 -0
- package/src/components/index.scss +2 -0
- package/src/components/index.ts +7 -7
- package/src/configuration/_libprefix.scss +1 -0
- package/src/configuration/_palettes.scss +40 -0
- package/src/configuration/_variables.scss +21 -20
- package/src/configuration/constants.ts +2 -0
- package/src/extensions/codemirror/CodeMirror.tsx +15 -10
- package/src/extensions/codemirror/_codemirror.scss +2 -2
- package/src/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.ts +4 -0
- package/src/extensions/react-flow/_config.scss +7 -6
- package/src/extensions/react-flow/_react-flow.scss +1 -4
- package/src/extensions/react-flow/_react-flow_v12.scss +211 -3
- package/src/extensions/react-flow/edges/EdgeBezier.tsx +47 -0
- package/src/extensions/react-flow/edges/EdgeDefault.tsx +51 -13
- package/src/extensions/react-flow/edges/EdgeDefaultV12.tsx +79 -78
- package/src/extensions/react-flow/edges/EdgeDefs.tsx +3 -0
- package/src/extensions/react-flow/edges/EdgeLabel.tsx +1 -1
- package/src/extensions/react-flow/edges/EdgeNew.tsx +52 -0
- package/src/extensions/react-flow/edges/EdgeStep.tsx +41 -6
- package/src/extensions/react-flow/edges/EdgeStraight.tsx +1 -0
- package/src/extensions/react-flow/edges/_edges.scss +14 -4
- package/src/extensions/react-flow/edges/stories/EdgeDefault.stories.tsx +5 -6
- package/src/extensions/react-flow/edges/stories/EdgeDefaultV12.stories.tsx +32 -25
- package/src/extensions/react-flow/edges/utils.ts +19 -1
- package/src/extensions/react-flow/handles/HandleDefault.tsx +40 -35
- package/src/extensions/react-flow/handles/_handles.scss +2 -2
- package/src/extensions/react-flow/handles/stories/HandleDefault.stories.tsx +4 -6
- package/src/extensions/react-flow/index.ts +7 -5
- package/src/extensions/react-flow/markers/MarkerArrowClosedInverse.tsx +3 -0
- package/src/extensions/react-flow/markers/ReactFlowMarkers.tsx +58 -1
- package/src/extensions/react-flow/markers/_markers.scss +31 -0
- package/src/extensions/react-flow/minimap/MiniMap.stories.tsx +12 -18
- package/src/extensions/react-flow/minimap/MiniMap.tsx +44 -9
- package/src/extensions/react-flow/minimap/MiniMapV12.tsx +39 -0
- package/src/extensions/react-flow/minimap/_minimap.scss +14 -0
- package/src/extensions/react-flow/nodes/NodeContent.tsx +135 -113
- package/src/extensions/react-flow/nodes/NodeDefault.tsx +9 -5
- package/src/extensions/react-flow/nodes/_nodes.scss +29 -23
- package/src/extensions/react-flow/nodes/nodeUtils.tsx +15 -6
- package/src/extensions/react-flow/nodes/stories/NodeDefault.stories.tsx +3 -5
- package/src/extensions/react-flow/versionsupport.ts +17 -15
- package/src/extensions/uppy/_fileupload.scss +2 -2
- package/src/includes/blueprintjs/_colormap.scss +150 -0
- package/src/includes/blueprintjs/_variables.scss +39 -9
- package/src/includes/carbon-components/_variables.scss +23 -8
- package/src/index.scss +11 -0
- package/src/index.ts +1 -2
- package/dist/cjs/components/AutoSuggestion/index.js +0 -8
- package/dist/cjs/components/AutoSuggestion/index.js.map +0 -1
- package/dist/cjs/components/AutocompleteField/index.js.map +0 -1
- package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js +0 -32
- package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js.map +0 -1
- package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js +0 -37
- package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js.map +0 -1
- package/dist/cjs/components/SuggestField/SuggestField.js +0 -38
- package/dist/cjs/components/SuggestField/SuggestField.js.map +0 -1
- package/dist/cjs/extensions/react-flow/edges/edgeTypes.js +0 -28
- package/dist/cjs/extensions/react-flow/edges/edgeTypes.js.map +0 -1
- package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js +0 -18
- package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js.map +0 -1
- package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js +0 -25
- package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js.map +0 -1
- package/dist/cjs/legacy-replacements/Button/Button.js +0 -65
- package/dist/cjs/legacy-replacements/Button/Button.js.map +0 -1
- package/dist/cjs/legacy-replacements/Button/DismissiveButton.js +0 -25
- package/dist/cjs/legacy-replacements/Button/DismissiveButton.js.map +0 -1
- package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js +0 -25
- package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js.map +0 -1
- package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js +0 -58
- package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js.map +0 -1
- package/dist/cjs/legacy-replacements/Radio/RadioButton.js +0 -51
- package/dist/cjs/legacy-replacements/Radio/RadioButton.js.map +0 -1
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js +0 -34
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js.map +0 -1
- package/dist/cjs/legacy-replacements/TextField/TextField.js +0 -75
- package/dist/cjs/legacy-replacements/TextField/TextField.js.map +0 -1
- package/dist/cjs/legacy-replacements/index.js +0 -22
- package/dist/cjs/legacy-replacements/index.js.map +0 -1
- package/dist/esm/components/AutoSuggestion/index.js +0 -4
- package/dist/esm/components/AutoSuggestion/index.js.map +0 -1
- package/dist/esm/components/AutocompleteField/index.js +0 -7
- package/dist/esm/components/AutocompleteField/index.js.map +0 -1
- package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js +0 -37
- package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js.map +0 -1
- package/dist/esm/components/MultiSuggestField/MultiSuggestField.js +0 -42
- package/dist/esm/components/MultiSuggestField/MultiSuggestField.js.map +0 -1
- package/dist/esm/components/SuggestField/SuggestField.js +0 -43
- package/dist/esm/components/SuggestField/SuggestField.js.map +0 -1
- package/dist/esm/extensions/react-flow/edges/edgeTypes.js +0 -25
- package/dist/esm/extensions/react-flow/edges/edgeTypes.js.map +0 -1
- package/dist/esm/extensions/react-flow/nodes/nodeTypes.js +0 -15
- package/dist/esm/extensions/react-flow/nodes/nodeTypes.js.map +0 -1
- package/dist/esm/legacy-replacements/Button/AffirmativeButton.js.map +0 -1
- package/dist/esm/legacy-replacements/Button/Button.js +0 -69
- package/dist/esm/legacy-replacements/Button/Button.js.map +0 -1
- package/dist/esm/legacy-replacements/Button/DismissiveButton.js +0 -30
- package/dist/esm/legacy-replacements/Button/DismissiveButton.js.map +0 -1
- package/dist/esm/legacy-replacements/Button/DisruptiveButton.js +0 -30
- package/dist/esm/legacy-replacements/Button/DisruptiveButton.js.map +0 -1
- package/dist/esm/legacy-replacements/Checkbox/Checkbox.js +0 -63
- package/dist/esm/legacy-replacements/Checkbox/Checkbox.js.map +0 -1
- package/dist/esm/legacy-replacements/Radio/RadioButton.js +0 -56
- package/dist/esm/legacy-replacements/Radio/RadioButton.js.map +0 -1
- package/dist/esm/legacy-replacements/Tabs/Tabs.js +0 -39
- package/dist/esm/legacy-replacements/Tabs/Tabs.js.map +0 -1
- package/dist/esm/legacy-replacements/TextField/TextField.js +0 -82
- package/dist/esm/legacy-replacements/TextField/TextField.js.map +0 -1
- package/dist/esm/legacy-replacements/index.js +0 -10
- package/dist/esm/legacy-replacements/index.js.map +0 -1
- package/dist/types/components/AutoSuggestion/index.d.ts +0 -5
- package/dist/types/components/AutocompleteField/index.d.ts +0 -5
- package/dist/types/components/CodeAutocompleteField/CodeAutocompleteField.d.ts +0 -11
- package/dist/types/components/MultiSuggestField/MultiSuggestField.d.ts +0 -19
- package/dist/types/components/SuggestField/SuggestField.d.ts +0 -21
- package/dist/types/extensions/react-flow/edges/edgeTypes.d.ts +0 -16
- package/dist/types/extensions/react-flow/nodes/nodeTypes.d.ts +0 -13
- package/dist/types/legacy-replacements/Button/AffirmativeButton.d.ts +0 -3
- package/dist/types/legacy-replacements/Button/Button.d.ts +0 -6
- package/dist/types/legacy-replacements/Button/DismissiveButton.d.ts +0 -3
- package/dist/types/legacy-replacements/Button/DisruptiveButton.d.ts +0 -3
- package/dist/types/legacy-replacements/Checkbox/Checkbox.d.ts +0 -3
- package/dist/types/legacy-replacements/Radio/RadioButton.d.ts +0 -3
- package/dist/types/legacy-replacements/Tabs/Tabs.d.ts +0 -24
- package/dist/types/legacy-replacements/TextField/TextField.d.ts +0 -3
- package/dist/types/legacy-replacements/index.d.ts +0 -10
- package/src/components/AutoSuggestion/index.ts +0 -7
- package/src/components/AutocompleteField/AutoCompleteField.stories.tsx +0 -14
- package/src/components/AutocompleteField/index.ts +0 -6
- package/src/components/CodeAutocompleteField/CodeAutocompleteField.tsx +0 -22
- package/src/components/MultiSuggestField/MultiSuggestField.tsx +0 -35
- package/src/components/SuggestField/SuggestField.tsx +0 -33
- package/src/extensions/react-flow/edges/edgeTypes.ts +0 -29
- package/src/extensions/react-flow/nodes/nodeTypes.ts +0 -15
- package/src/legacy-replacements/Button/AffirmativeButton.tsx +0 -12
- package/src/legacy-replacements/Button/Button.tsx +0 -80
- package/src/legacy-replacements/Button/DismissiveButton.tsx +0 -12
- package/src/legacy-replacements/Button/DisruptiveButton.tsx +0 -12
- package/src/legacy-replacements/Checkbox/Checkbox.tsx +0 -59
- package/src/legacy-replacements/Radio/RadioButton.tsx +0 -37
- package/src/legacy-replacements/Tabs/Tabs.stories.tsx +0 -36
- package/src/legacy-replacements/Tabs/Tabs.tsx +0 -69
- package/src/legacy-replacements/TextField/TextField.tsx +0 -89
- package/src/legacy-replacements/index.ts +0 -11
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { renderToString } from "react-dom/server";
|
|
3
|
+
import * as ReactIs from "react-is";
|
|
4
|
+
|
|
5
|
+
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
6
|
+
|
|
7
|
+
import { OverflowText, OverflowTextProps } from "./../Typography";
|
|
8
|
+
|
|
9
|
+
export interface TextReducerProps extends Pick<React.HTMLAttributes<HTMLElement>, "children"> {
|
|
10
|
+
/**
|
|
11
|
+
* Maximum number of nodes that are used from the HTML content.
|
|
12
|
+
* An HTML element with multiple sub elements is count as only 1 node.
|
|
13
|
+
*/
|
|
14
|
+
maxNodes?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Set maximum string length of returned content.
|
|
17
|
+
*/
|
|
18
|
+
maxLength?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Wrap returned content automatically in a `OverflowText` component.
|
|
21
|
+
* This way you always will get a element returned that displays only 1 single text line.
|
|
22
|
+
*/
|
|
23
|
+
useOverflowTextWrapper?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Specify more `OverflowText` properties used when `useOverflowTextWrapper` is set to `true`.
|
|
26
|
+
*/
|
|
27
|
+
overflowTextProps?: Omit<OverflowTextProps, "passDown">;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Component to reduce HTML markup content to simple text.
|
|
32
|
+
* Display can be wrapped easily in `OverflowText`.
|
|
33
|
+
*/
|
|
34
|
+
export const TextReducer = ({
|
|
35
|
+
children,
|
|
36
|
+
maxNodes,
|
|
37
|
+
maxLength,
|
|
38
|
+
useOverflowTextWrapper,
|
|
39
|
+
overflowTextProps,
|
|
40
|
+
}: TextReducerProps) => {
|
|
41
|
+
const nodesCount = 0;
|
|
42
|
+
|
|
43
|
+
const onlyText = (children: React.ReactNode | React.ReactNode[], maxNodes?: number): string => {
|
|
44
|
+
if (typeof maxNodes !== "undefined" && nodesCount >= maxNodes) {
|
|
45
|
+
return "";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (children instanceof Array) {
|
|
49
|
+
return children
|
|
50
|
+
.slice(0, maxNodes)
|
|
51
|
+
.map((child: React.ReactNode) => {
|
|
52
|
+
return onlyText(child, maxNodes);
|
|
53
|
+
})
|
|
54
|
+
.join(" ");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return React.Children.toArray(children)
|
|
58
|
+
.slice(0, maxNodes)
|
|
59
|
+
.map((child) => {
|
|
60
|
+
if (ReactIs.isFragment(child)) {
|
|
61
|
+
return onlyText(child.props?.children, maxNodes);
|
|
62
|
+
}
|
|
63
|
+
if (typeof child === "string") {
|
|
64
|
+
return child;
|
|
65
|
+
}
|
|
66
|
+
if (typeof child === "number") {
|
|
67
|
+
return child.toString();
|
|
68
|
+
}
|
|
69
|
+
if (ReactIs.isElement(child)) {
|
|
70
|
+
// for some reasons `renderToString` returns empty string if not wrappe in a `span`
|
|
71
|
+
return renderToString(<span>{child}</span>);
|
|
72
|
+
}
|
|
73
|
+
return "";
|
|
74
|
+
})
|
|
75
|
+
.join(" ")
|
|
76
|
+
.replaceAll("\n", " ");
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const shrinkedContent = onlyText(children, maxNodes)
|
|
80
|
+
.replaceAll(/<[^\s][^>]*>/g, "")
|
|
81
|
+
.slice(0, maxLength);
|
|
82
|
+
|
|
83
|
+
return useOverflowTextWrapper ? (
|
|
84
|
+
<OverflowText
|
|
85
|
+
{...overflowTextProps}
|
|
86
|
+
className={
|
|
87
|
+
`${eccgui}-textreducer` +
|
|
88
|
+
(overflowTextProps && overflowTextProps.className ? ` ${overflowTextProps.className}` : "")
|
|
89
|
+
}
|
|
90
|
+
>
|
|
91
|
+
{shrinkedContent}
|
|
92
|
+
</OverflowText>
|
|
93
|
+
) : (
|
|
94
|
+
<>{shrinkedContent}</>
|
|
95
|
+
);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export default TextReducer;
|
|
@@ -2,6 +2,7 @@ import React from "react";
|
|
|
2
2
|
import { loremIpsum } from "react-lorem-ipsum";
|
|
3
3
|
import { OverlaysProvider } from "@blueprintjs/core";
|
|
4
4
|
import { Meta, StoryFn } from "@storybook/react";
|
|
5
|
+
import { fn } from "@storybook/test";
|
|
5
6
|
|
|
6
7
|
import { Tooltip } from "../../index";
|
|
7
8
|
|
|
@@ -34,6 +35,7 @@ Default.args = {
|
|
|
34
35
|
children: "hover me",
|
|
35
36
|
content: testContent,
|
|
36
37
|
addIndicator: true,
|
|
38
|
+
onOpening: fn(),
|
|
37
39
|
};
|
|
38
40
|
|
|
39
41
|
export const MarkdownSupport = Template.bind({});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { fireEvent, render, screen, waitFor } from "@testing-library/react";
|
|
3
|
+
|
|
4
|
+
import "@testing-library/jest-dom";
|
|
5
|
+
|
|
6
|
+
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
7
|
+
|
|
8
|
+
import Tooltip from "./Tooltip";
|
|
9
|
+
import { Default as TooltipStory } from "./Tooltip.stories";
|
|
10
|
+
|
|
11
|
+
const checkForPlaceholderClass = (container: HTMLElement, tobe: number) => {
|
|
12
|
+
expect(container.getElementsByClassName(`${eccgui}-tooltip__wrapper--placeholder`).length).toBe(tobe);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
describe("Tooltip", () => {
|
|
16
|
+
it("should render placeholder automatically for text tooltip", () => {
|
|
17
|
+
const { container } = render(<Tooltip {...TooltipStory.args} content="this is a simple text tooltip" />);
|
|
18
|
+
checkForPlaceholderClass(container, 1);
|
|
19
|
+
});
|
|
20
|
+
it("should render no placeholder automatically for html tooltip", () => {
|
|
21
|
+
const { container } = render(
|
|
22
|
+
<Tooltip {...TooltipStory.args} content={<div>this is a simple text tooltip</div>} />
|
|
23
|
+
);
|
|
24
|
+
checkForPlaceholderClass(container, 0);
|
|
25
|
+
});
|
|
26
|
+
it("should render placeholder when `usePlaceholder===true`", () => {
|
|
27
|
+
const { container } = render(
|
|
28
|
+
<Tooltip {...TooltipStory.args} content={<div>this is a simple text tooltip</div>} usePlaceholder={true} />
|
|
29
|
+
);
|
|
30
|
+
checkForPlaceholderClass(container, 1);
|
|
31
|
+
});
|
|
32
|
+
it("should render no placeholder when `usePlaceholder===false`", () => {
|
|
33
|
+
const { container } = render(
|
|
34
|
+
<Tooltip {...TooltipStory.args} content="this is a simple text tooltip" usePlaceholder={false} />
|
|
35
|
+
);
|
|
36
|
+
checkForPlaceholderClass(container, 0);
|
|
37
|
+
});
|
|
38
|
+
it("should be displayed on first mouse hover when no placeholder is used", async () => {
|
|
39
|
+
const { container } = render(<Tooltip {...TooltipStory.args} usePlaceholder={false} />);
|
|
40
|
+
fireEvent.mouseEnter(container.getElementsByClassName(`${eccgui}-tooltip__wrapper`)[0]);
|
|
41
|
+
expect(await screen.findByText(TooltipStory.args.content)).toBeVisible();
|
|
42
|
+
});
|
|
43
|
+
it("should not be displayed on first mouse hover when placeholder is used but placeholder markup is swapped", async () => {
|
|
44
|
+
const { container } = render(<Tooltip {...TooltipStory.args} usePlaceholder={true} />);
|
|
45
|
+
fireEvent.mouseEnter(container.getElementsByClassName(`${eccgui}-tooltip__wrapper--placeholder`)[0]);
|
|
46
|
+
checkForPlaceholderClass(container, 1);
|
|
47
|
+
await waitFor(() => {
|
|
48
|
+
expect(screen.queryAllByText(TooltipStory.args.content)).toHaveLength(0);
|
|
49
|
+
checkForPlaceholderClass(container, 0);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
it("should be displayed on two continues mouse hover when placeholder is used", async () => {
|
|
53
|
+
const { container } = render(<Tooltip {...TooltipStory.args} usePlaceholder={true} />);
|
|
54
|
+
fireEvent.mouseEnter(container.getElementsByClassName(`${eccgui}-tooltip__wrapper`)[0]);
|
|
55
|
+
checkForPlaceholderClass(container, 1);
|
|
56
|
+
await waitFor(async () => {
|
|
57
|
+
expect(screen.queryAllByText(TooltipStory.args.content)).toHaveLength(0);
|
|
58
|
+
checkForPlaceholderClass(container, 0);
|
|
59
|
+
fireEvent.mouseOver(container.getElementsByClassName(`${eccgui}-tooltip__wrapper`)[0]);
|
|
60
|
+
expect(await screen.findByText(TooltipStory.args.content)).toBeVisible();
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
});
|
|
@@ -19,7 +19,7 @@ export interface TooltipProps extends Omit<BlueprintTooltipProps, "position"> {
|
|
|
19
19
|
/**
|
|
20
20
|
* The size specifies the dimension the tooltip overlay element can maximal grow.
|
|
21
21
|
*/
|
|
22
|
-
size?:
|
|
22
|
+
size?: TooltipSize;
|
|
23
23
|
/**
|
|
24
24
|
* The tooltip will be attached to this element when it is hovered.
|
|
25
25
|
*/
|
|
@@ -50,6 +50,8 @@ export interface TooltipProps extends Omit<BlueprintTooltipProps, "position"> {
|
|
|
50
50
|
swapPlaceholderDelay?: number;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
export type TooltipSize = "small" | "medium" | "large"
|
|
54
|
+
|
|
53
55
|
export const Tooltip = ({
|
|
54
56
|
children,
|
|
55
57
|
content,
|
|
@@ -199,7 +201,10 @@ export const Tooltip = ({
|
|
|
199
201
|
targetProps={
|
|
200
202
|
{
|
|
201
203
|
...otherTooltipProps.targetProps,
|
|
202
|
-
"data-postplaceholder":
|
|
204
|
+
"data-postplaceholder":
|
|
205
|
+
eventMemory.current && searchId.current
|
|
206
|
+
? `id${eventMemory.current}${searchId.current}`
|
|
207
|
+
: undefined,
|
|
203
208
|
} as React.HTMLProps<HTMLElement>
|
|
204
209
|
}
|
|
205
210
|
>
|
|
@@ -6,8 +6,9 @@ $eccgui-size-typo-tooltip-lineheight: $eccgui-size-typo-caption-lineheight !defa
|
|
|
6
6
|
$eccgui-size-tooltip-width: 20em !default;
|
|
7
7
|
|
|
8
8
|
// library vars
|
|
9
|
-
$tooltip-background-color:
|
|
10
|
-
$tooltip-text-color:
|
|
9
|
+
$tooltip-background-color: #{eccgui-color-var("layout", "grey", "900")};
|
|
10
|
+
$tooltip-text-color: #{eccgui-color-var("identity", "text", "300")};
|
|
11
|
+
|
|
11
12
|
// $dark-tooltip-background-color: $light-gray3 !default;
|
|
12
13
|
// $dark-tooltip-text-color: $dark-gray5 !default;
|
|
13
14
|
$tooltip-padding-vertical: $eccgui-size-block-whitespace * 0.25; // !default;
|
|
@@ -45,7 +46,10 @@ $tooltip-padding-horizontal: $eccgui-size-block-whitespace * 0.5; // !default;
|
|
|
45
46
|
pre,
|
|
46
47
|
.#{$eccgui}-typography__contentblock pre,
|
|
47
48
|
pre.#{$eccgui}-typography__text {
|
|
48
|
-
background-color:
|
|
49
|
+
background-color: eccgui-color-mix(
|
|
50
|
+
eccgui-color-var("identity", "background", "900") 100% * $eccgui-opacity-ghostly,
|
|
51
|
+
transparent
|
|
52
|
+
);
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
55
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
|
-
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
4
3
|
import { TestableComponent } from "../../components/interfaces";
|
|
4
|
+
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
5
5
|
|
|
6
6
|
export interface OverflowTextProps extends React.HTMLAttributes<HTMLElement>, TestableComponent {
|
|
7
7
|
/**
|
|
@@ -25,11 +25,6 @@ export interface OverflowTextProps extends React.HTMLAttributes<HTMLElement>, Te
|
|
|
25
25
|
* HTML element that is used for the component.
|
|
26
26
|
*/
|
|
27
27
|
useHtmlElement?: "p" | "div" | "span";
|
|
28
|
-
/**
|
|
29
|
-
* Used for all other necessary properties.
|
|
30
|
-
* @deprecated (v25) we will allow only basic HTML element properties and testing IDs
|
|
31
|
-
*/
|
|
32
|
-
[key: string]: any;
|
|
33
28
|
}
|
|
34
29
|
|
|
35
30
|
/** Prevents text from overflowing. */
|
|
@@ -53,7 +53,7 @@ mark {
|
|
|
53
53
|
styles from other stylesheets we cannot control here
|
|
54
54
|
TODO: need to reevaluated when it is not used together with MDL anymore
|
|
55
55
|
*/
|
|
56
|
-
background-color: rgba($eccgui-color-info-background, 1) !important;
|
|
56
|
+
background-color: eccgui-color-rgba($eccgui-color-info-background, 1) !important;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
// HtmlContentBlock
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { createPortal } from "react-dom";
|
|
3
|
+
import { Classes as BlueprintClasses } from "@blueprintjs/core";
|
|
4
|
+
import { createPopper } from "@popperjs/core";
|
|
5
|
+
|
|
6
|
+
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
7
|
+
import {
|
|
8
|
+
Badge,
|
|
9
|
+
Button,
|
|
10
|
+
Card,
|
|
11
|
+
CardActions,
|
|
12
|
+
CardActionsAux,
|
|
13
|
+
CardContent,
|
|
14
|
+
CardHeader,
|
|
15
|
+
CardOptions,
|
|
16
|
+
CardTitle,
|
|
17
|
+
IconButton,
|
|
18
|
+
Markdown,
|
|
19
|
+
ModalSize,
|
|
20
|
+
SimpleDialog,
|
|
21
|
+
Spacing,
|
|
22
|
+
TooltipSize,
|
|
23
|
+
} from "../../index";
|
|
24
|
+
|
|
25
|
+
export interface VisualTourProps {
|
|
26
|
+
/** The steps of the tour. */
|
|
27
|
+
steps: VisualTourStep[];
|
|
28
|
+
/** Called when the tour is cancelled or closed at then end. This should usually remove the component from the outside. */
|
|
29
|
+
onClose: () => void;
|
|
30
|
+
/** Label of the button to close the tour. */
|
|
31
|
+
closeLabel?: string;
|
|
32
|
+
/** The label for the 'next' button. */
|
|
33
|
+
nextLabel?: string;
|
|
34
|
+
/** The label for the 'previous' button. */
|
|
35
|
+
prevLabel?: string;
|
|
36
|
+
/** The step target is usable, e.g. it can be clicked. */
|
|
37
|
+
usableStepTarget?: boolean;
|
|
38
|
+
/** Need to be set to `true` that the tour is displayed. */
|
|
39
|
+
isOpen?: boolean;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface VisualTourStep {
|
|
43
|
+
title: string;
|
|
44
|
+
/** The description or more elaborate content element that is shown in the modal/overlay. */
|
|
45
|
+
content: string | (() => React.JSX.Element);
|
|
46
|
+
/** Optional element that should be highlighted. The step content is displayed as a tooltip instead of a modal.
|
|
47
|
+
* In case of an array, the first match is highlighted. */
|
|
48
|
+
highlightElementQuery?: string | string[];
|
|
49
|
+
/** The texts used in the step, e.g. when custom layouts are rendered, these will be used for the text strings. */
|
|
50
|
+
texts?: Record<string, string>;
|
|
51
|
+
/** An image URL. This will be displayed in the step description. */
|
|
52
|
+
image?: string;
|
|
53
|
+
/** The size of the tooltip or modal. */
|
|
54
|
+
size?: TooltipSize | ModalSize;
|
|
55
|
+
/** The step target is usable, e.g. it can be clicked. Overwrites the setting in `<VisualTour/>`. */
|
|
56
|
+
usableStepTarget?: boolean;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** This should be used for defining steps in a separate object/file. Use with 'satisfies' after the object definition. */
|
|
60
|
+
export type VisualTourStepDefinitions = Record<string, Partial<VisualTourStep>>;
|
|
61
|
+
|
|
62
|
+
const highlightElementBaseClass = `${eccgui}-visual-tour__highlighted-element`;
|
|
63
|
+
|
|
64
|
+
/** A visual tour multi-step tour of the current view. */
|
|
65
|
+
export const VisualTour = ({
|
|
66
|
+
steps,
|
|
67
|
+
onClose,
|
|
68
|
+
closeLabel = "Close",
|
|
69
|
+
nextLabel = "Next",
|
|
70
|
+
prevLabel = "Back",
|
|
71
|
+
usableStepTarget = false,
|
|
72
|
+
isOpen = false,
|
|
73
|
+
}: VisualTourProps) => {
|
|
74
|
+
if (isOpen === false) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const [currentStepIndex, setCurrentStepIndex] = React.useState<number>(0);
|
|
79
|
+
const [currentStepComponent, setCurrentStepComponent] = React.useState<React.JSX.Element | null>(null);
|
|
80
|
+
|
|
81
|
+
React.useEffect(() => {
|
|
82
|
+
const closeTour = () => {
|
|
83
|
+
// clear observer and disconnect
|
|
84
|
+
if (lastObserver) {
|
|
85
|
+
lastObserver.takeRecords();
|
|
86
|
+
lastObserver.disconnect();
|
|
87
|
+
}
|
|
88
|
+
// empty step
|
|
89
|
+
setCurrentStepComponent(null);
|
|
90
|
+
// remove highlight classes
|
|
91
|
+
document.querySelector(`.${highlightElementBaseClass}`)?.classList.remove(highlightElementBaseClass);
|
|
92
|
+
document
|
|
93
|
+
.querySelector(`.${highlightElementBaseClass}--useable`)
|
|
94
|
+
?.classList.remove(`${highlightElementBaseClass}--useable`);
|
|
95
|
+
// call callback function from outside
|
|
96
|
+
onClose();
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const step = steps[currentStepIndex];
|
|
100
|
+
if (!step) {
|
|
101
|
+
// This should not happen
|
|
102
|
+
closeTour();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const highlightElementClass = (
|
|
106
|
+
typeof step["usableStepTarget"] === "undefined" ? usableStepTarget : step["usableStepTarget"]
|
|
107
|
+
)
|
|
108
|
+
? `${highlightElementBaseClass}--useable`
|
|
109
|
+
: highlightElementBaseClass;
|
|
110
|
+
const hasNextStep = currentStepIndex + 1 < steps.length;
|
|
111
|
+
const hasPreviousStep = currentStepIndex > 0;
|
|
112
|
+
// Configure optional highlighting
|
|
113
|
+
let elementToHighlight: HTMLElement | null = null;
|
|
114
|
+
let lastObserver: MutationObserver | null = null;
|
|
115
|
+
const setStepComponent = () => {
|
|
116
|
+
const stepDisplay = (
|
|
117
|
+
<Badge tagProps={{ emphasis: "weaker" }} size="large">
|
|
118
|
+
{` ${currentStepIndex + 1}/${steps.length} `}
|
|
119
|
+
</Badge>
|
|
120
|
+
);
|
|
121
|
+
const closeButton = <IconButton name="navigation-close" text={closeLabel} onClick={closeTour} />;
|
|
122
|
+
const titleOptions = (
|
|
123
|
+
<>
|
|
124
|
+
{stepDisplay}
|
|
125
|
+
{closeButton}
|
|
126
|
+
</>
|
|
127
|
+
);
|
|
128
|
+
const actionButtons = [
|
|
129
|
+
hasNextStep ? (
|
|
130
|
+
<Button
|
|
131
|
+
key={"next"}
|
|
132
|
+
variant="outlined"
|
|
133
|
+
intent={"primary"}
|
|
134
|
+
onClick={() => {
|
|
135
|
+
setCurrentStepIndex(currentStepIndex + 1);
|
|
136
|
+
}}
|
|
137
|
+
rightIcon={"navigation-next"}
|
|
138
|
+
>
|
|
139
|
+
{nextLabel}: {steps[currentStepIndex + 1].title}
|
|
140
|
+
</Button>
|
|
141
|
+
) : (
|
|
142
|
+
<Button
|
|
143
|
+
key={"close"}
|
|
144
|
+
text={closeLabel}
|
|
145
|
+
onClick={closeTour}
|
|
146
|
+
variant="outlined"
|
|
147
|
+
intent={"primary"}
|
|
148
|
+
rightIcon={"navigation-close"}
|
|
149
|
+
/>
|
|
150
|
+
),
|
|
151
|
+
hasPreviousStep ? (
|
|
152
|
+
<CardActionsAux>
|
|
153
|
+
<Button
|
|
154
|
+
key={"prev"}
|
|
155
|
+
variant="outlined"
|
|
156
|
+
onClick={() => {
|
|
157
|
+
setCurrentStepIndex(currentStepIndex - 1);
|
|
158
|
+
}}
|
|
159
|
+
icon={"navigation-previous"}
|
|
160
|
+
>
|
|
161
|
+
{prevLabel}
|
|
162
|
+
</Button>
|
|
163
|
+
</CardActionsAux>
|
|
164
|
+
) : null,
|
|
165
|
+
];
|
|
166
|
+
// TODO: What to do if an element should have been highlighted, but none was found?
|
|
167
|
+
if (elementToHighlight) {
|
|
168
|
+
setCurrentStepComponent(
|
|
169
|
+
<StepPopover
|
|
170
|
+
highlightedElement={elementToHighlight}
|
|
171
|
+
titleOption={titleOptions}
|
|
172
|
+
actionButtons={actionButtons}
|
|
173
|
+
step={step}
|
|
174
|
+
/>
|
|
175
|
+
);
|
|
176
|
+
} else {
|
|
177
|
+
setCurrentStepComponent(
|
|
178
|
+
<StepModal
|
|
179
|
+
titleOption={titleOptions}
|
|
180
|
+
actionButtons={actionButtons}
|
|
181
|
+
step={step}
|
|
182
|
+
onClose={closeTour}
|
|
183
|
+
/>
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
const addElementHighlighting = () => {
|
|
188
|
+
if (step.highlightElementQuery) {
|
|
189
|
+
const queries: string[] =
|
|
190
|
+
typeof step.highlightElementQuery === "string"
|
|
191
|
+
? [step.highlightElementQuery]
|
|
192
|
+
: step.highlightElementQuery;
|
|
193
|
+
queries.forEach((query) => {
|
|
194
|
+
if (elementToHighlight == null) {
|
|
195
|
+
elementToHighlight = document.querySelector(query);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
} else {
|
|
199
|
+
elementToHighlight = null;
|
|
200
|
+
}
|
|
201
|
+
if (elementToHighlight) {
|
|
202
|
+
// Typescript for some reason incorrectly infers the type of elementToHighlight as never
|
|
203
|
+
(elementToHighlight as HTMLElement).classList.add(highlightElementClass);
|
|
204
|
+
(elementToHighlight as HTMLElement).scrollIntoView({
|
|
205
|
+
behavior: "smooth",
|
|
206
|
+
block: "center",
|
|
207
|
+
});
|
|
208
|
+
if (lastObserver) {
|
|
209
|
+
lastObserver.disconnect();
|
|
210
|
+
}
|
|
211
|
+
lastObserver = new MutationObserver(function () {
|
|
212
|
+
// Re-new element highlighting
|
|
213
|
+
if (step.highlightElementQuery) {
|
|
214
|
+
if (!document.body.contains(elementToHighlight)) {
|
|
215
|
+
// Element has been removed or replaced
|
|
216
|
+
elementToHighlight = null;
|
|
217
|
+
addElementHighlighting();
|
|
218
|
+
} else if (!elementToHighlight?.classList.contains(highlightElementClass)) {
|
|
219
|
+
// Only the classes have been removed
|
|
220
|
+
elementToHighlight?.classList.add(highlightElementClass);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
lastObserver.observe(document.body, { childList: true, subtree: true });
|
|
225
|
+
}
|
|
226
|
+
setStepComponent();
|
|
227
|
+
};
|
|
228
|
+
addElementHighlighting();
|
|
229
|
+
return () => {
|
|
230
|
+
// Remove previous element highlight
|
|
231
|
+
document.querySelector(`.${highlightElementClass}`)?.classList.remove(highlightElementClass);
|
|
232
|
+
if (lastObserver) {
|
|
233
|
+
lastObserver.disconnect();
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
}, [currentStepIndex, usableStepTarget]);
|
|
237
|
+
|
|
238
|
+
return currentStepComponent;
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
interface StepModalProps {
|
|
242
|
+
step: VisualTourStep;
|
|
243
|
+
// Current step starting with 1
|
|
244
|
+
titleOption: React.JSX.Element;
|
|
245
|
+
// Close the visual tour
|
|
246
|
+
onClose: () => void;
|
|
247
|
+
// The navigation buttons
|
|
248
|
+
actionButtons: (React.JSX.Element | null)[];
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Main content of a step
|
|
252
|
+
const StepContent = ({ step }: { step: VisualTourStep }) => {
|
|
253
|
+
return (
|
|
254
|
+
<>
|
|
255
|
+
{step.image && (
|
|
256
|
+
<>
|
|
257
|
+
<img src={step.image} />
|
|
258
|
+
<Spacing size="small" />
|
|
259
|
+
</>
|
|
260
|
+
)}
|
|
261
|
+
{typeof step.content === "string" ? <Markdown>{step.content}</Markdown> : step.content()}
|
|
262
|
+
</>
|
|
263
|
+
);
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
/** Modal that is displayed for a step. */
|
|
267
|
+
const StepModal = ({ step, titleOption, onClose, actionButtons }: StepModalProps) => {
|
|
268
|
+
return (
|
|
269
|
+
<SimpleDialog
|
|
270
|
+
title={step.title}
|
|
271
|
+
headerOptions={titleOption}
|
|
272
|
+
isOpen={true}
|
|
273
|
+
preventSimpleClosing={true}
|
|
274
|
+
onClose={onClose}
|
|
275
|
+
actions={actionButtons}
|
|
276
|
+
size={step.size === "medium" ? "regular" : step.size ?? "regular"}
|
|
277
|
+
overlayClassName={`${eccgui}-visual-tour__dialog`}
|
|
278
|
+
>
|
|
279
|
+
<StepContent step={step} />
|
|
280
|
+
</SimpleDialog>
|
|
281
|
+
);
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
interface StepPopoverProps {
|
|
285
|
+
highlightedElement: Element;
|
|
286
|
+
step: VisualTourStep;
|
|
287
|
+
// Current step starting with 1
|
|
288
|
+
titleOption: React.JSX.Element;
|
|
289
|
+
// The navigation buttons
|
|
290
|
+
actionButtons: (React.JSX.Element | null)[];
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/** Popover that is displayed and points at the highlighted element. */
|
|
294
|
+
const StepPopover = ({ highlightedElement, step, titleOption, actionButtons }: StepPopoverProps) => {
|
|
295
|
+
const tooltipRef = React.useCallback(
|
|
296
|
+
(tooltip: HTMLDivElement | null) => {
|
|
297
|
+
if (tooltip) {
|
|
298
|
+
createPopper(highlightedElement, tooltip, {
|
|
299
|
+
placement: "auto",
|
|
300
|
+
modifiers: [
|
|
301
|
+
{
|
|
302
|
+
name: "offset",
|
|
303
|
+
options: {
|
|
304
|
+
offset: [0, 15],
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
],
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
[highlightedElement]
|
|
312
|
+
);
|
|
313
|
+
|
|
314
|
+
const backdropRef = React.useCallback(
|
|
315
|
+
(backdrop: HTMLDivElement | null) => {
|
|
316
|
+
const highlightStencil = () => {
|
|
317
|
+
const targetRect = highlightedElement.getBoundingClientRect();
|
|
318
|
+
backdrop!.style.left = `calc(${
|
|
319
|
+
targetRect.left + window.scrollX + "px"
|
|
320
|
+
} - var(--${eccgui}-visual-tour-focus-padding))`;
|
|
321
|
+
backdrop!.style.top = `calc(${
|
|
322
|
+
targetRect.top + window.scrollY + "px"
|
|
323
|
+
} - var(--${eccgui}-visual-tour-focus-padding))`;
|
|
324
|
+
backdrop!.style.width = `calc(${
|
|
325
|
+
targetRect.width + "px"
|
|
326
|
+
} + 2 * var(--${eccgui}-visual-tour-focus-padding))`;
|
|
327
|
+
backdrop!.style.height = `calc(${
|
|
328
|
+
targetRect.height + "px"
|
|
329
|
+
} + 2 * var(--${eccgui}-visual-tour-focus-padding))`;
|
|
330
|
+
};
|
|
331
|
+
if (backdrop) {
|
|
332
|
+
highlightStencil();
|
|
333
|
+
window.addEventListener("resize", highlightStencil);
|
|
334
|
+
return () => {
|
|
335
|
+
window.removeEventListener("resize", highlightStencil);
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
return;
|
|
339
|
+
},
|
|
340
|
+
[highlightedElement]
|
|
341
|
+
);
|
|
342
|
+
|
|
343
|
+
return createPortal(
|
|
344
|
+
<div className={`${eccgui}-visual-tour`}>
|
|
345
|
+
<div className={`${eccgui}-visual-tour__focushelper`} ref={backdropRef} />
|
|
346
|
+
<div>
|
|
347
|
+
<div className={`${eccgui}-visual-tour__backdrop`} />
|
|
348
|
+
</div>
|
|
349
|
+
<div
|
|
350
|
+
className={
|
|
351
|
+
`${eccgui}-visual-tour__overlay` +
|
|
352
|
+
` ${eccgui}-visual-tour__overlay--${step.size ?? "large"}` +
|
|
353
|
+
` ${BlueprintClasses.POPOVER}`
|
|
354
|
+
}
|
|
355
|
+
role="tooltip"
|
|
356
|
+
ref={tooltipRef}
|
|
357
|
+
>
|
|
358
|
+
<div
|
|
359
|
+
className={`${eccgui}-visual-tour__arrow ${BlueprintClasses.POPOVER_ARROW}`}
|
|
360
|
+
data-popper-arrow
|
|
361
|
+
aria-hidden
|
|
362
|
+
/>
|
|
363
|
+
<div className={`${BlueprintClasses.POPOVER_CONTENT} ${eccgui}-visual-tour__overlay__content`}>
|
|
364
|
+
<Card isOnlyLayout elevation={-1} whitespaceAmount="small">
|
|
365
|
+
<CardHeader>
|
|
366
|
+
<CardTitle>{step.title}</CardTitle>
|
|
367
|
+
<CardOptions>{titleOption}</CardOptions>
|
|
368
|
+
</CardHeader>
|
|
369
|
+
<CardContent>
|
|
370
|
+
<StepContent step={step} />
|
|
371
|
+
</CardContent>
|
|
372
|
+
<CardActions inverseDirection>{actionButtons}</CardActions>
|
|
373
|
+
</Card>
|
|
374
|
+
</div>
|
|
375
|
+
</div>
|
|
376
|
+
</div>,
|
|
377
|
+
document.body
|
|
378
|
+
);
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
export default VisualTour;
|