react-science 0.33.0 → 0.35.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 (157) 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/index.d.ts +0 -1
  43. package/lib/components/button/index.d.ts.map +1 -1
  44. package/lib/components/button/index.js +0 -1
  45. package/lib/components/button/index.js.map +1 -1
  46. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts +4 -1
  47. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts.map +1 -1
  48. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js +3 -17
  49. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.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/ClassicRadioItem.d.ts.map +1 -1
  54. package/lib/components/forms/radio-group/ClassicRadioItem.js +0 -1
  55. package/lib/components/forms/radio-group/ClassicRadioItem.js.map +1 -1
  56. package/lib/components/root-layout/RootLayout.js +1 -1
  57. package/lib/components/toolbar/PanelPreferencesToolbar.d.ts +2 -0
  58. package/lib/components/toolbar/PanelPreferencesToolbar.d.ts.map +1 -1
  59. package/lib/components/toolbar/PanelPreferencesToolbar.js +14 -4
  60. package/lib/components/toolbar/PanelPreferencesToolbar.js.map +1 -1
  61. package/lib/components/toolbar/Toolbar.d.ts +9 -4
  62. package/lib/components/toolbar/Toolbar.d.ts.map +1 -1
  63. package/lib/components/toolbar/Toolbar.js +44 -6
  64. package/lib/components/toolbar/Toolbar.js.map +1 -1
  65. package/lib-esm/app/about/AboutDialogToolbarButton.d.ts +3 -3
  66. package/lib-esm/app/about/AboutDialogToolbarButton.d.ts.map +1 -1
  67. package/lib-esm/app/about/AboutDialogToolbarButton.js.map +1 -1
  68. package/lib-esm/app/helpers/react-plot.d.ts.map +1 -1
  69. package/lib-esm/app/helpers/react-plot.js +1 -1
  70. package/lib-esm/app/helpers/react-plot.js.map +1 -1
  71. package/lib-esm/app/kinds/iv/plot-view/IvPlotVariablesSelector.d.ts.map +1 -1
  72. package/lib-esm/app/kinds/iv/plot-view/IvPlotVariablesSelector.js +6 -1
  73. package/lib-esm/app/kinds/iv/plot-view/IvPlotVariablesSelector.js.map +1 -1
  74. package/lib-esm/app/kinds/mass/MeasurementMassPlot.js +1 -1
  75. package/lib-esm/app/kinds/mass/MeasurementMassPlot.js.map +1 -1
  76. package/lib-esm/app/panels/measurements/MeasurementColorPreview.d.ts +1 -1
  77. package/lib-esm/app/panels/measurements/MeasurementColorPreview.d.ts.map +1 -1
  78. package/lib-esm/app/panels/measurements/MeasurementColorPreview.js +18 -16
  79. package/lib-esm/app/panels/measurements/MeasurementColorPreview.js.map +1 -1
  80. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.d.ts +3 -3
  81. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.d.ts.map +1 -1
  82. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.js +5 -5
  83. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.js.map +1 -1
  84. package/lib-esm/app/panels/measurements/MeasurementsPanel.d.ts +3 -1
  85. package/lib-esm/app/panels/measurements/MeasurementsPanel.d.ts.map +1 -1
  86. package/lib-esm/app/panels/measurements/MeasurementsPanel.js +16 -12
  87. package/lib-esm/app/panels/measurements/MeasurementsPanel.js.map +1 -1
  88. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.d.ts +1 -1
  89. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.d.ts.map +1 -1
  90. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.js +10 -3
  91. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.js.map +1 -1
  92. package/lib-esm/app/panels/measurements/MeasurementsTable.d.ts.map +1 -1
  93. package/lib-esm/app/panels/measurements/MeasurementsTable.js +63 -37
  94. package/lib-esm/app/panels/measurements/MeasurementsTable.js.map +1 -1
  95. package/lib-esm/app/panels/measurements/index.d.ts +5 -0
  96. package/lib-esm/app/panels/measurements/index.d.ts.map +1 -1
  97. package/lib-esm/app/panels/measurements/index.js +5 -0
  98. package/lib-esm/app/panels/measurements/index.js.map +1 -1
  99. package/lib-esm/app/panels/measurements/measurementPanelContext.d.ts +11 -0
  100. package/lib-esm/app/panels/measurements/measurementPanelContext.d.ts.map +1 -0
  101. package/lib-esm/app/panels/measurements/measurementPanelContext.js +14 -0
  102. package/lib-esm/app/panels/measurements/measurementPanelContext.js.map +1 -0
  103. package/lib-esm/components/accordion/Accordion.d.ts.map +1 -1
  104. package/lib-esm/components/accordion/Accordion.js +0 -1
  105. package/lib-esm/components/accordion/Accordion.js.map +1 -1
  106. package/lib-esm/components/button/index.d.ts +0 -1
  107. package/lib-esm/components/button/index.d.ts.map +1 -1
  108. package/lib-esm/components/button/index.js +0 -1
  109. package/lib-esm/components/button/index.js.map +1 -1
  110. package/lib-esm/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts +4 -1
  111. package/lib-esm/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts.map +1 -1
  112. package/lib-esm/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js +4 -18
  113. package/lib-esm/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js.map +1 -1
  114. package/lib-esm/components/color-picker/react-color/sketch/SketchFields.d.ts.map +1 -1
  115. package/lib-esm/components/color-picker/react-color/sketch/SketchFields.js +0 -2
  116. package/lib-esm/components/color-picker/react-color/sketch/SketchFields.js.map +1 -1
  117. package/lib-esm/components/forms/radio-group/ClassicRadioItem.d.ts.map +1 -1
  118. package/lib-esm/components/forms/radio-group/ClassicRadioItem.js +0 -1
  119. package/lib-esm/components/forms/radio-group/ClassicRadioItem.js.map +1 -1
  120. package/lib-esm/components/root-layout/RootLayout.js +1 -1
  121. package/lib-esm/components/toolbar/PanelPreferencesToolbar.d.ts +2 -0
  122. package/lib-esm/components/toolbar/PanelPreferencesToolbar.d.ts.map +1 -1
  123. package/lib-esm/components/toolbar/PanelPreferencesToolbar.js +14 -4
  124. package/lib-esm/components/toolbar/PanelPreferencesToolbar.js.map +1 -1
  125. package/lib-esm/components/toolbar/Toolbar.d.ts +9 -4
  126. package/lib-esm/components/toolbar/Toolbar.d.ts.map +1 -1
  127. package/lib-esm/components/toolbar/Toolbar.js +47 -9
  128. package/lib-esm/components/toolbar/Toolbar.js.map +1 -1
  129. package/package.json +1 -1
  130. package/src/app/about/AboutDialogToolbarButton.tsx +4 -3
  131. package/src/app/helpers/react-plot.tsx +1 -0
  132. package/src/app/kinds/iv/plot-view/IvPlotVariablesSelector.tsx +7 -1
  133. package/src/app/kinds/mass/MeasurementMassPlot.tsx +2 -2
  134. package/src/app/panels/measurements/MeasurementColorPreview.tsx +30 -31
  135. package/src/app/panels/measurements/MeasurementVisibilityToggle.tsx +17 -14
  136. package/src/app/panels/measurements/MeasurementsPanel.tsx +37 -28
  137. package/src/app/panels/measurements/MeasurementsPanelAccordion.tsx +15 -2
  138. package/src/app/panels/measurements/MeasurementsTable.tsx +153 -57
  139. package/src/app/panels/measurements/index.ts +5 -0
  140. package/src/app/panels/measurements/measurementPanelContext.tsx +32 -0
  141. package/src/components/accordion/Accordion.tsx +0 -1
  142. package/src/components/button/index.ts +0 -1
  143. package/src/components/color-picker/color-picker-dropdown/ColorPickerDropdown.tsx +17 -37
  144. package/src/components/color-picker/react-color/sketch/SketchFields.tsx +0 -2
  145. package/src/components/forms/radio-group/ClassicRadioItem.tsx +0 -1
  146. package/src/components/root-layout/RootLayout.tsx +1 -1
  147. package/src/components/toolbar/PanelPreferencesToolbar.tsx +38 -20
  148. package/src/components/toolbar/Toolbar.tsx +90 -7
  149. package/lib/components/button/ButtonGroup.d.ts +0 -15
  150. package/lib/components/button/ButtonGroup.d.ts.map +0 -1
  151. package/lib/components/button/ButtonGroup.js +0 -42
  152. package/lib/components/button/ButtonGroup.js.map +0 -1
  153. package/lib-esm/components/button/ButtonGroup.d.ts +0 -15
  154. package/lib-esm/components/button/ButtonGroup.d.ts.map +0 -1
  155. package/lib-esm/components/button/ButtonGroup.js +0 -35
  156. package/lib-esm/components/button/ButtonGroup.js.map +0 -1
  157. package/src/components/button/ButtonGroup.tsx +0 -57
