@tylertech/forge 3.8.0-dev.2 → 3.8.0-dev.4

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 (80) hide show
  1. package/custom-elements.json +1725 -928
  2. package/dist/app-bar/forge-app-bar.css +20 -3
  3. package/dist/forge.css +2 -2
  4. package/dist/lib.js +20 -20
  5. package/dist/lib.js.map +4 -4
  6. package/dist/table/forge-table.css +2 -2
  7. package/dist/vscode.css-custom-data.json +94 -84
  8. package/dist/vscode.html-custom-data.json +190 -65
  9. package/esm/app-bar/app-bar/app-bar-constants.d.ts +2 -0
  10. package/esm/app-bar/app-bar/app-bar-constants.js +2 -1
  11. package/esm/app-bar/app-bar/app-bar-core.d.ts +5 -1
  12. package/esm/app-bar/app-bar/app-bar-core.js +10 -0
  13. package/esm/app-bar/app-bar/app-bar.d.ts +9 -1
  14. package/esm/app-bar/app-bar/app-bar.js +15 -2
  15. package/esm/app-bar/help-button/app-bar-help-button.js +1 -1
  16. package/esm/app-bar/menu-button/app-bar-menu-button.js +1 -1
  17. package/esm/app-bar/notification-button/app-bar-notification-button.js +1 -1
  18. package/esm/app-bar/profile-button/app-bar-profile-button.js +1 -1
  19. package/esm/app-bar/search/app-bar-search.js +1 -1
  20. package/esm/autocomplete/autocomplete-core.js +5 -0
  21. package/esm/avatar/avatar.d.ts +7 -4
  22. package/esm/avatar/avatar.js +10 -6
  23. package/esm/badge/badge.d.ts +7 -3
  24. package/esm/badge/badge.js +9 -4
  25. package/esm/button/button-constants.d.ts +1 -1
  26. package/esm/button/button.js +1 -1
  27. package/esm/card/card.d.ts +7 -3
  28. package/esm/card/card.js +8 -3
  29. package/esm/core/base/base-lit-element.d.ts +9 -0
  30. package/esm/core/base/base-lit-element.js +12 -0
  31. package/esm/core/utils/lit-utils.d.ts +11 -0
  32. package/esm/core/utils/lit-utils.js +31 -0
  33. package/esm/dialog/dialog-adapter.d.ts +0 -1
  34. package/esm/dialog/dialog-adapter.js +4 -39
  35. package/esm/dialog/dialog-constants.d.ts +6 -2
  36. package/esm/dialog/dialog-constants.js +4 -4
  37. package/esm/dialog/dialog-core.d.ts +3 -3
  38. package/esm/dialog/dialog-core.js +8 -7
  39. package/esm/dialog/dialog.d.ts +3 -3
  40. package/esm/dialog/dialog.js +3 -3
  41. package/esm/icon-button/icon-button-constants.d.ts +1 -1
  42. package/esm/icon-button/icon-button.js +1 -1
  43. package/esm/key/key/index.js +2 -2
  44. package/esm/key/key/key.d.ts +7 -2
  45. package/esm/key/key/key.js +10 -3
  46. package/esm/key/key-item/index.js +2 -2
  47. package/esm/key/key-item/key-item.d.ts +7 -2
  48. package/esm/key/key-item/key-item.js +10 -3
  49. package/esm/list-dropdown/list-dropdown-aware-core.d.ts +22 -0
  50. package/esm/list-dropdown/list-dropdown-aware-core.js +30 -0
  51. package/esm/list-dropdown/list-dropdown-aware.d.ts +35 -0
  52. package/esm/list-dropdown/list-dropdown-aware.js +35 -16
  53. package/esm/list-dropdown/list-dropdown-constants.d.ts +22 -3
  54. package/esm/list-dropdown/list-dropdown-constants.js +9 -1
  55. package/esm/list-dropdown/list-dropdown-utils.js +6 -0
  56. package/esm/menu/menu-core.js +2 -0
  57. package/esm/menu/menu.js +1 -0
  58. package/esm/meter/meter/meter.d.ts +7 -2
  59. package/esm/meter/meter/meter.js +10 -3
  60. package/esm/meter/meter-group/index.js +2 -2
  61. package/esm/meter/meter-group/meter-group.d.ts +7 -2
  62. package/esm/meter/meter-group/meter-group.js +10 -4
  63. package/esm/overlay/base/overlay-aware.d.ts +4 -4
  64. package/esm/overlay/base/overlay-aware.js +3 -3
  65. package/esm/select/core/base-select-core.js +5 -0
  66. package/esm/select/select/select.d.ts +25 -1
  67. package/esm/select/select/select.js +26 -1
  68. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  69. package/esm/tabs/tab-bar/tab-bar.js +1 -1
  70. package/package.json +1 -1
  71. package/sass/app-bar/app-bar/_core.scss +0 -1
  72. package/sass/app-bar/app-bar/app-bar.scss +51 -7
  73. package/sass/app-bar/forge-app-bar.scss +41 -11
  74. package/sass/app-bar/search/app-bar-search.scss +3 -0
  75. package/sass/button/button.scss +24 -0
  76. package/sass/core/styles/scrollbar/index.scss +14 -0
  77. package/sass/core/styles/tokens/app-bar/app-bar/_tokens.scss +4 -1
  78. package/sass/icon-button/icon-button.scss +14 -0
  79. package/sass/table/_core.scss +1 -1
  80. package/sass/tabs/tab-bar/tab-bar.scss +24 -0
@@ -9,42 +9,46 @@ import { BaseComponent } from '../core/base/base-component';
9
9
  import { LIST_DROPDOWN_CONSTANTS } from './list-dropdown-constants';
10
10
  export class ListDropdownAware extends BaseComponent {
11
11
  static get observedAttributes() {
12
- return [
13
- LIST_DROPDOWN_CONSTANTS.attributes.POPUP_CLASSES,
14
- LIST_DROPDOWN_CONSTANTS.attributes.OPTION_LIMIT,
15
- LIST_DROPDOWN_CONSTANTS.attributes.OBSERVE_SCROLL,
16
- LIST_DROPDOWN_CONSTANTS.attributes.OBSERVE_SCROLL_THRESHOLD,
17
- LIST_DROPDOWN_CONSTANTS.attributes.SYNC_POPUP_WIDTH,
18
- LIST_DROPDOWN_CONSTANTS.attributes.CONSTRAIN_POPUP_WIDTH,
19
- LIST_DROPDOWN_CONSTANTS.attributes.WRAP_OPTION_TEXT
20
- ];
12
+ return Object.values(LIST_DROPDOWN_CONSTANTS.observedAttributes);
21
13
  }
22
14
  constructor() {
23
15
  super();
24
16
  }
25
17
  attributeChangedCallback(name, oldValue, newValue) {
26
18
  switch (name) {
27
- case LIST_DROPDOWN_CONSTANTS.attributes.POPUP_CLASSES:
19
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.POPUP_CLASSES:
28
20
  this.popupClasses = newValue;
29
21
  break;
30
- case LIST_DROPDOWN_CONSTANTS.attributes.OPTION_LIMIT:
22
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.OPTION_LIMIT:
31
23
  this.optionLimit = coerceNumber(newValue);
32
24
  break;
33
- case LIST_DROPDOWN_CONSTANTS.attributes.OBSERVE_SCROLL:
25
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.OBSERVE_SCROLL:
34
26
  this.observeScroll = coerceBoolean(newValue);
35
27
  break;
36
- case LIST_DROPDOWN_CONSTANTS.attributes.OBSERVE_SCROLL_THRESHOLD:
28
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.OBSERVE_SCROLL_THRESHOLD:
37
29
  this.observeScrollThreshold = coerceNumber(newValue);
38
30
  break;
39
- case LIST_DROPDOWN_CONSTANTS.attributes.SYNC_POPUP_WIDTH:
31
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.SYNC_POPUP_WIDTH:
40
32
  this.syncPopupWidth = coerceBoolean(newValue);
41
33
  break;
42
- case LIST_DROPDOWN_CONSTANTS.attributes.CONSTRAIN_POPUP_WIDTH:
34
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.CONSTRAIN_POPUP_WIDTH:
43
35
  this.constrainPopupWidth = coerceBoolean(newValue);
44
36
  break;
45
- case LIST_DROPDOWN_CONSTANTS.attributes.WRAP_OPTION_TEXT:
37
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.WRAP_OPTION_TEXT:
46
38
  this.wrapOptionText = coerceBoolean(newValue);
47
39
  break;
40
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.POPOVER_PLACEMENT:
41
+ this.popoverPlacement = newValue;
42
+ break;
43
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.POPOVER_OFFSET:
44
+ this.popoverOffset = JSON.parse(newValue);
45
+ break;
46
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.POPOVER_FLIP:
47
+ this.popoverFlip = newValue;
48
+ break;
49
+ case LIST_DROPDOWN_CONSTANTS.observedAttributes.POPOVER_SHIFT:
50
+ this.popoverShift = newValue;
51
+ break;
48
52
  }
49
53
  }
50
54
  }
