@ni/ok-components 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2013,6 +2013,15 @@
2013
2013
  "privacy": "private",
2014
2014
  "default": "false"
2015
2015
  },
2016
+ {
2017
+ "kind": "field",
2018
+ "name": "restoreRowMenuOpenOnClose",
2019
+ "type": {
2020
+ "text": "boolean"
2021
+ },
2022
+ "privacy": "private",
2023
+ "default": "false"
2024
+ },
2016
2025
  {
2017
2026
  "kind": "field",
2018
2027
  "name": "tabbableChildren",
@@ -2066,6 +2075,30 @@
2066
2075
  }
2067
2076
  }
2068
2077
  },
2078
+ {
2079
+ "kind": "method",
2080
+ "name": "openChanged",
2081
+ "privacy": "public",
2082
+ "return": {
2083
+ "type": {
2084
+ "text": "void"
2085
+ }
2086
+ },
2087
+ "parameters": [
2088
+ {
2089
+ "name": "_prev",
2090
+ "type": {
2091
+ "text": "boolean"
2092
+ }
2093
+ },
2094
+ {
2095
+ "name": "next",
2096
+ "type": {
2097
+ "text": "boolean"
2098
+ }
2099
+ }
2100
+ ]
2101
+ },
2069
2102
  {
2070
2103
  "kind": "method",
2071
2104
  "name": "focusoutHandler",
@@ -2218,6 +2251,16 @@
2218
2251
  "privacy": "private",
2219
2252
  "readonly": true
2220
2253
  },
2254
+ {
2255
+ "kind": "method",
2256
+ "name": "getOwningRow",
2257
+ "privacy": "private",
2258
+ "return": {
2259
+ "type": {
2260
+ "text": "(HTMLElement & { menuOpen: boolean }) | undefined"
2261
+ }
2262
+ }
2263
+ },
2221
2264
  {
2222
2265
  "kind": "method",
2223
2266
  "name": "getRequestedStateFromEvent",
@@ -385,6 +385,7 @@
385
385
  | `regionLoadedHandler` | public | | | `void` | |
386
386
  | `regionChanged` | public | | `prev: AnchoredRegion \| undefined, _next: AnchoredRegion \| undefined` | `void` | |
387
387
  | `buttonChanged` | public | | | `void` | |
388
+ | `openChanged` | public | | `_prev: boolean, next: boolean` | `void` | |
388
389
  | `focusoutHandler` | public | | `e: FocusEvent` | `boolean` | |
389
390
  | `contextMenuKeyDownHandler` | public | | `e: KeyboardEvent` | `boolean` | |
390
391
  | `onContextMenuChange` | public | | `event: Event` | `void` | |
@@ -25,6 +25,7 @@ export declare class TsTableColumnBreakpointCellView extends TableCellView<TsTab
25
25
  /** @internal */
26
26
  readonly slottedMenus?: HTMLElement[];
27
27
  private focusLastItemWhenOpened;
28
+ private restoreRowMenuOpenOnClose;
28
29
  /** @internal */
29
30
  private readonly breakpointEnabledString;
30
31
  /** @internal */
@@ -57,6 +58,7 @@ export declare class TsTableColumnBreakpointCellView extends TableCellView<TsTab
57
58
  regionLoadedHandler(): void;
58
59
  regionChanged(prev: AnchoredRegion | undefined, _next: AnchoredRegion | undefined): void;
59
60
  buttonChanged(): void;
61
+ openChanged(_prev: boolean, next: boolean): void;
60
62
  focusoutHandler(e: FocusEvent): boolean;
61
63
  contextMenuKeyDownHandler(e: KeyboardEvent): boolean;
62
64
  onContextMenuChange(event: Event): void;
@@ -68,6 +70,7 @@ export declare class TsTableColumnBreakpointCellView extends TableCellView<TsTab
68
70
  private requestContextMenu;
69
71
  private openMenuFromColumnSlot;
70
72
  private readonly menuChangeHandler;
73
+ private getOwningRow;
71
74
  private getRequestedStateFromEvent;
72
75
  }
73
76
  export declare const tsTableColumnBreakpointCellViewTag = "ok-ts-table-column-breakpoint-cell-view";
@@ -17,6 +17,7 @@ export class TsTableColumnBreakpointCellView extends TableCellView {
17
17
  */
18
18
  this.open = false;
19
19
  this.focusLastItemWhenOpened = false;
20
+ this.restoreRowMenuOpenOnClose = false;
20
21
  /** @internal */
21
22
  this.breakpointEnabledString = 'Breakpoint enabled';
22
23
  /** @internal */
@@ -148,6 +149,21 @@ export class TsTableColumnBreakpointCellView extends TableCellView {
148
149
  this.region.anchorElement = this.button ?? this;
149
150
  }
150
151
  }
