@tylertech/forge 3.10.4-dev.0 → 3.10.5

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.
@@ -112,26 +112,6 @@
112
112
  "description": "The spacing between the content within the badge.",
113
113
  "values": []
114
114
  },
115
- {
116
- "name": "--forge-bottom-sheet-desktop-max-width",
117
- "description": "The maximum width of the bottom sheet on desktop.",
118
- "values": []
119
- },
120
- {
121
- "name": "--forge-bottom-sheet-desktop-min-width",
122
- "description": "The minimum width of the bottom sheet on desktop.",
123
- "values": []
124
- },
125
- {
126
- "name": "--forge-bottom-sheet-animation-duration",
127
- "description": "The duration of the bottom sheet animation to fullscreen.",
128
- "values": []
129
- },
130
- {
131
- "name": "--forge-bottom-sheet-animation-timing",
132
- "description": "The timing function of the bottom sheet animation to fullscreen.",
133
- "values": []
134
- },
135
115
  {
136
116
  "name": "--forge-banner-background",
137
117
  "description": "The background color of the banner.",
@@ -172,6 +152,26 @@
172
152
  "description": "The transition easing function.",
173
153
  "values": []
174
154
  },
155
+ {
156
+ "name": "--forge-bottom-sheet-desktop-max-width",
157
+ "description": "The maximum width of the bottom sheet on desktop.",
158
+ "values": []
159
+ },
160
+ {
161
+ "name": "--forge-bottom-sheet-desktop-min-width",
162
+ "description": "The minimum width of the bottom sheet on desktop.",
163
+ "values": []
164
+ },
165
+ {
166
+ "name": "--forge-bottom-sheet-animation-duration",
167
+ "description": "The duration of the bottom sheet animation to fullscreen.",
168
+ "values": []
169
+ },
170
+ {
171
+ "name": "--forge-bottom-sheet-animation-timing",
172
+ "description": "The timing function of the bottom sheet animation to fullscreen.",
173
+ "values": []
174
+ },
175
175
  {
176
176
  "name": "--forge-button-primary-color",
177
177
  "description": "The primary color of the button.",
@@ -1727,71 +1727,6 @@
1727
1727
  "description": "The font size of the icon.",
1728
1728
  "values": []
1729
1729
  },
1730
- {
1731
- "name": "--forge-inline-message-background",
1732
- "description": "The background color.",
1733
- "values": []
1734
- },
1735
- {
1736
- "name": "--forge-inline-message-color",
1737
- "description": "The text color.",
1738
- "values": []
1739
- },
1740
- {
1741
- "name": "--forge-inline-message-shape",
1742
- "description": "The shape (border) radius.",
1743
- "values": []
1744
- },
1745
- {
1746
- "name": "--forge-inline-message-padding",
1747
- "description": "The padding around the content.",
1748
- "values": []
1749
- },
1750
- {
1751
- "name": "--forge-inline-message-padding-inline",
1752
- "description": "The inline padding around the content.",
1753
- "values": []
1754
- },
1755
- {
1756
- "name": "--forge-inline-message-padding-block",
1757
- "description": "The block padding around the content.",
1758
- "values": []
1759
- },
1760
- {
1761
- "name": "--forge-inline-message-border-width",
1762
- "description": "The border width.",
1763
- "values": []
1764
- },
1765
- {
1766
- "name": "--forge-inline-message-border-style",
1767
- "description": "The border style. Defaults to `none`.",
1768
- "values": []
1769
- },
1770
- {
1771
- "name": "--forge-inline-message-border-color",
1772
- "description": "The border color.",
1773
- "values": []
1774
- },
1775
- {
1776
- "name": "--forge-inline-message-gap",
1777
- "description": "The gap/space between the content elements.",
1778
- "values": []
1779
- },
1780
- {
1781
- "name": "--forge-inline-message-icon-gap",
1782
- "description": "The gap/space between the icon and the content.",
1783
- "values": []
1784
- },
1785
- {
1786
- "name": "--forge-inline-message-content-gap",
1787
- "description": "The gap/space between the title and the message.",
1788
- "values": []
1789
- },
1790
- {
1791
- "name": "--forge-inline-message-icon-color",
1792
- "description": "The icon color.",
1793
- "values": []
1794
- },
1795
1730
  {
1796
1731
  "name": "--forge-icon-button-display",
1797
1732
  "description": "The display property of the button.",
@@ -2042,6 +1977,71 @@
2042
1977
  "description": "The color of the focus indicator.",
2043
1978
  "values": []
2044
1979
  },
