/** * A convenience module for importing [Element](https://developers.arcgis.com/javascript/latest/references/core/form/elements/Element/) classes * when developing with [TypeScript](https://developers.arcgis.com/javascript/latest/get-started/#typescript). * For example, rather than importing form elements one at a time like this: * * ```js * import FieldElement from "@arcgis/core/form/elements/FieldElement.js"; * import GroupElement from "@arcgis/core/form/elements/GroupElement.js"; * import RelationshipElement from "@arcgis/core/form/elements/RelationshipElement.js"; * import TextElement from "@arcgis/core/form/elements/TextElement.js"; * ``` * * You can use this module to import them on a single line: * * ```js * import { FieldElement, GroupElement, RelationshipElement, TextElement } from "@arcgis/core/form/elements.js"; * ``` * * This module also allows you to implement [type guards](https://basarat.gitbook.io/typescript/type-system/typeguard) * on the form elements, making your code smarter. * * ```js * import { Element } from "@arcgis/core/form/elements.js"; * * function logFormElement(element: Element): void { * if (element.type === "field") { * console.log("Form element type is field"); * } * else { * // The compiler knows the content element must be `field | group | relationship` * console.log("The value is not a valid form element.") * } * } * ``` * * @since 4.16 * @see [FormTemplate](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/) * @see [FieldElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/) * @see [GroupElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/GroupElement/) * @see [RelationshipElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/RelationshipElement/) * @see [TextElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/TextElement/) * @see [UtilityNetworkAssociationsElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/UtilityNetworkAssociationsElement/) */ import type AttachmentElementClass from "./elements/AttachmentElement.js"; import type FieldElementClass from "./elements/FieldElement.js"; import type GroupElementClass from "./elements/GroupElement.js"; import type RelationshipElementClass from "./elements/RelationshipElement.js"; import type TextElementClass from "./elements/TextElement.js"; import type UtilityNetworkAssociationsElementClass from "./elements/UtilityNetworkAssociationsElement.js"; /** `FieldElement` defines how a feature layer's field participates in the form. */ export const FieldElement: typeof FieldElementClass; /** `FieldElement` defines how a feature layer's field participates in the form. */ export type FieldElement = FieldElementClass; /** * `GroupElement` defines a container that holds a set of form elements * that can be expanded, collapsed, or displayed together. */ export const GroupElement: typeof GroupElementClass; /** * `GroupElement` defines a container that holds a set of form elements * that can be expanded, collapsed, or displayed together. */ export type GroupElement = GroupElementClass; /** `RelationshipElement` defines how a relationship between [feature layers](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) and [Map.tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#tables) participates in the [FeatureForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/). */ export const RelationshipElement: typeof RelationshipElementClass; /** `RelationshipElement` defines how a relationship between [feature layers](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) and [Map.tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#tables) participates in the [FeatureForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/). */ export type RelationshipElement = RelationshipElementClass; /** `TextElement` form element is used to define descriptive text as an element within a layer or [FeatureForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/) [FormTemplate](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/) and can be used to aid those entering or updating information. */ export const TextElement: typeof TextElementClass; /** `TextElement` form element is used to define descriptive text as an element within a layer or [FeatureForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/) [FormTemplate](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/) and can be used to aid those entering or updating information. */ export type TextElement = TextElementClass; /** * `AttachmentElement` defines how one or more attachments can participate in the form. When present in the form, the user has the ability to upload an attachment specific to the form element. * * > [!CAUTION] * > * > The `attachment` element is not yet fully supported within the SDK and is not intended for use in development. Support will be added in an upcoming release. * * @internal */ export const AttachmentElement: typeof AttachmentElementClass; /** * `AttachmentElement` defines how one or more attachments can participate in the form. When present in the form, the user has the ability to upload an attachment specific to the form element. * * > [!CAUTION] * > * > The `attachment` element is not yet fully supported within the SDK and is not intended for use in development. Support will be added in an upcoming release. * * @internal */ export type AttachmentElement = AttachmentElementClass; /** `UtilityNetworkAssociationsElement` defines how utility network associations can participate in the form. */ export const UtilityNetworkAssociationsElement: typeof UtilityNetworkAssociationsElementClass; /** `UtilityNetworkAssociationsElement` defines how utility network associations can participate in the form. */ export type UtilityNetworkAssociationsElement = UtilityNetworkAssociationsElementClass;