@ni/ok-components 1.3.7 → 1.4.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.
- package/dist/all-components-bundle.js +940 -435
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +3576 -3444
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/custom-elements.json +775 -239
- package/dist/custom-elements.md +129 -56
- package/dist/esm/ts/all-ts.d.ts +1 -0
- package/dist/esm/ts/all-ts.js +1 -0
- package/dist/esm/ts/all-ts.js.map +1 -1
- package/dist/esm/ts/table-column/breakpoint/cell-view/index.d.ts +73 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/index.js +305 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/index.js.map +1 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/styles.d.ts +1 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/styles.js +48 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/styles.js.map +1 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/template.d.ts +2 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/template.js +55 -0
- package/dist/esm/ts/table-column/breakpoint/cell-view/template.js.map +1 -0
- package/dist/esm/ts/table-column/breakpoint/index.d.ts +36 -0
- package/dist/esm/ts/table-column/breakpoint/index.js +101 -0
- package/dist/esm/ts/table-column/breakpoint/index.js.map +1 -0
- package/dist/esm/ts/table-column/breakpoint/template.d.ts +2 -0
- package/dist/esm/ts/table-column/breakpoint/template.js +8 -0
- package/dist/esm/ts/table-column/breakpoint/template.js.map +1 -0
- package/dist/esm/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.d.ts +23 -0
- package/dist/esm/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.js +69 -0
- package/dist/esm/ts/table-column/breakpoint/testing/ts-table-column-breakpoint.pageobject.js.map +1 -0
- package/dist/esm/ts/table-column/breakpoint/types.d.ts +32 -0
- package/dist/esm/ts/table-column/breakpoint/types.js +16 -0
- package/dist/esm/ts/table-column/breakpoint/types.js.map +1 -0
- package/package.json +2 -2
package/dist/custom-elements.md
CHANGED
|
@@ -108,62 +108,6 @@
|
|
|
108
108
|
|
|
109
109
|
<hr/>
|
|
110
110
|
|
|
111
|
-
## class: `FvContextHelp`
|
|
112
|
-
|
|
113
|
-
### Superclass
|
|
114
|
-
|
|
115
|
-
| Name | Module | Package |
|
|
116
|
-
| ------------------- | ------ | ------------------- |
|
|
117
|
-
| `FoundationElement` | | @ni/fast-foundation |
|
|
118
|
-
|
|
119
|
-
### Fields
|
|
120
|
-
|
|
121
|
-
| Name | Privacy | Type | Default | Description | Inherited From |
|
|
122
|
-
| -------------- | ------- | ----------------------- | ------------- | ----------- | -------------- |
|
|
123
|
-
| `text` | public | `string` | `''` | | |
|
|
124
|
-
| `triggerLabel` | public | `string` | `'Show help'` | | |
|
|
125
|
-
| `severity` | public | `FvContextHelpSeverity` | | | |
|
|
126
|
-
| `iconVisible` | public | `boolean` | `false` | | |
|
|
127
|
-
|
|
128
|
-
### Attributes
|
|
129
|
-
|
|
130
|
-
| Name | Field | Inherited From |
|
|
131
|
-
| --------------- | ------------ | -------------- |
|
|
132
|
-
| `text` | text | |
|
|
133
|
-
| `trigger-label` | triggerLabel | |
|
|
134
|
-
| `severity` | severity | |
|
|
135
|
-
| `icon-visible` | iconVisible | |
|
|
136
|
-
|
|
137
|
-
<hr/>
|
|
138
|
-
|
|
139
|
-
## class: `FvSearchInput`
|
|
140
|
-
|
|
141
|
-
### Superclass
|
|
142
|
-
|
|
143
|
-
| Name | Module | Package |
|
|
144
|
-
| --------------------- | ------ | ------------------- |
|
|
145
|
-
| `FoundationTextField` | | @ni/fast-foundation |
|
|
146
|
-
|
|
147
|
-
### Fields
|
|
148
|
-
|
|
149
|
-
| Name | Privacy | Type | Default | Description | Inherited From |
|
|
150
|
-
| ------------ | ------- | ----------------------------- | ------- | ----------- | -------------- |
|
|
151
|
-
| `appearance` | public | `FvSearchInputAppearanceType` | | | |
|
|
152
|
-
|
|
153
|
-
### Events
|
|
154
|
-
|
|
155
|
-
| Name | Type | Description | Inherited From |
|
|
156
|
-
| ------- | ------- | ----------- | -------------- |
|
|
157
|
-
| `input` | `Event` | | |
|
|
158
|
-
|
|
159
|
-
### Attributes
|
|
160
|
-
|
|
161
|
-
| Name | Field | Inherited From |
|
|
162
|
-
| ------------ | ---------- | -------------- |
|
|
163
|
-
| `appearance` | appearance | |
|
|
164
|
-
|
|
165
|
-
<hr/>
|
|
166
|
-
|
|
167
111
|
## class: `FvSplitButton`
|
|
168
112
|
|
|
169
113
|
### Superclass
|
|
@@ -246,6 +190,62 @@
|
|
|
246
190
|
|
|
247
191
|
<hr/>
|
|
248
192
|
|
|
193
|
+
## class: `FvSearchInput`
|
|
194
|
+
|
|
195
|
+
### Superclass
|
|
196
|
+
|
|
197
|
+
| Name | Module | Package |
|
|
198
|
+
| --------------------- | ------ | ------------------- |
|
|
199
|
+
| `FoundationTextField` | | @ni/fast-foundation |
|
|
200
|
+
|
|
201
|
+
### Fields
|
|
202
|
+
|
|
203
|
+
| Name | Privacy | Type | Default | Description | Inherited From |
|
|
204
|
+
| ------------ | ------- | ----------------------------- | ------- | ----------- | -------------- |
|
|
205
|
+
| `appearance` | public | `FvSearchInputAppearanceType` | | | |
|
|
206
|
+
|
|
207
|
+
### Events
|
|
208
|
+
|
|
209
|
+
| Name | Type | Description | Inherited From |
|
|
210
|
+
| ------- | ------- | ----------- | -------------- |
|
|
211
|
+
| `input` | `Event` | | |
|
|
212
|
+
|
|
213
|
+
### Attributes
|
|
214
|
+
|
|
215
|
+
| Name | Field | Inherited From |
|
|
216
|
+
| ------------ | ---------- | -------------- |
|
|
217
|
+
| `appearance` | appearance | |
|
|
218
|
+
|
|
219
|
+
<hr/>
|
|
220
|
+
|
|
221
|
+
## class: `FvContextHelp`
|
|
222
|
+
|
|
223
|
+
### Superclass
|
|
224
|
+
|
|
225
|
+
| Name | Module | Package |
|
|
226
|
+
| ------------------- | ------ | ------------------- |
|
|
227
|
+
| `FoundationElement` | | @ni/fast-foundation |
|
|
228
|
+
|
|
229
|
+
### Fields
|
|
230
|
+
|
|
231
|
+
| Name | Privacy | Type | Default | Description | Inherited From |
|
|
232
|
+
| -------------- | ------- | ----------------------- | ------------- | ----------- | -------------- |
|
|
233
|
+
| `text` | public | `string` | `''` | | |
|
|
234
|
+
| `triggerLabel` | public | `string` | `'Show help'` | | |
|
|
235
|
+
| `severity` | public | `FvContextHelpSeverity` | | | |
|
|
236
|
+
| `iconVisible` | public | `boolean` | `false` | | |
|
|
237
|
+
|
|
238
|
+
### Attributes
|
|
239
|
+
|
|
240
|
+
| Name | Field | Inherited From |
|
|
241
|
+
| --------------- | ------------ | -------------- |
|
|
242
|
+
| `text` | text | |
|
|
243
|
+
| `trigger-label` | triggerLabel | |
|
|
244
|
+
| `severity` | severity | |
|
|
245
|
+
| `icon-visible` | iconVisible | |
|
|
246
|
+
|
|
247
|
+
<hr/>
|
|
248
|
+
|
|
249
249
|
## class: `FvSummaryPanel`
|
|
250
250
|
|
|
251
251
|
### Superclass
|
|
@@ -323,3 +323,76 @@
|
|
|
323
323
|
| `registerIconDynamic` | public | | `tagName: string, url: string` | `void` | |
|
|
324
324
|
|
|
325
325
|
<hr/>
|
|
326
|
+
|
|
327
|
+
## class: `TsTableColumnBreakpoint`
|
|
328
|
+
|
|
329
|
+
### Superclass
|
|
330
|
+
|
|
331
|
+
| Name | Module | Package |
|
|
332
|
+
| ------------- | ------ | ------------------------------------------------ |
|
|
333
|
+
| `TableColumn` | | @ni/nimble-components/dist/esm/table-column/base |
|
|
334
|
+
|
|
335
|
+
### Fields
|
|
336
|
+
|
|
337
|
+
| Name | Privacy | Type | Default | Description | Inherited From |
|
|
338
|
+
| ------------------ | ------- | ------------------------ | ----------------------- | ----------- | -------------- |
|
|
339
|
+
| `fieldName` | public | `string \| undefined` | | | |
|
|
340
|
+
| `menuSlot` | public | `string \| undefined` | | | |
|
|
341
|
+
| `position` | public | `BreakpointMenuPosition` | | | |
|
|
342
|
+
| `resizingDisabled` | | `boolean` | `true` | | |
|
|
343
|
+
| `pixelWidth` | | | `singleIconColumnWidth` | | |
|
|
344
|
+
| `minPixelWidth` | | | `singleIconColumnWidth` | | |
|
|
345
|
+
|
|
346
|
+
### Methods
|
|
347
|
+
|
|
348
|
+
| Name | Privacy | Description | Parameters | Return | Inherited From |
|
|
349
|
+
| ------------------------------ | --------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------ | -------------- |
|
|
350
|
+
| `requestBreakpointStateChange` | public | Programmatically requests a breakpoint state change for a record. | `recordId: string, currentState: BreakpointState, requestedState: BreakpointState` | `void` | |
|
|
351
|
+
| `getColumnInternalsOptions` | protected | | | `ColumnInternalsOptions` | |
|
|
352
|
+
| `fieldNameChanged` | protected | | | `void` | |
|
|
353
|
+
| `menuSlotChanged` | protected | | | `void` | |
|
|
354
|
+
| `positionChanged` | protected | | | `void` | |
|
|
355
|
+
|
|
356
|
+
### Attributes
|
|
357
|
+
|
|
358
|
+
| Name | Field | Inherited From |
|
|
359
|
+
| ------------ | --------- | -------------- |
|
|
360
|
+
| `field-name` | fieldName | |
|
|
361
|
+
| `menu-slot` | menuSlot | |
|
|
362
|
+
| `position` | position | |
|
|
363
|
+
|
|
364
|
+
<hr/>
|
|
365
|
+
|
|
366
|
+
## class: `TsTableColumnBreakpointCellView`
|
|
367
|
+
|
|
368
|
+
### Superclass
|
|
369
|
+
|
|
370
|
+
| Name | Module | Package |
|
|
371
|
+
| --------------- | ------ | ---------------------------------------------------------- |
|
|
372
|
+
| `TableCellView` | | @ni/nimble-components/dist/esm/table-column/base/cell-view |
|
|
373
|
+
|
|
374
|
+
### Fields
|
|
375
|
+
|
|
376
|
+
| Name | Privacy | Type | Default | Description | Inherited From |
|
|
377
|
+
| ------------------ | ------- | --------------- | ------- | ------------------------------------------ | -------------- |
|
|
378
|
+
| `open` | public | `boolean` | `false` | Specifies whether or not the menu is open. | |
|
|
379
|
+
| `tabbableChildren` | public | `HTMLElement[]` | | | |
|
|
380
|
+
|
|
381
|
+
### Methods
|
|
382
|
+
|
|
383
|
+
| Name | Privacy | Description | Parameters | Return | Inherited From |
|
|
384
|
+
| --------------------------- | ------- | ----------- | ----------------------------------------------------------------------- | --------- | -------------- |
|
|
385
|
+
| `regionLoadedHandler` | public | | | `void` | |
|
|
386
|
+
| `regionChanged` | public | | `prev: AnchoredRegion \| undefined, _next: AnchoredRegion \| undefined` | `void` | |
|
|
387
|
+
| `buttonChanged` | public | | | `void` | |
|
|
388
|
+
| `focusoutHandler` | public | | `e: FocusEvent` | `boolean` | |
|
|
389
|
+
| `contextMenuKeyDownHandler` | public | | `e: KeyboardEvent` | `boolean` | |
|
|
390
|
+
| `onContextMenuChange` | public | | `event: Event` | `void` | |
|
|
391
|
+
|
|
392
|
+
### Attributes
|
|
393
|
+
|
|
394
|
+
| Name | Field | Inherited From |
|
|
395
|
+
| ------ | ----- | -------------- |
|
|
396
|
+
| `open` | open | |
|
|
397
|
+
|
|
398
|
+
<hr/>
|
package/dist/esm/ts/all-ts.d.ts
CHANGED
package/dist/esm/ts/all-ts.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-ts.js","sourceRoot":"","sources":["../../../src/ts/all-ts.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC","sourcesContent":["import './icon-dynamic';\n"]}
|
|
1
|
+
{"version":3,"file":"all-ts.js","sourceRoot":"","sources":["../../../src/ts/all-ts.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,2BAA2B,CAAC","sourcesContent":["import './icon-dynamic';\nimport './table-column/breakpoint';\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { TableCellView } from '@ni/nimble-components/dist/esm/table-column/base/cell-view';
|
|
2
|
+
import type { AnchoredRegion } from '@ni/nimble-components/dist/esm/anchored-region';
|
|
3
|
+
import { type MenuButtonPosition as BreakpointMenuPosition } from '@ni/nimble-components/dist/esm/menu-button/types';
|
|
4
|
+
import { BreakpointState } from '../types';
|
|
5
|
+
import type { TsTableColumnBreakpointCellRecord, TsTableColumnBreakpointColumnConfig } from '..';
|
|
6
|
+
declare global {
|
|
7
|
+
interface HTMLElementTagNameMap {
|
|
8
|
+
'ok-ts-table-column-breakpoint-cell-view': TsTableColumnBreakpointCellView;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Cell view for the breakpoint column that renders a clickable breakpoint indicator.
|
|
13
|
+
*/
|
|
14
|
+
export declare class TsTableColumnBreakpointCellView extends TableCellView<TsTableColumnBreakpointCellRecord, TsTableColumnBreakpointColumnConfig> {
|
|
15
|
+
private static readonly menuKeyAlias;
|
|
16
|
+
private static readonly contextMenuKeyAlias;
|
|
17
|
+
/** @internal */
|
|
18
|
+
button?: HTMLButtonElement;
|
|
19
|
+
/**
|
|
20
|
+
* Specifies whether or not the menu is open.
|
|
21
|
+
*/
|
|
22
|
+
open: boolean;
|
|
23
|
+
/** @internal */
|
|
24
|
+
readonly region?: AnchoredRegion;
|
|
25
|
+
/** @internal */
|
|
26
|
+
readonly slottedMenus?: HTMLElement[];
|
|
27
|
+
private focusLastItemWhenOpened;
|
|
28
|
+
/** @internal */
|
|
29
|
+
private readonly breakpointEnabledString;
|
|
30
|
+
/** @internal */
|
|
31
|
+
private readonly breakpointDisabledString;
|
|
32
|
+
/** @internal */
|
|
33
|
+
private readonly breakpointHitString;
|
|
34
|
+
/** @internal */
|
|
35
|
+
private readonly breakpointConditionalString;
|
|
36
|
+
/** @internal */
|
|
37
|
+
private readonly breakpointHitDisabledString;
|
|
38
|
+
/** @internal */
|
|
39
|
+
private readonly breakpointAddString;
|
|
40
|
+
/** @internal */
|
|
41
|
+
private readonly breakpointRemoveString;
|
|
42
|
+
/** @internal */
|
|
43
|
+
get currentState(): BreakpointState;
|
|
44
|
+
/** @internal */
|
|
45
|
+
get tooltipText(): string;
|
|
46
|
+
/** @internal */
|
|
47
|
+
get ariaLabelText(): string;
|
|
48
|
+
/** @internal */
|
|
49
|
+
get menuPosition(): BreakpointMenuPosition;
|
|
50
|
+
get tabbableChildren(): HTMLElement[];
|
|
51
|
+
/** @internal */
|
|
52
|
+
onButtonClick(event: Event): void;
|
|
53
|
+
/** @internal */
|
|
54
|
+
onContextMenu(event: Event): void;
|
|
55
|
+
/** @internal */
|
|
56
|
+
onKeyDown(event: KeyboardEvent): boolean;
|
|
57
|
+
regionLoadedHandler(): void;
|
|
58
|
+
regionChanged(prev: AnchoredRegion | undefined, _next: AnchoredRegion | undefined): void;
|
|
59
|
+
buttonChanged(): void;
|
|
60
|
+
focusoutHandler(e: FocusEvent): boolean;
|
|
61
|
+
contextMenuKeyDownHandler(e: KeyboardEvent): boolean;
|
|
62
|
+
onContextMenuChange(event: Event): void;
|
|
63
|
+
private getMenu;
|
|
64
|
+
private isSlotElement;
|
|
65
|
+
private focusMenu;
|
|
66
|
+
private focusLastMenuItem;
|
|
67
|
+
private emitToggle;
|
|
68
|
+
private requestContextMenu;
|
|
69
|
+
private openMenuFromColumnSlot;
|
|
70
|
+
private readonly menuChangeHandler;
|
|
71
|
+
private getRequestedStateFromEvent;
|
|
72
|
+
}
|
|
73
|
+
export declare const tsTableColumnBreakpointCellViewTag = "ok-ts-table-column-breakpoint-cell-view";
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { DesignSystem } from '@ni/fast-foundation';
|
|
3
|
+
import { TableCellView } from '@ni/nimble-components/dist/esm/table-column/base/cell-view';
|
|
4
|
+
import { attr, observable } from '@ni/fast-element';
|
|
5
|
+
import { MenuButtonPosition } from '@ni/nimble-components/dist/esm/menu-button/types';
|
|
6
|
+
import { template } from './template';
|
|
7
|
+
import { styles } from './styles';
|
|
8
|
+
import { BreakpointState, breakpointCellViewMenuSlotName, breakpointMenuItemStateAttributeName } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* Cell view for the breakpoint column that renders a clickable breakpoint indicator.
|
|
11
|
+
*/
|
|
12
|
+
export class TsTableColumnBreakpointCellView extends TableCellView {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
/**
|
|
16
|
+
* Specifies whether or not the menu is open.
|
|
17
|
+
*/
|
|
18
|
+
this.open = false;
|
|
19
|
+
this.focusLastItemWhenOpened = false;
|
|
20
|
+
/** @internal */
|
|
21
|
+
this.breakpointEnabledString = 'Breakpoint enabled';
|
|
22
|
+
/** @internal */
|
|
23
|
+
this.breakpointDisabledString = 'Breakpoint disabled';
|
|
24
|
+
/** @internal */
|
|
25
|
+
this.breakpointHitString = 'Breakpoint hit';
|
|
26
|
+
/** @internal */
|
|
27
|
+
this.breakpointConditionalString = 'Conditional breakpoint';
|
|
28
|
+
/** @internal */
|
|
29
|
+
this.breakpointHitDisabledString = 'Breakpoint hit (disabled)';
|
|
30
|
+
/** @internal */
|
|
31
|
+
this.breakpointAddString = 'Add breakpoint';
|
|
32
|
+
/** @internal */
|
|
33
|
+
this.breakpointRemoveString = 'Remove breakpoint';
|
|
34
|
+
this.menuChangeHandler = () => {
|
|
35
|
+
this.open = false;
|
|
36
|
+
this.button?.focus();
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** @internal */
|
|
40
|
+
get currentState() {
|
|
41
|
+
const value = this.cellRecord?.value;
|
|
42
|
+
if (value && Object.values(BreakpointState).includes(value)) {
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
return BreakpointState.off;
|
|
46
|
+
}
|
|
47
|
+
/** @internal */
|
|
48
|
+
get tooltipText() {
|
|
49
|
+
if (this.currentState === BreakpointState.off) {
|
|
50
|
+
return this.breakpointAddString;
|
|
51
|
+
}
|
|
52
|
+
return this.breakpointRemoveString;
|
|
53
|
+
}
|
|
54
|
+
/** @internal */
|
|
55
|
+
get ariaLabelText() {
|
|
56
|
+
switch (this.currentState) {
|
|
57
|
+
case BreakpointState.enabled:
|
|
58
|
+
return this.breakpointEnabledString;
|
|
59
|
+
case BreakpointState.disabled:
|
|
60
|
+
return this.breakpointDisabledString;
|
|
61
|
+
case BreakpointState.hit:
|
|
62
|
+
return this.breakpointHitString;
|
|
63
|
+
case BreakpointState.conditional:
|
|
64
|
+
return this.breakpointConditionalString;
|
|
65
|
+
case BreakpointState.hitDisabled:
|
|
66
|
+
return this.breakpointHitDisabledString;
|
|
67
|
+
default:
|
|
68
|
+
return this.breakpointAddString;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** @internal */
|
|
72
|
+
get menuPosition() {
|
|
73
|
+
return this.columnConfig?.position ?? MenuButtonPosition.auto;
|
|
74
|
+
}
|
|
75
|
+
get tabbableChildren() {
|
|
76
|
+
if (this.button) {
|
|
77
|
+
return [this.button];
|
|
78
|
+
}
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
/** @internal */
|
|
82
|
+
onButtonClick(event) {
|
|
83
|
+
event.stopPropagation();
|
|
84
|
+
const oldState = this.currentState;
|
|
85
|
+
const newState = oldState === BreakpointState.off
|
|
86
|
+
? BreakpointState.enabled
|
|
87
|
+
: BreakpointState.off;
|
|
88
|
+
this.emitToggle(oldState, newState);
|
|
89
|
+
}
|
|
90
|
+
/** @internal */
|
|
91
|
+
onContextMenu(event) {
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
event.stopPropagation();
|
|
94
|
+
this.requestContextMenu();
|
|
95
|
+
}
|
|
96
|
+
/** @internal */
|
|
97
|
+
onKeyDown(event) {
|
|
98
|
+
if ((event.key === 'F10' && event.shiftKey)
|
|
99
|
+
|| event.key === TsTableColumnBreakpointCellView.menuKeyAlias
|
|
100
|
+
|| (event.key === TsTableColumnBreakpointCellView.contextMenuKeyAlias)) {
|
|
101
|
+
event.preventDefault();
|
|
102
|
+
event.stopPropagation();
|
|
103
|
+
this.requestContextMenu();
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
if (event.key === 'F9' || ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'b')) {
|
|
107
|
+
event.preventDefault();
|
|
108
|
+
event.stopPropagation();
|
|
109
|
+
this.onButtonClick(event);
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
if (event.key === 'ArrowDown') {
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
event.stopPropagation();
|
|
115
|
+
this.focusLastItemWhenOpened = false;
|
|
116
|
+
this.requestContextMenu();
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
if (event.key === 'ArrowUp') {
|
|
120
|
+
event.preventDefault();
|
|
121
|
+
event.stopPropagation();
|
|
122
|
+
this.focusLastItemWhenOpened = true;
|
|
123
|
+
this.requestContextMenu();
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
regionLoadedHandler() {
|
|
129
|
+
if (this.focusLastItemWhenOpened) {
|
|
130
|
+
this.focusLastItemWhenOpened = false;
|
|
131
|
+
this.focusLastMenuItem();
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this.focusMenu();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
regionChanged(prev, _next) {
|
|
138
|
+
if (prev) {
|
|
139
|
+
prev.removeEventListener('change', this.menuChangeHandler, { capture: true });
|
|
140
|
+
}
|
|
141
|
+
if (this.region) {
|
|
142
|
+
this.region.anchorElement = this.button ?? this;
|
|
143
|
+
this.region.addEventListener('change', this.menuChangeHandler, { capture: true });
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
buttonChanged() {
|
|
147
|
+
if (this.region) {
|
|
148
|
+
this.region.anchorElement = this.button ?? this;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
focusoutHandler(e) {
|
|
152
|
+
if (!this.open) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
const focusTarget = e.relatedTarget;
|
|
156
|
+
if (!this.contains(focusTarget)
|
|
157
|
+
&& !this.region?.contains(focusTarget)
|
|
158
|
+
&& !this.getMenu()?.contains(focusTarget)) {
|
|
159
|
+
this.open = false;
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
contextMenuKeyDownHandler(e) {
|
|
165
|
+
switch (e.key) {
|
|
166
|
+
case 'Escape':
|
|
167
|
+
this.open = false;
|
|
168
|
+
this.button?.focus();
|
|
169
|
+
return false;
|
|
170
|
+
default:
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
onContextMenuChange(event) {
|
|
175
|
+
const requestedState = this.getRequestedStateFromEvent(event);
|
|
176
|
+
if (!requestedState) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const detail = {
|
|
180
|
+
recordId: this.recordId,
|
|
181
|
+
requestedState,
|
|
182
|
+
currentState: this.currentState
|
|
183
|
+
};
|
|
184
|
+
this.$emit('breakpoint-column-state-change-requested', detail);
|
|
185
|
+
}
|
|
186
|
+
getMenu() {
|
|
187
|
+
if (!this.slottedMenus || this.slottedMenus.length === 0) {
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
let currentItem = this.slottedMenus[0];
|
|
191
|
+
while (currentItem) {
|
|
192
|
+
if (currentItem.getAttribute('role') === 'menu') {
|
|
193
|
+
return currentItem;
|
|
194
|
+
}
|
|
195
|
+
if (this.isSlotElement(currentItem)) {
|
|
196
|
+
const firstNode = currentItem.assignedNodes()[0];
|
|
197
|
+
if (firstNode instanceof HTMLElement) {
|
|
198
|
+
currentItem = firstNode;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
currentItem = undefined;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
isSlotElement(element) {
|
|
211
|
+
return element?.nodeName === 'SLOT';
|
|
212
|
+
}
|
|
213
|
+
focusMenu() {
|
|
214
|
+
this.getMenu()?.focus();
|
|
215
|
+
}
|
|
216
|
+
focusLastMenuItem() {
|
|
217
|
+
const menuItems = this.getMenu()?.querySelectorAll('[role=menuitem]');
|
|
218
|
+
if (menuItems && menuItems.length > 0) {
|
|
219
|
+
const lastMenuItem = menuItems[menuItems.length - 1];
|
|
220
|
+
lastMenuItem.focus();
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
emitToggle(oldState, newState) {
|
|
224
|
+
const detail = {
|
|
225
|
+
recordId: this.recordId,
|
|
226
|
+
newState,
|
|
227
|
+
oldState
|
|
228
|
+
};
|
|
229
|
+
this.$emit('breakpoint-column-toggle', detail);
|
|
230
|
+
}
|
|
231
|
+
requestContextMenu() {
|
|
232
|
+
this.openMenuFromColumnSlot();
|
|
233
|
+
}
|
|
234
|
+
openMenuFromColumnSlot() {
|
|
235
|
+
const configuredSlotName = this.columnConfig?.menuSlot;
|
|
236
|
+
if (!configuredSlotName) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
const eventDetail = {
|
|
240
|
+
slots: [
|
|
241
|
+
{
|
|
242
|
+
name: configuredSlotName,
|
|
243
|
+
slot: breakpointCellViewMenuSlotName
|
|
244
|
+
}
|
|
245
|
+
]
|
|
246
|
+
};
|
|
247
|
+
this.$emit('cell-view-slots-request', eventDetail);
|
|
248
|
+
this.open = true;
|
|
249
|
+
}
|
|
250
|
+
getRequestedStateFromEvent(event) {
|
|
251
|
+
const target = event.target;
|
|
252
|
+
if (!(target instanceof HTMLElement)) {
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
const stateElement = target.closest(`[${breakpointMenuItemStateAttributeName}]`);
|
|
256
|
+
if (!stateElement) {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
const requestedState = stateElement.getAttribute(breakpointMenuItemStateAttributeName);
|
|
260
|
+
if (requestedState && Object.values(BreakpointState).includes(requestedState)) {
|
|
261
|
+
return requestedState;
|
|
262
|
+
}
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
TsTableColumnBreakpointCellView.menuKeyAlias = 'Menu';
|
|
267
|
+
TsTableColumnBreakpointCellView.contextMenuKeyAlias = 'ContextMenu';
|
|
268
|
+
__decorate([
|
|
269
|
+
attr({ mode: 'boolean' })
|
|
270
|
+
], TsTableColumnBreakpointCellView.prototype, "open", void 0);
|
|
271
|
+
__decorate([
|
|
272
|
+
observable
|
|
273
|
+
], TsTableColumnBreakpointCellView.prototype, "region", void 0);
|
|
274
|
+
__decorate([
|
|
275
|
+
observable
|
|
276
|
+
], TsTableColumnBreakpointCellView.prototype, "slottedMenus", void 0);
|
|
277
|
+
__decorate([
|
|
278
|
+
observable
|
|
279
|
+
], TsTableColumnBreakpointCellView.prototype, "breakpointEnabledString", void 0);
|
|
280
|
+
__decorate([
|
|
281
|
+
observable
|
|
282
|
+
], TsTableColumnBreakpointCellView.prototype, "breakpointDisabledString", void 0);
|
|
283
|
+
__decorate([
|
|
284
|
+
observable
|
|
285
|
+
], TsTableColumnBreakpointCellView.prototype, "breakpointHitString", void 0);
|
|
286
|
+
__decorate([
|
|
287
|
+
observable
|
|
288
|
+
], TsTableColumnBreakpointCellView.prototype, "breakpointConditionalString", void 0);
|
|
289
|
+
__decorate([
|
|
290
|
+
observable
|
|
291
|
+
], TsTableColumnBreakpointCellView.prototype, "breakpointHitDisabledString", void 0);
|
|
292
|
+
__decorate([
|
|
293
|
+
observable
|
|
294
|
+
], TsTableColumnBreakpointCellView.prototype, "breakpointAddString", void 0);
|
|
295
|
+
__decorate([
|
|
296
|
+
observable
|
|
297
|
+
], TsTableColumnBreakpointCellView.prototype, "breakpointRemoveString", void 0);
|
|
298
|
+
const tsTableColumnBreakpointCellView = TsTableColumnBreakpointCellView.compose({
|
|
299
|
+
baseName: 'ts-table-column-breakpoint-cell-view',
|
|
300
|
+
template,
|
|
301
|
+
styles
|
|
302
|
+
});
|
|
303
|
+
DesignSystem.getOrCreate().withPrefix('ok').register(tsTableColumnBreakpointCellView());
|
|
304
|
+
export const tsTableColumnBreakpointCellViewTag = 'ok-ts-table-column-breakpoint-cell-view';
|
|
305
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("@ni/fast-element").ElementStyles;
|