@arcgis/map-components
Version:
ArcGIS Map Components
207 lines (206 loc) • 9.65 kB
TypeScript
/// <reference path="../../index.d.ts" />
import type WebMap from "@arcgis/core/WebMap.js";
import type WebScene from "@arcgis/core/WebScene.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { ArcgisReferenceElement, IconName, HeadingLevel } from "../types.js";
import type { T9nMeta } from "@arcgis/lumina/controllers";
import type { MapViewOrSceneView } from "@arcgis/core/views/MapViewOrSceneView.js";
import type { GoToOverride } from "@arcgis/core/widgets/support/types.js";
/**
* The Floor Filter component simplifies visualization of GIS data for a specific floor of a
* building in your application. It allows you to filter down the floor plan data displayed in your
* [arcgis-map](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-map/) or [arcgis-scene](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-scene/) to a [site](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-floor-filter/#site), a [facility](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-floor-filter/#facility) in the site,
* or a [level](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-floor-filter/#level) in the facility.
*
* To visualize your data based on [site](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-floor-filter/#site), [facility](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-floor-filter/#facility), or [level](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-floor-filter/#level), your map must contain the related
* floor plan layers, with features linked together in a floor plan hierarchy.
* Once you define your map as floor-aware in the map properties, the interactive, on-screen
* Floor Filter component appears and can be used to explore the floor-aware data based on the
* configured site, facility, and levels layers.
* The Floor Filter component currently supports
* [FeatureLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/),
* [SceneLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/) and
* [MapImageLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/MapImageLayer/) (map services).
*
* The component can also be used alongside other filtering functionalities, such as definition queries,
* selection, range, and time, to further control visualization.
* For example, you may want to visualize all of the features on a specific level in a facility,
* or all the office units within a range of levels in a facility.
*
* **Note**
*
* If a default site, facility, or level is selected in the floor filter when sharing a floor-aware web map from ArcGIS Pro,
* it will also be the default selection within the Floor Filter component.
*
* @since 4.28
* @example
* ```html
* <arcgis-map itemId="f133a698536f44c8884ad81f80b6cfc7">
* <arcgis-floor-filter slot="top-right"/>
* </arcgis-map>
* ```
*/
export abstract class ArcgisFloorFilter extends LitElement {
/**
* If true, the component will not be destroyed automatically when it is
* disconnected from the document. This is useful when you want to move the
* component to a different place on the page, or temporarily hide it. If this
* is set, make sure to call the [destroy()](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-floor-filter/#destroy) method when you are done to
* prevent memory leaks.
*
* @default false
*/
accessor autoDestroyDisabled: boolean;
/** The currently selected facility. */
accessor facility: string | null | undefined;
/**
* This function provides the ability to override either the [arcgis-map.goTo()](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-map/#goTo) or [arcgis-scene.goTo()](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-scene/#goTo) methods.
*
* @since 5.0
* @example
* ```js
* component.goToOverride = function(view, goToParams) {
* goToParams.options = {
* duration: updatedDuration
* };
* return view.goTo(goToParams.target, goToParams.options);
* };
* ```
*/
accessor goToOverride: GoToOverride | null | undefined;
/**
* Indicates the heading level to use for the headings separating floors in buildings.
* By default, the building name is rendered
* as a level 2 heading (e.g. `<h2>Building name</h2>`). Depending on the component's placement
* in your app, you may need to adjust this heading for proper semantics. This is
* important for meeting accessibility standards.
*
* @default 2
* @since 4.20
* @see [Heading Elements](https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements)
* @example
* // building headings will render as an <h3>
* floorFilter.headingLevel = 3;
*/
accessor headingLevel: HeadingLevel;
/**
* Icon which represents the component.
* Typically used when the component is controlled by another component (e.g. by the Expand component).
*
* @default "urban-model"
* @since 4.27
* @see [Calcite Icons](https://developers.arcgis.com/calcite-design-system/icons/)
*/
accessor icon: IconName | undefined;
/**
* The component's default label.
*
* @since 4.11
*/
accessor label: string | undefined;
/** The currently selected floor level. */
accessor level: string | null | undefined;
/**
* Determines if the component is expanded or collapsed.
* If the value is `true`, the component is expanded and the long names appear.
* Otherwise, short names are used and icons appear alone on buttons.
*
* @default false
*/
accessor longNames: boolean;
/**
* Replace localized message strings with your own strings.
*
* _**Note**: Individual message keys may change between releases._
*
* @since 5.0
*/
accessor messageOverrides: {
all?: string | undefined;
back?: string | undefined;
buttons?: {
browse?: string | undefined;
zoomTo?: string | undefined;
} | undefined;
clear?: string | undefined;
close?: string | undefined;
collapse?: string | undefined;
expand?: string | undefined;
search?: string | undefined;
selector?: {
selectSite?: string | undefined;
selectFacility?: string | undefined;
sitesLabel?: string | undefined;
siteFacilitiesLabel?: string | undefined;
facilitiesLabel?: string | undefined;
levelsLabel?: string | undefined;
} | undefined;
noResults?: string | undefined;
};
/** @internal */
protected messages: Partial<{
all: string;
back: string;
buttons: {
browse: string;
zoomTo: string;
};
clear: string;
close: string;
collapse: string;
expand: string;
search: string;
selector: {
selectSite: string;
selectFacility: string;
sitesLabel: string;
siteFacilitiesLabel: string;
facilitiesLabel: string;
levelsLabel: string;
};
noResults: string;
}> & T9nMeta<{
all: string;
back: string;
buttons: {
browse: string;
zoomTo: string;
};
clear: string;
close: string;
collapse: string;
expand: string;
search: string;
selector: {
selectSite: string;
selectFacility: string;
sitesLabel: string;
siteFacilitiesLabel: string;
facilitiesLabel: string;
levelsLabel: string;
};
noResults: string;
}>;
/**
* By assigning the `id` attribute of the Map or Scene component to this property, you can position a child component anywhere in the DOM while still maintaining a connection to the Map or Scene.
*
* @see [Associate components with a Map or Scene component](https://developers.arcgis.com/javascript/latest/programming-patterns/#associate-components-with-a-map-or-scene-component)
*/
accessor referenceElement: ArcgisReferenceElement | string | undefined;
/** The currently selected site. */
accessor site: string | null | undefined;
/**
* The view associated with the component.
* > **Note:** The recommended approach is to fully migrate applications to use map and scene components and avoid using MapView and SceneView directly. However, if you are migrating a large application from widgets to components, you might prefer a more gradual transition. To support this use case, the SDK includes this `view` property which connects a component to a MapView or SceneView. Ultimately, once migration is complete, the arcgis-floor-filter component will be associated with a map or scene component rather than using the `view` property.
*/
accessor view: MapViewOrSceneView | null | undefined;
/** Permanently destroy the component. */
destroy(): Promise<void>;
/** @param webMap */
updateWebDocument(webMap: WebMap | WebScene): Promise<void>;
/** Emitted when the component associated with a map or scene view is ready to be interacted with. */
readonly arcgisReady: import("@arcgis/lumina").TargetedEvent<this, void>;
readonly "@eventTypes": {
arcgisReady: ArcgisFloorFilter["arcgisReady"]["detail"];
};
}