@pega/custom-dx-components
Version:
Utility for building custom UI components
47 lines (42 loc) • 1.91 kB
TypeScript
import {PConnect } from '@pega/pcore-pconnect-typedefs';
// PConnProps.d.ts
// This gives us a place to have each component (which is most DX Components) that is
// expected to have a getPConnect extend its props (from BaseProps)
// such that every component will be expected to have a getPConnect() function
// that returns a PConnect object. (new/better way of doing .propTypes).
// This PConnProps can be extended to include other props that we know are in every component
export interface PConnProps {
// getPConnect should exist for every C11n component. (add @ts-ignore in special cases where it isn't)
getPConnect: () => typeof PConnect;
// Allow any/all other key/value pairs in the BaseProps for now
// TODO: refine which other props are always expected for various component
// types and consider further interface "subclassing". For example, we may
// want to create a "BasePropsForm" that gives guidance on required, readonly, etc.
// and any other props that every Form component expects.
// For example, see the PConnFieldProps below.
// NOTE: if you uncomment the line below, the PConnProps type will allow
// otherwise undefined types to appear. This can be helpful for debugging
// or when adding new components whose types aren't yet known.
// [key: string]: any;
}
// PConnFieldProps extends PConnProps to bring in the common properties that are
// associated with most field components (ex: Dropdown, TextInput, etc.) in the
// components/field directory
export interface PConnFieldProps extends PConnProps {
label: string,
required: boolean,
disabled: boolean,
value: any,
validatemessage: string,
status?: string,
onChange?: any,
onBlur?: any,
readOnly: boolean,
testId: string,
helperText: string,
displayMode?: string,
hideLabel: boolean,
placeholder?: string,
fieldMetadata?: any,
additionalProps?: any
}