@tylertech/forge 3.9.0-dev.0 → 3.9.0-dev.2

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 (131) hide show
  1. package/custom-elements.json +1790 -1656
  2. package/dist/lib.js +27 -105
  3. package/dist/lib.js.map +4 -4
  4. package/dist/vscode.css-custom-data.json +76 -49
  5. package/dist/vscode.html-custom-data.json +167 -180
  6. package/esm/app-bar/help-button/app-bar-help-button.js +1 -1
  7. package/esm/app-bar/menu-button/app-bar-menu-button.js +1 -1
  8. package/esm/app-bar/notification-button/app-bar-notification-button.js +1 -1
  9. package/esm/app-bar/search/app-bar-search.js +1 -1
  10. package/esm/autocomplete/autocomplete.js +1 -1
  11. package/esm/avatar/index.js +3 -3
  12. package/esm/badge/index.js +3 -3
  13. package/esm/banner/banner.js +1 -1
  14. package/esm/button/base/base-button-adapter.js +1 -1
  15. package/esm/button/base/base-button.js +1 -1
  16. package/esm/calendar/calendar-adapter.d.ts +0 -24
  17. package/esm/calendar/calendar-adapter.js +1 -67
  18. package/esm/calendar/calendar-constants.d.ts +0 -34
  19. package/esm/calendar/calendar-constants.js +0 -33
  20. package/esm/calendar/calendar-core.d.ts +0 -60
  21. package/esm/calendar/calendar-core.js +2 -220
  22. package/esm/calendar/calendar-dom-utils.d.ts +0 -6
  23. package/esm/calendar/calendar-dom-utils.js +0 -36
  24. package/esm/calendar/calendar.d.ts +1 -40
  25. package/esm/calendar/calendar.js +3 -81
  26. package/esm/calendar/core/calendar-base.d.ts +0 -3
  27. package/esm/calendar/core/date-range.d.ts +0 -2
  28. package/esm/calendar/core/date-range.js +0 -1
  29. package/esm/card/index.d.ts +1 -1
  30. package/esm/card/index.js +4 -4
  31. package/esm/chips/chip/chip.js +1 -1
  32. package/esm/color-picker/color-picker.js +1 -1
  33. package/esm/core/utils/dismissible-stack.d.ts +5 -1
  34. package/esm/core/utils/dismissible-stack.js +6 -0
  35. package/esm/data-table/body/body.d.ts +33 -0
  36. package/esm/data-table/body/body.js +42 -0
  37. package/esm/data-table/body/index.d.ts +6 -0
  38. package/esm/data-table/body/index.js +6 -0
  39. package/esm/data-table/cell/cell.d.ts +33 -0
  40. package/esm/data-table/cell/cell.js +42 -0
  41. package/esm/data-table/cell/index.d.ts +6 -0
  42. package/esm/data-table/cell/index.js +6 -0
  43. package/esm/data-table/column/column.d.ts +33 -0
  44. package/esm/data-table/column/column.js +42 -0
  45. package/esm/data-table/column/index.d.ts +6 -0
  46. package/esm/data-table/column/index.js +6 -0
  47. package/esm/data-table/footer/footer.d.ts +33 -0
  48. package/esm/data-table/footer/footer.js +42 -0
  49. package/esm/data-table/footer/index.d.ts +6 -0
  50. package/esm/data-table/footer/index.js +6 -0
  51. package/esm/data-table/head/head.d.ts +33 -0
  52. package/esm/data-table/head/head.js +42 -0
  53. package/esm/data-table/head/index.d.ts +6 -0
  54. package/esm/data-table/head/index.js +6 -0
  55. package/esm/data-table/index.d.ts +12 -0
  56. package/esm/data-table/index.js +12 -0
  57. package/esm/data-table/row/index.d.ts +6 -0
  58. package/esm/data-table/row/index.js +6 -0
  59. package/esm/data-table/row/row.d.ts +33 -0
  60. package/esm/data-table/row/row.js +42 -0
  61. package/esm/data-table/table/index.d.ts +6 -0
  62. package/esm/data-table/table/index.js +6 -0
  63. package/esm/data-table/table/table.d.ts +36 -0
  64. package/esm/data-table/table/table.js +40 -0
  65. package/esm/date-picker/base/base-date-picker-adapter.js +3 -0
  66. package/esm/date-picker/base/base-date-picker-constants.d.ts +0 -3
  67. package/esm/date-picker/base/base-date-picker-constants.js +0 -3
  68. package/esm/date-picker/base/base-date-picker-core.d.ts +0 -15
  69. package/esm/date-picker/base/base-date-picker-core.js +0 -30
  70. package/esm/date-picker/base/base-date-picker.d.ts +0 -12
  71. package/esm/date-picker/base/base-date-picker.js +0 -24
  72. package/esm/date-picker/date-picker-core.d.ts +0 -3
  73. package/esm/date-picker/date-picker-core.js +0 -20
  74. package/esm/date-picker/date-picker.js +1 -1
  75. package/esm/date-range-picker/date-range-picker-constants.d.ts +0 -3
  76. package/esm/date-range-picker/date-range-picker-constants.js +0 -1
  77. package/esm/date-range-picker/date-range-picker-core.d.ts +0 -3
  78. package/esm/date-range-picker/date-range-picker-core.js +2 -62
  79. package/esm/date-range-picker/date-range-picker.d.ts +0 -3
  80. package/esm/date-range-picker/date-range-picker.js +1 -4
  81. package/esm/icon/icon-constants.d.ts +2 -1
  82. package/esm/icon/icon-constants.js +2 -1
  83. package/esm/icon/icon-core.js +6 -2
  84. package/esm/icon/icon-utils.d.ts +2 -1
  85. package/esm/icon/icon-utils.js +2 -2
  86. package/esm/icon/icon.d.ts +3 -1
  87. package/esm/icon/icon.js +1 -1
  88. package/esm/icon-button/icon-button-core.js +11 -2
  89. package/esm/key/key/index.js +3 -3
  90. package/esm/key/key-item/index.js +3 -3
  91. package/esm/list-dropdown/list-dropdown-utils.js +1 -1
  92. package/esm/list-dropdown/list-dropdown.js +1 -1
  93. package/esm/menu/menu.js +1 -1
  94. package/esm/meter/meter/index.js +2 -2
  95. package/esm/meter/meter-group/index.js +3 -3
  96. package/esm/open-icon/open-icon.js +1 -1
  97. package/esm/paginator/paginator.js +1 -1
  98. package/esm/popover/popover-constants.d.ts +3 -0
  99. package/esm/popover/popover-constants.js +4 -2
  100. package/esm/popover/popover-core.d.ts +4 -0
  101. package/esm/popover/popover-core.js +20 -0
  102. package/esm/popover/popover.d.ts +4 -0
  103. package/esm/popover/popover.js +8 -0
  104. package/esm/select/select/select.js +1 -1
  105. package/esm/split-view/split-view-panel/split-view-panel.js +3 -4
  106. package/esm/stepper/step/step.js +1 -1
  107. package/esm/table/table-constants.d.ts +1 -0
  108. package/esm/table/table-constants.js +2 -1
  109. package/esm/table/table-core.js +3 -0
  110. package/esm/table/table.d.ts +2 -0
  111. package/esm/table/table.js +2 -1
  112. package/esm/tabs/tab-bar/tab-bar-adapter.js +1 -1
  113. package/esm/tabs/tab-bar/tab-bar.js +1 -1
  114. package/esm/text-field/text-field.js +1 -1
  115. package/esm/time-picker/time-picker.js +1 -2
  116. package/esm/toast/toast.js +1 -1
  117. package/esm/view-switcher/view-switcher.d.ts +5 -0
  118. package/esm/view-switcher/view-switcher.js +6 -1
  119. package/package.json +2 -2
  120. package/sass/calendar/_mixins.scss +2 -3
  121. package/sass/data-table/_core.scss +52 -0
  122. package/sass/data-table/_token-utils.scss +15 -0
  123. package/sass/data-table/body/body.scss +27 -0
  124. package/sass/data-table/cell/cell.scss +27 -0
  125. package/sass/data-table/column/column.scss +27 -0
  126. package/sass/data-table/footer/footer.scss +27 -0
  127. package/sass/data-table/head/head.scss +27 -0
  128. package/sass/data-table/index.scss +12 -0
  129. package/sass/data-table/row/row.scss +27 -0
  130. package/sass/data-table/table/table.scss +16 -0
  131. package/sass/view-switcher/view-switcher.scss +13 -7
