zds-pickers 4.0.20 → 4.0.21

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.
@@ -15,7 +15,9 @@ const filterOptions = (option, input) => {
15
15
  }
16
16
  return true;
17
17
  };
18
- const ChannelPicker = forwardRef(({ className, ...rest }, ref) => {
19
- return (_jsx(Select, { ...rest, className: cl(className, 'channel-picker'), filterOptions: filterOptions, formatOptionLabel: formatOptionLabel, options: options, ref: ref }));
18
+ const ChannelPicker = forwardRef(({ className, value = undefined, ...rest }, ref) => {
19
+ return (_jsx(Select, { ...rest, className: cl(className, 'channel-picker'), filterOptions: filterOptions, formatOptionLabel: formatOptionLabel, options: value === undefined
20
+ ? [...options, { value: undefined, label: '--' }]
21
+ : options, value: value, ref: ref }));
20
22
  });
21
23
  export { ChannelPicker };
@@ -3,7 +3,8 @@ import { Children, forwardRef, isValidElement, useCallback, useMemo, } from 'rea
3
3
  import ReactSelect, { components as originalComponents, } from 'react-select';
4
4
  import { omit } from '../utils';
5
5
  const { IndicatorsContainer, Placeholder, ValueContainer } = originalComponents;
6
- const CustomIndicatorsContainer = ({ children, ...rest }) => {
6
+ const CustomIndicatorsContainer = (props) => {
7
+ const { children, ...rest } = props;
7
8
  const actionButton = rest.selectProps?.actionButton;
8
9
  return (_jsx(IndicatorsContainer, { ...rest, children: _jsxs("div", { onMouseDown: e => {
9
10
  e.stopPropagation();
@@ -1,6 +1,6 @@
1
1
  import type { GroupBase, SelectInstance } from 'react-select';
2
2
  import type { Option, SelectProps } from './Select';
3
- type Channel = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
3
+ type Channel = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | undefined;
4
4
  type ChannelPickerProps = Omit<SelectProps<Channel>, 'options'>;
5
5
  type ChannelPickerRef = SelectInstance<Option<Channel>, false, GroupBase<Option<Channel>>>;
6
6
  declare const ChannelPicker: import("react").ForwardRefExoticComponent<ChannelPickerProps & import("react").RefAttributes<SelectInstance<Option<Channel>, false, GroupBase<Option<Channel>>>>>;
@@ -13,6 +13,7 @@ type KnobPickerProps = SelectProps<number> & {
13
13
  };
14
14
  type KnobPickerRef = SelectInstance<Option<number>, false, GroupBase<Option<number>>>;
15
15
  declare const KnobPicker: import("react").ForwardRefExoticComponent<Partial<import("node_modules/react-select/dist/declarations/src/components").SelectComponents<Option<number>, false, GroupBase<Option<number>>>> & {
16
+ actionButton?: React.ReactNode;
16
17
  className?: string;
17
18
  components?: object;
18
19
  disabled?: boolean;
@@ -36,7 +37,7 @@ declare const KnobPicker: import("react").ForwardRefExoticComponent<Partial<impo
36
37
  placeholder?: React.ReactNode;
37
38
  };
38
39
  shrinkLabel?: boolean;
39
- value: number;
40
+ value?: number | undefined;
40
41
  } & {
41
42
  highToLow?: boolean;
42
43
  includeLabel?: boolean;
@@ -8,6 +8,7 @@ type ResponseCurvePickerProps = SelectProps<Curve> & {
8
8
  };
9
9
  type ResponseCurvePickerRef = SelectInstance<Option<Curve>, false, GroupBase<Option<Curve>>>;
10
10
  declare const ResponseCurvePicker: import("react").ForwardRefExoticComponent<Partial<import("node_modules/react-select/dist/declarations/src/components").SelectComponents<Option<Curve>, false, GroupBase<Option<Curve>>>> & {
11
+ actionButton?: React.ReactNode;
11
12
  className?: string;
12
13
  components?: object;
13
14
  disabled?: boolean;
@@ -31,7 +32,7 @@ declare const ResponseCurvePicker: import("react").ForwardRefExoticComponent<Par
31
32
  placeholder?: React.ReactNode;
32
33
  };
33
34
  shrinkLabel?: boolean;
34
- value: Curve;
35
+ value?: Curve | undefined;
35
36
  } & {
36
37
  inverted?: boolean;
37
38
  Tooltip?: React.FC<TooltipProps>;
@@ -10,6 +10,7 @@ type Option<T> = {
10
10
  value: T;
11
11
  };
12
12
  type SelectProps<T> = SelectComponentsConfig<Option<T>, false, GroupBase<Option<T>>> & {
13
+ actionButton?: React.ReactNode;
13
14
  className?: string;
14
15
  components?: object;
15
16
  disabled?: boolean;
@@ -29,7 +30,7 @@ type SelectProps<T> = SelectComponentsConfig<Option<T>, false, GroupBase<Option<
29
30
  preserveMenuWidth?: boolean;
30
31
  selectProps?: PassedSelectProps;
31
32
  shrinkLabel?: boolean;
32
- value: Option<T>['value'];
33
+ value?: Option<T>['value'];
33
34
  };
34
35
  declare const Select: <T>(props: SelectProps<T> & {
35
36
  ref?: React.ForwardedRef<SelectInstance<Option<T>, false, GroupBase<Option<T>>>>;
@@ -22,6 +22,7 @@ type Channel =
22
22
  | 13
23
23
  | 14
24
24
  | 15
25
+ | undefined
25
26
 
26
27
  interface FormatOptionLabelContext {
27
28
  context: 'menu' | 'value'
@@ -58,14 +59,19 @@ const filterOptions = (option: Option<Channel>, input: string) => {
58
59
  const ChannelPicker = forwardRef<
59
60
  SelectInstance<Option<Channel>, false, GroupBase<Option<Channel>>>,
60
61
  ChannelPickerProps
61
- >(({ className, ...rest }, ref) => {
62
+ >(({ className, value = undefined, ...rest }, ref) => {
62
63
  return (
63
64
  <Select
64
65
  {...rest}
65
66
  className={cl(className, 'channel-picker')}
66
67
  filterOptions={filterOptions}
67
68
  formatOptionLabel={formatOptionLabel}
68
- options={options}
69
+ options={
70
+ value === undefined
71
+ ? [...options, { value: undefined, label: '--' }]
72
+ : options
73
+ }
74
+ value={value}
69
75
  ref={ref}
70
76
  />
71
77
  )
@@ -39,10 +39,10 @@ interface CustomIndicatorsContainerProps<T>
39
39
  PassedSelectProps
40
40
  }
41
41
 
42
- const CustomIndicatorsContainer = <T,>({
43
- children,
44
- ...rest
45
- }: CustomIndicatorsContainerProps<T>) => {
42
+ const CustomIndicatorsContainer = <T,>(
43
+ props: CustomIndicatorsContainerProps<T>,
44
+ ) => {
45
+ const { children, ...rest } = props
46
46
  const actionButton = rest.selectProps?.actionButton
47
47
 
48
48
  return (
@@ -92,6 +92,7 @@ type SelectProps<T> = SelectComponentsConfig<
92
92
  false,
93
93
  GroupBase<Option<T>>
94
94
  > & {
95
+ actionButton?: React.ReactNode
95
96
  className?: string
96
97
  components?: object
97
98
  disabled?: boolean
@@ -110,7 +111,7 @@ type SelectProps<T> = SelectComponentsConfig<
110
111
  preserveMenuWidth?: boolean
111
112
  selectProps?: PassedSelectProps
112
113
  shrinkLabel?: boolean
113
- value: Option<T>['value']
114
+ value?: Option<T>['value']
114
115
  }
115
116
 
116
117
  const Select = forwardRef(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zds-pickers",
3
- "version": "4.0.20",
3
+ "version": "4.0.21",
4
4
  "main": "./dist/index.cjs.js",
5
5
  "module": "./dist/index.es.js",
6
6
  "types": "./dist/types/index.d.ts",
@@ -60,6 +60,7 @@
60
60
  "prop-types": "15.8.1",
61
61
  "react-dom": "18.2.0",
62
62
  "react": "18.2.0",
63
+ "rc-slider": "11.1.8",
63
64
  "storybook": "8.5.0",
64
65
  "typescript": "5.7.3",
65
66
  "vite": "6.0.7",
@@ -46,6 +46,16 @@ const ChannelPickerStory: StoryObj<typeof ChannelPicker> = {
46
46
  },
47
47
  }
48
48
 
49
+ const ChannelPickerUndefinedStory: StoryObj<typeof ChannelPicker> = {
50
+ render: args => <ChannelPicker {...args} />,
51
+ args: {
52
+ disabled: false,
53
+ label: 'Channel',
54
+ shrinkLabel: false,
55
+ value: undefined,
56
+ },
57
+ }
58
+
49
59
  const ChannelMappingPickerStory: StoryObj<typeof ChannelMappingPicker> = {
50
60
  render: args => <ChannelMappingPicker {...args} />,
51
61
  args: {
@@ -155,22 +165,33 @@ const NotePickerStory3: StoryObj<typeof NotePicker> = {
155
165
  isMelodicMode: false,
156
166
  label: 'Action button',
157
167
  mapping: gmMapping,
158
- selectProps: {
159
- actionButton: (
160
- <button
161
- type="button"
162
- onClick={() => {
163
- window.alert('click')
164
- }}>
165
- ?
166
- </button>
167
- ),
168
- },
168
+ actionButton: (
169
+ <button
170
+ type="button"
171
+ onClick={() => {
172
+ window.alert('click')
173
+ }}>
174
+ ?
175
+ </button>
176
+ ),
169
177
  shrinkLabel: false,
170
178
  value: 38,
171
179
  },
172
180
  }
173
181
 
182
+ const NotePickerStory4: StoryObj<typeof NotePicker> = {
183
+ render: args => <NotePicker {...args} />,
184
+ args: {
185
+ channel: 0,
186
+ disabled: false,
187
+ isMelodicMode: false,
188
+ label: 'Note #',
189
+ mapping: gmMapping,
190
+ shrinkLabel: false,
191
+ value: undefined,
192
+ },
193
+ }
194
+
174
195
  const OctavePlayerStory: StoryObj<typeof OctavePlayer> = {
175
196
  render: args => <OctavePlayer {...args} />,
176
197
  args: {
@@ -184,49 +205,6 @@ const OctavePlayerStory: StoryObj<typeof OctavePlayer> = {
184
205
  },
185
206
  }
186
207
 
187
- // # NotePicker
188
- // <Canvas withToolbar>
189
- // <Story
190
- // height={120}
191
- // name="NotePicker"
192
- // >
193
- // <NotePicker
194
- // channel={number('channel', 0, 'NotePicker')}
195
- // disabled={boolean('disabled', false, 'NotePicker')}
196
- // isMelodicMode={boolean('isMelodicMode', false, 'NotePicker')}
197
- // label={text('label', 'Note #', 'NotePicker')}
198
- // mapping={gmMapping}
199
- // onChange={action('handleChange')}
200
- // shrinkLabel={boolean('shrinkLabel', false, 'NotePicker')}
201
- // value={number('value', 38, {}, 'NotePicker')}
202
- // />
203
- // <br />
204
- // <NotePicker
205
- // channel={number('channel', 0, 'NotePicker2')}
206
- // disabled={boolean('disabled', false, 'NotePicker2')}
207
- // isMelodicMode={boolean('isMelodicMode', false, 'NotePicker2')}
208
- // label="No mapping"
209
- // onChange={action('handleChange2')}
210
- // shrinkLabel={boolean('shrinkLabel', false, 'NotePicker')}
211
- // value={number('value', 38, {}, 'NotePicker2')}
212
- // />
213
- // <br />
214
- // <NotePicker
215
- // channel={number('channel', 0, 'NotePicker3')}
216
- // disabled={boolean('disabled', false, 'NotePicker3')}
217
- // isMelodicMode={boolean('isMelodicMode', false, 'NotePicker3')}
218
- // label="Action button"
219
- // mapping={gmMapping}
220
- // onChange={action('handleChange3')}
221
- // selectProps={{actionButton:<button onClick={e=>{
222
- // console.log('click')
223
- // }}>?</button>}}
224
- // shrinkLabel={boolean('shrinkLabel', false, 'NotePicker')}
225
- // value={number('value', 38, {}, 'NotePicker3')}
226
- // />
227
- // </Story>
228
- // </Canvas>
229
-
230
208
  const PianoPickerStory: StoryObj<typeof PianoPicker> = {
231
209
  render: args => <PianoPicker {...args} />,
232
210
  args: {
@@ -293,6 +271,7 @@ const ValuePickerStory: StoryObj<typeof ValuePicker> = {
293
271
 
294
272
  export {
295
273
  ChannelPickerStory as ChannelPicker,
274
+ ChannelPickerUndefinedStory as ChannelPickerNoValue,
296
275
  ChannelMappingPickerStory as ChannelMappingPicker,
297
276
  CCPickerStory as ContinuousChangePicker,
298
277
  KnobStory as Knob,
@@ -302,6 +281,7 @@ export {
302
281
  NotePickerStory1 as NotePickerSimple,
303
282
  NotePickerStory2 as NotePickerNoMapping,
304
283
  NotePickerStory3 as NotePickerActionButton,
284
+ NotePickerStory4 as NotePickerNoValue,
305
285
  OctavePlayerStory as OctavePlayer,
306
286
  PianoPickerStory as PianoPicker,
307
287
  PolarityPickerStory as PolarityPicker,