UNPKG

@servicenow/sdk

Version:
225 lines (179 loc) 8.06 kB
--- tags: [UxListMenuConfig, ux list menu, workspace, list config, navigation, list view, sys_ux_list_menu_config] --- # UxListMenuConfig Configures list menus for workspaces, defining categories of lists with table bindings, column layouts, conditions, and applicability rules (`sys_ux_list_menu_config`). List menus power the navigation and data views within configurable workspaces. ## Signature ```typescript fluent UxListMenuConfig(config) ``` ## Parameters ### config `UxListMenuConfig` **Properties:** - **$id** (required): `string | number | ExplicitKey<string>` - **name** (required): `string` - **$meta** (optional): `object` - **installMethod**: `'first install' | 'demo' | 'once'` Map a record to an output folder that loads only in specific circumstances. 'first install' - > 'unload', 'demo' -> 'unload.demo' - **active** (optional): `boolean` - **categories** (optional): `UxListCategory[]` Array of list categories that organize lists into logical groups. Each `UxListCategory` has: - **$id** (required): unique identifier for the category - **title** (required): `string` -- display name of the category shown in workspace navigation - **active** (optional): `boolean` -- whether the category is visible to users - **order** (optional): `number` -- sort order of the category (lower values appear first) - **description** (optional): `string` -- descriptive text for the category - **lists** (required): `UxList[]` -- array of list definitions within this category (see below) - **description** (optional): `string` ### UxList Each list definition within a category. Lists bind to a ServiceNow table and configure how records are displayed in workspace navigation. **Core properties:** - **$id** (required): unique identifier for the list - **table** (required): `string` -- name of the ServiceNow table this list displays records from (e.g., `'incident'`, `'problem'`) - **title** (required): `string` -- display title shown in the workspace navigation - **order** (optional): `number` -- sort order within the parent category (lower values appear first) - **active** (optional): `boolean` -- whether the list is visible to users - **columns** (optional): `string` -- comma-separated list of column field names to display (e.g., `'number,short_description,priority,state'`) - **condition** (optional): `string` -- encoded query to filter which records appear (e.g., `'active=true^EQ'`). Empty string shows all records. - **fixedQuery** (optional): `string` -- a fixed query applied to the list table that users cannot modify - **view** (optional): `string` -- reference to a specific list view to apply **Grouping and scrolling:** - **groupByColumn** (optional): `string` -- column name to group records by - **enableInfiniteScroll** (optional): `boolean` -- use infinite scroll instead of pagination **Access control:** - **roles** (optional): `string` -- comma-separated list of roles that can access this list - **groups** (optional): `string` -- user groups that can access this list - **applicabilities** (optional): `UxListApplicability[]` -- role-based applicability rules (each with `$id`, `active`, `applicability` reference, and optional `order`) **Display customization:** - **maxCharacters** (optional): `number` -- maximum characters to display in cells before truncating - **wordWrap** (optional): `boolean` -- enable word wrapping in cells - **overrideWordWrapUserPref** (optional): `boolean` -- override the user's word wrap preference - **highlightContentColor** (optional): `string` -- color for content highlighting - **highlightContentPattern** (optional): `string` -- regex pattern to match content for highlighting - **listAttributes** (optional): `string` -- additional list attributes for customization - **liveUpdates** (optional): `string` -- configuration for live updates of the list Additional display customization properties (`hide*` flags for pagination, columns, headers, inline editing, etc.) are available -- see the TypeScript type definition for the complete list. ## Examples ### ux-list-menu-config-basic ```typescript fluent // Source: packages/api/tests/ux-list-menu-config-plugin/ux-list-menu-config-plugin.test.ts import { UxListMenuConfig } from '@servicenow/sdk/core' export const BasicListMenuConfigExample = UxListMenuConfig({ $id: Now.ID['basic-config'], name: 'Test List Menu Config', description: 'Test description', categories: [ { $id: Now.ID['category-1'], title: 'Category 1', order: 100, description: 'Category description', lists: [ { $id: Now.ID['incidents-list'], table: 'incident', title: 'Incidents', order: 100, columns: 'number,short_description,priority', condition: 'active=true', }, ], }, ], }) ``` ### ux-list-menu-config-with-applicabilities ```typescript fluent // Source: examples/workspace/src/fluent/index.now.ts import { Applicability, Role, UxListMenuConfig } from '@servicenow/sdk/core' const userRole = Role({ name: 'x_snc_works_7.user', containsRoles: ['canvas_user'], }) const applicability = Applicability({ $id: Now.ID['workspace_applicability'], name: 'Workspace Audience', roles: [userRole], }) UxListMenuConfig({ $id: Now.ID['list_config_with_applicabilities'], name: 'Workspace List Config', description: 'List config with role-based applicabilities', categories: [ { $id: Now.ID['incidents_category'], title: 'Incidents', order: 10, lists: [ { $id: Now.ID['incidents_open'], title: 'Open', order: 10, condition: 'active=true^EQ', table: 'incident', columns: 'number,short_description,priority,state', applicabilities: [ { $id: Now.ID['incidents_open_applicability'], applicability: applicability, }, ], }, ], }, ], }) ``` ### ux-list-menu-config-with-conditions ```typescript fluent // Source: packages/api/tests/ux-list-menu-config-plugin/ux-list-menu-config-plugin.test.ts // Also: examples/ux-list/src/fluent/index.now.ts import { UxListMenuConfig } from '@servicenow/sdk/core' export const ListMenuConfigWithConditionsExample = UxListMenuConfig({ $id: Now.ID['conditions-config'], name: 'Multi Category Config', categories: [ { $id: Now.ID['incidents-category'], title: 'Incidents', order: 100, lists: [ { $id: Now.ID['incidents-open'], table: 'incident', title: 'Open', order: 10, condition: 'active=true^EQ', columns: 'number,short_description,priority,state', }, { $id: Now.ID['incidents-all'], table: 'incident', title: 'All', order: 20, condition: '', columns: 'number,short_description,priority,state', }, ], }, { $id: Now.ID['problems-category'], title: 'Problems', order: 200, lists: [ { $id: Now.ID['problems-open'], table: 'problem', title: 'Open', order: 10, condition: 'active=true^EQ', columns: 'number,short_description,state,assignment_group,assigned_to', }, ], }, ], }) ```