react-science 0.22.1 → 0.23.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 (152) hide show
  1. package/lib/components/accordion/Accordion.js +10 -6
  2. package/lib/components/forms/Checkbox.js +62 -0
  3. package/lib/components/forms/Select.js +114 -0
  4. package/lib/components/forms/index.js +1 -0
  5. package/lib/components/table/Table.js +6 -6
  6. package/lib-esm/app/about/AboutDialogToolbarButton.d.ts +1 -1
  7. package/lib-esm/app/about/AboutDialogToolbarButton.d.ts.map +1 -1
  8. package/lib-esm/app/explorer/ExplorerPlotView.d.ts +1 -2
  9. package/lib-esm/app/explorer/ExplorerPlotView.d.ts.map +1 -1
  10. package/lib-esm/app/explorer/MeasurementExplorer.d.ts +1 -2
  11. package/lib-esm/app/explorer/MeasurementExplorer.d.ts.map +1 -1
  12. package/lib-esm/app/explorer/MeasurementExplorerWithState.d.ts +1 -2
  13. package/lib-esm/app/explorer/MeasurementExplorerWithState.d.ts.map +1 -1
  14. package/lib-esm/app/helpers/MeasurementPlot.d.ts +1 -2
  15. package/lib-esm/app/helpers/MeasurementPlot.d.ts.map +1 -1
  16. package/lib-esm/app/helpers/MeasurementVariableSelect.d.ts +1 -2
  17. package/lib-esm/app/helpers/MeasurementVariableSelect.d.ts.map +1 -1
  18. package/lib-esm/app/helpers/react-plot.d.ts +1 -1
  19. package/lib-esm/app/helpers/react-plot.d.ts.map +1 -1
  20. package/lib-esm/app/kinds/ir/IrPeaksPanel.d.ts +1 -2
  21. package/lib-esm/app/kinds/ir/IrPeaksPanel.d.ts.map +1 -1
  22. package/lib-esm/app/kinds/iv/plot-view/IvMeasurementsPlot.d.ts +1 -2
  23. package/lib-esm/app/kinds/iv/plot-view/IvMeasurementsPlot.d.ts.map +1 -1
  24. package/lib-esm/app/kinds/iv/plot-view/IvPlotVariablesSelector.d.ts +1 -2
  25. package/lib-esm/app/kinds/iv/plot-view/IvPlotVariablesSelector.d.ts.map +1 -1
  26. package/lib-esm/app/kinds/iv/plot-view/IvPlotView.d.ts +1 -2
  27. package/lib-esm/app/kinds/iv/plot-view/IvPlotView.d.ts.map +1 -1
  28. package/lib-esm/app/kinds/iv/plot-view/IvSeries.d.ts +1 -2
  29. package/lib-esm/app/kinds/iv/plot-view/IvSeries.d.ts.map +1 -1
  30. package/lib-esm/app/kinds/mass/MassPlotView.d.ts +1 -2
  31. package/lib-esm/app/kinds/mass/MassPlotView.d.ts.map +1 -1
  32. package/lib-esm/app/kinds/mass/MeasurementMassPlot.d.ts +1 -2
  33. package/lib-esm/app/kinds/mass/MeasurementMassPlot.d.ts.map +1 -1
  34. package/lib-esm/app/panels/SignalProcessingPanel.d.ts +1 -2
  35. package/lib-esm/app/panels/SignalProcessingPanel.d.ts.map +1 -1
  36. package/lib-esm/app/panels/measurement-config/MeasurementConfigPanel.d.ts +1 -2
  37. package/lib-esm/app/panels/measurement-config/MeasurementConfigPanel.d.ts.map +1 -1
  38. package/lib-esm/app/panels/measurement-config/MeasurementConfigPanelAccordion.d.ts +1 -2
  39. package/lib-esm/app/panels/measurement-config/MeasurementConfigPanelAccordion.d.ts.map +1 -1
  40. package/lib-esm/app/panels/measurement-info/MeasurementInfoPanel.d.ts +1 -2
  41. package/lib-esm/app/panels/measurement-info/MeasurementInfoPanel.d.ts.map +1 -1
  42. package/lib-esm/app/panels/measurement-info/MeasurementInfoPanelAccordion.d.ts +1 -2
  43. package/lib-esm/app/panels/measurement-info/MeasurementInfoPanelAccordion.d.ts.map +1 -1
  44. package/lib-esm/app/panels/measurements/MeasurementCheckbox.d.ts +1 -2
  45. package/lib-esm/app/panels/measurements/MeasurementCheckbox.d.ts.map +1 -1
  46. package/lib-esm/app/panels/measurements/MeasurementColorPreview.d.ts +1 -2
  47. package/lib-esm/app/panels/measurements/MeasurementColorPreview.d.ts.map +1 -1
  48. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.d.ts +2 -3
  49. package/lib-esm/app/panels/measurements/MeasurementVisibilityToggle.d.ts.map +1 -1
  50. package/lib-esm/app/panels/measurements/MeasurementsPanel.d.ts +1 -2
  51. package/lib-esm/app/panels/measurements/MeasurementsPanel.d.ts.map +1 -1
  52. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.d.ts +1 -2
  53. package/lib-esm/app/panels/measurements/MeasurementsPanelAccordion.d.ts.map +1 -1
  54. package/lib-esm/app/panels/measurements/MeasurementsTable.d.ts +1 -2
  55. package/lib-esm/app/panels/measurements/MeasurementsTable.d.ts.map +1 -1
  56. package/lib-esm/app-data/state/appState.d.ts +1 -1
  57. package/lib-esm/app-data/state/appState.d.ts.map +1 -1
  58. package/lib-esm/components/accordion/Accordion.d.ts.map +1 -1
  59. package/lib-esm/components/accordion/Accordion.js +10 -6
  60. package/lib-esm/components/accordion/Accordion.js.map +1 -1
  61. package/lib-esm/components/accordion/AccordionContext.d.ts +1 -1
  62. package/lib-esm/components/accordion/AccordionContext.d.ts.map +1 -1
  63. package/lib-esm/components/button/ButtonGroup.d.ts +2 -2
  64. package/lib-esm/components/button/ButtonGroup.d.ts.map +1 -1
  65. package/lib-esm/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts +1 -2
  66. package/lib-esm/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts.map +1 -1
  67. package/lib-esm/components/color-picker/gradient-select/GradientSelect.d.ts +1 -2
  68. package/lib-esm/components/color-picker/gradient-select/GradientSelect.d.ts.map +1 -1
  69. package/lib-esm/components/color-picker/preview/ColorPreview.d.ts +1 -2
  70. package/lib-esm/components/color-picker/preview/ColorPreview.d.ts.map +1 -1
  71. package/lib-esm/components/color-picker/preview/FixedColorPreview.d.ts +1 -2
  72. package/lib-esm/components/color-picker/preview/FixedColorPreview.d.ts.map +1 -1
  73. package/lib-esm/components/color-picker/preview/FixedGradientPreview.d.ts +1 -2
  74. package/lib-esm/components/color-picker/preview/FixedGradientPreview.d.ts.map +1 -1
  75. package/lib-esm/components/color-picker/react-color/ColorPicker.d.ts +1 -1
  76. package/lib-esm/components/color-picker/react-color/ColorPicker.d.ts.map +1 -1
  77. package/lib-esm/components/color-picker/react-color/common/Alpha.d.ts +1 -1
  78. package/lib-esm/components/color-picker/react-color/common/Alpha.d.ts.map +1 -1
  79. package/lib-esm/components/color-picker/react-color/common/CheckBoard.d.ts +1 -1
  80. package/lib-esm/components/color-picker/react-color/common/CheckBoard.d.ts.map +1 -1
  81. package/lib-esm/components/color-picker/react-color/common/EditableInput.d.ts +1 -1
  82. package/lib-esm/components/color-picker/react-color/common/EditableInput.d.ts.map +1 -1
  83. package/lib-esm/components/color-picker/react-color/common/Hue.d.ts +1 -1
  84. package/lib-esm/components/color-picker/react-color/common/Hue.d.ts.map +1 -1
  85. package/lib-esm/components/color-picker/react-color/common/Saturation.d.ts +1 -1
  86. package/lib-esm/components/color-picker/react-color/common/Saturation.d.ts.map +1 -1
  87. package/lib-esm/components/color-picker/react-color/common/Swatch.d.ts +3 -3
  88. package/lib-esm/components/color-picker/react-color/common/Swatch.d.ts.map +1 -1
  89. package/lib-esm/components/color-picker/react-color/common/interaction.d.ts +2 -2
  90. package/lib-esm/components/color-picker/react-color/sketch/SketchFields.d.ts +1 -2
  91. package/lib-esm/components/color-picker/react-color/sketch/SketchFields.d.ts.map +1 -1
  92. package/lib-esm/components/color-picker/react-color/sketch/SketchPresetColors.d.ts +1 -2
  93. package/lib-esm/components/color-picker/react-color/sketch/SketchPresetColors.d.ts.map +1 -1
  94. package/lib-esm/components/drop-zone/DropZone.d.ts +2 -2
  95. package/lib-esm/components/drop-zone/DropZone.d.ts.map +1 -1
  96. package/lib-esm/components/dropdown-menu/DropdownMenu.d.ts +1 -1
  97. package/lib-esm/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
  98. package/lib-esm/components/dropdown-menu/MenuItems.d.ts +1 -1
  99. package/lib-esm/components/dropdown-menu/MenuItems.d.ts.map +1 -1
  100. package/lib-esm/components/forms/Checkbox.d.ts +11 -0
  101. package/lib-esm/components/forms/Checkbox.d.ts.map +1 -0
  102. package/lib-esm/components/forms/Checkbox.js +36 -0
  103. package/lib-esm/components/forms/Checkbox.js.map +1 -0
  104. package/lib-esm/components/forms/Input.d.ts +1 -1
  105. package/lib-esm/components/forms/Input.d.ts.map +1 -1
  106. package/lib-esm/components/forms/Select.d.ts +21 -0
  107. package/lib-esm/components/forms/Select.d.ts.map +1 -0
  108. package/lib-esm/components/forms/Select.js +85 -0
  109. package/lib-esm/components/forms/Select.js.map +1 -0
  110. package/lib-esm/components/forms/context/FieldsContext.d.ts +1 -1
  111. package/lib-esm/components/forms/context/FieldsContext.d.ts.map +1 -1
  112. package/lib-esm/components/forms/index.d.ts +1 -0
  113. package/lib-esm/components/forms/index.d.ts.map +1 -1
  114. package/lib-esm/components/forms/index.js +1 -0
  115. package/lib-esm/components/forms/index.js.map +1 -1
  116. package/lib-esm/components/fullscreen/FullscreenContext.d.ts +1 -1
  117. package/lib-esm/components/fullscreen/FullscreenContext.d.ts.map +1 -1
  118. package/lib-esm/components/fullscreen/FullscreenToolbarButton.d.ts +1 -2
  119. package/lib-esm/components/fullscreen/FullscreenToolbarButton.d.ts.map +1 -1
  120. package/lib-esm/components/modal/ConfirmModal.d.ts +1 -1
  121. package/lib-esm/components/modal/ConfirmModal.d.ts.map +1 -1
  122. package/lib-esm/components/modal/Modal.d.ts +4 -4
  123. package/lib-esm/components/modal/Modal.d.ts.map +1 -1
  124. package/lib-esm/components/root-layout/RootLayoutContext.d.ts +1 -1
  125. package/lib-esm/components/root-layout/RootLayoutContext.d.ts.map +1 -1
  126. package/lib-esm/components/spinner/FullSpinner.d.ts +1 -2
  127. package/lib-esm/components/spinner/FullSpinner.d.ts.map +1 -1
  128. package/lib-esm/components/table/Table.d.ts +4 -3
  129. package/lib-esm/components/table/Table.d.ts.map +1 -1
  130. package/lib-esm/components/table/Table.js +6 -6
  131. package/lib-esm/components/table/Table.js.map +1 -1
  132. package/lib-esm/components/tabs/TabsContext.d.ts +1 -1
  133. package/lib-esm/components/tabs/TabsContext.d.ts.map +1 -1
  134. package/lib-esm/components/toolbar/ToolbarContext.d.ts +1 -1
  135. package/lib-esm/components/toolbar/ToolbarContext.d.ts.map +1 -1
  136. package/lib-esm/components/value-renderers/Boolean.d.ts +1 -2
  137. package/lib-esm/components/value-renderers/Boolean.d.ts.map +1 -1
  138. package/lib-esm/components/value-renderers/Component.d.ts +1 -1
  139. package/lib-esm/components/value-renderers/Component.d.ts.map +1 -1
  140. package/lib-esm/components/value-renderers/Header.d.ts +1 -2
  141. package/lib-esm/components/value-renderers/Header.d.ts.map +1 -1
  142. package/lib-esm/components/value-renderers/Number.d.ts +1 -2
  143. package/lib-esm/components/value-renderers/Number.d.ts.map +1 -1
  144. package/lib-esm/components/value-renderers/ObjectRenderer.d.ts +1 -2
  145. package/lib-esm/components/value-renderers/ObjectRenderer.d.ts.map +1 -1
  146. package/package.json +14 -7
  147. package/src/components/accordion/Accordion.tsx +18 -8
  148. package/src/components/forms/Checkbox.tsx +78 -0
  149. package/src/components/forms/Select.tsx +185 -0
  150. package/src/components/forms/index.ts +1 -0
  151. package/src/components/table/Table.tsx +14 -6
  152. package/src/styles/storybook-globals.css +6 -0