@@ -29,9 +29,18 @@ export class IconButtonCore extends BaseButtonCore {
29
29
  // Update internal state first so listeners can access the new state
30
30
  const originalPressed = this._pressed;
31
31
  this._pressed = !this._pressed;
32
- const cancelled = !this._adapter.emitHostEvent(ICON_BUTTON_CONSTANTS.events.TOGGLE, this.pressed, true, true);
32
+ const event = new CustomEvent(ICON_BUTTON_CONSTANTS.events.TOGGLE, {
33
+ detail: {
34
+ pressed: this._pressed,
35
+ toggle: this._toggle
36
+ },
37
+ bubbles: true,
38
+ cancelable: true,
39
+ composed: true
40
+ });
41
+ this._adapter.dispatchHostEvent(event);
33
42
  this._pressed = originalPressed;
34
- if (cancelled) {
43
+ if (event.defaultPrevented) {
35
44
  return;
36
45
  }
37
46
  this.pressed = !originalPressed;
@@ -3,9 +3,9 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { tryDefine } from '@tylertech/forge-core';
7
- import { KEY_TAG_NAME, KeyComponent } from './key';
6
+ import { defineCustomElement } from '@tylertech/forge-core';
7
+ import { KeyComponent } from './key';
8
8
  export * from './key';
9
9
  export function defineKeyComponent() {
10
- tryDefine(KEY_TAG_NAME, KeyComponent);
10
+ defineCustomElement(KeyComponent);
11
11
  }
@@ -3,9 +3,9 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { tryDefine } from '@tylertech/forge-core';
7
- import { KEY_ITEM_TAG_NAME, KeyItemComponent } from './key-item';
6
+ import { defineCustomElement } from '@tylertech/forge-core';
7
+ import { KeyItemComponent } from './key-item';
8
8
  export * from './key-item';
9
9
  export function defineKeyItemComponent() {
10
- tryDefine(KEY_ITEM_TAG_NAME, KeyItemComponent);
10
+ defineCustomElement(KeyItemComponent);
11
11
  }
@@ -4,7 +4,7 @@
4
4
  * License: Apache-2.0
5
5
  */
6
6
  import { addClass, getEventPath, isDeepEqual, isDefined, isObject } from '@tylertech/forge-core';
7
- import { tylIconCheckBox, tylIconCheckBoxOutlineBlank } from '@tylertech/tyler-icons/standard';
7
+ import { tylIconCheckBox, tylIconCheckBoxOutlineBlank } from '@tylertech/tyler-icons';
8
8
  import { ICON_CLASS_NAME } from '../constants';
9
9
  import { LINEAR_PROGRESS_CONSTANTS } from '../linear-progress';
10
10
  import { LIST_CONSTANTS } from '../list/list';
@@ -3,7 +3,7 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { tylIconCheckBox, tylIconCheckBoxOutlineBlank } from '@tylertech/tyler-icons/standard';
6
+ import { tylIconCheckBox, tylIconCheckBoxOutlineBlank } from '@tylertech/tyler-icons';
7
7
  import { ListDropdownCore } from './list-dropdown-core';
8
8
  import { ListDropdownAdapter } from './list-dropdown-adapter';
9
9
  import { IconRegistry } from '../icon';
package/esm/menu/menu.js CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { attachShadowTemplate, coerceBoolean, customElement, ensureChild, coreProperty, isDefined } from '@tylertech/forge-core';
8
- import { tylIconArrowRight } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconArrowRight } from '@tylertech/tyler-icons';
9
9
  import { IconRegistry } from '../icon';
10
10
  import { ListComponent } from '../list';
11
11
  import { ListDropdownAware } from '../list-dropdown/list-dropdown-aware';
@@ -3,9 +3,9 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { tryDefine } from '@tylertech/forge-core';
6
+ import { defineCustomElement } from '@tylertech/forge-core';
7
7
  import { MeterComponent } from './meter';
8
8
  export * from './meter';
9
9
  export function defineMeterComponent() {
10
- tryDefine('forge-meter', MeterComponent);
10
+ defineCustomElement(MeterComponent);
11
11
  }
@@ -3,9 +3,9 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { tryDefine } from '@tylertech/forge-core';
7
- import { METER_GROUP_TAG_NAME, MeterGroupComponent } from './meter-group';
6
+ import { defineCustomElement } from '@tylertech/forge-core';
7
+ import { MeterGroupComponent } from './meter-group';
8
8
  export * from './meter-group';
9
9
  export function defineMeterGroupComponent() {
10
- tryDefine(METER_GROUP_TAG_NAME, MeterGroupComponent);
10
+ defineCustomElement(MeterGroupComponent);
11
11
  }
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { customElement, attachShadowTemplate, coerceBoolean } from '@tylertech/forge-core';
8
- import { tylIconKeyboardArrowRight, tylIconKeyboardArrowDown } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconKeyboardArrowRight, tylIconKeyboardArrowDown } from '@tylertech/tyler-icons';
9
9
  import { OPEN_ICON_CONSTANTS } from './open-icon-constants';
