import type { JSONSupport, JSONSupportMixinProperties } from "../../core/JSONSupport.js";

export interface FloorFilterProperties extends JSONSupportMixinProperties, Partial<Pick<FloorFilter, "enabled" | "facility" | "level" | "longNames" | "minimized" | "pinnedLevels" | "site">> {}

/** Floor filtering is controlled by a configurable [floor filter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html). Those configurations are saved to the web map as a Floor Filter widget. */
export default abstract class FloorFilter extends JSONSupport {
  /**
   * Indicates whether the FloorFilter is active and filtering the displayed content according to the [FloorFilter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html) selection.
   *
   * @default false
   */
  accessor enabled: boolean;
  /** Contains the facility ID for the initially selected [FloorFilter#facility](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html#facility) in the floor filter. */
  accessor facility: string | null | undefined;
  /** Contains the level ID for the initially selected [floor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html#level), which is used when filtering layers by their configured floor-aware properties. */
  accessor level: string | null | undefined;
  /**
   * Indicates whether the levels list is showing the long names from [FloorFilter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html).
   *
   * @default false
   */
  accessor longNames: boolean;
  /**
   * Indicates whether the floor filter has been minimized to show only the levels list.
   *
   * @default false
   */
  accessor minimized: boolean;
  /**
   * Indicates whether the levels portion of the floor filter has been pinned to show the levels list.
   *
   * @default false
   */
  accessor pinnedLevels: boolean;
  /** Contains the site ID for the initially selected [FloorFilter#site](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FloorFilter.html#site) in the floor filter. */
  accessor site: string | null | undefined;
}