@tylertech/forge 2.10.1 → 2.12.0
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 +221 -5
- package/dist/esm/accordion/index.js +1 -1
- package/dist/esm/app-bar/help-button/index.js +1 -1
- package/dist/esm/app-bar/index.js +1 -1
- package/dist/esm/app-bar/menu-button/index.js +1 -1
- package/dist/esm/app-bar/notification-button/index.js +1 -1
- package/dist/esm/app-bar/profile-button/index.js +1 -1
- package/dist/esm/app-bar/search/index.js +1 -1
- package/dist/esm/autocomplete/index.js +1 -1
- package/dist/esm/badge/index.js +1 -1
- package/dist/esm/banner/index.js +1 -1
- package/dist/esm/bottom-sheet/index.js +1 -1
- package/dist/esm/busy-indicator/index.js +1 -1
- package/dist/esm/button/index.js +1 -1
- package/dist/esm/button-toggle/button-toggle-group/index.js +1 -1
- package/dist/esm/button-toggle/index.js +1 -1
- package/dist/esm/calendar/calendar-dropdown/index.js +1 -1
- package/dist/esm/calendar/calendar-menu/index.js +1 -1
- package/dist/esm/calendar/index.js +1 -1
- package/dist/esm/checkbox/index.js +1 -1
- package/dist/esm/chip-field/index.js +1 -1
- package/dist/esm/chips/chip/index.js +1 -1
- package/dist/esm/chips/chip-set/index.js +1 -1
- package/dist/esm/chips/index.js +1 -1
- package/dist/esm/chunks/{chunk.I33ZJKOX.js → chunk.2SAHWDGJ.js} +2 -2
- package/dist/esm/chunks/{chunk.I33ZJKOX.js.map → chunk.2SAHWDGJ.js.map} +0 -0
- package/dist/esm/chunks/chunk.2VFX652S.js +12 -0
- package/dist/esm/chunks/{chunk.4DS3GUQ5.js.map → chunk.2VFX652S.js.map} +0 -0
- package/dist/esm/chunks/{chunk.IBQVV4HR.js → chunk.4HI4HGZ6.js} +2 -2
- package/dist/esm/chunks/{chunk.IBQVV4HR.js.map → chunk.4HI4HGZ6.js.map} +0 -0
- package/dist/esm/chunks/{chunk.DGQAYNAF.js → chunk.4KBQ5AJJ.js} +2 -2
- package/dist/esm/chunks/{chunk.DGQAYNAF.js.map → chunk.4KBQ5AJJ.js.map} +0 -0
- package/dist/esm/chunks/{chunk.XURVHDKR.js → chunk.4WFU5CVF.js} +2 -2
- package/dist/esm/chunks/{chunk.XURVHDKR.js.map → chunk.4WFU5CVF.js.map} +0 -0
- package/dist/esm/chunks/chunk.5K5SIZRX.js +7 -0
- package/dist/esm/chunks/chunk.5K5SIZRX.js.map +7 -0
- package/dist/esm/chunks/{chunk.2YGKMENJ.js → chunk.5PQTSZ7G.js} +2 -2
- package/dist/esm/chunks/{chunk.2YGKMENJ.js.map → chunk.5PQTSZ7G.js.map} +0 -0
- package/dist/esm/chunks/{chunk.EM3OQRZP.js → chunk.77FVTUTL.js} +2 -2
- package/dist/esm/chunks/{chunk.EM3OQRZP.js.map → chunk.77FVTUTL.js.map} +0 -0
- package/dist/esm/chunks/chunk.7GTCDP5H.js +7 -0
- package/dist/esm/chunks/{chunk.YWQZURLM.js.map → chunk.7GTCDP5H.js.map} +2 -2
- package/dist/esm/chunks/{chunk.KLHXGSZU.js → chunk.7O7V3N4A.js} +2 -2
- package/dist/esm/chunks/{chunk.KLHXGSZU.js.map → chunk.7O7V3N4A.js.map} +0 -0
- package/dist/esm/chunks/{chunk.ESW45SN4.js → chunk.7PHGAX6P.js} +2 -2
- package/dist/esm/chunks/{chunk.ESW45SN4.js.map → chunk.7PHGAX6P.js.map} +0 -0
- package/dist/esm/chunks/{chunk.VEVOKTUX.js → chunk.7TKJAZTM.js} +2 -2
- package/dist/esm/chunks/{chunk.VEVOKTUX.js.map → chunk.7TKJAZTM.js.map} +0 -0
- package/dist/esm/chunks/{chunk.WAEWHBHE.js → chunk.APGFXXJ7.js} +2 -2
- package/dist/esm/chunks/{chunk.WAEWHBHE.js.map → chunk.APGFXXJ7.js.map} +0 -0
- package/dist/esm/chunks/{chunk.A6I4EIPW.js → chunk.BFNAQQCU.js} +2 -2
- package/dist/esm/chunks/{chunk.A6I4EIPW.js.map → chunk.BFNAQQCU.js.map} +0 -0
- package/dist/esm/chunks/{chunk.G5BCWBD5.js → chunk.BOENNFXE.js} +2 -2
- package/dist/esm/chunks/{chunk.G5BCWBD5.js.map → chunk.BOENNFXE.js.map} +0 -0
- package/dist/esm/chunks/chunk.CVJTQY2T.js +7 -0
- package/dist/esm/chunks/chunk.CVJTQY2T.js.map +7 -0
- package/dist/esm/chunks/{chunk.WYVYTAFS.js → chunk.DML4YNQF.js} +2 -2
- package/dist/esm/chunks/{chunk.WYVYTAFS.js.map → chunk.DML4YNQF.js.map} +0 -0
- package/dist/esm/chunks/{chunk.RS5NH2NG.js → chunk.FPV4XEUK.js} +2 -2
- package/dist/esm/chunks/{chunk.RS5NH2NG.js.map → chunk.FPV4XEUK.js.map} +0 -0
- package/dist/esm/chunks/{chunk.WZRXUTYC.js → chunk.G77PXLAU.js} +2 -2
- package/dist/esm/chunks/{chunk.WZRXUTYC.js.map → chunk.G77PXLAU.js.map} +0 -0
- package/dist/esm/chunks/{chunk.2A3CKLXJ.js → chunk.I2YRKTG7.js} +2 -2
- package/dist/esm/chunks/{chunk.2A3CKLXJ.js.map → chunk.I2YRKTG7.js.map} +0 -0
- package/dist/esm/chunks/{chunk.AFZB3MG5.js → chunk.IFZXG3LI.js} +2 -2
- package/dist/esm/chunks/{chunk.AFZB3MG5.js.map → chunk.IFZXG3LI.js.map} +0 -0
- package/dist/esm/chunks/{chunk.OHCHNL3V.js → chunk.JNOCXQVB.js} +2 -2
- package/dist/esm/chunks/{chunk.OHCHNL3V.js.map → chunk.JNOCXQVB.js.map} +2 -2
- package/dist/esm/chunks/chunk.K6LZM6DS.js +7 -0
- package/dist/esm/chunks/{chunk.SFFYXKJW.js.map → chunk.K6LZM6DS.js.map} +2 -2
- package/dist/esm/chunks/{chunk.5SRA2RH3.js → chunk.KKF2ZZMD.js} +2 -2
- package/dist/esm/chunks/{chunk.5SRA2RH3.js.map → chunk.KKF2ZZMD.js.map} +0 -0
- package/dist/esm/chunks/chunk.KYCC3C3M.js +7 -0
- package/dist/esm/chunks/{chunk.AABG6MSC.js.map → chunk.KYCC3C3M.js.map} +2 -2
- package/dist/esm/chunks/{chunk.NEGJYSPB.js → chunk.LLHA3SQR.js} +2 -2
- package/dist/esm/chunks/{chunk.NEGJYSPB.js.map → chunk.LLHA3SQR.js.map} +0 -0
- package/dist/esm/chunks/chunk.MNBJMPJ6.js +7 -0
- package/dist/esm/chunks/chunk.MNBJMPJ6.js.map +7 -0
- package/dist/esm/chunks/{chunk.JXQZMASB.js → chunk.OAKTW64X.js} +2 -2
- package/dist/esm/chunks/{chunk.JXQZMASB.js.map → chunk.OAKTW64X.js.map} +0 -0
- package/dist/esm/chunks/{chunk.CSOY4C7A.js → chunk.OG2BI3UW.js} +2 -2
- package/dist/esm/chunks/{chunk.CSOY4C7A.js.map → chunk.OG2BI3UW.js.map} +2 -2
- package/dist/esm/chunks/{chunk.NJHQA266.js → chunk.OPTMTRWL.js} +2 -2
- package/dist/esm/chunks/{chunk.NJHQA266.js.map → chunk.OPTMTRWL.js.map} +0 -0
- package/dist/esm/chunks/{chunk.AHOQXJRN.js → chunk.P6B3UWJ5.js} +2 -2
- package/dist/esm/chunks/{chunk.AHOQXJRN.js.map → chunk.P6B3UWJ5.js.map} +0 -0
- package/dist/esm/chunks/{chunk.W7UTHKBF.js → chunk.Q6L7T6OJ.js} +2 -2
- package/dist/esm/chunks/{chunk.W7UTHKBF.js.map → chunk.Q6L7T6OJ.js.map} +0 -0
- package/dist/esm/chunks/{chunk.WGE5R5JK.js → chunk.QBDE7M3E.js} +2 -2
- package/dist/esm/chunks/{chunk.WGE5R5JK.js.map → chunk.QBDE7M3E.js.map} +0 -0
- package/dist/esm/chunks/{chunk.J6ERQLHJ.js → chunk.RPPBBBYG.js} +2 -2
- package/dist/esm/chunks/{chunk.J6ERQLHJ.js.map → chunk.RPPBBBYG.js.map} +2 -2
- package/dist/esm/chunks/{chunk.DJSOBAWA.js → chunk.SJSLC6XF.js} +2 -2
- package/dist/esm/chunks/{chunk.DJSOBAWA.js.map → chunk.SJSLC6XF.js.map} +0 -0
- package/dist/esm/chunks/{chunk.YFIDBZ7V.js → chunk.SLZFPWOH.js} +2 -2
- package/dist/esm/chunks/{chunk.YFIDBZ7V.js.map → chunk.SLZFPWOH.js.map} +0 -0
- package/dist/esm/chunks/{chunk.WKKNDQYZ.js → chunk.SVHVGMKS.js} +2 -2
- package/dist/esm/chunks/{chunk.WKKNDQYZ.js.map → chunk.SVHVGMKS.js.map} +0 -0
- package/dist/esm/chunks/{chunk.WMO47F6Z.js → chunk.TLHI6K2R.js} +2 -2
- package/dist/esm/chunks/{chunk.WMO47F6Z.js.map → chunk.TLHI6K2R.js.map} +0 -0
- package/dist/esm/chunks/{chunk.6BKOGBE6.js → chunk.TR64DV3G.js} +2 -2
- package/dist/esm/chunks/{chunk.6BKOGBE6.js.map → chunk.TR64DV3G.js.map} +0 -0
- package/dist/esm/chunks/chunk.UHVCXKB4.js +7 -0
- package/dist/esm/chunks/chunk.UHVCXKB4.js.map +7 -0
- package/dist/esm/chunks/{chunk.MTMZFAWU.js → chunk.V7P3QPNM.js} +2 -2
- package/dist/esm/chunks/{chunk.MTMZFAWU.js.map → chunk.V7P3QPNM.js.map} +0 -0
- package/dist/esm/chunks/{chunk.ZHCQBWAG.js → chunk.WALEAV54.js} +2 -2
- package/dist/esm/chunks/{chunk.ZHCQBWAG.js.map → chunk.WALEAV54.js.map} +0 -0
- package/dist/esm/chunks/{chunk.SNGELGOD.js → chunk.WV45FGTW.js} +2 -2
- package/dist/esm/chunks/{chunk.SNGELGOD.js.map → chunk.WV45FGTW.js.map} +0 -0
- package/dist/esm/chunks/chunk.Y6FFG7XO.js +7 -0
- package/dist/esm/chunks/chunk.Y6FFG7XO.js.map +7 -0
- package/dist/esm/chunks/{chunk.RZL6S3K3.js → chunk.Y6MPWPZU.js} +2 -2
- package/dist/esm/chunks/{chunk.RZL6S3K3.js.map → chunk.Y6MPWPZU.js.map} +0 -0
- package/dist/esm/chunks/{chunk.7TQYFMM4.js → chunk.YAJT3P6V.js} +2 -2
- package/dist/esm/chunks/{chunk.7TQYFMM4.js.map → chunk.YAJT3P6V.js.map} +0 -0
- package/dist/esm/chunks/{chunk.57XBS3DF.js → chunk.YSE5EMB3.js} +2 -2
- package/dist/esm/chunks/{chunk.57XBS3DF.js.map → chunk.YSE5EMB3.js.map} +0 -0
- package/dist/esm/chunks/{chunk.KZHMDZVS.js → chunk.YWKKZLZ2.js} +2 -2
- package/dist/esm/chunks/{chunk.KZHMDZVS.js.map → chunk.YWKKZLZ2.js.map} +0 -0
- package/dist/esm/chunks/{chunk.UNTTQM6V.js → chunk.YX5SWK3O.js} +2 -2
- package/dist/esm/chunks/{chunk.UNTTQM6V.js.map → chunk.YX5SWK3O.js.map} +0 -0
- package/dist/esm/chunks/{chunk.7WWP6WI6.js → chunk.Z5P6EA5L.js} +2 -2
- package/dist/esm/chunks/{chunk.7WWP6WI6.js.map → chunk.Z5P6EA5L.js.map} +0 -0
- package/dist/esm/chunks/chunk.ZFUVXYDL.js +7 -0
- package/dist/esm/chunks/chunk.ZFUVXYDL.js.map +7 -0
- package/dist/esm/chunks/{chunk.5HUDHTAK.js → chunk.ZHXPL2MS.js} +2 -2
- package/dist/esm/chunks/{chunk.5HUDHTAK.js.map → chunk.ZHXPL2MS.js.map} +0 -0
- package/dist/esm/color-picker/index.js +1 -1
- package/dist/esm/core/index.js +1 -1
- package/dist/esm/core/utils/index.js +1 -1
- package/dist/esm/date-picker/index.js +1 -1
- package/dist/esm/date-range-picker/index.js +1 -1
- package/dist/esm/dialog/index.js +1 -1
- package/dist/esm/expansion-panel/index.js +1 -1
- package/dist/esm/file-picker/index.js +1 -1
- package/dist/esm/icon/index.js +1 -1
- package/dist/esm/icon-button/index.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/label-value/index.js +1 -1
- package/dist/esm/list-dropdown/index.js +1 -1
- package/dist/esm/menu/index.js +1 -1
- package/dist/esm/open-icon/index.js +1 -1
- package/dist/esm/paginator/index.js +1 -1
- package/dist/esm/profile-card/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/slider/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/step/index.js +1 -1
- package/dist/esm/stepper/stepper/index.js +1 -1
- package/dist/esm/switch/index.js +1 -1
- package/dist/esm/table/index.js +1 -1
- package/dist/esm/tabs/index.js +1 -1
- package/dist/esm/tabs/tab-bar/index.js +1 -1
- package/dist/esm/text-field/index.js +1 -1
- package/dist/esm/time-picker/index.js +1 -1
- package/dist/esm/toast/index.js +1 -1
- package/dist/esm/toolbar/index.js +1 -1
- package/esm/autocomplete/autocomplete-adapter.d.ts +2 -0
- package/esm/autocomplete/autocomplete-adapter.js +10 -0
- package/esm/autocomplete/autocomplete-constants.js +2 -1
- package/esm/autocomplete/autocomplete-foundation.d.ts +1 -0
- package/esm/autocomplete/autocomplete-foundation.js +9 -0
- package/esm/badge/badge.js +2 -2
- package/esm/button-toggle/button-toggle-group/button-toggle-group-constants.d.ts +1 -1
- package/esm/button-toggle/button-toggle-group/button-toggle-group.d.ts +4 -1
- package/esm/core/utils/utils.d.ts +6 -0
- package/esm/core/utils/utils.js +10 -0
- package/esm/expansion-panel/expansion-panel-foundation.js +2 -2
- package/esm/field/field-constants.d.ts +3 -0
- package/esm/field/field-constants.js +4 -0
- package/esm/field/field.js +3 -3
- package/esm/menu/menu-foundation.d.ts +1 -0
- package/esm/menu/menu-foundation.js +6 -3
- package/esm/select/core/base-select-adapter.d.ts +2 -0
- package/esm/select/core/base-select-adapter.js +17 -7
- package/esm/select/core/base-select-foundation.d.ts +1 -0
- package/esm/select/core/base-select-foundation.js +7 -0
- package/esm/split-view/split-view/split-view-adapter.d.ts +4 -0
- package/esm/split-view/split-view/split-view-adapter.js +7 -1
- package/esm/split-view/split-view/split-view-foundation.d.ts +4 -0
- package/esm/split-view/split-view/split-view-foundation.js +12 -0
- package/esm/split-view/split-view/split-view.d.ts +5 -0
- package/esm/split-view/split-view/split-view.js +5 -0
- package/esm/split-view/split-view-panel/split-view-panel-foundation.js +2 -2
- package/esm/split-view/split-view-panel/split-view-panel.d.ts +5 -0
- package/esm/split-view/split-view-panel/split-view-panel.js +6 -1
- package/esm/toolbar/toolbar.js +1 -1
- package/package.json +1 -1
- package/styles/badge/_mixins.scss +5 -1
- package/styles/toolbar/_mixins.scss +2 -2
- package/styles/toolbar/toolbar.scss +6 -0
- package/dist/esm/chunks/chunk.4DS3GUQ5.js +0 -12
- package/dist/esm/chunks/chunk.5QK7XR2W.js +0 -7
- package/dist/esm/chunks/chunk.5QK7XR2W.js.map +0 -7
- package/dist/esm/chunks/chunk.7GT5LOI3.js +0 -7
- package/dist/esm/chunks/chunk.7GT5LOI3.js.map +0 -7
- package/dist/esm/chunks/chunk.AABG6MSC.js +0 -7
- package/dist/esm/chunks/chunk.GP7WDYWQ.js +0 -7
- package/dist/esm/chunks/chunk.GP7WDYWQ.js.map +0 -7
- package/dist/esm/chunks/chunk.R46EDURP.js +0 -7
- package/dist/esm/chunks/chunk.R46EDURP.js.map +0 -7
- package/dist/esm/chunks/chunk.SFFYXKJW.js +0 -7
- package/dist/esm/chunks/chunk.SHSR5RZ4.js +0 -7
- package/dist/esm/chunks/chunk.SHSR5RZ4.js.map +0 -7
- package/dist/esm/chunks/chunk.WSGJIPQJ.js +0 -7
- package/dist/esm/chunks/chunk.WSGJIPQJ.js.map +0 -7
- package/dist/esm/chunks/chunk.YWQZURLM.js +0 -7
|
@@ -43,6 +43,7 @@ export interface IAutocompleteAdapter extends IBaseAdapter {
|
|
|
43
43
|
getActiveOptionIndex(): number | null;
|
|
44
44
|
clearActiveOption(): void;
|
|
45
45
|
setSelectedOptions(options: IOption[]): void;
|
|
46
|
+
queueDropdownPositionUpdate(): void;
|
|
46
47
|
}
|
|
47
48
|
/**
|
|
48
49
|
* The DOM adapter for the `<forge-autocomplete>` element.
|
|
@@ -86,6 +87,7 @@ export declare class AutocompleteAdapter extends BaseAdapter<IAutocompleteCompon
|
|
|
86
87
|
getActiveOptionIndex(): number | null;
|
|
87
88
|
clearActiveOption(): void;
|
|
88
89
|
setSelectedOptions(options: IOption[]): void;
|
|
90
|
+
queueDropdownPositionUpdate(): void;
|
|
89
91
|
private _getTargetElement;
|
|
90
92
|
private _getDefaultTargetElement;
|
|
91
93
|
private _tryToggleDropdownIconRotation;
|
|
@@ -195,6 +195,16 @@ export class AutocompleteAdapter extends BaseAdapter {
|
|
|
195
195
|
this._listDropdown.setSelectedValues(values);
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
+
queueDropdownPositionUpdate() {
|
|
199
|
+
if (!this.getPopupElement()) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// We need to wait for the next animation frame to ensure that the layout has been updated
|
|
203
|
+
window.requestAnimationFrame(() => {
|
|
204
|
+
const dropdownEl = this.getPopupElement();
|
|
205
|
+
dropdownEl === null || dropdownEl === void 0 ? void 0 : dropdownEl.position();
|
|
206
|
+
});
|
|
207
|
+
}
|
|
198
208
|
_getTargetElement(selector) {
|
|
199
209
|
return selector ? this._component.querySelector(selector) || this._getDefaultTargetElement() : this._getDefaultTargetElement();
|
|
200
210
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { COMPONENT_NAME_PREFIX, KEYSTROKE_DEBOUNCE_THRESHOLD } from '../constants';
|
|
7
|
+
import { FIELD_CONSTANTS } from '../field/field-constants';
|
|
7
8
|
const elementName = `${COMPONENT_NAME_PREFIX}autocomplete`;
|
|
8
9
|
const attributes = {
|
|
9
10
|
MODE: 'mode',
|
|
@@ -22,7 +23,7 @@ const attributes = {
|
|
|
22
23
|
DROPDOWN_ICON_OPEN: 'data-forge-dropdown-icon-open'
|
|
23
24
|
};
|
|
24
25
|
const selectors = {
|
|
25
|
-
INPUT:
|
|
26
|
+
INPUT: FIELD_CONSTANTS.selectors.INPUT,
|
|
26
27
|
DROPDOWN_ICON: '[data-forge-dropdown-icon],[data-forge-dropdown-icon],[forge-dropdown-icon],.forge-dropdown-icon',
|
|
27
28
|
CLEAR_BUTTON: '[data-forge-autocomplete-clear],[forge-autocomplete-clear]'
|
|
28
29
|
};
|
|
@@ -97,6 +97,7 @@ export declare class AutocompleteFoundation extends ListDropdownAwareFoundation
|
|
|
97
97
|
private _onSelect;
|
|
98
98
|
private _selectActiveOption;
|
|
99
99
|
private _emitChangeEvent;
|
|
100
|
+
private _tryUpdateDropdownPosition;
|
|
100
101
|
/**
|
|
101
102
|
* Retrieves the current value(s) from the selected options array based on whether
|
|
102
103
|
* we are in multi-select mode or not.
|
|
@@ -490,6 +490,7 @@ export class AutocompleteFoundation extends ListDropdownAwareFoundation {
|
|
|
490
490
|
this._adapter.toggleOptionMultiple(index, isSelected);
|
|
491
491
|
}
|
|
492
492
|
this._emitChangeEvent();
|
|
493
|
+
this._tryUpdateDropdownPosition();
|
|
493
494
|
};
|
|
494
495
|
// We close the dropdown immediately if in single selection mode
|
|
495
496
|
if (this._isDropdownOpen && !this._multiple) {
|
|
@@ -501,6 +502,9 @@ export class AutocompleteFoundation extends ListDropdownAwareFoundation {
|
|
|
501
502
|
if (shouldContinue) {
|
|
502
503
|
select();
|
|
503
504
|
}
|
|
505
|
+
else {
|
|
506
|
+
this._tryUpdateDropdownPosition();
|
|
507
|
+
}
|
|
504
508
|
this._valueChanging = undefined;
|
|
505
509
|
}
|
|
506
510
|
else {
|
|
@@ -519,6 +523,11 @@ export class AutocompleteFoundation extends ListDropdownAwareFoundation {
|
|
|
519
523
|
_emitChangeEvent() {
|
|
520
524
|
this._adapter.emitHostEvent(AUTOCOMPLETE_CONSTANTS.events.CHANGE, this._getValue(), true);
|
|
521
525
|
}
|
|
526
|
+
_tryUpdateDropdownPosition() {
|
|
527
|
+
if (this._isDropdownOpen) {
|
|
528
|
+
this._adapter.queueDropdownPositionUpdate();
|
|
529
|
+
}
|
|
530
|
+
}
|
|
522
531
|
/**
|
|
523
532
|
* Retrieves the current value(s) from the selected options array based on whether
|
|
524
533
|
* we are in multi-select mode or not.
|
package/esm/badge/badge.js
CHANGED
|
@@ -9,8 +9,8 @@ import { BaseComponent } from '../core/base/base-component';
|
|
|
9
9
|
import { BadgeAdapter } from './badge-adapter';
|
|
10
10
|
import { BADGE_CONSTANTS } from './badge-constants';
|
|
11
11
|
import { BadgeFoundation } from './badge-foundation';
|
|
12
|
-
const template = '<template><div class=\"forge-badge forge-badge--open\" part=\"root\"><slot></slot></div></template>';
|
|
13
|
-
const styles = '.forge-badge{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);height:1.25rem;height:var(--forge-badge-height,1.25rem);line-height:1.25rem;line-height:var(--forge-badge-line-height, 1.25rem);min-width:0;min-width:var(--forge-badge-min-width,0);max-width:auto;max-width:var(--forge-badge-max-width,auto);border:none;border:var(--forge-badge-border,none);display:inline-
|
|
12
|
+
const template = '<template><div class=\"forge-badge forge-badge--open\" part=\"root\"><slot name=\"leading\"></slot><slot></slot><slot name=\"trailing\"></slot></div></template>';
|
|
13
|
+
const styles = '.forge-badge{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);height:1.25rem;height:var(--forge-badge-height,1.25rem);line-height:1.25rem;line-height:var(--forge-badge-line-height, 1.25rem);min-width:0;min-width:var(--forge-badge-min-width,0);max-width:auto;max-width:var(--forge-badge-max-width,auto);border:none;border:var(--forge-badge-border,none);display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;gap:4px;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;-webkit-transform:scale(0);transform:scale(0);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;border-radius:16px;padding:0 8px;font-weight:700}.forge-badge--elevated{box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.forge-badge--open{-webkit-transform:scale(1);transform:scale(1)}.forge-badge--dot{height:.5rem;width:.5rem;min-width:auto;padding:0}:host{--forge-icon-font-size:14px;display:-webkit-box;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box}:host([hidden]){display:none}:host([positioned]){position:absolute;top:0;left:100%;-webkit-transform:translateX(-1.25rem);transform:translateX(-1.25rem)}:host([dot]){top:.5rem}:host([dot]) .forge-badge>slot{display:none}:host([static]){position:static}:host(:not([theme])) .forge-badge,:host([theme=\"\"]) .forge-badge{background:#ffc107;background:var(--forge-badge-theme-default-muted-background,#ffc107);color:rgba(0,0,0,.87);color:var(--forge-badge-theme-default-muted-color,rgba(0,0,0,.87))}:host(:not([theme])[strong]) .forge-badge,:host([theme=\"\"][strong]) .forge-badge{background:#3d5afe;background:var(--forge-badge-theme-default-strong-background,#3d5afe);color:#fff;color:var(--forge-badge-theme-default-strong-color,#fff)}:host([theme=default]) .forge-badge{background:#ffc107;background:var(--forge-badge-theme-default-muted-background,#ffc107);color:rgba(0,0,0,.87);color:var(--forge-badge-theme-default-muted-color,rgba(0,0,0,.87))}:host([theme=default][strong]) .forge-badge{background:#3d5afe;background:var(--forge-badge-theme-default-strong-background,#3d5afe);color:#fff;color:var(--forge-badge-theme-default-strong-color,#fff)}:host([theme=danger]) .forge-badge{background:#ffcdd2;background:var(--forge-badge-theme-danger-muted-background,#ffcdd2);color:#a22d0e;color:var(--forge-badge-theme-danger-muted-color,#a22d0e)}:host([theme=danger][strong]) .forge-badge{background:#b00020;background:var(--forge-badge-theme-danger-strong-background,#b00020);color:#fff;color:var(--forge-badge-theme-danger-strong-color,#fff)}:host([theme=warning]) .forge-badge{background:#ffdba6;background:var(--forge-badge-theme-warning-muted-background,#ffdba6);color:#a03a03;color:var(--forge-badge-theme-warning-muted-color,#a03a03)}:host([theme=warning][strong]) .forge-badge{background:#d14900;background:var(--forge-badge-theme-warning-strong-background,#d14900);color:#fff;color:var(--forge-badge-theme-warning-strong-color,#fff)}:host([theme=success]) .forge-badge{background:#a5d6a7;background:var(--forge-badge-theme-success-muted-background,#a5d6a7);color:#1b5e20;color:var(--forge-badge-theme-success-muted-color,#1b5e20)}:host([theme=success][strong]) .forge-badge{background:#2e7d32;background:var(--forge-badge-theme-success-strong-background,#2e7d32);color:#fff;color:var(--forge-badge-theme-success-strong-color,#fff)}:host([theme=info-primary]) .forge-badge{background:#bbdefb;background:var(--forge-badge-theme-info-primary-muted-background,#bbdefb);color:#1a237e;color:var(--forge-badge-theme-info-primary-muted-color,#1a237e)}:host([theme=info-primary][strong]) .forge-badge{background:#1a237e;background:var(--forge-badge-theme-info-primary-strong-background,#1a237e);color:#fff;color:var(--forge-badge-theme-info-primary-strong-color,#fff)}:host([theme=info-secondary]) .forge-badge{background:#e0e0e0;background:var(--forge-badge-theme-info-secondary-muted-background,#e0e0e0);color:#000;color:var(--forge-badge-theme-info-secondary-muted-color,#000)}:host([theme=info-secondary][strong]) .forge-badge{background:#000;background:var(--forge-badge-theme-info-secondary-strong-background,#000);color:#fff;color:var(--forge-badge-theme-info-secondary-strong-color,#fff)}';
|
|
14
14
|
/**
|
|
15
15
|
* The web component class behind the `<forge-badge>` custom element.
|
|
16
16
|
*
|
|
@@ -25,7 +25,7 @@ export declare const BUTTON_TOGGLE_GROUP_CONSTANTS: {
|
|
|
25
25
|
CHANGE: string;
|
|
26
26
|
};
|
|
27
27
|
};
|
|
28
|
-
export declare type IButtonToggleGroupChangeEventData<T> = T;
|
|
28
|
+
export declare type IButtonToggleGroupChangeEventData<T = any> = T;
|
|
29
29
|
export interface IButtonToggleOption {
|
|
30
30
|
label?: string;
|
|
31
31
|
icon?: string;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { BaseComponent, IBaseComponent } from '../../core/base/base-component';
|
|
7
|
-
import { IButtonToggleOption } from './button-toggle-group-constants';
|
|
7
|
+
import { IButtonToggleGroupChangeEventData, IButtonToggleOption } from './button-toggle-group-constants';
|
|
8
8
|
export interface IButtonToggleGroupComponent extends IBaseComponent {
|
|
9
9
|
value: any;
|
|
10
10
|
multiple: boolean;
|
|
@@ -19,6 +19,9 @@ declare global {
|
|
|
19
19
|
interface HTMLElementTagNameMap {
|
|
20
20
|
'forge-button-toggle-group': IButtonToggleGroupComponent;
|
|
21
21
|
}
|
|
22
|
+
interface HTMLElementEventMap {
|
|
23
|
+
'forge-button-toggle-group-change': CustomEvent<IButtonToggleGroupChangeEventData>;
|
|
24
|
+
}
|
|
22
25
|
}
|
|
23
26
|
/**
|
|
24
27
|
* The web component class behind the `<forge-button-toggle-group>` custom element.
|
|
@@ -59,3 +59,9 @@ export declare function safeMin(...args: (number | undefined)[]): number;
|
|
|
59
59
|
* @returns The max value or `Number.NEGATIVE_INFINITY` if all values are `undefined`.
|
|
60
60
|
*/
|
|
61
61
|
export declare function safeMax(...args: (number | undefined)[]): number;
|
|
62
|
+
/**
|
|
63
|
+
* Copies properties from one object to another, much like Object.assign(), but only where properties exist in both source objects.
|
|
64
|
+
* @param from The object to apply properties from.
|
|
65
|
+
* @param to The object to apply property values to.
|
|
66
|
+
*/
|
|
67
|
+
export declare function assignMatchingProperties(from: object, to: object): void;
|
package/esm/core/utils/utils.js
CHANGED
|
@@ -113,3 +113,13 @@ export function safeMin(...args) {
|
|
|
113
113
|
export function safeMax(...args) {
|
|
114
114
|
return Math.max(...args.map(arg => arg !== null && arg !== void 0 ? arg : Number.NEGATIVE_INFINITY));
|
|
115
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Copies properties from one object to another, much like Object.assign(), but only where properties exist in both source objects.
|
|
118
|
+
* @param from The object to apply properties from.
|
|
119
|
+
* @param to The object to apply property values to.
|
|
120
|
+
*/
|
|
121
|
+
export function assignMatchingProperties(from, to) {
|
|
122
|
+
Object.keys(from)
|
|
123
|
+
.filter(prop => prop in to)
|
|
124
|
+
.forEach(prop => to[prop] = from[prop]);
|
|
125
|
+
}
|
|
@@ -124,8 +124,8 @@ export class ExpansionPanelFoundation {
|
|
|
124
124
|
* @param {KeyboardEvent} evt The keydown event
|
|
125
125
|
*/
|
|
126
126
|
_onKeydown(evt) {
|
|
127
|
-
evt.
|
|
128
|
-
|
|
127
|
+
if (evt.key === ' ' || evt.key === 'Enter') {
|
|
128
|
+
evt.stopPropagation();
|
|
129
129
|
evt.preventDefault();
|
|
130
130
|
this._toggle();
|
|
131
131
|
this._emitEvent();
|
|
@@ -11,6 +11,9 @@ const attributes = {
|
|
|
11
11
|
REQUIRED: 'required',
|
|
12
12
|
HOST_LABEL_FLOATING: `forge-label-floating`
|
|
13
13
|
};
|
|
14
|
+
const selectors = {
|
|
15
|
+
INPUT: 'input,textarea'
|
|
16
|
+
};
|
|
14
17
|
const observedInputAttributes = ['disabled', 'readonly', 'value', 'placeholder'];
|
|
15
18
|
const classes = {
|
|
16
19
|
DISABLED: 'forge-field--disabled',
|
|
@@ -32,5 +35,6 @@ const classes = {
|
|
|
32
35
|
export const FIELD_CONSTANTS = {
|
|
33
36
|
attributes,
|
|
34
37
|
observedInputAttributes,
|
|
38
|
+
selectors,
|
|
35
39
|
classes
|
|
36
40
|
};
|
package/esm/field/field.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { __decorate } from "tslib";
|
|
7
7
|
import { FIELD_CONSTANTS } from './field-constants';
|
|
8
8
|
import { BaseComponent } from '../core/base/base-component';
|
|
9
|
-
import { coerceBoolean,
|
|
9
|
+
import { coerceBoolean, ensureChild, FoundationProperty } from '@tylertech/forge-core';
|
|
10
10
|
export class FieldComponent extends BaseComponent {
|
|
11
11
|
constructor() {
|
|
12
12
|
super();
|
|
@@ -21,11 +21,11 @@ export class FieldComponent extends BaseComponent {
|
|
|
21
21
|
];
|
|
22
22
|
}
|
|
23
23
|
connectedCallback() {
|
|
24
|
-
if (this.
|
|
24
|
+
if (this.querySelector(FIELD_CONSTANTS.selectors.INPUT)) {
|
|
25
25
|
this._initialize();
|
|
26
26
|
}
|
|
27
27
|
else {
|
|
28
|
-
|
|
28
|
+
ensureChild(this, FIELD_CONSTANTS.selectors.INPUT).then(() => this._initialize());
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
_initialize() {
|
|
@@ -74,6 +74,7 @@ export declare class MenuFoundation extends CascadingListDropdownAwareFoundation
|
|
|
74
74
|
protected _openDropdown(): void;
|
|
75
75
|
protected _isOwnElement(element: Element): boolean;
|
|
76
76
|
private _createCascadingElement;
|
|
77
|
+
private _mapIconToLeadingIcon;
|
|
77
78
|
get open(): boolean;
|
|
78
79
|
set open(value: boolean);
|
|
79
80
|
set options(options: IMenuOption[]);
|
|
@@ -218,9 +218,7 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
|
|
|
218
218
|
if (!this._persistSelection) {
|
|
219
219
|
options.forEach(o => o.selected = false);
|
|
220
220
|
}
|
|
221
|
-
|
|
222
|
-
// Map the old "icon" property to the new "leadingIcon" property (if exists)
|
|
223
|
-
flatOptions.filter(o => o.icon).forEach(o => o.leadingIcon = o.icon);
|
|
221
|
+
this._mapIconToLeadingIcon();
|
|
224
222
|
const selectedValues = this._persistSelection ? this._getSelectedValues() : [];
|
|
225
223
|
const config = {
|
|
226
224
|
id: this._identifier,
|
|
@@ -384,6 +382,10 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
|
|
|
384
382
|
menu.iconClass = this._iconClass;
|
|
385
383
|
return menu;
|
|
386
384
|
}
|
|
385
|
+
_mapIconToLeadingIcon() {
|
|
386
|
+
// For backwards compatibility with old API, map the old "icon" property to the new "leadingIcon" property (if exists)
|
|
387
|
+
this._flatOptions.filter(o => o.icon).forEach(o => o.leadingIcon = o.icon);
|
|
388
|
+
}
|
|
387
389
|
get open() {
|
|
388
390
|
return this._open;
|
|
389
391
|
}
|
|
@@ -410,6 +412,7 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
|
|
|
410
412
|
// function to the core library.
|
|
411
413
|
this._options = options.map(o => (Object.assign({}, o)));
|
|
412
414
|
if (this._open) {
|
|
415
|
+
this._mapIconToLeadingIcon();
|
|
413
416
|
this._adapter.setOptions(this._options);
|
|
414
417
|
if (this._persistSelection) {
|
|
415
418
|
const selectedValues = this._getSelectedValues();
|
|
@@ -31,6 +31,7 @@ export interface IBaseSelectAdapter extends IBaseAdapter {
|
|
|
31
31
|
appendDropdownOptions(options: ISelectOption[] | ISelectOptionGroup[]): void;
|
|
32
32
|
setMultiple(multiple: boolean): void;
|
|
33
33
|
isFocusWithinPopup(target: HTMLElement): boolean;
|
|
34
|
+
queueDropdownPositionUpdate(): void;
|
|
34
35
|
popupElement: HTMLElement | undefined;
|
|
35
36
|
}
|
|
36
37
|
export declare abstract class BaseSelectAdapter extends BaseAdapter<IBaseSelectComponent> implements IBaseSelectAdapter {
|
|
@@ -62,6 +63,7 @@ export declare abstract class BaseSelectAdapter extends BaseAdapter<IBaseSelectC
|
|
|
62
63
|
setDropdownOptions(options: ISelectOption[] | ISelectOptionGroup[]): void;
|
|
63
64
|
scrollSelectedOptionIntoView(): void;
|
|
64
65
|
isFocusWithinPopup(target: HTMLElement): boolean;
|
|
66
|
+
queueDropdownPositionUpdate(): void;
|
|
65
67
|
private _clearOptions;
|
|
66
68
|
private _createOptionGroupElement;
|
|
67
69
|
private _createOptionElement;
|
|
@@ -10,6 +10,7 @@ import { OPTION_CONSTANTS } from '../option';
|
|
|
10
10
|
import { OPTION_GROUP_CONSTANTS } from '../option-group';
|
|
11
11
|
import { isOptionGroupObject } from './select-utils';
|
|
12
12
|
import { POPUP_CONSTANTS } from '../../popup';
|
|
13
|
+
import { assignMatchingProperties } from '../../core/utils/utils';
|
|
13
14
|
export class BaseSelectAdapter extends BaseAdapter {
|
|
14
15
|
constructor(component) {
|
|
15
16
|
super(component);
|
|
@@ -142,6 +143,16 @@ export class BaseSelectAdapter extends BaseAdapter {
|
|
|
142
143
|
}
|
|
143
144
|
return this._listDropdown.dropdownElement.contains(target);
|
|
144
145
|
}
|
|
146
|
+
queueDropdownPositionUpdate() {
|
|
147
|
+
if (!this.popupElement) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
// We need to wait for the next animation frame to ensure that the layout has been updated
|
|
151
|
+
window.requestAnimationFrame(() => {
|
|
152
|
+
const dropdownEl = this.popupElement;
|
|
153
|
+
dropdownEl === null || dropdownEl === void 0 ? void 0 : dropdownEl.position();
|
|
154
|
+
});
|
|
155
|
+
}
|
|
145
156
|
_clearOptions() {
|
|
146
157
|
// First we remove all option group elements
|
|
147
158
|
const existingOptionGroupElements = Array.from(this._component.querySelectorAll(OPTION_GROUP_CONSTANTS.elementName));
|
|
@@ -151,17 +162,16 @@ export class BaseSelectAdapter extends BaseAdapter {
|
|
|
151
162
|
existingOptionElements.forEach((o) => removeElement(o));
|
|
152
163
|
}
|
|
153
164
|
_createOptionGroupElement(group) {
|
|
154
|
-
|
|
155
|
-
optionGroupElement
|
|
165
|
+
var _a;
|
|
166
|
+
const optionGroupElement = document.createElement('forge-option-group');
|
|
167
|
+
assignMatchingProperties(group, optionGroupElement);
|
|
168
|
+
optionGroupElement.label = (_a = group.text) !== null && _a !== void 0 ? _a : '';
|
|
156
169
|
return optionGroupElement;
|
|
157
170
|
}
|
|
158
171
|
_createOptionElement(option) {
|
|
159
|
-
const optionElement = document.createElement(
|
|
160
|
-
optionElement
|
|
172
|
+
const optionElement = document.createElement('forge-option');
|
|
173
|
+
assignMatchingProperties(option, optionElement);
|
|
161
174
|
optionElement.textContent = option.label;
|
|
162
|
-
if (option.disabled) {
|
|
163
|
-
optionElement.disabled = option.disabled;
|
|
164
|
-
}
|
|
165
175
|
return optionElement;
|
|
166
176
|
}
|
|
167
177
|
}
|
|
@@ -79,6 +79,7 @@ export declare abstract class BaseSelectFoundation<T extends IBaseSelectAdapter>
|
|
|
79
79
|
*/
|
|
80
80
|
protected _onSelect(option: ISelectOption, optionIndex: number, closeDropdown?: boolean): Promise<boolean>;
|
|
81
81
|
private _selectActiveOption;
|
|
82
|
+
protected _tryUpdateDropdownPosition(): void;
|
|
82
83
|
protected _reset(): void;
|
|
83
84
|
protected _applyValue(value: string | string[]): void;
|
|
84
85
|
/**
|
|
@@ -215,6 +215,7 @@ export class BaseSelectFoundation extends ListDropdownAwareFoundation {
|
|
|
215
215
|
this._valueChanging = undefined;
|
|
216
216
|
if (!shouldContinue) {
|
|
217
217
|
rollbackValue();
|
|
218
|
+
this._tryUpdateDropdownPosition();
|
|
218
219
|
return resolve(false);
|
|
219
220
|
}
|
|
220
221
|
}
|
|
@@ -226,6 +227,7 @@ export class BaseSelectFoundation extends ListDropdownAwareFoundation {
|
|
|
226
227
|
else {
|
|
227
228
|
rollbackValue();
|
|
228
229
|
}
|
|
230
|
+
this._tryUpdateDropdownPosition();
|
|
229
231
|
resolve(!cancelled);
|
|
230
232
|
});
|
|
231
233
|
}
|
|
@@ -235,6 +237,11 @@ export class BaseSelectFoundation extends ListDropdownAwareFoundation {
|
|
|
235
237
|
this._onSelect(this._nonDividerOptions[activeOptionIndex], activeOptionIndex);
|
|
236
238
|
}
|
|
237
239
|
}
|
|
240
|
+
_tryUpdateDropdownPosition() {
|
|
241
|
+
if (this._open) {
|
|
242
|
+
this._adapter.queueDropdownPositionUpdate();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
238
245
|
_reset() {
|
|
239
246
|
this._selectedValues = [];
|
|
240
247
|
this._selectedLabels = [];
|
|
@@ -9,6 +9,8 @@ import { ISplitViewComponent } from './split-view';
|
|
|
9
9
|
import { SplitViewOrientation } from './split-view-constants';
|
|
10
10
|
export interface ISplitViewAdapter extends IBaseAdapter {
|
|
11
11
|
registerSlotListener(listener: (evt: Event) => void): void;
|
|
12
|
+
registerDidOpenListener(listener: () => void): void;
|
|
13
|
+
registerDidCloseListener(listener: () => void): void;
|
|
12
14
|
observeResize(callback: (entry: ResizeObserverEntry) => void): void;
|
|
13
15
|
unobserveResize(): void;
|
|
14
16
|
getSlottedPanels(): ISplitViewPanelComponent[];
|
|
@@ -18,6 +20,8 @@ export declare class SplitViewAdapter extends BaseAdapter<ISplitViewComponent> i
|
|
|
18
20
|
private _root;
|
|
19
21
|
constructor(component: ISplitViewComponent);
|
|
20
22
|
registerSlotListener(listener: (evt: Event) => void): void;
|
|
23
|
+
registerDidOpenListener(listener: () => void): void;
|
|
24
|
+
registerDidCloseListener(listener: () => void): void;
|
|
21
25
|
observeResize(callback: (entry: ResizeObserverEntry) => void): void;
|
|
22
26
|
unobserveResize(): void;
|
|
23
27
|
/**
|
|
@@ -15,6 +15,12 @@ export class SplitViewAdapter extends BaseAdapter {
|
|
|
15
15
|
registerSlotListener(listener) {
|
|
16
16
|
this._root.addEventListener('slotchange', listener);
|
|
17
17
|
}
|
|
18
|
+
registerDidOpenListener(listener) {
|
|
19
|
+
this._root.addEventListener(SPLIT_VIEW_PANEL_CONSTANTS.events.DID_OPEN, listener);
|
|
20
|
+
}
|
|
21
|
+
registerDidCloseListener(listener) {
|
|
22
|
+
this._root.addEventListener(SPLIT_VIEW_PANEL_CONSTANTS.events.DID_CLOSE, listener);
|
|
23
|
+
}
|
|
18
24
|
observeResize(callback) {
|
|
19
25
|
ForgeResizeObserver.observe(this._root, callback);
|
|
20
26
|
}
|
|
@@ -46,7 +52,7 @@ export class SplitViewAdapter extends BaseAdapter {
|
|
|
46
52
|
// Get the size adjustment needed to fit
|
|
47
53
|
let diff = combinedPanelSize - size;
|
|
48
54
|
// Size down the panels as needed in reverse order, adjusting diff accordingly
|
|
49
|
-
panels.reverse().forEach(panel => {
|
|
55
|
+
panels.slice().reverse().forEach(panel => {
|
|
50
56
|
if (diff <= 0) {
|
|
51
57
|
return;
|
|
52
58
|
}
|
|
@@ -23,12 +23,16 @@ export declare class SplitViewFoundation implements ISplitViewFoundation {
|
|
|
23
23
|
private _autoClose;
|
|
24
24
|
private _autoCloseThreshold;
|
|
25
25
|
private _slotListener;
|
|
26
|
+
private _didOpenListener;
|
|
27
|
+
private _didCloseListener;
|
|
26
28
|
private _resizeObserverCallback;
|
|
27
29
|
private _isInitialized;
|
|
28
30
|
constructor(_adapter: ISplitViewAdapter);
|
|
29
31
|
initialize(): void;
|
|
30
32
|
disconnect(): void;
|
|
31
33
|
private _onSlotChange;
|
|
34
|
+
private _onDidOpen;
|
|
35
|
+
private _onDidClose;
|
|
32
36
|
private _onResize;
|
|
33
37
|
/**
|
|
34
38
|
* Sets the resizable value of slotted panels with no resizable value set.
|
|
@@ -16,10 +16,14 @@ export class SplitViewFoundation {
|
|
|
16
16
|
this._autoCloseThreshold = 0;
|
|
17
17
|
this._isInitialized = false;
|
|
18
18
|
this._slotListener = evt => this._onSlotChange(evt);
|
|
19
|
+
this._didOpenListener = () => this._onDidOpen();
|
|
20
|
+
this._didCloseListener = () => this._onDidClose();
|
|
19
21
|
this._resizeObserverCallback = throttle((entry) => this._onResize(entry), SPLIT_VIEW_CONSTANTS.numbers.RESIZE_THROTTLE_THRESHOLD);
|
|
20
22
|
}
|
|
21
23
|
initialize() {
|
|
22
24
|
this._adapter.registerSlotListener(this._slotListener);
|
|
25
|
+
this._adapter.registerDidOpenListener(this._didOpenListener);
|
|
26
|
+
this._adapter.registerDidCloseListener(this._didCloseListener);
|
|
23
27
|
this._adapter.observeResize(this._resizeObserverCallback);
|
|
24
28
|
this._applyOrientation();
|
|
25
29
|
this._isInitialized = true;
|
|
@@ -31,6 +35,14 @@ export class SplitViewFoundation {
|
|
|
31
35
|
this._layoutSlottedPanels();
|
|
32
36
|
this.update({ accessibility: true, cursor: true, orientation: this._orientation });
|
|
33
37
|
}
|
|
38
|
+
_onDidOpen() {
|
|
39
|
+
this._adapter.refitSlottedPanels(this._orientation);
|
|
40
|
+
this.update({ accessibility: true, cursor: true, size: true });
|
|
41
|
+
}
|
|
42
|
+
_onDidClose() {
|
|
43
|
+
this._adapter.refitSlottedPanels(this._orientation);
|
|
44
|
+
this.update({ accessibility: true, cursor: true, size: true });
|
|
45
|
+
}
|
|
34
46
|
_onResize(entry) {
|
|
35
47
|
this.update({ accessibility: true, cursor: true, size: true });
|
|
36
48
|
}
|
|
@@ -19,6 +19,11 @@ declare global {
|
|
|
19
19
|
'forge-split-view': ISplitViewComponent;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* The custom element class behind the `<forge-split-view>` element.
|
|
24
|
+
*
|
|
25
|
+
* @tag forge-split-view
|
|
26
|
+
*/
|
|
22
27
|
export declare class SplitViewComponent extends BaseComponent implements ISplitViewComponent {
|
|
23
28
|
static get observedAttributes(): string[];
|
|
24
29
|
private _foundation;
|
|
@@ -12,6 +12,11 @@ import { SPLIT_VIEW_CONSTANTS } from './split-view-constants';
|
|
|
12
12
|
import { SplitViewPanelComponent } from '../split-view-panel';
|
|
13
13
|
const template = '<template><div class=\"forge-split-view\" id=\"root\" part=\"root\"><slot></slot></div></template>';
|
|
14
14
|
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{display:-webkit-box;display:flex;width:100%;height:100%}:host{--forge-split-view-handle-width:8px;display:block;height:100%;width:100%;overflow:hidden;contain:paint size}:host([hidden]){display:none}:host([orientation=horizontal]) .forge-split-view{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}:host([orientation=vertical]) .forge-split-view{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}';
|
|
15
|
+
/**
|
|
16
|
+
* The custom element class behind the `<forge-split-view>` element.
|
|
17
|
+
*
|
|
18
|
+
* @tag forge-split-view
|
|
19
|
+
*/
|
|
15
20
|
let SplitViewComponent = class SplitViewComponent extends BaseComponent {
|
|
16
21
|
constructor() {
|
|
17
22
|
super();
|
|
@@ -638,7 +638,7 @@ export class SplitViewPanelFoundation {
|
|
|
638
638
|
}
|
|
639
639
|
}
|
|
640
640
|
// Size
|
|
641
|
-
if (config.size) {
|
|
641
|
+
if (config.size && this.open) {
|
|
642
642
|
const parentSize = this._adapter.getParentSize(this._orientation);
|
|
643
643
|
this._pixelMin = getPixelDimension(this._min, parentSize);
|
|
644
644
|
this._pixelMax = isDefined(this._max) ? getPixelDimension(this._max, parentSize) : undefined;
|
|
@@ -651,7 +651,7 @@ export class SplitViewPanelFoundation {
|
|
|
651
651
|
const size = this._adapter.getContentSize(this._orientation);
|
|
652
652
|
const availableSpace = this._adapter.getAvailableSpace(this._orientation, this._resizable);
|
|
653
653
|
// Accessibility
|
|
654
|
-
if (config.accessibility) {
|
|
654
|
+
if (config.accessibility && this.open) {
|
|
655
655
|
const valueNow = getValuenow(size, Object.assign(Object.assign({}, this._state), { availableSpace }));
|
|
656
656
|
this._adapter.setValuenow(valueNow);
|
|
657
657
|
}
|
|
@@ -34,6 +34,11 @@ declare global {
|
|
|
34
34
|
'forge-split-view-panel-did-close': CustomEvent<ISplitViewPanelOpenEvent>;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* The custom element class behind the `<forge-split-view-panel>` element.
|
|
39
|
+
*
|
|
40
|
+
* @tag forge-split-view-panel
|
|
41
|
+
*/
|
|
37
42
|
export declare class SplitViewPanelComponent extends BaseComponent implements ISplitViewPanelComponent {
|
|
38
43
|
static get observedAttributes(): string[];
|
|
39
44
|
private _foundation;
|
|
@@ -14,7 +14,12 @@ 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:ucimscr;animation-name:ucimscr;-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 ucimscr{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes ucimscr{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:ucimsd6;animation-name:ucimsd6;-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 ucimsd6{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes ucimsd6{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:ucimse3;animation-name:ucimse3;-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 ucimse3{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes ucimse3{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:ucimser;animation-name:ucimser;-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 ucimser{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes ucimser{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:ucimsf8;animation-name:ucimsf8;-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 ucimsf8{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes ucimsf8{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:ucimsfs;animation-name:ucimsfs;-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 ucimsfs{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes ucimsfs{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:ucimsgm;animation-name:ucimsgm;-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 ucimsgm{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes ucimsgm{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:ucimshh;animation-name:ucimshh;-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 ucimshh{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes ucimshh{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:uys0ncu;animation-name:uys0ncu;-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 uys0ncu{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes uys0ncu{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:uys0ndo;animation-name:uys0ndo;-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 uys0ndo{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes uys0ndo{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:uys0nen;animation-name:uys0nen;-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 uys0nen{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes uys0nen{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:uys0nf0;animation-name:uys0nf0;-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 uys0nf0{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes uys0nf0{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:uys0nfj;animation-name:uys0nfj;-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 uys0nfj{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes uys0nfj{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:uys0nfq;animation-name:uys0nfq;-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 uys0nfq{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes uys0nfq{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:uys0ng5;animation-name:uys0ng5;-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 uys0ng5{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes uys0ng5{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:uys0ngq;animation-name:uys0ngq;-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 uys0ngq{from{-webkit-transform:none;transform:none}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes uys0ngq{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
|
+
/**
|
|
19
|
+
* The custom element class behind the `<forge-split-view-panel>` element.
|
|
20
|
+
*
|
|
21
|
+
* @tag forge-split-view-panel
|
|
22
|
+
*/
|
|
18
23
|
let SplitViewPanelComponent = class SplitViewPanelComponent extends BaseComponent {
|
|
19
24
|
constructor() {
|
|
20
25
|
super();
|