1980
+ {
1981
+ "name": "--forge-inline-message-background",
1982
+ "description": "The background color.",
1983
+ "values": []
1984
+ },
1985
+ {
1986
+ "name": "--forge-inline-message-color",
1987
+ "description": "The text color.",
1988
+ "values": []
1989
+ },
1990
+ {
1991
+ "name": "--forge-inline-message-shape",
1992
+ "description": "The shape (border) radius.",
1993
+ "values": []
1994
+ },
1995
+ {
1996
+ "name": "--forge-inline-message-padding",
1997
+ "description": "The padding around the content.",
1998
+ "values": []
1999
+ },
2000
+ {
2001
+ "name": "--forge-inline-message-padding-inline",
2002
+ "description": "The inline padding around the content.",
2003
+ "values": []
2004
+ },
2005
+ {
2006
+ "name": "--forge-inline-message-padding-block",
2007
+ "description": "The block padding around the content.",
2008
+ "values": []
2009
+ },
2010
+ {
2011
+ "name": "--forge-inline-message-border-width",
2012
+ "description": "The border width.",
2013
+ "values": []
2014
+ },
2015
+ {
2016
+ "name": "--forge-inline-message-border-style",
2017
+ "description": "The border style. Defaults to `none`.",
2018
+ "values": []
2019
+ },
2020
+ {
2021
+ "name": "--forge-inline-message-border-color",
2022
+ "description": "The border color.",
2023
+ "values": []
2024
+ },
2025
+ {
2026
+ "name": "--forge-inline-message-gap",
2027
+ "description": "The gap/space between the content elements.",
2028
+ "values": []
2029
+ },
2030
+ {
2031
+ "name": "--forge-inline-message-icon-gap",
2032
+ "description": "The gap/space between the icon and the content.",
2033
+ "values": []
2034
+ },
2035
+ {
2036
+ "name": "--forge-inline-message-content-gap",
2037
+ "description": "The gap/space between the title and the message.",
2038
+ "values": []
2039
+ },
2040
+ {
2041
+ "name": "--forge-inline-message-icon-color",
2042
+ "description": "The icon color.",
2043
+ "values": []
2044
+ },
2045
2045
  {
2046
2046
  "name": "--forge-label-value-align",
2047
2047
  "description": "Aligns the label and value. Possible values: `start` (default), `center`, `end`.",
@@ -5625,11 +5625,6 @@
5625
5625
  "description": "The focus indicator element."
5626
5626
  },
5627
5627
  { "name": "::part(svg)", "description": "The internal SVG element." },
5628
- { "name": "::part(root)", "description": "The root layout element." },
5629
- {
5630
- "name": "::part(container)",
5631
- "description": "The container element for the title and message content."
5632
- },
5633
5628
  { "name": "::part(root)", "description": "The root container element." },
5634
5629
  {
5635
5630
  "name": "::part(focus-indicator)",
@@ -5639,6 +5634,11 @@
5639
5634
  "name": "::part(state-layer)",
5640
5635
  "description": "The state-layer surface element."
5641
5636
  },
5637
+ { "name": "::part(root)", "description": "The root layout element." },
5638
+ {
5639
+ "name": "::part(container)",
5640
+ "description": "The container element for the title and message content."
5641
+ },
5642
5642
  {
5643
5643
  "name": "::part(root)",
5644
5644
  "description": "The root layout container element."
@@ -172,50 +172,50 @@
172
172
  "references": []
173
173
  },
174
174
  {
175
- "name": "forge-bottom-sheet",
176
- "description": "Bottom sheets slide up from the bottom of the screen to reveal more content and/or actions that the user can take.\n---\n\n\n### **Events:**\n - **forge-bottom-sheet-before-close** - Fires before the bottom sheet closes.\n- **forge-bottom-sheet-close** - Fires after the bottom sheet closes.\n- **forge-bottom-sheet-open** - Fires after the bottom sheet opens.\n- **forge-bottom-sheet-drag-start** - Fires when the bottom sheet starts to be dragged.\n- **forge-bottom-sheet-dragged** - Fires when the bottom sheet is dragged.\n- **forge-bottom-sheet-drag-end** - Fires when the bottom sheet drag ends.\n- **forge-bottom-sheet-drag-cancel** - Fires when the bottom sheet drag is cancelled.\n- **forge-bottom-sheet-fullscreen** - Fires when the bottom sheet is toggled to fullscreen.\n\n### **Slots:**\n - _default_ - The content of the bottom sheet. This is a passthrough slot to the dialog surface.\n\n### **CSS Properties:**\n - **--forge-bottom-sheet-desktop-max-width** - The maximum width of the bottom sheet on desktop. _(default: undefined)_\n- **--forge-bottom-sheet-desktop-min-width** - The minimum width of the bottom sheet on desktop. _(default: undefined)_\n- **--forge-bottom-sheet-animation-duration** - The duration of the bottom sheet animation to fullscreen. _(default: undefined)_\n- **--forge-bottom-sheet-animation-timing** - The timing function of the bottom sheet animation to fullscreen. _(default: undefined)_\n\n### **CSS Parts:**\n - **root** - The root element of the bottom sheet.\n- **surface** - The surface element of the bottom sheet within th dialog.",
175
+ "name": "forge-banner",
176
+ "description": "Banners are used to inform users of important information, such as errors, warnings, or success messages.\n---\n\n\n### **Events:**\n - **forge-banner-before-dismiss** - Dispatched before the banner is dismissed. Cancelable to prevent dismissal.\n- **forge-banner-dismissed** - Dispatched when the banner is dismissed.\n\n### **Slots:**\n - _default_ - The content of the banner.\n- **icon** - The icon to display.\n- **button** - The optional button to display.\n\n### **CSS Properties:**\n - **--forge-banner-background** - The background color of the banner. _(default: undefined)_\n- **--forge-banner-color** - The text color of the banner. _(default: undefined)_\n- **--forge-banner-icon-color** - The color of the icon. _(default: undefined)_\n- **--forge-banner-gap** - The gap between the contents. _(default: undefined)_\n- **--forge-banner-padding-inline** - The inline padding. _(default: undefined)_\n- **--forge-banner-padding-block** - The block padding. _(default: undefined)_\n- **--forge-banner-transition-duration** - The transition duration. _(default: undefined)_\n- **--forge-banner-transition-easing** - The transition easing function. _(default: undefined)_",
177
177
  "attributes": [
178
178
  {
179
- "name": "open",
180
- "description": "Whether the bottom sheet is open.",
179
+ "name": "dismissed",
180
+ "description": "Controls the visibility of the banner.",
181
181
  "values": []
182
182
  },
183
- {
184
- "name": "mode",
185
- "description": "The mode of the bottom sheet.",
186
- "values": [{ "name": "BottomSheetMode" }]
187
- },
188
183
  {
189
184
  "name": "persistent",
190
- "description": "Whether the bottom sheet is persistent.",
185
+ "description": "Controls the visibility of the built-in dismiss button.",
191
186
  "values": []
192
187
  },
193
188
  {
194
- "name": "fullscreen",
195
- "description": "Whether the bottom sheet is fullscreen.",
196
- "values": []
189
+ "name": "theme",
190
+ "description": "The theme of the banner.",
191
+ "values": [{ "name": "BannerTheme" }]
197
192
  }
198
193
  ],
199
194
  "references": []
200
195
  },
