@eccenca/gui-elements 24.0.0-rc.2 → 24.0.0-rc.4
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 +64 -5
- package/README.md +5 -3
- package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
- package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
- package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +3 -5
- package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
- package/dist/cjs/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js +4 -8
- package/dist/cjs/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js.map +1 -1
- package/dist/cjs/cmem/markdown/Markdown.js +6 -4
- package/dist/cjs/cmem/markdown/Markdown.js.map +1 -1
- package/dist/cjs/cmem/markdown/highlightSearchWords.js +5 -8
- package/dist/cjs/cmem/markdown/highlightSearchWords.js.map +1 -1
- package/dist/cjs/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -1
- package/dist/cjs/common/index.js +1 -3
- package/dist/cjs/common/index.js.map +1 -1
- package/dist/cjs/components/Accordion/Accordion.js +2 -7
- package/dist/cjs/components/Accordion/Accordion.js.map +1 -1
- package/dist/cjs/components/Accordion/AccordionItem.js +1 -2
- package/dist/cjs/components/Accordion/AccordionItem.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +117 -64
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js +13 -51
- package/dist/cjs/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/extensions/markText.js +55 -0
- package/dist/cjs/components/AutoSuggestion/extensions/markText.js.map +1 -0
- package/dist/cjs/components/AutoSuggestion/index.js +1 -3
- package/dist/cjs/components/AutoSuggestion/index.js.map +1 -1
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +2 -6
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/cjs/components/AutocompleteField/index.js +1 -0
- package/dist/cjs/components/AutocompleteField/index.js.map +1 -1
- package/dist/cjs/components/Breadcrumb/BreadcrumbList.js +2 -2
- package/dist/cjs/components/Breadcrumb/BreadcrumbList.js.map +1 -1
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/Card/CardHeader.js +2 -2
- package/dist/cjs/components/Card/CardHeader.js.map +1 -1
- package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js +3 -3
- package/dist/cjs/components/CodeAutocompleteField/CodeAutocompleteField.js.map +1 -1
- package/dist/cjs/components/Dialog/AlertDialog.js.map +1 -1
- package/dist/cjs/components/Dialog/Modal.js +2 -2
- package/dist/cjs/components/Dialog/Modal.js.map +1 -1
- package/dist/cjs/components/Grid/Grid.js.map +1 -1
- package/dist/cjs/components/Grid/GridColumn.js +1 -1
- package/dist/cjs/components/Grid/GridColumn.js.map +1 -1
- package/dist/cjs/components/Icon/Icon.js +3 -5
- package/dist/cjs/components/Icon/Icon.js.map +1 -1
- package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/cjs/components/MultiSelect/MultiSelect.js +33 -16
- package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js +7 -2
- package/dist/cjs/components/MultiSuggestField/MultiSuggestField.js.map +1 -1
- package/dist/cjs/components/Notification/Notification.js +2 -5
- package/dist/cjs/components/Notification/Notification.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +0 -6
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
- package/dist/cjs/components/SuggestField/SuggestField.js +2 -2
- package/dist/cjs/components/SuggestField/SuggestField.js.map +1 -1
- package/dist/cjs/components/Table/Table.js +0 -3
- package/dist/cjs/components/Table/Table.js.map +1 -1
- package/dist/cjs/components/Tag/Tag.js +1 -0
- package/dist/cjs/components/Tag/Tag.js.map +1 -1
- package/dist/cjs/components/TextField/TextArea.js +1 -19
- package/dist/cjs/components/TextField/TextArea.js.map +1 -1
- package/dist/cjs/components/TextField/TextField.js +6 -24
- package/dist/cjs/components/TextField/TextField.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/Typography/Highlighter.js +0 -6
- package/dist/cjs/components/Typography/Highlighter.js.map +1 -1
- package/dist/cjs/components/Typography/index.js +0 -8
- package/dist/cjs/components/Typography/index.js.map +1 -1
- package/dist/cjs/components/Workspace/WorkspaceContent.js +1 -1
- package/dist/cjs/components/Workspace/WorkspaceContent.js.map +1 -1
- package/dist/cjs/components/index.js +0 -1
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/extensions/codemirror/CodeMirror.js +92 -86
- package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +43 -0
- package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -0
- package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js +49 -0
- package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -0
- package/dist/cjs/extensions/react-flow/edges/edgeTypes.js +1 -1
- package/dist/cjs/extensions/react-flow/edges/edgeTypes.js.map +1 -1
- package/dist/cjs/extensions/react-flow/index.js +3 -14
- package/dist/cjs/extensions/react-flow/index.js.map +1 -1
- package/dist/cjs/extensions/react-flow/minimap/utils.js +4 -7
- package/dist/cjs/extensions/react-flow/minimap/utils.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +2 -10
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js +1 -1
- package/dist/cjs/extensions/react-flow/nodes/nodeTypes.js.map +1 -1
- package/dist/cjs/index.js +1 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js +1 -0
- package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js.map +1 -1
- package/dist/cjs/legacy-replacements/Button/Button.js +2 -0
- package/dist/cjs/legacy-replacements/Button/Button.js.map +1 -1
- package/dist/cjs/legacy-replacements/Button/DismissiveButton.js +1 -0
- package/dist/cjs/legacy-replacements/Button/DismissiveButton.js.map +1 -1
- package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js +1 -0
- package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js.map +1 -1
- package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js +2 -0
- package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/legacy-replacements/Radio/RadioButton.js +2 -0
- package/dist/cjs/legacy-replacements/Radio/RadioButton.js.map +1 -1
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js +1 -0
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js.map +1 -1
- package/dist/cjs/legacy-replacements/TextField/TextField.js +2 -0
- package/dist/cjs/legacy-replacements/TextField/TextField.js.map +1 -1
- package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
- package/dist/esm/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
- package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +3 -4
- package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
- package/dist/esm/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js +2 -4
- package/dist/esm/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.js.map +1 -1
- package/dist/esm/cmem/markdown/Markdown.js +6 -4
- package/dist/esm/cmem/markdown/Markdown.js.map +1 -1
- package/dist/esm/cmem/markdown/highlightSearchWords.js +5 -8
- package/dist/esm/cmem/markdown/highlightSearchWords.js.map +1 -1
- package/dist/esm/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -1
- package/dist/esm/common/index.js +0 -2
- package/dist/esm/common/index.js.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +2 -7
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Accordion/AccordionItem.js +1 -2
- package/dist/esm/components/Accordion/AccordionItem.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +136 -82
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js +36 -60
- package/dist/esm/components/AutoSuggestion/ExtendedCodeEditor.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/extensions/markText.js +72 -0
- package/dist/esm/components/AutoSuggestion/extensions/markText.js.map +1 -0
- package/dist/esm/components/AutoSuggestion/index.js +1 -2
- package/dist/esm/components/AutoSuggestion/index.js.map +1 -1
- package/dist/esm/components/AutocompleteField/AutoCompleteField.js +3 -6
- package/dist/esm/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/esm/components/AutocompleteField/index.js +1 -0
- package/dist/esm/components/AutocompleteField/index.js.map +1 -1
- package/dist/esm/components/Breadcrumb/BreadcrumbList.js +2 -2
- package/dist/esm/components/Breadcrumb/BreadcrumbList.js.map +1 -1
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Card/CardHeader.js +2 -2
- package/dist/esm/components/Card/CardHeader.js.map +1 -1
- package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js +2 -2
- package/dist/esm/components/CodeAutocompleteField/CodeAutocompleteField.js.map +1 -1
- package/dist/esm/components/Dialog/AlertDialog.js.map +1 -1
- package/dist/esm/components/Dialog/Modal.js +3 -3
- package/dist/esm/components/Dialog/Modal.js.map +1 -1
- package/dist/esm/components/Grid/Grid.js.map +1 -1
- package/dist/esm/components/Grid/GridColumn.js +1 -1
- package/dist/esm/components/Grid/GridColumn.js.map +1 -1
- package/dist/esm/components/Icon/Icon.js +1 -2
- package/dist/esm/components/Icon/Icon.js.map +1 -1
- package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/esm/components/MultiSelect/MultiSelect.js +36 -18
- package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/esm/components/MultiSuggestField/MultiSuggestField.js +6 -1
- package/dist/esm/components/MultiSuggestField/MultiSuggestField.js.map +1 -1
- package/dist/esm/components/Notification/Notification.js +2 -6
- package/dist/esm/components/Notification/Notification.js.map +1 -1
- package/dist/esm/components/Select/Select.js +0 -6
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Spinner/Spinner.js.map +1 -1
- package/dist/esm/components/SuggestField/SuggestField.js +1 -1
- package/dist/esm/components/SuggestField/SuggestField.js.map +1 -1
- package/dist/esm/components/Table/Table.js +0 -3
- package/dist/esm/components/Table/Table.js.map +1 -1
- package/dist/esm/components/Tag/Tag.js +1 -0
- package/dist/esm/components/Tag/Tag.js.map +1 -1
- package/dist/esm/components/TextField/TextArea.js +2 -20
- package/dist/esm/components/TextField/TextArea.js.map +1 -1
- package/dist/esm/components/TextField/TextField.js +6 -24
- package/dist/esm/components/TextField/TextField.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Typography/Highlighter.js +3 -6
- package/dist/esm/components/Typography/Highlighter.js.map +1 -1
- package/dist/esm/components/Typography/index.js +0 -7
- package/dist/esm/components/Typography/index.js.map +1 -1
- package/dist/esm/components/Workspace/WorkspaceContent.js +1 -1
- package/dist/esm/components/Workspace/WorkspaceContent.js.map +1 -1
- package/dist/esm/components/index.js +0 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/extensions/codemirror/CodeMirror.js +133 -83
- package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +39 -0
- package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -0
- package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js +55 -0
- package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -0
- package/dist/esm/extensions/react-flow/edges/edgeTypes.js +1 -1
- package/dist/esm/extensions/react-flow/edges/edgeTypes.js.map +1 -1
- package/dist/esm/extensions/react-flow/index.js +2 -12
- package/dist/esm/extensions/react-flow/index.js.map +1 -1
- package/dist/esm/extensions/react-flow/minimap/utils.js +4 -7
- package/dist/esm/extensions/react-flow/minimap/utils.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js +2 -10
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/nodeTypes.js +1 -1
- package/dist/esm/extensions/react-flow/nodes/nodeTypes.js.map +1 -1
- package/dist/esm/index.js +1 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/legacy-replacements/Button/AffirmativeButton.js +1 -0
- package/dist/esm/legacy-replacements/Button/AffirmativeButton.js.map +1 -1
- package/dist/esm/legacy-replacements/Button/Button.js +2 -0
- package/dist/esm/legacy-replacements/Button/Button.js.map +1 -1
- package/dist/esm/legacy-replacements/Button/DismissiveButton.js +1 -0
- package/dist/esm/legacy-replacements/Button/DismissiveButton.js.map +1 -1
- package/dist/esm/legacy-replacements/Button/DisruptiveButton.js +1 -0
- package/dist/esm/legacy-replacements/Button/DisruptiveButton.js.map +1 -1
- package/dist/esm/legacy-replacements/Checkbox/Checkbox.js +2 -0
- package/dist/esm/legacy-replacements/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/legacy-replacements/Radio/RadioButton.js +2 -0
- package/dist/esm/legacy-replacements/Radio/RadioButton.js.map +1 -1
- package/dist/esm/legacy-replacements/Tabs/Tabs.js +1 -0
- package/dist/esm/legacy-replacements/Tabs/Tabs.js.map +1 -1
- package/dist/esm/legacy-replacements/TextField/TextField.js +2 -0
- package/dist/esm/legacy-replacements/TextField/TextField.js.map +1 -1
- package/dist/types/cmem/ActivityControl/ActivityControlTypes.d.ts +3 -5
- package/dist/types/cmem/ActivityControl/ActivityControlWidget.d.ts +0 -2
- package/dist/types/cmem/ActivityControl/SilkActivityControl.d.ts +7 -11
- package/dist/types/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.d.ts +3 -3
- package/dist/types/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.d.ts +1 -12
- package/dist/types/cmem/markdown/Markdown.d.ts +0 -1
- package/dist/types/cmem/markdown/highlightSearchWords.d.ts +0 -6
- package/dist/types/cmem/react-flow/nodes/StickyNoteNode.d.ts +2 -2
- package/dist/types/common/index.d.ts +0 -24
- package/dist/types/components/Accordion/Accordion.d.ts +1 -6
- package/dist/types/components/Accordion/AccordionItem.d.ts +1 -6
- package/dist/types/components/AutoSuggestion/AutoSuggestion.d.ts +27 -17
- package/dist/types/components/AutoSuggestion/AutoSuggestionList.d.ts +0 -1
- package/dist/types/components/AutoSuggestion/ExtendedCodeEditor.d.ts +10 -11
- package/dist/types/components/AutoSuggestion/extensions/markText.d.ts +16 -0
- package/dist/types/components/AutoSuggestion/index.d.ts +2 -2
- package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +11 -15
- package/dist/types/components/AutocompleteField/index.d.ts +1 -0
- package/dist/types/components/AutocompleteField/interfaces.d.ts +4 -2
- package/dist/types/components/Breadcrumb/BreadcrumbList.d.ts +1 -6
- package/dist/types/components/Button/Button.d.ts +0 -2
- package/dist/types/components/Card/CardHeader.d.ts +1 -9
- package/dist/types/components/Dialog/AlertDialog.d.ts +0 -1
- package/dist/types/components/Grid/Grid.d.ts +0 -5
- package/dist/types/components/Grid/GridColumn.d.ts +1 -6
- package/dist/types/components/Icon/BaseIcon.d.ts +2 -2
- package/dist/types/components/Icon/Icon.d.ts +0 -5
- package/dist/types/components/Icon/canonicalIconNames.d.ts +2 -7
- package/dist/types/components/MultiSelect/MultiSelect.d.ts +12 -8
- package/dist/types/components/MultiSuggestField/MultiSuggestField.d.ts +11 -2
- package/dist/types/components/Notification/Notification.d.ts +1 -14
- package/dist/types/components/Select/Select.d.ts +0 -3
- package/dist/types/components/Spinner/Spinner.d.ts +3 -3
- package/dist/types/components/SuggestField/SuggestField.d.ts +5 -0
- package/dist/types/components/SuggestField/index.d.ts +1 -1
- package/dist/types/components/Table/Table.d.ts +1 -4
- package/dist/types/components/Tag/Tag.d.ts +0 -5
- package/dist/types/components/TextField/TextArea.d.ts +1 -21
- package/dist/types/components/TextField/TextField.d.ts +3 -23
- package/dist/types/components/Tooltip/Tooltip.d.ts +2 -2
- package/dist/types/components/Typography/Highlighter.d.ts +3 -6
- package/dist/types/components/Typography/index.d.ts +0 -6
- package/dist/types/components/index.d.ts +0 -1
- package/dist/types/extensions/codemirror/CodeMirror.d.ts +54 -26
- package/dist/types/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.d.ts +23 -0
- package/dist/types/extensions/codemirror/tests/codemirrorTestHelper.d.ts +20 -0
- package/dist/types/extensions/react-flow/edges/edgeTypes.d.ts +1 -0
- package/dist/types/extensions/react-flow/index.d.ts +0 -14
- package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +6 -14
- package/dist/types/extensions/react-flow/nodes/NodeDefault.d.ts +0 -1
- package/dist/types/extensions/react-flow/nodes/nodeTypes.d.ts +1 -0
- package/dist/types/extensions/react-flow/nodes/sharedTypes.d.ts +0 -1
- package/dist/types/index.d.ts +1 -9
- package/dist/types/legacy-replacements/Button/AffirmativeButton.d.ts +1 -0
- package/dist/types/legacy-replacements/Button/Button.d.ts +1 -0
- package/dist/types/legacy-replacements/Button/DismissiveButton.d.ts +1 -0
- package/dist/types/legacy-replacements/Button/DisruptiveButton.d.ts +1 -0
- package/dist/types/legacy-replacements/Checkbox/Checkbox.d.ts +1 -0
- package/dist/types/legacy-replacements/Radio/RadioButton.d.ts +1 -0
- package/dist/types/legacy-replacements/Tabs/Tabs.d.ts +4 -2
- package/dist/types/legacy-replacements/TextField/TextField.d.ts +1 -0
- package/package.json +26 -23
- package/src/cmem/ActivityControl/ActivityControlTypes.ts +3 -7
- package/src/cmem/ActivityControl/ActivityControlWidget.tsx +0 -6
- package/src/cmem/ActivityControl/SilkActivityControl.tsx +8 -18
- package/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx +14 -11
- package/src/cmem/DateTimeDisplay/ElapsedDateTimeDisplay.tsx +11 -7
- package/src/cmem/DateTimeDisplay/tests/ElapsedDateTimeDisplay.test.tsx +9 -4
- package/src/cmem/markdown/Markdown.stories.tsx +6 -0
- package/src/cmem/markdown/Markdown.tsx +8 -6
- package/src/cmem/markdown/highlightSearchWords.test.ts +3 -2
- package/src/cmem/markdown/highlightSearchWords.ts +5 -10
- package/src/cmem/markdown/markdown.utils.ts +10 -10
- package/src/cmem/markdown/markdownutils.test.ts +9 -5
- package/src/cmem/react-flow/StickyNoteModal/StickyNoteModal.tsx +1 -1
- package/src/cmem/react-flow/nodes/StickyNoteNode.tsx +2 -2
- package/src/common/index.ts +0 -3
- package/src/components/Accordion/Accordion.tsx +0 -13
- package/src/components/Accordion/AccordionItem.tsx +0 -7
- package/src/components/Accordion/accordion.scss +0 -5
- package/src/components/Application/_config.scss +1 -1
- package/src/components/AutoSuggestion/AutoSuggestion.scss +39 -23
- package/src/components/AutoSuggestion/AutoSuggestion.tsx +190 -114
- package/src/components/AutoSuggestion/AutoSuggestionList.tsx +0 -3
- package/src/components/AutoSuggestion/ExtendedCodeEditor.tsx +47 -83
- package/src/components/AutoSuggestion/extensions/markText.ts +63 -0
- package/src/components/AutoSuggestion/index.ts +2 -2
- package/src/components/AutoSuggestion/tests/ExtendedCodeEditor.test.tsx +13 -11
- package/src/components/AutocompleteField/AutoCompleteField.tsx +17 -19
- package/src/components/AutocompleteField/index.ts +1 -0
- package/src/components/AutocompleteField/interfaces.ts +5 -2
- package/src/components/Breadcrumb/BreadcrumbList.tsx +0 -7
- package/src/components/Breadcrumb/breadcrumb.scss +8 -1
- package/src/components/Button/Button.tsx +0 -5
- package/src/components/Card/CardHeader.tsx +2 -10
- package/src/components/CodeAutocompleteField/CodeAutocompleteField.stories.tsx +9 -3
- package/src/components/CodeAutocompleteField/CodeAutocompleteField.tsx +2 -2
- package/src/components/Dialog/AlertDialog.tsx +0 -3
- package/src/components/Dialog/Modal.tsx +3 -3
- package/src/components/Grid/Grid.tsx +0 -5
- package/src/components/Grid/GridColumn.tsx +0 -6
- package/src/components/Icon/BaseIcon.tsx +2 -2
- package/src/components/Icon/Icon.tsx +1 -5
- package/src/components/Icon/canonicalIconNames.tsx +3 -9
- package/src/components/MultiSelect/MultiSelect.tsx +46 -19
- package/src/components/MultiSuggestField/MultiSuggestField.stories.tsx +24 -21
- package/src/components/MultiSuggestField/MultiSuggestField.tsx +16 -3
- package/src/components/MultiSuggestField/_multisuggestfield.scss +8 -0
- package/src/components/MultiSuggestField/tests/MultiSuggestField.test.tsx +109 -15
- package/src/components/Notification/Notification.tsx +2 -17
- package/src/components/Notification/notification.scss +1 -2
- package/src/components/Select/Select.tsx +0 -10
- package/src/components/Spinner/Spinner.tsx +3 -6
- package/src/components/SuggestField/SuggestField.tsx +6 -1
- package/src/components/Table/Table.tsx +2 -7
- package/src/components/Tag/Tag.tsx +1 -8
- package/src/components/TextField/TextArea.tsx +2 -45
- package/src/components/TextField/TextField.tsx +9 -51
- package/src/components/TextField/textfield.scss +1 -2
- package/src/components/Tooltip/Tooltip.tsx +2 -2
- package/src/components/Typography/Highlighter.tsx +3 -6
- package/src/components/Typography/index.ts +0 -9
- package/src/components/Typography/typography.scss +10 -0
- package/src/components/Workspace/WorkspaceContent.tsx +1 -1
- package/src/components/index.scss +1 -1
- package/src/components/index.ts +0 -1
- package/src/extensions/_index.scss +1 -6
- package/src/extensions/codemirror/CodeMirror.tsx +191 -105
- package/src/extensions/codemirror/_codemirror.scss +25 -42
- package/src/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.ts +44 -0
- package/src/extensions/codemirror/tests/codemirrorTestHelper.ts +57 -0
- package/src/extensions/react-flow/edges/edgeTypes.ts +1 -1
- package/src/extensions/react-flow/index.ts +2 -13
- package/src/extensions/react-flow/minimap/_minimap.scss +0 -22
- package/src/extensions/react-flow/minimap/utils.ts +2 -5
- package/src/extensions/react-flow/nodes/NodeContent.tsx +4 -27
- package/src/extensions/react-flow/nodes/NodeDefault.tsx +0 -3
- package/src/extensions/react-flow/nodes/_nodes.scss +0 -55
- package/src/extensions/react-flow/nodes/nodeTypes.ts +1 -1
- package/src/extensions/react-flow/nodes/sharedTypes.ts +0 -1
- package/src/index.scss +0 -1
- package/src/index.ts +1 -3
- package/src/legacy-replacements/Button/AffirmativeButton.tsx +1 -0
- package/src/legacy-replacements/Button/Button.tsx +2 -0
- package/src/legacy-replacements/Button/DismissiveButton.tsx +1 -0
- package/src/legacy-replacements/Button/DisruptiveButton.tsx +1 -0
- package/src/legacy-replacements/Checkbox/Checkbox.tsx +2 -0
- package/src/legacy-replacements/Radio/RadioButton.tsx +2 -0
- package/src/legacy-replacements/Tabs/Tabs.tsx +5 -4
- package/src/legacy-replacements/TextField/TextField.tsx +2 -0
- package/dist/cjs/components/NumericInput/NumericInput.js +0 -9
- package/dist/cjs/components/NumericInput/NumericInput.js.map +0 -1
- package/dist/esm/components/NumericInput/NumericInput.js +0 -6
- package/dist/esm/components/NumericInput/NumericInput.js.map +0 -1
- package/dist/types/components/NumericInput/NumericInput.d.ts +0 -3
- package/src/components/AutoSuggestion/AutoSuggestion.stories.tsx +0 -14
- package/src/components/MultiSelect/MultiSelect.stories.tsx +0 -14
- package/src/components/NumericInput/NumericInput.tsx +0 -6
|
@@ -23,11 +23,6 @@ export interface GridColumnProps extends Omit<CarbonGridColumnProps<"div">, "max
|
|
|
23
23
|
* Overwrite column sizes by using the original size config of the Carbon grid column.
|
|
24
24
|
*/
|
|
25
25
|
carbonSizeConfig?: Pick<CarbonGridColumnProps<"div">, "max" | "xlg" | "lg" | "md" | "sm">;
|
|
26
|
-
/**
|
|
27
|
-
* @deprecated
|
|
28
|
-
* Grid column always uses full width if it is the only column and does not have any othe size config.
|
|
29
|
-
*/
|
|
30
|
-
full?: boolean;
|
|
31
26
|
}
|
|
32
27
|
|
|
33
28
|
/**
|
|
@@ -39,7 +34,6 @@ export const GridColumn = ({
|
|
|
39
34
|
className = "",
|
|
40
35
|
small = false,
|
|
41
36
|
medium = false,
|
|
42
|
-
full,
|
|
43
37
|
verticalAlign = "top",
|
|
44
38
|
carbonSizeConfig,
|
|
45
39
|
...otherProps
|
|
@@ -34,7 +34,7 @@ export interface BaseIconProps extends Omit<CarbonIconProps, "icon" | "descripti
|
|
|
34
34
|
className?: string;
|
|
35
35
|
/**
|
|
36
36
|
* Description for icon as accessibility fallback.
|
|
37
|
-
* @deprecated Use `title` as replacement.
|
|
37
|
+
* @deprecated (v25) Use `title` as replacement.
|
|
38
38
|
*/
|
|
39
39
|
description?: string;
|
|
40
40
|
/**
|
|
@@ -42,7 +42,7 @@ export interface BaseIconProps extends Omit<CarbonIconProps, "icon" | "descripti
|
|
|
42
42
|
*/
|
|
43
43
|
tooltipProps?: Partial<Omit<TooltipProps, "content" | "children">>;
|
|
44
44
|
/**
|
|
45
|
-
* @deprecated Use `title` as replacement.
|
|
45
|
+
* @deprecated (v25) Use `title` as replacement.
|
|
46
46
|
*/
|
|
47
47
|
iconTitle?: CarbonIconProps["title"];
|
|
48
48
|
}
|
|
@@ -25,12 +25,8 @@ const findExistingIcon = (
|
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Returns the first icon name that exists or the fallback icon name.
|
|
28
|
-
* @deprecated use `iconUtils.findExistingIconName`
|
|
29
28
|
*/
|
|
30
|
-
|
|
31
|
-
iconNames: string[],
|
|
32
|
-
fallbackIconName: ValidIconName = "undefined"
|
|
33
|
-
): ValidIconName => {
|
|
29
|
+
const findExistingIconName = (iconNames: string[], fallbackIconName: ValidIconName = "undefined"): ValidIconName => {
|
|
34
30
|
let foundIconName: string = fallbackIconName;
|
|
35
31
|
const iconNameStack = [...iconNames];
|
|
36
32
|
while (foundIconName === fallbackIconName && iconNameStack.length > 0) {
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import * as icons from "@carbon/react/icons";
|
|
2
2
|
import { CarbonIconType as IconType } from "@carbon/react/icons";
|
|
3
3
|
|
|
4
|
-
export type CarbonIconType = IconType;
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated
|
|
8
|
-
* use CarbonIconType instead
|
|
9
|
-
*/
|
|
10
|
-
export type IconSized = CarbonIconType;
|
|
11
|
-
|
|
12
4
|
const canonicalIcons = {
|
|
13
5
|
"application-activities": icons.Activity,
|
|
14
6
|
"application-dataintegration": icons.DataUnstructured,
|
|
@@ -180,6 +172,8 @@ const canonicalIcons = {
|
|
|
180
172
|
undefined: icons.Undefined,
|
|
181
173
|
};
|
|
182
174
|
|
|
183
|
-
export type ValidIconName = keyof typeof canonicalIcons;
|
|
184
175
|
const canonicalIconNames: Record<ValidIconName, CarbonIconType> = canonicalIcons;
|
|
176
|
+
|
|
177
|
+
export type CarbonIconType = IconType;
|
|
178
|
+
export type ValidIconName = keyof typeof canonicalIcons;
|
|
185
179
|
export default canonicalIconNames;
|
|
@@ -12,15 +12,13 @@ import { TestableComponent } from "../interfaces";
|
|
|
12
12
|
|
|
13
13
|
import { ContextOverlayProps, Highlighter, IconButton, MenuItem, OverflowText, Spinner } from "./../../index";
|
|
14
14
|
|
|
15
|
+
/** @deprecated (v25) use MultiSuggestFieldSelectionProps */
|
|
15
16
|
export interface MultiSelectSelectionProps<T> {
|
|
16
17
|
newlySelected?: T;
|
|
17
18
|
selectedItems: T[];
|
|
18
19
|
createdItems: Partial<T>[];
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
// @deprecated use `MultiSelectSelectionProps<T>`
|
|
22
|
-
export type SelectedParamsType<T> = MultiSelectSelectionProps<T>;
|
|
23
|
-
|
|
24
22
|
interface MultiSelectCommonProps<T>
|
|
25
23
|
extends TestableComponent,
|
|
26
24
|
Pick<BlueprintMultiSelectProps<T>, "items" | "placeholder" | "openOnKeyDown"> {
|
|
@@ -37,7 +35,6 @@ interface MultiSelectCommonProps<T>
|
|
|
37
35
|
* this would be used in the item selection list as well as the multi-select input
|
|
38
36
|
*/
|
|
39
37
|
itemLabel: (item: T) => string;
|
|
40
|
-
|
|
41
38
|
/**
|
|
42
39
|
* function handler that would be called anytime an item is selected/deselected or an item is created/removed
|
|
43
40
|
*/
|
|
@@ -122,8 +119,15 @@ interface MultiSelectCommonProps<T>
|
|
|
122
119
|
* If not provided, values are filtered by their labels
|
|
123
120
|
*/
|
|
124
121
|
searchPredicate?: (item: T, query: string) => boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Limits the height of the input target plus its dropdown menu when it is opened.
|
|
124
|
+
* Need to be a `number not greater than 100` (as `vh`, a unit describing a length relative to the viewport height) or `true` (equals 100).
|
|
125
|
+
* If not set than the dropdown menu cannot be larger that appr. the half of the available viewport hight.
|
|
126
|
+
*/
|
|
127
|
+
limitHeightOpened?: boolean | number;
|
|
125
128
|
}
|
|
126
129
|
|
|
130
|
+
/** @deprecated (v25) use MultiSuggestFieldProps */
|
|
127
131
|
export type MultiSelectProps<T> = MultiSelectCommonProps<T> &
|
|
128
132
|
(
|
|
129
133
|
| {
|
|
@@ -143,13 +147,10 @@ export type MultiSelectProps<T> = MultiSelectCommonProps<T> &
|
|
|
143
147
|
);
|
|
144
148
|
|
|
145
149
|
/**
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* This component will be re-implemented later as a `Select` allowing multiple selections.
|
|
150
|
-
* @deprecated
|
|
150
|
+
* This component will be re-implemented as `Select` like element allowing multiple selections (or a `Select` option).
|
|
151
|
+
* New name for this component is `MultiSuggestField`.
|
|
151
152
|
*/
|
|
152
|
-
|
|
153
|
+
function MultiSelect<T>({
|
|
153
154
|
items,
|
|
154
155
|
selectedItems: externalSelectedItems,
|
|
155
156
|
prePopulateWithItems,
|
|
@@ -177,6 +178,7 @@ export function MultiSelect<T>({
|
|
|
177
178
|
"data-testid": dataTestid,
|
|
178
179
|
wrapperProps,
|
|
179
180
|
searchPredicate,
|
|
181
|
+
limitHeightOpened,
|
|
180
182
|
...otherMultiSelectProps
|
|
181
183
|
}: MultiSelectProps<T>) {
|
|
182
184
|
// Options created by a user
|
|
@@ -189,6 +191,8 @@ export function MultiSelect<T>({
|
|
|
189
191
|
const [selectedItems, setSelectedItems] = React.useState<T[]>(() =>
|
|
190
192
|
prePopulateWithItems ? [...items] : externalSelectedItems ? [...externalSelectedItems] : []
|
|
191
193
|
);
|
|
194
|
+
// Max height of the menu
|
|
195
|
+
const [calculatedMaxHeight, setCalculatedMaxHeight] = React.useState<string | null>(null);
|
|
192
196
|
|
|
193
197
|
//currently focused element in popover list
|
|
194
198
|
const [focusedItem, setFocusedItem] = React.useState<T | null>(null);
|
|
@@ -249,6 +253,29 @@ export function MultiSelect<T>({
|
|
|
249
253
|
setSelectedItems(externalSelectedItems);
|
|
250
254
|
}, [externalSelectedItems?.map((item) => itemId(item)).join("|")]);
|
|
251
255
|
|
|
256
|
+
React.useEffect(() => {
|
|
257
|
+
const calculateMaxHeight = () => {
|
|
258
|
+
if (inputRef.current) {
|
|
259
|
+
// Get the height of the input target
|
|
260
|
+
const inputTargetHeight = inputRef.current.getBoundingClientRect().height;
|
|
261
|
+
// Calculate the menu dropdown by using the limited height reduced by the target height
|
|
262
|
+
setCalculatedMaxHeight(`calc(${maxHeightToProcess}vh - ${inputTargetHeight}px)`);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
const removeListener = () => {
|
|
267
|
+
window.removeEventListener("resize", calculateMaxHeight);
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
if (!limitHeightOpened || (typeof limitHeightOpened === "number" && limitHeightOpened > 100))
|
|
271
|
+
return removeListener;
|
|
272
|
+
const maxHeightToProcess = typeof limitHeightOpened === "number" ? limitHeightOpened : 100;
|
|
273
|
+
|
|
274
|
+
calculateMaxHeight();
|
|
275
|
+
window.addEventListener("resize", calculateMaxHeight);
|
|
276
|
+
return removeListener;
|
|
277
|
+
}, [limitHeightOpened, selectedItems]);
|
|
278
|
+
|
|
252
279
|
/**
|
|
253
280
|
* using the equality prop specified checks if an item has already been selected
|
|
254
281
|
* @param matcher
|
|
@@ -439,7 +466,7 @@ export function MultiSelect<T>({
|
|
|
439
466
|
<IconButton
|
|
440
467
|
disabled={disabled}
|
|
441
468
|
name="operation-clear"
|
|
442
|
-
data-test-id="clear-all-items" // @deprecated
|
|
469
|
+
data-test-id={dataTestId ? dataTestId + "_clearance" : "clear-all-items"} // @deprecated (v25) automatically set test id will be removed
|
|
443
470
|
onClick={handleClear}
|
|
444
471
|
/>
|
|
445
472
|
) : undefined;
|
|
@@ -519,6 +546,11 @@ export function MultiSelect<T>({
|
|
|
519
546
|
{
|
|
520
547
|
"data-test-id": dataTestId ? dataTestId + "_drowpdown" : undefined,
|
|
521
548
|
"data-testid": dataTestid ? dataTestid + "_dropdown" : undefined,
|
|
549
|
+
style: calculatedMaxHeight
|
|
550
|
+
? ({
|
|
551
|
+
"--eccgui-multisuggestfield-max-height": `${calculatedMaxHeight}`,
|
|
552
|
+
} as React.CSSProperties)
|
|
553
|
+
: undefined,
|
|
522
554
|
} as BlueprintMultiSelectProps<T>["popoverContentProps"]
|
|
523
555
|
}
|
|
524
556
|
/>
|
|
@@ -537,15 +569,10 @@ export function MultiSelect<T>({
|
|
|
537
569
|
);
|
|
538
570
|
}
|
|
539
571
|
|
|
540
|
-
/** @deprecated */
|
|
541
|
-
/*
|
|
542
|
-
function ofType<U>() {
|
|
543
|
-
return (props: MultiSelectProps<U>) => <MultiSelect<U> {...props} />;
|
|
544
|
-
}
|
|
545
|
-
// */
|
|
546
|
-
|
|
547
572
|
// we still return the Blueprint element here because it was already used like that
|
|
548
|
-
|
|
573
|
+
/**
|
|
574
|
+
* @deprecated (v25) use directly <MultiSelect<TYPE>> (`ofType` also returns the original BlueprintJS element, not ours!)
|
|
575
|
+
*/
|
|
549
576
|
MultiSelect.ofType = BlueprintMultiSelect.ofType;
|
|
550
577
|
|
|
551
578
|
export default MultiSelect;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import React, { useCallback, useMemo, useState } from "react";
|
|
2
2
|
import { loremIpsum } from "react-lorem-ipsum";
|
|
3
|
+
import { OverlaysProvider } from "@blueprintjs/core";
|
|
3
4
|
import { Meta, StoryFn } from "@storybook/react";
|
|
4
5
|
import { fn } from "@storybook/test";
|
|
5
6
|
|
|
6
|
-
import {
|
|
7
|
+
import { MultiSuggestField, MultiSuggestFieldSelectionProps, SimpleDialog } from "./../../../index";
|
|
7
8
|
|
|
8
9
|
const testLabels = loremIpsum({
|
|
9
10
|
p: 1,
|
|
10
|
-
avgSentencesPerParagraph:
|
|
11
|
+
avgSentencesPerParagraph: 50,
|
|
11
12
|
avgWordsPerSentence: 1,
|
|
12
13
|
startWithLoremIpsum: false,
|
|
13
14
|
random: false,
|
|
@@ -16,8 +17,8 @@ const testLabels = loremIpsum({
|
|
|
16
17
|
.split(".")
|
|
17
18
|
.map((item) => item.trim());
|
|
18
19
|
|
|
19
|
-
const items = new Array(
|
|
20
|
-
const testLabel = testLabels[id]
|
|
20
|
+
const items = new Array(50).fill(undefined).map((_, id) => {
|
|
21
|
+
const testLabel = `${testLabels[id]}${id + 1}`;
|
|
21
22
|
return { testLabel, testId: `${testLabel}-id` };
|
|
22
23
|
});
|
|
23
24
|
|
|
@@ -36,9 +37,9 @@ export default {
|
|
|
36
37
|
|
|
37
38
|
const Template: StoryFn<typeof MultiSuggestField> = (args) => {
|
|
38
39
|
return (
|
|
39
|
-
<
|
|
40
|
+
<OverlaysProvider>
|
|
40
41
|
<MultiSuggestField {...args} />
|
|
41
|
-
</
|
|
42
|
+
</OverlaysProvider>
|
|
42
43
|
);
|
|
43
44
|
};
|
|
44
45
|
|
|
@@ -91,7 +92,7 @@ const DeferredSelectionTemplate: StoryFn = () => {
|
|
|
91
92
|
const identity = useCallback((item: string): string => item, []);
|
|
92
93
|
|
|
93
94
|
return (
|
|
94
|
-
|
|
95
|
+
<OverlaysProvider>
|
|
95
96
|
<div>Selected items loaded: {loaded.toString()}</div>
|
|
96
97
|
|
|
97
98
|
<br />
|
|
@@ -107,7 +108,7 @@ const DeferredSelectionTemplate: StoryFn = () => {
|
|
|
107
108
|
<br />
|
|
108
109
|
|
|
109
110
|
<button onClick={() => setLoaded((prev) => !prev)}>Toggle selected</button>
|
|
110
|
-
|
|
111
|
+
</OverlaysProvider>
|
|
111
112
|
);
|
|
112
113
|
};
|
|
113
114
|
|
|
@@ -135,21 +136,23 @@ const CreationTemplate: StoryFn = () => {
|
|
|
135
136
|
|
|
136
137
|
const identity = useCallback((item: string): string => item, []);
|
|
137
138
|
|
|
138
|
-
const handleOnSelect = useCallback((params:
|
|
139
|
+
const handleOnSelect = useCallback((params: MultiSuggestFieldSelectionProps<string>) => {
|
|
139
140
|
const selected = params.selectedItems;
|
|
140
141
|
|
|
141
142
|
setSelectedValues(selected);
|
|
142
143
|
}, []);
|
|
143
144
|
|
|
144
145
|
return (
|
|
145
|
-
<
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
146
|
+
<OverlaysProvider>
|
|
147
|
+
<MultiSuggestField<string>
|
|
148
|
+
items={items}
|
|
149
|
+
selectedItems={selectedValues}
|
|
150
|
+
onSelection={handleOnSelect}
|
|
151
|
+
itemId={identity}
|
|
152
|
+
itemLabel={identity}
|
|
153
|
+
createNewItemFromQuery={identity}
|
|
154
|
+
/>
|
|
155
|
+
</OverlaysProvider>
|
|
153
156
|
);
|
|
154
157
|
};
|
|
155
158
|
|
|
@@ -173,7 +176,7 @@ const WithResetButtonComponent = (): JSX.Element => {
|
|
|
173
176
|
};
|
|
174
177
|
|
|
175
178
|
return (
|
|
176
|
-
<
|
|
179
|
+
<OverlaysProvider>
|
|
177
180
|
<button onClick={handleReset}>Reset</button>
|
|
178
181
|
<br />
|
|
179
182
|
<br />
|
|
@@ -185,7 +188,7 @@ const WithResetButtonComponent = (): JSX.Element => {
|
|
|
185
188
|
itemLabel={({ testLabel }) => testLabel}
|
|
186
189
|
createNewItemFromQuery={(query) => ({ testId: `${query}-id`, testLabel: query })}
|
|
187
190
|
/>
|
|
188
|
-
</
|
|
191
|
+
</OverlaysProvider>
|
|
189
192
|
);
|
|
190
193
|
};
|
|
191
194
|
|
|
@@ -215,7 +218,7 @@ const WithinModal = (): JSX.Element => {
|
|
|
215
218
|
};
|
|
216
219
|
|
|
217
220
|
return (
|
|
218
|
-
|
|
221
|
+
<OverlaysProvider>
|
|
219
222
|
<button onClick={() => setIsOpen(true)}>open modal</button>
|
|
220
223
|
|
|
221
224
|
<SimpleDialog isOpen={isOpen} onClose={() => setIsOpen(false)} canOutsideClickClose>
|
|
@@ -233,7 +236,7 @@ const WithinModal = (): JSX.Element => {
|
|
|
233
236
|
/>
|
|
234
237
|
</div>
|
|
235
238
|
</SimpleDialog>
|
|
236
|
-
|
|
239
|
+
</OverlaysProvider>
|
|
237
240
|
);
|
|
238
241
|
};
|
|
239
242
|
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
3
|
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
4
|
-
import
|
|
4
|
+
import MultiSelect, { MultiSelectProps, MultiSelectSelectionProps } from "../MultiSelect/MultiSelect";
|
|
5
5
|
|
|
6
|
-
export type
|
|
6
|
+
export type MultiSuggestFieldSelectionProps<T> = MultiSelectSelectionProps<T>;
|
|
7
|
+
|
|
8
|
+
export interface MultiSuggestFieldProps<T> extends Omit<MultiSelectProps<T>, "onSelection"> {
|
|
9
|
+
/**
|
|
10
|
+
* function handler that would be called anytime an item is selected/deselected or an item is created/removed
|
|
11
|
+
*/
|
|
12
|
+
onSelection?: (params: MultiSuggestFieldSelectionProps<T>) => void;
|
|
13
|
+
}
|
|
7
14
|
|
|
8
15
|
/**
|
|
9
16
|
* Element behaves very similar to `SuggestField` but allows multiple selections.
|
|
@@ -16,7 +23,13 @@ export function MultiSuggestField<T>({ className, ...otherProps }: MultiSuggestF
|
|
|
16
23
|
return (
|
|
17
24
|
<MultiSelect<T>
|
|
18
25
|
className={`${eccgui}-multisuggestfield` + (className ? ` ${className}` : "")}
|
|
19
|
-
{...otherProps}
|
|
26
|
+
{...(otherProps as MultiSelectProps<T>)}
|
|
20
27
|
/>
|
|
21
28
|
);
|
|
22
29
|
}
|
|
30
|
+
|
|
31
|
+
// we still return the Blueprint element here because it was already used like that
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated (v25) use directly <MultiSelect<TYPE>> (`ofType` also returns the original BlueprintJS element, not ours!)
|
|
34
|
+
*/
|
|
35
|
+
MultiSuggestField.ofType = MultiSelect.ofType;
|
|
@@ -3,13 +3,13 @@ import { fireEvent, render, screen, waitFor } from "@testing-library/react";
|
|
|
3
3
|
|
|
4
4
|
import "@testing-library/jest-dom";
|
|
5
5
|
|
|
6
|
-
import { MultiSuggestField } from "
|
|
6
|
+
import { MultiSuggestField } from "../../../../index";
|
|
7
7
|
import { CustomSearch, Default, dropdownOnFocus, predefinedNotControlledValues } from "../MultiSuggestField.stories";
|
|
8
8
|
|
|
9
|
-
const testLabels = ["label1", "label2", "label3", "label4", "label5"];
|
|
9
|
+
//const testLabels = ["label1", "label2", "label3", "label4", "label5"];
|
|
10
10
|
|
|
11
|
-
const items = new Array(
|
|
12
|
-
const testLabel =
|
|
11
|
+
const items = new Array(50).fill(undefined).map((_, id) => {
|
|
12
|
+
const testLabel = `label${id + 1}`;
|
|
13
13
|
return { testLabel, testId: `${testLabel}-id` };
|
|
14
14
|
});
|
|
15
15
|
|
|
@@ -81,7 +81,7 @@ describe("MultiSuggestField", () => {
|
|
|
81
81
|
|
|
82
82
|
expect(container.querySelectorAll("[data-tag-index]").length).toBe(selectedLength);
|
|
83
83
|
|
|
84
|
-
const clearButton = container.querySelector('[data-test-id="
|
|
84
|
+
const clearButton = container.querySelector('[data-test-id="multi-suggest-field_clearance"');
|
|
85
85
|
|
|
86
86
|
expect(clearButton).toBeInTheDocument();
|
|
87
87
|
|
|
@@ -108,7 +108,7 @@ describe("MultiSuggestField", () => {
|
|
|
108
108
|
expect(menuItems.length).toBe(dropdownOnFocus.args.items.length);
|
|
109
109
|
});
|
|
110
110
|
|
|
111
|
-
fireEvent.change(input, { target: { value: "
|
|
111
|
+
fireEvent.change(input, { target: { value: "cras" } });
|
|
112
112
|
|
|
113
113
|
await waitFor(() => {
|
|
114
114
|
const listbox = screen.getByRole("listbox");
|
|
@@ -165,7 +165,7 @@ describe("MultiSuggestField", () => {
|
|
|
165
165
|
|
|
166
166
|
const { rerender, container } = render(<MultiSuggestField {...args} data-test-id="multi-suggest-field" />);
|
|
167
167
|
|
|
168
|
-
const clearButtonBefore = container.querySelector("[data-test-id='
|
|
168
|
+
const clearButtonBefore = container.querySelector("[data-test-id='multi-suggest-field_clearance'");
|
|
169
169
|
|
|
170
170
|
expect(clearButtonBefore).not.toBeInTheDocument();
|
|
171
171
|
|
|
@@ -186,7 +186,7 @@ describe("MultiSuggestField", () => {
|
|
|
186
186
|
});
|
|
187
187
|
|
|
188
188
|
await waitFor(() => {
|
|
189
|
-
const clearButtonAfter = container.querySelector("[data-test-id='
|
|
189
|
+
const clearButtonAfter = container.querySelector("[data-test-id='multi-suggest-field_clearance'");
|
|
190
190
|
|
|
191
191
|
expect(clearButtonAfter).toBeInTheDocument();
|
|
192
192
|
|
|
@@ -277,7 +277,7 @@ describe("MultiSuggestField", () => {
|
|
|
277
277
|
expect(menuItems.length).toBe(CustomSearch.args.items.length);
|
|
278
278
|
});
|
|
279
279
|
|
|
280
|
-
fireEvent.change(input, { target: { value: "
|
|
280
|
+
fireEvent.change(input, { target: { value: "label11" } });
|
|
281
281
|
|
|
282
282
|
await waitFor(() => {
|
|
283
283
|
const listbox = screen.getByRole("listbox");
|
|
@@ -289,10 +289,10 @@ describe("MultiSuggestField", () => {
|
|
|
289
289
|
const item = menuItems[0];
|
|
290
290
|
|
|
291
291
|
const [div] = item.getElementsByTagName("div");
|
|
292
|
-
expect(div.textContent).toBe("
|
|
292
|
+
expect(div.textContent).toBe("label11");
|
|
293
293
|
});
|
|
294
294
|
|
|
295
|
-
fireEvent.change(input, { target: { value: "
|
|
295
|
+
fireEvent.change(input, { target: { value: "label11-id" } });
|
|
296
296
|
|
|
297
297
|
await waitFor(() => {
|
|
298
298
|
const listbox = screen.getByRole("listbox");
|
|
@@ -304,10 +304,10 @@ describe("MultiSuggestField", () => {
|
|
|
304
304
|
const item = menuItems[0];
|
|
305
305
|
|
|
306
306
|
const [div] = item.getElementsByTagName("div");
|
|
307
|
-
expect(div.textContent).toBe("
|
|
307
|
+
expect(div.textContent).toBe("label11");
|
|
308
308
|
});
|
|
309
309
|
|
|
310
|
-
fireEvent.change(input, { target: { value: "
|
|
310
|
+
fireEvent.change(input, { target: { value: "label11-id-other" } });
|
|
311
311
|
|
|
312
312
|
await waitFor(() => {
|
|
313
313
|
const listbox = screen.getByRole("listbox");
|
|
@@ -399,7 +399,7 @@ describe("MultiSuggestField", () => {
|
|
|
399
399
|
const [inputContainer] = container.getElementsByClassName("eccgui-multiselect");
|
|
400
400
|
const [input] = inputContainer.getElementsByTagName("input");
|
|
401
401
|
|
|
402
|
-
const clearButtonBefore = container.querySelector("[data-test-id='
|
|
402
|
+
const clearButtonBefore = container.querySelector("[data-test-id='multi-suggest-field_clearance'");
|
|
403
403
|
|
|
404
404
|
expect(clearButtonBefore).not.toBeInTheDocument();
|
|
405
405
|
|
|
@@ -451,7 +451,7 @@ describe("MultiSuggestField", () => {
|
|
|
451
451
|
});
|
|
452
452
|
|
|
453
453
|
await waitFor(() => {
|
|
454
|
-
const clearButtonAfter = container.querySelector("[data-test-id='
|
|
454
|
+
const clearButtonAfter = container.querySelector("[data-test-id='multi-suggest-field_clearance'");
|
|
455
455
|
|
|
456
456
|
expect(clearButtonAfter).toBeInTheDocument();
|
|
457
457
|
|
|
@@ -549,5 +549,99 @@ describe("MultiSuggestField", () => {
|
|
|
549
549
|
const tagsAfterRemove = container.querySelectorAll("span[data-tag-index]");
|
|
550
550
|
expect(tagsAfterRemove.length).toBe(0);
|
|
551
551
|
});
|
|
552
|
+
|
|
553
|
+
it("should not contain the custom css property when limitHeightOpened not provided", async () => {
|
|
554
|
+
const { container } = render(
|
|
555
|
+
<MultiSuggestField {...Default.args} openOnKeyDown={false} data-testid="multi-suggest-field" />
|
|
556
|
+
);
|
|
557
|
+
|
|
558
|
+
const [inputTargetContainer] = container.getElementsByClassName("eccgui-multiselect");
|
|
559
|
+
|
|
560
|
+
fireEvent.click(inputTargetContainer);
|
|
561
|
+
|
|
562
|
+
await waitFor(() => {
|
|
563
|
+
const dropdown = screen.getByTestId("multi-suggest-field_dropdown");
|
|
564
|
+
const customProperty = (dropdown as HTMLElement)?.style?.getPropertyValue(
|
|
565
|
+
"--eccgui-multisuggestfield-max-height"
|
|
566
|
+
);
|
|
567
|
+
|
|
568
|
+
expect(customProperty).toBeFalsy();
|
|
569
|
+
});
|
|
570
|
+
});
|
|
571
|
+
|
|
572
|
+
it("should notcontain the custom css property when limitHeightOpened greater than 100", async () => {
|
|
573
|
+
const { container } = render(
|
|
574
|
+
<MultiSuggestField
|
|
575
|
+
{...Default.args}
|
|
576
|
+
openOnKeyDown={false}
|
|
577
|
+
limitHeightOpened={110}
|
|
578
|
+
data-testid="multi-suggest-field"
|
|
579
|
+
/>
|
|
580
|
+
);
|
|
581
|
+
|
|
582
|
+
const [inputTargetContainer] = container.getElementsByClassName("eccgui-multiselect");
|
|
583
|
+
|
|
584
|
+
fireEvent.click(inputTargetContainer);
|
|
585
|
+
|
|
586
|
+
await waitFor(() => {
|
|
587
|
+
const dropdown = screen.getByTestId("multi-suggest-field_dropdown");
|
|
588
|
+
|
|
589
|
+
const customProperty = (dropdown as HTMLElement)?.style?.getPropertyValue(
|
|
590
|
+
"--eccgui-multisuggestfield-max-height"
|
|
591
|
+
);
|
|
592
|
+
|
|
593
|
+
expect(customProperty).toBeFalsy();
|
|
594
|
+
});
|
|
595
|
+
});
|
|
596
|
+
|
|
597
|
+
it("should contain the custom css property when limitHeightOpened is true", async () => {
|
|
598
|
+
const { container } = render(
|
|
599
|
+
<MultiSuggestField
|
|
600
|
+
{...Default.args}
|
|
601
|
+
openOnKeyDown={false}
|
|
602
|
+
limitHeightOpened
|
|
603
|
+
data-testid="multi-suggest-field"
|
|
604
|
+
/>
|
|
605
|
+
);
|
|
606
|
+
|
|
607
|
+
const [inputTargetContainer] = container.getElementsByClassName("eccgui-multiselect");
|
|
608
|
+
|
|
609
|
+
fireEvent.click(inputTargetContainer);
|
|
610
|
+
|
|
611
|
+
await waitFor(() => {
|
|
612
|
+
const dropdown = screen.getByTestId("multi-suggest-field_dropdown");
|
|
613
|
+
|
|
614
|
+
const customProperty = (dropdown as HTMLElement)?.style?.getPropertyValue(
|
|
615
|
+
"--eccgui-multisuggestfield-max-height"
|
|
616
|
+
);
|
|
617
|
+
|
|
618
|
+
expect(customProperty).toBeDefined();
|
|
619
|
+
});
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
it("should contain the custom css property when limitHeightOpened a valid number value", async () => {
|
|
623
|
+
const { container } = render(
|
|
624
|
+
<MultiSuggestField
|
|
625
|
+
{...Default.args}
|
|
626
|
+
openOnKeyDown={false}
|
|
627
|
+
limitHeightOpened={80}
|
|
628
|
+
data-testid="multi-suggest-field"
|
|
629
|
+
/>
|
|
630
|
+
);
|
|
631
|
+
|
|
632
|
+
const [inputTargetContainer] = container.getElementsByClassName("eccgui-multiselect");
|
|
633
|
+
|
|
634
|
+
fireEvent.click(inputTargetContainer);
|
|
635
|
+
|
|
636
|
+
await waitFor(() => {
|
|
637
|
+
const dropdown = screen.getByTestId("multi-suggest-field_dropdown");
|
|
638
|
+
|
|
639
|
+
const customProperty = (dropdown as HTMLElement)?.style?.getPropertyValue(
|
|
640
|
+
"--eccgui-multisuggestfield-max-height"
|
|
641
|
+
);
|
|
642
|
+
|
|
643
|
+
expect(customProperty).toBeDefined();
|
|
644
|
+
});
|
|
645
|
+
});
|
|
552
646
|
});
|
|
553
647
|
});
|
|
@@ -44,13 +44,6 @@ export interface NotificationProps
|
|
|
44
44
|
* This defines the colorization and the icon symbol.
|
|
45
45
|
*/
|
|
46
46
|
danger?: boolean;
|
|
47
|
-
/**
|
|
48
|
-
* @deprecated
|
|
49
|
-
* Notification uses the the given space more flexible.
|
|
50
|
-
* Deprecation notice: Property name will removed in future versions.
|
|
51
|
-
* Please use `flexWidth`.
|
|
52
|
-
*/
|
|
53
|
-
fullWidth?: boolean;
|
|
54
47
|
/**
|
|
55
48
|
* Notification uses the the given space more flexible.
|
|
56
49
|
* Default notification is displayed in min and max limits.
|
|
@@ -62,11 +55,6 @@ export interface NotificationProps
|
|
|
62
55
|
* Set it to false if you need to prevent automatically set icon regarding the notification type.
|
|
63
56
|
*/
|
|
64
57
|
icon?: false | React.ReactElement<IconProps> | React.ReactElement<TestIconProps>;
|
|
65
|
-
/**
|
|
66
|
-
* @deprecated
|
|
67
|
-
* Icon used as depiction that is displayed with the notification.
|
|
68
|
-
*/
|
|
69
|
-
iconName?: ValidIconName | null;
|
|
70
58
|
/**
|
|
71
59
|
* If set then a `div` element is used as wrapper.
|
|
72
60
|
* It uses the attributes given via this property.
|
|
@@ -87,9 +75,7 @@ export const Notification = ({
|
|
|
87
75
|
warning = false,
|
|
88
76
|
danger = false,
|
|
89
77
|
neutral = false,
|
|
90
|
-
fullWidth = false, // deprecated
|
|
91
78
|
flexWidth = false,
|
|
92
|
-
iconName = "state-info", // deprecated
|
|
93
79
|
icon,
|
|
94
80
|
timeout,
|
|
95
81
|
wrapperProps,
|
|
@@ -98,7 +84,7 @@ export const Notification = ({
|
|
|
98
84
|
...otherProps
|
|
99
85
|
}: NotificationProps) => {
|
|
100
86
|
let intentLevel: string = IntentClassNames.INFO;
|
|
101
|
-
let iconSymbol =
|
|
87
|
+
let iconSymbol = "state-info";
|
|
102
88
|
switch (true) {
|
|
103
89
|
case success:
|
|
104
90
|
intentLevel = IntentClassNames.SUCCESS;
|
|
@@ -119,7 +105,7 @@ export const Notification = ({
|
|
|
119
105
|
|
|
120
106
|
let notificationIcon = icon !== false ? icon : undefined;
|
|
121
107
|
if (icon !== false && !notificationIcon && !!iconSymbol) {
|
|
122
|
-
notificationIcon = <Icon name={iconSymbol} />;
|
|
108
|
+
notificationIcon = <Icon name={iconSymbol as ValidIconName} />;
|
|
123
109
|
}
|
|
124
110
|
|
|
125
111
|
const content = actions ? (
|
|
@@ -139,7 +125,6 @@ export const Notification = ({
|
|
|
139
125
|
`${eccgui}-notification ` +
|
|
140
126
|
intentLevel +
|
|
141
127
|
(className ? ` ${className}` : "") +
|
|
142
|
-
(fullWidth ? ` ${eccgui}-notification--fullwidth` : "") + // deprecated
|
|
143
128
|
(flexWidth ? ` ${eccgui}-notification--flexwidth` : "") +
|
|
144
129
|
(otherProps.onDismiss ? "" : ` ${eccgui}-notification--static`)
|
|
145
130
|
}
|