@eccenca/gui-elements 23.0.0-rc.1 → 23.0.0-rc.3
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 +41 -0
- package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js +4 -10
- package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
- package/dist/cjs/cmem/index.js +3 -1
- package/dist/cjs/cmem/index.js.map +1 -1
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js +2 -1
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -1
- package/dist/cjs/cmem/react-flow/StickyNoteModal/StickyNoteModal.js +64 -0
- package/dist/cjs/cmem/react-flow/StickyNoteModal/StickyNoteModal.js.map +1 -0
- 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/typing.js +35 -0
- package/dist/cjs/cmem/react-flow/configuration/typing.js.map +1 -0
- 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/nodes/StickyNoteNode.js +42 -0
- package/dist/cjs/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -0
- package/dist/cjs/common/utils/CssCustomProperties.js +114 -0
- package/dist/cjs/common/utils/CssCustomProperties.js.map +1 -0
- package/dist/cjs/common/utils/getColorConfiguration.js +21 -0
- package/dist/cjs/common/utils/getColorConfiguration.js.map +1 -0
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +19 -19
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js +4 -12
- package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +15 -6
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/cjs/components/Breadcrumb/BreadcrumbItem.js +13 -4
- package/dist/cjs/components/Breadcrumb/BreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/Breadcrumb/BreadcrumbList.js +11 -4
- package/dist/cjs/components/Breadcrumb/BreadcrumbList.js.map +1 -1
- package/dist/cjs/components/Button/Button.js +2 -2
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/ContextOverlay/ContextMenu.js +6 -5
- package/dist/cjs/components/ContextOverlay/ContextMenu.js.map +1 -1
- package/dist/cjs/components/ContextOverlay/ContextOverlay.js +6 -8
- package/dist/cjs/components/ContextOverlay/ContextOverlay.js.map +1 -1
- package/dist/cjs/components/Form/FieldItem.js +2 -2
- package/dist/cjs/components/Form/FieldItem.js.map +1 -1
- package/dist/cjs/components/Icon/Icon.js +2 -2
- package/dist/cjs/components/Icon/Icon.js.map +1 -1
- package/dist/cjs/components/Icon/IconButton.js +2 -2
- package/dist/cjs/components/Icon/IconButton.js.map +1 -1
- package/dist/cjs/components/Icon/canonicalIconNames.js +124 -114
- package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/cjs/components/Label/Label.js +6 -6
- package/dist/cjs/components/Label/Label.js.map +1 -1
- package/dist/cjs/components/Menu/MenuItem.js +2 -5
- package/dist/cjs/components/Menu/MenuItem.js.map +1 -1
- package/dist/cjs/components/MultiSelect/MultiSelect.js +8 -10
- package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +29 -0
- package/dist/cjs/components/Select/Select.js.map +1 -0
- package/dist/cjs/components/Tabs/TabTitle.js +2 -4
- package/dist/cjs/components/Tabs/TabTitle.js.map +1 -1
- package/dist/cjs/components/Tag/Tag.js +2 -1
- package/dist/cjs/components/Tag/Tag.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js +7 -4
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/extensions/codemirror/CodeMirror.js +3 -3
- package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeTools.js +2 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeTools.js.map +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleContent.js +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleContent.js.map +1 -1
- package/dist/cjs/extensions/react-flow/index.js +6 -1
- package/dist/cjs/extensions/react-flow/index.js.map +1 -1
- package/dist/cjs/extensions/react-flow/minimap/MiniMap.js +3 -2
- package/dist/cjs/extensions/react-flow/minimap/MiniMap.js.map +1 -1
- package/dist/cjs/extensions/react-flow/minimap/utils.js +12 -6
- package/dist/cjs/extensions/react-flow/minimap/utils.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +74 -25
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeContentExtension.js +10 -6
- package/dist/cjs/extensions/react-flow/nodes/NodeContentExtension.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeTools.js +1 -3
- package/dist/cjs/extensions/react-flow/nodes/NodeTools.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/nodeUtils.js +49 -0
- package/dist/cjs/extensions/react-flow/nodes/nodeUtils.js.map +1 -0
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js +1 -1
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js.map +1 -1
- package/dist/cjs/legacy-replacements/TextField/TextField.js +5 -8
- package/dist/cjs/legacy-replacements/TextField/TextField.js.map +1 -1
- package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js +4 -10
- package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
- package/dist/esm/cmem/index.js +1 -0
- package/dist/esm/cmem/index.js.map +1 -1
- package/dist/esm/cmem/react-flow/ReactFlow/ReactFlow.js +2 -1
- package/dist/esm/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -1
- package/dist/esm/cmem/react-flow/StickyNoteModal/StickyNoteModal.js +89 -0
- package/dist/esm/cmem/react-flow/StickyNoteModal/StickyNoteModal.js.map +1 -0
- package/dist/esm/cmem/react-flow/configuration/graph.js +1 -1
- package/dist/esm/cmem/react-flow/configuration/graph.js.map +1 -1
- package/dist/esm/cmem/react-flow/configuration/linking.js +3 -1
- package/dist/esm/cmem/react-flow/configuration/linking.js.map +1 -1
- package/dist/esm/cmem/react-flow/configuration/typing.js +32 -0
- package/dist/esm/cmem/react-flow/configuration/typing.js.map +1 -0
- package/dist/esm/cmem/react-flow/configuration/workflow.js +3 -1
- package/dist/esm/cmem/react-flow/configuration/workflow.js.map +1 -1
- package/dist/esm/cmem/react-flow/nodes/StickyNoteNode.js +31 -0
- package/dist/esm/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -0
- package/dist/esm/common/utils/CssCustomProperties.js +154 -0
- package/dist/esm/common/utils/CssCustomProperties.js.map +1 -0
- package/dist/esm/common/utils/getColorConfiguration.js +16 -0
- package/dist/esm/common/utils/getColorConfiguration.js.map +1 -0
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +23 -21
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js +4 -12
- package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
- package/dist/esm/components/AutocompleteField/AutoCompleteField.js +32 -23
- package/dist/esm/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/esm/components/Breadcrumb/BreadcrumbItem.js +13 -4
- package/dist/esm/components/Breadcrumb/BreadcrumbItem.js.map +1 -1
- package/dist/esm/components/Breadcrumb/BreadcrumbList.js +11 -4
- package/dist/esm/components/Breadcrumb/BreadcrumbList.js.map +1 -1
- package/dist/esm/components/Button/Button.js +2 -2
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/ContextOverlay/ContextMenu.js +6 -5
- package/dist/esm/components/ContextOverlay/ContextMenu.js.map +1 -1
- package/dist/esm/components/ContextOverlay/ContextOverlay.js +6 -8
- package/dist/esm/components/ContextOverlay/ContextOverlay.js.map +1 -1
- package/dist/esm/components/Form/FieldItem.js +2 -2
- package/dist/esm/components/Form/FieldItem.js.map +1 -1
- package/dist/esm/components/Icon/Icon.js +2 -2
- package/dist/esm/components/Icon/Icon.js.map +1 -1
- package/dist/esm/components/Icon/IconButton.js +2 -2
- package/dist/esm/components/Icon/IconButton.js.map +1 -1
- package/dist/esm/components/Icon/canonicalIconNames.js +124 -114
- package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/esm/components/Label/Label.js +6 -6
- package/dist/esm/components/Label/Label.js.map +1 -1
- package/dist/esm/components/Menu/MenuItem.js +2 -5
- package/dist/esm/components/Menu/MenuItem.js.map +1 -1
- package/dist/esm/components/MultiSelect/MultiSelect.js +5 -7
- package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/esm/components/Select/Select.js +35 -0
- package/dist/esm/components/Select/Select.js.map +1 -0
- package/dist/esm/components/Tabs/TabTitle.js +2 -4
- package/dist/esm/components/Tabs/TabTitle.js.map +1 -1
- package/dist/esm/components/Tag/Tag.js +2 -1
- package/dist/esm/components/Tag/Tag.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +7 -4
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/extensions/codemirror/CodeMirror.js +3 -3
- package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeTools.js +2 -1
- package/dist/esm/extensions/react-flow/edges/EdgeTools.js.map +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleContent.js +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleContent.js.map +1 -1
- package/dist/esm/extensions/react-flow/index.js +1 -0
- package/dist/esm/extensions/react-flow/index.js.map +1 -1
- package/dist/esm/extensions/react-flow/minimap/MiniMap.js +3 -2
- package/dist/esm/extensions/react-flow/minimap/MiniMap.js.map +1 -1
- package/dist/esm/extensions/react-flow/minimap/utils.js +10 -5
- package/dist/esm/extensions/react-flow/minimap/utils.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js +76 -27
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeContentExtension.js +26 -6
- package/dist/esm/extensions/react-flow/nodes/NodeContentExtension.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeTools.js +1 -3
- package/dist/esm/extensions/react-flow/nodes/NodeTools.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/nodeUtils.js +44 -0
- package/dist/esm/extensions/react-flow/nodes/nodeUtils.js.map +1 -0
- package/dist/esm/index.js +3 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/legacy-replacements/Tabs/Tabs.js +1 -1
- package/dist/esm/legacy-replacements/Tabs/Tabs.js.map +1 -1
- package/dist/esm/legacy-replacements/TextField/TextField.js +2 -5
- package/dist/esm/legacy-replacements/TextField/TextField.js.map +1 -1
- package/dist/types/cmem/index.d.ts +1 -0
- package/dist/types/cmem/react-flow/StickyNoteModal/StickyNoteModal.d.ts +26 -0
- package/dist/types/cmem/react-flow/configuration/graph.d.ts +3 -8
- package/dist/types/cmem/react-flow/configuration/linking.d.ts +3 -9
- package/dist/types/cmem/react-flow/configuration/typing.d.ts +28 -0
- package/dist/types/cmem/react-flow/configuration/workflow.d.ts +3 -9
- package/dist/types/cmem/react-flow/nodes/StickyNoteNode.d.ts +3 -0
- package/dist/types/common/utils/CssCustomProperties.d.ts +28 -0
- package/dist/types/common/utils/getColorConfiguration.d.ts +8 -0
- package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +7 -4
- package/dist/types/components/Breadcrumb/BreadcrumbItem.d.ts +7 -3
- package/dist/types/components/Breadcrumb/BreadcrumbList.d.ts +20 -8
- package/dist/types/components/Button/Button.d.ts +2 -2
- package/dist/types/components/ContextOverlay/ContextMenu.d.ts +37 -3
- package/dist/types/components/ContextOverlay/ContextOverlay.d.ts +12 -1
- package/dist/types/components/Form/FieldItem.d.ts +3 -2
- package/dist/types/components/Icon/Icon.d.ts +32 -7
- package/dist/types/components/Icon/IconButton.d.ts +21 -7
- package/dist/types/components/Icon/canonicalIconNames.d.ts +1 -1
- package/dist/types/components/Label/Label.d.ts +30 -2
- package/dist/types/components/Menu/MenuItem.d.ts +3 -7
- package/dist/types/components/MultiSelect/MultiSelect.d.ts +13 -9
- package/dist/types/components/Select/Select.d.ts +22 -0
- package/dist/types/components/Tag/Tag.d.ts +5 -1
- package/dist/types/components/Tooltip/Tooltip.d.ts +13 -11
- package/dist/types/components/interfaces.d.ts +1 -0
- package/dist/types/extensions/codemirror/CodeMirror.d.ts +5 -1
- package/dist/types/extensions/react-flow/edges/EdgeTools.d.ts +2 -2
- package/dist/types/extensions/react-flow/index.d.ts +1 -0
- package/dist/types/extensions/react-flow/minimap/MiniMap.d.ts +1 -1
- package/dist/types/extensions/react-flow/minimap/utils.d.ts +1 -0
- package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +17 -1
- package/dist/types/extensions/react-flow/nodes/NodeContentExtension.d.ts +2 -2
- package/dist/types/extensions/react-flow/nodes/NodeTools.d.ts +2 -2
- package/dist/types/extensions/react-flow/nodes/nodeUtils.d.ts +14 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/legacy-replacements/Tabs/Tabs.d.ts +1 -1
- package/package.json +19 -15
- package/scripts/compile-sass.ts +9 -0
- package/scripts/fix-cjs-dist +5 -0
- package/scripts/fix-esm-dist +6 -0
- package/scripts/sassConfig.js +13 -0
- package/src/_shame.scss +17 -0
- package/src/cmem/ActivityControl/ActivityControlWidget.stories.tsx +2 -2
- package/src/cmem/ActivityControl/ActivityControlWidget.tsx +5 -10
- package/src/cmem/index.ts +1 -0
- package/src/cmem/markdown/markdown.scss +1 -1
- package/src/cmem/react-flow/ReactFlow/ReactFlow.stories.tsx +48 -15
- package/src/cmem/react-flow/ReactFlow/ReactFlow.tsx +2 -0
- package/src/cmem/react-flow/StickyNoteModal/StickyNoteModal.tsx +134 -0
- package/src/cmem/react-flow/_index.scss +1 -1
- package/src/cmem/react-flow/_minimap.scss +6 -2
- package/src/cmem/react-flow/configuration/graph.ts +3 -5
- package/src/cmem/react-flow/configuration/linking.ts +5 -6
- package/src/cmem/react-flow/configuration/typing.ts +30 -0
- package/src/cmem/react-flow/configuration/workflow.ts +5 -5
- package/src/cmem/react-flow/nodes/StickyNoteNode.tsx +13 -0
- package/src/cmem/react-flow/{_nodes.scss → nodes/_colors.scss} +0 -0
- package/src/cmem/react-flow/nodes/_index.scss +2 -0
- package/src/cmem/react-flow/nodes/_stickynote.scss +72 -0
- package/src/common/utils/CssCustomProperties.ts +14 -12
- package/src/common/utils/getColorConfiguration.ts +1 -2
- package/src/components/Accordion/accordion.scss +11 -11
- package/src/components/Application/_header.scss +4 -3
- package/src/components/AutoSuggestion/AutoSuggestion.tsx +23 -23
- package/src/components/AutoSuggestion/AutoSuggestionList.tsx +15 -17
- package/src/components/AutoSuggestion/tests/AutoSuggestionList.test.tsx +1 -1
- package/src/components/AutocompleteField/AutoCompleteField.tsx +44 -19
- package/src/components/AutocompleteField/autocompletefield.scss +5 -3
- package/src/components/AutocompleteField/stories/AutoCompleteField.stories.tsx +75 -0
- package/src/components/Breadcrumb/BreadcrumbItem.tsx +15 -6
- package/src/components/Breadcrumb/BreadcrumbList.tsx +36 -14
- package/src/components/Breadcrumb/breadcrumb.scss +24 -1
- package/src/components/Breadcrumb/stories/BreadcrumbItem.stories.tsx +19 -0
- package/src/components/Breadcrumb/stories/BreadcrumbList.stories.tsx +26 -0
- package/src/components/Button/Button.tsx +3 -3
- package/src/components/Button/button.scss +43 -6
- package/src/components/Card/card.scss +5 -5
- package/src/components/ContextOverlay/ContextMenu.stories.tsx +33 -0
- package/src/components/ContextOverlay/ContextMenu.tsx +46 -8
- package/src/components/ContextOverlay/ContextOverlay.stories.tsx +148 -0
- package/src/components/ContextOverlay/ContextOverlay.tsx +16 -9
- package/src/components/ContextOverlay/contextoverlay.scss +17 -5
- package/src/components/Dialog/dialog.scss +10 -8
- package/src/components/Form/FieldItem.tsx +4 -4
- package/src/components/Form/form.scss +6 -6
- package/src/components/Icon/Icon.tsx +33 -18
- package/src/components/Icon/IconButton.tsx +24 -19
- package/src/components/Icon/canonicalIconNames.tsx +134 -121
- package/src/components/Icon/icon.scss +1 -1
- package/src/components/Icon/stories/Icon.stories.tsx +52 -0
- package/src/components/Icon/stories/IconButton.stories.tsx +27 -0
- package/src/components/Label/Label.stories.tsx +27 -0
- package/src/components/Label/Label.tsx +47 -15
- package/src/components/Label/label.scss +2 -2
- package/src/components/Menu/MenuItem.tsx +9 -16
- package/src/components/Menu/menu.scss +10 -9
- package/src/components/MultiSelect/MultiSelect.tsx +30 -18
- package/src/components/Notification/notification.scss +3 -1
- package/src/components/OverviewItem/overviewitem.scss +8 -8
- package/src/components/PropertyValuePair/propertyvalue.scss +9 -7
- package/src/components/Select/Select.stories.tsx +35 -0
- package/src/components/Select/Select.tsx +38 -0
- package/src/components/Select/_select.scss +8 -0
- package/src/components/Separation/separation.scss +6 -6
- package/src/components/SimpleTable/simpletable.scss +5 -5
- package/src/components/Tabs/TabTitle.tsx +2 -4
- package/src/components/Tabs/tabs.scss +3 -3
- package/src/components/Tag/Tag.tsx +6 -0
- package/src/components/Tag/tag.scss +62 -33
- package/src/components/TextField/textfield.scss +6 -4
- package/src/components/Tooltip/Tooltip.stories.tsx +36 -0
- package/src/components/Tooltip/Tooltip.tsx +23 -18
- package/src/components/Tooltip/tooltip.scss +7 -7
- package/src/components/Typography/typography.scss +5 -4
- package/src/components/interfaces.ts +3 -1
- package/src/configuration/_variables.scss +11 -9
- package/src/extensions/codemirror/CodeMirror.tsx +9 -4
- package/src/extensions/react-flow/edges/EdgeTools.tsx +6 -4
- package/src/extensions/react-flow/edges/_edges.scss +3 -3
- package/src/extensions/react-flow/handles/HandleContent.tsx +0 -1
- package/src/extensions/react-flow/handles/_handles.scss +13 -13
- package/src/extensions/react-flow/index.ts +1 -0
- package/src/extensions/react-flow/minimap/MiniMap.tsx +16 -1
- package/src/extensions/react-flow/minimap/_minimap.scss +6 -6
- package/src/extensions/react-flow/minimap/utils.ts +8 -3
- package/src/extensions/react-flow/nodes/NodeContent.tsx +253 -166
- package/src/extensions/react-flow/nodes/NodeContentExtension.tsx +17 -11
- package/src/extensions/react-flow/nodes/NodeTools.tsx +10 -7
- package/src/extensions/react-flow/nodes/_nodes.scss +44 -12
- package/src/extensions/react-flow/nodes/nodeUtils.tsx +53 -0
- package/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx +41 -12
- package/src/extensions/react-flow/nodes/stories/NodeContentExtension.stories.tsx +39 -47
- package/src/includes/blueprintjs/_variables.scss +4 -2
- package/src/includes/carbon-components/_variables.scss +7 -5
- package/src/index.scss +9 -5
- package/src/index.ts +4 -2
- package/src/legacy-replacements/Tabs/Tabs.tsx +3 -1
- package/src/legacy-replacements/TextField/TextField.tsx +7 -5
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import {ComponentMeta, ComponentStory} from "@storybook/react";
|
|
3
|
+
|
|
4
|
+
import {AutoCompleteField, IAutoCompleteFieldProps} from "../AutoCompleteField";
|
|
5
|
+
import {extractSearchWords, matchesAllWords} from "../../Typography/Highlighter";
|
|
6
|
+
import {createNewItemRendererFactory} from "../autoCompleteFieldUtils";
|
|
7
|
+
|
|
8
|
+
const AutoCompleteFieldStory: ComponentMeta<typeof AutoCompleteField> = {
|
|
9
|
+
title: "Components/AutoCompleteField",
|
|
10
|
+
component: AutoCompleteField,
|
|
11
|
+
argTypes: {
|
|
12
|
+
},
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const Template: ComponentStory<typeof AutoCompleteField> = (args) => (
|
|
16
|
+
<AutoCompleteField {...args}></AutoCompleteField>
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
export const Default = Template.bind({});
|
|
20
|
+
export const AdaptQueryAfterSelection = Template.bind({})
|
|
21
|
+
export const AllowReset = Template.bind({})
|
|
22
|
+
export const AllowCustomValues = Template.bind({})
|
|
23
|
+
|
|
24
|
+
// Renders string values as string
|
|
25
|
+
const defaultRenderer = (item: string) => item
|
|
26
|
+
|
|
27
|
+
const defaultArgs: IAutoCompleteFieldProps<string, string> = {
|
|
28
|
+
itemRenderer: (item: string) => `Rendered item: ${item}`,
|
|
29
|
+
itemValueRenderer: (item: string) => `Selected item: ${item}`,
|
|
30
|
+
itemValueString: (item: string) => `Query: ${item}`,
|
|
31
|
+
onSearch: (query: string) => {
|
|
32
|
+
const multiWord = extractSearchWords(query, true)
|
|
33
|
+
return ["search item A", "search element B", "search object C"]
|
|
34
|
+
.filter(word => matchesAllWords(word.toLowerCase(), multiWord))
|
|
35
|
+
},
|
|
36
|
+
onChange: elem => {
|
|
37
|
+
console.log(`Entry '${elem}' selected!`)
|
|
38
|
+
},
|
|
39
|
+
itemValueSelector: defaultRenderer,
|
|
40
|
+
noResultText: "No result"
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Changes the search query for the selected item, e.g. when the rendered item text should be different from the query finding this item.
|
|
44
|
+
const adaptQueryAfterSelection: IAutoCompleteFieldProps<string, string> = {
|
|
45
|
+
...defaultArgs,
|
|
46
|
+
resetQueryToValue: (selectedValue: string) => selectedValue
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Allows to reset a selection
|
|
50
|
+
const resetSelection: IAutoCompleteFieldProps<string, string> = {
|
|
51
|
+
...defaultArgs,
|
|
52
|
+
reset: {
|
|
53
|
+
resetValue: "",
|
|
54
|
+
resetButtonText: "Clear selected value",
|
|
55
|
+
resettableValue: (value: string) => true
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const allowCustomValues: IAutoCompleteFieldProps<string, string> = {
|
|
60
|
+
...defaultArgs,
|
|
61
|
+
createNewItem: {
|
|
62
|
+
itemRenderer: createNewItemRendererFactory(
|
|
63
|
+
(query: string) => `Create new item: ${query}`,
|
|
64
|
+
"item-add-artefact"
|
|
65
|
+
),
|
|
66
|
+
itemFromQuery: item => item,
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
Default.args = defaultArgs;
|
|
71
|
+
AdaptQueryAfterSelection.args = adaptQueryAfterSelection
|
|
72
|
+
AllowReset.args = resetSelection
|
|
73
|
+
AllowCustomValues.args = allowCustomValues
|
|
74
|
+
|
|
75
|
+
export default AutoCompleteFieldStory
|
|
@@ -2,14 +2,14 @@ import React from "react";
|
|
|
2
2
|
// import PropTypes from 'prop-types';
|
|
3
3
|
import {
|
|
4
4
|
Breadcrumb as BlueprintBreadcrumbItem,
|
|
5
|
-
|
|
5
|
+
BreadcrumbProps as BlueprintBreadcrumbItemProps,
|
|
6
6
|
} from "@blueprintjs/core";
|
|
7
7
|
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
8
8
|
import { openInNewTab } from "../../common/utils/openInNewTab";
|
|
9
9
|
|
|
10
10
|
// FIXME: enforce href and remove onClick later
|
|
11
|
-
export type
|
|
12
|
-
|
|
11
|
+
export type BreadcrumbItemProps = Omit<
|
|
12
|
+
BlueprintBreadcrumbItemProps,
|
|
13
13
|
// we remove some properties that are currently not necessary, required usage should be discussed
|
|
14
14
|
"icon" |
|
|
15
15
|
"iconTitle" |
|
|
@@ -17,13 +17,17 @@ export type IBreadcrumbItemProps = Omit<
|
|
|
17
17
|
"target"
|
|
18
18
|
>;
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Item of the breadcrumbs list.
|
|
22
|
+
* It cannot be used directly but the properties can be used within the elements of the `BreadcrumbList.items` property.
|
|
23
|
+
*/
|
|
20
24
|
function BreadcrumbItem({
|
|
21
25
|
className = "",
|
|
22
26
|
onClick,
|
|
23
27
|
href,
|
|
24
28
|
//itemDivider='',
|
|
25
29
|
...otherBlueprintBreadcrumbProps
|
|
26
|
-
}:
|
|
30
|
+
}: BreadcrumbItemProps) {
|
|
27
31
|
|
|
28
32
|
/*
|
|
29
33
|
FIXME: adding `data-divider` does not work this way because BlueprintJS
|
|
@@ -32,11 +36,16 @@ function BreadcrumbItem({
|
|
|
32
36
|
CSS/Sass as content for the pseudo element, currently done static in CSS
|
|
33
37
|
with slash char.
|
|
34
38
|
*/
|
|
39
|
+
|
|
40
|
+
const allowActions = !otherBlueprintBreadcrumbProps.current && !otherBlueprintBreadcrumbProps.disabled;
|
|
41
|
+
const actions = allowActions ? {
|
|
42
|
+
href,
|
|
43
|
+
onClick: (e:React.MouseEvent<HTMLElement>) => openInNewTab(e, onClick, href),
|
|
44
|
+
} : {};
|
|
35
45
|
return (
|
|
36
46
|
<BlueprintBreadcrumbItem
|
|
37
47
|
{...otherBlueprintBreadcrumbProps}
|
|
38
|
-
|
|
39
|
-
onClick={(e) => openInNewTab(e, onClick, href)}
|
|
48
|
+
{...actions}
|
|
40
49
|
className={`${eccgui}-breadcrumb__item ` + className}
|
|
41
50
|
/* data-divider={itemDivider ? itemDivider : ''} */
|
|
42
51
|
/>
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} from "@blueprintjs/
|
|
3
|
+
Breadcrumbs2 as BlueprintBreadcrumbList,
|
|
4
|
+
Breadcrumbs2Props as BlueprintBreadcrumbsProps,
|
|
5
|
+
} from "@blueprintjs/popover2";
|
|
6
6
|
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
7
7
|
import BreadcrumbItem from "./BreadcrumbItem";
|
|
8
|
-
import {
|
|
8
|
+
import { BreadcrumbItemProps } from "./BreadcrumbItem";
|
|
9
9
|
|
|
10
10
|
type ReducedBreadcrumbsProps = Omit<
|
|
11
|
-
|
|
11
|
+
BlueprintBreadcrumbsProps,
|
|
12
12
|
// we remove some properties that are currently not necessary, required usage should be discussed
|
|
13
13
|
"breadcrumbRenderer" |
|
|
14
14
|
"collapseFrom" |
|
|
@@ -19,15 +19,15 @@ type ReducedBreadcrumbsProps = Omit<
|
|
|
19
19
|
>;
|
|
20
20
|
|
|
21
21
|
// FIXME: enforce onItemClick later when href value can always be routed correctly
|
|
22
|
-
interface
|
|
22
|
+
interface BreadcrumbListProps extends ReducedBreadcrumbsProps {
|
|
23
23
|
/**
|
|
24
24
|
list of breadcrumb items to display
|
|
25
25
|
*/
|
|
26
|
-
items:
|
|
26
|
+
items: BreadcrumbItemProps[];
|
|
27
27
|
/**
|
|
28
28
|
click handler used on breadcrumb items
|
|
29
29
|
*/
|
|
30
|
-
onItemClick?(itemUrl: string, event: object): any;
|
|
30
|
+
onItemClick?(itemUrl: string | undefined, event: object): any;
|
|
31
31
|
/**
|
|
32
32
|
native attributes for the unordered HTML list (ul)
|
|
33
33
|
*/
|
|
@@ -35,17 +35,32 @@ interface IBreadcrumbListProps extends ReducedBreadcrumbsProps {
|
|
|
35
35
|
/**
|
|
36
36
|
char that devides breadcrumb items, default: "/" (currently unsupported)
|
|
37
37
|
*/
|
|
38
|
-
itemDivider?: never;
|
|
38
|
+
//itemDivider?: never;
|
|
39
|
+
/**
|
|
40
|
+
* Do not re-render breadcrumbs in a shortened version if they overflow the available space.
|
|
41
|
+
*/
|
|
42
|
+
ignoreOverflow?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* If set to `true` then breadcrumb items can shrink.
|
|
45
|
+
* This way we cannot prevent overflowing breadcrumbs completely but this happens very late.
|
|
46
|
+
* You should enable this when `ignoreOverflow` is `true`.
|
|
47
|
+
*/
|
|
48
|
+
latenOverflow?: boolean;
|
|
39
49
|
}
|
|
40
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Navigation path to the currently show resource or view in the application.
|
|
53
|
+
*/
|
|
41
54
|
function BreadcrumbList({
|
|
42
55
|
className = "",
|
|
43
56
|
// itemDivider = "/",
|
|
44
57
|
onItemClick,
|
|
45
58
|
htmlUlProps,
|
|
59
|
+
ignoreOverflow = false,
|
|
60
|
+
latenOverflow = false,
|
|
46
61
|
...otherBlueprintBreadcrumbsProps
|
|
47
|
-
}:
|
|
48
|
-
const renderBreadcrumb = (propsBreadcrumb:
|
|
62
|
+
}: BreadcrumbListProps) {
|
|
63
|
+
const renderBreadcrumb = (propsBreadcrumb: BreadcrumbItemProps) => {
|
|
49
64
|
const {onClick, ...otherProps} = propsBreadcrumb;
|
|
50
65
|
return (
|
|
51
66
|
<BreadcrumbItem
|
|
@@ -62,18 +77,25 @@ function BreadcrumbList({
|
|
|
62
77
|
);
|
|
63
78
|
};
|
|
64
79
|
|
|
65
|
-
const renderCurrentBreadcrumb = (propsBreadcrumb:
|
|
66
|
-
return <BreadcrumbItem {...propsBreadcrumb} current={true}
|
|
80
|
+
const renderCurrentBreadcrumb = (propsBreadcrumb: BreadcrumbItemProps) => {
|
|
81
|
+
return <BreadcrumbItem {...propsBreadcrumb} current={true} /*itemDivider={itemDivider}*/ />;
|
|
67
82
|
};
|
|
68
83
|
|
|
69
84
|
return (
|
|
70
85
|
<BlueprintBreadcrumbList
|
|
71
86
|
{...otherBlueprintBreadcrumbsProps}
|
|
72
87
|
{...htmlUlProps}
|
|
73
|
-
className={
|
|
88
|
+
className={
|
|
89
|
+
`${eccgui}-breadcrumb__list` +
|
|
90
|
+
(latenOverflow ? ` ${eccgui}-breadcrumb__list--latenoverflow` : "") +
|
|
91
|
+
(className ? ` ${className}` : "")
|
|
92
|
+
}
|
|
74
93
|
minVisibleItems={1}
|
|
75
94
|
breadcrumbRenderer={renderBreadcrumb}
|
|
76
95
|
currentBreadcrumbRenderer={renderCurrentBreadcrumb}
|
|
96
|
+
overflowListProps={ignoreOverflow ? {
|
|
97
|
+
minVisibleItems: otherBlueprintBreadcrumbsProps.items.length,
|
|
98
|
+
} : {}}
|
|
77
99
|
/>
|
|
78
100
|
);
|
|
79
101
|
}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
height: auto;
|
|
6
6
|
|
|
7
7
|
& > li {
|
|
8
|
-
|
|
9
8
|
&:last-of-type {
|
|
10
9
|
min-width: 0;
|
|
11
10
|
}
|
|
@@ -39,9 +38,33 @@
|
|
|
39
38
|
}
|
|
40
39
|
}
|
|
41
40
|
|
|
41
|
+
.#{$eccgui}-breadcrumb__list--latenoverflow {
|
|
42
|
+
& > li {
|
|
43
|
+
flex-shrink: 1;
|
|
44
|
+
min-width: 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.#{$eccgui}-breadcrumb__item > * {
|
|
48
|
+
text-overflow: ellipsis;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
vertical-align: middle;
|
|
51
|
+
display: inline;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
42
55
|
.#{$eccgui}-breadcrumb__item {
|
|
43
56
|
font-size: inherit;
|
|
44
57
|
overflow: hidden;
|
|
45
58
|
text-overflow: ellipsis;
|
|
46
59
|
display: inline-block;
|
|
47
60
|
}
|
|
61
|
+
|
|
62
|
+
a.#{$eccgui}-breadcrumb__item {
|
|
63
|
+
&:not(.#{$ns}-breadcrumb-current):not(.#{$ns}-disabled) {
|
|
64
|
+
text-decoration: underline;
|
|
65
|
+
&:hover,
|
|
66
|
+
&:focus {
|
|
67
|
+
text-decoration: none;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ComponentStory, ComponentMeta } from "@storybook/react";
|
|
3
|
+
import { BreadcrumbItem } from './../../../index';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: "Components/Breadcrumbs/Item",
|
|
7
|
+
component: BreadcrumbItem,
|
|
8
|
+
argTypes: {
|
|
9
|
+
},
|
|
10
|
+
} as ComponentMeta<typeof BreadcrumbItem>
|
|
11
|
+
|
|
12
|
+
const Template: ComponentStory<typeof BreadcrumbItem> = (args) => (
|
|
13
|
+
<BreadcrumbItem {...args} />
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export const Default = Template.bind({});
|
|
17
|
+
Default.args = {
|
|
18
|
+
text : 'Breadcrumb item',
|
|
19
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ComponentStory, ComponentMeta } from "@storybook/react";
|
|
3
|
+
import { BreadcrumbList, BreadcrumbItem } from './../../../index';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: "Components/Breadcrumbs/List",
|
|
7
|
+
component: BreadcrumbList,
|
|
8
|
+
subcomponents: { BreadcrumbItem },
|
|
9
|
+
argTypes: {
|
|
10
|
+
},
|
|
11
|
+
} as ComponentMeta<typeof BreadcrumbList>
|
|
12
|
+
|
|
13
|
+
const Template: ComponentStory<typeof BreadcrumbList> = (args) => (
|
|
14
|
+
<BreadcrumbList {...args} />
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
export const Default = Template.bind({});
|
|
18
|
+
Default.args = {
|
|
19
|
+
items : [
|
|
20
|
+
{text: "Root page", href : "#" },
|
|
21
|
+
{text: "Main click category", onClick: () => alert("Breadcrumb click")},
|
|
22
|
+
{text: <div>Sub category item</div>, href: "#"},
|
|
23
|
+
{text: <span>Disabled breadcrumb with a very long title</span>, disabled: true},
|
|
24
|
+
{text: "Current breadcrumb item", current: true}
|
|
25
|
+
],
|
|
26
|
+
};
|
|
@@ -52,7 +52,7 @@ export interface ButtonProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
52
52
|
/**
|
|
53
53
|
* Object with additional properties for the tooltip.
|
|
54
54
|
*/
|
|
55
|
-
|
|
55
|
+
tooltipProps?: Partial<Omit<TooltipProps, "content" | "children">>;
|
|
56
56
|
/**
|
|
57
57
|
* If an URL is set then the button is included as HTML anchor element instead of a button form element.
|
|
58
58
|
*/
|
|
@@ -79,7 +79,7 @@ function Button({
|
|
|
79
79
|
icon,
|
|
80
80
|
rightIcon,
|
|
81
81
|
tooltip = null,
|
|
82
|
-
|
|
82
|
+
tooltipProps,
|
|
83
83
|
...restProps
|
|
84
84
|
}: ButtonProps & AnchorOrButtonProps) {
|
|
85
85
|
let intention;
|
|
@@ -117,7 +117,7 @@ function Button({
|
|
|
117
117
|
);
|
|
118
118
|
|
|
119
119
|
return (tooltip && !restProps.loading) ? (
|
|
120
|
-
<Tooltip content={tooltip} {...
|
|
120
|
+
<Tooltip content={tooltip} {...tooltipProps}>
|
|
121
121
|
<span>{button}</span>
|
|
122
122
|
</Tooltip>
|
|
123
123
|
) : (
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
@use "sass:color";
|
|
2
|
+
@use "sass:map";
|
|
3
|
+
|
|
1
4
|
$button-height: $pt-button-height;
|
|
2
5
|
$button-border-width: 1px; // !default;
|
|
3
|
-
$button-padding: ($pt-grid-size
|
|
6
|
+
$button-padding: ($pt-grid-size * 0.5) $pt-grid-size; // !default;
|
|
4
7
|
$button-border-radius: $pt-border-radius;
|
|
5
8
|
// $button-padding-small: 0 ($pt-grid-size * 0.7) !default;
|
|
6
|
-
// $button-padding-large: ($pt-grid-size
|
|
7
|
-
// $button-icon-spacing: ($pt-button-height - $pt-icon-size-standard)
|
|
8
|
-
// $button-icon-spacing-large: ($pt-button-height-large - $pt-icon-size-large)
|
|
9
|
+
// $button-padding-large: ($pt-grid-size * 0.5) ($pt-grid-size * 1.5) !default;
|
|
10
|
+
// $button-icon-spacing: ($pt-button-height - $pt-icon-size-standard) * 0.5 !default;
|
|
11
|
+
// $button-icon-spacing-large: ($pt-button-height-large - $pt-icon-size-large) * 0.5 !default;
|
|
9
12
|
// $button-box-shadow: inset 0 0 0 $button-border-width rgba($black, 0.2), inset 0 (-$button-border-width) 0 rgba($black, 0.1) !default;
|
|
10
13
|
// $button-box-shadow-active: inset 0 0 0 $button-border-width rgba($black, 0.2), inset 0 1px 2px rgba($black, 0.2) !default;
|
|
11
14
|
// $button-intent-box-shadow: inset 0 0 0 $button-border-width rgba($black, 0.4), inset 0 (-$button-border-width) 0 rgba($black, 0.2) !default;
|
|
@@ -44,10 +47,44 @@ $dark-button-gradient: $button-gradient; // !default; // linear-gradient(to bott
|
|
|
44
47
|
// $button-outlined-border-intent-opacity: 0.6 !default;
|
|
45
48
|
// $button-outlined-border-disabled-intent-opacity: 0.2 !default;
|
|
46
49
|
|
|
50
|
+
$button-intents: (
|
|
51
|
+
"primary": ($eccgui-color-accent, color.scale($eccgui-color-accent, $lightness: -20%), color.scale($eccgui-color-accent, $lightness: -40%)),
|
|
52
|
+
"success": ($eccgui-color-success-text, color.scale($eccgui-color-success-text, $lightness: -20%), color.scale($eccgui-color-success-text, $lightness: -40%)),
|
|
53
|
+
"warning": ($eccgui-color-warning-text, color.scale($eccgui-color-warning-text, $lightness: -20%), color.scale($eccgui-color-warning-text, $lightness: -40%)),
|
|
54
|
+
"danger": ($eccgui-color-danger-text, color.scale($eccgui-color-danger-text, $lightness: -20%), color.scale($eccgui-color-danger-text, $lightness: -40%))
|
|
55
|
+
);
|
|
56
|
+
|
|
47
57
|
@import "~@blueprintjs/core/src/components/button/button";
|
|
48
58
|
|
|
49
|
-
.#{$ns}-button
|
|
50
|
-
|
|
59
|
+
.#{$ns}-button {
|
|
60
|
+
.#{$ns}-large {
|
|
61
|
+
min-height: mini-units(6);
|
|
62
|
+
}
|
|
63
|
+
// special case override: blueprint do not use configured colors here
|
|
64
|
+
&.#{$ns}-intent-warning {
|
|
65
|
+
@include pt-button-intent(map.get($button-intents, "warning")...);
|
|
66
|
+
|
|
67
|
+
&:not(.#{$ns}-disabled).#{$ns}-icon > svg {
|
|
68
|
+
fill: rgba($white, 0.7);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
&:not(.#{$ns}-disabled):not(.#{$ns}-minimal):not(.#{$ns}-outlined) {
|
|
72
|
+
@include pt-button-intent(map.get($button-intents, "warning")...);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
&.#{$ns}-minimal,
|
|
76
|
+
&.#{$ns}-outlined {
|
|
77
|
+
background: none;
|
|
78
|
+
box-shadow: none;
|
|
79
|
+
color: $eccgui-color-warning-text;
|
|
80
|
+
border-color: $eccgui-color-warning-text;
|
|
81
|
+
|
|
82
|
+
&:disabled,
|
|
83
|
+
&.#{$ns}-disabled {
|
|
84
|
+
color: rgba($eccgui-color-warning-text, 0.39);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
51
88
|
}
|
|
52
89
|
|
|
53
90
|
.#{$ns}-button-text {
|
|
@@ -49,7 +49,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
.#{$eccgui}-card__header {
|
|
52
|
-
padding: $eccgui-size-card-spacing
|
|
52
|
+
padding: $eccgui-size-card-spacing * 0.5 $eccgui-size-card-spacing * 0.5 $eccgui-size-card-spacing * 0.5 $eccgui-size-card-spacing;
|
|
53
53
|
box-sizing: content-box;
|
|
54
54
|
flex-grow: 0;
|
|
55
55
|
flex-shrink: 0;
|
|
@@ -83,7 +83,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
.#{$eccgui}-card__content {
|
|
86
|
-
padding: $eccgui-size-card-spacing
|
|
86
|
+
padding: $eccgui-size-card-spacing * 0.5 $eccgui-size-card-spacing $eccgui-size-card-spacing $eccgui-size-card-spacing;
|
|
87
87
|
flex-grow: 1;
|
|
88
88
|
flex-shrink: 1;
|
|
89
89
|
overflow: auto;
|
|
@@ -95,7 +95,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
.#{$eccgui}-card__actions {
|
|
98
|
-
padding: $eccgui-size-card-spacing
|
|
98
|
+
padding: $eccgui-size-card-spacing * 0.25;
|
|
99
99
|
flex-grow: 0;
|
|
100
100
|
flex-shrink: 0;
|
|
101
101
|
display: flex;
|
|
@@ -103,7 +103,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
|
|
|
103
103
|
align-items: center;
|
|
104
104
|
|
|
105
105
|
& > * {
|
|
106
|
-
margin: $eccgui-size-card-spacing
|
|
106
|
+
margin: $eccgui-size-card-spacing * 0.25;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
&.#{$eccgui}-intent--success > .#{$eccgui}-button:first-child {
|
|
@@ -133,7 +133,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
|
|
|
133
133
|
align-items: center;
|
|
134
134
|
|
|
135
135
|
& > * {
|
|
136
|
-
margin: $eccgui-size-card-spacing
|
|
136
|
+
margin: $eccgui-size-card-spacing * 0.25;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
.#{$eccgui}-card__actions--inversedirection > & {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ComponentStory, ComponentMeta } from "@storybook/react";
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
ContextMenu,
|
|
6
|
+
MenuItem,
|
|
7
|
+
} from "../../index";
|
|
8
|
+
|
|
9
|
+
export default {
|
|
10
|
+
title: "Components/ContextMenu",
|
|
11
|
+
component: ContextMenu,
|
|
12
|
+
subcomponents: { MenuItem },
|
|
13
|
+
argTypes: {
|
|
14
|
+
children: {
|
|
15
|
+
control: "none",
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
} as ComponentMeta<typeof ContextMenu>;
|
|
19
|
+
|
|
20
|
+
const Template: ComponentStory<typeof ContextMenu> = (args) => (
|
|
21
|
+
<ContextMenu {...args} />
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
export const Default = Template.bind({});
|
|
25
|
+
Default.args = {
|
|
26
|
+
children: [
|
|
27
|
+
<MenuItem key="m0" text={"First option"} />,
|
|
28
|
+
<MenuItem key="m1" text={"Item two"}>
|
|
29
|
+
<MenuItem key="m0" text={"First sub option"} />
|
|
30
|
+
<MenuItem key="m1" text={"Sub item two"} />
|
|
31
|
+
</MenuItem>
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -1,20 +1,54 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, {ReactElement} from "react";
|
|
2
2
|
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
3
|
-
import
|
|
3
|
+
import { TestableComponent } from "../interfaces";
|
|
4
|
+
import ContextOverlay, { ContextOverlayProps } from "./ContextOverlay";
|
|
4
5
|
import Menu from "../Menu/Menu";
|
|
5
6
|
import IconButton from "../Icon/IconButton";
|
|
6
7
|
import {ValidIconName} from "../Icon/canonicalIconNames";
|
|
7
8
|
|
|
8
|
-
interface ContextMenuProps {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
interface ContextMenuProps extends TestableComponent {
|
|
10
|
+
/**
|
|
11
|
+
* Addional CSS class names.
|
|
12
|
+
*/
|
|
13
|
+
className?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The elements of the context menu.
|
|
16
|
+
* They will be wrapped in a `Menu` element automatically.
|
|
17
|
+
*/
|
|
18
|
+
children?: JSX.Element | JSX.Element[];
|
|
19
|
+
/**
|
|
20
|
+
* Toggler that need to be used to display menu.
|
|
21
|
+
* If a valid icon name is used then the icon element is displayed.
|
|
22
|
+
* In this case `togglerText`, `togglerLarge` and `tooltipAsTitle` are used, too.
|
|
23
|
+
*/
|
|
24
|
+
togglerElement?: ValidIconName | JSX.Element;
|
|
25
|
+
/**
|
|
26
|
+
* Text displayed as title or tooltip on toggler element.
|
|
27
|
+
*/
|
|
28
|
+
togglerText?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Toggler element is displayed larger than normal.
|
|
31
|
+
*/
|
|
32
|
+
togglerLarge?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Tooltip on toggler element is display as HTML title, not as extra tooltip element.
|
|
35
|
+
*/
|
|
36
|
+
tooltipAsTitle?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Props to spread to `ContextOverlay` that is used to display the dropdown.
|
|
39
|
+
*/
|
|
40
|
+
contextOverlayProps?: Partial<Omit<ContextOverlayProps, "content" | "children" | "className">>
|
|
11
41
|
}
|
|
12
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Element displays menu items after toggler is clicked.
|
|
45
|
+
*/
|
|
13
46
|
function ContextMenu({
|
|
14
47
|
children,
|
|
15
48
|
className = "",
|
|
16
49
|
togglerElement = "item-moremenu",
|
|
17
50
|
togglerText = "Show more options",
|
|
51
|
+
contextOverlayProps,
|
|
18
52
|
togglerLarge = false,
|
|
19
53
|
/* FIXME: The Tooltip component can interfere with the opened menu, since it is implemented via portal and may cover the menu,
|
|
20
54
|
so by default we use the title attribute instead of Tooltip. */
|
|
@@ -22,7 +56,12 @@ function ContextMenu({
|
|
|
22
56
|
...restProps
|
|
23
57
|
}: ContextMenuProps) {
|
|
24
58
|
return (
|
|
25
|
-
<ContextOverlay
|
|
59
|
+
<ContextOverlay
|
|
60
|
+
{...restProps}
|
|
61
|
+
{...contextOverlayProps}
|
|
62
|
+
className={`${eccgui}-contextmenu ` + className}
|
|
63
|
+
content={<Menu>{children}</Menu>}
|
|
64
|
+
>
|
|
26
65
|
{typeof togglerElement === "string" ? (
|
|
27
66
|
<IconButton
|
|
28
67
|
tooltipAsTitle={tooltipAsTitle}
|
|
@@ -32,9 +71,8 @@ function ContextMenu({
|
|
|
32
71
|
data-test-id={restProps["data-test-id"]}
|
|
33
72
|
/>
|
|
34
73
|
) : (
|
|
35
|
-
|
|
74
|
+
togglerElement as ReactElement
|
|
36
75
|
)}
|
|
37
|
-
<Menu>{children}</Menu>
|
|
38
76
|
</ContextOverlay>
|
|
39
77
|
);
|
|
40
78
|
}
|