152
+ openChanged(_prev, next) {
153
+ const row = this.getOwningRow();
154
+ if (!row) {
155
+ return;
156
+ }
157
+ if (next) {
158
+ this.restoreRowMenuOpenOnClose = !row.hasAttribute('menu-open');
159
+ row.menuOpen = true;
160
+ return;
161
+ }
162
+ if (this.restoreRowMenuOpenOnClose) {
163
+ row.menuOpen = false;
164
+ this.restoreRowMenuOpenOnClose = false;
165
+ }
166
+ }
151
167
  focusoutHandler(e) {
152
168
  if (!this.open) {
153
169
  return true;
@@ -247,6 +263,25 @@ export class TsTableColumnBreakpointCellView extends TableCellView {
247
263
  this.$emit('cell-view-slots-request', eventDetail);
248
264
  this.open = true;
249
265
  }
266
+ getOwningRow() {
267
+ const rootNode = this.getRootNode();
268
+ if (!(rootNode instanceof ShadowRoot)) {
269
+ return undefined;
270
+ }
271
+ const tableCell = rootNode.host;
272
+ if (!(tableCell instanceof HTMLElement)) {
273
+ return undefined;
274
+ }
275
+ const rowRootNode = tableCell.getRootNode();
276
+ if (!(rowRootNode instanceof ShadowRoot)) {
277
+ return undefined;
278
+ }
279
+ const tableRow = rowRootNode.host;
280
+ if (!(tableRow instanceof HTMLElement) || tableRow.localName !== 'nimble-table-row') {
281
+ return undefined;
282
+ }
283
+ return tableRow;
284
+ }
250
285
  getRequestedStateFromEvent(event) {
251
286
  const target = event.target;
252
287
  if (!(target instanceof HTMLElement)) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/ts/table-column/breakpoint/cell-view/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { DesignSystem } from '@ni/fast-foundation';\nimport { TableCellView } from '@ni/nimble-components/dist/esm/table-column/base/cell-view';\nimport { attr, observable } from '@ni/fast-element';\nimport type { AnchoredRegion } from '@ni/nimble-components/dist/esm/anchored-region';\nimport { MenuButtonPosition, type MenuButtonPosition as BreakpointMenuPosition } from '@ni/nimble-components/dist/esm/menu-button/types';\nimport type { CellViewSlotRequestEventDetail } from '@ni/nimble-components/dist/esm/table/types';\nimport { template } from './template';\nimport { styles } from './styles';\nimport {\n BreakpointState,\n breakpointCellViewMenuSlotName,\n breakpointMenuItemStateAttributeName,\n type BreakpointToggleEventDetail,\n type BreakpointStateChangeRequestedEventDetail\n} from '../types';\nimport type { TsTableColumnBreakpointCellRecord, TsTableColumnBreakpointColumnConfig } from '..';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-ts-table-column-breakpoint-cell-view': TsTableColumnBreakpointCellView;\n }\n}\n\n/**\n * Cell view for the breakpoint column that renders a clickable breakpoint indicator.\n */\nexport class TsTableColumnBreakpointCellView extends TableCellView<\n TsTableColumnBreakpointCellRecord,\n TsTableColumnBreakpointColumnConfig\n> {\n private static readonly menuKeyAlias = 'Menu';\n\n private static readonly contextMenuKeyAlias = 'ContextMenu';\n\n /** @internal */\n public button?: HTMLButtonElement;\n\n /**\n * Specifies whether or not the menu is open.\n */\n @attr({ mode: 'boolean' })\n public open = false;\n\n /** @internal */\n @observable\n public readonly region?: AnchoredRegion;\n\n /** @internal */\n @observable\n public readonly slottedMenus?: HTMLElement[];\n\n private focusLastItemWhenOpened = false;\n\n /** @internal */\n @observable\n private readonly breakpointEnabledString = 'Breakpoint enabled';\n\n /** @internal */\n @observable\n private readonly breakpointDisabledString = 'Breakpoint disabled';\n\n /** @internal */\n @observable\n private readonly breakpointHitString = 'Breakpoint hit';\n\n /** @internal */\n @observable\n private readonly breakpointConditionalString = 'Conditional breakpoint';\n\n /** @internal */\n @observable\n private readonly breakpointHitDisabledString = 'Breakpoint hit (disabled)';\n\n /** @internal */\n @observable\n private readonly breakpointAddString = 'Add breakpoint';\n\n /** @internal */\n @observable\n private readonly breakpointRemoveString = 'Remove breakpoint';\n\n /** @internal */\n public get currentState(): BreakpointState {\n const value = this.cellRecord?.value;\n if (value && Object.values(BreakpointState).includes(value as BreakpointState)) {\n return value as BreakpointState;\n }\n return BreakpointState.off;\n }\n\n /** @internal */\n public get tooltipText(): string {\n if (this.currentState === BreakpointState.off) {\n return this.breakpointAddString;\n }\n return this.breakpointRemoveString;\n }\n\n /** @internal */\n public get ariaLabelText(): string {\n switch (this.currentState) {\n case BreakpointState.enabled:\n return this.breakpointEnabledString;\n case BreakpointState.disabled:\n return this.breakpointDisabledString;\n case BreakpointState.hit:\n return this.breakpointHitString;\n case BreakpointState.conditional:\n return this.breakpointConditionalString;\n case BreakpointState.hitDisabled:\n return this.breakpointHitDisabledString;\n default:\n return this.breakpointAddString;\n }\n }\n\n /** @internal */\n public get menuPosition(): BreakpointMenuPosition {\n return this.columnConfig?.position ?? MenuButtonPosition.auto;\n }\n\n public override get tabbableChildren(): HTMLElement[] {\n if (this.button) {\n return [this.button];\n }\n return [];\n }\n\n /** @internal */\n public onButtonClick(event: Event): void {\n event.stopPropagation();\n const oldState = this.currentState;\n const newState = oldState === BreakpointState.off\n ? BreakpointState.enabled\n : BreakpointState.off;\n this.emitToggle(oldState, newState);\n }\n\n /** @internal */\n public onContextMenu(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.requestContextMenu();\n }\n\n /** @internal */\n public onKeyDown(event: KeyboardEvent): boolean {\n if ((event.key === 'F10' && event.shiftKey)\n || event.key === TsTableColumnBreakpointCellView.menuKeyAlias\n || (event.key === TsTableColumnBreakpointCellView.contextMenuKeyAlias)) {\n event.preventDefault();\n event.stopPropagation();\n this.requestContextMenu();\n return false;\n }\n\n if (event.key === 'F9' || ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'b')) {\n event.preventDefault();\n event.stopPropagation();\n this.onButtonClick(event);\n return false;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n event.stopPropagation();\n this.focusLastItemWhenOpened = false;\n this.requestContextMenu();\n return false;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n this.focusLastItemWhenOpened = true;\n this.requestContextMenu();\n return false;\n }\n\n return true;\n }\n\n public regionLoadedHandler(): void {\n if (this.focusLastItemWhenOpened) {\n this.focusLastItemWhenOpened = false;\n this.focusLastMenuItem();\n } else {\n this.focusMenu();\n }\n }\n\n public regionChanged(prev: AnchoredRegion | undefined, _next: AnchoredRegion | undefined): void {\n if (prev) {\n prev.removeEventListener('change', this.menuChangeHandler, { capture: true });\n }\n\n if (this.region) {\n this.region.anchorElement = this.button ?? this;\n this.region.addEventListener('change', this.menuChangeHandler, { capture: true });\n }\n }\n\n public buttonChanged(): void {\n if (this.region) {\n this.region.anchorElement = this.button ?? this;\n }\n }\n\n public focusoutHandler(e: FocusEvent): boolean {\n if (!this.open) {\n return true;\n }\n\n const focusTarget = e.relatedTarget as HTMLElement;\n if (\n !this.contains(focusTarget)\n && !this.region?.contains(focusTarget)\n && !this.getMenu()?.contains(focusTarget)\n ) {\n this.open = false;\n return false;\n }\n\n return true;\n }\n\n public contextMenuKeyDownHandler(e: KeyboardEvent): boolean {\n switch (e.key) {\n case 'Escape':\n this.open = false;\n this.button?.focus();\n return false;\n default:\n return true;\n }\n }\n\n public onContextMenuChange(event: Event): void {\n const requestedState = this.getRequestedStateFromEvent(event);\n if (!requestedState) {\n return;\n }\n\n const detail: BreakpointStateChangeRequestedEventDetail = {\n recordId: this.recordId!,\n requestedState,\n currentState: this.currentState\n };\n this.$emit('breakpoint-column-state-change-requested', detail);\n }\n\n private getMenu(): HTMLElement | undefined {\n if (!this.slottedMenus || this.slottedMenus.length === 0) {\n return undefined;\n }\n\n let currentItem: HTMLElement | undefined = this.slottedMenus[0];\n while (currentItem) {\n if (currentItem.getAttribute('role') === 'menu') {\n return currentItem;\n }\n\n if (this.isSlotElement(currentItem)) {\n const firstNode = currentItem.assignedNodes()[0];\n if (firstNode instanceof HTMLElement) {\n currentItem = firstNode;\n } else {\n currentItem = undefined;\n }\n } else {\n return undefined;\n }\n }\n\n return undefined;\n }\n\n private isSlotElement(\n element: HTMLElement | undefined\n ): element is HTMLSlotElement {\n return element?.nodeName === 'SLOT';\n }\n\n private focusMenu(): void {\n this.getMenu()?.focus();\n }\n\n private focusLastMenuItem(): void {\n const menuItems = this.getMenu()?.querySelectorAll('[role=menuitem]');\n if (menuItems && menuItems.length > 0) {\n const lastMenuItem = menuItems[menuItems.length - 1] as HTMLElement;\n lastMenuItem.focus();\n }\n }\n\n private emitToggle(\n oldState: BreakpointState,\n newState: BreakpointState\n ): void {\n const detail: BreakpointToggleEventDetail = {\n recordId: this.recordId!,\n newState,\n oldState\n };\n this.$emit('breakpoint-column-toggle', detail);\n }\n\n private requestContextMenu(): void {\n this.openMenuFromColumnSlot();\n }\n\n private openMenuFromColumnSlot(): void {\n const configuredSlotName = this.columnConfig?.menuSlot;\n if (!configuredSlotName) {\n return;\n }\n\n const eventDetail: CellViewSlotRequestEventDetail = {\n slots: [\n {\n name: configuredSlotName,\n slot: breakpointCellViewMenuSlotName\n }\n ]\n };\n this.$emit('cell-view-slots-request', eventDetail);\n this.open = true;\n }\n\n private readonly menuChangeHandler = (): void => {\n this.open = false;\n this.button?.focus();\n };\n\n private getRequestedStateFromEvent(event: Event): BreakpointState | undefined {\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return undefined;\n }\n\n const stateElement = target.closest(`[${breakpointMenuItemStateAttributeName}]`);\n if (!stateElement) {\n return undefined;\n }\n\n const requestedState = stateElement.getAttribute(breakpointMenuItemStateAttributeName);\n if (requestedState && Object.values(BreakpointState).includes(requestedState as BreakpointState)) {\n return requestedState as BreakpointState;\n }\n\n return undefined;\n }\n}\n\nconst tsTableColumnBreakpointCellView = TsTableColumnBreakpointCellView.compose({\n baseName: 'ts-table-column-breakpoint-cell-view',\n template,\n styles\n});\nDesignSystem.getOrCreate().withPrefix('ok').register(tsTableColumnBreakpointCellView());\nexport const tsTableColumnBreakpointCellViewTag = 'ok-ts-table-column-breakpoint-cell-view';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/ts/table-column/breakpoint/cell-view/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { DesignSystem } from '@ni/fast-foundation';\nimport { TableCellView } from '@ni/nimble-components/dist/esm/table-column/base/cell-view';\nimport { attr, observable } from '@ni/fast-element';\nimport type { AnchoredRegion } from '@ni/nimble-components/dist/esm/anchored-region';\nimport { MenuButtonPosition, type MenuButtonPosition as BreakpointMenuPosition } from '@ni/nimble-components/dist/esm/menu-button/types';\nimport type { CellViewSlotRequestEventDetail } from '@ni/nimble-components/dist/esm/table/types';\nimport { template } from './template';\nimport { styles } from './styles';\nimport {\n BreakpointState,\n breakpointCellViewMenuSlotName,\n breakpointMenuItemStateAttributeName,\n type BreakpointToggleEventDetail,\n type BreakpointStateChangeRequestedEventDetail\n} from '../types';\nimport type { TsTableColumnBreakpointCellRecord, TsTableColumnBreakpointColumnConfig } from '..';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-ts-table-column-breakpoint-cell-view': TsTableColumnBreakpointCellView;\n }\n}\n\n/**\n * Cell view for the breakpoint column that renders a clickable breakpoint indicator.\n */\nexport class TsTableColumnBreakpointCellView extends TableCellView<\n TsTableColumnBreakpointCellRecord,\n TsTableColumnBreakpointColumnConfig\n> {\n private static readonly menuKeyAlias = 'Menu';\n\n private static readonly contextMenuKeyAlias = 'ContextMenu';\n\n /** @internal */\n public button?: HTMLButtonElement;\n\n /**\n * Specifies whether or not the menu is open.\n */\n @attr({ mode: 'boolean' })\n public open = false;\n\n /** @internal */\n @observable\n public readonly region?: AnchoredRegion;\n\n /** @internal */\n @observable\n public readonly slottedMenus?: HTMLElement[];\n\n private focusLastItemWhenOpened = false;\n\n private restoreRowMenuOpenOnClose = false;\n\n /** @internal */\n @observable\n private readonly breakpointEnabledString = 'Breakpoint enabled';\n\n /** @internal */\n @observable\n private readonly breakpointDisabledString = 'Breakpoint disabled';\n\n /** @internal */\n @observable\n private readonly breakpointHitString = 'Breakpoint hit';\n\n /** @internal */\n @observable\n private readonly breakpointConditionalString = 'Conditional breakpoint';\n\n /** @internal */\n @observable\n private readonly breakpointHitDisabledString = 'Breakpoint hit (disabled)';\n\n /** @internal */\n @observable\n private readonly breakpointAddString = 'Add breakpoint';\n\n /** @internal */\n @observable\n private readonly breakpointRemoveString = 'Remove breakpoint';\n\n /** @internal */\n public get currentState(): BreakpointState {\n const value = this.cellRecord?.value;\n if (value && Object.values(BreakpointState).includes(value as BreakpointState)) {\n return value as BreakpointState;\n }\n return BreakpointState.off;\n }\n\n /** @internal */\n public get tooltipText(): string {\n if (this.currentState === BreakpointState.off) {\n return this.breakpointAddString;\n }\n return this.breakpointRemoveString;\n }\n\n /** @internal */\n public get ariaLabelText(): string {\n switch (this.currentState) {\n case BreakpointState.enabled:\n return this.breakpointEnabledString;\n case BreakpointState.disabled:\n return this.breakpointDisabledString;\n case BreakpointState.hit:\n return this.breakpointHitString;\n case BreakpointState.conditional:\n return this.breakpointConditionalString;\n case BreakpointState.hitDisabled:\n return this.breakpointHitDisabledString;\n default:\n return this.breakpointAddString;\n }\n }\n\n /** @internal */\n public get menuPosition(): BreakpointMenuPosition {\n return this.columnConfig?.position ?? MenuButtonPosition.auto;\n }\n\n public override get tabbableChildren(): HTMLElement[] {\n if (this.button) {\n return [this.button];\n }\n return [];\n }\n\n /** @internal */\n public onButtonClick(event: Event): void {\n event.stopPropagation();\n const oldState = this.currentState;\n const newState = oldState === BreakpointState.off\n ? BreakpointState.enabled\n : BreakpointState.off;\n this.emitToggle(oldState, newState);\n }\n\n /** @internal */\n public onContextMenu(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.requestContextMenu();\n }\n\n /** @internal */\n public onKeyDown(event: KeyboardEvent): boolean {\n if ((event.key === 'F10' && event.shiftKey)\n || event.key === TsTableColumnBreakpointCellView.menuKeyAlias\n || (event.key === TsTableColumnBreakpointCellView.contextMenuKeyAlias)) {\n event.preventDefault();\n event.stopPropagation();\n this.requestContextMenu();\n return false;\n }\n\n if (event.key === 'F9' || ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'b')) {\n event.preventDefault();\n event.stopPropagation();\n this.onButtonClick(event);\n return false;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n event.stopPropagation();\n this.focusLastItemWhenOpened = false;\n this.requestContextMenu();\n return false;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n this.focusLastItemWhenOpened = true;\n this.requestContextMenu();\n return false;\n }\n\n return true;\n }\n\n public regionLoadedHandler(): void {\n if (this.focusLastItemWhenOpened) {\n this.focusLastItemWhenOpened = false;\n this.focusLastMenuItem();\n } else {\n this.focusMenu();\n }\n }\n\n public regionChanged(prev: AnchoredRegion | undefined, _next: AnchoredRegion | undefined): void {\n if (prev) {\n prev.removeEventListener('change', this.menuChangeHandler, { capture: true });\n }\n\n if (this.region) {\n this.region.anchorElement = this.button ?? this;\n this.region.addEventListener('change', this.menuChangeHandler, { capture: true });\n }\n }\n\n public buttonChanged(): void {\n if (this.region) {\n this.region.anchorElement = this.button ?? this;\n }\n }\n\n public openChanged(_prev: boolean, next: boolean): void {\n const row = this.getOwningRow();\n if (!row) {\n return;\n }\n\n if (next) {\n this.restoreRowMenuOpenOnClose = !row.hasAttribute('menu-open');\n row.menuOpen = true;\n return;\n }\n\n if (this.restoreRowMenuOpenOnClose) {\n row.menuOpen = false;\n this.restoreRowMenuOpenOnClose = false;\n }\n }\n\n public focusoutHandler(e: FocusEvent): boolean {\n if (!this.open) {\n return true;\n }\n\n const focusTarget = e.relatedTarget as HTMLElement;\n if (\n !this.contains(focusTarget)\n && !this.region?.contains(focusTarget)\n && !this.getMenu()?.contains(focusTarget)\n ) {\n this.open = false;\n return false;\n }\n\n return true;\n }\n\n public contextMenuKeyDownHandler(e: KeyboardEvent): boolean {\n switch (e.key) {\n case 'Escape':\n this.open = false;\n this.button?.focus();\n return false;\n default:\n return true;\n }\n }\n\n public onContextMenuChange(event: Event): void {\n const requestedState = this.getRequestedStateFromEvent(event);\n if (!requestedState) {\n return;\n }\n\n const detail: BreakpointStateChangeRequestedEventDetail = {\n recordId: this.recordId!,\n requestedState,\n currentState: this.currentState\n };\n this.$emit('breakpoint-column-state-change-requested', detail);\n }\n\n private getMenu(): HTMLElement | undefined {\n if (!this.slottedMenus || this.slottedMenus.length === 0) {\n return undefined;\n }\n\n let currentItem: HTMLElement | undefined = this.slottedMenus[0];\n while (currentItem) {\n if (currentItem.getAttribute('role') === 'menu') {\n return currentItem;\n }\n\n if (this.isSlotElement(currentItem)) {\n const firstNode = currentItem.assignedNodes()[0];\n if (firstNode instanceof HTMLElement) {\n currentItem = firstNode;\n } else {\n currentItem = undefined;\n }\n } else {\n return undefined;\n }\n }\n\n return undefined;\n }\n\n private isSlotElement(\n element: HTMLElement | undefined\n ): element is HTMLSlotElement {\n return element?.nodeName === 'SLOT';\n }\n\n private focusMenu(): void {\n this.getMenu()?.focus();\n }\n\n private focusLastMenuItem(): void {\n const menuItems = this.getMenu()?.querySelectorAll('[role=menuitem]');\n if (menuItems && menuItems.length > 0) {\n const lastMenuItem = menuItems[menuItems.length - 1] as HTMLElement;\n lastMenuItem.focus();\n }\n }\n\n private emitToggle(\n oldState: BreakpointState,\n newState: BreakpointState\n ): void {\n const detail: BreakpointToggleEventDetail = {\n recordId: this.recordId!,\n newState,\n oldState\n };\n this.$emit('breakpoint-column-toggle', detail);\n }\n\n private requestContextMenu(): void {\n this.openMenuFromColumnSlot();\n }\n\n private openMenuFromColumnSlot(): void {\n const configuredSlotName = this.columnConfig?.menuSlot;\n if (!configuredSlotName) {\n return;\n }\n\n const eventDetail: CellViewSlotRequestEventDetail = {\n slots: [\n {\n name: configuredSlotName,\n slot: breakpointCellViewMenuSlotName\n }\n ]\n };\n this.$emit('cell-view-slots-request', eventDetail);\n this.open = true;\n }\n\n private readonly menuChangeHandler = (): void => {\n this.open = false;\n this.button?.focus();\n };\n\n private getOwningRow(): (HTMLElement & { menuOpen: boolean }) | undefined {\n const rootNode = this.getRootNode();\n if (!(rootNode instanceof ShadowRoot)) {\n return undefined;\n }\n\n const tableCell = rootNode.host;\n if (!(tableCell instanceof HTMLElement)) {\n return undefined;\n }\n\n const rowRootNode = tableCell.getRootNode();\n if (!(rowRootNode instanceof ShadowRoot)) {\n return undefined;\n }\n\n const tableRow = rowRootNode.host;\n if (!(tableRow instanceof HTMLElement) || tableRow.localName !== 'nimble-table-row') {\n return undefined;\n }\n\n return tableRow as HTMLElement & { menuOpen: boolean };\n }\n\n private getRequestedStateFromEvent(event: Event): BreakpointState | undefined {\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return undefined;\n }\n\n const stateElement = target.closest(`[${breakpointMenuItemStateAttributeName}]`);\n if (!stateElement) {\n return undefined;\n }\n\n const requestedState = stateElement.getAttribute(breakpointMenuItemStateAttributeName);\n if (requestedState && Object.values(BreakpointState).includes(requestedState as BreakpointState)) {\n return requestedState as BreakpointState;\n }\n\n return undefined;\n }\n}\n\nconst tsTableColumnBreakpointCellView = TsTableColumnBreakpointCellView.compose({\n baseName: 'ts-table-column-breakpoint-cell-view',\n template,\n styles\n});\nDesignSystem.getOrCreate().withPrefix('ok').register(tsTableColumnBreakpointCellView());\nexport const tsTableColumnBreakpointCellViewTag = 'ok-ts-table-column-breakpoint-cell-view';\n"]}