@@ -0,0 +1,185 @@
1
+ /** @jsxImportSource @emotion/react */
2
+ import styled from '@emotion/styled';
3
+ import * as RadixSelect from '@radix-ui/react-select';
4
+ import { SelectGroup } from '@radix-ui/react-select';
5
+ import { Fragment, ReactNode, CSSProperties } from 'react';
6
+ import { FaCheck, FaChevronDown, FaChevronUp } from 'react-icons/fa';
7
+
8
+ import { Portal } from '../root-layout/Portal';
9
+
10
+ interface Category {
11
+ label: ReactNode;
12
+ options: Option[];
13
+ }
14
+ interface Option {
15
+ label: ReactNode;
16
+ value: string;
17
+ disabled?: boolean;
18
+ }
19
+
20
+ export interface SelectProps {
21
+ placeholder?: string;
22
+ value?: string;
23
+ onSelect?: (value: string) => void;
24
+ options: (Option[] | Category[])[];
25
+ disabled?: boolean;
26
+ style?: CSSProperties;
27
+ }
28
+
29
+ const SelectRoot = styled.div`
30
+ display: inline-flex;
31
+ align-items: center;
32
+ justify-content: space-between;
33
+ background-color: #ffffff;
34
+ font-size: 1.125em;
35
+ width: 120px;
36
+ `;
37
+
38
+ const SelectTrigger = styled(RadixSelect.Trigger)`
39
+ width: 100%;
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: space-between;
43
+ border-radius: 4px;
44
+ border: 1px solid rgba(0, 0, 0, 0.15);
45
+ padding: 4px 11px;
46
+ user-select: none;
47
+ font-size: 1.125em;
48
+ line-height: 1.125em;
49
+
50
+ &[data-disabled] {
51
+ color: rgba(0, 0, 0, 0.5);
52
+ background-color: #f5f5f5;
53
+ }
54
+ `;
55
+
56
+ const SelectContent = styled(RadixSelect.Content)`
57
+ width: var(--radix-select-trigger-width);
58
+ max-height: var(--radix-select-content-available-height);
59
+ `;
60
+
61
+ const SelectViewport = styled(RadixSelect.Viewport)`
62
+ width: var(--radix-select-trigger-width);
63
+ border-radius: 4px;
64
+ box-sizing: border-box;
65
+ border: 1px solid rgba(0, 0, 0, 0.15);
66
+ background-color: white;
67
+ padding: 5px;
68
+ `;
69
+
70
+ const SelectItem = styled(RadixSelect.Item)`
71
+ user-select: none;
72
+ font-size: 1.125em;
73
+ padding: 4px 11px;
74
+ width: 100%;
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: space-between;
78
+
79
+ &:hover {
80
+ background-color: #e6f4ff;
81
+ }
82
+ &[data-disabled] {
83
+ color: rgba(0, 0, 0, 0.5);
84
+ }
85
+ `;
86
+
87
+ const SelectLabel = styled(RadixSelect.Label)`
88
+ color: rgba(0, 0, 0, 0.5);
89
+ font-size: 1em;
90
+ padding: 4px 11px;
91
+ margin-top: 8px;
92
+ `;
93
+
94
+ const SelectItemIndicator = styled(RadixSelect.ItemIndicator)`
95
+ right: 0;
96
+ width: 25px;
97
+ display: inline-flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ `;
101
+
102
+ const SelectSeparator = styled(RadixSelect.Separator)`
103
+ height: 1px;
104
+ width: 100%;
105
+ background-color: rgba(0, 0, 0, 0.15);
106
+ margin: 5px 0;
107
+ `;
108
+
109
+ export function Select(props: SelectProps) {
110
+ const {
111
+ placeholder,
112
+ value,
113
+ onSelect,
114
+ options,
115
+ disabled = false,
116
+ style,
117
+ } = props;
118
+
119
+ return (
120
+ <SelectRoot style={{ ...style }}>
121
+ <RadixSelect.Root
122
+ value={value}
123
+ onValueChange={onSelect}
124
+ disabled={disabled}
125
+ >
126
+ <SelectTrigger>
127
+ <RadixSelect.Value placeholder={placeholder} />
128
+ <RadixSelect.Icon asChild>
129
+ <FaChevronDown />
130
+ </RadixSelect.Icon>
131
+ </SelectTrigger>
132
+ <Portal>
133
+ <SelectContent position="popper">
134
+ <RadixSelect.ScrollUpButton>
135
+ <FaChevronUp />
136
+ </RadixSelect.ScrollUpButton>
137
+ <SelectViewport>
138
+ {options.map((group, groupIndex) => (
139
+ <Fragment key={groupIndex}>
140
+ {group.map((optionOrCategory, optionOrCategoryIndex) =>
141
+ 'options' in optionOrCategory ? (
142
+ <SelectGroup key={optionOrCategoryIndex}>
143
+ <SelectLabel>{optionOrCategory.label}</SelectLabel>
144
+ {optionOrCategory.options.map((option) => (
145
+ <SelectItem
146
+ key={option.value}
147
+ value={option.value}
148
+ disabled={option.disabled}
149
+ >
150
+ <RadixSelect.ItemText>
151
+ {option.label}
152
+ </RadixSelect.ItemText>
153
+ <SelectItemIndicator>
154
+ <FaCheck />
155
+ </SelectItemIndicator>
156
+ </SelectItem>
157
+ ))}
158
+ </SelectGroup>
159
+ ) : (
160
+ <SelectItem
161
+ key={optionOrCategory.value}
162
+ value={optionOrCategory.value}
163
+ disabled={optionOrCategory.disabled}
164
+ >
165
+ <RadixSelect.ItemText>
166
+ {optionOrCategory.label}
167
+ </RadixSelect.ItemText>
168
+ <SelectItemIndicator>
169
+ <FaCheck />
170
+ </SelectItemIndicator>
171
+ </SelectItem>
172
+ ),
173
+ )}
174
+ {groupIndex < options.length - 1 && <SelectSeparator />}
175
+ </Fragment>
176
+ ))}
177
+ </SelectViewport>
178
+ <RadixSelect.ScrollDownButton />
179
+ <RadixSelect.Arrow />
180
+ </SelectContent>
181
+ </Portal>
182
+ </RadixSelect.Root>
183
+ </SelectRoot>
184
+ );
185
+ }
@@ -1,2 +1,3 @@
1
1
  export * from './Input';