201
196
  {
202
- "name": "forge-banner",
203
- "description": "Banners are used to inform users of important information, such as errors, warnings, or success messages.\n---\n\n\n### **Events:**\n - **forge-banner-before-dismiss** - Dispatched before the banner is dismissed. Cancelable to prevent dismissal.\n- **forge-banner-dismissed** - Dispatched when the banner is dismissed.\n\n### **Slots:**\n - _default_ - The content of the banner.\n- **icon** - The icon to display.\n- **button** - The optional button to display.\n\n### **CSS Properties:**\n - **--forge-banner-background** - The background color of the banner. _(default: undefined)_\n- **--forge-banner-color** - The text color of the banner. _(default: undefined)_\n- **--forge-banner-icon-color** - The color of the icon. _(default: undefined)_\n- **--forge-banner-gap** - The gap between the contents. _(default: undefined)_\n- **--forge-banner-padding-inline** - The inline padding. _(default: undefined)_\n- **--forge-banner-padding-block** - The block padding. _(default: undefined)_\n- **--forge-banner-transition-duration** - The transition duration. _(default: undefined)_\n- **--forge-banner-transition-easing** - The transition easing function. _(default: undefined)_",
197
+ "name": "forge-bottom-sheet",
198
+ "description": "Bottom sheets slide up from the bottom of the screen to reveal more content and/or actions that the user can take.\n---\n\n\n### **Events:**\n - **forge-bottom-sheet-before-close** - Fires before the bottom sheet closes.\n- **forge-bottom-sheet-close** - Fires after the bottom sheet closes.\n- **forge-bottom-sheet-open** - Fires after the bottom sheet opens.\n- **forge-bottom-sheet-drag-start** - Fires when the bottom sheet starts to be dragged.\n- **forge-bottom-sheet-dragged** - Fires when the bottom sheet is dragged.\n- **forge-bottom-sheet-drag-end** - Fires when the bottom sheet drag ends.\n- **forge-bottom-sheet-drag-cancel** - Fires when the bottom sheet drag is cancelled.\n- **forge-bottom-sheet-fullscreen** - Fires when the bottom sheet is toggled to fullscreen.\n\n### **Slots:**\n - _default_ - The content of the bottom sheet. This is a passthrough slot to the dialog surface.\n\n### **CSS Properties:**\n - **--forge-bottom-sheet-desktop-max-width** - The maximum width of the bottom sheet on desktop. _(default: undefined)_\n- **--forge-bottom-sheet-desktop-min-width** - The minimum width of the bottom sheet on desktop. _(default: undefined)_\n- **--forge-bottom-sheet-animation-duration** - The duration of the bottom sheet animation to fullscreen. _(default: undefined)_\n- **--forge-bottom-sheet-animation-timing** - The timing function of the bottom sheet animation to fullscreen. _(default: undefined)_\n\n### **CSS Parts:**\n - **root** - The root element of the bottom sheet.\n- **surface** - The surface element of the bottom sheet within th dialog.",
204
199
  "attributes": [
205
200
  {
206
- "name": "dismissed",
207
- "description": "Controls the visibility of the banner.",
201
+ "name": "open",
202
+ "description": "Whether the bottom sheet is open.",
208
203
  "values": []
209
204
  },
205
+ {
206
+ "name": "mode",
207
+ "description": "The mode of the bottom sheet.",
208
+ "values": [{ "name": "BottomSheetMode" }]
209
+ },
210
210
  {
211
211
  "name": "persistent",
212
- "description": "Controls the visibility of the built-in dismiss button.",
212
+ "description": "Whether the bottom sheet is persistent.",
213
213
  "values": []
214
214
  },
215
215
  {
216
- "name": "theme",
217
- "description": "The theme of the banner.",
218
- "values": [{ "name": "BannerTheme" }]
216
+ "name": "fullscreen",
217
+ "description": "Whether the bottom sheet is fullscreen.",
218
+ "values": []
219
219
  }
220
220
  ],
221
221
  "references": []
@@ -1186,18 +1186,6 @@
1186
1186
  ],
