@ni/ok-components 1.5.0 → 1.5.2
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.
- package/dist/all-components-bundle.js +377 -2
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +1420 -1369
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/custom-elements.json +113 -70
- package/dist/custom-elements.md +17 -16
- package/dist/esm/ts/table-column/breakpoint/cell-view/index.d.ts +3 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/index.js +35 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/index.js.map +1 -1
- package/dist/esm/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.d.ts +1 -0
- package/dist/esm/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.js +3 -0
- package/dist/esm/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.js.map +1 -1
- package/package.json +2 -2
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"kind": "javascript-module",
|
|
19
|
-
"path": "src/
|
|
19
|
+
"path": "src/ts/all-ts.ts",
|
|
20
20
|
"declarations": [],
|
|
21
21
|
"exports": []
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"kind": "javascript-module",
|
|
25
|
-
"path": "src/
|
|
25
|
+
"path": "src/fv/all-fv.ts",
|
|
26
26
|
"declarations": [],
|
|
27
27
|
"exports": []
|
|
28
28
|
},
|
|
@@ -67,6 +67,74 @@
|
|
|
67
67
|
}
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
|
+
{
|
|
71
|
+
"kind": "javascript-module",
|
|
72
|
+
"path": "src/ts/icon-dynamic/index.ts",
|
|
73
|
+
"declarations": [
|
|
74
|
+
{
|
|
75
|
+
"kind": "class",
|
|
76
|
+
"description": "Base class for dynamic icons. Not intended to be used directly, instead use to register dynamic icons:\n```\ncustomElements.get('ok-ts-icon-dynamic').registerIconDynamic('ok-ts-icon-dynamic-awesome', '<img data uri or arbitrary url>');\n```\nAfter calling successfully, the icon can be used like any other icon:\n```\n<ok-ts-icon-dynamic-awesome></ok-ts-icon-dynamic-awesome>\n<nimble-mapping-icon icon=\"ok-ts-icon-dynamic-awesome\"></nimble-mapping-icon>\n```",
|
|
77
|
+
"name": "TsIconDynamic",
|
|
78
|
+
"members": [
|
|
79
|
+
{
|
|
80
|
+
"kind": "method",
|
|
81
|
+
"name": "registerIconDynamic",
|
|
82
|
+
"privacy": "public",
|
|
83
|
+
"static": true,
|
|
84
|
+
"return": {
|
|
85
|
+
"type": {
|
|
86
|
+
"text": "void"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"parameters": [
|
|
90
|
+
{
|
|
91
|
+
"name": "tagName",
|
|
92
|
+
"type": {
|
|
93
|
+
"text": "string"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "url",
|
|
98
|
+
"type": {
|
|
99
|
+
"text": "string"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"superclass": {
|
|
106
|
+
"name": "Icon",
|
|
107
|
+
"package": "@ni/nimble-components/dist/esm/icon-base"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"kind": "variable",
|
|
112
|
+
"name": "tsIconDynamicTag",
|
|
113
|
+
"type": {
|
|
114
|
+
"text": "string"
|
|
115
|
+
},
|
|
116
|
+
"default": "'ok-ts-icon-dynamic'"
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
"exports": [
|
|
120
|
+
{
|
|
121
|
+
"kind": "js",
|
|
122
|
+
"name": "TsIconDynamic",
|
|
123
|
+
"declaration": {
|
|
124
|
+
"name": "TsIconDynamic",
|
|
125
|
+
"module": "src/ts/icon-dynamic/index.ts"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"kind": "js",
|
|
130
|
+
"name": "tsIconDynamicTag",
|
|
131
|
+
"declaration": {
|
|
132
|
+
"name": "tsIconDynamicTag",
|
|
133
|
+
"module": "src/ts/icon-dynamic/index.ts"
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
},
|
|
70
138
|
{
|
|
71
139
|
"kind": "javascript-module",
|
|
72
140
|
"path": "src/fv/accordion-item/index.ts",
|
|
@@ -1676,74 +1744,6 @@
|
|
|
1676
1744
|
}
|
|
1677
1745
|
]
|
|
1678
1746
|
},
|
|
1679
|
-
{
|
|
1680
|
-
"kind": "javascript-module",
|
|
1681
|
-
"path": "src/ts/icon-dynamic/index.ts",
|
|
1682
|
-
"declarations": [
|
|
1683
|
-
{
|
|
1684
|
-
"kind": "class",
|
|
1685
|
-
"description": "Base class for dynamic icons. Not intended to be used directly, instead use to register dynamic icons:\n```\ncustomElements.get('ok-ts-icon-dynamic').registerIconDynamic('ok-ts-icon-dynamic-awesome', '<img data uri or arbitrary url>');\n```\nAfter calling successfully, the icon can be used like any other icon:\n```\n<ok-ts-icon-dynamic-awesome></ok-ts-icon-dynamic-awesome>\n<nimble-mapping-icon icon=\"ok-ts-icon-dynamic-awesome\"></nimble-mapping-icon>\n```",
|
|
1686
|
-
"name": "TsIconDynamic",
|
|
1687
|
-
"members": [
|
|
1688
|
-
{
|
|
1689
|
-
"kind": "method",
|
|
1690
|
-
"name": "registerIconDynamic",
|
|
1691
|
-
"privacy": "public",
|
|
1692
|
-
"static": true,
|
|
1693
|
-
"return": {
|
|
1694
|
-
"type": {
|
|
1695
|
-
"text": "void"
|
|
1696
|
-
}
|
|
1697
|
-
},
|
|
1698
|
-
"parameters": [
|
|
1699
|
-
{
|
|
1700
|
-
"name": "tagName",
|
|
1701
|
-
"type": {
|
|
1702
|
-
"text": "string"
|
|
1703
|
-
}
|
|
1704
|
-
},
|
|
1705
|
-
{
|
|
1706
|
-
"name": "url",
|
|
1707
|
-
"type": {
|
|
1708
|
-
"text": "string"
|
|
1709
|
-
}
|
|
1710
|
-
}
|
|
1711
|
-
]
|
|
1712
|
-
}
|
|
1713
|
-
],
|
|
1714
|
-
"superclass": {
|
|
1715
|
-
"name": "Icon",
|
|
1716
|
-
"package": "@ni/nimble-components/dist/esm/icon-base"
|
|
1717
|
-
}
|
|
1718
|
-
},
|
|
1719
|
-
{
|
|
1720
|
-
"kind": "variable",
|
|
1721
|
-
"name": "tsIconDynamicTag",
|
|
1722
|
-
"type": {
|
|
1723
|
-
"text": "string"
|
|
1724
|
-
},
|
|
1725
|
-
"default": "'ok-ts-icon-dynamic'"
|
|
1726
|
-
}
|
|
1727
|
-
],
|
|
1728
|
-
"exports": [
|
|
1729
|
-
{
|
|
1730
|
-
"kind": "js",
|
|
1731
|
-
"name": "TsIconDynamic",
|
|
1732
|
-
"declaration": {
|
|
1733
|
-
"name": "TsIconDynamic",
|
|
1734
|
-
"module": "src/ts/icon-dynamic/index.ts"
|
|
1735
|
-
}
|
|
1736
|
-
},
|
|
1737
|
-
{
|
|
1738
|
-
"kind": "js",
|
|
1739
|
-
"name": "tsIconDynamicTag",
|
|
1740
|
-
"declaration": {
|
|
1741
|
-
"name": "tsIconDynamicTag",
|
|
1742
|
-
"module": "src/ts/icon-dynamic/index.ts"
|
|
1743
|
-
}
|
|
1744
|
-
}
|
|
1745
|
-
]
|
|
1746
|
-
},
|
|
1747
1747
|
{
|
|
1748
1748
|
"kind": "javascript-module",
|
|
1749
1749
|
"path": "src/ts/table-column/breakpoint/index.ts",
|
|
@@ -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",
|
package/dist/custom-elements.md
CHANGED
|
@@ -8,6 +8,22 @@
|
|
|
8
8
|
|
|
9
9
|
<hr/>
|
|
10
10
|
|
|
11
|
+
## class: `TsIconDynamic`
|
|
12
|
+
|
|
13
|
+
### Superclass
|
|
14
|
+
|
|
15
|
+
| Name | Module | Package |
|
|
16
|
+
| ------ | ------ | ---------------------------------------- |
|
|
17
|
+
| `Icon` | | @ni/nimble-components/dist/esm/icon-base |
|
|
18
|
+
|
|
19
|
+
### Static Methods
|
|
20
|
+
|
|
21
|
+
| Name | Privacy | Description | Parameters | Return | Inherited From |
|
|
22
|
+
| --------------------- | ------- | ----------- | ------------------------------ | ------ | -------------- |
|
|
23
|
+
| `registerIconDynamic` | public | | `tagName: string, url: string` | `void` | |
|
|
24
|
+
|
|
25
|
+
<hr/>
|
|
26
|
+
|
|
11
27
|
## class: `FvAccordionItem`
|
|
12
28
|
|
|
13
29
|
### Superclass
|
|
@@ -308,22 +324,6 @@
|
|
|
308
324
|
|
|
309
325
|
<hr/>
|
|
310
326
|
|
|
311
|
-
## class: `TsIconDynamic`
|
|
312
|
-
|
|
313
|
-
### Superclass
|
|
314
|
-
|
|
315
|
-
| Name | Module | Package |
|
|
316
|
-
| ------ | ------ | ---------------------------------------- |
|
|
317
|
-
| `Icon` | | @ni/nimble-components/dist/esm/icon-base |
|
|
318
|
-
|
|
319
|
-
### Static Methods
|
|
320
|
-
|
|
321
|
-
| Name | Privacy | Description | Parameters | Return | Inherited From |
|
|
322
|
-
| --------------------- | ------- | ----------- | ------------------------------ | ------ | -------------- |
|
|
323
|
-
| `registerIconDynamic` | public | | `tagName: string, url: string` | `void` | |
|
|
324
|
-
|
|
325
|
-
<hr/>
|
|
326
|
-
|
|
327
327
|
## class: `TsTableColumnBreakpoint`
|
|
328
328
|
|
|
329
329
|
### Superclass
|
|
@@ -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"]}
|
package/dist/esm/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.d.ts
CHANGED
|
@@ -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;
|
package/dist/esm/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.js
CHANGED
|
@@ -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) {
|
package/dist/esm/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.js.map
CHANGED
|
@@ -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":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,iCAAiC;IAC1C,YAAoC,eAAmC;QAAnC,oBAAe,GAAf,eAAe,CAAoB;IAAG,CAAC;IAEpE,qBAAqB,CAAC,QAAgB,EAAE,WAAmB;QAC9D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5D,CAAC;IAEM,0BAA0B,CAAC,QAAgB,EAAE,WAAmB;QACnE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,aAAa,CACzD,IAAI,UAAU,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CACnD,CAAC;IACN,CAAC;IAEM,qBAAqB,CAAC,QAAgB,EAAE,WAAmB;QAC9D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5D,CAAC;IAEM,wBAAwB,CAC3B,QAAgB,EAChB,WAAmB,EACnB,SAA4B;QAE5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,aAAa,CAChE,IAAI,aAAa,CAAC,SAAS,EAAE;YACzB,OAAO,EAAE,IAAI;YACb,GAAG,SAAS;SACf,CAAC,CACL,CAAC;IACN,CAAC;IAEM,0BAA0B,CAC7B,QAAgB,EAChB,WAAmB;QAEnB,MAAM,OAAO,GAAG,IAAI;aACf,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC;aAC1C,aAAa,CAAC,YAAY,CAAC;YAC5B,EAAE,OAAO,CAAC;QACd,OAAO,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAEM,eAAe,CAAC,QAAgB,EAAE,WAAmB;QACxD,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,YAAY,CAAC;IACxE,CAAC;IAEM,cAAc,CAAC,QAAgB,EAAE,WAAmB;QACvD,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,WAAW,CAAC;IACvE,CAAC;IAEM,wBAAwB,CAAC,QAAgB,EAAE,WAAmB;QACjE,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;IACnF,CAAC;IAEM,iBAAiB,CAAC,QAAgB,EAAE,WAAmB;QAC1D,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;IACrE,CAAC;IAEM,aAAa,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3E,CAAC;IAEM,mBAAmB,CACtB,QAAgB,EAChB,WAAmB,EACnB,SAA4B;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACX,iCAAiC,QAAQ,IAAI,WAAW,EAAE,CAC7D,CAAC;QACN,CAAC;QAED,OAAO,MAAM,CAAC,aAAa,CACvB,IAAI,aAAa,CAAC,SAAS,EAAE;YACzB,OAAO,EAAE,IAAI;YACb,GAAG,SAAS;SACf,CAAC,CACL,CAAC;IACN,CAAC;IAEO,mBAAmB,CACvB,QAAgB,EAChB,WAAmB;QAEnB,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAC3C,QAAQ,EACR,WAAW,CACqB,CAAC;IACzC,CAAC;IAEO,mBAAmB,CACvB,QAAgB,EAChB,WAAmB;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CACnC,QAAQ,EACR,WAAW,CACd,CAAC,UAAW,CAAC,aAAa,CAAoB,oBAAoB,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACX,sCAAsC,QAAQ,IAAI,WAAW,EAAE,CAClE,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,oBAAoB,CACxB,QAAgB,EAChB,WAAmB;QAEnB,OAAO,IAAI,CAAC,mBAAmB,CAC3B,QAAQ,EACR,WAAW,CACd,CAAC,UAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACnD,CAAC;CACJ","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.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "NI Ok Components",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "npm run build:components && npm run build:cem",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@ni/fast-foundation": "^10.2.3",
|
|
44
44
|
"@ni/fast-web-utilities": "^10.0.0",
|
|
45
45
|
"@ni/nimble-components": "^35.11.0",
|
|
46
|
-
"@ni/spright-components": "^6.
|
|
46
|
+
"@ni/spright-components": "^6.21.0",
|
|
47
47
|
"tslib": "^2.2.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|