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.
- package/dist/index.cjs.js +12 -12
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +667 -669
- package/dist/index.es.js.map +1 -1
- package/dist/pickers/ChannelPicker.js +4 -2
- package/dist/pickers/Select.js +2 -1
- package/dist/types/pickers/ChannelPicker.d.ts +1 -1
- package/dist/types/pickers/KnobPicker.d.ts +2 -1
- package/dist/types/pickers/ResponseCurvePicker.d.ts +2 -1
- package/dist/types/pickers/Select.d.ts +2 -1
- package/lib/pickers/ChannelPicker.tsx +8 -2
- package/lib/pickers/Select.tsx +6 -5
- package/package.json +2 -1
- package/stories/picker.stories.tsx +34 -54
|
@@ -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:
|
|
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 };
|
package/dist/pickers/Select.js
CHANGED
|
@@ -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 = (
|
|
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
|
|
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
|
|
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
|
|
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={
|
|
69
|
+
options={
|
|
70
|
+
value === undefined
|
|
71
|
+
? [...options, { value: undefined, label: '--' }]
|
|
72
|
+
: options
|
|
73
|
+
}
|
|
74
|
+
value={value}
|
|
69
75
|
ref={ref}
|
|
70
76
|
/>
|
|
71
77
|
)
|
package/lib/pickers/Select.tsx
CHANGED
|
@@ -39,10 +39,10 @@ interface CustomIndicatorsContainerProps<T>
|
|
|
39
39
|
PassedSelectProps
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
const CustomIndicatorsContainer = <T,>(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
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
|
|
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.
|
|
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
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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,
|