Device Selector
The Device selector provides a device picker that can be filtered by integration.
⚠️ Note: This selector can provide part of the functionality of the
targetproperty (specificallydevice_id), but for more flexible target selection that supports multiple target types simultaneously, use thetargetproperty instead. See Target Selector for details.
Options
All device selectors accept these common metadata options:
default?: TDeviceId- Default selected devicedescription?: string- Human-readable description shown in the UIrequired?: boolean- Whether the field must be provided
Device-specific options (from ServiceListSelector["device"]):
integration?: TPlatformId- Filter devices by integration/platformmanufacturer?: string- Filter devices by manufacturermodel?: string- Filter devices by modelmultiple?: boolean- Whentrue, allows selecting multiple devices (returnsTDeviceId[])filter?: DeviceFilterSelector | DeviceFilterSelector[]- Additional device filter selector(s)entity?: EntityFilterSelector | EntityFilterSelector[]- Filter devices by their entities
Return Type
TDeviceIdwhenmultipleis not set orfalseTDeviceId[]whenmultiple: true
Example
import { TServiceParams } from "@digital-alchemy/core";
import { ServiceField } from "@digital-alchemy/synapse";
export function SynapseServiceCreate({
synapse,
context,
logger,
}: TServiceParams) {
synapse.service.create(
{
context,
description: "Configure a device",
fields: {
// Device selector filtered by integration
device: ServiceField.Device({
integration: "synapse",
description: "Device to configure",
required: true,
}),
},
},
async data => {
// data.device is typed as: TDeviceId
logger.info(`Configuring device: ${data.device}`);
}
);
}