@@ -16,6 +16,7 @@ export declare class TsTableColumnBreakpointPageObject<T extends TableRecord> {
16
16
  getTooltipText(rowIndex: number, columnIndex: number): string;
17
17
  getTabbableChildrenCount(rowIndex: number, columnIndex: number): number;
18
18
  isContextMenuOpen(rowIndex: number, columnIndex: number): boolean;
19
+ isRowMenuOpen(rowIndex: number): boolean;
19
20
  pressContextMenuKey(rowIndex: number, columnIndex: number, eventInit: KeyboardEventInit): boolean;
20
21
  private getRenderedCellView;
21
22
  private getBreakpointButton;
@@ -42,6 +42,9 @@ export class TsTableColumnBreakpointPageObject {
42
42
  isContextMenuOpen(rowIndex, columnIndex) {
43
43
  return this.getContextMenuRegion(rowIndex, columnIndex) !== null;
44
44
  }
45
+ isRowMenuOpen(rowIndex) {
46
+ return this.tablePageObject.getRow(rowIndex).hasAttribute('menu-open');
47
+ }
45
48
  pressContextMenuKey(rowIndex, columnIndex, eventInit) {
46
49
  const region = this.getContextMenuRegion(rowIndex, columnIndex);
47
50
  if (!region) {
@@ -1 +1 @@
1
- {"version":3,"file":"ts-table-column-breakpoint.pageobject.js","sourceRoot":"","sources":["../../../../../../src/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TablePageObject } from '@ni/nimble-components/dist/esm/table/testing/table.pageobject';\nimport type { TableRecord } from '@ni/nimble-components/dist/esm/table/types';\nimport { anchoredRegionTag } from '@ni/nimble-components/dist/esm/anchored-region';\nimport { BreakpointState } from '../types';\nimport { TsTableColumnBreakpointCellView } from '../cell-view';\n\n/**\n * Page object for ts-table-column-breakpoint tests.\n */\nexport class TsTableColumnBreakpointPageObject<T extends TableRecord> {\n public constructor(private readonly tablePageObject: TablePageObject<T>) {}\n\n public clickBreakpointButton(rowIndex: number, columnIndex: number): void {\n this.getBreakpointButton(rowIndex, columnIndex).click();\n }\n\n public rightClickBreakpointButton(rowIndex: number, columnIndex: number): void {\n this.getBreakpointButton(rowIndex, columnIndex).dispatchEvent(\n new MouseEvent('contextmenu', { bubbles: true })\n );\n }\n\n public focusBreakpointButton(rowIndex: number, columnIndex: number): void {\n this.getBreakpointButton(rowIndex, columnIndex).focus();\n }\n\n public pressBreakpointButtonKey(\n rowIndex: number,\n columnIndex: number,\n eventInit: KeyboardEventInit\n ): boolean {\n return this.getBreakpointButton(rowIndex, columnIndex).dispatchEvent(\n new KeyboardEvent('keydown', {\n bubbles: true,\n ...eventInit\n })\n );\n }\n\n public getBreakpointButtonIconTag(\n rowIndex: number,\n columnIndex: number\n ): string {\n const iconTag = this\n .getBreakpointButton(rowIndex, columnIndex)\n .querySelector(':scope > *')\n ?.tagName;\n return iconTag?.toLocaleLowerCase() ?? '';\n }\n\n public getCurrentState(rowIndex: number, columnIndex: number): BreakpointState {\n return this.getRenderedCellView(rowIndex, columnIndex).currentState;\n }\n\n public getTooltipText(rowIndex: number, columnIndex: number): string {\n return this.getRenderedCellView(rowIndex, columnIndex).tooltipText;\n }\n\n public getTabbableChildrenCount(rowIndex: number, columnIndex: number): number {\n return this.getRenderedCellView(rowIndex, columnIndex).tabbableChildren.length;\n }\n\n public isContextMenuOpen(rowIndex: number, columnIndex: number): boolean {\n return this.getContextMenuRegion(rowIndex, columnIndex) !== null;\n }\n\n public pressContextMenuKey(\n rowIndex: number,\n columnIndex: number,\n eventInit: KeyboardEventInit\n ): boolean {\n const region = this.getContextMenuRegion(rowIndex, columnIndex);\n if (!region) {\n throw new Error(\n `Expected context menu at cell ${rowIndex},${columnIndex}`\n );\n }\n\n return region.dispatchEvent(\n new KeyboardEvent('keydown', {\n bubbles: true,\n ...eventInit\n })\n );\n }\n\n private getRenderedCellView(\n rowIndex: number,\n columnIndex: number\n ): TsTableColumnBreakpointCellView {\n return this.tablePageObject.getRenderedCellView(\n rowIndex,\n columnIndex\n ) as TsTableColumnBreakpointCellView;\n }\n\n private getBreakpointButton(\n rowIndex: number,\n columnIndex: number\n ): HTMLButtonElement {\n const button = this.getRenderedCellView(\n rowIndex,\n columnIndex\n ).shadowRoot!.querySelector<HTMLButtonElement>('.breakpoint-button');\n if (!button) {\n throw new Error(\n `Expected breakpoint button at cell ${rowIndex},${columnIndex}`\n );\n }\n return button;\n }\n\n private getContextMenuRegion(\n rowIndex: number,\n columnIndex: number\n ): HTMLElement | null {\n return this.getRenderedCellView(\n rowIndex,\n columnIndex\n ).shadowRoot!.querySelector(anchoredRegionTag);\n }\n}"]}
1
+ {"version":3,"file":"ts-table-column-breakpoint.pageobject.js","sourceRoot":"","sources":["../../../../../../src/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TablePageObject } from '@ni/nimble-components/dist/esm/table/testing/table.pageobject';\nimport type { TableRecord } from '@ni/nimble-components/dist/esm/table/types';\nimport { anchoredRegionTag } from '@ni/nimble-components/dist/esm/anchored-region';\nimport { BreakpointState } from '../types';\nimport { TsTableColumnBreakpointCellView } from '../cell-view';\n\n/**\n * Page object for ts-table-column-breakpoint tests.\n */\nexport class TsTableColumnBreakpointPageObject<T extends TableRecord> {\n public constructor(private readonly tablePageObject: TablePageObject<T>) {}\n\n public clickBreakpointButton(rowIndex: number, columnIndex: number): void {\n this.getBreakpointButton(rowIndex, columnIndex).click();\n }\n\n public rightClickBreakpointButton(rowIndex: number, columnIndex: number): void {\n this.getBreakpointButton(rowIndex, columnIndex).dispatchEvent(\n new MouseEvent('contextmenu', { bubbles: true })\n );\n }\n\n public focusBreakpointButton(rowIndex: number, columnIndex: number): void {\n this.getBreakpointButton(rowIndex, columnIndex).focus();\n }\n\n public pressBreakpointButtonKey(\n rowIndex: number,\n columnIndex: number,\n eventInit: KeyboardEventInit\n ): boolean {\n return this.getBreakpointButton(rowIndex, columnIndex).dispatchEvent(\n new KeyboardEvent('keydown', {\n bubbles: true,\n ...eventInit\n })\n );\n }\n\n public getBreakpointButtonIconTag(\n rowIndex: number,\n columnIndex: number\n ): string {\n const iconTag = this\n .getBreakpointButton(rowIndex, columnIndex)\n .querySelector(':scope > *')\n ?.tagName;\n return iconTag?.toLocaleLowerCase() ?? '';\n }\n\n public getCurrentState(rowIndex: number, columnIndex: number): BreakpointState {\n return this.getRenderedCellView(rowIndex, columnIndex).currentState;\n }\n\n public getTooltipText(rowIndex: number, columnIndex: number): string {\n return this.getRenderedCellView(rowIndex, columnIndex).tooltipText;\n }\n\n public getTabbableChildrenCount(rowIndex: number, columnIndex: number): number {\n return this.getRenderedCellView(rowIndex, columnIndex).tabbableChildren.length;\n }\n\n public isContextMenuOpen(rowIndex: number, columnIndex: number): boolean {\n return this.getContextMenuRegion(rowIndex, columnIndex) !== null;\n }\n\n public isRowMenuOpen(rowIndex: number): boolean {\n return this.tablePageObject.getRow(rowIndex).hasAttribute('menu-open');\n }\n\n public pressContextMenuKey(\n rowIndex: number,\n columnIndex: number,\n eventInit: KeyboardEventInit\n ): boolean {\n const region = this.getContextMenuRegion(rowIndex, columnIndex);\n if (!region) {\n throw new Error(\n `Expected context menu at cell ${rowIndex},${columnIndex}`\n );\n }\n\n return region.dispatchEvent(\n new KeyboardEvent('keydown', {\n bubbles: true,\n ...eventInit\n })\n );\n }\n\n private getRenderedCellView(\n rowIndex: number,\n columnIndex: number\n ): TsTableColumnBreakpointCellView {\n return this.tablePageObject.getRenderedCellView(\n rowIndex,\n columnIndex\n ) as TsTableColumnBreakpointCellView;\n }\n\n private getBreakpointButton(\n rowIndex: number,\n columnIndex: number\n ): HTMLButtonElement {\n const button = this.getRenderedCellView(\n rowIndex,\n columnIndex\n ).shadowRoot!.querySelector<HTMLButtonElement>('.breakpoint-button');\n if (!button) {\n throw new Error(\n `Expected breakpoint button at cell ${rowIndex},${columnIndex}`\n );\n }\n return button;\n }\n\n private getContextMenuRegion(\n rowIndex: number,\n columnIndex: number\n ): HTMLElement | null {\n return this.getRenderedCellView(\n rowIndex,\n columnIndex\n ).shadowRoot!.querySelector(anchoredRegionTag);\n }\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ni/ok-components",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "NI Ok Components",
5
5
  "scripts": {
6
6
  "build": "npm run build:components && npm run build:cem",