UNPKG

@wordpress/components

Version:
118 lines (111 loc) 2.87 kB
/** * External dependencies */ import type { FocusEventHandler } from 'react'; /** * Internal dependencies */ import type { InputChangeCallback, InputControlProps, } from '../input-control/types'; import type { NumberControlProps } from '../number-control/types'; export type SelectSize = 'default' | 'small'; export type WPUnitControlUnit = { /** * The value for the unit, used in a CSS value (e.g `px`). */ value: string; /** * The label used in a dropdown selector for the unit. */ label: string; /** * Default value (quantity) for the unit, used when switching units. */ default?: number; /** * An accessible label used by screen readers. */ a11yLabel?: string; /** * A step value used when incrementing/decrementing the value. */ step?: number; }; export type UnitControlOnChangeCallback = InputChangeCallback< { data?: WPUnitControlUnit; } >; export type UnitSelectControlProps = { /** * Whether the control can be focused via keyboard navigation. * * @default true */ isUnitSelectTabbable?: boolean; /** * A callback function invoked when the value is changed. */ onChange?: UnitControlOnChangeCallback; /** * The size of the unit select. */ size?: SelectSize; /** * Current unit. */ unit?: string; /** * Available units to select from. * * @default CSS_UNITS */ units?: WPUnitControlUnit[]; }; export type UnitControlProps = Pick< InputControlProps, 'size' > & Omit< UnitSelectControlProps, 'size' | 'unit' > & Omit< NumberControlProps, 'spinControls' | 'suffix' | 'type' > & { /** * If `true`, the unit `<select>` is hidden. * * @default false */ disableUnits?: boolean; /** * If `true`, and the selected unit provides a `default` value, this value is set * when changing units. * * @default false */ isResetValueOnUnitChange?: boolean; /** * Callback when the `unit` changes. */ onUnitChange?: UnitControlOnChangeCallback; /** * Current unit. _Note: this prop is deprecated. Instead, provide a unit with a value through the `value` prop._ * * @deprecated */ unit?: string; /** * Current value. If passed as a string, the current unit will be inferred from this value. * For example, a `value` of "50%" will set the current unit to `%`. */ value?: string | number; /** * Callback when either the quantity or the unit inputs lose focus. */ onBlur?: FocusEventHandler< HTMLInputElement | HTMLSelectElement >; /** * Callback when either the quantity or the unit inputs gains focus. */ onFocus?: FocusEventHandler< HTMLInputElement | HTMLSelectElement >; /** * Do not throw a warning for the deprecated 36px default size. * For internal components of other components that already throw the warning. * * @ignore */ __shouldNotWarnDeprecated36pxSize?: boolean; };