/// import type SceneView from "@arcgis/core/views/SceneView.js"; import type MapView from "@arcgis/core/views/MapView.js"; import type { PublicLitElement as LitElement } from "@arcgis/lumina"; import type { UniqueValueCountInfo } from "@arcgis/core/smartMapping/statistics/types.js"; import type { SupportedLayer } from "./utils/basic.js"; import type { VisualizationSource } from "../../utils/internal-types.js"; import type { T9nMeta } from "@arcgis/lumina/controllers"; /** * Displays a list of unique values taking into account field type formatting and field domains. * * @internal */ export abstract class ArcgisUniqueValuesList extends LitElement { /** @internal */ protected _messages: { searchValues: string; sortValues: string; values: string; sortByCount: string; sortAlphabetical: string; sortAscending: string; sortSelected: string; errors: { tooManyUniqueValues: string; }; } & T9nMeta<{ searchValues: string; sortValues: string; values: string; sortByCount: string; sortAlphabetical: string; sortAscending: string; sortSelected: string; errors: { tooManyUniqueValues: string; }; }>; /** Field name, required if uniqueValues is not provided, if component needs to format values, or needs to check for field domains. */ accessor fieldName: string | undefined; /** Layer instance, required if uniqueValues is not provided, if component needs to format values, or needs to check for field domains. */ accessor layer: SupportedLayer | undefined; /** Optional, max height of list in pixel. */ accessor maxHeight: number | undefined; /** * Multiple selections allowed? * * @default false */ accessor multiple: boolean | undefined; /** * Optional format options if values are numbers. * * e.g. * { * style: "decimal", * useGrouping: true, * minimumFractionDigits: 0, * maximumFractionDigits: 2 * } * * { * style: "percent", * useGrouping: true * } * * { * style: "currency", * currency: "EUR", * currencyDisplay: "symbol" * } */ accessor numberFormatOptions: Intl.NumberFormatOptions | undefined; /** * Too many values? If true then it displays a message below the list. Only required if uniqueValues is provided. * * @default false */ accessor partialUniqueValues: boolean | undefined; /** Lists of selected values */ accessor selectedValues: (number | string)[] | undefined; /** * If true, displays the filter option based on the number of fields. * * @default 10 */ accessor showFilterLength: number; /** Sort by default setting */ accessor sortBy: "count" | "name" | "selected" | undefined; /** * List of all unique values. If not provided component will get the unique values from the layer. * An empty list would mean that there are no unique values for this field on the layer. The component renders nothing then. */ accessor uniqueValues: UniqueValueCountInfo[] | undefined; /** MapView instance, required if uniqueValues is not provided and/or to display dates in the correct timezone */ accessor view: MapView | SceneView | undefined; /** Optional, specify visualization source other than the layer itself. */ accessor visualizationSource: VisualizationSource | undefined; /** * Get all unique values. * E.g. to be used to limit how often these unique values need to be requested from the layer. */ getUniqueValues(): Promise<{ uniqueValues: UniqueValueCountInfo[]; partialUniqueValues: boolean; } | undefined>; /** Sets focus on component */ setFocus(): Promise; /** Emitted if selection has changed */ readonly arcgisChange: import("@arcgis/lumina").TargetedEvent; /** Emitted once the component is loaded. Useful when no uniqueValues were passed in. */ readonly arcgisLoad: import("@arcgis/lumina").TargetedEvent; /** Emitted if the sort order has changed */ readonly arcgisSortByChange: import("@arcgis/lumina").TargetedEvent; readonly "@eventTypes": { arcgisChange: ArcgisUniqueValuesList["arcgisChange"]["detail"]; arcgisLoad: ArcgisUniqueValuesList["arcgisLoad"]["detail"]; arcgisSortByChange: ArcgisUniqueValuesList["arcgisSortByChange"]["detail"]; }; }