react-science 0.34.0 → 0.36.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 (193) hide show
  1. package/lib/app/about/AboutDialogToolbarButton.d.ts +3 -3
  2. package/lib/app/about/AboutDialogToolbarButton.d.ts.map +1 -1
  3. package/lib/app/about/AboutDialogToolbarButton.js.map +1 -1
  4. package/lib/app/helpers/react-plot.d.ts.map +1 -1
  5. package/lib/app/helpers/react-plot.js +1 -1
  6. package/lib/app/helpers/react-plot.js.map +1 -1
  7. package/lib/app/kinds/iv/plot-view/IvPlotVariablesSelector.d.ts.map +1 -1
  8. package/lib/app/kinds/iv/plot-view/IvPlotVariablesSelector.js +6 -1
  9. package/lib/app/kinds/iv/plot-view/IvPlotVariablesSelector.js.map +1 -1
  10. package/lib/app/kinds/mass/MeasurementMassPlot.js +1 -1
  11. package/lib/app/kinds/mass/MeasurementMassPlot.js.map +1 -1
  12. package/lib/app/panels/measurements/MeasurementColorPreview.d.ts +1 -1
  13. package/lib/app/panels/measurements/MeasurementColorPreview.d.ts.map +1 -1
  14. package/lib/app/panels/measurements/MeasurementColorPreview.js +19 -16
  15. package/lib/app/panels/measurements/MeasurementColorPreview.js.map +1 -1
  16. package/lib/app/panels/measurements/MeasurementVisibilityToggle.d.ts +3 -3
  17. package/lib/app/panels/measurements/MeasurementVisibilityToggle.d.ts.map +1 -1
  18. package/lib/app/panels/measurements/MeasurementVisibilityToggle.js +6 -6
  19. package/lib/app/panels/measurements/MeasurementVisibilityToggle.js.map +1 -1
  20. package/lib/app/panels/measurements/MeasurementsPanel.d.ts +3 -1
  21. package/lib/app/panels/measurements/MeasurementsPanel.d.ts.map +1 -1
  22. package/lib/app/panels/measurements/MeasurementsPanel.js +17 -13
  23. package/lib/app/panels/measurements/MeasurementsPanel.js.map +1 -1
  24. package/lib/app/panels/measurements/MeasurementsPanelAccordion.d.ts +1 -1
  25. package/lib/app/panels/measurements/MeasurementsPanelAccordion.d.ts.map +1 -1
  26. package/lib/app/panels/measurements/MeasurementsPanelAccordion.js +10 -3
  27. package/lib/app/panels/measurements/MeasurementsPanelAccordion.js.map +1 -1
  28. package/lib/app/panels/measurements/MeasurementsTable.d.ts.map +1 -1
  29. package/lib/app/panels/measurements/MeasurementsTable.js +61 -58
  30. package/lib/app/panels/measurements/MeasurementsTable.js.map +1 -1
  31. package/lib/app/panels/measurements/index.d.ts +5 -0
  32. package/lib/app/panels/measurements/index.d.ts.map +1 -1
  33. package/lib/app/panels/measurements/index.js +5 -0
  34. package/lib/app/panels/measurements/index.js.map +1 -1
  35. package/lib/app/panels/measurements/measurementPanelContext.d.ts +11 -0
  36. package/lib/app/panels/measurements/measurementPanelContext.d.ts.map +1 -0
  37. package/lib/app/panels/measurements/measurementPanelContext.js +19 -0
  38. package/lib/app/panels/measurements/measurementPanelContext.js.map +1 -0
  39. package/lib/components/accordion/Accordion.d.ts.map +1 -1
  40. package/lib/components/accordion/Accordion.js +0 -1
  41. package/lib/components/accordion/Accordion.js.map +1 -1
  42. package/lib/components/button/Button.d.ts +6 -2
  43. package/lib/components/button/Button.d.ts.map +1 -1
  44. package/lib/components/button/Button.js +17 -3
  45. package/lib/components/button/Button.js.map +1 -1
  46. package/lib/components/button/index.d.ts +0 -1
  47. package/lib/components/button/index.d.ts.map +1 -1
  48. package/lib/components/button/index.js +0 -1
  49. package/lib/components/button/index.js.map +1 -1
  50. package/lib/components/color-picker/react-color/sketch/SketchFields.d.ts.map +1 -1
  51. package/lib/components/color-picker/react-color/sketch/SketchFields.js +0 -2
  52. package/lib/components/color-picker/react-color/sketch/SketchFields.js.map +1 -1
  53. package/lib/components/forms/radio-group/RadioGroup.d.ts +0 -1
  54. package/lib/components/forms/radio-group/RadioGroup.d.ts.map +1 -1
  55. package/lib/components/forms/radio-group/RadioGroup.js +4 -9
  56. package/lib/components/forms/radio-group/RadioGroup.js.map +1 -1
  57. package/lib/components/hooks/index.d.ts +1 -0
  58. package/lib/components/hooks/index.d.ts.map +1 -1
  59. package/lib/components/hooks/index.js +1 -0
  60. package/lib/components/hooks/index.js.map +1 -1
  61. package/lib/components/hooks/useSelect.d.ts +21 -0
  62. package/lib/components/hooks/useSelect.d.ts.map +1 -0
  63. package/lib/components/hooks/useSelect.js +45 -0
  64. package/lib/components/hooks/useSelect.js.map +1 -0
  65. package/lib/components/root-layout/RootLayout.js +1 -1
  66. package/lib/components/toolbar/PanelPreferencesToolbar.d.ts +2 -0
  67. package/lib/components/toolbar/PanelPreferencesToolbar.d.ts.map +1 -1
  68. package/lib/components/toolbar/PanelPreferencesToolbar.js +14 -4
  69. package/lib/components/toolbar/PanelPreferencesToolbar.js.map +1 -1
  70. package/lib/components/toolbar/Toolbar.d.ts +13 -4
  71. package/lib/components/toolbar/Toolbar.d.ts.map +1 -1
  72. package/lib/components/toolbar/Toolbar.js +46 -8
  73. package/lib/components/toolbar/Toolbar.js.map +1 -1
  74. package/lib/components/toolbar/toolbarContext.d.ts +2 -0
  75. package/lib/components/toolbar/toolbarContext.d.ts.map +1 -1
  76. package/lib/components/toolbar/toolbarContext.js.map +1 -1
  77. package/lib-esm/app/about/AboutDialogToolbarButton.d.ts +3 -3
  78. package/lib-esm/app/about/AboutDialogToolbarButton.d.ts.map +1 -1
  79. package/lib-esm/app/about/AboutDialogToolbarButton.js.map +1 -1
  80. package/lib-esm/app/helpers/react-plot.d.ts.map +1 -1
  81. package/lib-esm/app/helpers/react-plot.js +1 -1
  82. package/lib-esm/app/helpers/react-plot.js.map +1 -1
  83. package/lib-esm/app/kinds/iv/plot-view/IvPlotVariablesSelector.d.ts.map +1 -1
  84. package/lib-esm/app/kinds/iv/plot-view/IvPlotVariablesSelector.js +6 -1
  85. package/lib-esm/app/kinds/iv/plot-view/IvPlotVariablesSelector.js.map +1 -1
  86. package/lib-esm/app/kinds/mass/MeasurementMassPlot.js +1 -1
  87. package/lib-esm/app/kinds/mass/MeasurementMassPlot.js.map +1 -1
  88. package/lib-esm/app/panels/measurements/MeasurementColorPreview.d.ts +1 -1
  89. package/lib-esm/app/panels/measurements/MeasurementColorPreview.d.ts.map +1 -1
  90. package/lib-esm/app/panels/measurements/MeasurementColorPreview.js +18 -16
  91. package/lib-esm/app/panels/measurements/MeasurementColorPreview.js.map +1 -1
  92. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.d.ts +3 -3
  93. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.d.ts.map +1 -1
  94. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.js +5 -5
  95. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.js.map +1 -1
  96. package/lib-esm/app/panels/measurements/MeasurementsPanel.d.ts +3 -1
  97. package/lib-esm/app/panels/measurements/MeasurementsPanel.d.ts.map +1 -1
  98. package/lib-esm/app/panels/measurements/MeasurementsPanel.js +16 -12
  99. package/lib-esm/app/panels/measurements/MeasurementsPanel.js.map +1 -1
  100. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.d.ts +1 -1
  101. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.d.ts.map +1 -1
  102. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.js +10 -3
  103. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.js.map +1 -1
  104. package/lib-esm/app/panels/measurements/MeasurementsTable.d.ts.map +1 -1
  105. package/lib-esm/app/panels/measurements/MeasurementsTable.js +63 -37
  106. package/lib-esm/app/panels/measurements/MeasurementsTable.js.map +1 -1
  107. package/lib-esm/app/panels/measurements/index.d.ts +5 -0
  108. package/lib-esm/app/panels/measurements/index.d.ts.map +1 -1
  109. package/lib-esm/app/panels/measurements/index.js +5 -0
  110. package/lib-esm/app/panels/measurements/index.js.map +1 -1
  111. package/lib-esm/app/panels/measurements/measurementPanelContext.d.ts +11 -0
  112. package/lib-esm/app/panels/measurements/measurementPanelContext.d.ts.map +1 -0
  113. package/lib-esm/app/panels/measurements/measurementPanelContext.js +14 -0
  114. package/lib-esm/app/panels/measurements/measurementPanelContext.js.map +1 -0
  115. package/lib-esm/components/accordion/Accordion.d.ts.map +1 -1
  116. package/lib-esm/components/accordion/Accordion.js +0 -1
  117. package/lib-esm/components/accordion/Accordion.js.map +1 -1
  118. package/lib-esm/components/button/Button.d.ts +6 -2
  119. package/lib-esm/components/button/Button.d.ts.map +1 -1
  120. package/lib-esm/components/button/Button.js +18 -4
  121. package/lib-esm/components/button/Button.js.map +1 -1
  122. package/lib-esm/components/button/index.d.ts +0 -1
  123. package/lib-esm/components/button/index.d.ts.map +1 -1
  124. package/lib-esm/components/button/index.js +0 -1
  125. package/lib-esm/components/button/index.js.map +1 -1
  126. package/lib-esm/components/color-picker/react-color/sketch/SketchFields.d.ts.map +1 -1
  127. package/lib-esm/components/color-picker/react-color/sketch/SketchFields.js +0 -2
  128. package/lib-esm/components/color-picker/react-color/sketch/SketchFields.js.map +1 -1
  129. package/lib-esm/components/forms/radio-group/RadioGroup.d.ts +0 -1
  130. package/lib-esm/components/forms/radio-group/RadioGroup.d.ts.map +1 -1
  131. package/lib-esm/components/forms/radio-group/RadioGroup.js +4 -9
  132. package/lib-esm/components/forms/radio-group/RadioGroup.js.map +1 -1
  133. package/lib-esm/components/hooks/index.d.ts +1 -0
  134. package/lib-esm/components/hooks/index.d.ts.map +1 -1
  135. package/lib-esm/components/hooks/index.js +1 -0
  136. package/lib-esm/components/hooks/index.js.map +1 -1
  137. package/lib-esm/components/hooks/useSelect.d.ts +21 -0
  138. package/lib-esm/components/hooks/useSelect.d.ts.map +1 -0
  139. package/lib-esm/components/hooks/useSelect.js +41 -0
  140. package/lib-esm/components/hooks/useSelect.js.map +1 -0
  141. package/lib-esm/components/root-layout/RootLayout.js +1 -1
  142. package/lib-esm/components/toolbar/PanelPreferencesToolbar.d.ts +2 -0
  143. package/lib-esm/components/toolbar/PanelPreferencesToolbar.d.ts.map +1 -1
  144. package/lib-esm/components/toolbar/PanelPreferencesToolbar.js +14 -4
  145. package/lib-esm/components/toolbar/PanelPreferencesToolbar.js.map +1 -1
  146. package/lib-esm/components/toolbar/Toolbar.d.ts +13 -4
  147. package/lib-esm/components/toolbar/Toolbar.d.ts.map +1 -1
  148. package/lib-esm/components/toolbar/Toolbar.js +49 -11
  149. package/lib-esm/components/toolbar/Toolbar.js.map +1 -1
  150. package/lib-esm/components/toolbar/toolbarContext.d.ts +2 -0
  151. package/lib-esm/components/toolbar/toolbarContext.d.ts.map +1 -1
  152. package/lib-esm/components/toolbar/toolbarContext.js.map +1 -1
  153. package/package.json +27 -27
  154. package/src/app/about/AboutDialogToolbarButton.tsx +4 -3
  155. package/src/app/helpers/react-plot.tsx +1 -0
  156. package/src/app/kinds/iv/plot-view/IvPlotVariablesSelector.tsx +7 -1
  157. package/src/app/kinds/mass/MeasurementMassPlot.tsx +2 -2
  158. package/src/app/panels/measurements/MeasurementColorPreview.tsx +30 -31
  159. package/src/app/panels/measurements/MeasurementVisibilityToggle.tsx +17 -14
  160. package/src/app/panels/measurements/MeasurementsPanel.tsx +37 -28
  161. package/src/app/panels/measurements/MeasurementsPanelAccordion.tsx +15 -2
  162. package/src/app/panels/measurements/MeasurementsTable.tsx +153 -57
  163. package/src/app/panels/measurements/index.ts +5 -0
  164. package/src/app/panels/measurements/measurementPanelContext.tsx +32 -0
  165. package/src/components/accordion/Accordion.tsx +0 -1
  166. package/src/components/button/Button.tsx +35 -4
  167. package/src/components/button/index.ts +0 -1
  168. package/src/components/color-picker/react-color/sketch/SketchFields.tsx +0 -2
  169. package/src/components/forms/radio-group/RadioGroup.tsx +3 -14
  170. package/src/components/hooks/index.ts +1 -0
  171. package/src/components/hooks/useSelect.tsx +58 -0
  172. package/src/components/root-layout/RootLayout.tsx +1 -1
  173. package/src/components/toolbar/PanelPreferencesToolbar.tsx +38 -20
  174. package/src/components/toolbar/Toolbar.tsx +112 -10
  175. package/src/components/toolbar/toolbarContext.ts +3 -0
  176. package/lib/components/button/ButtonGroup.d.ts +0 -15
  177. package/lib/components/button/ButtonGroup.d.ts.map +0 -1
  178. package/lib/components/button/ButtonGroup.js +0 -42
  179. package/lib/components/button/ButtonGroup.js.map +0 -1
  180. package/lib/components/forms/radio-group/ClassicRadioItem.d.ts +0 -3
  181. package/lib/components/forms/radio-group/ClassicRadioItem.d.ts.map +0 -1
  182. package/lib/components/forms/radio-group/ClassicRadioItem.js +0 -93
  183. package/lib/components/forms/radio-group/ClassicRadioItem.js.map +0 -1
  184. package/lib-esm/components/button/ButtonGroup.d.ts +0 -15
  185. package/lib-esm/components/button/ButtonGroup.d.ts.map +0 -1
  186. package/lib-esm/components/button/ButtonGroup.js +0 -35
  187. package/lib-esm/components/button/ButtonGroup.js.map +0 -1
  188. package/lib-esm/components/forms/radio-group/ClassicRadioItem.d.ts +0 -3
  189. package/lib-esm/components/forms/radio-group/ClassicRadioItem.d.ts.map +0 -1
  190. package/lib-esm/components/forms/radio-group/ClassicRadioItem.js +0 -66
  191. package/lib-esm/components/forms/radio-group/ClassicRadioItem.js.map +0 -1
  192. package/src/components/button/ButtonGroup.tsx +0 -57
  193. package/src/components/forms/radio-group/ClassicRadioItem.tsx +0 -95