1187
1187
  "references": []
1188
1188
  },
1189
- {
1190
- "name": "forge-inline-message",
1191
- "description": "Inline messages are used to provide feedback to the user about a specific action or state.\n---\n\n\n### **Slots:**\n - _default_ - The message text.\n- **title** - The title of the inline message.\n- **icon** - The icon to display.\n\n### **CSS Properties:**\n - **--forge-inline-message-background** - The background color. _(default: undefined)_\n- **--forge-inline-message-color** - The text color. _(default: undefined)_\n- **--forge-inline-message-shape** - The shape (border) radius. _(default: undefined)_\n- **--forge-inline-message-padding** - The padding around the content. _(default: undefined)_\n- **--forge-inline-message-padding-inline** - The inline padding around the content. _(default: undefined)_\n- **--forge-inline-message-padding-block** - The block padding around the content. _(default: undefined)_\n- **--forge-inline-message-border-width** - The border width. _(default: undefined)_\n- **--forge-inline-message-border-style** - The border style. Defaults to `none`. _(default: undefined)_\n- **--forge-inline-message-border-color** - The border color. _(default: undefined)_\n- **--forge-inline-message-gap** - The gap/space between the content elements. _(default: undefined)_\n- **--forge-inline-message-icon-gap** - The gap/space between the icon and the content. _(default: undefined)_\n- **--forge-inline-message-content-gap** - The gap/space between the title and the message. _(default: undefined)_\n- **--forge-inline-message-icon-color** - The icon color. _(default: undefined)_\n\n### **CSS Parts:**\n - **root** - The root layout element.\n- **container** - The container element for the title and message content.",
1192
- "attributes": [
1193
- {
1194
- "name": "theme",
1195
- "description": "The theme to apply.",
1196
- "values": [{ "name": "InlineMessageTheme" }]
1197
- }
1198
- ],
1199
- "references": []
1200
- },
1201
1189
  {
1202
1190
  "name": "forge-icon-button",
1203
1191
  "description": "\n---\n\n\n### **Events:**\n - **click** - Fires when the button is clicked.\n- **forge-icon-button-toggle** - Fires when the icon button is toggled. Only applies in `toggle` mode.\n\n### **Methods:**\n - **click(): _void_** - Clicks the button.\n- **focus(options: _ExperimentalFocusOptions_): _void_** - Focuses the button.\n\n### **Slots:**\n - _default_ - This is a default/unnamed slot for the icon.\n- **on** - The icon to show when in `toggle` mode when toggled \"on\".\n- **start** - Elements to logically render before the icon.\n- **end** - Elements to logically render after the icon.\n- **badge** - Absolutely positions the element in the top-end corner of the button (typically reserved for badge-like content).\n\n### **CSS Properties:**\n - **--forge-icon-button-display** - The display property of the button. _(default: undefined)_\n- **--forge-icon-button-size** - The height and min-width of the button. _(default: undefined)_\n- **--forge-icon-button-gap** - The gap between the icon content. _(default: undefined)_\n- **--forge-icon-button-icon-color** - The color of the icon. _(default: undefined)_\n- **--forge-icon-button-background-color** - The background color of the button. _(default: undefined)_\n- **--forge-icon-button-icon-size** - The size of the icon. _(default: undefined)_\n- **--forge-icon-button-cursor** - The cursor of the button. _(default: undefined)_\n- **--forge-icon-button-padding** - The inline padding of the button. _(default: undefined)_\n- **--forge-icon-button-border** - The border of the button. _(default: undefined)_\n- **--forge-icon-button-shadow** - The shadow of the button. _(default: undefined)_\n- **--forge-icon-button-transition-duration** - The transition duration of the button. _(default: undefined)_\n- **--forge-icon-button-transition-timing** - The transition timing of the button. _(default: undefined)_\n- **--forge-icon-button-shape** - The shape of the button. _(default: undefined)_\n- **--forge-icon-button-shape-start-start** - The start-start border-radius of the button. _(default: undefined)_\n- **--forge-icon-button-shape-start-end** - The start-end border-radius of the button. _(default: undefined)_\n- **--forge-icon-button-shape-end-start** - The end-start border-radius of the button. _(default: undefined)_\n- **--forge-icon-button-shape-end-end** - The end-end border-radius of the button. _(default: undefined)_\n- **--forge-icon-button-shape-squared** - The squared border-radius of the button. _(default: undefined)_\n- **--forge-icon-button-outlined-border-width** - The border width when in the outlined variant. _(default: undefined)_\n- **--forge-icon-button-outlined-border-style** - The border style when in the outlined variant. _(default: undefined)_\n- **--forge-icon-button-outlined-border-color** - The border color when in the outlined variant. _(default: undefined)_\n- **--forge-icon-button-tonal-icon-color** - The icon color when in the tonal variant. _(default: undefined)_\n- **--forge-icon-button-tonal-background-color** - The background color when in the tonal variant. _(default: undefined)_\n- **--forge-icon-button-filled-icon-color** - The icon color when in the filled variant. _(default: undefined)_\n- **--forge-icon-button-filled-background-color** - The background color when in the filled variant. _(default: undefined)_\n- **--forge-icon-button-raised-shadow** - The shadow when in the raised variant. _(default: undefined)_\n- **--forge-icon-button-raised-hover-shadow** - The shadow when in the raised variant and hovered. _(default: undefined)_\n- **--forge-icon-button-raised-active-shadow** - The shadow when in the raised variant and active. _(default: undefined)_\n- **--forge-icon-button-raised-disabled-shadow** - The shadow when in the raised variant and disabled. _(default: undefined)_\n- **--forge-icon-button-density-small-size** - The size of the button when in the small density. _(default: undefined)_\n- **--forge-icon-button-density-small-padding** - The padding of the button when in the small density. _(default: undefined)_\n- **--forge-icon-button-density-small-icon-size** - The size of the icon when in the small density. _(default: undefined)_\n- **--forge-icon-button-density-medium-size** - The size of the button when in the medium density. _(default: undefined)_\n- **--forge-icon-button-density-medium-padding** - The padding of the button when in the medium density. _(default: undefined)_\n- **--forge-icon-button-density-large-size** - The size of the button when in the large density. _(default: undefined)_\n- **--forge-icon-button-toggle-on-background-color** - The background color of the when in toggle mode and toggled on. _(default: undefined)_\n- **--forge-icon-button-toggle-on-icon-color** - The color of the icon when in toggle mode and toggled on. _(default: undefined)_\n- **--forge-icon-button-outlined-toggle-on-background-color** - The background color when in the outlined variant and toggled on. _(default: undefined)_\n- **--forge-icon-button-outlined-toggle-on-icon-color** - The icon color when in the outlined variant and toggled on. _(default: undefined)_\n- **--forge-icon-button-tonal-toggle-background-color** - The background color when in the tonal variant and toggled. _(default: undefined)_\n- **--forge-icon-button-tonal-toggle-on-background-color** - The background color when in the tonal variant and toggled on. _(default: undefined)_\n- **--forge-icon-button-tonal-toggle-on-icon-color** - The icon color when in the tonal variant and toggled on. _(default: undefined)_\n- **--forge-icon-button-filled-toggle-background-color** - The background color when in the filled variant and toggled. _(default: undefined)_\n- **--forge-icon-button-filled-toggle-icon-color** - The icon color when in the filled variant and toggled. _(default: undefined)_\n- **--forge-icon-button-filled-toggle-on-background-color** - The background color when in the filled variant and toggled on. _(default: undefined)_\n- **--forge-icon-button-filled-toggle-on-icon-color** - The icon color when in the filled variant and toggled on. _(default: undefined)_\n- **--forge-icon-button-disabled-cursor** - The cursor when the button is disabled. _(default: undefined)_\n- **--forge-icon-button-disabled-opacity** - The opacity when the button is disabled. _(default: undefined)_\n- **--forge-icon-button-popover-icon-padding** - The padding of the popover icon. _(default: undefined)_\n- **--forge-icon-button-focus-indicator-color** - The color of the focus indicator. _(default: undefined)_\n\n### **CSS Parts:**\n - **root** - The root container element.\n- **focus-indicator** - The focus-indicator indicator element.\n- **state-layer** - The state-layer surface element.",
@@ -1235,6 +1223,18 @@
1235
1223
  ],
