import type WebMap from "../../WebMap.js"; import type WebScene from "../../WebScene.js"; import type Collection from "../../core/Collection.js"; import type Layer from "../../layers/Layer.js"; import type Sublayer from "../../layers/support/Sublayer.js"; import type ListItem from "./ListItem.js"; import type { ReadonlyCollection } from "../../core/Collection.js"; import type { EventedAccessor } from "../../core/Evented.js"; import type { Action } from "../LayerList/types.js"; import type { ListItemModifier, State } from "./types.js"; export interface TableListViewModelProperties extends Partial> {} export interface TableListViewModelEvents { /** * Emitted when the user clicks an [action](https://developers.arcgis.com/javascript/latest/references/core/support/actions/ActionButton/) or * [action toggle](https://developers.arcgis.com/javascript/latest/references/core/support/actions/ActionToggle/) in a table list. * Use this event to run custom logic when a specific action is triggered. * * @see [@trigger-action](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/TableListViewModel/#event-trigger-action) */ "trigger-action": TableListViewModelTriggerActionEvent; } /** * The event object for the `trigger-action` event in the table list. * * @see [@trigger-action](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/TableListViewModel/#event-trigger-action) */ export interface TableListViewModelTriggerActionEvent { /** The action clicked by the user. */ action: Action; /** An item associated with the action. */ item: ListItem; } /** * Provides the logic for the [TableList](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/) widget and [component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-table-list/). * * @since 4.17 * @see [TableList](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/) widget * @see [Table List component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-table-list/) * @see [Programming patterns: Widget viewModel pattern](https://developers.arcgis.com/javascript/latest/programming-patterns/#widget-viewmodel-pattern) * @example * const tableList = new TableList({ * viewModel: { // autocasts as new TableListViewModel * map: map // specify the map containing the tables * } * }); */ export default class TableListViewModel extends EventedAccessor { /** * @deprecated * Do not directly reference this property. * Use EventNames and EventTypes helpers from \@arcgis/core/Evented */ "@eventTypes": TableListViewModelEvents; constructor(properties?: TableListViewModelProperties); /** * Whether to provide an indication if a layer is being published in the * [TableList](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/). When a layer is publishing, * a rotating square will appear to the right of the list item title. * The [ListItem.publishing](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/ListItem/#publishing) property * will be `false` if `checkPublishStatusEnabled` is `false`. * * @default false * @since 4.25 */ accessor checkPublishStatusEnabled: boolean; /** * Specifies a function that accesses each [ListItem](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/ListItem/). * Each list item can be modified according to its modifiable properties. Actions can be added to * [list items](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/ListItem/) using the * [ListItem.actionsSections](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/ListItem/#actionsSections) property. */ accessor listItemCreatedFunction: ListItemModifier | null | undefined; /** * Specifies whether to ignore the [Layer.listMode](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#listMode) property of the layers to display all tables. * A common use case for `listModeDisabled` is when you want to use the [TableList](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/) to manage and configure a tables's `listMode` value. * * @default false * @since 4.30 * @see [Layer.listMode](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#listMode) */ accessor listModeDisabled: boolean; /** * A reference to the [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/) containing the tables. Set this property * to access the underlying tables within the map. * * @see [Map.tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#tables) * @see [WebMap.tables](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#tables) * @example * // FeatureLayer.isTable = true. * Layer.fromPortalItem({ * // Loads a layer (table) from a portal item * portalItem: { // autocasts new PortalItem() * id: "add portal id item" * } * }).then(function(layer) { * // Load the layer * layer.load().then(function() { * // Check if the layer is a table * if (layer.isTable) { * map.tables.add(layer); * console.log(map.tables); * } * }); * }); * * const tableList = new TableList({ * map: map // map contains tables collection * }); */ accessor map: WebMap | WebScene | null | undefined; /** * The view model's state. * * @default "disabled" */ get state(): State; /** The collection of table [ListItem](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/ListItem/)s displayed within the widget. */ get tableItems(): Collection; /** * A collection of [Layer](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/) instances that are tables. * * @since 4.32 * @example * const tableList = new TableListViewModel({ * tables: tables * }); */ accessor tables: ReadonlyCollection | null | undefined; /** * The total number of [tableItems](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/TableListViewModel/#tableItems) in the list. * * @since 4.32 * @see [tableItems](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/TableListViewModel/#tableItems) * @see [ListItem](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/ListItem/) */ get totalItems(): number; /** * Triggers the [@trigger-action](https://developers.arcgis.com/javascript/latest/references/core/widgets/TableList/TableListViewModel/#event-trigger-action) event and executes * the given [action](https://developers.arcgis.com/javascript/latest/references/core/support/actions/ActionButton/) or [action toggle](https://developers.arcgis.com/javascript/latest/references/core/support/actions/ActionToggle/). * * @param action - The action to execute. * @param item - An item associated with the action. */ triggerAction(action: Action, item: ListItem): void; }