@eccenca/gui-elements 25.0.0 → 25.1.0-featurev2510colorfield.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js +17 -13
  3. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  4. package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js +1 -3
  5. package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
  6. package/dist/cjs/cmem/ContentBlobToggler/ContentBlobToggler.js +1 -0
  7. package/dist/cjs/cmem/ContentBlobToggler/ContentBlobToggler.js.map +1 -1
  8. package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +34 -11
  9. package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
  10. package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlowV12.js.map +1 -1
  11. package/dist/cjs/common/Intent/index.js +1 -1
  12. package/dist/cjs/common/Intent/index.js.map +1 -1
  13. package/dist/cjs/common/index.js +1 -0
  14. package/dist/cjs/common/index.js.map +1 -1
  15. package/dist/cjs/common/utils/colorHash.js +25 -11
  16. package/dist/cjs/common/utils/colorHash.js.map +1 -1
  17. package/dist/cjs/components/Application/ApplicationViewability.js +33 -0
  18. package/dist/cjs/components/Application/ApplicationViewability.js.map +1 -0
  19. package/dist/cjs/components/Application/index.js +1 -0
  20. package/dist/cjs/components/Application/index.js.map +1 -1
  21. package/dist/cjs/components/ColorField/ColorField.js +115 -0
  22. package/dist/cjs/components/ColorField/ColorField.js.map +1 -0
  23. package/dist/cjs/components/ContextOverlay/ContextOverlay.js +6 -6
  24. package/dist/cjs/components/ContextOverlay/ContextOverlay.js.map +1 -1
  25. package/dist/cjs/components/DecoupledOverlay/DecoupledOverlay.js +47 -0
  26. package/dist/cjs/components/DecoupledOverlay/DecoupledOverlay.js.map +1 -0
  27. package/dist/cjs/components/Icon/IconButton.js.map +1 -1
  28. package/dist/cjs/components/Icon/canonicalIconNames.js +3 -0
  29. package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
  30. package/dist/cjs/components/Icon/transformIcon.js +14 -0
  31. package/dist/cjs/components/Icon/transformIcon.js.map +1 -0
  32. package/dist/cjs/components/MultiSelect/MultiSelect.js +2 -1
  33. package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
  34. package/dist/cjs/components/RadioButton/RadioButton.js +5 -2
  35. package/dist/cjs/components/RadioButton/RadioButton.js.map +1 -1
  36. package/dist/cjs/components/Typography/InlineText.js +29 -0
  37. package/dist/cjs/components/Typography/InlineText.js.map +1 -0
  38. package/dist/cjs/components/Typography/index.js +1 -0
  39. package/dist/cjs/components/Typography/index.js.map +1 -1
  40. package/dist/cjs/components/VisualTour/VisualTour.js +24 -32
  41. package/dist/cjs/components/VisualTour/VisualTour.js.map +1 -1
  42. package/dist/cjs/components/index.js +2 -0
  43. package/dist/cjs/components/index.js.map +1 -1
  44. package/dist/cjs/extensions/codemirror/CodeMirror.js +18 -6
  45. package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
  46. package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +1 -1
  47. package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -1
  48. package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js +2 -2
  49. package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -1
  50. package/dist/cjs/extensions/react-flow/edges/EdgeLabel.js +1 -1
  51. package/dist/cjs/extensions/react-flow/edges/EdgeLabel.js.map +1 -1
  52. package/dist/cjs/extensions/react-flow/edges/EdgeNew.js +1 -1
  53. package/dist/cjs/extensions/react-flow/edges/EdgeNew.js.map +1 -1
  54. package/dist/cjs/extensions/react-flow/handles/HandleDefault.js +1 -1
  55. package/dist/cjs/extensions/react-flow/handles/HandleDefault.js.map +1 -1
  56. package/dist/cjs/extensions/react-flow/minimap/MiniMap.js +1 -1
  57. package/dist/cjs/extensions/react-flow/minimap/MiniMap.js.map +1 -1
  58. package/dist/cjs/extensions/react-flow/minimap/MiniMapV12.js.map +1 -1
  59. package/dist/cjs/extensions/react-flow/nodes/nodeUtils.js.map +1 -1
  60. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js +19 -14
  61. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  62. package/dist/esm/cmem/ActivityControl/SilkActivityControl.js +1 -3
  63. package/dist/esm/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
  64. package/dist/esm/cmem/ContentBlobToggler/ContentBlobToggler.js +1 -0
  65. package/dist/esm/cmem/ContentBlobToggler/ContentBlobToggler.js.map +1 -1
  66. package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +32 -9
  67. package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
  68. package/dist/esm/cmem/react-flow/ReactFlow/ReactFlowV12.js.map +1 -1
  69. package/dist/esm/common/Intent/index.js +1 -1
  70. package/dist/esm/common/Intent/index.js.map +1 -1
  71. package/dist/esm/common/index.js +2 -1
  72. package/dist/esm/common/index.js.map +1 -1
  73. package/dist/esm/common/utils/colorHash.js +25 -12
  74. package/dist/esm/common/utils/colorHash.js.map +1 -1
  75. package/dist/esm/components/Application/ApplicationViewability.js +28 -0
  76. package/dist/esm/components/Application/ApplicationViewability.js.map +1 -0
  77. package/dist/esm/components/Application/index.js +1 -0
  78. package/dist/esm/components/Application/index.js.map +1 -1
  79. package/dist/esm/components/ColorField/ColorField.js +141 -0
  80. package/dist/esm/components/ColorField/ColorField.js.map +1 -0
  81. package/dist/esm/components/ContextOverlay/ContextOverlay.js +3 -3
  82. package/dist/esm/components/ContextOverlay/ContextOverlay.js.map +1 -1
  83. package/dist/esm/components/DecoupledOverlay/DecoupledOverlay.js +41 -0
  84. package/dist/esm/components/DecoupledOverlay/DecoupledOverlay.js.map +1 -0
  85. package/dist/esm/components/Icon/IconButton.js.map +1 -1
  86. package/dist/esm/components/Icon/canonicalIconNames.js +3 -0
  87. package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
  88. package/dist/esm/components/Icon/transformIcon.js +21 -0
  89. package/dist/esm/components/Icon/transformIcon.js.map +1 -0
  90. package/dist/esm/components/MultiSelect/MultiSelect.js +3 -2
  91. package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
  92. package/dist/esm/components/RadioButton/RadioButton.js +6 -2
  93. package/dist/esm/components/RadioButton/RadioButton.js.map +1 -1
  94. package/dist/esm/components/Typography/InlineText.js +33 -0
  95. package/dist/esm/components/Typography/InlineText.js.map +1 -0
  96. package/dist/esm/components/Typography/index.js +1 -0
  97. package/dist/esm/components/Typography/index.js.map +1 -1
  98. package/dist/esm/components/VisualTour/VisualTour.js +25 -33
  99. package/dist/esm/components/VisualTour/VisualTour.js.map +1 -1
  100. package/dist/esm/components/index.js +2 -0
  101. package/dist/esm/components/index.js.map +1 -1
  102. package/dist/esm/extensions/codemirror/CodeMirror.js +19 -7
  103. package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
  104. package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +1 -1
  105. package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -1
  106. package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js +3 -3
  107. package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -1
  108. package/dist/esm/extensions/react-flow/edges/EdgeLabel.js +1 -1
  109. package/dist/esm/extensions/react-flow/edges/EdgeLabel.js.map +1 -1
  110. package/dist/esm/extensions/react-flow/edges/EdgeNew.js +1 -1
  111. package/dist/esm/extensions/react-flow/edges/EdgeNew.js.map +1 -1
  112. package/dist/esm/extensions/react-flow/handles/HandleDefault.js +1 -1
  113. package/dist/esm/extensions/react-flow/handles/HandleDefault.js.map +1 -1
  114. package/dist/esm/extensions/react-flow/minimap/MiniMap.js +1 -1
  115. package/dist/esm/extensions/react-flow/minimap/MiniMap.js.map +1 -1
  116. package/dist/esm/extensions/react-flow/minimap/MiniMapV12.js.map +1 -1
  117. package/dist/esm/extensions/react-flow/nodes/nodeUtils.js.map +1 -1
  118. package/dist/types/cmem/ActivityControl/ActivityControlWidget.d.ts +9 -0
  119. package/dist/types/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.d.ts +26 -10
  120. package/dist/types/common/index.d.ts +2 -1
  121. package/dist/types/common/utils/colorHash.d.ts +4 -3
  122. package/dist/types/components/Application/ApplicationViewability.d.ts +36 -0
  123. package/dist/types/components/Application/index.d.ts +1 -0
  124. package/dist/types/components/ColorField/ColorField.d.ts +31 -0
  125. package/dist/types/components/ContextOverlay/ContextOverlay.d.ts +7 -1
  126. package/dist/types/components/DecoupledOverlay/DecoupledOverlay.d.ts +20 -0
  127. package/dist/types/components/Icon/IconButton.d.ts +1 -1
  128. package/dist/types/components/Icon/canonicalIconNames.d.ts +2 -0
  129. package/dist/types/components/Icon/transformIcon.d.ts +2 -0
  130. package/dist/types/components/MultiSelect/MultiSelect.d.ts +1 -1
  131. package/dist/types/components/RadioButton/RadioButton.d.ts +8 -2
  132. package/dist/types/components/Structure/TitleSubsection.d.ts +1 -1
  133. package/dist/types/components/Tabs/Tab.d.ts +2 -2
  134. package/dist/types/components/Typography/InlineText.d.ts +13 -0
  135. package/dist/types/components/Typography/index.d.ts +1 -0
  136. package/dist/types/components/index.d.ts +2 -0
  137. package/dist/types/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.d.ts +1 -1
  138. package/dist/types/extensions/codemirror/tests/codemirrorTestHelper.d.ts +1 -1
  139. package/package.json +50 -51
  140. package/src/cmem/ActivityControl/ActivityControlWidget.tsx +68 -35
  141. package/src/cmem/ActivityControl/SilkActivityControl.tsx +1 -1
  142. package/src/cmem/ContentBlobToggler/ContentBlobToggler.tsx +1 -1
  143. package/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx +66 -18
  144. package/src/cmem/ContentBlobToggler/stories/StringPreviewContentBlobToggler.stories.tsx +27 -0
  145. package/src/cmem/ContentBlobToggler/tests/StringPreviewContentBlobToggler.test.tsx +98 -0
  146. package/src/cmem/react-flow/ReactFlow/ReactFlowV12.tsx +1 -0
  147. package/src/common/Intent/index.ts +2 -1
  148. package/src/common/index.ts +2 -1
  149. package/src/common/utils/colorHash.ts +36 -18
  150. package/src/components/Application/ApplicationViewability.tsx +61 -0
  151. package/src/components/Application/_colors.scss +15 -0
  152. package/src/components/Application/_content.scss +7 -0
  153. package/src/components/Application/_header.scss +12 -3
  154. package/src/components/Application/_viewability.scss +13 -0
  155. package/src/components/Application/application.scss +1 -0
  156. package/src/components/Application/index.ts +1 -0
  157. package/src/components/Application/stories/ApplicationViewability.stories.tsx +37 -0
  158. package/src/components/Application/tests/ApplicationViewability.test.tsx +43 -0
  159. package/src/components/AutoSuggestion/tests/ExtendedCodeEditor.test.tsx +1 -1
  160. package/src/components/Card/card.scss +6 -0
  161. package/src/components/Checkbox/checkbox.scss +14 -2
  162. package/src/components/ColorField/ColorField.stories.tsx +69 -0
  163. package/src/components/ColorField/ColorField.test.tsx +125 -0
  164. package/src/components/ColorField/ColorField.tsx +200 -0
  165. package/src/components/ColorField/_colorfield.scss +56 -0
  166. package/src/components/ContentGroup/_contentgroup.scss +9 -0
  167. package/src/components/ContextOverlay/ContextOverlay.tsx +20 -1
  168. package/src/components/DecoupledOverlay/DecoupledOverlay.stories.tsx +30 -0
  169. package/src/components/DecoupledOverlay/DecoupledOverlay.tsx +97 -0
  170. package/src/components/DecoupledOverlay/_decoupledoverlay.scss +46 -0
  171. package/src/components/Depiction/depiction.scss +6 -0
  172. package/src/components/FlexibleLayout/flexiblelayout.scss +16 -0
  173. package/src/components/Grid/grid.scss +17 -0
  174. package/src/components/Grid/stories/Grid.stories.tsx +10 -7
  175. package/src/components/Grid/stories/GridRow.stories.tsx +13 -7
  176. package/src/components/Icon/IconButton.tsx +1 -1
  177. package/src/components/Icon/canonicalIconNames.tsx +3 -0
  178. package/src/components/Icon/transformIcon.tsx +17 -0
  179. package/src/components/Link/Link.stories.tsx +30 -0
  180. package/src/components/Link/link.scss +28 -2
  181. package/src/components/MultiSelect/MultiSelect.tsx +12 -3
  182. package/src/components/Notification/notification.scss +6 -0
  183. package/src/components/OverviewItem/overviewitem.scss +9 -0
  184. package/src/components/OverviewItem/stories/OverviewItem.stories.tsx +28 -0
  185. package/src/components/OverviewItem/stories/OverviewItemActions.stories.tsx +2 -2
  186. package/src/components/OverviewItem/stories/OverviewItemDescription.stories.tsx +1 -1
  187. package/src/components/OverviewItem/stories/OverviewItemLine.stories.tsx +1 -1
  188. package/src/components/PropertyValuePair/propertyvalue.scss +23 -1
  189. package/src/components/RadioButton/RadioButton.tsx +15 -3
  190. package/src/components/RadioButton/radiobutton.scss +13 -0
  191. package/src/components/Separation/separation.scss +6 -0
  192. package/src/components/Table/table.scss +22 -0
  193. package/src/components/Tabs/stories/TabTitle.stories.tsx +7 -2
  194. package/src/components/Tag/stories/TagList.stories.tsx +2 -2
  195. package/src/components/Tag/tag.scss +19 -9
  196. package/src/components/TextReducer/TextReducer.test.tsx +3 -3
  197. package/src/components/Typography/InlineText.tsx +24 -0
  198. package/src/components/Typography/_reset.scss +1 -0
  199. package/src/components/Typography/index.ts +1 -0
  200. package/src/components/Typography/stories/InlineText.stories.tsx +27 -0
  201. package/src/components/Typography/typography.scss +28 -2
  202. package/src/components/VisualTour/VisualTour.tsx +30 -50
  203. package/src/components/VisualTour/visualTour.scss +0 -34
  204. package/src/components/index.scss +2 -0
  205. package/src/components/index.ts +2 -0
  206. package/src/configuration/_customproperties.scss +32 -0
  207. package/src/configuration/stories/customproperties.stories.tsx +118 -0
  208. package/src/extensions/codemirror/CodeMirror.tsx +20 -9
  209. package/src/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.ts +1 -2
  210. package/src/extensions/codemirror/tests/codemirrorTestHelper.ts +3 -3
  211. package/src/extensions/react-flow/_config.scss +3 -3
  212. package/src/extensions/react-flow/edges/EdgeLabel.tsx +5 -3
  213. package/src/extensions/react-flow/edges/EdgeNew.tsx +2 -1
  214. package/src/extensions/react-flow/edges/_edges.scss +3 -2
  215. package/src/extensions/react-flow/handles/HandleDefault.tsx +2 -2
  216. package/src/extensions/react-flow/minimap/MiniMap.tsx +2 -1
  217. package/src/extensions/react-flow/minimap/MiniMapV12.tsx +1 -1
  218. package/src/extensions/react-flow/nodes/_nodes.scss +4 -3
  219. package/src/extensions/react-flow/nodes/nodeUtils.tsx +1 -0
  220. package/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx +2 -2
  221. package/src/index.scss +1 -0