@@ -6,7 +6,6 @@ import { ReactNode } from 'react';
6
6
  import { InputVariant } from '../styles';
7
7
 
8
8
  import { ButtonRadioItem } from './ButtonRadioItem';
9
- import { ClassicRadioItem } from './ClassicRadioItem';
10
9
 
11
10
  export interface RadioOption {
12
11
  value: string;
@@ -15,7 +14,6 @@ export interface RadioOption {
15
14
  }
16
15
  export interface RadioGroupProps {
17
16
  selected?: RadioOption;
18
- type?: 'classic' | 'button';
19
17
  options?: RadioOption[];
20
18
  onSelect?: (option: RadioOption) => void;
21
19
  name?: string;
@@ -44,7 +42,6 @@ export function RadioGroup(props: RadioGroupProps) {
44
42
  const {
45
43
  id,
46
44
  selected,
47
- type = 'classic',
48
45
  disabled: groupDisabled = false,
49
46
  options = [],
50
47
  onSelect,
@@ -54,12 +51,9 @@ export function RadioGroup(props: RadioGroupProps) {
54
51
  return (
55
52
  <RadioGroupRadix.Root
56
53
  id={id}
57
- css={[
58
- rootStyles.basic,
59
- type === 'classic' ? null : rootStyles.button(variant),
60
- ]}
54
+ css={[rootStyles.basic, rootStyles.button(variant)]}
61
55
  style={{
62
- gap: type === 'classic' ? (variant === 'default' ? 10 : 5) : 0,
56
+ gap: 0,
63
57
  }}
64
58
  value={selected?.value}
65
59
  name={name}
@@ -67,7 +61,6 @@ export function RadioGroup(props: RadioGroupProps) {
67
61
  >
68
62
  {options?.map(({ value, label, disabled }) => {
69
63
  const childProps = {
70
- key: value,
71
64
  value,
72
65
  label,
73
66
  disabled: groupDisabled || disabled,
@@ -75,11 +68,7 @@ export function RadioGroup(props: RadioGroupProps) {
75
68
  variant,
76
69
  name,
77
70
  };
78
- return type === 'classic' ? (
79
- <ClassicRadioItem {...childProps} />
80
- ) : (
81
- <ButtonRadioItem {...childProps} />
82
- );
71
+ return <ButtonRadioItem key={value} {...childProps} />;
83
72
  })}
84
73
  </RadioGroupRadix.Root>
85
74
  );
@@ -4,3 +4,4 @@ export * from './useModifiedPopper';
4
4
  export * from './useOnClickOutside';
5
5
  export * from './useOnOff';
6
6
  export * from './useToggle';
7
+ export * from './useSelect';
@@ -0,0 +1,58 @@
1
+ import { MenuItem } from '@blueprintjs/core';
2
+ import { ItemRenderer } from '@blueprintjs/select';
3
+ import { useState } from 'react';
4
+
5
+ export function useSelect<T extends { label: string }>() {
6
+ const [value, setValue] = useState<T | null>(null);
7
+ const itemRenderer = getItemRenderer(value);
8
+ const onItemSelect = setValue;
9
+ const popoverProps = {
10
+ onOpened: (node: HTMLElement) => {
11
+ const firstUl = node.querySelector('ul');
12
+ if (firstUl) {
13
+ firstUl.tabIndex = 0;
14
+ firstUl.focus();
15
+ }
16
+ },
17
+ };
18
+ const popoverTargetProps = {
19
+ style: { display: 'inline-block' },
20
+ };
21
+ const itemPredicate = (query: string, item: T) => {
22
+ return item.label.toLowerCase().includes(query.toLowerCase());
23
+ };
24
+ const itemListPredicate = (query: string, items: T[]) => {
25
+ return items.filter((item) =>
26
+ item.label.toLowerCase().includes(query.toLowerCase()),
27
+ );
28
+ };
29
+ return {
30
+ value,
31
+ setValue,
32
+ itemRenderer,
33
+ onItemSelect,
34
+ popoverProps,
35
+ popoverTargetProps,
36
+ itemPredicate,
37
+ itemListPredicate,
38
+ };
39
+ }
40
+
41
+ function getItemRenderer<T extends { label: string }>(value: T | null) {
42
+ const render: ItemRenderer<T> = (
43
+ { label },
44
+ { handleClick, handleFocus, modifiers, index },
45
+ ) => (
46
+ <MenuItem
47
+ active={modifiers.active}
48
+ disabled={modifiers.disabled}
49
+ selected={value?.label === label}
50
+ key={index}
51
+ onClick={handleClick}
52
+ onFocus={handleFocus}
53
+ roleStructure="listoption"
54
+ text={label}
55
+ />
56
+ );
57
+ return render;
58
+ }
@@ -18,7 +18,7 @@ interface RootLayoutProps {
18
18
  const style: CSSProperties = {
19
19
  width: '100%',
20
20
  height: '100%',
21
- fontSize: '12px',
21
+ fontSize: '14px',
22
22
  };
23
23
 
24
24
  export function RootLayout(props: RootLayoutProps) {
@@ -4,16 +4,27 @@ import { css } from '@emotion/react';
4
4
  import { Toolbar } from './Toolbar';
5
5
 
6
6
  interface PanelPreferencesToolbarProps {
7
+ title?: React.ReactNode;
7
8
  onClose?: () => void;
8
9
  onSave?: () => void;
9
10
  }
10
11
 
11
12
  const styles = {
13
+ container: css({
14
+ display: 'flex',
15
+ justifyContent: 'space-between',
16
+ borderBottom: '1px solid rgb(240, 240, 240)',
17
+ }),
18
+ title: css({
19
+ display: 'flex',
20
+ alignItems: 'center',
21
+ justifyContent: 'center',
22
+ paddingLeft: 12,
23
+ fontWeight: 500,
24
+ }),
12
25
  toolbar: css({
13
26
  display: 'flex',
14
27
  flexDirection: 'row-reverse',
15
- fontSize: 16,
16
- padding: 3,
17
28
  '& > button': {
18
29
  padding: 0,
19
30
  paddingLeft: 9,
@@ -23,25 +34,32 @@ const styles = {
23
34
  };
24
35
 
25
36
  export function PanelPreferencesToolbar(props: PanelPreferencesToolbarProps) {
26
- const { onClose, onSave } = props;
37
+ const { title = '', onClose, onSave } = props;
27
38
  return (
28
- <div css={styles.toolbar}>
29
- <Toolbar>
30
- <Toolbar.Item
31
- title="close"
32
- onClick={onClose}
33
- intent="danger"
34
- icon="cross"
35
- noTooltip
36
- />
37
- <Toolbar.Item
38
- title="save"
39
- onClick={onSave}
40
- intent="success"
41
- icon="tick"
42
- noTooltip
43
- />
44
- </Toolbar>
39
+ <div css={styles.container}>
40
+ <div css={styles.title}>{title}</div>
41
+ <div css={styles.toolbar}>
42
+ <Toolbar>
43
+ {onClose && (
44
+ <Toolbar.Item
45
+ title="close"
46
+ onClick={onClose}
47
+ intent="danger"
48
+ icon="cross"
49
+ noTooltip
50
+ />
51
+ )}
52
+ {onSave && (
53
+ <Toolbar.Item
54
+ title="save"
55
+ onClick={onSave}
56
+ intent="success"
57
+ icon="tick"
58
+ noTooltip
59
+ />
60
+ )}
61
+ </Toolbar>
62
+ </div>
45
63
  </div>
46
64
  );
47
65
  }
@@ -1,7 +1,19 @@
1
1
  /** @jsxImportSource @emotion/react */
2
- import { ButtonGroup, Classes, Colors, Intent } from '@blueprintjs/core';
2
+ import {
3
+ ButtonGroup,
4
+ Classes,
5
+ Colors,
6
+ Intent,
7
+ Popover,
8
+ PopoverProps,
9
+ TagProps,
10
+ Icon,
11
+ } from '@blueprintjs/core';
12
+ import { IconName } from '@blueprintjs/icons';
3
13
  import { css } from '@emotion/react';
4
14
  import {
15
+ cloneElement,
16
+ JSX,
5
17
  ReactElement,
6
18
  ReactNode,
7
19
  useLayoutEffect,
@@ -9,7 +21,7 @@ import {
9
21
  useRef,
10
22
  } from 'react';
11
23
 
12
- import { Button, ButtonProps } from '../index';
24
+ import { Button } from '../index';
13
25
 
14
26
  import {
15
27
  ToolbarContext,
@@ -17,6 +29,12 @@ import {
17
29
  useToolbarContext,
18
30
  } from './toolbarContext';
19
31
 
32
+ export type PopoverInteractionType =
33
+ | 'click'
34
+ | 'hover'
35
+ | 'click-target'
36
+ | 'hover-target';
37
+
20
38
  interface ToolbarBaseProps {
21
39
  intent?: Intent;
22
40
  disabled?: boolean;
@@ -30,26 +48,41 @@ export interface ToolbarProps extends ToolbarBaseProps {
30
48
  | Iterable<ReactNode>
31
49
  | boolean
32
50
  | null;
51
+ popoverInteractionKind?: PopoverInteractionType;
33
52
  }
34
53
 
35
54
  export interface ToolbarItemProps extends ToolbarBaseProps {
36
55
  id?: string;
37
56
  title: string;
38
- icon: ButtonProps['icon'];
57
+ icon: IconName | JSX.Element;
39
58
  active?: boolean;
40
59
  onClick?: (item: ToolbarItemProps) => void;
41
60
  className?: string;
42
61
  noTooltip?: boolean;
62
+ isPopover?: boolean;
63
+ tag?: ReactNode;
64
+ tagProps?: Omit<TagProps, 'children'>;
65
+ }
66
+
67
+ export interface ToolbarPopoverItemProps extends PopoverProps {
68
+ itemProps: ToolbarItemProps;
43
69
  }
44
70
 
45
71
  const border = '1px solid rgb(247, 247, 247)';
46
72
 
47
73
  export function Toolbar(props: ToolbarProps) {
48
- const { children, disabled, intent, large, vertical } = props;
74
+ const {
75
+ children,
76
+ disabled,
77
+ intent,
78
+ large,
79
+ vertical,
80
+ popoverInteractionKind,
81
+ } = props;
49
82
 
50
83
  const contextValue = useMemo(
51
- () => ({ intent, large, vertical, disabled }),
52
- [intent, large, vertical, disabled],
84
+ () => ({ intent, large, vertical, disabled, popoverInteractionKind }),
85
+ [intent, large, vertical, disabled, popoverInteractionKind],
53
86
  );
54
87
  const ref = useRef<HTMLDivElement>(null);
55
88
 
@@ -61,7 +94,6 @@ export function Toolbar(props: ToolbarProps) {
61
94
  if (!vertical) {
62
95
  return;
63
96
  }
64
-
65
97
  function update() {
66
98
  const lastElement = ref.current?.lastElementChild;
67
99
  if (!lastElement) {
@@ -87,7 +119,9 @@ export function Toolbar(props: ToolbarProps) {
87
119
  return (
88
120
  <ToolbarProvider value={contextValue}>
89
121
  <ButtonGroup
90
- ref={ref}
122
+ // Reset because of layout effect above
123
+ // TODO: remove once the workaround is no longer needed
124
+ key={String(vertical)}
91
125
  vertical={vertical}
92
126
  large={large}
93
127
  style={{
@@ -111,6 +145,7 @@ Toolbar.Item = function ToolbarItem(props: ToolbarItemProps) {
111
145
  intent: itemIntent,
112
146
  disabled: itemDisabled,
113
147
  noTooltip = false,
148
+ isPopover,
114
149
  ...other
115
150
  } = props;
116
151
 
@@ -122,8 +157,17 @@ Toolbar.Item = function ToolbarItem(props: ToolbarItemProps) {
122
157
  } = useToolbarContext();
123
158
  const intent = itemIntent ?? toolbarIntent;
124
159
  const disabled = itemDisabled ?? toolbarDisabled;
160
+ const resizedIcon =
161
+ typeof icon === 'string'
162
+ ? icon
163
+ : cloneElement(icon, {
164
+ className: icon.props.className
165
+ ? `${icon.props.className} bp5-icon`
166
+ : 'bp5-icon',
167
+ });
125
168
  return (
126
169
  <Button
170
+ alignText={isPopover ? 'left' : undefined}
127
171
  minimal
128
172
  disabled={disabled}
129
173
  css={css`
@@ -134,13 +178,37 @@ Toolbar.Item = function ToolbarItem(props: ToolbarItemProps) {
134
178
  intent={intent}
135
179
  style={{
136
180
  position: 'relative',
137
- fontSize: '1.25em',
181
+ fontSize: '1.125em',
138
182
  width: 'fit-content',
139
183
  flex: 'none',
140
184
  }}
141
185
  type="button"
142
186
  active={active}
143
- icon={icon}
187
+ icon={
188
+ <div
189
+ style={{
190
+ display: 'flex',
191
+ justifyContent: 'center',
192
+ alignItems: 'center',
193
+ width: 0,
194
+ height: 0,
195
+ }}
196
+ >
197
+ <Icon icon={resizedIcon} />
198
+ {isPopover && (
199
+ <Icon
200
+ icon="caret-right"
201
+ size={large ? 14 : 9}
202
+ style={{
203
+ transform: 'rotate(45deg)',
204
+ position: 'absolute',
205
+ bottom: 0,
206
+ right: 0,
207
+ }}
208
+ />
209
+ )}
210
+ </div>
211
+ }
144
212
  onClick={() => {
145
213
  onClick?.(props);
146
214
  }}
@@ -159,6 +227,40 @@ Toolbar.Item = function ToolbarItem(props: ToolbarItemProps) {
159
227
  );
160
228
  };
161
229
 
230
+ Toolbar.PopoverItem = function ToolbarPopoverItem(
231
+ props: ToolbarPopoverItemProps,
232
+ ) {
233
+ const { itemProps, ...other } = props;
234
+ const { disabled, vertical, popoverInteractionKind } = useToolbarContext();
235
+
236
+ return (
237
+ <Popover
238
+ minimal
239
+ disabled={disabled}
240
+ placement={vertical ? 'right-start' : 'bottom-start'}
241
+ interactionKind={popoverInteractionKind}
242
+ hoverCloseDelay={0}
243
+ css={css`
244
+ .${Classes.ICON} {
245
+ color: ${Colors.DARK_GRAY3};
246
+ }
247
+ `}
248
+ targetProps={{
249
+ style: {
250
+ position: 'relative',
251
+ fontSize: '1.125em',
252
+ width: 'fit-content',
253
+ height: 'fit-content',
254
+ flex: 'none',
255
+ },
256
+ }}
257
+ {...other}
258
+ >
259
+ <Toolbar.Item noTooltip isPopover {...itemProps} />
260
+ </Popover>
261
+ );
262
+ };
263
+
162
264
  function ToolbarProvider(props: {
163
265
  value: ToolbarContext;
164
266
  children: ReactNode;
@@ -1,11 +1,14 @@
1
1
  import { Intent } from '@blueprintjs/core';
2
2
  import { createContext, useContext } from 'react';
3
3
 
4
+ import { PopoverInteractionType } from './Toolbar';
5
+
4
6
  export interface ToolbarContext {
5
7
  intent?: Intent;
6
8
  large?: boolean;
7
9
  vertical?: boolean;
8
10
  disabled?: boolean;
11
+ popoverInteractionKind?: PopoverInteractionType;
9
12
  }
10
13
 
11
14
  export const toolbarContext = createContext<ToolbarContext | null>(null);
@@ -1,15 +0,0 @@
1
- import { ReactNode } from 'react';
2
- interface ButtonGroupProps {
3
- children: [ReactNode, ReactNode];
4
- }
5
- export declare function ButtonGroup(props: ButtonGroupProps): import("react/jsx-runtime").JSX.Element;
6
- export declare namespace ButtonGroup {
7
- var Button: (props: ButtonGroupButtonProps) => import("react/jsx-runtime").JSX.Element;
8
- }
9
- interface ButtonGroupButtonProps {
10
- position: 'first' | 'last';
11
- label: string;
12
- onClick: () => void;
13
- }
14
- export {};
15
- //# sourceMappingURL=ButtonGroup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../../src/components/button/ButtonGroup.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AA4BlC,UAAU,gBAAgB;IACxB,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CAClC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CAGlD;yBAHe,WAAW;;;AAK3B,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ButtonGroup = void 0;
7
- const jsx_runtime_1 = require("react/jsx-runtime");
8
- const styled_1 = __importDefault(require("@emotion/styled"));
9
- const ButtonGroupRoot = styled_1.default.div `
10
- display: inline-flex;
11
- border-radius: 0.375rem;
12
- isolation: isolate;
13
- `;
14
- const ButtonGroupCustomButton = styled_1.default.button `
15
- position: relative;
16
- display: inline-flex;
17
- align-items: center;
18
- font-weight: 500;
19
- font-size: 0.875rem;
20
- line-height: 1.25rem;
21
- padding-left: 1rem;
22
- padding-right: 1rem;
23
- padding-top: 5px;
24
- padding-bottom: 5px;
25
- border-width: 1px;
26
- border-top-left-radius: ${({ isLast }) => !isLast && '0.375rem'};
27
- border-bottom-left-radius: ${({ isLast }) => !isLast && '0.375rem'};
28
-
29
- border-top-right-radius: ${({ isLast }) => isLast && '0.375rem'};
30
- border-bottom-right-radius: ${({ isLast }) => isLast && '0.375rem'};
31
- margin-left: ${({ isLast }) => isLast && '-1px'};
32
- `;
33
- function ButtonGroup(props) {
34
- const { children } = props;
35
- return (0, jsx_runtime_1.jsx)(ButtonGroupRoot, { children: children });
36
- }
37
- exports.ButtonGroup = ButtonGroup;
38
- ButtonGroup.Button = function ButtonGroupButton(props) {
39
- const { position, label, onClick } = props;
40
- return ((0, jsx_runtime_1.jsx)(ButtonGroupCustomButton, { type: "button", onClick: onClick, isLast: position === 'last', children: label }));
41
- };
42
- //# sourceMappingURL=ButtonGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonGroup.js","sourceRoot":"","sources":["../../../src/components/button/ButtonGroup.tsx"],"names":[],"mappings":";;;;;;;AAAA,6DAAqC;AAGrC,MAAM,eAAe,GAAG,gBAAM,CAAC,GAAG,CAAA;;;;CAIjC,CAAC;AAEF,MAAM,uBAAuB,GAAG,gBAAM,CAAC,MAAM,CAAqB;;;;;;;;;;;;4BAYtC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,UAAU;+BAClC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,UAAU;;6BAEvC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,UAAU;gCACjC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,UAAU;iBACnD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,MAAM;CAChD,CAAC;AAMF,SAAgB,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,OAAO,uBAAC,eAAe,cAAE,QAAQ,GAAmB,CAAC;AACvD,CAAC;AAHD,kCAGC;AAQD,WAAW,CAAC,MAAM,GAAG,SAAS,iBAAiB,CAAC,KAA6B;IAC3E,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE3C,OAAO,CACL,uBAAC,uBAAuB,IACtB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,QAAQ,KAAK,MAAM,YAE1B,KAAK,GACkB,CAC3B,CAAC;AACJ,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { RadioOption, RadioGroupProps } from './RadioGroup';
2
- export declare function ClassicRadioItem(props: RadioOption & Pick<RadioGroupProps, 'onSelect' | 'variant' | 'name'>): import("@emotion/react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=ClassicRadioItem.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClassicRadioItem.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/radio-group/ClassicRadioItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA2D5D,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,oDA4B5E"}
@@ -1,93 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.ClassicRadioItem = void 0;
27
- const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
28
- /** @jsxImportSource @emotion/react */
29
- const react_1 = require("@emotion/react");
30
- const RadioGroup = __importStar(require("@radix-ui/react-radio-group"));
31
- const styles_1 = require("../styles");
32
- const classicStyles = {
33
- container: (disabled) => (0, react_1.css)({
34
- display: 'flex',
35
- alignItems: 'center',
36
- flexDirection: 'row-reverse',
37
- opacity: disabled ? 0.25 : 1,
38
- overflow: 'hidden',
39
- border: 'none',
40
- }),
41
- item: (disabled, variant) => (0, react_1.css)({
42
- position: 'relative',
43
- width: variant === 'default' ? 16 : 14,
44
- height: variant === 'default' ? 16 : 14,
45
- borderRadius: '50%',
46
- border: '1px solid grey',
47
- backgroundColor: disabled ? styles_1.disabledColor : 'white',
48
- ':hover': {
49
- borderColor: disabled ? 'grey' : styles_1.enabledColor,
50
- },
51
- }),
52
- indicator: (0, react_1.css)({
53
- position: 'absolute',
54
- top: -1,
55
- left: -1,
56
- right: -1,
57
- bottom: -1,
58
- zIndex: 10,
59
- display: 'flex',
60
- alignItems: 'center',
61
- justifyContent: 'center',
62
- backgroundColor: styles_1.enabledColor,
63
- borderRadius: '50%',
64
- }),
65
- circle: (0, react_1.css)({
66
- width: '40%',
67
- height: '40%',
68
- borderRadius: '50%',
69
- backgroundColor: 'white',
70
- }),
71
- label: (disabled) => (0, react_1.css)({
72
- cursor: 'pointer',
73
- lineHeight: 1,
74
- paddingLeft: 5,
75
- fontSize: '12px',
76
- ':hover': {
77
- '& ~ button': {
78
- borderColor: disabled ? 'grey' : styles_1.enabledColor,
79
- },
80
- },
81
- }),
82
- };
83
- function ClassicRadioItem(props) {
84
- const { value, label, disabled = false, onSelect, variant, name } = props;
85
- return ((0, jsx_runtime_1.jsxs)("div", { css: classicStyles.container(disabled), children: [(0, jsx_runtime_1.jsx)("label", { css: classicStyles.label(disabled), style: {
86
- fontSize: variant === 'small' ? '1em' : '1.125em',
87
- }, htmlFor: `${value}${name}`, children: label }), (0, jsx_runtime_1.jsx)(RadioGroup.Item, { css: classicStyles.item(disabled, variant), value: value, id: `${value}${name}`, onClick: () => {
88
- if (!disabled)
89
- onSelect?.(props);
90
- }, children: (0, jsx_runtime_1.jsx)(RadioGroup.Indicator, { css: classicStyles.indicator, children: (0, jsx_runtime_1.jsx)("div", { css: classicStyles.circle }) }) })] }));
91
- }
92
- exports.ClassicRadioItem = ClassicRadioItem;
93
- //# sourceMappingURL=ClassicRadioItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClassicRadioItem.js","sourceRoot":"","sources":["../../../../src/components/forms/radio-group/ClassicRadioItem.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { ReactNode } from 'react';
2
- interface ButtonGroupProps {
3
- children: [ReactNode, ReactNode];
4
- }
5
- export declare function ButtonGroup(props: ButtonGroupProps): import("react/jsx-runtime").JSX.Element;
6
- export declare namespace ButtonGroup {
7
- var Button: (props: ButtonGroupButtonProps) => import("react/jsx-runtime").JSX.Element;
8
- }
9
- interface ButtonGroupButtonProps {
10
- position: 'first' | 'last';
11
- label: string;
12
- onClick: () => void;
13
- }
14
- export {};
15
- //# sourceMappingURL=ButtonGroup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../../src/components/button/ButtonGroup.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AA4BlC,UAAU,gBAAgB;IACxB,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CAClC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CAGlD;yBAHe,WAAW;;;AAK3B,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB"}
@@ -1,35 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import styled from '@emotion/styled';
3
- const ButtonGroupRoot = styled.div `
4
- display: inline-flex;
5
- border-radius: 0.375rem;
6
- isolation: isolate;
7
- `;
8
- const ButtonGroupCustomButton = styled.button `
9
- position: relative;
10
- display: inline-flex;
11
- align-items: center;
12
- font-weight: 500;
13
- font-size: 0.875rem;
14
- line-height: 1.25rem;
15
- padding-left: 1rem;
16
- padding-right: 1rem;
17
- padding-top: 5px;
18
- padding-bottom: 5px;
19
- border-width: 1px;
20
- border-top-left-radius: ${({ isLast }) => !isLast && '0.375rem'};
21
- border-bottom-left-radius: ${({ isLast }) => !isLast && '0.375rem'};
22
-
23
- border-top-right-radius: ${({ isLast }) => isLast && '0.375rem'};
24
- border-bottom-right-radius: ${({ isLast }) => isLast && '0.375rem'};
25
- margin-left: ${({ isLast }) => isLast && '-1px'};
26
- `;
27
- export function ButtonGroup(props) {
28
- const { children } = props;
29
- return _jsx(ButtonGroupRoot, { children: children });
30
- }
31
- ButtonGroup.Button = function ButtonGroupButton(props) {
32
- const { position, label, onClick } = props;
33
- return (_jsx(ButtonGroupCustomButton, { type: "button", onClick: onClick, isLast: position === 'last', children: label }));
34
- };
35
- //# sourceMappingURL=ButtonGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonGroup.js","sourceRoot":"","sources":["../../../src/components/button/ButtonGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAGrC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAIjC,CAAC;AAEF,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAqB;;;;;;;;;;;;4BAYtC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,UAAU;+BAClC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,UAAU;;6BAEvC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,UAAU;gCACjC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,UAAU;iBACnD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,MAAM;CAChD,CAAC;AAMF,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,OAAO,KAAC,eAAe,cAAE,QAAQ,GAAmB,CAAC;AACvD,CAAC;AAQD,WAAW,CAAC,MAAM,GAAG,SAAS,iBAAiB,CAAC,KAA6B;IAC3E,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE3C,OAAO,CACL,KAAC,uBAAuB,IACtB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,QAAQ,KAAK,MAAM,YAE1B,KAAK,GACkB,CAC3B,CAAC;AACJ,CAAC,CAAC"}