@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
115 lines (113 loc) • 8.86 kB
TypeScript
import type Accessor from "../../../core/Accessor.js";
import type FormTemplate from "../../../form/FormTemplate.js";
import type EditorEditingCapabilities from "./EditorEditingCapabilities.js";
import type { EditorLayerUnion, LayerInfo } from "../types.js";
export interface EditorItemProperties extends Partial<Pick<EditorItem, "disabled" | "layer" | "layerInfo">> {}
/**
* A predominantly read-only editable item that corresponds to the feature being updated. This class is used by the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget to manage editing capabilities based on the provided layer and permissions set on it. It can be accessed through the Editor's [view model's editorItems](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/EditorViewModel/#editorItems). Although the returned collection is primarily read-only, it is possible to modify its [disabled](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/support/EditorItem/#disabled) property after construction. Also, it can be used in situations where custom functionality is used without the need to reference the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget directly. In this scenario, the item can be constructed and used to determine the editing capabilities for a specific layer.
*
* @since 4.30
* @see [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/)
* @see [EditorViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/EditorViewModel/)
* @example
* //Create the Editor widget with a feature layer and form template
* const editor = new Editor({
* view: view,
* layerInfos: [{
* layer: featureLayer, // references an existing feature layer
* formTemplate: formTemplate // references an existing form template
* }]
* });
* // Access the EditorItem from the Editor's view model
* const editorItem = editor.viewModel.editorItems.find(item => item.layer === featureLayer);
* //Check if the item is editable and if so, disable it
* const isEditable = editorItem?.editable;
* if (isEditable) {
* editorItem.disabled = true;
* }
* @example
* // This creates a new EditorItem instance without the need to reference the Editor widget. It determines the editing capabilities for a specific layer.
* const editorItem = new EditorItem({
* layer: featureLayer, // This property is required if creating a new instance of EditorItem
* layerInfo: featureLayerInfo
* });
*/
export default class EditorItem extends Accessor {
/**
* @example
* // This creates a new EditorItem instance without the need to reference the Editor widget. It determines the editing capabilities for a specific layer.
* const editorItem = new EditorItem({
* layer: featureLayer, // This property is required if creating a new instance of EditorItem
* layerInfo: featureLayerInfo
* });
*/
constructor(properties?: EditorItemProperties);
/** The current [editing capabilities](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/support/EditorEditingCapabilities/) for the provided layer. */
get capabilities(): EditorEditingCapabilities;
/**
* Indicates whether to override [editable](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/support/EditorItem/#editable) to `false`. This property is typically used for temporary UI purposes. For example, if an item needs to be visible in the UI, but not editable.
*
* @default false
*/
accessor disabled: boolean;
/**
* Indicates whether at least one edit operation is supported in [capabilities](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/support/EditorItem/#capabilities). It is primarily used for filtering layers eligible for editing. For UI purposes, specific permissions can still be confirmed using [capabilities](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/support/EditorItem/#capabilities). Additionally, [editable](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/support/EditorItem/#editable) takes into account the value for [disabled](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/support/EditorItem/#disabled) as a means to temporarily disable editing functionality.
*
* @default false
*/
get editable(): boolean;
/**
* A reference to the primary [FormTemplate](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/) in use. A form template set within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget's [layerInfos](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/types/#LayerInfo) takes priority over a form template set directly on a [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) or [SubtypeSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/SubtypeSublayer/).
*
* @see [Editor.layerInfos](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/types/#LayerInfo)
* @see [FeatureLayer.formTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#formTemplate)
* @see [SubtypeSublayer.formTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/support/SubtypeSublayer/#formTemplate)
*/
get formTemplate(): FormTemplate | null | undefined;
/**
* Indicates whether the primary [FormTemplate](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/) has an unknown (invalid) field. Editing is typically disabled in this scenario.
*
* @default false
* @see [FeatureFormViewModel.valid](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/FeatureFormViewModel/#valid)
*/
get hasInvalidFormTemplate(): boolean;
/**
* Indicates whether the associated layer is of type `Table`.
*
* @default false
* @see [FeatureLayer.isTable](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#isTable)
*/
get isTable(): boolean;
/** The layer currently being edited. */
accessor layer: EditorLayerUnion;
/**
* The [LayerInfo](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/types/#LayerInfo) for the provided layer.
*
* @see [Editor.layerInfos](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/#layerInfos)
*/
accessor layerInfo: LayerInfo | null | undefined;
/**
* Indicates whether the item supports starting a new [create features](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/CreateFeaturesWorkflow/) workflow based on specific conditions set within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/).
*
* @default false
*/
get supportsCreateFeaturesWorkflow(): boolean;
/** Indicates whether the item supports starting a new [merge features](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/MergeFeaturesWorkflow/) workflow based on specific conditions set within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/). Merge workflows require both `update` and `create` permissions, as they both create a new feature and update an existing feature. */
get supportsMergeFeaturesWorkflow(): boolean;
/** Indicates whether the item supports starting a new [split feature](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/SplitFeatureWorkflow/) workflow based on specific conditions set within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/). Split workflows require both `update` and `create` permissions, as they both create a new feature and update an existing feature. */
get supportsSplitFeatureWorkflow(): boolean;
/**
* Indicates whether the item supports starting a new [update workflow](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/UpdateWorkflow/) based on specific conditions set within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/).
* This includes allowing attachments even when `update` is not allowed, or preventing edits when the layer
* or its parent are not visible.
*
* @default false
*/
get supportsUpdateWorkflow(): boolean;
/**
* Indicates whether the associated layer and its parent are visible.
*
* @default false
*/
get visible(): boolean;
}