2
+ export * from './Checkbox';
2
3
  export * from './context';
@@ -3,6 +3,7 @@ import { css } from '@emotion/react';
3
3
  import {
4
4
  Children,
5
5
  createContext,
6
+ CSSProperties,
6
7
  isValidElement,
7
8
  ReactElement,
8
9
  ReactNode,
@@ -60,15 +61,16 @@ function splitChildren(children: ReactNode) {
60
61
  export interface TableProps {
61
62
  children?: ReactNode;
62
63
  border?: boolean;
64
+ style?: CSSProperties;
63
65
  }
64
66
 
65
67
  export function Table(props: TableProps) {
66
- const { border = true, children } = props;
68
+ const { border = true, style = {}, children } = props;
67
69
  const { Header, Rows } = splitChildren(children);
68
70
  const tableContextValue = useMemo(() => ({ border }), [border]);
69
71
  return (
70
72
  <TableContext.Provider value={tableContextValue}>
71
- <table>
73
+ <table style={style}>
72
74
  {Header}
73
75
  <tbody>{Rows}</tbody>
74
76
  </table>
@@ -114,15 +116,21 @@ function useRowChildren(children: ReactNode) {
114
116
  return { cells };
115
117
  }
116
118
 
117
- function Row({ children, border = false }: TableProps) {
119
+ function Row({ children, style = {}, border = false }: TableProps) {
118
120
  const { cells } = useRowChildren(children);
119
- return <tr style={{ border: border ? '1px solid black' : '' }}>{cells}</tr>;
121
+ return (
122
+ <tr style={{ border: border ? '1px solid black' : '', ...style }}>
123
+ {cells}
124
+ </tr>
125
+ );
120
126
  }
121
127
  Table.Row = Row;
122
- Table.Header = ({ children, border = false }: TableProps) => {
128
+ Table.Header = ({ children, style, border = false }: TableProps) => {
123
129
  return (
124
130
  <thead>
125
- <Table.Row border={border}>{children}</Table.Row>
131
+ <Table.Row border={border} style={style}>
132
+ {children}
133
+ </Table.Row>
126
134
  </thead>
127
135
  );
128
136
  };
@@ -0,0 +1,6 @@
1
+ html,
2
+ body,
3
+ #storybook-root {
4
+ height: 100%;
5
+ margin: 0;
6
+ }