@tylertech/forge 2.19.1 → 2.20.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/custom-elements.json +120 -20
- package/dist/esm/app-bar/help-button/index.js +1 -1
- package/dist/esm/app-bar/index.js +1 -1
- package/dist/esm/autocomplete/index.js +1 -1
- package/dist/esm/chip-field/index.js +1 -1
- package/dist/esm/chunks/{chunk.P4VJUJQN.js → chunk.2T6HVSO4.js} +2 -2
- package/dist/esm/chunks/{chunk.JMRXBELV.js → chunk.2VWASAUU.js} +2 -2
- package/dist/esm/chunks/{chunk.JMRXBELV.js.map → chunk.2VWASAUU.js.map} +3 -3
- package/dist/esm/chunks/{chunk.IASYHPZ4.js → chunk.4E4ZOFQI.js} +2 -2
- package/dist/esm/chunks/{chunk.IASYHPZ4.js.map → chunk.4E4ZOFQI.js.map} +1 -1
- package/dist/esm/chunks/{chunk.54KXJVRY.js → chunk.4HWB754J.js} +2 -2
- package/dist/esm/chunks/{chunk.GEWDZDXN.js → chunk.6G4DOKR2.js} +2 -2
- package/dist/esm/chunks/{chunk.GEWDZDXN.js.map → chunk.6G4DOKR2.js.map} +3 -3
- package/dist/esm/chunks/{chunk.2EAQ36QO.js → chunk.FCTKNIBN.js} +2 -2
- package/dist/esm/chunks/{chunk.2EAQ36QO.js.map → chunk.FCTKNIBN.js.map} +2 -2
- package/dist/esm/chunks/{chunk.XAPKK4ZJ.js → chunk.G6GRI7UL.js} +2 -2
- package/dist/esm/chunks/{chunk.ZDTJPNFM.js → chunk.HGGP6G7L.js} +2 -2
- package/dist/esm/chunks/chunk.IX2UHMIM.js +7 -0
- package/dist/esm/chunks/chunk.IX2UHMIM.js.map +7 -0
- package/dist/esm/chunks/{chunk.P67RC5S3.js → chunk.L3SL4NW6.js} +2 -2
- package/dist/esm/chunks/chunk.L52XPVYZ.js +7 -0
- package/dist/esm/chunks/chunk.L52XPVYZ.js.map +7 -0
- package/dist/esm/chunks/{chunk.3NHRJPT4.js → chunk.LM57IEFE.js} +2 -2
- package/dist/esm/chunks/{chunk.BJRQ67AD.js → chunk.M2ATVI24.js} +2 -2
- package/dist/esm/chunks/{chunk.PAH2OIYV.js → chunk.O7IKUHRR.js} +2 -2
- package/dist/esm/chunks/{chunk.23QPY6PU.js → chunk.SZNMBPMR.js} +1 -1
- package/dist/esm/chunks/{chunk.23QPY6PU.js.map → chunk.SZNMBPMR.js.map} +2 -2
- package/dist/esm/chunks/chunk.XY3WCDVX.js +7 -0
- package/dist/esm/chunks/chunk.XY3WCDVX.js.map +7 -0
- package/dist/esm/chunks/chunk.ZWL2Q7E6.js +7 -0
- package/dist/esm/chunks/chunk.ZWL2Q7E6.js.map +7 -0
- package/dist/esm/date-picker/index.js +1 -1
- package/dist/esm/date-range-picker/index.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/label-value/index.js +1 -1
- package/dist/esm/menu/index.js +1 -1
- package/dist/esm/paginator/index.js +1 -1
- package/dist/esm/quantity-field/index.js +1 -1
- package/dist/esm/select/core/index.js +1 -1
- package/dist/esm/select/index.js +1 -1
- package/dist/esm/select/select/index.js +1 -1
- package/dist/esm/select/select-dropdown/index.js +1 -1
- package/dist/esm/split-view/index.js +1 -1
- package/dist/esm/split-view/split-view/index.js +1 -1
- package/dist/esm/split-view/split-view-panel/index.js +1 -1
- package/dist/esm/stepper/index.js +1 -1
- package/dist/esm/stepper/stepper/index.js +1 -1
- package/dist/esm/table/index.js +1 -1
- package/dist/esm/text-field/index.js +1 -1
- package/dist/esm/time-picker/index.js +1 -1
- package/dist/forge.css +1 -1
- package/dist/table/forge-table.css +1 -1
- package/esm/autocomplete/autocomplete-foundation.js +2 -2
- package/esm/chip-field/chip-field-constants.d.ts +3 -0
- package/esm/chip-field/chip-field-constants.js +4 -0
- package/esm/chip-field/chip-field-foundation.d.ts +5 -0
- package/esm/chip-field/chip-field-foundation.js +20 -1
- package/esm/chip-field/chip-field.d.ts +5 -0
- package/esm/chip-field/chip-field.js +19 -1
- package/esm/field/field-constants.d.ts +8 -0
- package/esm/field/field-constants.js +10 -8
- package/esm/menu/menu-foundation.js +0 -4
- package/esm/paginator/paginator-adapter.d.ts +4 -2
- package/esm/paginator/paginator-adapter.js +21 -8
- package/esm/paginator/paginator-foundation.d.ts +2 -0
- package/esm/paginator/paginator-foundation.js +19 -16
- package/esm/paginator/paginator.d.ts +1 -0
- package/esm/paginator/paginator.js +3 -0
- package/esm/select/core/base-select-foundation.js +3 -1
- package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
- package/esm/stepper/stepper/stepper-foundation.js +1 -1
- package/esm/table/table-foundation.d.ts +2 -0
- package/esm/table/table-foundation.js +17 -6
- package/esm/table/table-utils.js +13 -1
- package/esm/table/types.d.ts +1 -0
- package/package.json +1 -1
- package/styles/table/_mixins.scss +20 -2
- package/dist/esm/chunks/chunk.GO5A4GKZ.js +0 -7
- package/dist/esm/chunks/chunk.GO5A4GKZ.js.map +0 -7
- package/dist/esm/chunks/chunk.PBWUHK7Q.js +0 -7
- package/dist/esm/chunks/chunk.PBWUHK7Q.js.map +0 -7
- package/dist/esm/chunks/chunk.PILDKQOE.js +0 -7
- package/dist/esm/chunks/chunk.PILDKQOE.js.map +0 -7
- package/dist/esm/chunks/chunk.ROWBKHIO.js +0 -7
- package/dist/esm/chunks/chunk.ROWBKHIO.js.map +0 -7
- /package/dist/esm/chunks/{chunk.P4VJUJQN.js.map → chunk.2T6HVSO4.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.54KXJVRY.js.map → chunk.4HWB754J.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.XAPKK4ZJ.js.map → chunk.G6GRI7UL.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.ZDTJPNFM.js.map → chunk.HGGP6G7L.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.P67RC5S3.js.map → chunk.L3SL4NW6.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.3NHRJPT4.js.map → chunk.LM57IEFE.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.BJRQ67AD.js.map → chunk.M2ATVI24.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.PAH2OIYV.js.map → chunk.O7IKUHRR.js.map} +0 -0
|
@@ -12,6 +12,14 @@ export declare const FIELD_CONSTANTS: {
|
|
|
12
12
|
REQUIRED: string;
|
|
13
13
|
HOST_LABEL_FLOATING: string;
|
|
14
14
|
};
|
|
15
|
+
observedAttributes: {
|
|
16
|
+
DENSITY: string;
|
|
17
|
+
FLOAT_LABEL_TYPE: string;
|
|
18
|
+
SHAPE: string;
|
|
19
|
+
INVALID: string;
|
|
20
|
+
REQUIRED: string;
|
|
21
|
+
HOST_LABEL_FLOATING: string;
|
|
22
|
+
};
|
|
15
23
|
observedInputAttributes: string[];
|
|
16
24
|
selectors: {
|
|
17
25
|
INPUT: string;
|
|
@@ -3,14 +3,6 @@
|
|
|
3
3
|
* Copyright 2023 Tyler Technologies, Inc.
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
const attributes = {
|
|
7
|
-
DENSITY: 'density',
|
|
8
|
-
FLOAT_LABEL_TYPE: 'float-label-type',
|
|
9
|
-
SHAPE: 'shape',
|
|
10
|
-
INVALID: 'invalid',
|
|
11
|
-
REQUIRED: 'required',
|
|
12
|
-
HOST_LABEL_FLOATING: `forge-label-floating`
|
|
13
|
-
};
|
|
14
6
|
const selectors = {
|
|
15
7
|
INPUT: 'input,textarea'
|
|
16
8
|
};
|
|
@@ -32,8 +24,18 @@ const classes = {
|
|
|
32
24
|
ROOMY: 'forge-field--roomy',
|
|
33
25
|
LABEL: 'forge-field--label'
|
|
34
26
|
};
|
|
27
|
+
const observedAttributes = {
|
|
28
|
+
DENSITY: 'density',
|
|
29
|
+
FLOAT_LABEL_TYPE: 'float-label-type',
|
|
30
|
+
SHAPE: 'shape',
|
|
31
|
+
INVALID: 'invalid',
|
|
32
|
+
REQUIRED: 'required',
|
|
33
|
+
HOST_LABEL_FLOATING: `forge-label-floating`
|
|
34
|
+
};
|
|
35
|
+
const attributes = Object.assign({}, observedAttributes);
|
|
35
36
|
export const FIELD_CONSTANTS = {
|
|
36
37
|
attributes,
|
|
38
|
+
observedAttributes,
|
|
37
39
|
observedInputAttributes,
|
|
38
40
|
selectors,
|
|
39
41
|
classes
|
|
@@ -413,8 +413,6 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
|
|
|
413
413
|
else {
|
|
414
414
|
this.optionsFactory = undefined;
|
|
415
415
|
// Intentional shallow copy of member properties. These member objects have properties that are references to functions.
|
|
416
|
-
// The typical JSON.parse(JSON.stringify(object)) will not work here. If this becomes an issue we'll add a deepClone
|
|
417
|
-
// function to the core library.
|
|
418
416
|
this._options = options.map(o => (Object.assign({}, o)));
|
|
419
417
|
if (this._open) {
|
|
420
418
|
this._mapIconToLeadingIcon();
|
|
@@ -433,8 +431,6 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
|
|
|
433
431
|
return [];
|
|
434
432
|
}
|
|
435
433
|
// Intentional shallow copy of member properties. These member objects have properties that are references to functions.
|
|
436
|
-
// The typical JSON.parse(JSON.stringify(object)) will not work here. If this becomes an issue we'll add a deepClone
|
|
437
|
-
// function to the core library.
|
|
438
434
|
return this._flatOptions.map(o => (Object.assign({}, o)));
|
|
439
435
|
}
|
|
440
436
|
set optionsFactory(factory) {
|
|
@@ -42,7 +42,8 @@ export interface IPaginatorAdapter extends IBaseAdapter {
|
|
|
42
42
|
enableLastPageButton(): void;
|
|
43
43
|
setAlternative(alternative: boolean): void;
|
|
44
44
|
setAlignment(alignment: PaginatorAlternativeAlignment): void;
|
|
45
|
-
|
|
45
|
+
hasFocus(): boolean;
|
|
46
|
+
handleFocusMove(from?: PaginatorFieldIdentifier | null, options?: FocusOptions): void;
|
|
46
47
|
}
|
|
47
48
|
/**
|
|
48
49
|
* Provides facilities for interacting with the internal DOM of `PaginatorComponent`.
|
|
@@ -95,6 +96,7 @@ export declare class PaginatorAdapter extends BaseAdapter<IPaginatorComponent> i
|
|
|
95
96
|
enableLastPageButton(): void;
|
|
96
97
|
setAlternative(alternative: boolean): void;
|
|
97
98
|
setAlignment(alignment: PaginatorAlternativeAlignment): void;
|
|
98
|
-
|
|
99
|
+
hasFocus(): boolean;
|
|
100
|
+
handleFocusMove(from?: PaginatorFieldIdentifier, options?: FocusOptions): void;
|
|
99
101
|
private _tryFocus;
|
|
100
102
|
}
|
|
@@ -146,8 +146,11 @@ export class PaginatorAdapter extends BaseAdapter {
|
|
|
146
146
|
break;
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
hasFocus() {
|
|
150
|
+
return this._component.matches(':focus');
|
|
151
|
+
}
|
|
152
|
+
handleFocusMove(from, options) {
|
|
153
|
+
if (from && !this.hasFocus()) {
|
|
151
154
|
return; // We can only move focus elsewhere within the element if the element already contains focus
|
|
152
155
|
}
|
|
153
156
|
switch (from) {
|
|
@@ -157,7 +160,7 @@ export class PaginatorAdapter extends BaseAdapter {
|
|
|
157
160
|
this._lastPageButton,
|
|
158
161
|
this._previousPageButton,
|
|
159
162
|
this._pageSizeSelect
|
|
160
|
-
]);
|
|
163
|
+
], options);
|
|
161
164
|
break;
|
|
162
165
|
case 'last':
|
|
163
166
|
this._tryFocus([
|
|
@@ -165,7 +168,7 @@ export class PaginatorAdapter extends BaseAdapter {
|
|
|
165
168
|
this._firstPageButton,
|
|
166
169
|
this._nextPageButton,
|
|
167
170
|
this._pageSizeSelect
|
|
168
|
-
]);
|
|
171
|
+
], options);
|
|
169
172
|
break;
|
|
170
173
|
case 'previous':
|
|
171
174
|
this._tryFocus([
|
|
@@ -181,7 +184,7 @@ export class PaginatorAdapter extends BaseAdapter {
|
|
|
181
184
|
this._firstPageButton,
|
|
182
185
|
this._lastPageButton,
|
|
183
186
|
this._pageSizeSelect
|
|
184
|
-
]);
|
|
187
|
+
], options);
|
|
185
188
|
break;
|
|
186
189
|
case 'page-size':
|
|
187
190
|
this._tryFocus([
|
|
@@ -189,14 +192,24 @@ export class PaginatorAdapter extends BaseAdapter {
|
|
|
189
192
|
this._lastPageButton,
|
|
190
193
|
this._firstPageButton,
|
|
191
194
|
this._previousPageButton
|
|
192
|
-
]);
|
|
195
|
+
], options);
|
|
196
|
+
break;
|
|
197
|
+
default:
|
|
198
|
+
this._tryFocus([
|
|
199
|
+
this._firstPageButton,
|
|
200
|
+
this._previousPageButton,
|
|
201
|
+
this._nextPageButton,
|
|
202
|
+
this._lastPageButton,
|
|
203
|
+
this._pageSizeSelect
|
|
204
|
+
], options);
|
|
193
205
|
break;
|
|
194
206
|
}
|
|
195
207
|
}
|
|
196
|
-
_tryFocus(elements) {
|
|
208
|
+
_tryFocus(elements, options) {
|
|
209
|
+
const preventScroll = typeof (options === null || options === void 0 ? void 0 : options.preventScroll) === 'boolean' ? options.preventScroll : true;
|
|
197
210
|
for (const el of elements) {
|
|
198
211
|
if (el && el.isConnected && !el.disabled) {
|
|
199
|
-
el.focus();
|
|
212
|
+
el.focus(Object.assign(Object.assign({}, options), { preventScroll }));
|
|
200
213
|
return;
|
|
201
214
|
}
|
|
202
215
|
}
|
|
@@ -13,6 +13,7 @@ export interface IPaginatorFoundation extends ICustomElementFoundation {
|
|
|
13
13
|
total: number;
|
|
14
14
|
pageSizeOptions: number[] | boolean;
|
|
15
15
|
pageSizeLabel: string;
|
|
16
|
+
focus(options?: FocusOptions): void;
|
|
16
17
|
}
|
|
17
18
|
export declare class PaginatorFoundation {
|
|
18
19
|
private _adapter;
|
|
@@ -36,6 +37,7 @@ export declare class PaginatorFoundation {
|
|
|
36
37
|
constructor(_adapter: IPaginatorAdapter);
|
|
37
38
|
initialize(): void;
|
|
38
39
|
disconnect(): void;
|
|
40
|
+
focus(options?: FocusOptions): void;
|
|
39
41
|
private _attachListeners;
|
|
40
42
|
private _detachListeners;
|
|
41
43
|
private _onFirstPage;
|
|
@@ -36,6 +36,9 @@ export class PaginatorFoundation {
|
|
|
36
36
|
disconnect() {
|
|
37
37
|
this._detachListeners();
|
|
38
38
|
}
|
|
39
|
+
focus(options) {
|
|
40
|
+
this._adapter.handleFocusMove(null, options);
|
|
41
|
+
}
|
|
39
42
|
_attachListeners() {
|
|
40
43
|
this._adapter.attachPageSizeChangeListener(this._pageSizeListener);
|
|
41
44
|
this._adapter.attachFirstPageListener(this._firstPageListener);
|
|
@@ -58,7 +61,7 @@ export class PaginatorFoundation {
|
|
|
58
61
|
const firstPage = 0;
|
|
59
62
|
const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.FIRST_PAGE, { pageIndex: firstPage });
|
|
60
63
|
if (canPage) {
|
|
61
|
-
this._applyPageIndex(firstPage
|
|
64
|
+
this._applyPageIndex(firstPage);
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
_onPreviousPage(evt) {
|
|
@@ -69,7 +72,7 @@ export class PaginatorFoundation {
|
|
|
69
72
|
const prevPage = this._pageIndex - 1;
|
|
70
73
|
const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PREVIOUS_PAGE, { pageIndex: prevPage });
|
|
71
74
|
if (canPage) {
|
|
72
|
-
this._applyPageIndex(prevPage
|
|
75
|
+
this._applyPageIndex(prevPage);
|
|
73
76
|
}
|
|
74
77
|
}
|
|
75
78
|
_onNextPage(evt) {
|
|
@@ -80,7 +83,7 @@ export class PaginatorFoundation {
|
|
|
80
83
|
const nextPage = this._pageIndex + 1;
|
|
81
84
|
const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.NEXT_PAGE, { pageIndex: nextPage });
|
|
82
85
|
if (canPage) {
|
|
83
|
-
this._applyPageIndex(nextPage
|
|
86
|
+
this._applyPageIndex(nextPage);
|
|
84
87
|
}
|
|
85
88
|
}
|
|
86
89
|
_onLastPage(evt) {
|
|
@@ -91,7 +94,7 @@ export class PaginatorFoundation {
|
|
|
91
94
|
const lastPage = this._getMaxPages();
|
|
92
95
|
const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.LAST_PAGE, { pageIndex: lastPage });
|
|
93
96
|
if (canPage) {
|
|
94
|
-
this._applyPageIndex(lastPage
|
|
97
|
+
this._applyPageIndex(lastPage);
|
|
95
98
|
}
|
|
96
99
|
}
|
|
97
100
|
_onPageSizeChanged(evt) {
|
|
@@ -99,7 +102,7 @@ export class PaginatorFoundation {
|
|
|
99
102
|
const pageSize = Number(evt.detail);
|
|
100
103
|
const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PAGE_SIZE, { pageIndex: 0, pageSize });
|
|
101
104
|
if (canPage) {
|
|
102
|
-
this._applyPageIndex(0
|
|
105
|
+
this._applyPageIndex(0);
|
|
103
106
|
this._applyPageSize(pageSize);
|
|
104
107
|
}
|
|
105
108
|
else {
|
|
@@ -127,32 +130,32 @@ export class PaginatorFoundation {
|
|
|
127
130
|
}
|
|
128
131
|
this._adapter.setRangeLabel(this._rangeLabel);
|
|
129
132
|
}
|
|
130
|
-
_syncInteractionState(
|
|
133
|
+
_syncInteractionState() {
|
|
131
134
|
this._adapter.enableFirstPageButton();
|
|
132
135
|
this._adapter.enablePreviousPageButton();
|
|
133
136
|
this._adapter.enableNextPageButton();
|
|
134
137
|
this._adapter.enableLastPageButton();
|
|
135
138
|
if (!this._hasFirstPage()) {
|
|
136
|
-
if (
|
|
137
|
-
this._adapter.handleFocusMove(
|
|
139
|
+
if (this._adapter.hasFocus()) {
|
|
140
|
+
this._adapter.handleFocusMove('first');
|
|
138
141
|
}
|
|
139
142
|
this._adapter.disableFirstPageButton();
|
|
140
143
|
}
|
|
141
144
|
if (!this._hasPreviousPage()) {
|
|
142
|
-
if (
|
|
143
|
-
this._adapter.handleFocusMove(
|
|
145
|
+
if (this._adapter.hasFocus()) {
|
|
146
|
+
this._adapter.handleFocusMove('previous');
|
|
144
147
|
}
|
|
145
148
|
this._adapter.disablePreviousPageButton();
|
|
146
149
|
}
|
|
147
150
|
if (!this._hasNextPage()) {
|
|
148
|
-
if (
|
|
149
|
-
this._adapter.handleFocusMove(
|
|
151
|
+
if (this._adapter.hasFocus()) {
|
|
152
|
+
this._adapter.handleFocusMove('next');
|
|
150
153
|
}
|
|
151
154
|
this._adapter.disableNextPageButton();
|
|
152
155
|
}
|
|
153
156
|
if (!this._hasLastPage()) {
|
|
154
|
-
if (
|
|
155
|
-
this._adapter.handleFocusMove(
|
|
157
|
+
if (this._adapter.hasFocus()) {
|
|
158
|
+
this._adapter.handleFocusMove('last');
|
|
156
159
|
}
|
|
157
160
|
this._adapter.disableLastPageButton();
|
|
158
161
|
}
|
|
@@ -213,11 +216,11 @@ export class PaginatorFoundation {
|
|
|
213
216
|
this._offset = this._pageIndex * this._pageSize;
|
|
214
217
|
}
|
|
215
218
|
}
|
|
216
|
-
_applyPageIndex(value
|
|
219
|
+
_applyPageIndex(value) {
|
|
217
220
|
this._pageIndex = value;
|
|
218
221
|
this._computeOffset();
|
|
219
222
|
this._updateRangeLabel();
|
|
220
|
-
this._syncInteractionState(
|
|
223
|
+
this._syncInteractionState();
|
|
221
224
|
this._adapter.toggleHostAttribute(PAGINATOR_CONSTANTS.attributes.PAGE_INDEX, this._pageIndex != null, this._pageIndex.toString());
|
|
222
225
|
}
|
|
223
226
|
_applyPageSize(value) {
|
|
@@ -445,7 +445,9 @@ export class BaseSelectFoundation extends ListDropdownAwareFoundation {
|
|
|
445
445
|
}, 300);
|
|
446
446
|
this._options = this._adapter.getOptions();
|
|
447
447
|
// TODO: Enhance this to cycle through closest matches (see the native select)
|
|
448
|
-
const matchedOption = this._flatOptions.find(
|
|
448
|
+
const matchedOption = this._flatOptions.find(({ disabled, label }) => {
|
|
449
|
+
return !disabled && label.trim().toLowerCase().startsWith(this._filterString.trim().toLowerCase());
|
|
450
|
+
});
|
|
449
451
|
if (matchedOption) {
|
|
450
452
|
const optionIndex = this._flatOptions.indexOf(matchedOption);
|
|
451
453
|
if (this._open) {
|
|
@@ -14,7 +14,7 @@ import { SplitViewPanelAdapter } from './split-view-panel-adapter';
|
|
|
14
14
|
import { IconComponent, IconRegistry } from '../../icon';
|
|
15
15
|
import { RippleComponent } from '../../ripple';
|
|
16
16
|
const template = '<template><div class=\"forge-split-view-panel\" id=\"root\" part=\"root\"><div class=\"forge-split-view-panel__handle\" id=\"handle\" part=\"handle\" role=\"separator\" aria-controls=\"content\" aria-grabbed=\"false\" tabindex=\"0\"><forge-icon class=\"forge-split-view-panel__icon\" id=\"icon\" part=\"icon\"></forge-icon><forge-ripple id=\"ripple\" part=\"ripple\"></forge-ripple></div><div class=\"forge-split-view-panel__content\" id=\"content\" part=\"content\" role=\"group\"><slot></slot></div></div></template>';
|
|
17
|
-
const styles = '@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;position:relative;outline:0;overflow:hidden}.mdc-ripple-surface::after,.mdc-ripple-surface::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface::after,.mdc-ripple-surface::before{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-upgraded--unbounded::after,.mdc-ripple-upgraded--unbounded::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{background-color:#000;background-color:var(--mdc-ripple-color,#000)}.mdc-ripple-surface.mdc-ripple-surface--hover::before,.mdc-ripple-surface:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{--mdc-ripple-color:var(--mdc-theme-on-surface)}.forge-split-view-panel{display:-webkit-box;display:flex;width:100%;height:100%;overflow:hidden;contain:paint size}.forge-split-view-panel__handle{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-light,rgba(0,0,0,.54));background-color:#e0e0e0;background-color:var(--forge-theme-border-color,#e0e0e0);display:-webkit-box;display:flex;flex-shrink:0;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;outline:0}.forge-split-view-panel__content{-webkit-box-flex:1;flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:8px;min-width:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:8px;width:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;-webkit-animation-name:ug5dp2m;animation-name:ug5dp2m;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1)}@-webkit-keyframes ug5dp2m{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes ug5dp2m{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;-webkit-animation-name:ug5dp3g;animation-name:ug5dp3g;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1)}@-webkit-keyframes ug5dp3g{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes ug5dp3g{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;-webkit-animation-name:ug5dp49;animation-name:ug5dp49;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-direction:reverse}@-webkit-keyframes ug5dp49{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes ug5dp49{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;-webkit-animation-name:ug5dp4l;animation-name:ug5dp4l;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-direction:reverse}@-webkit-keyframes ug5dp4l{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes ug5dp4l{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}.forge-split-view-panel[orientation=vertical]{min-height:8px;min-height:var(--forge-split-view-handle-width,8px);height:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:8px;height:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;-webkit-animation-name:ug5dp4v;animation-name:ug5dp4v;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1)}@-webkit-keyframes ug5dp4v{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes ug5dp4v{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;-webkit-animation-name:ug5dp5f;animation-name:ug5dp5f;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1)}@-webkit-keyframes ug5dp5f{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes ug5dp5f{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;-webkit-animation-name:ug5dp5u;animation-name:ug5dp5u;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-direction:reverse}@-webkit-keyframes ug5dp5u{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes ug5dp5u{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;-webkit-animation-name:ug5dp69;animation-name:ug5dp69;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-direction:reverse}@-webkit-keyframes ug5dp69{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes ug5dp69{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;-webkit-box-flex:0;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){-webkit-box-flex:1;flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}';
|
|
17
|
+
const styles = '@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;position:relative;outline:0;overflow:hidden}.mdc-ripple-surface::after,.mdc-ripple-surface::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface::after,.mdc-ripple-surface::before{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-upgraded--unbounded::after,.mdc-ripple-upgraded--unbounded::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{background-color:#000;background-color:var(--mdc-ripple-color,#000)}.mdc-ripple-surface.mdc-ripple-surface--hover::before,.mdc-ripple-surface:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{--mdc-ripple-color:var(--mdc-theme-on-surface)}.forge-split-view-panel{display:-webkit-box;display:flex;width:100%;height:100%;overflow:hidden;contain:paint size}.forge-split-view-panel__handle{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-light,rgba(0,0,0,.54));background-color:#e0e0e0;background-color:var(--forge-theme-border-color,#e0e0e0);display:-webkit-box;display:flex;flex-shrink:0;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;outline:0}.forge-split-view-panel__content{-webkit-box-flex:1;flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:8px;min-width:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:8px;width:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;-webkit-animation-name:unhqqyb;animation-name:unhqqyb;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1)}@-webkit-keyframes unhqqyb{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes unhqqyb{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;-webkit-animation-name:unhqqyf;animation-name:unhqqyf;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1)}@-webkit-keyframes unhqqyf{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes unhqqyf{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;-webkit-animation-name:unhqqyw;animation-name:unhqqyw;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-direction:reverse}@-webkit-keyframes unhqqyw{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes unhqqyw{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;-webkit-animation-name:unhqqzk;animation-name:unhqqzk;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-direction:reverse}@-webkit-keyframes unhqqzk{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes unhqqzk{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}.forge-split-view-panel[orientation=vertical]{min-height:8px;min-height:var(--forge-split-view-handle-width,8px);height:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:8px;height:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;-webkit-animation-name:unhqqzz;animation-name:unhqqzz;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1)}@-webkit-keyframes unhqqzz{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes unhqqzz{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;-webkit-animation-name:unhqr00;animation-name:unhqr00;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1)}@-webkit-keyframes unhqr00{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes unhqr00{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;-webkit-animation-name:unhqr0e;animation-name:unhqr0e;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-direction:reverse}@-webkit-keyframes unhqr0e{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes unhqr0e{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;-webkit-animation-name:unhqr13;animation-name:unhqr13;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-direction:reverse}@-webkit-keyframes unhqr13{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes unhqr13{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;-webkit-box-flex:0;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){-webkit-box-flex:1;flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}';
|
|
18
18
|
/**
|
|
19
19
|
* The custom element class behind the `<forge-split-view-panel>` element.
|
|
20
20
|
*
|
|
@@ -55,7 +55,7 @@ export class StepperFoundation {
|
|
|
55
55
|
}
|
|
56
56
|
/** The step configurations. */
|
|
57
57
|
get steps() {
|
|
58
|
-
return
|
|
58
|
+
return this._steps.map(s => (Object.assign({}, s))); // Shallow clone
|
|
59
59
|
}
|
|
60
60
|
set steps(value) {
|
|
61
61
|
if (Array.isArray(value) && value.length > 0) {
|
|
@@ -76,6 +76,7 @@ export declare class TableFoundation implements ITableFoundation {
|
|
|
76
76
|
private _rowDoubleClickListener;
|
|
77
77
|
private _selectRowListener;
|
|
78
78
|
private _selectAllListener;
|
|
79
|
+
private _sortableHeadCellKeydownListener;
|
|
79
80
|
private _headRowMouseDownListener;
|
|
80
81
|
private _headRowContextMenuListener;
|
|
81
82
|
private _documentMouseMoveListener;
|
|
@@ -259,6 +260,7 @@ export declare class TableFoundation implements ITableFoundation {
|
|
|
259
260
|
private _onHeadRowMouseDown;
|
|
260
261
|
private _onMouseMove;
|
|
261
262
|
private _onMouseUp;
|
|
263
|
+
private _onSortableHeadCellKeydown;
|
|
262
264
|
/**
|
|
263
265
|
* Called when a click event is triggered on the table header row.
|
|
264
266
|
* We use this to capture all click events on the row, and determine which
|
|
@@ -42,6 +42,7 @@ export class TableFoundation {
|
|
|
42
42
|
this._rowDoubleClickListener = evt => this._onRowDoubleClick(evt);
|
|
43
43
|
this._selectRowListener = evt => this._onRowSelected(evt);
|
|
44
44
|
this._selectAllListener = evt => this._onSelectAll(evt);
|
|
45
|
+
this._sortableHeadCellKeydownListener = (evt) => this._onSortableHeadCellKeydown(evt);
|
|
45
46
|
this._headRowMouseDownListener = evt => this._onHeadRowMouseDown(evt);
|
|
46
47
|
this._headRowContextMenuListener = evt => this._onHeadRowContextMenu(evt);
|
|
47
48
|
this._documentMouseMoveListener = evt => this._onMouseMove(evt);
|
|
@@ -86,13 +87,11 @@ export class TableFoundation {
|
|
|
86
87
|
this._renderBody();
|
|
87
88
|
}
|
|
88
89
|
get data() {
|
|
89
|
-
return
|
|
90
|
+
return this._data.map(o => (Object.assign({}, o))); // Shallow clone
|
|
90
91
|
}
|
|
91
92
|
/** The column configuration options. */
|
|
92
93
|
set columnConfigurations(value) {
|
|
93
94
|
// Intentional shallow copy of member properties. These member objects have properties that are references to functions.
|
|
94
|
-
// The typical JSON.parse(JSON.stringify(object)) will not work here. If this becomes an issue we'll add a deepClone
|
|
95
|
-
// function to the core library.
|
|
96
95
|
this._columnConfigurations = value.map(cc => (Object.assign({}, cc)));
|
|
97
96
|
// Update hidden column manager
|
|
98
97
|
this._hiddenColumnManager.clear();
|
|
@@ -106,8 +105,6 @@ export class TableFoundation {
|
|
|
106
105
|
}
|
|
107
106
|
get columnConfigurations() {
|
|
108
107
|
// Intentional shallow copy of member properties. These member objects have properties that are references to functions.
|
|
109
|
-
// The typical JSON.parse(JSON.stringify(object)) will not work here. If this becomes an issue we'll add a deepClone
|
|
110
|
-
// function to the core library.
|
|
111
108
|
return this._columnConfigurations.map(cc => (Object.assign({}, cc)));
|
|
112
109
|
}
|
|
113
110
|
/** Gets the visible column configurations. */
|
|
@@ -124,6 +121,7 @@ export class TableFoundation {
|
|
|
124
121
|
doubleClickListener: this._allowRowClick ? this._rowDoubleClickListener : null,
|
|
125
122
|
selectListener: this._select ? this._selectRowListener : null,
|
|
126
123
|
selectAllListener: this._multiselect ? this._selectAllListener : null,
|
|
124
|
+
sortableHeadCellKeydownListener: this._sortableHeadCellKeydownListener,
|
|
127
125
|
headRowMouseDownListener: this._headRowMouseDownListener,
|
|
128
126
|
headRowContextMenuListener: this._headRowContextMenuListener,
|
|
129
127
|
filterListener: this._filter ? this._filterListener : null,
|
|
@@ -699,7 +697,11 @@ export class TableFoundation {
|
|
|
699
697
|
this._adapter.emitHostEvent(TABLE_CONSTANTS.events.SELECT_ALL, data, true, false);
|
|
700
698
|
}
|
|
701
699
|
_onHeadRowContextMenu(evt) {
|
|
702
|
-
|
|
700
|
+
// We only handle this event on MacOS due to the `ctrl+click` combination triggering the contextmenu event...
|
|
701
|
+
// So we only detect that scenario here to still allow for the default context menu on Mac when right-clicking
|
|
702
|
+
if (evt.ctrlKey) {
|
|
703
|
+
evt.preventDefault();
|
|
704
|
+
}
|
|
703
705
|
}
|
|
704
706
|
_onHeadRowMouseDown(evt) {
|
|
705
707
|
if (evt.button !== 0) {
|
|
@@ -764,6 +766,15 @@ export class TableFoundation {
|
|
|
764
766
|
}
|
|
765
767
|
this._headCellMouseDownIndex = undefined;
|
|
766
768
|
}
|
|
769
|
+
_onSortableHeadCellKeydown(evt) {
|
|
770
|
+
if (evt.key === ' ' || evt.key === 'Enter') {
|
|
771
|
+
const composedPath = getEventPath(evt);
|
|
772
|
+
const rowElement = composedPath.find(el => el.tagName === 'TR');
|
|
773
|
+
const thElement = composedPath.find(el => el.tagName === 'TH');
|
|
774
|
+
const cellIndex = Array.from(rowElement.cells).findIndex(c => c === thElement);
|
|
775
|
+
this._onSort(cellIndex);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
767
778
|
/**
|
|
768
779
|
* Called when a click event is triggered on the table header row.
|
|
769
780
|
* We use this to capture all click events on the row, and determine which
|
package/esm/table/table-utils.js
CHANGED
|
@@ -141,7 +141,15 @@ export class TableUtils {
|
|
|
141
141
|
th.scope = 'col';
|
|
142
142
|
addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);
|
|
143
143
|
// We wrap the header text in a div for ease of alignment
|
|
144
|
-
|
|
144
|
+
let cellContainer;
|
|
145
|
+
if (columnConfig.sortable) {
|
|
146
|
+
cellContainer = document.createElement('button');
|
|
147
|
+
cellContainer.type = 'button';
|
|
148
|
+
cellContainer.addEventListener('keydown', tableConfiguration.sortableHeadCellKeydownListener);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
cellContainer = document.createElement('div');
|
|
152
|
+
}
|
|
145
153
|
cellContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_CONTAINER);
|
|
146
154
|
// Add tooltip for multisort
|
|
147
155
|
if (tableConfiguration.multiColumnSort) {
|
|
@@ -236,6 +244,7 @@ export class TableUtils {
|
|
|
236
244
|
*/
|
|
237
245
|
static setSortDirection(tableElement, columnIndex, sortDirection) {
|
|
238
246
|
const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);
|
|
247
|
+
tableElement.querySelectorAll('th[aria-sort]').forEach(th => th.removeAttribute('aria-sort'));
|
|
239
248
|
TableUtils._setColumnSortDirection(cell, sortDirection);
|
|
240
249
|
}
|
|
241
250
|
/**
|
|
@@ -251,9 +260,11 @@ export class TableUtils {
|
|
|
251
260
|
thElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);
|
|
252
261
|
}
|
|
253
262
|
if (!sortDirection || sortDirection === SortDirection.Descending) {
|
|
263
|
+
thElement.setAttribute('aria-sort', 'descending');
|
|
254
264
|
thElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);
|
|
255
265
|
}
|
|
256
266
|
else {
|
|
267
|
+
thElement.setAttribute('aria-sort', 'ascending');
|
|
257
268
|
thElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING);
|
|
258
269
|
}
|
|
259
270
|
}
|
|
@@ -885,6 +896,7 @@ export class TableUtils {
|
|
|
885
896
|
*/
|
|
886
897
|
static removeColumnSort(tableElement, columnIndex) {
|
|
887
898
|
const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);
|
|
899
|
+
cell.removeAttribute('aria-sort');
|
|
888
900
|
// Remove any existing sort direction classes from the existing th element
|
|
889
901
|
if (cell.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING)) {
|
|
890
902
|
cell.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING);
|
package/esm/table/types.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export interface ITableConfiguration {
|
|
|
38
38
|
doubleClickListener: ((evt: Event) => void) | null;
|
|
39
39
|
selectListener: ((evt: Event) => void) | null;
|
|
40
40
|
selectAllListener: ((evt: Event) => void) | null;
|
|
41
|
+
sortableHeadCellKeydownListener: EventListener;
|
|
41
42
|
headRowMouseDownListener: (evt: Event) => void;
|
|
42
43
|
headRowContextMenuListener: (evt: Event) => void;
|
|
43
44
|
filterListener: ((value: any, columnIndex: number) => void) | null;
|
package/package.json
CHANGED
|
@@ -113,10 +113,14 @@
|
|
|
113
113
|
display: none;
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
|
|
116
|
+
|
|
117
117
|
&--sortable {
|
|
118
118
|
@include head-cell-sortable(forge-table-head__cell-sort-icon, forge-table-head__cell__sort-order);
|
|
119
|
-
|
|
119
|
+
|
|
120
|
+
button {
|
|
121
|
+
@include head-cell-sortable-button;
|
|
122
|
+
}
|
|
123
|
+
|
|
120
124
|
&.forge-table-head__cell--sorted-ascending {
|
|
121
125
|
.forge-table-head__cell-sort-icon {
|
|
122
126
|
@include head-cell-sort-icon-ascending;
|
|
@@ -438,6 +442,20 @@
|
|
|
438
442
|
}
|
|
439
443
|
}
|
|
440
444
|
|
|
445
|
+
@mixin head-cell-sortable-button {
|
|
446
|
+
cursor: pointer;
|
|
447
|
+
border: none;
|
|
448
|
+
background: transparent;
|
|
449
|
+
text-align: inherit;
|
|
450
|
+
margin: inherit;
|
|
451
|
+
padding-block: 4px;
|
|
452
|
+
padding-inline: 0;
|
|
453
|
+
font: inherit;
|
|
454
|
+
color: inherit;
|
|
455
|
+
width: 100%;
|
|
456
|
+
outline-offset: 4px;
|
|
457
|
+
}
|
|
458
|
+
|
|
441
459
|
/// The base table body row styles for row interactions.
|
|
442
460
|
@mixin body-row() {
|
|
443
461
|
height: variables.$tbody-row-height;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2023 Tyler Technologies, Inc.
|
|
4
|
-
* License: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
var e={DENSITY:"density",FLOAT_LABEL_TYPE:"float-label-type",SHAPE:"shape",INVALID:"invalid",REQUIRED:"required",HOST_LABEL_FLOATING:"forge-label-floating"},d={INPUT:"input,textarea"},l=["disabled","readonly","value","placeholder"],o={DISABLED:"forge-field--disabled",READONLY:"forge-field--readonly",INPUT_FOCUSED:"forge-field__input--focused",LEADING:"forge-field--leading",TRAILING:"forge-field--trailing",ADDON_END:"forge-field--addon-end",ADDON_END_CONTAINER:"forge-field__addon-end-container",FOCUSED:"forge-field--focused",LABEL_FOCUSED:"forge-field__label--focused",SHAPE_ROUNDED:"forge-field--shape-rounded",INVALID:"forge-field--invalid",REQUIRED:"forge-field--required",DENSE:"forge-field--dense",ROOMY:"forge-field--roomy",LABEL:"forge-field--label"},f={attributes:e,observedInputAttributes:l,selectors:d,classes:o};export{f as a};
|
|
7
|
-
//# sourceMappingURL=chunk.GO5A4GKZ.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/field/field-constants.ts"],
|
|
4
|
-
"sourcesContent": ["const attributes = {\n DENSITY: 'density',\n FLOAT_LABEL_TYPE: 'float-label-type',\n SHAPE: 'shape',\n INVALID: 'invalid',\n REQUIRED: 'required',\n HOST_LABEL_FLOATING: `forge-label-floating`\n};\n\nconst selectors = {\n INPUT: 'input,textarea'\n};\n\nconst observedInputAttributes = ['disabled', 'readonly', 'value', 'placeholder'];\n\nconst classes = {\n DISABLED: 'forge-field--disabled',\n READONLY: 'forge-field--readonly',\n INPUT_FOCUSED: 'forge-field__input--focused',\n LEADING: 'forge-field--leading',\n TRAILING: 'forge-field--trailing',\n ADDON_END: 'forge-field--addon-end',\n ADDON_END_CONTAINER: 'forge-field__addon-end-container',\n FOCUSED: 'forge-field--focused',\n LABEL_FOCUSED: 'forge-field__label--focused',\n SHAPE_ROUNDED: 'forge-field--shape-rounded',\n INVALID: 'forge-field--invalid',\n REQUIRED: 'forge-field--required',\n DENSE: 'forge-field--dense',\n ROOMY: 'forge-field--roomy',\n LABEL: 'forge-field--label'\n};\n\nexport const FIELD_CONSTANTS = {\n attributes,\n observedInputAttributes,\n selectors,\n classes\n};\n\nexport type FieldDensityType = 'roomy' | 'default' | 'dense';\nexport type FieldFloatLabelType = 'always' | 'auto';\nexport type FieldShapeType = 'default' | 'rounded';\n"],
|
|
5
|
-
"mappings": "AAAA,IAAMA,EAAa,CACjB,QAAS,UACT,iBAAkB,mBAClB,MAAO,QACP,QAAS,UACT,SAAU,WACV,oBAAqB,sBACvB,EAEMC,EAAY,CAChB,MAAO,gBACT,EAEMC,EAA0B,CAAC,WAAY,WAAY,QAAS,aAAa,EAEzEC,EAAU,CACd,SAAU,wBACV,SAAU,wBACV,cAAe,8BACf,QAAS,uBACT,SAAU,wBACV,UAAW,yBACX,oBAAqB,mCACrB,QAAS,uBACT,cAAe,8BACf,cAAe,6BACf,QAAS,uBACT,SAAU,wBACV,MAAO,qBACP,MAAO,qBACP,MAAO,oBACT,EAEaC,EAAkB,CAC7B,WAAAJ,EACA,wBAAAE,EACA,UAAAD,EACA,QAAAE,CACF",
|
|
6
|
-
"names": ["attributes", "selectors", "observedInputAttributes", "classes", "FIELD_CONSTANTS"]
|
|
7
|
-
}
|