10
10
  import { IconRegistry, IconComponent } from '../icon';
11
11
  import { BaseComponent } from '../core/base/base-component';
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { customElement, attachShadowTemplate, coreProperty, coerceBoolean, coerceNumberArray, coerceNumber } from '@tylertech/forge-core';
8
- import { tylIconFirstPage, tylIconLastPage, tylIconKeyboardArrowRight, tylIconKeyboardArrowLeft } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconFirstPage, tylIconLastPage, tylIconKeyboardArrowRight, tylIconKeyboardArrowLeft } from '@tylertech/tyler-icons';
9
9
  import { PAGINATOR_CONSTANTS } from './paginator-constants';
10
10
  import { PaginatorCore } from './paginator-core';
11
11
  import { PaginatorAdapter } from './paginator-adapter';
@@ -15,6 +15,7 @@ export declare const POPOVER_CONSTANTS: {
15
15
  HOVER_DELAY: string;
16
16
  HOVER_DISMISS_DELAY: string;
17
17
  PRESET: string;
18
+ DISTINCT: string;
18
19
  };
19
20
  attributes: {
20
21
  OPEN: string;
@@ -28,6 +29,7 @@ export declare const POPOVER_CONSTANTS: {
28
29
  HOVER_DELAY: string;
29
30
  HOVER_DISMISS_DELAY: string;
30
31
  PRESET: string;
32
+ DISTINCT: string;
31
33
  };
32
34
  classes: {
33
35
  ARROW: string;
@@ -48,6 +50,7 @@ export declare const POPOVER_CONSTANTS: {
48
50
  TRIGGER_TYPE: PopoverTriggerType;
49
51
  HOVER_DELAY: number;
50
52
  PRESET: PopoverPreset;
53
+ DISTINCT: string;
51
54
  };
52
55
  };
53
56
  export declare const POPOVER_HOVER_TIMEOUT = 500;
@@ -13,7 +13,8 @@ const observedAttributes = {
13
13
  PERSISTENT_HOVER: 'persistent-hover',
14
14
  HOVER_DELAY: 'hover-delay',
15
15
  HOVER_DISMISS_DELAY: 'hover-dismiss-delay',
16
- PRESET: 'preset'
16
+ PRESET: 'preset',
17
+ DISTINCT: 'distinct'
17
18
  };
18
19
  const attributes = {
19
20
  ...observedAttributes,
@@ -39,7 +40,8 @@ const events = {
39
40
  const defaults = {
40
41
  TRIGGER_TYPE: 'click',
41
42
  HOVER_DELAY: 0,
42
- PRESET: 'popover'
43
+ PRESET: 'popover',
44
+ DISTINCT: '<default>'
43
45
  };
44
46
  export const POPOVER_CONSTANTS = {
45
47
  elementName,
@@ -18,6 +18,7 @@ export interface IPopoverCore extends IOverlayAwareCore {
18
18
  hoverDismissDelay: number;
19
19
  hoverDelay: number;
20
20
  preset: PopoverPreset;
21
+ distinct: string | null;
21
22
  hideAsync(): Promise<void>;
22
23
  dispatchBeforeToggleEvent(state: IDismissibleStackState): boolean;
23
24
  }
@@ -31,6 +32,7 @@ export declare class PopoverCore extends PopoverCore_base implements IPopoverCor
31
32
  private _hoverDismissDelay;
32
33
  private _hoverDelay;
33
34
  private _preset;
35
+ private _distinct;
34
36
  private _previouslyFocusedElement;
35
37
  private _hoverAnchorLeaveTimeout;
36
38
  private _popoverMouseleaveTimeout;
@@ -146,5 +148,7 @@ export declare class PopoverCore extends PopoverCore_base implements IPopoverCor
146
148
  set hoverDismissDelay(value: number);
147
149
  get preset(): PopoverPreset;
148
150
  set preset(value: PopoverPreset);
151
+ get distinct(): string | null;
152
+ set distinct(value: string | null);
149
153
  }
150
154
  export {};
@@ -19,6 +19,7 @@ export class PopoverCore extends WithLongpressListener((OverlayAwareCore)) {
19
19
  this._hoverDismissDelay = POPOVER_HOVER_TIMEOUT;
20
20
  this._hoverDelay = POPOVER_CONSTANTS.defaults.HOVER_DELAY;
21
21
  this._preset = POPOVER_CONSTANTS.defaults.PRESET;
22
+ this._distinct = null;
22
23
  this._previouslyFocusedElement = null;
23
24
  // Click trigger listeners
24
25
  this._anchorClickListener = this._onAnchorClick.bind(this);
@@ -102,6 +103,11 @@ export class PopoverCore extends WithLongpressListener((OverlayAwareCore)) {
102
103
  }
103
104
  this._previouslyFocusedElement = this._adapter.captureFocusedElement();
104
105
  this._adapter.setOverlayOpen(true);
106
+ if (this._distinct) {
107
+ const allPopovers = DismissibleStack.instance.getAll().filter(el => el.tagName.toLowerCase() === 'forge-popover');
108
+ const contextPopovers = allPopovers.filter(popover => popover.distinct === this._distinct);
109
+ contextPopovers.filter(popover => popover !== this._adapter.hostElement).forEach(popover => (popover.open = false));
110
+ }
105
111
  if (!this.overlayElement.persistent) {
106
112
  DismissibleStack.instance.add(this._adapter.hostElement);
107
113
  }
@@ -518,4 +524,18 @@ export class PopoverCore extends WithLongpressListener((OverlayAwareCore)) {
518
524
  this._adapter.toggleHostAttribute(POPOVER_CONSTANTS.attributes.PRESET, hasPreset, this._preset);
519
525
  }
520
526
  }
527
+ get distinct() {
528
+ return this._distinct;
529
+ }
530
+ set distinct(value) {
531
+ value = value ?? null;
532
+ if (this._distinct !== value) {
533
+ if (this._adapter.hasHostAttribute(POPOVER_CONSTANTS.attributes.DISTINCT) && !value) {
534
+ this._distinct = POPOVER_CONSTANTS.defaults.DISTINCT;
535
+ }
536
+ else {
537
+ this._distinct = value;
538
+ }
539
+ }
540
+ }
521
541
  }
@@ -16,6 +16,7 @@ export interface IPopoverProperties extends IOverlayAware, IDismissible {
16
16
  hoverDelay: number;
17
17
  hoverDismissDelay: number;
18
18
  preset: PopoverPreset;
19
+ distinct: string | null;
19
20
  }
20
21
  export interface IPopoverComponent extends IPopoverProperties {
21
22
  hideAsync(): Promise<void>;
@@ -44,6 +45,7 @@ declare global {
44
45
  * @property {number} [hoverDismissDelay=500] - The delay in milliseconds before the popover is dismissed when the user hovers outside of the popover.
45
46
  * @property {number} [hoverDelay=0] - The delay in milliseconds before the popover is shown.
46
47
  * @property {PopoverPreset} [preset="popover"] - The preset to use for the popover.
48
+ * @property {string | null} [distinct=null] - Enforces that this popover should be the only one open in the same context. Use a unique name otherwise a default context will be used.
47
49
  *
48
50
  * @globalconfig placement
49
51
  * @globalconfig animationType
@@ -64,6 +66,7 @@ declare global {
64
66
  * @attribute {string} [hover-dismiss-delay=500] - The delay in milliseconds before the popover is dismissed when the user hovers outside of the popover.
65
67
  * @attribute {number} [hover-delay=0] - The delay in milliseconds before the popover is shown.
66
68
  * @attribute {string} [preset="popover"] - The preset to use for the popover.
69
+ * @attribute {string | null} [distinct=null] - Enforces that this popover should be the only one open in the same context. Use a unique name otherwise a default context will be used.
67
70
  *
68
71
  * @event {CustomEvent<IPopoverToggleEventData>} forge-popover-beforetoggle - Dispatches before the popover is toggled, and is cancelable.
69
72
  * @event {CustomEvent<IPopoverToggleEventData>} forge-popover-toggle - Dispatches after the popover is toggled.
@@ -125,6 +128,7 @@ export declare class PopoverComponent extends OverlayAware<IPopoverCore> impleme
125
128
  hoverDelay: number;
126
129
  hoverDismissDelay: number;
127
130
  preset: PopoverPreset;
131
+ distinct: string | null;
128
132
  /**
129
133
  * Hides the popover, and returns a `Promise` that resolves when the hide animation is complete.
130
134
  */
@@ -29,6 +29,7 @@ const styles = '@keyframes zoomin{from{transform:scale(.8)}to{transform:scale(1)
29
29
  * @property {number} [hoverDismissDelay=500] - The delay in milliseconds before the popover is dismissed when the user hovers outside of the popover.
30
30
  * @property {number} [hoverDelay=0] - The delay in milliseconds before the popover is shown.
31
31
  * @property {PopoverPreset} [preset="popover"] - The preset to use for the popover.
32
+ * @property {string | null} [distinct=null] - Enforces that this popover should be the only one open in the same context. Use a unique name otherwise a default context will be used.
32
33
  *
33
34
  * @globalconfig placement
34
35
  * @globalconfig animationType
@@ -49,6 +50,7 @@ const styles = '@keyframes zoomin{from{transform:scale(.8)}to{transform:scale(1)
49
50
  * @attribute {string} [hover-dismiss-delay=500] - The delay in milliseconds before the popover is dismissed when the user hovers outside of the popover.
50
51
  * @attribute {number} [hover-delay=0] - The delay in milliseconds before the popover is shown.
51
52
  * @attribute {string} [preset="popover"] - The preset to use for the popover.
53
+ * @attribute {string | null} [distinct=null] - Enforces that this popover should be the only one open in the same context. Use a unique name otherwise a default context will be used.
52
54
  *
53
55
  * @event {CustomEvent<IPopoverToggleEventData>} forge-popover-beforetoggle - Dispatches before the popover is toggled, and is cancelable.
54
56
  * @event {CustomEvent<IPopoverToggleEventData>} forge-popover-toggle - Dispatches after the popover is toggled.
@@ -139,6 +141,9 @@ let PopoverComponent = class PopoverComponent extends OverlayAware {
139
141
  case POPOVER_CONSTANTS.observedAttributes.PRESET:
140
142
  this.preset = newValue;
141
143
  return;
144
+ case POPOVER_CONSTANTS.observedAttributes.DISTINCT:
145
+ this.distinct = !newValue ? null : newValue.trim();
146
+ return;
142
147
  }
143
148
  super.attributeChangedCallback(name, oldValue, newValue);
144
149
  }
@@ -173,6 +178,9 @@ __decorate([
173
178
  __decorate([
174
179
  coreProperty()
175
180
  ], PopoverComponent.prototype, "preset", void 0);
181
+ __decorate([
182
+ coreProperty()
183
+ ], PopoverComponent.prototype, "distinct", void 0);
176
184
  PopoverComponent = __decorate([
177
185
  customElement({
178
186
  name: POPOVER_CONSTANTS.elementName,
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { attachShadowTemplate, coerceBoolean, coreProperty, customElement } from '@tylertech/forge-core';
8
- import { tylIconCheckBox, tylIconCheckBoxOutlineBlank } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconCheckBox, tylIconCheckBoxOutlineBlank } from '@tylertech/tyler-icons';
9
9
  import { CircularProgressComponent } from '../../circular-progress';
10
10
  import { getFormValue, getValidationMessage, inputType, internals, setDefaultAria, setValidity } from '../../constants';
11
11
  import { WithFocusable } from '../../core/mixins/focus/with-focusable';
@@ -5,17 +5,16 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { customElement, attachShadowTemplate, coreProperty, coerceBoolean, coerceNumber } from '@tylertech/forge-core';
8
- import { tylIconDragVerticalVariant } from '@tylertech/tyler-icons/extended';
9
- import { tylIconDragHandle } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconDragHandle, tylIconDragVerticalVariant } from '@tylertech/tyler-icons';
10
9
  import { BaseComponent } from '../../core/base/base-component';
11
10
  import { SPLIT_VIEW_PANEL_CONSTANTS } from './split-view-panel-constants';
12
11
  import { SplitViewPanelCore } from './split-view-panel-core';
13
12
  import { SplitViewPanelAdapter } from './split-view-panel-adapter';
14
13
  import { IconComponent, IconRegistry } from '../../icon';
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:uaukume;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uaukume{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:uaukumo;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uaukumo{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:uaukung;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 uaukung{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:uaukunu;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 uaukunu{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:uaukuod;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uaukuod{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:uaukup9;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uaukup9{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:uaukupi;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 uaukupi{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:uaukupq;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 uaukupq{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
14
  import { StateLayerComponent } from '../../state-layer';
18
15
  import { FocusIndicatorComponent } from '../../focus-indicator';
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-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>';
17
+ 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:u5hcny5;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5hcny5{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:u5hcnya;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5hcnya{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:u5hcnyv;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 u5hcnyv{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:u5hcnzl;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 u5hcnzl{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:u5hcnzx;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5hcnzx{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:u5hco06;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5hco06{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:u5hco0q;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 u5hco0q{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:u5hco1q;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 u5hco1q{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}';
19
18
  /**
20
19
  * @tag forge-split-view-panel
21
20
  *
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { attachShadowTemplate, coerceBoolean, coerceNumber, customElement, coreProperty } from '@tylertech/forge-core';
8
- import { tylIconModeEdit, tylIconWarning, tylIconCheck, tylIconBlock, tylIconKeyboardArrowDown } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconModeEdit, tylIconWarning, tylIconCheck, tylIconBlock, tylIconKeyboardArrowDown } from '@tylertech/tyler-icons';
9
9
  import { StepAdapter } from './step-adapter';
10
10
  import { STEP_CONSTANTS } from './step-constants';
11
11
  import { StepCore } from './step-core';
@@ -88,6 +88,7 @@ export declare const TABLE_CONSTANTS: {
88
88
  FILTER: string;
89
89
  INITIALIZED: string;
90
90
  COLUMN_RESIZE: string;
91
+ BODY_RENDERED: string;
91
92
  };
92
93
  strings: {
93
94
  SELECT_ALL: string;
@@ -89,7 +89,8 @@ const events = {
89
89
  SORT: `${elementName}-sort`,
90
90
  FILTER: `${elementName}-filter`,
91
91
  INITIALIZED: `${elementName}-initialized`,
92
- COLUMN_RESIZE: `${elementName}-column-resize`
92
+ COLUMN_RESIZE: `${elementName}-column-resize`,
93
+ BODY_RENDERED: `${elementName}-body-rendered`
93
94
  };
94
95
  const strings = {
95
96
  SELECT_ALL: 'select-all',
@@ -443,6 +443,7 @@ export class TableCore {
443
443
  this._adapter.createTable(this._tableConfiguration);
444
444
  this._renderSelections();
445
445
  this._rendered = true;
446
+ this._adapter.emitHostEvent(TABLE_CONSTANTS.events.BODY_RENDERED, undefined, false);
446
447
  }
447
448
  /**
448
449
  * Renders the table body only.
@@ -453,6 +454,7 @@ export class TableCore {
453
454
  }
454
455
  this._adapter.recreateTableBody(this._tableConfiguration);
455
456
  this._renderSelections();
457
+ this._adapter.emitHostEvent(TABLE_CONSTANTS.events.BODY_RENDERED, undefined, false);
456
458
  }
457
459
  _renderSelections() {
458
460
  if (this.select) {
@@ -573,6 +575,7 @@ export class TableCore {
573
575
  * Handles a row being selected/deselected.
574
576
  */
575
577
  _onRowSelected(evt) {
578
+ // TODO: We need to ignore this if the checkbox is disabled (which could happen in user code)
576
579
  // We handle row selection manually with either a pointerdown or keydown event (space key), so we listen
577
580
  // for the change event as well to prevent checking the checkbox being checked by the time the event reaches us
578
581
  if (evt.type === 'change') {
@@ -59,6 +59,7 @@ declare global {
59
59
  'forge-table-filter': CustomEvent<ITableFilterEventData>;
60
60
  'forge-table-initialized': CustomEvent<void>;
61
61
  'forge-table-column-resize': CustomEvent<ITableColumnResizeEventData>;
62
+ 'forge-table-body-rendered': CustomEvent<void>;
62
63
  }
63
64
  }
64
65
  /**
@@ -77,6 +78,7 @@ declare global {
77
78
  * @event {CustomEvent<ITableFilterEventData>} forge-table-filter - Dispatched when a column is filtered. Only applies when `filter` is specified.
78
79
  * @event {CustomEvent<void>} forge-table-initialized - Dispatched when the table is initialized in the DOM for the first time.
79
80
  * @event {CustomEvent<ITableColumnResizeEventData>} forge-table-column-resize - Dispatched when a column is resized.
81
+ * @event {CustomEvent<void>} forge-table-body-rendered - Dispatched when the table body is rendered.
80
82
  *
81
83
  * @cssclass forge-data-table - The base table class.
82
84
  */
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { coerceBoolean, coerceNumber, customElement, coreProperty } from '@tylertech/forge-core';
8
- import { tylIconArrowDownward } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconArrowDownward } from '@tylertech/tyler-icons';
9
9
  import { ExpansionPanelComponent } from '../expansion-panel';
10
10
  import { CheckboxComponent } from '../checkbox';
11
11
  import { TableAdapter } from './table-adapter';
@@ -31,6 +31,7 @@ import { TooltipComponent } from '../tooltip';
31
31
  * @event {CustomEvent<ITableFilterEventData>} forge-table-filter - Dispatched when a column is filtered. Only applies when `filter` is specified.
32
32
  * @event {CustomEvent<void>} forge-table-initialized - Dispatched when the table is initialized in the DOM for the first time.
33
33
  * @event {CustomEvent<ITableColumnResizeEventData>} forge-table-column-resize - Dispatched when a column is resized.
34
+ * @event {CustomEvent<void>} forge-table-body-rendered - Dispatched when the table body is rendered.
34
35
  *
35
36
  * @cssclass forge-data-table - The base table class.
36
37
  */
@@ -4,7 +4,7 @@
4
4
  * License: Apache-2.0
5
5
  */
6
6
  import { getShadowElement, toggleAttribute } from '@tylertech/forge-core';
7
- import { tylIconKeyboardArrowLeft, tylIconKeyboardArrowRight, tylIconKeyboardArrowUp, tylIconKeyboardArrowDown } from '@tylertech/tyler-icons/standard';
7
+ import { tylIconKeyboardArrowLeft, tylIconKeyboardArrowRight, tylIconKeyboardArrowUp, tylIconKeyboardArrowDown } from '@tylertech/tyler-icons';
8
8
  import { BaseAdapter } from '../../core/base/base-adapter';
9
9
  import { TAB_CONSTANTS } from '../tab/tab-constants';
10
10
  import { TAB_BAR_CONSTANTS } from './tab-bar-constants';
@@ -12,7 +12,7 @@ import { TabComponent } from '../tab/tab';
12
12
  import { TabBarAdapter } from './tab-bar-adapter';
13
13
  import { TAB_BAR_CONSTANTS } from './tab-bar-constants';
14
14
  import { TabBarCore } from './tab-bar-core';
15
- import { tylIconKeyboardArrowLeft, tylIconKeyboardArrowRight, tylIconKeyboardArrowUp, tylIconKeyboardArrowDown } from '@tylertech/tyler-icons/standard';
15
+ import { tylIconKeyboardArrowLeft, tylIconKeyboardArrowRight, tylIconKeyboardArrowUp, tylIconKeyboardArrowDown } from '@tylertech/tyler-icons';
16
16
  import { WithElementInternals } from '../../core/mixins/internals/with-element-internals';
17
17
  import { WithDefaultAria } from '../../core/mixins/internals/with-default-aria';
18
18
  import { setDefaultAria } from '../../constants';
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { attachShadowTemplate, coerceBoolean, customElement, coreProperty } from '@tylertech/forge-core';
8
- import { tylIconClear } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconClear } from '@tylertech/tyler-icons';
9
9
  import { BASE_FIELD_CONSTANTS, FieldComponent } from '../field';
10
10
  import { BaseField } from '../field/base/base-field';
11
11
  import { IconRegistry } from '../icon';
@@ -5,8 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { customElement, attachShadowTemplate, coreProperty, coerceBoolean, coerceNumber, ensureChild } from '@tylertech/forge-core';
8
- import { tylIconClockOutline } from '@tylertech/tyler-icons/extended';
9
- import { tylIconClose } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconClockOutline, tylIconClose } from '@tylertech/tyler-icons';
10
9
  import { TimePickerAdapter } from './time-picker-adapter';
11
10
  import { TimePickerCore } from './time-picker-core';
12
11
  import { TIME_PICKER_CONSTANTS } from './time-picker-constants';
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { attachShadowTemplate, coerceBoolean, customElement, coreProperty } from '@tylertech/forge-core';
8
- import { tylIconClose } from '@tylertech/tyler-icons/standard';
8
+ import { tylIconClose } from '@tylertech/tyler-icons';
9
9
  import { ButtonComponent } from '../button';
10
10
  import { setDefaultAria } from '../constants';
11
11
  import { BaseComponent } from '../core/base/base-component';
@@ -22,6 +22,11 @@ declare global {
22
22
  * @tag forge-view-switcher
23
23
  *
24
24
  * @dependency forge-view
25
+ *
26
+ * @cssproperty --forge-view-switcher-height - The `height` of the view switcher.
27
+ * @cssproperty --forge-view-switcher-width - The `width` of the view switcher.
28
+ * @cssproperty --forge-view-switcher-animation-duration - The duration of view switching animations.
29
+ * @cssproperty --forge-view-switcher-animation-easing - The timing function of view switching animations.
25
30
  */
26
31
  export declare class ViewSwitcherComponent extends BaseComponent implements IViewSwitcherComponent {
27
32
  static get observedAttributes(): string[];
@@ -11,11 +11,16 @@ import { VIEW_SWITCHER_CONSTANTS } from './view-switcher-constants';
11
11
  import { ViewComponent } from './view/view';
12
12
  import { BaseComponent } from '../core/base/base-component';
13
13
  const template = '<template><div class=\"forge-view-switcher\" part=\"root\"><slot></slot></div></template>';
14
- const styles = ':host{height:var(--_view-switcher-height);width:var(--_view-switcher-width);display:block}:host([hidden]){display:none}.forge-view-switcher{--_view-switcher-height:var(--forge-view-switcher-height, auto);--_view-switcher-width:var(--forge-view-switcher-width, auto);--_view-switcher-animation-duration:var(--forge-view-switcher-animation-duration, var(--forge-animation-duration-medium2, 300ms));--_view-switcher-animation-easing:var(--forge-view-switcher-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)))}.forge-view-switcher{height:var(--_view-switcher-height);width:var(--_view-switcher-width);position:relative;overflow:hidden;transition-property:height;transition-duration:var(--_view-switcher-animation-duration);transition-timing-function:var(--_view-switcher-animation-easing)}.forge-view-switcher ::slotted(.forge-view-switcher__view--hidden){position:absolute;top:0;right:0;bottom:0;left:0}:host(.slide) ::slotted(forge-view){transition-property:transform;transition-duration:var(--_view-switcher-animation-duration);transition-timing-function:var(--_view-switcher-animation-easing);will-change:transform}:host(.fade) ::slotted(forge-view){transition-property:opacity;transition-duration:var(--_view-switcher-animation-duration);transition-timing-function:var(--_view-switcher-animation-easing);will-change:opacity}:host(.fade) ::slotted(.forge-view-switcher__view--hidden){opacity:0}';
14
+ const styles = ':host{height:var(--_view-switcher-height);width:var(--_view-switcher-width);display:block}:host{--_view-switcher-height:var(--forge-view-switcher-height, auto);--_view-switcher-width:var(--forge-view-switcher-width, auto)}:host([hidden]){display:none}.forge-view-switcher{--_view-switcher-animation-duration:var(--forge-view-switcher-animation-duration, var(--forge-animation-duration-medium2, 300ms));--_view-switcher-animation-easing:var(--forge-view-switcher-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)))}.forge-view-switcher{height:var(--_view-switcher-height);width:var(--_view-switcher-width);position:relative;overflow:hidden;transition-property:height;transition-duration:var(--_view-switcher-animation-duration);transition-timing-function:var(--_view-switcher-animation-easing)}.forge-view-switcher ::slotted(.forge-view-switcher__view--hidden){position:absolute;top:0;right:0;bottom:0;left:0}:host(.slide) ::slotted(forge-view){transition-property:transform;transition-duration:var(--_view-switcher-animation-duration);transition-timing-function:var(--_view-switcher-animation-easing);will-change:transform}:host(.fade) ::slotted(forge-view){transition-property:opacity;transition-duration:var(--_view-switcher-animation-duration);transition-timing-function:var(--_view-switcher-animation-easing);will-change:opacity}:host(.fade) ::slotted(.forge-view-switcher__view--hidden){opacity:0}';
15
15
  /**
16
16
  * @tag forge-view-switcher
17
17
  *
18
18
  * @dependency forge-view
19
+ *
20
+ * @cssproperty --forge-view-switcher-height - The `height` of the view switcher.
21
+ * @cssproperty --forge-view-switcher-width - The `width` of the view switcher.
22
+ * @cssproperty --forge-view-switcher-animation-duration - The duration of view switching animations.
23
+ * @cssproperty --forge-view-switcher-animation-easing - The timing function of view switching animations.
19
24
  */
20
25
  let ViewSwitcherComponent = class ViewSwitcherComponent extends BaseComponent {
21
26
  static get observedAttributes() {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tylertech/forge",
3
3
  "description": "Tyler Forge™ Web Components library",
4
- "version": "3.9.0-dev.0",
4
+ "version": "3.9.0-dev.2",
5
5
  "author": "Tyler Technologies, Inc.",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -15,7 +15,7 @@
15
15
  "dependencies": {
16
16
  "@floating-ui/dom": "^1.6.13",
17
17
  "@tylertech/forge-core": "^3.1.0",
18
- "@tylertech/tyler-icons": "^1.12.0",
18
+ "@tylertech/tyler-icons": "^2.0.1",
19
19
  "imask": "^7.6.1",
20
20
  "lit": "^3.2.1",
21
21
  "tslib": "^2.8.1"
@@ -195,9 +195,8 @@
195
195
 
196
196
  @mixin footer() {
197
197
  padding: var(--forge-calendar-controls-padding, 0);
198
- display: grid;
199
- grid-template-columns: 33% 33% 33%;
200
- grid-auto-flow: row;
198
+ display: flex;
199
+ align-items: center;
201
200
  justify-content: space-between;
202
201
  }
203
202
 
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @license
3
+ * Copyright Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ @use '../core/styles/typography';
7
+ @use './token-utils' as *;
8
+
9
+ @forward './token-utils';
10
+
11
+ // Common mixins for data-table components
12
+ @mixin host() {
13
+ display: block;
14
+ }
15
+
16
+ // Base data-table styles
17
+ @mixin base-table() {
18
+ display: table;
19
+ width: 100%;
20
+ border-collapse: collapse;
21
+ }
22
+
23
+ // Base column styles
24
+ @mixin base-column() {
25
+ display: table-column;
26
+ }
27
+
28
+ // Base cell styles
29
+ @mixin base-cell() {
30
+ display: table-cell;
31
+ padding: 0.5rem;
32
+ }
33
+
34
+ // Base row styles
35
+ @mixin base-row() {
36
+ display: table-row;
37
+ }
38
+
39
+ // Base header styles
40
+ @mixin base-head() {
41
+ display: table-header-group;
42
+ }
43
+
44
+ // Base body styles
45
+ @mixin base-body() {
46
+ display: table-row-group;
47
+ }
48
+
49
+ // Base footer styles
50
+ @mixin base-footer() {
51
+ display: table-footer-group;
52
+ }