@nordicsemiconductor/pc-nrfconnect-shared 119.0.0 → 121.0.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.
- package/Changelog.md +27 -0
- package/coverage/cobertura-coverage.xml +235 -206
- package/nrfutil/moduleVersion.ts +25 -0
- package/nrfutil/sandbox.ts +2 -22
- package/package.json +1 -1
- package/src/App/shared.scss +0 -1
- package/src/Device/DeviceSelector/DeviceSelector.test.tsx +9 -9
- package/src/Device/DeviceSelector/DeviceSelector.tsx +2 -2
- package/src/Device/deviceLister.ts +7 -7
- package/src/Device/deviceSetup.ts +1 -0
- package/src/Dropdown/Dropdown.tsx +2 -2
- package/src/InlineInput/InlineInput.tsx +25 -3
- package/src/InlineInput/NumberInlineInput.tsx +24 -8
- package/src/InlineInput/NumberInputWithDropdown.tsx +132 -0
- package/src/index.ts +2 -0
- package/src/utils/packageJson.ts +1 -1
- package/typings/generated/nrfutil/moduleVersion.d.ts +1 -0
- package/typings/generated/nrfutil/moduleVersion.d.ts.map +1 -1
- package/typings/generated/nrfutil/sandbox.d.ts.map +1 -1
- package/typings/generated/src/Device/deviceSetup.d.ts.map +1 -1
- package/typings/generated/src/Dropdown/Dropdown.d.ts +2 -2
- package/typings/generated/src/Dropdown/Dropdown.d.ts.map +1 -1
- package/typings/generated/src/InlineInput/InlineInput.d.ts +3 -0
- package/typings/generated/src/InlineInput/InlineInput.d.ts.map +1 -1
- package/typings/generated/src/InlineInput/NumberInlineInput.d.ts +8 -4
- package/typings/generated/src/InlineInput/NumberInlineInput.d.ts.map +1 -1
- package/typings/generated/src/InlineInput/NumberInputWithDropdown.d.ts +19 -0
- package/typings/generated/src/InlineInput/NumberInputWithDropdown.d.ts.map +1 -0
- package/typings/generated/src/index.d.ts +2 -0
- package/typings/generated/src/index.d.ts.map +1 -1
package/nrfutil/moduleVersion.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import packageJson from '../src/utils/packageJson';
|
|
7
8
|
import {
|
|
8
9
|
Dependency,
|
|
9
10
|
isIncrementalVersion,
|
|
@@ -55,3 +56,27 @@ export const resolveModuleVersion = (
|
|
|
55
56
|
versions: Dependency[] = []
|
|
56
57
|
): Dependency | SubDependency | undefined =>
|
|
57
58
|
findTopLevel(module, versions) ?? findInDependencies(module, versions);
|
|
59
|
+
|
|
60
|
+
const overriddenVersion = (module: string) => {
|
|
61
|
+
const env = { ...process.env };
|
|
62
|
+
if (
|
|
63
|
+
process.env.NODE_ENV !== 'production' ||
|
|
64
|
+
(process.env.NODE_ENV === 'production' &&
|
|
65
|
+
!!process.env.NRF_OVERRIDE_NRFUTIL_SETTINGS)
|
|
66
|
+
) {
|
|
67
|
+
return env[`NRF_OVERRIDE_VERSION_${module.toLocaleUpperCase()}`];
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const versionFromPackageJson = (module: string) =>
|
|
72
|
+
packageJson().nrfConnectForDesktop.nrfutil?.[module][0];
|
|
73
|
+
|
|
74
|
+
const failToDetermineVersion = (module: string) => {
|
|
75
|
+
throw new Error(`No version specified for nrfutil-${module}`);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export const versionToInstall = (module: string, version?: string) =>
|
|
79
|
+
version ??
|
|
80
|
+
overriddenVersion(module) ??
|
|
81
|
+
versionFromPackageJson(module) ??
|
|
82
|
+
failToDetermineVersion(module);
|
package/nrfutil/sandbox.ts
CHANGED
|
@@ -10,7 +10,7 @@ import os from 'os';
|
|
|
10
10
|
import path from 'path';
|
|
11
11
|
|
|
12
12
|
import describeError from '../src/logging/describeError';
|
|
13
|
-
import
|
|
13
|
+
import { versionToInstall } from './moduleVersion';
|
|
14
14
|
import { getNrfutilLogger } from './nrfutilLogger';
|
|
15
15
|
import {
|
|
16
16
|
BackgroundTask,
|
|
@@ -492,30 +492,10 @@ export default async (
|
|
|
492
492
|
version?: string,
|
|
493
493
|
onProgress?: (progress: Progress, task?: Task) => void
|
|
494
494
|
) => {
|
|
495
|
-
const env = { ...process.env };
|
|
496
|
-
let overrideVersion: string | undefined;
|
|
497
|
-
if (
|
|
498
|
-
process.env.NODE_ENV !== 'production' ||
|
|
499
|
-
(process.env.NODE_ENV === 'production' &&
|
|
500
|
-
!!process.env.NRF_OVERRIDE_NRFUTIL_SETTINGS)
|
|
501
|
-
) {
|
|
502
|
-
overrideVersion =
|
|
503
|
-
env[`NRF_OVERRIDE_VERSION_${module.toLocaleUpperCase()}`] ??
|
|
504
|
-
undefined;
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
const moduleVersions = overrideVersion
|
|
508
|
-
? [overrideVersion]
|
|
509
|
-
: packageJson().nrfConnectForDesktop?.nrfutil?.[module];
|
|
510
|
-
|
|
511
|
-
if (!version && (!moduleVersions || moduleVersions.length === 0)) {
|
|
512
|
-
throw new Error(`No version specified for nrfutil-${module}`);
|
|
513
|
-
}
|
|
514
|
-
|
|
515
495
|
const sandbox = new NrfutilSandbox(
|
|
516
496
|
baseDir,
|
|
517
497
|
module,
|
|
518
|
-
|
|
498
|
+
versionToInstall(module, version)
|
|
519
499
|
);
|
|
520
500
|
|
|
521
501
|
onProgress?.(convertNrfutilProgress({ progressPercentage: 0 }));
|
package/package.json
CHANGED
package/src/App/shared.scss
CHANGED
|
@@ -5,12 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import React from 'react';
|
|
8
|
-
import {
|
|
9
|
-
fireEvent,
|
|
10
|
-
screen,
|
|
11
|
-
waitFor,
|
|
12
|
-
waitForElementToBeRemoved,
|
|
13
|
-
} from '@testing-library/react';
|
|
8
|
+
import { fireEvent, screen, waitFor } from '@testing-library/react';
|
|
14
9
|
|
|
15
10
|
import render from '../../../test/testrenderer';
|
|
16
11
|
import { addDevice, Device, removeDevice } from '../deviceSlice';
|
|
@@ -337,14 +332,19 @@ describe('DeviceSelector', () => {
|
|
|
337
332
|
|
|
338
333
|
fireEvent.click(screen.getByText('Select device'));
|
|
339
334
|
fireEvent.click(screen.getByText(testDevice.serialNumber));
|
|
340
|
-
|
|
335
|
+
|
|
336
|
+
await screen.findByText(
|
|
337
|
+
'Device must be programmed, do you want to proceed?'
|
|
338
|
+
);
|
|
339
|
+
|
|
341
340
|
fireEvent.click(screen.getByText('No'));
|
|
342
341
|
|
|
343
|
-
|
|
342
|
+
expect(
|
|
344
343
|
screen.queryByText(
|
|
345
344
|
'Device must be programmed, do you want to proceed?'
|
|
346
345
|
)
|
|
347
|
-
);
|
|
346
|
+
).toBeNull();
|
|
347
|
+
|
|
348
348
|
expect(screen.getAllByText(testDevice.serialNumber)).toHaveLength(2);
|
|
349
349
|
});
|
|
350
350
|
});
|
|
@@ -59,10 +59,10 @@ export default ({
|
|
|
59
59
|
const showSelectedDevice = deviceIsSelected || waitingToAutoReconnect;
|
|
60
60
|
|
|
61
61
|
const doDeselectDevice = useCallback(() => {
|
|
62
|
-
onDeviceDeselected();
|
|
63
|
-
dispatch(deselectDevice());
|
|
64
62
|
dispatch(clearWaitForDevice());
|
|
65
63
|
dispatch(setAutoSelectDevice(undefined));
|
|
64
|
+
onDeviceDeselected();
|
|
65
|
+
dispatch(deselectDevice());
|
|
66
66
|
}, [dispatch, onDeviceDeselected]);
|
|
67
67
|
|
|
68
68
|
// Ensure that useCallback is
|
|
@@ -143,17 +143,17 @@ const removeDeviceFromList =
|
|
|
143
143
|
): AppThunk =>
|
|
144
144
|
(dispatch, getState) => {
|
|
145
145
|
if (
|
|
146
|
-
removedDevice.serialNumber
|
|
146
|
+
removedDevice.serialNumber !==
|
|
147
147
|
getState().device.selectedSerialNumber
|
|
148
148
|
) {
|
|
149
|
-
|
|
149
|
+
dispatch(removeDevice(removedDevice));
|
|
150
|
+
onDeviceDisconnected(removedDevice);
|
|
151
|
+
return;
|
|
150
152
|
}
|
|
151
153
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
!getState().deviceAutoSelect.waitForDevice
|
|
156
|
-
) {
|
|
154
|
+
onDeviceDeselected();
|
|
155
|
+
|
|
156
|
+
if (!getState().deviceAutoSelect.waitForDevice) {
|
|
157
157
|
dispatch(closeDeviceSetupDialog());
|
|
158
158
|
}
|
|
159
159
|
|
|
@@ -11,9 +11,9 @@ import classNames from '../utils/classNames';
|
|
|
11
11
|
|
|
12
12
|
import styles from './Dropdown.module.scss';
|
|
13
13
|
|
|
14
|
-
export interface DropdownItem {
|
|
14
|
+
export interface DropdownItem<T = string> {
|
|
15
15
|
label: React.ReactNode;
|
|
16
|
-
value:
|
|
16
|
+
value: T;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export interface DropdownProps {
|
|
@@ -57,6 +57,9 @@ interface Props {
|
|
|
57
57
|
onKeyboardIncrementAction?: () => string;
|
|
58
58
|
onKeyboardDecrementAction?: () => string;
|
|
59
59
|
className?: string;
|
|
60
|
+
textAlignLeft?: boolean;
|
|
61
|
+
onValidityChanged?: (validity: boolean) => void;
|
|
62
|
+
preventDefaultInvalidStyle?: boolean;
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
const InlineInput = React.forwardRef<HTMLInputElement, Props>(
|
|
@@ -70,19 +73,28 @@ const InlineInput = React.forwardRef<HTMLInputElement, Props>(
|
|
|
70
73
|
onKeyboardIncrementAction = () => externalValue,
|
|
71
74
|
onKeyboardDecrementAction = () => externalValue,
|
|
72
75
|
className = '',
|
|
76
|
+
textAlignLeft = false,
|
|
77
|
+
onValidityChanged,
|
|
78
|
+
preventDefaultInvalidStyle,
|
|
73
79
|
},
|
|
74
80
|
ref
|
|
75
81
|
) => {
|
|
76
82
|
const [internalValue, setInternalValue] = useState(externalValue);
|
|
77
83
|
const [initialValue, setInitialValue] = useState(externalValue);
|
|
78
84
|
useSynchronisationIfChangedFromOutside(externalValue, setInternalValue);
|
|
85
|
+
|
|
79
86
|
const onChangeIfValid = (newValue: string) => {
|
|
80
87
|
if (disabled) {
|
|
81
88
|
return;
|
|
82
89
|
}
|
|
83
90
|
|
|
91
|
+
const validity = isValid(newValue);
|
|
92
|
+
if (onValidityChanged != null) {
|
|
93
|
+
onValidityChanged(validity);
|
|
94
|
+
}
|
|
95
|
+
|
|
84
96
|
setInternalValue(newValue);
|
|
85
|
-
if (
|
|
97
|
+
if (validity) {
|
|
86
98
|
if (externalValue !== newValue) {
|
|
87
99
|
onChange(newValue);
|
|
88
100
|
}
|
|
@@ -94,7 +106,9 @@ const InlineInput = React.forwardRef<HTMLInputElement, Props>(
|
|
|
94
106
|
return;
|
|
95
107
|
}
|
|
96
108
|
|
|
97
|
-
|
|
109
|
+
const validity = isValid(internalValue);
|
|
110
|
+
|
|
111
|
+
if (validity) {
|
|
98
112
|
if (initialValue !== internalValue) {
|
|
99
113
|
setInitialValue(internalValue);
|
|
100
114
|
onChangeComplete(internalValue);
|
|
@@ -102,6 +116,11 @@ const InlineInput = React.forwardRef<HTMLInputElement, Props>(
|
|
|
102
116
|
} else {
|
|
103
117
|
setInternalValue(externalValue);
|
|
104
118
|
}
|
|
119
|
+
|
|
120
|
+
// Should always end up valid in this case
|
|
121
|
+
if (onValidityChanged != null) {
|
|
122
|
+
onValidityChanged(true);
|
|
123
|
+
}
|
|
105
124
|
};
|
|
106
125
|
|
|
107
126
|
const onChangeCompleteIfValid = (event: React.KeyboardEvent) => {
|
|
@@ -144,8 +163,11 @@ const InlineInput = React.forwardRef<HTMLInputElement, Props>(
|
|
|
144
163
|
type="text"
|
|
145
164
|
className={classNames(
|
|
146
165
|
'inline-input',
|
|
147
|
-
|
|
166
|
+
preventDefaultInvalidStyle
|
|
167
|
+
? null
|
|
168
|
+
: isValid(internalValue) || 'invalid',
|
|
148
169
|
disabled && 'disabled',
|
|
170
|
+
textAlignLeft && 'tw-pl-2 tw-text-left',
|
|
149
171
|
className
|
|
150
172
|
)}
|
|
151
173
|
size={
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import React
|
|
7
|
+
import React from 'react';
|
|
8
8
|
|
|
9
9
|
import { isFactor } from '../Slider/factor';
|
|
10
10
|
import {
|
|
@@ -19,12 +19,16 @@ import InlineInput from './InlineInput';
|
|
|
19
19
|
|
|
20
20
|
import './number-inline-input.scss';
|
|
21
21
|
|
|
22
|
-
export interface
|
|
22
|
+
export interface NumberInlineInput {
|
|
23
23
|
disabled?: boolean;
|
|
24
24
|
value: number;
|
|
25
25
|
range: RangeOrValues;
|
|
26
|
+
className?: string;
|
|
26
27
|
onChange: (value: number) => void;
|
|
27
28
|
onChangeComplete?: (value: number) => void;
|
|
29
|
+
textAlignLeft?: boolean;
|
|
30
|
+
onValidityChanged?: (validity: boolean) => void;
|
|
31
|
+
preventDefaultInvalidStyle?: boolean;
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
const isInValues = (value: number, values: Values) => values.includes(value);
|
|
@@ -77,21 +81,24 @@ const changeValueStepwise = (
|
|
|
77
81
|
return nextValue != null ? nextValue : current;
|
|
78
82
|
};
|
|
79
83
|
|
|
80
|
-
|
|
84
|
+
export default ({
|
|
81
85
|
disabled,
|
|
82
86
|
value,
|
|
83
87
|
range,
|
|
88
|
+
className,
|
|
84
89
|
onChange,
|
|
85
90
|
onChangeComplete = () => {},
|
|
86
|
-
|
|
91
|
+
textAlignLeft,
|
|
92
|
+
onValidityChanged,
|
|
93
|
+
preventDefaultInvalidStyle,
|
|
94
|
+
}: NumberInlineInput) => {
|
|
87
95
|
useValidatedRangeOrValues(range);
|
|
88
96
|
|
|
89
97
|
return (
|
|
90
98
|
<InlineInput
|
|
91
|
-
className=
|
|
99
|
+
className={`${className} number-inline-input`}
|
|
92
100
|
disabled={disabled}
|
|
93
101
|
value={String(value)}
|
|
94
|
-
isValid={newValue => isValid(Number(newValue), range)}
|
|
95
102
|
onChange={newValue => onChange(Number(newValue))}
|
|
96
103
|
onChangeComplete={newValue => onChangeComplete(Number(newValue))}
|
|
97
104
|
onKeyboardIncrementAction={() =>
|
|
@@ -100,8 +107,17 @@ const NumberInlineInput: FC<Props> = ({
|
|
|
100
107
|
onKeyboardDecrementAction={() =>
|
|
101
108
|
changeValueStepwise(value, range, -1).toString()
|
|
102
109
|
}
|
|
110
|
+
textAlignLeft={textAlignLeft}
|
|
111
|
+
isValid={newValue => {
|
|
112
|
+
const validity = isValid(Number(newValue), range);
|
|
113
|
+
if (onValidityChanged != null) {
|
|
114
|
+
// Then propagate the validity back to parent
|
|
115
|
+
onValidityChanged(validity);
|
|
116
|
+
}
|
|
117
|
+
return validity;
|
|
118
|
+
}}
|
|
119
|
+
onValidityChanged={onValidityChanged}
|
|
120
|
+
preventDefaultInvalidStyle={preventDefaultInvalidStyle}
|
|
103
121
|
/>
|
|
104
122
|
);
|
|
105
123
|
};
|
|
106
|
-
|
|
107
|
-
export default NumberInlineInput;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023 Nordic Semiconductor ASA
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import React, { useState } from 'react';
|
|
8
|
+
import FormLabel from 'react-bootstrap/esm/FormLabel';
|
|
9
|
+
|
|
10
|
+
import { DropdownItem } from '../Dropdown/Dropdown';
|
|
11
|
+
import { RangeOrValues } from '../Slider/range';
|
|
12
|
+
import classNames from '../utils/classNames';
|
|
13
|
+
import NumberInlineInput from './NumberInlineInput';
|
|
14
|
+
|
|
15
|
+
import styles from '../Dropdown/Dropdown.module.scss';
|
|
16
|
+
|
|
17
|
+
export type NumberDropdownItem = DropdownItem<number>;
|
|
18
|
+
|
|
19
|
+
interface DropdownProps {
|
|
20
|
+
id?: string;
|
|
21
|
+
label?: React.ReactNode;
|
|
22
|
+
items: NumberDropdownItem[];
|
|
23
|
+
value: number;
|
|
24
|
+
onChange: (value: number) => void;
|
|
25
|
+
range: RangeOrValues;
|
|
26
|
+
numItemsBeforeScroll?: number;
|
|
27
|
+
className?: string;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
title?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export default ({
|
|
33
|
+
id,
|
|
34
|
+
label,
|
|
35
|
+
items,
|
|
36
|
+
value,
|
|
37
|
+
onChange,
|
|
38
|
+
range,
|
|
39
|
+
numItemsBeforeScroll = 0,
|
|
40
|
+
className = '',
|
|
41
|
+
disabled = false,
|
|
42
|
+
title,
|
|
43
|
+
}: DropdownProps) => {
|
|
44
|
+
const [isActive, setIsActive] = useState(false);
|
|
45
|
+
const [inlineValue, setInlineValue] = useState(value);
|
|
46
|
+
const [isValid, setIsValid] = useState(true);
|
|
47
|
+
|
|
48
|
+
const setNewValue = (newValue: number) => {
|
|
49
|
+
setInlineValue(newValue);
|
|
50
|
+
onChange(newValue);
|
|
51
|
+
setIsActive(false);
|
|
52
|
+
};
|
|
53
|
+
const onClickItem = (item: NumberDropdownItem) => {
|
|
54
|
+
if (item.value != null && typeof item.value === 'number') {
|
|
55
|
+
setNewValue(item.value);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
return (
|
|
60
|
+
<div
|
|
61
|
+
className={`tw-preflight tw-relative tw-w-full ${className}`}
|
|
62
|
+
onBlur={event => {
|
|
63
|
+
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
64
|
+
setIsActive(false);
|
|
65
|
+
}
|
|
66
|
+
}}
|
|
67
|
+
title={title}
|
|
68
|
+
>
|
|
69
|
+
<FormLabel className="tw-mb-1 tw-text-xs">{label}</FormLabel>
|
|
70
|
+
<div className="tw-flex tw-h-8 tw-w-full">
|
|
71
|
+
<NumberInlineInput
|
|
72
|
+
value={inlineValue}
|
|
73
|
+
range={range}
|
|
74
|
+
onChange={val => setInlineValue(val)}
|
|
75
|
+
onChangeComplete={val => setNewValue(val)}
|
|
76
|
+
className={`tw-x-2 tw-h-full tw-w-full tw-bg-gray-700 tw-text-white tw-underline tw-underline-offset-2 ${
|
|
77
|
+
isValid ? 'tw-decoration-white' : 'tw-decoration-red'
|
|
78
|
+
}`}
|
|
79
|
+
textAlignLeft
|
|
80
|
+
onValidityChanged={setIsValid}
|
|
81
|
+
preventDefaultInvalidStyle
|
|
82
|
+
/>
|
|
83
|
+
<button
|
|
84
|
+
id={id}
|
|
85
|
+
type="button"
|
|
86
|
+
className="tw-overflow-hidden tw-border-b tw-border-solid tw-border-b-gray-200 tw-bg-gray-700 tw-px-2 tw-text-white"
|
|
87
|
+
onClick={() => setIsActive(!isActive)}
|
|
88
|
+
disabled={disabled}
|
|
89
|
+
>
|
|
90
|
+
<span
|
|
91
|
+
className={`mdi mdi-chevron-down tw-text-lg ${classNames(
|
|
92
|
+
isActive && 'tw-rotate-180'
|
|
93
|
+
)}`}
|
|
94
|
+
/>
|
|
95
|
+
</button>
|
|
96
|
+
</div>
|
|
97
|
+
{/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- We need an interactive handler as described below */}
|
|
98
|
+
<div
|
|
99
|
+
onMouseDown={ev => {
|
|
100
|
+
// To prevent the dropdown from closing when users click on the scrollbar of the items
|
|
101
|
+
ev.preventDefault();
|
|
102
|
+
}}
|
|
103
|
+
style={
|
|
104
|
+
numItemsBeforeScroll > 0
|
|
105
|
+
? {
|
|
106
|
+
maxHeight: `${numItemsBeforeScroll * 24}px`,
|
|
107
|
+
}
|
|
108
|
+
: {}
|
|
109
|
+
}
|
|
110
|
+
data-height={
|
|
111
|
+
numItemsBeforeScroll > 0 &&
|
|
112
|
+
items.length > numItemsBeforeScroll
|
|
113
|
+
}
|
|
114
|
+
className={`tw-text-while tw-absolute tw-right-0 tw-z-10 tw-w-full tw-bg-gray-700 tw-p-0 ${classNames(
|
|
115
|
+
styles.content,
|
|
116
|
+
!isActive && 'tw-hidden'
|
|
117
|
+
)}`}
|
|
118
|
+
>
|
|
119
|
+
{items.map(item => (
|
|
120
|
+
<button
|
|
121
|
+
type="button"
|
|
122
|
+
className="tw-bg-transparent tw-clear-both tw-block tw-h-6 tw-w-full tw-whitespace-nowrap tw-border-0 tw-px-2 tw-py-1 tw-text-left tw-font-normal tw-text-white hover:tw-bg-gray-600 focus:tw-bg-gray-600"
|
|
123
|
+
key={item.value}
|
|
124
|
+
onClick={() => onClickItem(item)}
|
|
125
|
+
>
|
|
126
|
+
{item.label}
|
|
127
|
+
</button>
|
|
128
|
+
))}
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
);
|
|
132
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -48,6 +48,8 @@ export { Group, CollapsibleGroup } from './SidePanel/Group';
|
|
|
48
48
|
export { default as InlineInput } from './InlineInput/InlineInput';
|
|
49
49
|
export { default as NumberInlineInput } from './InlineInput/NumberInlineInput';
|
|
50
50
|
export { default as NumberInputSliderWithUnit } from './NumberInputWithSlider/NumberInputSliderWithUnit';
|
|
51
|
+
export { default as NumberInputWithDropdown } from './InlineInput/NumberInputWithDropdown';
|
|
52
|
+
export type { NumberDropdownItem } from './InlineInput/NumberInputWithDropdown';
|
|
51
53
|
|
|
52
54
|
export { default as Spinner } from './Spinner/Spinner';
|
|
53
55
|
|
package/src/utils/packageJson.ts
CHANGED
|
@@ -21,7 +21,7 @@ const parsedPackageJson = () => {
|
|
|
21
21
|
cache = parsed.data;
|
|
22
22
|
} else {
|
|
23
23
|
throw new Error(
|
|
24
|
-
`The env variable PACKAGE_JSON_OF_APP must be defined during bundling (through the bundler settings) with a valid package.json but wasn't. Fix this. Error: ${parsed.error.
|
|
24
|
+
`The env variable PACKAGE_JSON_OF_APP must be defined during bundling (through the bundler settings) with a valid package.json but wasn't. Fix this. Error: ${parsed.error.message}`
|
|
25
25
|
);
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -2,5 +2,6 @@ import { Dependency, SubDependency } from './sandboxTypes';
|
|
|
2
2
|
export declare const describeVersion: (version?: SubDependency | string) => string;
|
|
3
3
|
type KnownModule = 'nrfdl' | 'jprog' | 'JlinkARM';
|
|
4
4
|
export declare const resolveModuleVersion: (module: KnownModule, versions?: Dependency[]) => Dependency | SubDependency | undefined;
|
|
5
|
+
export declare const versionToInstall: (module: string, version?: string) => string;
|
|
5
6
|
export {};
|
|
6
7
|
//# sourceMappingURL=moduleVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleVersion.d.ts","sourceRoot":"","sources":["../../../nrfutil/moduleVersion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"moduleVersion.d.ts","sourceRoot":"","sources":["../../../nrfutil/moduleVersion.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,UAAU,EAIV,aAAa,EAChB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,eAAe,aAAc,aAAa,GAAG,MAAM,WAc/D,CAAC;AAEF,KAAK,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAsBlD,eAAO,MAAM,oBAAoB,WACrB,WAAW,aACT,UAAU,EAAE,KACvB,UAAU,GAAG,aAAa,GAAG,SAC0C,CAAC;AAoB3E,eAAO,MAAM,gBAAgB,WAAY,MAAM,YAAY,MAAM,WAI/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../nrfutil/sandbox.ts"],"names":[],"mappings":"AAcA,OAAO,EACH,cAAc,EACd,QAAQ,EACR,UAAU,EACV,aAAa,EAGb,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,OAAO,EACV,MAAM,gBAAgB,CAAC;AAcxB,QAAA,MAAM,UAAU,YAAa,MAAM,UAAU,MAAM,WAAW,MAAM;;;;;;;;;;;CAqBnE,CAAC;AAgDF,qBAAa,cAAc;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,CAAM;IAC1D,QAAQ,EAAE,QAAQ,CAAU;IAC5B,GAAG,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ5D,OAAO,CAAC,kBAAkB,CAOxB;IAEK,gBAAgB,+BAUrB;IAEK,kBAAkB,yBAmBvB;IAEK,cAAc,4BACO,QAAQ,SAAS,IAAI,KAAK,IAAI,gCAsBxD;IAEF,OAAO,CAAC,WAAW,CAqEjB;IAEK,cAAc,oBACR,MAAM,QACT,MAAM,EAAE,2BACU,QAAQ,SAAS,IAAI,KAAK,IAAI,0CAC5B,SAAS,KAAK,IAAI,0DACF,IAAI,4BACjC,eAAe;;;OAS1B;IAEN,OAAO,CAAC,WAAW,CAyEZ;IAEA,wBAAwB,oBAClB,MAAM,QACT,MAAM,EAAE;yBA2CO,MAAM,IAAI;;qCAKE,KAAK,KAAK,IAAI,qBA3Cf,KAAK,KAAK,IAAI;MAkDhD;IAEK,8BAA8B,eACxB,MAAM,2BACS,QAAQ,SAAS,IAAI,KAAK,IAAI,4BACzC,eAAe,SACtB,MAAM,EAAE,sCAahB;IAEK,kCAAkC,sBAC5B,MAAM,2BACS,QAAQ,SAAS,IAAI,KAAK,IAAI,4BACzC,eAAe,SACtB,MAAM,EAAE,4BAehB;IAEK,+BAA+B,sBACzB,MAAM,eACF,eAAe,SACtB,MAAM,EAAE,gBAehB;IAEK,SAAS,sBAAuB,UAAU,KAAK,IAAI,sBAzW5B,UAAU,KAAK,IAAI,IAiX/C;IAEK,WAAW,UAAW,QAAQ,UAEnC;CACL;kCAGY,MAAM,UACP,MAAM,YACJ,MAAM,2BACQ,QAAQ,SAAS,IAAI,KAAK,IAAI;AAJ1D,
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../nrfutil/sandbox.ts"],"names":[],"mappings":"AAcA,OAAO,EACH,cAAc,EACd,QAAQ,EACR,UAAU,EACV,aAAa,EAGb,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,OAAO,EACV,MAAM,gBAAgB,CAAC;AAcxB,QAAA,MAAM,UAAU,YAAa,MAAM,UAAU,MAAM,WAAW,MAAM;;;;;;;;;;;CAqBnE,CAAC;AAgDF,qBAAa,cAAc;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,CAAM;IAC1D,QAAQ,EAAE,QAAQ,CAAU;IAC5B,GAAG,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ5D,OAAO,CAAC,kBAAkB,CAOxB;IAEK,gBAAgB,+BAUrB;IAEK,kBAAkB,yBAmBvB;IAEK,cAAc,4BACO,QAAQ,SAAS,IAAI,KAAK,IAAI,gCAsBxD;IAEF,OAAO,CAAC,WAAW,CAqEjB;IAEK,cAAc,oBACR,MAAM,QACT,MAAM,EAAE,2BACU,QAAQ,SAAS,IAAI,KAAK,IAAI,0CAC5B,SAAS,KAAK,IAAI,0DACF,IAAI,4BACjC,eAAe;;;OAS1B;IAEN,OAAO,CAAC,WAAW,CAyEZ;IAEA,wBAAwB,oBAClB,MAAM,QACT,MAAM,EAAE;yBA2CO,MAAM,IAAI;;qCAKE,KAAK,KAAK,IAAI,qBA3Cf,KAAK,KAAK,IAAI;MAkDhD;IAEK,8BAA8B,eACxB,MAAM,2BACS,QAAQ,SAAS,IAAI,KAAK,IAAI,4BACzC,eAAe,SACtB,MAAM,EAAE,sCAahB;IAEK,kCAAkC,sBAC5B,MAAM,2BACS,QAAQ,SAAS,IAAI,KAAK,IAAI,4BACzC,eAAe,SACtB,MAAM,EAAE,4BAehB;IAEK,+BAA+B,sBACzB,MAAM,eACF,eAAe,SACtB,MAAM,EAAE,gBAehB;IAEK,SAAS,sBAAuB,UAAU,KAAK,IAAI,sBAzW5B,UAAU,KAAK,IAAI,IAiX/C;IAEK,WAAW,UAAW,QAAQ,UAEnC;CACL;kCAGY,MAAM,UACP,MAAM,YACJ,MAAM,2BACQ,QAAQ,SAAS,IAAI,KAAK,IAAI;AAJ1D,wBAqBE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deviceSetup.d.ts","sourceRoot":"","sources":["../../../../src/Device/deviceSetup.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK;QACpC,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,CACX,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,KACvD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7C,EAAE,CAAC;IACJ,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,CAC5C,SAAS,EACT,OAAO,CAAC;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;KAC1B,CAAC,CACL,CAAC;IACF,4BAA4B,EAAE,CAC1B,MAAM,EAAE,MAAM,KACb,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,aAAa,WAEV,MAAM,qBACK,iBAAiB,sBAChB,MAAM,KAAK,IAAI,oBACjB,OAAO,KAAK,IAAI,+EAGnC,SAAS,SAAS,EAAE,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"deviceSetup.d.ts","sourceRoot":"","sources":["../../../../src/Device/deviceSetup.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK;QACpC,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,CACX,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,KACvD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7C,EAAE,CAAC;IACJ,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,CAC5C,SAAS,EACT,OAAO,CAAC;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;KAC1B,CAAC,CACL,CAAC;IACF,4BAA4B,EAAE,CAC1B,MAAM,EAAE,MAAM,KACb,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,aAAa,WAEV,MAAM,qBACK,iBAAiB,sBAChB,MAAM,KAAK,IAAI,oBACjB,OAAO,KAAK,IAAI,+EAGnC,SAAS,SAAS,EAAE,QAAQ,IAAI,CAAC,CAwJnC,CAAC;AAEN,eAAO,MAAM,WAAW,WAER,MAAM,qBACK,iBAAiB,4BACV,MAAM,KAAK,IAAI,oBACvB,MAAM,IAAI,KAC7B,SAAS,SAAS,CA6BhB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../../src/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAOxC,MAAM,WAAW,YAAY;
|
|
1
|
+
{"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../../src/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAOxC,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,MAAM;IACpC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;mHAWE,aAAa;AAThB,wBAkFE"}
|
|
@@ -9,6 +9,9 @@ interface Props {
|
|
|
9
9
|
onKeyboardIncrementAction?: () => string;
|
|
10
10
|
onKeyboardDecrementAction?: () => string;
|
|
11
11
|
className?: string;
|
|
12
|
+
textAlignLeft?: boolean;
|
|
13
|
+
onValidityChanged?: (validity: boolean) => void;
|
|
14
|
+
preventDefaultInvalidStyle?: boolean;
|
|
12
15
|
}
|
|
13
16
|
declare const InlineInput: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLInputElement>>;
|
|
14
17
|
export default InlineInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineInput.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/InlineInput.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,qBAAqB,CAAC;AAwC7B,UAAU,KAAK;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,yBAAyB,CAAC,EAAE,MAAM,MAAM,CAAC;IACzC,yBAAyB,CAAC,EAAE,MAAM,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"InlineInput.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/InlineInput.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,qBAAqB,CAAC;AAwC7B,UAAU,KAAK;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,yBAAyB,CAAC,EAAE,MAAM,MAAM,CAAC;IACzC,yBAAyB,CAAC,EAAE,MAAM,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,QAAA,MAAM,WAAW,gFA6HhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
import { RangeOrValues } from '../Slider/range';
|
|
3
3
|
import './number-inline-input.scss';
|
|
4
|
-
export interface
|
|
4
|
+
export interface NumberInlineInput {
|
|
5
5
|
disabled?: boolean;
|
|
6
6
|
value: number;
|
|
7
7
|
range: RangeOrValues;
|
|
8
|
+
className?: string;
|
|
8
9
|
onChange: (value: number) => void;
|
|
9
10
|
onChangeComplete?: (value: number) => void;
|
|
11
|
+
textAlignLeft?: boolean;
|
|
12
|
+
onValidityChanged?: (validity: boolean) => void;
|
|
13
|
+
preventDefaultInvalidStyle?: boolean;
|
|
10
14
|
}
|
|
11
|
-
declare const
|
|
12
|
-
export default
|
|
15
|
+
declare const _default: ({ disabled, value, range, className, onChange, onChangeComplete, textAlignLeft, onValidityChanged, preventDefaultInvalidStyle, }: NumberInlineInput) => JSX.Element;
|
|
16
|
+
export default _default;
|
|
13
17
|
//# sourceMappingURL=NumberInlineInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberInlineInput.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/NumberInlineInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NumberInlineInput.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/NumberInlineInput.tsx"],"names":[],"mappings":";AASA,OAAO,EAIH,aAAa,EAGhB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,4BAA4B,CAAC;AAEpC,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACxC;2JA8DE,iBAAiB;AAVpB,wBAuCE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DropdownItem } from '../Dropdown/Dropdown';
|
|
3
|
+
import { RangeOrValues } from '../Slider/range';
|
|
4
|
+
export type NumberDropdownItem = DropdownItem<number>;
|
|
5
|
+
interface DropdownProps {
|
|
6
|
+
id?: string;
|
|
7
|
+
label?: React.ReactNode;
|
|
8
|
+
items: NumberDropdownItem[];
|
|
9
|
+
value: number;
|
|
10
|
+
onChange: (value: number) => void;
|
|
11
|
+
range: RangeOrValues;
|
|
12
|
+
numItemsBeforeScroll?: number;
|
|
13
|
+
className?: string;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
title?: string;
|
|
16
|
+
}
|
|
17
|
+
declare const _default: ({ id, label, items, value, onChange, range, numItemsBeforeScroll, className, disabled, title, }: DropdownProps) => JSX.Element;
|
|
18
|
+
export default _default;
|
|
19
|
+
//# sourceMappingURL=NumberInputWithDropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberInputWithDropdown.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/NumberInputWithDropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEtD,UAAU,aAAa;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;0HAaE,aAAa;AAXhB,wBAoGE"}
|
|
@@ -36,6 +36,8 @@ export { Group, CollapsibleGroup } from './SidePanel/Group';
|
|
|
36
36
|
export { default as InlineInput } from './InlineInput/InlineInput';
|
|
37
37
|
export { default as NumberInlineInput } from './InlineInput/NumberInlineInput';
|
|
38
38
|
export { default as NumberInputSliderWithUnit } from './NumberInputWithSlider/NumberInputSliderWithUnit';
|
|
39
|
+
export { default as NumberInputWithDropdown } from './InlineInput/NumberInputWithDropdown';
|
|
40
|
+
export type { NumberDropdownItem } from './InlineInput/NumberInputWithDropdown';
|
|
39
41
|
export { default as Spinner } from './Spinner/Spinner';
|
|
40
42
|
export { default as MasonryLayout } from './MasonryLayout/MasonryLayout';
|
|
41
43
|
export { default as sendFeedback } from './Feedback/sendFeedback';
|