@@ -29,3 +29,16 @@
29
29
  }
30
30
  }
31
31
  }
32
+
33
+ .#{$eccgui}-radiobutton--hidden-indicator {
34
+ &:not(.#{$ns}-align-right) {
35
+ padding-inline-start: 0;
36
+ }
37
+ &:not(.#{$ns}-align-left) {
38
+ padding-inline-end: 0;
39
+ }
40
+
41
+ input ~ .#{$ns}-control-indicator {
42
+ visibility: hidden;
43
+ }
44
+ }
@@ -101,3 +101,9 @@ $eccgui-color-separation-divider: $pt-divider-black !default;
101
101
  margin: 0 $eccgui-size-separation-spacing-medium;
102
102
  }
103
103
  }
104
+
105
+ @media print {
106
+ .#{$eccgui}-separation__divider-horizontal {
107
+ print-color-adjust: exact;
108
+ }
109
+ }
@@ -356,3 +356,25 @@ tr.#{$prefix}--parent-row.#{$prefix}--expandable-row + tr[data-child-row] {
356
356
  min-height: $eccgui-size-tablecell-height-regular;
357
357
  }
358
358
  }
359
+
360
+ @media print {
361
+ .#{$eccgui}-simpletable:has(.#{$eccgui}-simpletable__cell > .#{$eccgui}-typography__overflowtext) {
362
+ // allow 2 lines of text in `<OverflowText />` elements that are direct children of table cells
363
+ .#{$eccgui}-simpletable__cell {
364
+ & > .#{$eccgui}-typography__overflowtext,
365
+ & > .#{$eccgui}-typography__overflowtext--passdown {
366
+ display: inline;
367
+ overflow: visible;
368
+ text-overflow: unset;
369
+ white-space: unset;
370
+ }
371
+ & > .#{$eccgui}-typography__overflowtext {
372
+ display: -webkit-box;
373
+ overflow: hidden;
374
+ -webkit-line-clamp: 2;
375
+ line-clamp: 2;
376
+ -webkit-box-orient: vertical;
377
+ }
378
+ }
379
+ }
380
+ }
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { Meta, StoryFn } from "@storybook/react";
3
3
 