1236
1224
  "references": []
1237
1225
  },
1226
+ {
1227
+ "name": "forge-inline-message",
1228
+ "description": "Inline messages are used to provide feedback to the user about a specific action or state.\n---\n\n\n### **Slots:**\n - _default_ - The message text.\n- **title** - The title of the inline message.\n- **icon** - The icon to display.\n\n### **CSS Properties:**\n - **--forge-inline-message-background** - The background color. _(default: undefined)_\n- **--forge-inline-message-color** - The text color. _(default: undefined)_\n- **--forge-inline-message-shape** - The shape (border) radius. _(default: undefined)_\n- **--forge-inline-message-padding** - The padding around the content. _(default: undefined)_\n- **--forge-inline-message-padding-inline** - The inline padding around the content. _(default: undefined)_\n- **--forge-inline-message-padding-block** - The block padding around the content. _(default: undefined)_\n- **--forge-inline-message-border-width** - The border width. _(default: undefined)_\n- **--forge-inline-message-border-style** - The border style. Defaults to `none`. _(default: undefined)_\n- **--forge-inline-message-border-color** - The border color. _(default: undefined)_\n- **--forge-inline-message-gap** - The gap/space between the content elements. _(default: undefined)_\n- **--forge-inline-message-icon-gap** - The gap/space between the icon and the content. _(default: undefined)_\n- **--forge-inline-message-content-gap** - The gap/space between the title and the message. _(default: undefined)_\n- **--forge-inline-message-icon-color** - The icon color. _(default: undefined)_\n\n### **CSS Parts:**\n - **root** - The root layout element.\n- **container** - The container element for the title and message content.",
1229
+ "attributes": [
1230
+ {
1231
+ "name": "theme",
1232
+ "description": "The theme to apply.",
1233
+ "values": [{ "name": "InlineMessageTheme" }]
1234
+ }
1235
+ ],
1236
+ "references": []
1237
+ },
1238
1238
  {
1239
1239
  "name": "forge-keyboard-shortcut",
1240
1240
  "description": "\n---\n\n\n### **Events:**\n - **forge-keyboard-shortcut-activate** - Event fired when the keyboard shortcut is activated.",
@@ -50,15 +50,13 @@ export function WithMoveable(base = class {
50
50
  return;
51
51
  }
52
52
  }
53
- // Ensure that the surface position stays within the bounds of the screen
54
- const newPosition = this._clampPosition(position, this._moveContext);
55
53
  // Only update the position if it actually changed
56
- if (!this._lastPosition || newPosition.x !== this._lastPosition.x || newPosition.y !== this._lastPosition.y) {
57
- const defaultPrevented = this._onMove(newPosition);
54
+ if (!this._lastPosition || position.x !== this._lastPosition.x || position.y !== this._lastPosition.y) {
55
+ const defaultPrevented = this._onMove(position);
58
56
  if (!defaultPrevented) {
59
- this._lastPosition = { ...newPosition };
60
- const newX = this._normalizePositionValue(newPosition.x);
61
- const newY = this._normalizePositionValue(newPosition.y);
57
+ this._lastPosition = { ...position };
58
+ const newX = this._normalizePositionValue(position.x);
59
+ const newY = this._normalizePositionValue(position.y);
62
60
  this._updatePosition(newX, newY);
63
61
  }
64
62
  }
@@ -168,3 +168,19 @@ export declare function checkVisibility(element: HTMLElement): boolean;
168
168
  * @param value - Whether to add or remove the state.
169
169
  */
170
170
  export declare function toggleState(internals: ElementInternals, state: string, value: boolean): void;
171
+ /**
172
+ * Determines if an element is clipped by the viewport bounds
173
+ * @param element The element to check.
174
+ * @returns `true` if the element is clipped by the viewport, otherwise `false`.
175
+ */
176
+ export declare function isElementClipped(element: HTMLElement | null): boolean;
177
+ /**
178
+ * Moves an element into the viewport by adjusting its position to ensure it's fully visible.
179
+ * @param element The element to move into view.
180
+ * @param options Configuration options for the viewport adjustment.
181
+ * @param options.padding The minimum distance from viewport edges (defaults to 8px).
182
+ * @returns `true` if the position was adjusted, otherwise `false`.
183
+ */
184
+ export declare function moveElementIntoViewport(element: HTMLElement | null, { padding }?: {
185
+ padding?: number | undefined;
186
+ }): boolean;
@@ -348,3 +348,70 @@ export function toggleState(internals, state, value) {
348
348
  }
349
349
  }
350
350
  }
