@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.
Files changed (215) hide show
  1. package/custom-elements.json +221 -5
  2. package/dist/esm/accordion/index.js +1 -1
  3. package/dist/esm/app-bar/help-button/index.js +1 -1
  4. package/dist/esm/app-bar/index.js +1 -1
  5. package/dist/esm/app-bar/menu-button/index.js +1 -1
  6. package/dist/esm/app-bar/notification-button/index.js +1 -1
  7. package/dist/esm/app-bar/profile-button/index.js +1 -1
  8. package/dist/esm/app-bar/search/index.js +1 -1
  9. package/dist/esm/autocomplete/index.js +1 -1
  10. package/dist/esm/badge/index.js +1 -1
  11. package/dist/esm/banner/index.js +1 -1
  12. package/dist/esm/bottom-sheet/index.js +1 -1
  13. package/dist/esm/busy-indicator/index.js +1 -1
  14. package/dist/esm/button/index.js +1 -1
  15. package/dist/esm/button-toggle/button-toggle-group/index.js +1 -1
  16. package/dist/esm/button-toggle/index.js +1 -1
  17. package/dist/esm/calendar/calendar-dropdown/index.js +1 -1
  18. package/dist/esm/calendar/calendar-menu/index.js +1 -1
  19. package/dist/esm/calendar/index.js +1 -1
  20. package/dist/esm/checkbox/index.js +1 -1
  21. package/dist/esm/chip-field/index.js +1 -1
  22. package/dist/esm/chips/chip/index.js +1 -1
  23. package/dist/esm/chips/chip-set/index.js +1 -1
  24. package/dist/esm/chips/index.js +1 -1
  25. package/dist/esm/chunks/{chunk.I33ZJKOX.js → chunk.2SAHWDGJ.js} +2 -2
  26. package/dist/esm/chunks/{chunk.I33ZJKOX.js.map → chunk.2SAHWDGJ.js.map} +0 -0
  27. package/dist/esm/chunks/chunk.2VFX652S.js +12 -0
  28. package/dist/esm/chunks/{chunk.4DS3GUQ5.js.map → chunk.2VFX652S.js.map} +0 -0
  29. package/dist/esm/chunks/{chunk.IBQVV4HR.js → chunk.4HI4HGZ6.js} +2 -2
  30. package/dist/esm/chunks/{chunk.IBQVV4HR.js.map → chunk.4HI4HGZ6.js.map} +0 -0
  31. package/dist/esm/chunks/{chunk.DGQAYNAF.js → chunk.4KBQ5AJJ.js} +2 -2
  32. package/dist/esm/chunks/{chunk.DGQAYNAF.js.map → chunk.4KBQ5AJJ.js.map} +0 -0
  33. package/dist/esm/chunks/{chunk.XURVHDKR.js → chunk.4WFU5CVF.js} +2 -2
  34. package/dist/esm/chunks/{chunk.XURVHDKR.js.map → chunk.4WFU5CVF.js.map} +0 -0
  35. package/dist/esm/chunks/chunk.5K5SIZRX.js +7 -0
  36. package/dist/esm/chunks/chunk.5K5SIZRX.js.map +7 -0
  37. package/dist/esm/chunks/{chunk.2YGKMENJ.js → chunk.5PQTSZ7G.js} +2 -2
  38. package/dist/esm/chunks/{chunk.2YGKMENJ.js.map → chunk.5PQTSZ7G.js.map} +0 -0
  39. package/dist/esm/chunks/{chunk.EM3OQRZP.js → chunk.77FVTUTL.js} +2 -2
  40. package/dist/esm/chunks/{chunk.EM3OQRZP.js.map → chunk.77FVTUTL.js.map} +0 -0
  41. package/dist/esm/chunks/chunk.7GTCDP5H.js +7 -0
  42. package/dist/esm/chunks/{chunk.YWQZURLM.js.map → chunk.7GTCDP5H.js.map} +2 -2
  43. package/dist/esm/chunks/{chunk.KLHXGSZU.js → chunk.7O7V3N4A.js} +2 -2
  44. package/dist/esm/chunks/{chunk.KLHXGSZU.js.map → chunk.7O7V3N4A.js.map} +0 -0
  45. package/dist/esm/chunks/{chunk.ESW45SN4.js → chunk.7PHGAX6P.js} +2 -2
  46. package/dist/esm/chunks/{chunk.ESW45SN4.js.map → chunk.7PHGAX6P.js.map} +0 -0
  47. package/dist/esm/chunks/{chunk.VEVOKTUX.js → chunk.7TKJAZTM.js} +2 -2
  48. package/dist/esm/chunks/{chunk.VEVOKTUX.js.map → chunk.7TKJAZTM.js.map} +0 -0
  49. package/dist/esm/chunks/{chunk.WAEWHBHE.js → chunk.APGFXXJ7.js} +2 -2
  50. package/dist/esm/chunks/{chunk.WAEWHBHE.js.map → chunk.APGFXXJ7.js.map} +0 -0
  51. package/dist/esm/chunks/{chunk.A6I4EIPW.js → chunk.BFNAQQCU.js} +2 -2
  52. package/dist/esm/chunks/{chunk.A6I4EIPW.js.map → chunk.BFNAQQCU.js.map} +0 -0
  53. package/dist/esm/chunks/{chunk.G5BCWBD5.js → chunk.BOENNFXE.js} +2 -2
  54. package/dist/esm/chunks/{chunk.G5BCWBD5.js.map → chunk.BOENNFXE.js.map} +0 -0
  55. package/dist/esm/chunks/chunk.CVJTQY2T.js +7 -0
  56. package/dist/esm/chunks/chunk.CVJTQY2T.js.map +7 -0
  57. package/dist/esm/chunks/{chunk.WYVYTAFS.js → chunk.DML4YNQF.js} +2 -2
  58. package/dist/esm/chunks/{chunk.WYVYTAFS.js.map → chunk.DML4YNQF.js.map} +0 -0
  59. package/dist/esm/chunks/{chunk.RS5NH2NG.js → chunk.FPV4XEUK.js} +2 -2
  60. package/dist/esm/chunks/{chunk.RS5NH2NG.js.map → chunk.FPV4XEUK.js.map} +0 -0
  61. package/dist/esm/chunks/{chunk.WZRXUTYC.js → chunk.G77PXLAU.js} +2 -2
  62. package/dist/esm/chunks/{chunk.WZRXUTYC.js.map → chunk.G77PXLAU.js.map} +0 -0
  63. package/dist/esm/chunks/{chunk.2A3CKLXJ.js → chunk.I2YRKTG7.js} +2 -2
  64. package/dist/esm/chunks/{chunk.2A3CKLXJ.js.map → chunk.I2YRKTG7.js.map} +0 -0
  65. package/dist/esm/chunks/{chunk.AFZB3MG5.js → chunk.IFZXG3LI.js} +2 -2
  66. package/dist/esm/chunks/{chunk.AFZB3MG5.js.map → chunk.IFZXG3LI.js.map} +0 -0
  67. package/dist/esm/chunks/{chunk.OHCHNL3V.js → chunk.JNOCXQVB.js} +2 -2
  68. package/dist/esm/chunks/{chunk.OHCHNL3V.js.map → chunk.JNOCXQVB.js.map} +2 -2
  69. package/dist/esm/chunks/chunk.K6LZM6DS.js +7 -0
  70. package/dist/esm/chunks/{chunk.SFFYXKJW.js.map → chunk.K6LZM6DS.js.map} +2 -2
  71. package/dist/esm/chunks/{chunk.5SRA2RH3.js → chunk.KKF2ZZMD.js} +2 -2
  72. package/dist/esm/chunks/{chunk.5SRA2RH3.js.map → chunk.KKF2ZZMD.js.map} +0 -0
  73. package/dist/esm/chunks/chunk.KYCC3C3M.js +7 -0
  74. package/dist/esm/chunks/{chunk.AABG6MSC.js.map → chunk.KYCC3C3M.js.map} +2 -2
  75. package/dist/esm/chunks/{chunk.NEGJYSPB.js → chunk.LLHA3SQR.js} +2 -2
  76. package/dist/esm/chunks/{chunk.NEGJYSPB.js.map → chunk.LLHA3SQR.js.map} +0 -0
  77. package/dist/esm/chunks/chunk.MNBJMPJ6.js +7 -0
  78. package/dist/esm/chunks/chunk.MNBJMPJ6.js.map +7 -0
  79. package/dist/esm/chunks/{chunk.JXQZMASB.js → chunk.OAKTW64X.js} +2 -2
  80. package/dist/esm/chunks/{chunk.JXQZMASB.js.map → chunk.OAKTW64X.js.map} +0 -0
  81. package/dist/esm/chunks/{chunk.CSOY4C7A.js → chunk.OG2BI3UW.js} +2 -2
  82. package/dist/esm/chunks/{chunk.CSOY4C7A.js.map → chunk.OG2BI3UW.js.map} +2 -2
  83. package/dist/esm/chunks/{chunk.NJHQA266.js → chunk.OPTMTRWL.js} +2 -2
  84. package/dist/esm/chunks/{chunk.NJHQA266.js.map → chunk.OPTMTRWL.js.map} +0 -0
  85. package/dist/esm/chunks/{chunk.AHOQXJRN.js → chunk.P6B3UWJ5.js} +2 -2
  86. package/dist/esm/chunks/{chunk.AHOQXJRN.js.map → chunk.P6B3UWJ5.js.map} +0 -0
  87. package/dist/esm/chunks/{chunk.W7UTHKBF.js → chunk.Q6L7T6OJ.js} +2 -2
  88. package/dist/esm/chunks/{chunk.W7UTHKBF.js.map → chunk.Q6L7T6OJ.js.map} +0 -0
  89. package/dist/esm/chunks/{chunk.WGE5R5JK.js → chunk.QBDE7M3E.js} +2 -2
  90. package/dist/esm/chunks/{chunk.WGE5R5JK.js.map → chunk.QBDE7M3E.js.map} +0 -0
  91. package/dist/esm/chunks/{chunk.J6ERQLHJ.js → chunk.RPPBBBYG.js} +2 -2
  92. package/dist/esm/chunks/{chunk.J6ERQLHJ.js.map → chunk.RPPBBBYG.js.map} +2 -2
  93. package/dist/esm/chunks/{chunk.DJSOBAWA.js → chunk.SJSLC6XF.js} +2 -2
  94. package/dist/esm/chunks/{chunk.DJSOBAWA.js.map → chunk.SJSLC6XF.js.map} +0 -0
  95. package/dist/esm/chunks/{chunk.YFIDBZ7V.js → chunk.SLZFPWOH.js} +2 -2
  96. package/dist/esm/chunks/{chunk.YFIDBZ7V.js.map → chunk.SLZFPWOH.js.map} +0 -0
  97. package/dist/esm/chunks/{chunk.WKKNDQYZ.js → chunk.SVHVGMKS.js} +2 -2
  98. package/dist/esm/chunks/{chunk.WKKNDQYZ.js.map → chunk.SVHVGMKS.js.map} +0 -0
  99. package/dist/esm/chunks/{chunk.WMO47F6Z.js → chunk.TLHI6K2R.js} +2 -2
  100. package/dist/esm/chunks/{chunk.WMO47F6Z.js.map → chunk.TLHI6K2R.js.map} +0 -0
  101. package/dist/esm/chunks/{chunk.6BKOGBE6.js → chunk.TR64DV3G.js} +2 -2
  102. package/dist/esm/chunks/{chunk.6BKOGBE6.js.map → chunk.TR64DV3G.js.map} +0 -0
  103. package/dist/esm/chunks/chunk.UHVCXKB4.js +7 -0
  104. package/dist/esm/chunks/chunk.UHVCXKB4.js.map +7 -0
  105. package/dist/esm/chunks/{chunk.MTMZFAWU.js → chunk.V7P3QPNM.js} +2 -2
  106. package/dist/esm/chunks/{chunk.MTMZFAWU.js.map → chunk.V7P3QPNM.js.map} +0 -0
  107. package/dist/esm/chunks/{chunk.ZHCQBWAG.js → chunk.WALEAV54.js} +2 -2
  108. package/dist/esm/chunks/{chunk.ZHCQBWAG.js.map → chunk.WALEAV54.js.map} +0 -0
  109. package/dist/esm/chunks/{chunk.SNGELGOD.js → chunk.WV45FGTW.js} +2 -2
  110. package/dist/esm/chunks/{chunk.SNGELGOD.js.map → chunk.WV45FGTW.js.map} +0 -0
  111. package/dist/esm/chunks/chunk.Y6FFG7XO.js +7 -0
  112. package/dist/esm/chunks/chunk.Y6FFG7XO.js.map +7 -0
  113. package/dist/esm/chunks/{chunk.RZL6S3K3.js → chunk.Y6MPWPZU.js} +2 -2
  114. package/dist/esm/chunks/{chunk.RZL6S3K3.js.map → chunk.Y6MPWPZU.js.map} +0 -0
  115. package/dist/esm/chunks/{chunk.7TQYFMM4.js → chunk.YAJT3P6V.js} +2 -2
  116. package/dist/esm/chunks/{chunk.7TQYFMM4.js.map → chunk.YAJT3P6V.js.map} +0 -0
  117. package/dist/esm/chunks/{chunk.57XBS3DF.js → chunk.YSE5EMB3.js} +2 -2
  118. package/dist/esm/chunks/{chunk.57XBS3DF.js.map → chunk.YSE5EMB3.js.map} +0 -0
  119. package/dist/esm/chunks/{chunk.KZHMDZVS.js → chunk.YWKKZLZ2.js} +2 -2
  120. package/dist/esm/chunks/{chunk.KZHMDZVS.js.map → chunk.YWKKZLZ2.js.map} +0 -0
  121. package/dist/esm/chunks/{chunk.UNTTQM6V.js → chunk.YX5SWK3O.js} +2 -2
  122. package/dist/esm/chunks/{chunk.UNTTQM6V.js.map → chunk.YX5SWK3O.js.map} +0 -0
  123. package/dist/esm/chunks/{chunk.7WWP6WI6.js → chunk.Z5P6EA5L.js} +2 -2
  124. package/dist/esm/chunks/{chunk.7WWP6WI6.js.map → chunk.Z5P6EA5L.js.map} +0 -0
  125. package/dist/esm/chunks/chunk.ZFUVXYDL.js +7 -0
  126. package/dist/esm/chunks/chunk.ZFUVXYDL.js.map +7 -0
  127. package/dist/esm/chunks/{chunk.5HUDHTAK.js → chunk.ZHXPL2MS.js} +2 -2
  128. package/dist/esm/chunks/{chunk.5HUDHTAK.js.map → chunk.ZHXPL2MS.js.map} +0 -0
  129. package/dist/esm/color-picker/index.js +1 -1
  130. package/dist/esm/core/index.js +1 -1
  131. package/dist/esm/core/utils/index.js +1 -1
  132. package/dist/esm/date-picker/index.js +1 -1
  133. package/dist/esm/date-range-picker/index.js +1 -1
  134. package/dist/esm/dialog/index.js +1 -1
  135. package/dist/esm/expansion-panel/index.js +1 -1
  136. package/dist/esm/file-picker/index.js +1 -1
  137. package/dist/esm/icon/index.js +1 -1
  138. package/dist/esm/icon-button/index.js +1 -1
  139. package/dist/esm/index.js +1 -1
  140. package/dist/esm/label-value/index.js +1 -1
  141. package/dist/esm/list-dropdown/index.js +1 -1
  142. package/dist/esm/menu/index.js +1 -1
  143. package/dist/esm/open-icon/index.js +1 -1
  144. package/dist/esm/paginator/index.js +1 -1
  145. package/dist/esm/profile-card/index.js +1 -1
  146. package/dist/esm/quantity-field/index.js +1 -1
  147. package/dist/esm/select/core/index.js +1 -1
  148. package/dist/esm/select/index.js +1 -1
  149. package/dist/esm/select/select/index.js +1 -1
  150. package/dist/esm/select/select-dropdown/index.js +1 -1
  151. package/dist/esm/slider/index.js +1 -1
  152. package/dist/esm/split-view/index.js +1 -1
  153. package/dist/esm/split-view/split-view/index.js +1 -1
  154. package/dist/esm/split-view/split-view-panel/index.js +1 -1
  155. package/dist/esm/stepper/index.js +1 -1
  156. package/dist/esm/stepper/step/index.js +1 -1
  157. package/dist/esm/stepper/stepper/index.js +1 -1
  158. package/dist/esm/switch/index.js +1 -1
  159. package/dist/esm/table/index.js +1 -1
  160. package/dist/esm/tabs/index.js +1 -1
  161. package/dist/esm/tabs/tab-bar/index.js +1 -1
  162. package/dist/esm/text-field/index.js +1 -1
  163. package/dist/esm/time-picker/index.js +1 -1
  164. package/dist/esm/toast/index.js +1 -1
  165. package/dist/esm/toolbar/index.js +1 -1
  166. package/esm/autocomplete/autocomplete-adapter.d.ts +2 -0
  167. package/esm/autocomplete/autocomplete-adapter.js +10 -0
  168. package/esm/autocomplete/autocomplete-constants.js +2 -1
  169. package/esm/autocomplete/autocomplete-foundation.d.ts +1 -0
  170. package/esm/autocomplete/autocomplete-foundation.js +9 -0
  171. package/esm/badge/badge.js +2 -2
  172. package/esm/button-toggle/button-toggle-group/button-toggle-group-constants.d.ts +1 -1
  173. package/esm/button-toggle/button-toggle-group/button-toggle-group.d.ts +4 -1
  174. package/esm/core/utils/utils.d.ts +6 -0
  175. package/esm/core/utils/utils.js +10 -0
  176. package/esm/expansion-panel/expansion-panel-foundation.js +2 -2
  177. package/esm/field/field-constants.d.ts +3 -0
  178. package/esm/field/field-constants.js +4 -0
  179. package/esm/field/field.js +3 -3
  180. package/esm/menu/menu-foundation.d.ts +1 -0
  181. package/esm/menu/menu-foundation.js +6 -3
  182. package/esm/select/core/base-select-adapter.d.ts +2 -0
  183. package/esm/select/core/base-select-adapter.js +17 -7
  184. package/esm/select/core/base-select-foundation.d.ts +1 -0
  185. package/esm/select/core/base-select-foundation.js +7 -0
  186. package/esm/split-view/split-view/split-view-adapter.d.ts +4 -0
  187. package/esm/split-view/split-view/split-view-adapter.js +7 -1
  188. package/esm/split-view/split-view/split-view-foundation.d.ts +4 -0
  189. package/esm/split-view/split-view/split-view-foundation.js +12 -0
  190. package/esm/split-view/split-view/split-view.d.ts +5 -0
  191. package/esm/split-view/split-view/split-view.js +5 -0
  192. package/esm/split-view/split-view-panel/split-view-panel-foundation.js +2 -2
  193. package/esm/split-view/split-view-panel/split-view-panel.d.ts +5 -0
  194. package/esm/split-view/split-view-panel/split-view-panel.js +6 -1
  195. package/esm/toolbar/toolbar.js +1 -1
  196. package/package.json +1 -1
  197. package/styles/badge/_mixins.scss +5 -1
  198. package/styles/toolbar/_mixins.scss +2 -2
  199. package/styles/toolbar/toolbar.scss +6 -0
  200. package/dist/esm/chunks/chunk.4DS3GUQ5.js +0 -12
  201. package/dist/esm/chunks/chunk.5QK7XR2W.js +0 -7
  202. package/dist/esm/chunks/chunk.5QK7XR2W.js.map +0 -7
  203. package/dist/esm/chunks/chunk.7GT5LOI3.js +0 -7
  204. package/dist/esm/chunks/chunk.7GT5LOI3.js.map +0 -7
  205. package/dist/esm/chunks/chunk.AABG6MSC.js +0 -7
  206. package/dist/esm/chunks/chunk.GP7WDYWQ.js +0 -7
  207. package/dist/esm/chunks/chunk.GP7WDYWQ.js.map +0 -7
  208. package/dist/esm/chunks/chunk.R46EDURP.js +0 -7
  209. package/dist/esm/chunks/chunk.R46EDURP.js.map +0 -7
  210. package/dist/esm/chunks/chunk.SFFYXKJW.js +0 -7
  211. package/dist/esm/chunks/chunk.SHSR5RZ4.js +0 -7
  212. package/dist/esm/chunks/chunk.SHSR5RZ4.js.map +0 -7
  213. package/dist/esm/chunks/chunk.WSGJIPQJ.js +0 -7
  214. package/dist/esm/chunks/chunk.WSGJIPQJ.js.map +0 -7
  215. 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: 'input,textarea',
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.
@@ -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-block;-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{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)}';
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;
@@ -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.stopPropagation();
128
- if (evt.key === 'Space' || evt.key === 'Enter' || evt.keyCode === 32 || evt.keyCode === 13) {
127
+ if (evt.key === ' ' || evt.key === 'Enter') {
128
+ evt.stopPropagation();
129
129
  evt.preventDefault();
130
130
  this._toggle();
131
131
  this._emitEvent();
@@ -13,6 +13,9 @@ export declare const FIELD_CONSTANTS: {
13
13
  HOST_LABEL_FLOATING: string;
14
14
  };
15
15
  observedInputAttributes: string[];
16
+ selectors: {
17
+ INPUT: string;
18
+ };
16
19
  classes: {
17
20
  DISABLED: string;
18
21
  READONLY: string;
@@ -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
  };
@@ -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, ensureChildren, FoundationProperty } from '@tylertech/forge-core';
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.children.length) {
24
+ if (this.querySelector(FIELD_CONSTANTS.selectors.INPUT)) {
25
25
  this._initialize();
26
26
  }
27
27
  else {
28
- ensureChildren(this).then(() => this._initialize());
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
- const flatOptions = this._flatOptions;
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
- const optionGroupElement = document.createElement(OPTION_GROUP_CONSTANTS.elementName);
155
- optionGroupElement.label = group.text || '';
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(OPTION_CONSTANTS.elementName);
160
- optionElement.value = option.value;
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();