4
- import { Tabs, TabTitle as TabTitleOrg } from "./../../../";
4
+ import { Tabs, TabTitle as TabTitleOrg, TabTitleProps } from "./../../../";
5
5
 
6
6
  export default {
7
7
  title: "Components/Tabs/TabTitle",
@@ -9,7 +9,7 @@ export default {
9
9
  argTypes: {},
10
10
  } as Meta<typeof TabTitleOrg>;
11
11
 
12
- const TabTitle = (args) => {
12
+ const TabTitle = (args: React.JSX.IntrinsicAttributes & TabTitleProps) => {
13
13
  return (
14
14
  <Tabs
15
15
  id="titledemo"
@@ -31,3 +31,8 @@ TabTitleElement.args = {
31
31
  titlePrefix: "[",
32
32
  titleSuffix: <span>]</span>,
33
33
  };
34
+
35
+ export const TabTitleSymbolElement = TemplateFull.bind({});
36
+ TabTitleSymbolElement.args = {
37
+ text: "★",
38
+ };
@@ -8,7 +8,7 @@ export default {
8
8
  component: TagList,
9
9
  argTypes: {
10
10
  children: {
11
- control: "none",
11
+ control: false,
12
12
  },
13
13
  },
14
14
  } as Meta<typeof TagList>;
@@ -18,5 +18,5 @@ const Template: StoryFn<typeof TagList> = (args) => <TagList {...args} />;
18
18
  export const List = Template.bind({});
19
19
  List.args = {
20
20
  label: "Tag list",
21
- children: [<Tag>Short</Tag>, <Tag>List</Tag>, <Tag>Of</Tag>, <Tag>Tags</Tag>],
21
+ children: [<Tag small>Short</Tag>, <Tag>List</Tag>, <Tag>Of</Tag>, <Tag large>Tags</Tag>],
22
22
  };
@@ -30,12 +30,15 @@ $tag-round-adjustment: 0 !default;
30
30
  @import "~@blueprintjs/core/src/components/tag/tag";
31
31
 
32
32
  .#{$eccgui}-tag__item {
33
+ --eccgui-tag-border-width: 1px;
34
+
33
35
  flex-grow: 0;
34
36
  flex-shrink: 0;
35
37
  min-width: calc(#{$tag-height} - 2px);
36
38
  min-height: calc(#{$tag-height} - 2px);
37
39
  max-height: calc(#{$tag-height} - 2px);
38
40
  padding: 0 $tag-padding-top;
41
+ line-height: calc(#{$tag-height} - 2px);
39
42
 
40
43
  &.#{$ns}-round {
41
44
  border-radius: $tag-height * 0.5;
@@ -55,11 +58,12 @@ $tag-round-adjustment: 0 !default;
55
58
  }
56
59
 
57
60
  &.#{$eccgui}-tag--small {
58
- min-width: calc(#{$tag-height-small} + #{$tag-padding-small} - 2px);
59
- min-height: calc(#{$tag-height-small} + #{$tag-padding-small} - 2px);
60
- max-height: calc(#{$tag-height-small} + #{$tag-padding-small} - 2px);
61
+ min-width: calc(#{$tag-height-small} + #{$tag-padding-small});
62
+ min-height: calc(#{$tag-height-small} + #{$tag-padding-small});
63
+ max-height: calc(#{$tag-height-small} + #{$tag-padding-small});
61
64
  padding: 0 $tag-padding-small;
62
- line-height: calc(#{$tag-height-small} - 2px);
65
+ font-size: calc(#{$eccgui-size-typo-tag} - 1px);
66
+ line-height: calc(#{$tag-height-small} + #{$tag-padding-small});
63
67
 
64
68
  &.#{$ns}-round {
65
69
  border-radius: $tag-height-small * 0.5;
@@ -75,7 +79,7 @@ $tag-round-adjustment: 0 !default;
75
79
  min-height: calc(#{$tag-height-large} + #{$tag-padding-large} - 2px);
76
80
  max-height: calc(#{$tag-height-large} + #{$tag-padding-large} - 2px);
77
81
  font-size: $eccgui-size-typo-tag-large;
78
- line-height: calc(#{$tag-height-large} - 2px);
82
+ line-height: calc(#{$tag-height-large} + #{$tag-padding-large} - 2px);
79
83
 
80
84
  &.#{$ns}-round {
81
85
  border-radius: $tag-height-large * 0.5;
@@ -138,7 +142,7 @@ $tag-round-adjustment: 0 !default;
138
142
 
139
143
  .#{$ns}-tag {
140
144
  border-style: solid;
141
- border-width: 1px;
145
+ border-width: var(--eccgui-tag-border-width);
142
146
 
143
147
  &:not([class*="#{$ns}-intent-"]) {
144
148
  --eccgui-tag-bg: #{$tag-default-color};
@@ -151,7 +155,7 @@ $tag-round-adjustment: 0 !default;
151
155
  var(--eccgui-tag-bg) var(--eccgui-tag-emfactor),
152
156
  eccgui-color-var("identity", "background", "100")
153
157
  );
154
- border-color: var(--eccgui-tag-border);
158
+ border-color: eccgui-color-rgba(var(--eccgui-tag-border), calc(0.25 * var(--eccgui-tag-emfactor)));
155
159
 
156
160
  &.#{$eccgui}-tag--strongeremphasis {
157
161
  --eccgui-tag-emfactor: 95%;
@@ -211,7 +215,7 @@ $tag-round-adjustment: 0 !default;
211
215
  var(--eccgui-tag-bg) var(--eccgui-tag-emfactor),
212
216
  eccgui-color-var("identity", "background", "100")
213
217
  );
214
- border-color: var(--eccgui-tag-border);
218
+ border-color: eccgui-color-rgba(var(--eccgui-tag-border), calc(0.25 * var(--eccgui-tag-emfactor)));
215
219
 
216
220
  &.#{$eccgui}-tag--strongeremphasis {
217
221
  --eccgui-tag-emfactor: 100%;
@@ -231,7 +235,7 @@ $tag-round-adjustment: 0 !default;
231
235
 
232
236
  &[class*="#{$eccgui}-intent--"] {
233
237
  color: eccgui-color-rgba(var(--eccgui-tag-text), var(--eccgui-tag-emfactor));
234
- border-color: eccgui-color-rgba(var(--eccgui-tag-border), var(--eccgui-tag-emfactor));
238
+ border-color: eccgui-color-rgba(var(--eccgui-tag-border), calc(0.25 * var(--eccgui-tag-emfactor)));
235
239
  }
236
240
 
237
241
  &.#{$eccgui}-intent--primary {
@@ -267,3 +271,9 @@ $tag-round-adjustment: 0 !default;
267
271
  }
268
272
  }
269
273
  }
274
+
275
+ @media print {
276
+ .#{$eccgui}-tag__item {
277
+ print-color-adjust: exact;
278
+ }
279
+ }
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import {render, RenderResult} from "@testing-library/react";
2
+ import { render, RenderResult } from "@testing-library/react";
3
3
 
4
4
  import "@testing-library/jest-dom";
5
5
 
@@ -9,10 +9,10 @@ import { Default as TextReducerStory } from "./TextReducer.stories";
9
9
  describe("TextReducer", () => {
10
10
  const textMustExist = (queryByText: RenderResult["queryByText"], text: string) => {
11
11
  expect(queryByText(text, { exact: false })).not.toBeNull();
12
- }
12
+ };
13
13
  const textMustNotExist = (queryByText: RenderResult["queryByText"], text: string) => {
14
14
  expect(queryByText(text, { exact: false })).toBeNull();
15
- }
15
+ };
16
16
  it("should display encoded HTML entities by default if they are used in the transformed markup", () => {
17
17
  const { queryByText } = render(<TextReducer {...TextReducerStory.args} />);
18
18
  textMustExist(queryByText, "&#x27;entities&#x27; &amp; &quot;quotes&quot;");
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+
3
+ import { CLASSPREFIX as eccgui } from "../../configuration/constants";
4
+ import { TestableComponent } from "../interfaces";
5
+
6
+ export interface InlineTextProps extends React.HTMLAttributes<HTMLElement>, TestableComponent {
7
+ /**
8
+ * Additional CSS class name.
9
+ */
10
+ className?: string;
11
+ }
12
+
13
+ /**
14
+ * Forces all children to be displayed as inline content.
15
+ */
16
+ export const InlineText = ({ className = "", children, ...otherProps }: InlineTextProps) => {
17
+ return (
18
+ <div {...otherProps} className={`${eccgui}-typography__inlinetext` + (className ? " " + className : "")}>
19
+ {children}
20
+ </div>
21
+ );
22
+ };
23
+
24
+ export default InlineText;
@@ -7,6 +7,7 @@ select,
7
7
  input,
8
8
  textarea {
9
9
  font-family: inherit;
10
+ font-size-adjust: inherit;
10
11
  border-radius: 0;
11
12
  }
12
13
 
@@ -2,3 +2,4 @@ export * from "./Highlighter";
2
2
  export * from "./HtmlContentBlock";
3
3
  export * from "./OverflowText";
4
4
  export * from "./WhiteSpaceContainer";
5
+ export * from "./InlineText";
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ import { Meta, StoryFn } from "@storybook/react";
3
+
4
+ import { InlineText } from "../InlineText";
5
+
6
+ import overflowTextConfig from "./OverflowText.stories";
7
+
8
+ const config = {
9
+ title: "Components/Typography/InlineText",
10
+ component: InlineText,
11
+ argTypes: {
12
+ children: overflowTextConfig.argTypes?.children,
13
+ },
14
+ } as Meta<typeof InlineText>;
15
+ export default config;
16
+
17
+ const Template: StoryFn<typeof InlineText> = (args) => <InlineText {...args} />;
18
+
19
+ export const Default = Template.bind({});
20
+ Default.args = {
21
+ children: (
22
+ <div>
23
+ <div>Block line 1.</div>
24
+ <div>Block line 2.</div>
25
+ </div>
26
+ ),
27
+ };
@@ -17,6 +17,11 @@ body {
17
17
  text-rendering: optimizelegibility;
18
18
  -webkit-font-smoothing: antialiased;
19
19
  -moz-osx-font-smoothing: grayscale;
20
+ // User-facing text may contain Unicode symbols (e.g. "★") that fall outside the primary font stack.
21
+ // Browsers pick different system fallback fonts for such characters, causing glyphs to render at
22
+ // different optical sizes (smaller in Firefox). font-size-adjust normalises the fallback font size
23
+ // by matching the primary font's x-height, reducing the visual size discrepancy across browsers.
24
+ font-size-adjust: from-font;
20
25
  }
21
26
 
22
27
  code {
@@ -68,6 +73,11 @@ mark {
68
73
  line-height: $eccgui-size-typo-caption-lineheight;
69
74
  }
70
75
 
76
+ .#{$eccgui}-typography__contentblock.#{$eccgui}-typography--large {
77
+ font-size: $eccgui-size-typo-subtitle;
78
+ line-height: $eccgui-size-typo-subtitle-lineheight;
79
+ }
80
+
71
81
  h1 {
72
82
  .#{$eccgui}-typography__contentblock &,
73
83
  &.#{$eccgui}-typography__text {
@@ -223,9 +233,9 @@ table {
223
233
  max-width: 100%;
224
234
  overflow: hidden;
225
235
  text-overflow: ellipsis;
236
+ vertical-align: middle;
226
237
  overflow-wrap: normal;
227
238
  white-space: nowrap;
228
- vertical-align: middle;
229
239
  }
230
240
 
231
241
  .#{$eccgui}-typography__overflowtext--inline {
@@ -241,8 +251,8 @@ table {
241
251
  }
242
252
 
243
253
  .#{$eccgui}-typography__overflowtext--ellipsis-reverse {
244
- text-align: left;
245
254
  text-overflow: ellipsis;
255
+ text-align: left;
246
256
  direction: rtl;
247
257
  unicode-bidi: embed;
248
258
 
@@ -263,6 +273,22 @@ table {
263
273
  }
264
274
  }
265
275
 
276
+ // InlineText
277
+
278
+ .#{$eccgui}-typography__inlinetext {
279
+ display: inline;
280
+
281
+ * {
282
+ display: inline;
283
+
284
+ & + * {
285
+ &::before {
286
+ content: " ";
287
+ }
288
+ }
289
+ }
290
+ }
291
+
266
292
  // helpers
267
293
 
268
294
  .#{$eccgui}-typography--nooverflow {
@@ -1,7 +1,5 @@
1
1
  import React from "react";
2
2
  import { createPortal } from "react-dom";
3
- import { Classes as BlueprintClasses } from "@blueprintjs/core";
4
- import { createPopper } from "@popperjs/core";
5
3
 
6
4
  import { CLASSPREFIX as eccgui } from "../../configuration/constants";
7
5
  import {
@@ -14,6 +12,7 @@ import {
14
12
  CardHeader,
15
13
  CardOptions,
16
14
  CardTitle,
15
+ DecoupledOverlay,
17
16
  IconButton,
18
17
  Markdown,
19
18
  ModalSize,
@@ -130,7 +129,7 @@ export const VisualTour = ({
130
129
  <Button
131
130
  key={"next"}
132
131
  variant="outlined"
133
- intent={"primary"}
132
+ elevated
134
133
  onClick={() => {
135
134
  setCurrentStepIndex(currentStepIndex + 1);
136
135
  }}
@@ -144,7 +143,7 @@ export const VisualTour = ({
144
143
  text={closeLabel}
145
144
  onClick={closeTour}
146
145
  variant="outlined"
147
- intent={"primary"}
146
+ elevated
148
147
  rightIcon={"navigation-close"}
149
148
  />
150
149
  ),
@@ -292,25 +291,6 @@ interface StepPopoverProps {
292
291
 
293
292
  /** Popover that is displayed and points at the highlighted element. */
294
293
  const StepPopover = ({ highlightedElement, step, titleOption, actionButtons }: StepPopoverProps) => {
295
- const tooltipRef = React.useCallback(
296
- (tooltip: HTMLDivElement | null) => {
297
- if (tooltip) {
298
- createPopper(highlightedElement, tooltip, {
299
- placement: "auto",
300
- modifiers: [
301
- {
302
- name: "offset",
303
- options: {
304
- offset: [0, 15],
305
- },
306
- },
307
- ],
308
- });
309
- }
310
- },
311
- [highlightedElement]
312
- );
313
-
314
294
  const backdropRef = React.useCallback(
315
295
  (backdrop: HTMLDivElement | null) => {
316
296
  const highlightStencil = () => {
@@ -340,39 +320,39 @@ const StepPopover = ({ highlightedElement, step, titleOption, actionButtons }: S
340
320
  [highlightedElement]
341
321
  );
342
322
 
323
+ // map to only tooltip size because the `DecoupledOverlay` only supports them
324
+ let overlaySize: TooltipSize = "large";
325
+ switch (step.size) {
326
+ case "tiny":
327
+ overlaySize = "small";
328
+ break;
329
+ case "regular":
330
+ overlaySize = "medium";
331
+ break;
332
+ case "xlarge":
333
+ case "fullscreen":
334
+ overlaySize = "large";
335
+ break;
336
+ }
337
+
343
338
  return createPortal(
344
339
  <div className={`${eccgui}-visual-tour`}>
345
340
  <div className={`${eccgui}-visual-tour__focushelper`} ref={backdropRef} />
346
341
  <div>
347
342
  <div className={`${eccgui}-visual-tour__backdrop`} />
348
343
  </div>
349
- <div
350
- className={
351
- `${eccgui}-visual-tour__overlay` +
352
- ` ${eccgui}-visual-tour__overlay--${step.size ?? "large"}` +
353
- ` ${BlueprintClasses.POPOVER}`
354
- }
355
- role="tooltip"
356
- ref={tooltipRef}
357
- >
358
- <div
359
- className={`${eccgui}-visual-tour__arrow ${BlueprintClasses.POPOVER_ARROW}`}
360
- data-popper-arrow
361
- aria-hidden
362
- />
363
- <div className={`${BlueprintClasses.POPOVER_CONTENT} ${eccgui}-visual-tour__overlay__content`}>
364
- <Card isOnlyLayout elevation={-1} whitespaceAmount="small">
365
- <CardHeader>
366
- <CardTitle>{step.title}</CardTitle>
367
- <CardOptions>{titleOption}</CardOptions>
368
- </CardHeader>
369
- <CardContent>
370
- <StepContent step={step} />
371
- </CardContent>
372
- <CardActions inverseDirection>{actionButtons}</CardActions>
373
- </Card>
374
- </div>
375
- </div>
344
+ <DecoupledOverlay targetSelectorOrElement={highlightedElement} size={overlaySize} usePortal={false}>
345
+ <Card isOnlyLayout elevation={-1} whitespaceAmount="small">
346
+ <CardHeader>
347
+ <CardTitle>{step.title}</CardTitle>
348
+ <CardOptions>{titleOption}</CardOptions>
349
+ </CardHeader>
350
+ <CardContent>
351
+ <StepContent step={step} />
352
+ </CardContent>
353
+ <CardActions inverseDirection>{actionButtons}</CardActions>
354
+ </Card>
355
+ </DecoupledOverlay>
376
356
  </div>,
377
357
  document.body
378
358
  );
@@ -31,40 +31,6 @@
31
31
  opacity: 0;
32
32
  }
33
33
 
34
- .#{$eccgui}-visual-tour__arrow {
35
- &::before {
36
- background: $card-background-color;
37
- }
38
-
39
- .#{$eccgui}-visual-tour__overlay[data-popper-placement="top"] & {
40
- bottom: -0.5 * $eccgui-size-block-whitespace;
41
- }
42
- .#{$eccgui}-visual-tour__overlay[data-popper-placement="right"] & {
43
- left: -0.5 * $eccgui-size-block-whitespace;
44
- }
45
- .#{$eccgui}-visual-tour__overlay[data-popper-placement="bottom"] & {
46
- top: -0.5 * $eccgui-size-block-whitespace;
47
- }
48
- .#{$eccgui}-visual-tour__overlay[data-popper-placement="left"] & {
49
- right: -0.5 * $eccgui-size-block-whitespace;
50
- }
51
- }
52
-
53
- .#{$eccgui}-visual-tour__overlay {
54
- z-index: 8002; // 2 over application header
55
- &--small {
56
- @extend .#{$eccgui}-tooltip--small;
57
- }
58
-
59
- &--medium {
60
- @extend .#{$eccgui}-tooltip--medium;
61
- }
62
-
63
- &--large {
64
- @extend .#{$eccgui}-tooltip--large;
65
- }
66
- }
67
-
68
34
  .#{$eccgui}-card__content {
69
35
  .#{$eccgui}-visual-tour__overlay__content & {
70
36
  max-height: 45vh;
@@ -5,6 +5,7 @@
5
5
  @import "./Card/card";
6
6
  @import "./Chat/chat";
7
7
  @import "./Checkbox/checkbox";
8
+ @import "./DecoupledOverlay/decoupledoverlay";
8
9
  @import "./Depiction/depiction";
9
10
  @import "./Dialog/dialog";
10
11
  @import "./FlexibleLayout/flexiblelayout";
@@ -32,6 +33,7 @@
32
33
  @import "./Tabs/tabs";
33
34
  @import "./Tag/tag";
34
35
  @import "./TextField/textfield";
36
+ @import "./ColorField/colorfield";
35
37
  @import "./TagInput/taginput";
36
38
  @import "./Toolbar/toolbar";
37
39
  @import "./Tooltip/tooltip";
@@ -7,8 +7,10 @@ export * from "./Card";
7
7
  export * from "./Chat";
8
8
  export * from "./Checkbox/Checkbox";
9
9
  export * from "./CodeAutocompleteField";
10
+ export * from "./ColorField/ColorField";
10
11
  export * from "./ContentGroup/ContentGroup";
11
12
  export * from "./ContextOverlay";
13
+ export * from "./DecoupledOverlay/DecoupledOverlay";
12
14
  export * from "./Depiction/Depiction";
13
15
  export * from "./Dialog";
14
16
  export * from "./FlexibleLayout";
@@ -0,0 +1,32 @@
1
+ /**
2
+ * We mirror our SCSS variables here to improve availability in inline styles
3
+ * and module styles without included SCSS config stack.
4
+ * Colors are set in `src/components/Application/_colors.scss`.
5
+ */
6
+
7
+ :root {
8
+ --#{$eccgui}-size-typo-caption: #{$eccgui-size-typo-caption};
9
+ --#{$eccgui}-size-typo-caption-lineheight: #{$eccgui-size-typo-caption-lineheight};
10
+ --#{$eccgui}-size-typo-text: #{$eccgui-size-typo-text};
11
+ --#{$eccgui}-size-typo-text-lineheight: #{$eccgui-size-typo-text-lineheight};
12
+ --#{$eccgui}-size-typo-subtitle: #{$eccgui-size-typo-subtitle};
13
+ --#{$eccgui}-size-typo-subtitle-lineheight: #{$eccgui-size-typo-subtitle-lineheight};
14
+ --#{$eccgui}-size-typo-title: #{$eccgui-size-typo-title};
15
+ --#{$eccgui}-size-typo-title-lineheight: #{$eccgui-size-typo-title-lineheight};
16
+ --#{$eccgui}-size-typo-headline: #{$eccgui-size-typo-headline};
17
+ --#{$eccgui}-size-typo-headline-lineheight: #{$eccgui-size-typo-headline-lineheight};
18
+ --#{$eccgui}-font-weight-light: #{$eccgui-font-weight-light};
19
+ --#{$eccgui}-font-weight-regular: #{$eccgui-font-weight-regular};
20
+ --#{$eccgui}-font-weight-bold: #{$eccgui-font-weight-bold};
21
+ --#{$eccgui}-font-spacing-condensed: #{$eccgui-font-spacing-condensed};
22
+ --#{$eccgui}-font-spacing-regular: #{$eccgui-font-spacing-regular};
23
+ --#{$eccgui}-font-spacing-wide: #{$eccgui-font-spacing-wide};
24
+ --#{$eccgui}-size-block-whitespace: #{$eccgui-size-block-whitespace};
25
+ --#{$eccgui}-size-inline-whitespace: #{$eccgui-size-inline-whitespace};
26
+ --#{$eccgui}-opacity-regular: #{$eccgui-opacity-regular};
27
+ --#{$eccgui}-opacity-narrow: #{$eccgui-opacity-narrow};
28
+ --#{$eccgui}-opacity-muted: #{$eccgui-opacity-muted};
29
+ --#{$eccgui}-opacity-disabled: #{$eccgui-opacity-disabled};
30
+ --#{$eccgui}-opacity-ghostly: #{$eccgui-opacity-ghostly};
31
+ --#{$eccgui}-opacity-invisible: #{$eccgui-opacity-invisible};
32
+ }