351
+ /**
352
+ * Determines if an element is clipped by the viewport bounds
353
+ * @param element The element to check.
354
+ * @returns `true` if the element is clipped by the viewport, otherwise `false`.
355
+ */
356
+ export function isElementClipped(element) {
357
+ if (!element) {
358
+ return false;
359
+ }
360
+ const rect = element.getBoundingClientRect();
361
+ const viewportWidth = window.innerWidth;
362
+ const viewportHeight = window.innerHeight;
363
+ return rect.top < 0 || rect.left < 0 || rect.bottom > viewportHeight || rect.right > viewportWidth;
364
+ }
365
+ /**
366
+ * Moves an element into the viewport by adjusting its position to ensure it's fully visible.
367
+ * @param element The element to move into view.
368
+ * @param options Configuration options for the viewport adjustment.
369
+ * @param options.padding The minimum distance from viewport edges (defaults to 8px).
370
+ * @returns `true` if the position was adjusted, otherwise `false`.
371
+ */
372
+ export function moveElementIntoViewport(element, { padding = 8 } = {}) {
373
+ if (!element) {
374
+ return false;
375
+ }
376
+ const rect = element.getBoundingClientRect();
377
+ const viewportWidth = window.innerWidth;
378
+ const viewportHeight = window.innerHeight;
379
+ // Get current computed position values
380
+ const computedStyle = window.getComputedStyle(element);
381
+ const currentLeft = parseFloat(computedStyle.left) || 0;
382
+ const currentTop = parseFloat(computedStyle.top) || 0;
383
+ let newLeft = currentLeft;
384
+ let newTop = currentTop;
385
+ // Calculate the adjustments needed to bring the element into view
386
+ // Handle horizontal positioning
387
+ if (rect.left < 0) {
388
+ // Element extends beyond left edge - move it right
389
+ newLeft = currentLeft - rect.left + padding;
390
+ }
391
+ else if (rect.right > viewportWidth) {
392
+ // Element extends beyond right edge - move it left
393
+ newLeft = currentLeft - (rect.right - viewportWidth) - padding;
394
+ }
395
+ // Handle vertical positioning
396
+ if (rect.top < 0) {
397
+ // Element extends beyond top edge - move it down
398
+ newTop = currentTop - rect.top + padding;
399
+ }
400
+ else if (rect.bottom > viewportHeight) {
401
+ // Element extends beyond bottom edge - move it up
402
+ newTop = currentTop - (rect.bottom - viewportHeight) - padding;
403
+ }
404
+ // Ensure the element doesn't exceed viewport bounds after adjustment
405
+ // This prevents the element from being too large for the viewport
406
+ const maxLeft = viewportWidth - rect.width - padding;
407
+ const maxTop = viewportHeight - rect.height - padding;
408
+ newLeft = Math.max(padding, Math.min(newLeft, maxLeft));
409
+ newTop = Math.max(padding, Math.min(newTop, maxTop));
410
+ // Only apply position changes if they're different from current values
411
+ if (newLeft !== currentLeft || newTop !== currentTop) {
412
+ element.style.left = `${newLeft}px`;
413
+ element.style.top = `${newTop}px`;
414
+ return true;
415
+ }
416
+ return false;
417
+ }
@@ -25,10 +25,13 @@ export interface IDialogAdapter extends IBaseAdapter<IDialogComponent> {
25
25
  showBackdrop(): void;
26
26
  addSurfaceClass(className: string): void;
27
27
  removeSurfaceClass(className: string): void;
28
+ moveSurfaceIntoView(): void;
28
29
  addFullscreenListener(breakpoint: number, listener: (value: boolean) => void): void;
29
30
  removeFullscreenListener(listener: (value: boolean) => void): void;
30
31
  setAccessibleLabel(label: string): void;
31
32
  setAccessibleDescription(description: string): void;
33
+ isDialogCompletelyOffScreen(): boolean;
34
+ isSurfaceClipped(): boolean;
32
35
  }