@@ -1,8 +1,8 @@
1
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
2
  /** @jsxImportSource @emotion/react */
3
- import { ButtonGroup, Classes, Colors } from '@blueprintjs/core';
3
+ import { ButtonGroup, Classes, Colors, Popover, Icon, } from '@blueprintjs/core';
4
4
  import { css } from '@emotion/react';
5
- import { useLayoutEffect, useMemo, useRef, } from 'react';
5
+ import { cloneElement, useLayoutEffect, useMemo, useRef, } from 'react';
6
6
  import { Button } from '../index';
7
7
  import { toolbarContext, useToolbarContext, } from './toolbarContext';
8
8
  const border = '1px solid rgb(247, 247, 247)';
@@ -38,26 +38,47 @@ export function Toolbar(props) {
38
38
  return () => observer.unobserve(element);
39
39
  }
40
40
  }, [vertical]);
41
- return (_jsx(ToolbarProvider, { value: contextValue, children: _jsx(ButtonGroup, { ref: ref, vertical: vertical, large: large, style: {
41
+ return (_jsx(ToolbarProvider, { value: contextValue, children: _jsx(ButtonGroup
42
+ // Reset because of layout effect above
43
+ // TODO: remove once the workaround is no longer needed
44
+ , { vertical: vertical, large: large, style: {
42
45
  flexWrap: 'wrap',
43
46
  borderRight: vertical ? border : undefined,
44
- }, children: children }) }));
47
+ }, children: children }, String(vertical)) }));
45
48
  }
