/* * Copyright (c) 2023 Nordic Semiconductor ASA * * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause */ import React from 'react'; import Dropdown, { type DropdownItem } from '../Dropdown/Dropdown'; import NumberInlineInput from '../InlineInput/NumberInlineInput'; import { type RangeOrValues } from '../Slider/range'; import BaseSlider from '../Slider/Slider'; import classNames from '../utils/classNames'; const Slider = ({ range, value, onChange, onChangeComplete, disabled, }: { range: RangeOrValues; value: number; onChange: (value: number) => void; onChangeComplete?: (value: number) => void; disabled?: boolean; }) => Array.isArray(range) ? ( onChange(range[i])]} onChangeComplete={() => onChangeComplete?.(value)} range={{ min: 0, max: range.length - 1, }} disabled={disabled} /> ) : ( onChangeComplete?.(value)} range={range} disabled={disabled} /> ); interface DropdownUnit { selectedItem: DropdownItem; items: DropdownItem[]; onUnitChange: (unit: DropdownItem) => void; } const isDropdownUnit = ( unit: React.ReactNode | DropdownUnit, ): unit is DropdownUnit => unit != null && Object.keys(unit).includes('selectedItem') && Object.keys(unit).includes('items') && Object.keys(unit).includes('onUnitChange'); export default ({ range, value, onChange, onChangeComplete, className, disabled, label, title, unit, showSlider = false, minWidth = false, inputMinSize, preAllocateInputSize, }: { range: RangeOrValues; value: number; onChange: (value: number) => void; onChangeComplete?: (value: number) => void; className?: string; disabled?: boolean; label: React.ReactNode; title?: string; showSlider?: boolean; unit?: React.ReactNode | DropdownUnit; minWidth?: boolean; inputMinSize?: number; preAllocateInputSize?: boolean; }) => (
{label}
{isDropdownUnit(unit) ? ( ) : ( unit )}
{showSlider && ( )}
);