33
36
  export declare class DialogAdapter extends BaseAdapter<IDialogComponent> implements IDialogAdapter {
34
37
  private _dialogElement;
@@ -59,9 +62,12 @@ export declare class DialogAdapter extends BaseAdapter<IDialogComponent> impleme
59
62
  showBackdrop(): void;
60
63
  addSurfaceClass(className: string): void;
61
64
  removeSurfaceClass(className: string): void;
65
+ moveSurfaceIntoView(): void;
62
66
  addFullscreenListener(breakpoint: number, listener: (value: boolean) => void): void;
63
67
  removeFullscreenListener(listener: (value: boolean) => void): void;
64
68
  setAccessibleLabel(label: string): void;
65
69
  setAccessibleDescription(description: string): void;
70
+ isDialogCompletelyOffScreen(): boolean;
71
+ isSurfaceClipped(): boolean;
66
72
  private _forceClose;
67
73
  }
@@ -6,6 +6,7 @@
6
6
  import { getShadowElement, playKeyframeAnimation } from '@tylertech/forge-core';
7
7
  import { BACKDROP_CONSTANTS } from '../backdrop';
8
8
  import { BaseAdapter } from '../core/base/base-adapter';
9
+ import { isElementClipped, moveElementIntoViewport } from '../core/utils/utils';
9
10
  import { DialogComponent } from './dialog';
10
11
  import { DIALOG_CONSTANTS, dialogStack, hideBackdrop, showBackdrop } from './dialog-constants';