@@ -75,3 +79,18 @@ __decorate([
75
79
  __decorate([
76
80
  coreProperty()
77
81
  ], ListDropdownAware.prototype, "wrapOptionText", void 0);
82
+ __decorate([
83
+ coreProperty()
84
+ ], ListDropdownAware.prototype, "popoverPlacement", void 0);
85
+ __decorate([
86
+ coreProperty()
87
+ ], ListDropdownAware.prototype, "popoverOffset", void 0);
88
+ __decorate([
89
+ coreProperty()
90
+ ], ListDropdownAware.prototype, "popoverFlip", void 0);
91
+ __decorate([
92
+ coreProperty()
93
+ ], ListDropdownAware.prototype, "popoverShift", void 0);
94
+ __decorate([
95
+ coreProperty()
96
+ ], ListDropdownAware.prototype, "popoverFallbackPlacements", void 0);
@@ -4,11 +4,11 @@
4
4
  * License: Apache-2.0
5
5
  */
6
6
  import type { IIconComponent } from '../icon';
7
- import type { IOverlayOffset } from '../overlay/overlay-constants';
7
+ import type { IOverlayOffset, OverlayFlipState, OverlayShiftState } from '../overlay/overlay-constants';
8
8
  import { PositionPlacement } from '../core/utils/position-utils';
9
9
  import { TooltipPlacement, TooltipType } from '../tooltip';
10
10
  export declare const LIST_DROPDOWN_CONSTANTS: {
11
- attributes: {
11
+ observedAttributes: {
12
12
  POPUP_CLASSES: string;
13
13
  OPTION_LIMIT: string;
14
14
  OBSERVE_SCROLL: string;
@@ -16,8 +16,25 @@ export declare const LIST_DROPDOWN_CONSTANTS: {
16
16
  SYNC_POPUP_WIDTH: string;
17
17
  CONSTRAIN_POPUP_WIDTH: string;
18
18
  WRAP_OPTION_TEXT: string;
19
+ POPOVER_PLACEMENT: string;
20
+ POPOVER_OFFSET: string;
21
+ POPOVER_FLIP: string;
22
+ POPOVER_SHIFT: string;
23
+ };
24
+ attributes: {
19
25
  CHECKBOX_ELEMENT: string;
20
26
  DATA_ALLOW_FOCUS: string;
27
+ POPUP_CLASSES: string;
28
+ OPTION_LIMIT: string;
29
+ OBSERVE_SCROLL: string;
30
+ OBSERVE_SCROLL_THRESHOLD: string;
31
+ SYNC_POPUP_WIDTH: string;
32
+ CONSTRAIN_POPUP_WIDTH: string;
33
+ WRAP_OPTION_TEXT: string;
34
+ POPOVER_PLACEMENT: string;
35
+ POPOVER_OFFSET: string;
36
+ POPOVER_FLIP: string;
37
+ POPOVER_SHIFT: string;
21
38
  };
22
39
  classes: {
23
40
  GROUP_WRAPPER: string;
@@ -85,7 +102,9 @@ export interface IListDropdownConfig<T = any> {
85
102
  popupOffset?: IOverlayOffset;
86
103
  popupStatic?: boolean;
87
104
  popupPlacement?: PositionPlacement;
88
- popupFallbackPlacements?: PositionPlacement[];
105
+ popupFlip?: OverlayFlipState;
106
+ popupShift?: OverlayShiftState;
107
+ popupFallbackPlacements?: PositionPlacement[] | null;
89
108
  optionLimit?: number;
90
109
  optionBuilder?: ListDropdownOptionBuilder;
91
110
  observeScroll?: boolean;
@@ -3,7 +3,7 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- const attributes = {
6
+ const observedAttributes = {
7
7
  POPUP_CLASSES: 'popup-classes',
8
8
  OPTION_LIMIT: 'option-limit',
9
9
  OBSERVE_SCROLL: 'observe-scroll',
@@ -11,6 +11,13 @@ const attributes = {
11
11
  SYNC_POPUP_WIDTH: 'sync-popup-width',
12
12
  CONSTRAIN_POPUP_WIDTH: 'constrain-popup-width',
13
13
  WRAP_OPTION_TEXT: 'wrap-option-text',
14
+ POPOVER_PLACEMENT: 'popover-placement',
15
+ POPOVER_OFFSET: 'popover-offset',
16
+ POPOVER_FLIP: 'popover-flip',
17
+ POPOVER_SHIFT: 'popover-shift'
18
+ };
19
+ const attributes = {
20
+ ...observedAttributes,
14
21
  // Internal
15
22
  CHECKBOX_ELEMENT: 'data-list-dropdown-checkbox',
16
23
  DATA_ALLOW_FOCUS: 'data-list-dropdown-allow-focus'
@@ -19,6 +26,7 @@ const classes = {
19
26
  GROUP_WRAPPER: 'forge-list-dropdown__group-wrapper'
20
27
  };
21
28
  export const LIST_DROPDOWN_CONSTANTS = {
29
+ observedAttributes,
22
30
  attributes,
23
31
  classes
24
32
  };
@@ -60,6 +60,12 @@ export function createPopupDropdown(config, targetElement) {
60
60
  if (config.popupOffset) {
61
61
  popoverElement.offset = config.popupOffset;
62
62
  }
63
+ if (config.popupFlip) {
64
+ popoverElement.flip = config.popupFlip;
65
+ }
66
+ if (config.popupShift !== undefined) {
67
+ popoverElement.shift = config.popupShift;
68
+ }
63
69
  // Set the animations based on our type
64
70
  if (config.type === ListDropdownType.None) {
65
71
  popoverElement.animationType = 'none';
@@ -238,6 +238,8 @@ export class MenuCore extends CascadingListDropdownAwareCore {
238
238
  observeScroll: this._observeScroll,
239
239
  observeScrollThreshold: this._observeScrollThreshold,
240
240
  popupPlacement: this._placement,
241
+ popupFlip: this._popoverFlip,
242
+ popupShift: this._popoverShift,
241
243
  popupFallbackPlacements: this._fallbackPlacements,
242
244
  activeStartIndex: fromKeyboard ? 0 : undefined,
243
245
  popupClasses: [MENU_CONSTANTS.classes.POPUP, ...this._popupClasses],
package/esm/menu/menu.js CHANGED
@@ -25,6 +25,7 @@ const styles = ':host{display:inline-flex}:host([hidden]){display:none}';
25
25
  let MenuComponent = class MenuComponent extends ListDropdownAware {
26
26
  static get observedAttributes() {
27
27
  return [
28
+ ...ListDropdownAware.observedAttributes,
28
29
  MENU_CONSTANTS.attributes.OPEN,
29
30
  MENU_CONSTANTS.attributes.PLACEMENT,
30
31
  MENU_CONSTANTS.attributes.SELECTED_INDEX,
@@ -3,8 +3,11 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { LitElement, PropertyValues, TemplateResult } from 'lit';
6
+ import { PropertyValues, TemplateResult } from 'lit';
7
7
  import { Theme } from '../../constants';
8
+ import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
9
+ import { BaseLitElement } from '../../core/base/base-lit-element';
10
+ export declare const METER_TAG_NAME: keyof HTMLElementTagNameMap;
8
11
  export type MeterDirection = 'horizontal' | 'vertical';
9
12
  export type MeterDensity = 'default' | 'small' | 'medium' | 'large';
10
13
  export type MeterShape = 'default' | 'round' | 'squared';
@@ -47,9 +50,11 @@ export type MeterValueMode = 'manual' | 'percentage' | 'value';
47
50
  * @slot - The default slot for the meter's label.
48
51
  * @slot value - A textual representation of the meter's value.
49
52
  */
50
- export declare class MeterComponent extends LitElement {
53
+ export declare class MeterComponent extends BaseLitElement {
51
54
  static styles: import("lit").CSSResult;
52
55
  static formAssociated: boolean;
56
+ /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
57
+ static [CUSTOM_ELEMENT_NAME_PROPERTY]: keyof HTMLElementTagNameMap;
53
58
  /**
54
59
  * The current value of the meter.
55
60
  * @default 0
@@ -3,14 +3,18 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
+ var _a;
6
7
  import { __decorate } from "tslib";
7
- import { LitElement, html, unsafeCSS } from 'lit';
8
+ import { html, unsafeCSS } from 'lit';
8
9
  import { customElement, property, queryAssignedNodes, state } from 'lit/decorators.js';
9
10
  import { classMap } from 'lit/directives/class-map.js';
10
11
  import { styleMap } from 'lit/directives/style-map.js';
11
12
  import { setDefaultAria } from '../../core/utils/a11y-utils';
12
13
  import { toggleState } from '../../core/utils/utils';
14
+ import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
15
+ import { BaseLitElement } from '../../core/base/base-lit-element';
13
16
  const styles = ':host{display:inline}.forge-meter{--_meter-background:var(--forge-meter-background, var(--forge-theme-tertiary-container-low, #e8ebff));--_meter-color:var(--forge-meter-color, var(--forge-theme-tertiary, #3d5afe));--_meter-height:var(--forge-meter-height, var(--forge-spacing-medium, 16px));--_meter-shape:var(--forge-meter-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_meter-inner-shape:var(--forge-meter-inner-shape, 0);--_meter-inner-elevation:var(--forge-meter-inner-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));--_meter-tickmarks:var(--forge-meter-tickmarks, 10);--_meter-tickmark-opacity:var(--forge-meter-tickmark-opacity, 54%);--_meter-transition-duration:var(--forge-meter-transition-duration, var(--forge-animation-duration-short4, 200ms));--_meter-transition-timing:var(--forge-meter-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)))}.forge-meter{box-sizing:border-box}.forge-meter .heading{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-label1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-label1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, .75)));font-weight:var(--forge-typography-label1-font-weight,400);line-height:var(--forge-typography-label1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));letter-spacing:var(--forge-typography-label1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-label1-text-transform,inherit);text-decoration:var(--forge-typography-label1-text-decoration,inherit);display:flex;align-items:center;justify-content:space-between;line-height:normal}.forge-meter .heading.not-empty{margin-bottom:var(--forge-spacing-xxsmall,4px)}.forge-meter .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.forge-meter .value{color:var(--forge-theme-text-medium,rgba(0,0,0,.6))}.forge-meter .track{position:relative;block-size:var(--_meter-height);border-radius:var(--_meter-shape);overflow:hidden;background:var(--_meter-background)}.forge-meter .track.segmented{--_meter-background:var(--forge-meter-background, var(--forge-theme-warning-container-low, #f9e9e0));--_meter-color:var(--forge-meter-color, var(--forge-theme-warning, #d14900));transition-property:background;transition-duration:var(--_meter-transition-duration);transition-timing-function:var(--_meter-transition-timing)}.forge-meter .track.segmented.least-optimal{--_meter-background:var(--forge-meter-background, var(--forge-theme-error-container-low, #f6e0e4));--_meter-color:var(--forge-meter-color, var(--forge-theme-error, #b00020))}.forge-meter .track.segmented.optimal{--_meter-background:var(--forge-meter-background, var(--forge-theme-success-container-low, #e6efe6));--_meter-color:var(--forge-meter-color, var(--forge-theme-success, #2e7d32))}.forge-meter .track.segmented .bar{transition-property:translate,box-shadow,background;transition-duration:var(--_meter-transition-duration);transition-timing-function:var(--_meter-transition-timing)}.forge-meter .track.lowest{--_meter-inner-elevation:var(--forge-meter-inner-elevation, 0)}.forge-meter .track.tickmarks::after{content:\"\";position:relative;display:block;width:100%;height:100%;margin-left:2px;background:repeating-linear-gradient(90deg,var(--_meter-color) 0,var(--_meter-color) 1px,var(--_meter-background) 1px,var(--_meter-background) 2px,transparent 2px,transparent calc(100% / (var(--_meter-tickmarks) + 1) + 0px));background-position-x:-2px;opacity:var(--_meter-tickmark-opacity);pointer-events:none;transition-property:background;transition-duration:var(--_meter-transition-duration);transition-timing-function:var(--_meter-transition-timing)}.forge-meter .bar{position:absolute;left:-100%;width:100%;height:100%;border-radius:var(--_meter-inner-shape);box-shadow:var(--_meter-inner-elevation);background:var(--_meter-color);translate:var(--_meter-percentage) 0;transition-property:translate,box-shadow;transition-duration:var(--_meter-transition-duration);transition-timing-function:var(--_meter-transition-timing)}.forge-meter.grouped{display:block;position:absolute;z-index:var(--_meter-z-index);top:0;left:var(--_meter-inset);width:calc(var(--_meter-percentage) + var(--_meter-group-height) * .5);height:100%;border-radius:var(--_meter-inner-shape);border-top-left-radius:0;border-bottom-left-radius:0;margin-left:calc(-1 * var(--_meter-group-height) * .5);background:var(--_meter-color);box-shadow:var(--_meter-inner-elevation)}.forge-meter.grouped.muted{--_meter-color:var(--forge-meter-color, var(--forge-theme-tertiary-container-high, #b5c0ff))}.forge-meter.density--small{--_meter-height:var(--forge-meter-height, var(--forge-spacing-xsmall, 8px))}.forge-meter.density--medium{--_meter-height:var(--forge-meter-height, var(--forge-spacing-medium, 16px))}.forge-meter.density--large{--_meter-height:var(--forge-meter-height, var(--forge-spacing-large, 24px))}.forge-meter.shape--default{--_meter-shape:var(--forge-meter-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)))}.forge-meter.shape--rounded{--_meter-shape:var(--forge-meter-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)))}.forge-meter.shape--squared{--_meter-shape:var(--forge-meter-shape, 0)}.forge-meter.inner-shape--inherit{--_meter-inner-shape:var(--_meter-shape)}.forge-meter.muted .track{--_meter-background:var(--forge-meter-background, var(--forge-theme-tertiary-container-minimum, #f7f8ff));--_meter-color:var(--forge-meter-color, var(--forge-theme-tertiary-container-high, #b5c0ff))}.forge-meter.muted .track.segmented{--_meter-background:var(--forge-meter-background, var(--forge-theme-warning-container-minimum, #fdf8f5));--_meter-color:var(--forge-meter-color, var(--forge-theme-warning-container-high, #eeba9e))}.forge-meter.muted .track.segmented.least-optimal{--_meter-background:var(--forge-meter-background, var(--forge-theme-error-container-minimum, #fcf5f6));--_meter-color:var(--forge-meter-color, var(--forge-theme-error-container-high, #e19eaa))}.forge-meter.muted .track.segmented.optimal{--_meter-background:var(--forge-meter-background, var(--forge-theme-success-container-minimum, #f7faf7));--_meter-color:var(--forge-meter-color, var(--forge-theme-success-container-high, #b0ceb1))}:host(:is(:state(vertical),:--vertical)){display:block}:host(:is(:state(vertical),:--vertical)) .forge-meter{display:flex;flex-direction:row-reverse;align-items:end;width:fit-content;height:100%;max-width:100%}:host(:is(:state(vertical),:--vertical)) .forge-meter .heading{flex-direction:column;align-items:start}:host(:is(:state(vertical),:--vertical)) .forge-meter .heading.not-empty{margin-bottom:0;margin-left:var(--forge-spacing-xsmall,8px)}:host(:is(:state(vertical),:--vertical)) .forge-meter .track{width:var(--_meter-height);height:100%}:host(:is(:state(vertical),:--vertical)) .forge-meter .track.tickmarks::after{margin-top:-2px;margin-left:0;background:repeating-linear-gradient(0,var(--_meter-color) 0,var(--_meter-color) 1px,var(--_meter-background) 1px,var(--_meter-background) 2px,transparent 2px,transparent calc(100% / (var(--_meter-tickmarks) + 1) + 0px));background-position-x:0;background-position-y:2px}:host(:is(:state(vertical),:--vertical)) .forge-meter .bar{left:initial;top:100%;translate:0 calc(-1 * var(--_meter-percentage))}:host(:is(:state(vertical),:--vertical)) .forge-meter.grouped{display:block;top:calc(100% - var(--_meter-percentage) - var(--_meter-inset));left:0;width:100%;height:calc(var(--_meter-percentage) + var(--_meter-group-height) * .5);max-width:initial;border-radius:var(--_meter-inner-shape);border-bottom-left-radius:0;border-bottom-right-radius:0;margin-left:0;margin-bottom:calc(-1 * var(--_meter-group-height) * .5)}.theme--primary:not(.muted) .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-primary-container-low, #e8eaf6));--_meter-color:var(--forge-meter-color, var(--forge-theme-primary, #3f51b5))}.theme--primary:not(.muted).grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-primary-container-low, #e8eaf6));--_meter-color:var(--forge-meter-color, var(--forge-theme-primary, #3f51b5))}.theme--primary.muted .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-primary-container-minimum, #f7f8fc));--_meter-color:var(--forge-meter-color, var(--forge-theme-primary-container-high, #b6bde3))}.theme--primary.muted .grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-primary-container-minimum, #f7f8fc));--_meter-color:var(--forge-meter-color, var(--forge-theme-primary-container-high, #b6bde3))}.theme--secondary:not(.muted) .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-secondary-container-low, #fff8e1));--_meter-color:var(--forge-meter-color, var(--forge-theme-secondary, #ffc107))}.theme--secondary:not(.muted).grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-secondary-container-low, #fff8e1));--_meter-color:var(--forge-meter-color, var(--forge-theme-secondary, #ffc107))}.theme--secondary.muted .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-secondary-container-minimum, #fffdf5));--_meter-color:var(--forge-meter-color, var(--forge-theme-secondary-container-high, #ffe7a1))}.theme--secondary.muted .grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-secondary-container-minimum, #fffdf5));--_meter-color:var(--forge-meter-color, var(--forge-theme-secondary-container-high, #ffe7a1))}.theme--tertiary:not(.muted) .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-tertiary-container-low, #e8ebff));--_meter-color:var(--forge-meter-color, var(--forge-theme-tertiary, #3d5afe))}.theme--tertiary:not(.muted).grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-tertiary-container-low, #e8ebff));--_meter-color:var(--forge-meter-color, var(--forge-theme-tertiary, #3d5afe))}.theme--tertiary.muted .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-tertiary-container-minimum, #f7f8ff));--_meter-color:var(--forge-meter-color, var(--forge-theme-tertiary-container-high, #b5c0ff))}.theme--tertiary.muted .grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-tertiary-container-minimum, #f7f8ff));--_meter-color:var(--forge-meter-color, var(--forge-theme-tertiary-container-high, #b5c0ff))}.theme--success:not(.muted) .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-success-container-low, #e6efe6));--_meter-color:var(--forge-meter-color, var(--forge-theme-success, #2e7d32))}.theme--success:not(.muted).grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-success-container-low, #e6efe6));--_meter-color:var(--forge-meter-color, var(--forge-theme-success, #2e7d32))}.theme--success.muted .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-success-container-minimum, #f7faf7));--_meter-color:var(--forge-meter-color, var(--forge-theme-success-container-high, #b0ceb1))}.theme--success.muted .grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-success-container-minimum, #f7faf7));--_meter-color:var(--forge-meter-color, var(--forge-theme-success-container-high, #b0ceb1))}.theme--warning:not(.muted) .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-warning-container-low, #f9e9e0));--_meter-color:var(--forge-meter-color, var(--forge-theme-warning, #d14900))}.theme--warning:not(.muted).grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-warning-container-low, #f9e9e0));--_meter-color:var(--forge-meter-color, var(--forge-theme-warning, #d14900))}.theme--warning.muted .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-warning-container-minimum, #fdf8f5));--_meter-color:var(--forge-meter-color, var(--forge-theme-warning-container-high, #eeba9e))}.theme--warning.muted .grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-warning-container-minimum, #fdf8f5));--_meter-color:var(--forge-meter-color, var(--forge-theme-warning-container-high, #eeba9e))}.theme--error:not(.muted) .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-error-container-low, #f6e0e4));--_meter-color:var(--forge-meter-color, var(--forge-theme-error, #b00020))}.theme--error:not(.muted).grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-error-container-low, #f6e0e4));--_meter-color:var(--forge-meter-color, var(--forge-theme-error, #b00020))}.theme--error.muted .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-error-container-minimum, #fcf5f6));--_meter-color:var(--forge-meter-color, var(--forge-theme-error-container-high, #e19eaa))}.theme--error.muted .grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-error-container-minimum, #fcf5f6));--_meter-color:var(--forge-meter-color, var(--forge-theme-error-container-high, #e19eaa))}.theme--info:not(.muted) .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-info-container-low, #e3edf7));--_meter-color:var(--forge-meter-color, var(--forge-theme-info, #1565c0))}.theme--info:not(.muted).grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-info-container-low, #e3edf7));--_meter-color:var(--forge-meter-color, var(--forge-theme-info, #1565c0))}.theme--info.muted .track:not(.segmented){--_meter-background:var(--forge-meter-background, var(--forge-theme-info-container-minimum, #f6f9fc));--_meter-color:var(--forge-meter-color, var(--forge-theme-info-container-high, #a6c4e7))}.theme--info.muted .grouped{--_meter-background:var(--forge-meter-background, var(--forge-theme-info-container-minimum, #f6f9fc));--_meter-color:var(--forge-meter-color, var(--forge-theme-info-container-high, #a6c4e7))}@media (prefers-reduced-motion:reduce){.track{--_meter-transition-duration:var(--forge-meter-transition-duration, 0)}}@media (forced-colors:active){.track{border:1px solid CanvasText}.track .bar{background:CanvasText}.grouped{border-inline-end:1px solid Canvas!important;background:CanvasText!important}:host(:is(:state(vertical),:--vertical)) .grouped{border-block-start:1px solid CanvasText!important;border-inline-end:initial!important}}';
17
+ export const METER_TAG_NAME = 'forge-meter';
14
18
  const VALUE_STATE_MAP = new Map([
15
19
  ['optimal', 'optimum-value'],
16
20
  ['suboptimal', 'suboptimum-value'],
@@ -51,7 +55,7 @@ const VALUE_STATE_MAP = new Map([
51
55
  * @slot - The default slot for the meter's label.
52
56
  * @slot value - A textual representation of the meter's value.
53
57
  */
54
- let MeterComponent = class MeterComponent extends LitElement {
58
+ let MeterComponent = class MeterComponent extends BaseLitElement {
55
59
  /**
56
60
  * Gets the percentage of the meter that's filled.
57
61
  * @readonly
@@ -289,8 +293,11 @@ let MeterComponent = class MeterComponent extends LitElement {
289
293
  VALUE_STATE_MAP.forEach((value, status) => toggleState(this._internals, value, this._status === status));
290
294
  }
291
295
  };
296
+ _a = CUSTOM_ELEMENT_NAME_PROPERTY;
292
297
  MeterComponent.styles = unsafeCSS(styles);
293
298
  MeterComponent.formAssociated = true;
299
+ /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
300
+ MeterComponent[_a] = METER_TAG_NAME;
294
301
  __decorate([
295
302
  property({ type: Number })
296
303
  ], MeterComponent.prototype, "value", void 0);
@@ -355,6 +362,6 @@ __decorate([
355
362
  queryAssignedNodes({ slot: 'value' })
356
363
  ], MeterComponent.prototype, "_valueNodes", void 0);
357
364
  MeterComponent = __decorate([
358
- customElement('forge-meter')
365
+ customElement(METER_TAG_NAME)
359
366
  ], MeterComponent);
360
367
  export { MeterComponent };
@@ -4,8 +4,8 @@
4
4
  * License: Apache-2.0
5
5
  */
6
6
  import { tryDefine } from '@tylertech/forge-core';
7
- import { MeterGroupComponent } from './meter-group';
7
+ import { METER_GROUP_TAG_NAME, MeterGroupComponent } from './meter-group';
8
8
  export * from './meter-group';
9
9
  export function defineMeterGroupComponent() {
10
- tryDefine('forge-meter-group', MeterGroupComponent);
10
+ tryDefine(METER_GROUP_TAG_NAME, MeterGroupComponent);
11
11
  }
@@ -3,8 +3,11 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { LitElement, PropertyValues, TemplateResult } from 'lit';
6
+ import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
7
+ import { PropertyValues, TemplateResult } from 'lit';
7
8
  import { MeterDensity, MeterDirection, MeterInnerShape, MeterShape } from '../meter/meter';
9
+ import { BaseLitElement } from '../../core/base/base-lit-element';
10
+ export declare const METER_GROUP_TAG_NAME: keyof HTMLElementTagNameMap;
8
11
  /**
9
12
  * @tag forge-meter-group
10
13
  *
@@ -26,9 +29,11 @@ import { MeterDensity, MeterDirection, MeterInnerShape, MeterShape } from '../me
26
29
  * @slot label - Positions a label above the meter group.
27
30
  * @slot value - A textual representation of the meter's value.
28
31
  */
29
- export declare class MeterGroupComponent extends LitElement {
32
+ export declare class MeterGroupComponent extends BaseLitElement {
30
33
  static styles: import("lit").CSSResult;
31
34
  static formAssociated: boolean;
35
+ /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
36
+ static [CUSTOM_ELEMENT_NAME_PROPERTY]: keyof HTMLElementTagNameMap;
32
37
  /**
33
38
  * The minimum value of each meter in the group.
34
39
  * @default 0
@@ -3,14 +3,17 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
+ var _a;
6
7
  import { __decorate } from "tslib";
7
- import { debounce } from '@tylertech/forge-core';
8
- import { html, LitElement, unsafeCSS } from 'lit';
8
+ import { CUSTOM_ELEMENT_NAME_PROPERTY, debounce } from '@tylertech/forge-core';
9
+ import { html, unsafeCSS } from 'lit';
9
10
  import { customElement, property, queryAssignedElements, queryAssignedNodes, state } from 'lit/decorators.js';
10
11
  import { classMap } from 'lit/directives/class-map.js';
11
12
  import { setDefaultAria } from '../../core/utils/a11y-utils';
12
13
  import { toggleState } from '../../core/utils/utils';
14
+ import { BaseLitElement } from '../../core/base/base-lit-element';
13
15
  const styles = ':host{display:inline}.forge-meter-group{--_meter-group-background:var(--forge-meter-group-background, var(--forge-theme-surface-container-low, #ebebeb));--_meter-group-height:var(--forge-meter-group-height, var(--forge-spacing-medium, 16px));--_meter-group-shape:var(--forge-meter-group-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_meter-group-tickmarks:var(--forge-meter-group-tickmarks, 10);--_meter-group-tickmark-color:var(--forge-meter-group-tickmark-color, var(--forge-theme-outline-high, #212121));--_meter-group-tickmark-opacity:var(--forge-meter-group-tickmark-opacity, 54%)}.forge-meter-group{box-sizing:border-box}.forge-meter-group .heading{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-label1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-label1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, .75)));font-weight:var(--forge-typography-label1-font-weight,400);line-height:var(--forge-typography-label1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));letter-spacing:var(--forge-typography-label1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-label1-text-transform,inherit);text-decoration:var(--forge-typography-label1-text-decoration,inherit);display:flex;align-items:center;justify-content:space-between;line-height:normal}.forge-meter-group .heading.not-empty{margin-bottom:var(--forge-spacing-xxsmall,4px)}.forge-meter-group .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.forge-meter-group .value{color:var(--forge-theme-text-medium,rgba(0,0,0,.6))}.forge-meter-group .track{position:relative;height:var(--_meter-group-height);border-radius:var(--_meter-group-shape);overflow:hidden;background:var(--_meter-group-background)}.forge-meter-group .track.tickmarks::after{content:\"\";position:relative;display:block;z-index:9999;width:100%;height:100%;margin-left:-1px;background:repeating-linear-gradient(90deg,var(--_meter-group-tickmark-color) 0,var(--_meter-group-tickmark-color) 1px,transparent 1px,transparent calc(100% / (var(--_meter-group-tickmarks) + 1) + 0px));opacity:var(--_meter-group-tickmark-opacity);pointer-events:none}.forge-meter-group .track.inner-shape--inherit{--forge-meter-inner-shape:var(--_meter-group-shape)}.forge-meter-group .track.shape--default{--_meter-group-shape:var(--forge-meter-group-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)))}.forge-meter-group .track.shape--rounded{--_meter-group-shape:var(--forge-meter-group-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)))}.forge-meter-group .track.shape--squared{--_meter-group-shape:var(--forge-meter-group-shape, 0)}.forge-meter-group .track.density--small{--_meter-group-height:var(--forge-meter-group-height, var(--forge-spacing-xsmall, 8px))}.forge-meter-group .track.density--medium{--_meter-group-height:var(--forge-meter-group-height, var(--forge-spacing-medium, 16px))}.forge-meter-group .track.density--large{--_meter-group-height:var(--forge-meter-group-height, var(--forge-spacing-large, 24px))}:host(:is(:state(vertical),:--vertical)){display:block}:host(:is(:state(vertical),:--vertical)) .forge-meter-group{display:flex;flex-direction:row-reverse;align-items:end;width:fit-content;height:100%;max-width:100%}:host(:is(:state(vertical),:--vertical)) .forge-meter-group .heading{flex-direction:column;align-items:start}:host(:is(:state(vertical),:--vertical)) .forge-meter-group .heading.not-empty{margin-bottom:0;margin-left:var(--forge-spacing-xsmall,8px)}:host(:is(:state(vertical),:--vertical)) .forge-meter-group .track{width:var(--_meter-group-height);height:100%}:host(:is(:state(vertical),:--vertical)) .forge-meter-group .track.tickmarks::after{margin-top:1px;margin-left:0;background:repeating-linear-gradient(90deg,var(--_meter-group-tickmark-color),true 0,var(--_meter-group-tickmark-color),true 1px,transparent 1px,transparent calc(100% / (var(--_meter-group-tickmarks) + 1) + 0px))}@media (forced-colors:active){.track{border:1px solid CanvasText}}';
16
+ export const METER_GROUP_TAG_NAME = 'forge-meter-group';
14
17
  /**
15
18
  * @tag forge-meter-group
16
19
  *
@@ -32,7 +35,7 @@ const styles = ':host{display:inline}.forge-meter-group{--_meter-group-backgroun
32
35
  * @slot label - Positions a label above the meter group.
33
36
  * @slot value - A textual representation of the meter's value.
34
37
  */
35
- let MeterGroupComponent = class MeterGroupComponent extends LitElement {
38
+ let MeterGroupComponent = class MeterGroupComponent extends BaseLitElement {
36
39
  get labels() {
37
40
  return this._internals.labels;
38
41
  }
@@ -157,9 +160,12 @@ let MeterGroupComponent = class MeterGroupComponent extends LitElement {
157
160
  this._hasSlottedHeadingContent = !!nodes.length;
158
161
  }
159
162
  };
163
+ _a = CUSTOM_ELEMENT_NAME_PROPERTY;
160
164
  /* @ignore */
161
165
  MeterGroupComponent.styles = unsafeCSS(styles);
162
166
  MeterGroupComponent.formAssociated = true;
167
+ /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
168
+ MeterGroupComponent[_a] = METER_GROUP_TAG_NAME;
163
169
  __decorate([
164
170
  property({ type: Number })
165
171
  ], MeterGroupComponent.prototype, "min", void 0);
@@ -194,6 +200,6 @@ __decorate([
194
200
  queryAssignedElements({ selector: 'forge-meter' })
195
201
  ], MeterGroupComponent.prototype, "_meters", void 0);
196
202
  MeterGroupComponent = __decorate([
197
- customElement('forge-meter-group')
203
+ customElement(METER_GROUP_TAG_NAME)
198
204
  ], MeterGroupComponent);
199
205
  export { MeterGroupComponent };
@@ -6,7 +6,7 @@
6
6
  import { BaseComponent, IBaseComponent } from '../../core/base/base-component';
7
7
  import { IOverlayComponent } from '../overlay';
8
8
  import { IOverlayAwareCore } from './overlay-aware-core';
9
- import { IOverlayOffset, OverlayFlipState, OverlayHideState, OverlayPlacement, OverlayPositionStrategy } from '../overlay-constants';
9
+ import { IOverlayOffset, OverlayFlipState, OverlayHideState, OverlayPlacement, OverlayPositionStrategy, OverlayShiftState } from '../overlay-constants';
10
10
  import { PositionPlacement, VirtualElement } from '../../core/utils/position-utils';
11
11
  import { IBaseOverlay } from './base-overlay';
12
12
  export interface IOverlayAware extends IBaseComponent, IBaseOverlay {
@@ -21,7 +21,7 @@ export interface IOverlayAware extends IBaseComponent, IBaseOverlay {
21
21
  * @property {OverlayPlacement} [placement="bottom"] - The placement of the overlay.
22
22
  * @property {OverlayPositionStrategy} [positionStrategy="fixed"] - The position strategy of the overlay.
23
23
  * @property {IOverlayOffset} [offset={}] - The offset of the overlay.
24
- * @property {boolean} [shift=false] - Whether the overlay should shift to fit within the viewport.
24
+ * @property {OverlayShiftState} [shift="auto"] - Whether the overlay should shift to fit within the viewport.
25
25
  * @property {OverlayHideState} [hide="anchor-hidden"] - The hide state of the overlay.
26
26
  * @property {boolean} [persistent=false] - Whether the overlay should persist when the anchor is removed.
27
27
  * @property {OverlayFlipState} [flip="auto"] - Whether the overlay should flip placements to another side fit within the viewport.
@@ -37,7 +37,7 @@ export interface IOverlayAware extends IBaseComponent, IBaseOverlay {
37
37
  * @attribute {OverlayPlacement} [placement="bottom"] - The placement of the overlay.
38
38
  * @attribute {OverlayPositionStrategy} [position-strategy="fixed"] - The position strategy of the overlay.
39
39
  * @attribute {IOverlayOffset} offset - The offset of the overlay.
40
- * @attribute {boolean} [shift=false] - Whether the overlay should shift to fit within the viewport.
40
+ * @attribute {OverlayShiftState} [shift="auto"] - Whether the overlay should shift to fit within the viewport.
41
41
  * @attribute {OverlayHideState} [hide="anchor-hidden"] - The hide state of the overlay.
42
42
  * @attribute {boolean} [persistent=false] - Whether the overlay should persist when the anchor is removed.
43
43
  * @attribute {OverlayFlipState} [flip="auto"] - Whether the overlay should flip placements to another side fit within the viewport.
@@ -60,7 +60,7 @@ export declare abstract class OverlayAware<T extends IOverlayAwareCore> extends
60
60
  placement: OverlayPlacement;
61
61
  positionStrategy: OverlayPositionStrategy;
62
62
  offset: IOverlayOffset;
63
- shift: boolean;
63
+ shift: OverlayShiftState;
64
64
  hide: OverlayHideState;
65
65
  persistent: boolean;
66
66
  flip: OverlayFlipState;
@@ -16,7 +16,7 @@ import { OVERLAY_CONSTANTS } from '../overlay-constants';
16
16
  * @property {OverlayPlacement} [placement="bottom"] - The placement of the overlay.
17
17
  * @property {OverlayPositionStrategy} [positionStrategy="fixed"] - The position strategy of the overlay.
18
18
  * @property {IOverlayOffset} [offset={}] - The offset of the overlay.
19
- * @property {boolean} [shift=false] - Whether the overlay should shift to fit within the viewport.
19
+ * @property {OverlayShiftState} [shift="auto"] - Whether the overlay should shift to fit within the viewport.
20
20
  * @property {OverlayHideState} [hide="anchor-hidden"] - The hide state of the overlay.
21
21
  * @property {boolean} [persistent=false] - Whether the overlay should persist when the anchor is removed.
22
22
  * @property {OverlayFlipState} [flip="auto"] - Whether the overlay should flip placements to another side fit within the viewport.
@@ -32,7 +32,7 @@ import { OVERLAY_CONSTANTS } from '../overlay-constants';
32
32
  * @attribute {OverlayPlacement} [placement="bottom"] - The placement of the overlay.
33
33
  * @attribute {OverlayPositionStrategy} [position-strategy="fixed"] - The position strategy of the overlay.
34
34
  * @attribute {IOverlayOffset} offset - The offset of the overlay.
35
- * @attribute {boolean} [shift=false] - Whether the overlay should shift to fit within the viewport.
35
+ * @attribute {OverlayShiftState} [shift="auto"] - Whether the overlay should shift to fit within the viewport.
36
36
  * @attribute {OverlayHideState} [hide="anchor-hidden"] - The hide state of the overlay.
37
37
  * @attribute {boolean} [persistent=false] - Whether the overlay should persist when the anchor is removed.
38
38
  * @attribute {OverlayFlipState} [flip="auto"] - Whether the overlay should flip placements to another side fit within the viewport.
@@ -75,7 +75,7 @@ export class OverlayAware extends BaseComponent {
75
75
  this.persistent = coerceBoolean(newValue);
76
76
  break;
77
77
  case OVERLAY_CONSTANTS.observedAttributes.SHIFT:
78
- this.shift = coerceBoolean(newValue);
78
+ this.shift = newValue;
79
79
  break;
80
80
  case OVERLAY_CONSTANTS.observedAttributes.FLIP:
81
81
  this.flip = newValue;
@@ -127,6 +127,11 @@ export class BaseSelectCore extends ListDropdownAwareCore {
127
127
  scrollEndListener: this._dropdownScrollEndListener,
128
128
  activeChangeCallback: this._activeChangeListener,
129
129
  targetWidthCallback: this._targetWidthCallback,
130
+ popupPlacement: this._popoverPlacement,
131
+ popupOffset: this._popoverOffset,
132
+ popupFlip: this._popoverFlip,
133
+ popupShift: this._popoverShift,
134
+ popupFallbackPlacements: this._popoverFallbackPlacements,
130
135
  popupClasses: this._popupClasses,
131
136
  optionLimit: this._optionLimit,
132
137
  headerBuilder: this._popupHeaderBuilder,
@@ -14,7 +14,8 @@ import { FieldDensity, FieldLabelPosition } from '../../field';
14
14
  import { IWithBaseField } from '../../field/base/with-base-field';
15
15
  import { BaseSelectComponent, IBaseSelectComponent } from '../core';
16
16
  import { SelectCore } from './select-core';
17
- export interface ISelectComponent extends IWithFormAssociation, IWithFocusable, IWithLabelAwareness, IWithElementInternals, IWithDefaultAria, IWithBaseField, IBaseSelectComponent {
17
+ import { IListDropdownAware } from '../../list-dropdown/list-dropdown-aware';
18
+ export interface ISelectComponent extends IWithFormAssociation, IWithFocusable, IWithLabelAwareness, IWithElementInternals, IWithDefaultAria, IWithBaseField, IBaseSelectComponent, IListDropdownAware {
18
19
  label: string;
19
20
  placeholder: string;
20
21
  setFormValue(value: FormValue | null, state?: FormValue | null | undefined): void;
@@ -63,6 +64,20 @@ declare const SelectComponent_base: import("../../constants").AbstractConstructo
63
64
  * @property {SelectOptionBuilder} optionBuilder - Gets/sets the option builder function.
64
65
  * @property {SelectSelectedTextBuilder} selectedTextBuilder - Gets/sets the selected text builder function.
65
66
  * @property {SelectBeforeValueChangeCallback<any>} beforeValueChange - Gets/sets the before value change callback.
67
+ * @property {string | string[]; - } popupClasses - Gets/sets the list of classes to apply to the popup element.
68
+ * @property {ListDropdownHeaderBuilder} popupHeaderBuilder - Gets/sets the callback function for generating header content within the popup.
69
+ * @property {ListDropdownFooterBuilder} popupFooterBuilder - Gets/sets the callback function for generating header content within the popup.
70
+ * @property {boolean} [syncPopupWidth=false] - Gets/sets whether the popup width is synchronized with the popup target width.
71
+ * @property {number} optionLimit - Gets/sets the maximum number of options to display in the dropdown.
72
+ * @property {boolean} [observeScroll=false] - Controls the observation of scroll events on the dropdown.
73
+ * @property {number} [observeScrollThreshold=0] - The number of pixels from the bottom to trigger the scroll bottom event. Only applicable if `observeScroll` is true.
74
+ * @property {boolean} [constrainPopupWidth=true] - Gets/sets whether the popup width will be constrained to a max width of the viewport width (default: `100vw`).
75
+ * @property {boolean} [wrapOptionText=false] - Gets/sets whether the options will wrap their text or not. This only applies if `constrainPopupWidth` is `true`, if there is an explicit width set via CSS.
76
+ * @property {OverlayPlacement} [popoverPlacement="bottom"] - Gets/sets the placement of the popover.
77
+ * @property {IOverlayOffset} popoverOffset - Gets/sets the offset of the popover.
78
+ * @property {OverlayFlipState} [popoverFlip="auto"] - Gets/sets the flip state of the popover.
79
+ * @property {OverlayShiftState} [popoverShift="auto"] - Gets/sets whether the popover should shift to fit within the viewport.
80
+ * @property {PositionPlacement | null} popoverFallbackPlacements - Gets/sets the fallback placements of the popover.
66
81
  *
67
82
  * @attribute {string} label - Controls the label text.
68
83
  * @attribute {string} placeholder - Controls the placeholder text.
@@ -70,6 +85,15 @@ declare const SelectComponent_base: import("../../constants").AbstractConstructo
70
85
  * @attribute {number | number[]} selected-index - Gets/sets the selected index.
71
86
  * @attribute {boolean} multiple - Gets/sets the multiple select state.
72
87
  * @attribute {boolean} open - Gets/sets the open state.
88
+ * @attribute {boolean} [sync-popup-width=false] - Gets/sets whether the popup width is synchronized with the popup target width.
89
+ * @attribute {number} option-limit - Gets/sets the maximum number of options to display in the dropdown.
90
+ * @attribute {boolean} [observe-scroll=false] - Controls the observation of scroll events on the dropdown.
91
+ * @attribute {number} [observe-scroll-threshold=0] - The number of pixels from the bottom to trigger the scroll bottom event. Only applicable if `observeScroll` is true.
92
+ * @attribute {boolean} [wrap-option-text=false] - Gets/sets whether the options will wrap their text or not. This only applies if `constrainPopupWidth` is `true`, if there is an explicit width set via CSS.
93
+ * @attribute {OverlayPlacement} [popover-placement="bottom"] - Gets/sets the placement of the popover.
94
+ * @attribute {IOverlayOffset} popover-offset - Gets/sets the offset of the popover.
95
+ * @attribute {OverlayFlipState} [popover-flip="auto"] - Gets/sets the flip state of the popover.
96
+ * @attribute {OverlayShiftState} [popover-shift="auto"] - Gets/sets whether the popover should shift to fit within the viewport.
73
97
  *
74
98
  * @cssproperty --forge-select-placeholder-color - The color of the placeholder text.
75
99
  * @cssproperty --forge-field-background - The background of the field surface.
@@ -27,7 +27,8 @@ import { OptionGroupComponent } from '../option-group';
27
27
  import { SelectAdapter } from './select-adapter';
28
28
  import { SELECT_CONSTANTS } from './select-constants';
29
29
  import { SelectCore } from './select-core';
30
- const template = '<template><forge-field id=\"field\" popover-icon focus-indicator-allow-focus focus-indicator-focus-mode=\"focus\"><label id=\"select-label\" aria-hidden=\"true\" part=\"label\" slot=\"label\"></label><slot slot=\"start\" name=\"start\"></slot><div data-forge-field-input class=\"selected-text-container\" part=\"text-container\" aria-live=\"assertive\" aria-atomic=\"true\"><slot name=\"value\"><span id=\"selected-text\" class=\"selected-text\" part=\"text\"></span></slot></div><slot slot=\"end\" name=\"end\"></slot><slot slot=\"accessory\" name=\"accessory\"></slot><slot slot=\"support-text\" name=\"support-text\"></slot><slot slot=\"support-text-end\" name=\"support-text-end\"></slot><slot slot=\"start\" name=\"leading\"></slot><slot slot=\"end\" name=\"trailing\"></slot><slot slot=\"accessory\" name=\"addon-end\"></slot><slot slot=\"support-text\" name=\"helper-text\"></slot></forge-field></template>';
30
+ import { ListDropdownAware } from '../../list-dropdown/list-dropdown-aware';
31
+ const template = '<template><forge-field id=\"field\" popover-icon focus-indicator-allow-focus focus-indicator-focus-mode=\"focus\"><span id=\"select-label\" slot=\"label\"></span><slot slot=\"start\" name=\"start\"></slot><div data-forge-field-input class=\"selected-text-container\" part=\"text-container\" aria-live=\"assertive\" aria-atomic=\"true\"><slot name=\"value\"><span id=\"selected-text\" class=\"selected-text\" part=\"text\"></span></slot></div><slot slot=\"end\" name=\"end\"></slot><slot slot=\"accessory\" name=\"accessory\"></slot><slot slot=\"support-text\" name=\"support-text\"></slot><slot slot=\"support-text-end\" name=\"support-text-end\"></slot><slot slot=\"start\" name=\"leading\"></slot><slot slot=\"end\" name=\"trailing\"></slot><slot slot=\"accessory\" name=\"addon-end\"></slot><slot slot=\"support-text\" name=\"helper-text\"></slot></forge-field></template>';
31
32
  const styles = ':host{display:block;outline:0}:host([hidden]){display:none}forge-field{--_select-placeholder-color:var(--forge-select-placeholder-color, var(--forge-field-placeholder-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6))))}.selected-text-container{display:grid;align-items:center;cursor:pointer}.selected-text,::slotted([slot=value]){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.selected-text:empty::before{content:attr(placeholder);color:var(--_select-placeholder-color);font-size:inherit}:host([disabled]) .selected-text-container{cursor:not-allowed}forge-field{display:contents}';
32
33
  /**
33
34
  * @tag forge-select
@@ -60,6 +61,20 @@ const styles = ':host{display:block;outline:0}:host([hidden]){display:none}forge
60
61
  * @property {SelectOptionBuilder} optionBuilder - Gets/sets the option builder function.
61
62
  * @property {SelectSelectedTextBuilder} selectedTextBuilder - Gets/sets the selected text builder function.
62
63
  * @property {SelectBeforeValueChangeCallback<any>} beforeValueChange - Gets/sets the before value change callback.
64
+ * @property {string | string[]; - } popupClasses - Gets/sets the list of classes to apply to the popup element.
65
+ * @property {ListDropdownHeaderBuilder} popupHeaderBuilder - Gets/sets the callback function for generating header content within the popup.
66
+ * @property {ListDropdownFooterBuilder} popupFooterBuilder - Gets/sets the callback function for generating header content within the popup.
67
+ * @property {boolean} [syncPopupWidth=false] - Gets/sets whether the popup width is synchronized with the popup target width.
68
+ * @property {number} optionLimit - Gets/sets the maximum number of options to display in the dropdown.
69
+ * @property {boolean} [observeScroll=false] - Controls the observation of scroll events on the dropdown.
70
+ * @property {number} [observeScrollThreshold=0] - The number of pixels from the bottom to trigger the scroll bottom event. Only applicable if `observeScroll` is true.
71
+ * @property {boolean} [constrainPopupWidth=true] - Gets/sets whether the popup width will be constrained to a max width of the viewport width (default: `100vw`).
72
+ * @property {boolean} [wrapOptionText=false] - Gets/sets whether the options will wrap their text or not. This only applies if `constrainPopupWidth` is `true`, if there is an explicit width set via CSS.
73
+ * @property {OverlayPlacement} [popoverPlacement="bottom"] - Gets/sets the placement of the popover.
74
+ * @property {IOverlayOffset} popoverOffset - Gets/sets the offset of the popover.
75
+ * @property {OverlayFlipState} [popoverFlip="auto"] - Gets/sets the flip state of the popover.
76
+ * @property {OverlayShiftState} [popoverShift="auto"] - Gets/sets whether the popover should shift to fit within the viewport.
77
+ * @property {PositionPlacement | null} popoverFallbackPlacements - Gets/sets the fallback placements of the popover.
63
78
  *
64
79
  * @attribute {string} label - Controls the label text.
65
80
  * @attribute {string} placeholder - Controls the placeholder text.
@@ -67,6 +82,15 @@ const styles = ':host{display:block;outline:0}:host([hidden]){display:none}forge
67
82
  * @attribute {number | number[]} selected-index - Gets/sets the selected index.
68
83
  * @attribute {boolean} multiple - Gets/sets the multiple select state.
69
84
  * @attribute {boolean} open - Gets/sets the open state.
85
+ * @attribute {boolean} [sync-popup-width=false] - Gets/sets whether the popup width is synchronized with the popup target width.
86
+ * @attribute {number} option-limit - Gets/sets the maximum number of options to display in the dropdown.
87
+ * @attribute {boolean} [observe-scroll=false] - Controls the observation of scroll events on the dropdown.
88
+ * @attribute {number} [observe-scroll-threshold=0] - The number of pixels from the bottom to trigger the scroll bottom event. Only applicable if `observeScroll` is true.
89
+ * @attribute {boolean} [wrap-option-text=false] - Gets/sets whether the options will wrap their text or not. This only applies if `constrainPopupWidth` is `true`, if there is an explicit width set via CSS.
90
+ * @attribute {OverlayPlacement} [popover-placement="bottom"] - Gets/sets the placement of the popover.
91
+ * @attribute {IOverlayOffset} popover-offset - Gets/sets the offset of the popover.
92
+ * @attribute {OverlayFlipState} [popover-flip="auto"] - Gets/sets the flip state of the popover.
93
+ * @attribute {OverlayShiftState} [popover-shift="auto"] - Gets/sets whether the popover should shift to fit within the viewport.
70
94
  *
71
95
  * @cssproperty --forge-select-placeholder-color - The color of the placeholder text.
72
96
  * @cssproperty --forge-field-background - The background of the field surface.
@@ -135,6 +159,7 @@ const styles = ':host{display:block;outline:0}:host([hidden]){display:none}forge
135
159
  let SelectComponent = class SelectComponent extends WithFormAssociation(WithLabelAwareness(WithFocusable(WithDefaultAria(WithElementInternals(WithBaseField((BaseSelectComponent))))))) {
136
160
  static get observedAttributes() {
137
161
  return [
162
+ ...ListDropdownAware.observedAttributes,
138
163
  ...Object.values(BASE_FIELD_CONSTANTS.observedAttributes),
139
164
  ...Object.values(SELECT_CONSTANTS.observedAttributes),
140
165
  ...Object.values(BASE_SELECT_CONSTANTS.observedAttributes)
@@ -13,7 +13,7 @@ import { SplitViewPanelCore } from './split-view-panel-core';
13
13
  import { SplitViewPanelAdapter } from './split-view-panel-adapter';
14
14
  import { IconComponent, IconRegistry } from '../../icon';
15
15
  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-state-layer target=\"handle\" id=\"state-layer\" exportparts=\"surface:state-layer\"></forge-state-layer><forge-focus-indicator inward target=\"handle\" part=\"focus-indicator\"></forge-focus-indicator></div><div class=\"forge-split-view-panel__content\" id=\"content\" part=\"content\" role=\"group\"><slot></slot></div></div></template>';
16
- const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium,rgba(0,0,0,.6));background-color:var(--forge-theme-outline,#e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:0}.forge-split-view-panel__content{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:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{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;animation-name:ugo58a2;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes ugo58a2{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:ugo58am;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes ugo58am{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:ugo58b3;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes ugo58b3{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:ugo58b7;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes ugo58b7{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=vertical]{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));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{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;animation-name:ugo58c6;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes ugo58c6{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:ugo58cs;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes ugo58cs{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:ugo58dg;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes ugo58dg{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:ugo58e9;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes ugo58e9{from{transform:none}to{transform:translateY(100%)}}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){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}forge-focus-indicator{--forge-focus-indicator-active-width:2px}';
16
+ const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium,rgba(0,0,0,.6));background-color:var(--forge-theme-outline,#e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:0}.forge-split-view-panel__content{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:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{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;animation-name:u0bbjid;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u0bbjid{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:u0bbjj1;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u0bbjj1{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u0bbjjn;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u0bbjjn{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:u0bbjjq;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u0bbjjq{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=vertical]{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));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{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;animation-name:u0bbjkj;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u0bbjkj{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u0bbjkk;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u0bbjkk{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u0bbjkm;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u0bbjkm{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u0bbjl9;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u0bbjl9{from{transform:none}to{transform:translateY(100%)}}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){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}forge-focus-indicator{--forge-focus-indicator-active-width:2px}';
17
17
  import { StateLayerComponent } from '../../state-layer';
18
18
  import { FocusIndicatorComponent } from '../../focus-indicator';
19
19
  /**