46
49
  Toolbar.Item = function ToolbarItem(props) {
47
- const { active = false, icon, onClick, title, id, intent: itemIntent, disabled: itemDisabled, noTooltip = false, ...other } = props;
50
+ const { active = false, icon, onClick, title, id, intent: itemIntent, disabled: itemDisabled, noTooltip = false, isPopover, ...other } = props;
48
51
  const { intent: toolbarIntent, disabled: toolbarDisabled, large, vertical, } = useToolbarContext();
49
52
  const intent = itemIntent ?? toolbarIntent;
50
53
  const disabled = itemDisabled ?? toolbarDisabled;
51
- return (_jsx(Button, { minimal: true, disabled: disabled, css: css `
54
+ const resizedIcon = typeof icon === 'string'
55
+ ? icon
56
+ : cloneElement(icon, {
57
+ className: icon.props.className
58
+ ? `${icon.props.className} bp5-icon`
59
+ : 'bp5-icon',
60
+ });
61
+ return (_jsx(Button, { alignText: isPopover ? 'left' : undefined, minimal: true, disabled: disabled, css: css `
52
62
  .${Classes.ICON} {
53
63
  color: ${Colors.DARK_GRAY3};
54
64
  }
55
65
  `, intent: intent, style: {
56
66
  position: 'relative',
57
- fontSize: '1.25em',
67
+ fontSize: '1.125em',
58
68
  width: 'fit-content',
59
69
  flex: 'none',
60
- }, type: "button", active: active, icon: icon, onClick: () => {
70
+ }, type: "button", active: active, icon: _jsxs("div", { style: {
71
+ display: 'flex',
72
+ justifyContent: 'center',
73
+ alignItems: 'center',
74
+ width: 0,
75
+ height: 0,
76
+ }, children: [_jsx(Icon, { icon: resizedIcon }), isPopover && (_jsx(Icon, { icon: "caret-right", size: large ? 14 : 9, style: {
77
+ transform: 'rotate(45deg)',
78
+ position: 'absolute',
79
+ bottom: 0,
80
+ right: 0,
81
+ } }))] }), onClick: () => {
61
82
  onClick?.(props);
62
83
  }, tooltipProps: noTooltip
63
84
  ? undefined
@@ -68,6 +89,23 @@ Toolbar.Item = function ToolbarItem(props) {
68
89
  compact: !large,
69
90
  }, ...other }));
70
91
  };
92
+ Toolbar.PopoverItem = function ToolbarPopoverItem(props) {
93
+ const { itemProps, ...other } = props;
94
+ const { disabled, vertical } = useToolbarContext();
95
+ return (_jsx(Popover, { minimal: true, disabled: disabled, placement: vertical ? 'right-start' : 'bottom-start', css: css `
96
+ .${Classes.ICON} {
97
+ color: ${Colors.DARK_GRAY3};
98
+ }
99
+ `, targetProps: {
100
+ style: {
101
+ position: 'relative',
102
+ fontSize: '1.125em',
103
+ width: 'fit-content',
104
+ height: 'fit-content',
105
+ flex: 'none',
106
+ },
107
+ }, ...other, children: _jsx(Toolbar.Item, { noTooltip: true, isPopover: true, ...itemProps }) }));
108
+ };
71
109
  function ToolbarProvider(props) {
72
110
  return (_jsx(toolbarContext.Provider, { value: props.value, children: props.children }));
73
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../src/components/toolbar/Toolbar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../src/components/toolbar/Toolbar.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-science",
3
- "version": "0.33.0",
3
+ "version": "0.35.0",
4
4
  "description": "React components to build scientific applications UI",
5
5
  "exports": {
6
6
  "./app": {
@@ -1,11 +1,12 @@
1
- import { ButtonProps, Dialog, DialogBody } from '@blueprintjs/core';
2
- import { ReactNode } from 'react';
1
+ import { Dialog, DialogBody } from '@blueprintjs/core';
2
+ import { IconName } from '@blueprintjs/icons';
3
+ import { JSX, ReactNode } from 'react';
3
4
 
4
5
  import { Toolbar, useOnOff } from '../../components';
5
6
 
6
7
  interface AboutDialogToolbarButtonProps {
7
8
  name: string;
8
- icon: ButtonProps['icon'];
9
+ icon: IconName | JSX.Element;
9
10
  body: ReactNode;
10
11
  }
11
12
 
@@ -111,6 +111,7 @@ export function BasicComponent(props: BasicComponentProps) {
111
111
  flip={flipHorizontalAxis}
112
112
  position="bottom"
113
113
  label={`${x.label}${x.units ? `(${x.units})` : ''}`}
114
+ paddingEnd="20"
114
115
  />
115
116
  <Axis
116
117
  hidden={!showVerticalAxis}
@@ -28,7 +28,13 @@ export default function IvPlotVariablesSelector() {
28
28
 
29
29
  return (
30
30
  <div
31
- style={{ display: 'flex', flexDirection: 'row', gap: 5, fontSize: 18 }}
31
+ style={{
32
+ display: 'flex',
33
+ flexDirection: 'row',
34
+
35
+ gap: 30,
36
+ fontSize: '1.125em',
37
+ }}
32
38
  >
33
39
  <MeasurementVariableSelect
34
40
  label="Y variable"
@@ -121,14 +121,14 @@ function MassComponent(props: MeasurementPlotProps) {
121
121
  style={{ strokeWidth: 2, stroke: 'blue' }}
122
122
  />
123
123
  <Annotation.Text
124
- style={{ fontSize: '13px', fontWeight: '600' }}
124
+ style={{ fontSize: '0.875rem', fontWeight: '600' }}
125
125
  x="2"
126
126
  y="0"
127
127
  >
128
128
  {shortLabel}
129
129
  </Annotation.Text>
130
130
  <Annotation.Text
131
- style={{ fontSize: '13px', fontWeight: '600' }}
131
+ style={{ fontSize: '0.875rem', fontWeight: '600' }}
132
132
  x="2"
133
133
  y="-14"
134
134
  >
@@ -13,7 +13,6 @@ import {
13
13
  useOnClickOutside,
14
14
  useOnOff,
15
15
  } from '../../../components/index';
16
- import { Portal } from '../../../components/root-layout/Portal';
17
16
 
18
17
  interface MeasurementColorPreviewProps {
19
18
  measurementId: string;
@@ -24,11 +23,12 @@ interface MeasurementColorPreviewProps {
24
23
  const ColorPreviewButton = styled.button`
25
24
  width: 1em;
26
25
  height: 1em;
26
+ & > div {
27
+ border-radius: 0.5em;
28
+ }
27
29
  `;
28
30
 
29
- export default function MeasurementColorPreview(
30
- props: MeasurementColorPreviewProps,
31
- ) {
31
+ export function MeasurementColorPreview(props: MeasurementColorPreviewProps) {
32
32
  const { measurementId, kind, color } = props;
33
33
 
34
34
  const dispatch = useAppDispatch();
@@ -53,35 +53,33 @@ export default function MeasurementColorPreview(
53
53
  <ColorPreview color={color} />
54
54
  </ColorPreviewButton>
55
55
  {isOpened && (
56
- <Portal>
57
- <div
58
- ref={(div) => {
59
- setPopperElement(div);
60
- ref.current = div;
61
- }}
62
- {...popperProps}
63
- >
64
- {color.kind === 'fixed' ? (
65
- <FixedColorPicker
66
- color={color.color}
67
- onChange={(newColor) =>
68
- dispatch({
69
- type: 'CHANGE_MEASUREMENT_DISPLAY',
70
- payload: {
71
- display: {
72
- color: {
73
- kind: 'fixed',
74
- color: newColor,
75
- },
56
+ <div
57
+ ref={(div) => {
58
+ setPopperElement(div);
59
+ ref.current = div;
60
+ }}
61
+ {...popperProps}
62
+ >
63
+ {color.kind === 'fixed' ? (
64
+ <FixedColorPicker
65
+ color={color.color}
66
+ onChange={(newColor) =>
67
+ dispatch({
68
+ type: 'CHANGE_MEASUREMENT_DISPLAY',
69
+ payload: {
70
+ display: {
71
+ color: {
72
+ kind: 'fixed',
73
+ color: newColor,
76
74
  },
77
- measurement: { id: measurementId, kind },
78
75
  },
79
- })
80
- }
81
- />
82
- ) : null}
83
- </div>
84
- </Portal>
76
+ measurement: { id: measurementId, kind },
77
+ },
78
+ })
79
+ }
80
+ />
81
+ ) : null}
82
+ </div>
85
83
  )}
86
84
  </>
87
85
  );
@@ -94,6 +92,7 @@ function FixedColorPicker(props: {
94
92
  const { color, onChange } = props;
95
93
  return (
96
94
  <ColorPicker
95
+ style={{ fontSize: '0.875em' }}
97
96
  color={{ hex: color }}
98
97
  onChangeComplete={(color) => {
99
98
  onChange(color.hex);
@@ -1,15 +1,14 @@
1
- import { FaEye, FaEyeSlash } from 'react-icons/fa';
2
-
3
1
  import { useAppDispatch } from '../../../app-data/index';
2
+ import { Button } from '../../../components/index';
4
3
 
5
- import { MeasurementsTableProps } from './MeasurementsTable';
4
+ import { MeasurementsTableProps } from '.';
6
5
 
7
6
  interface MeasurementVisibilityToggleProps {
8
7
  id: string;
9
8
  isVisible: boolean;
10
9
  }
11
10
 
12
- export default function MeasurementVisibilityToggle(
11
+ export function MeasurementVisibilityToggle(
13
12
  props: MeasurementVisibilityToggleProps,
14
13
  ) {
15
14
  const { id, isVisible } = props;
@@ -23,20 +22,22 @@ export default function MeasurementVisibilityToggle(
23
22
  }
24
23
 
25
24
  return isVisible ? (
26
- <FaEye onClick={() => setVisibility(false)} style={{ cursor: 'pointer' }} />
25
+ <Button icon="eye-on" onClick={() => setVisibility(false)} minimal />
27
26
  ) : (
28
- <FaEyeSlash
27
+ <Button
28
+ icon="eye-off"
29
29
  onClick={() => setVisibility(true)}
30
- style={{ cursor: 'pointer', opacity: 0.6 }}
30
+ style={{ opacity: 0.6 }}
31
+ minimal
31
32
  />
32
33
  );
33
34
  }
34
35
 
35
36
  export function MeasurementSelectedVisibilityChange(props: {
36
- openedEyes: boolean;
37
+ isVisible: boolean;
37
38
  kind: MeasurementsTableProps['kind'];
38
39
  }) {
39
- const { kind, openedEyes } = props;
40
+ const { kind, isVisible } = props;
40
41
  const dispatch = useAppDispatch();
41
42
 
42
43
  function setVisibility(isVisible: boolean) {
@@ -46,12 +47,14 @@ export function MeasurementSelectedVisibilityChange(props: {
46
47
  });
47
48
  }
48
49
 
49
- return openedEyes ? (
50
- <FaEye onClick={() => setVisibility(false)} style={{ cursor: 'pointer' }} />
50
+ return isVisible ? (
51
+ <Button icon="eye-on" onClick={() => setVisibility(true)} minimal />
51
52
  ) : (
52
- <FaEyeSlash
53
- onClick={() => setVisibility(true)}
54
- style={{ cursor: 'pointer', opacity: 0.6 }}
53
+ <Button
54
+ icon="eye-off"
55
+ onClick={() => setVisibility(false)}
56
+ style={{ opacity: 0.6 }}
57
+ minimal
55
58
  />
56
59
  );
57
60
  }
@@ -1,6 +1,7 @@
1
1
  /** @jsxImportSource @emotion/react */
2
- import { Tab, Tabs } from '@blueprintjs/core';
2
+ import { PanelProps, Tab, Tabs } from '@blueprintjs/core';
3
3
  import { css } from '@emotion/react';
4
+ import { useMemo } from 'react';
4
5
 
5
6
  import {
6
7
  kindLabels,
@@ -10,9 +11,9 @@ import {
10
11
  useAppState,
11
12
  } from '../../../app-data';
12
13
 
13
- import { MeasurementsTable } from './MeasurementsTable';
14
+ import { MeasurementsTable, MeasurementPanelProvider } from '.';
14
15
 
15
- export function MeasurementsPanel() {
16
+ export function MeasurementsPanel({ openPanel }: PanelProps<object>) {
16
17
  const appState = useAppState();
17
18
  const { data, view } = appState;
18
19
 
@@ -36,34 +37,42 @@ export function MeasurementsPanel() {
36
37
  payload: id,
37
38
  });
38
39
  }
40
+ const measurementState = useMemo(
41
+ () => ({
42
+ openPanel,
43
+ }),
44
+ [openPanel],
45
+ );
39
46
 
40
47
  if (items.length > 0) {
41
48
  return (
42
- <Tabs
43
- selectedTabId={view.selectedKind}
44
- onChange={handleTabSelection}
45
- css={css`
46
- div[role='tablist'] {
47
- overflow-x: auto;
48
- padding: 2px 0 0 1rem;
49
- border-bottom: 1px solid gray;
50
- }
51
- div[role='tabpanel'] {
52
- margin-top: 4px;
53
- }
54
- `}
55
- >
56
- {items.map((item) => (
57
- <Tab
58
- id={item.id}
59
- key={item.id}
60
- title={item.title}
61
- panel={item.content}
62
- tagContent={data.measurements[item.id].entries.length}
63
- tagProps={{ round: true }}
64
- />
65
- ))}
66
- </Tabs>
49
+ <MeasurementPanelProvider value={measurementState}>
50
+ <Tabs
51
+ selectedTabId={view.selectedKind}
52
+ onChange={handleTabSelection}
53
+ css={css`
54
+ div[role='tablist'] {
55
+ overflow-x: auto;
56
+ padding: 2px 0 0 1rem;
57
+ border-bottom: 1px solid gray;
58
+ }
59
+ div[role='tabpanel'] {
60
+ margin-top: 4px;
61
+ }
62
+ `}
63
+ >
64
+ {items.map((item) => (
65
+ <Tab
66
+ id={item.id}
67
+ key={item.id}
68
+ title={item.title}
69
+ panel={item.content}
70
+ tagContent={data.measurements[item.id].entries.length}
71
+ tagProps={{ round: true }}
72
+ />
73
+ ))}
74
+ </Tabs>
75
+ </MeasurementPanelProvider>
67
76
  );
68
77
  }
69
78
 
@@ -1,3 +1,7 @@
1
+ /** @jsxImportSource @emotion/react */
2
+ import { PanelStack2 } from '@blueprintjs/core';
3
+ import { css } from '@emotion/react';
4
+
1
5
  import {
2
6
  getExistingMeasurementKinds,
3
7
  kindLabels,
@@ -5,7 +9,7 @@ import {
5
9
  } from '../../../app-data/index';
6
10
  import { Accordion } from '../../../components/index';
7
11
 
8
- import { MeasurementsPanel } from './MeasurementsPanel';
12
+ import { MeasurementsPanel } from '.';
9
13
 
10
14
  export function MeasurementsPanelAccordion() {
11
15
  const appData = useAppData();
@@ -16,7 +20,16 @@ export function MeasurementsPanelAccordion() {
16
20
  : 'Measurements';
17
21
  return (
18
22
  <Accordion.Item title={title} defaultOpened>
19
- <MeasurementsPanel />
23
+ <PanelStack2
24
+ css={css`
25
+ height: 100%;
26
+ `}
27
+ initialPanel={{
28
+ renderPanel: MeasurementsPanel,
29
+ }}
30
+ showPanelHeader={false}
31
+ renderActivePanelOnly={false}
32
+ />
20
33
  </Accordion.Item>
21
34
  );
22
35
  }