11
12
  export class DialogAdapter extends BaseAdapter {
@@ -133,6 +134,9 @@ export class DialogAdapter extends BaseAdapter {
133
134
  removeSurfaceClass(className) {
134
135
  this._surfaceElement.classList.remove(className);
135
136
  }
137
+ moveSurfaceIntoView() {
138
+ moveElementIntoViewport(this._surfaceElement);
139
+ }
136
140
  addFullscreenListener(breakpoint, listener) {
137
141
  this._fullscreenMediaQuery = window.matchMedia(`(max-width: ${breakpoint}px)`);
138
142
  this._fullscreenMediaQuery.addEventListener('change', event => listener(event.matches));
@@ -150,6 +154,18 @@ export class DialogAdapter extends BaseAdapter {
150
154
  setAccessibleDescription(description) {
151
155
  this._accessibleDescriptionElement.textContent = description;
152
156
  }
157
+ isDialogCompletelyOffScreen() {
158
+ if (!this._surfaceElement) {
159
+ return false;
160
+ }
161
+ const rect = this._surfaceElement.getBoundingClientRect();
162
+ const viewportWidth = window.innerWidth;
163
+ const viewportHeight = window.innerHeight;
164
+ return rect.right <= 0 || rect.left >= viewportWidth || rect.bottom <= 0 || rect.top >= viewportHeight;
165
+ }
166
+ isSurfaceClipped() {
167
+ return isElementClipped(this._surfaceElement);
168
+ }
153
169
  _forceClose() {
154
170
  this._surfaceElement.classList.remove(BACKDROP_CONSTANTS.classes.EXITING);
155
171
  this._dialogElement.close();
@@ -173,6 +173,10 @@ export class DialogCore {
173
173
  return event.defaultPrevented;
174
174
  };
175
175
  const onMoveEnd = () => {
176
+ // Move dialog back into view if the surface is clipped
177
+ if (this._adapter.isSurfaceClipped()) {
178
+ this._adapter.moveSurfaceIntoView();
179
+ }
176
180
  const event = new CustomEvent(DIALOG_CONSTANTS.events.MOVE_END);
177
181
  this._adapter.removeSurfaceClass(DIALOG_CONSTANTS.classes.MOVING);
178
182
  this._adapter.dispatchHostEvent(event);
@@ -100,7 +100,7 @@ export class ExpansionPanelAdapter extends BaseAdapter {
100
100
  this._triggerElement?.removeAttribute('aria-expanded');
101
101
  }
102
102
  _getTriggerElementById(id) {
103
- if (id) {
103
+ if (id && this.isConnected) {
104
104
  const rootNode = this._component.getRootNode();
105
105
  return rootNode.getElementById(id);
106
106
  }
@@ -148,10 +148,8 @@ export class ExpansionPanelCore {
148
148
  if (this._trigger !== value) {
149
149
  this._clearTrigger();
150
150
  this._trigger = value;
151
- if (this._adapter.isConnected) {
152
- this._adapter.setTriggerElementById(this._trigger);
153
- this._syncTrigger();
154
- }
151
+ this._adapter.setTriggerElementById(this._trigger);
152
+ this._syncTrigger();
155
153
  }
156
154
  }
157
155
  get triggerElement() {
@@ -161,9 +159,7 @@ export class ExpansionPanelCore {
161
159
  if (this._adapter.triggerElement !== el) {
162
160
  this._clearTrigger();
163
161
  this._adapter.setTriggerElement(el);
164
- if (this._adapter.isConnected) {
165
- this._syncTrigger();
166
- }
162
+ this._syncTrigger();
167
163
  }
168
164
  }
169
165
  }
@@ -378,10 +378,10 @@ export class MenuCore extends CascadingListDropdownAwareCore {
378
378
  _createCascadingElement({ index, options, parentValue }) {
379
379
  const menu = this._adapter.createChildMenu(index, parentValue, this._onCascadingChildOpen.bind(this), this._onCascadingChildClose.bind(this), this._onCascadingOptionSelected.bind(this));
380
380
  menu.mode = 'cascade';
381
- menu.popupOffset = { mainAxis: 0, crossAxis: -8 };
381
+ menu.popupOffset = { alignmentAxis: -8 };
382
382
  menu.dense = this._dense;
383
383
  menu.placement = 'right-start';
384
- menu.fallbackPlacements = ['left-start', 'right-start', 'bottom', 'top'];
384
+ menu.fallbackPlacements = ['left-start', 'left-end', 'right-start', 'right-end', 'bottom', 'top'];
385
385
  menu.persistSelection = this._persistSelection;
386
386
  if (this._persistSelection) {
387
387
  menu.selectedValue = this._selectedValue;
@@ -14,7 +14,7 @@ import { IconComponent, IconRegistry } from '../../icon';
14
14
  import { StateLayerComponent } from '../../state-layer';
15
15
  import { FocusIndicatorComponent } from '../../focus-indicator';
16
16
  const template = '<template><div class=\"forge-split-view-panel\" id=\"root\" part=\"root\"><div class=\"forge-split-view-panel__handle\" id=\"handle\" part=\"handle\" role=\"separator\" aria-controls=\"content\" aria-grabbed=\"false\" tabindex=\"0\"><forge-icon class=\"forge-split-view-panel__icon\" id=\"icon\" part=\"icon\"></forge-icon><forge-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:uq6tmnl;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uq6tmnl{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:uq6tmog;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uq6tmog{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:uq6tmok;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 uq6tmok{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:uq6tmpb;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 uq6tmpb{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:uq6tmpd;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uq6tmpd{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:uq6tmpn;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uq6tmpn{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:uq6tmqa;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 uq6tmqa{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:uq6tmqs;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 uq6tmqs{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
+ 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:uhqbsid;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uhqbsid{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:uhqbsj9;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uhqbsj9{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:uhqbsjp;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 uhqbsjp{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:uhqbskm;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 uhqbskm{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:uhqbslj;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uhqbslj{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:uhqbslt;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uhqbslt{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:uhqbsm4;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 uhqbsm4{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:uhqbsmg;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 uhqbsmg{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}';
18
18
  /**
19
19
  * @tag forge-split-view-panel
20
20
  *
@@ -76,6 +76,7 @@ export class ToastCore {
76
76
  return this._duration;
77
77
  }
78
78
  set duration(value) {
79
+ value ?? (value = TOAST_CONSTANTS.defaults.DURATION);
79
80
  if (this._duration !== value) {
80
81
  this._duration = value;
81
82
  if (this._hideTimeout) {