@tylertech/forge 3.10.5 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +594 -226
- package/dist/app-bar/forge-app-bar.css +13 -5
- package/dist/button/forge-button.css +14 -6
- package/dist/checkbox/forge-checkbox.css +23 -17
- package/dist/chips/forge-chips.css +12 -4
- package/dist/field/forge-field.css +7 -5
- package/dist/floating-action-button/forge-floating-action-button.css +12 -6
- package/dist/forge.css +6 -1
- package/dist/icon-button/forge-icon-button.css +12 -4
- package/dist/lib.js +22 -22
- package/dist/lib.js.map +4 -4
- package/dist/list/forge-list.css +59 -3
- package/dist/radio/forge-radio.css +22 -12
- package/dist/skip-link/forge-skip-link.css +38 -32
- package/dist/state-layer/forge-state-layer.css +2 -0
- package/dist/switch/forge-switch.css +9 -5
- package/dist/table/forge-table.css +6 -1
- package/dist/vscode.html-custom-data.json +104 -79
- package/esm/accordion/accordion.d.ts +2 -0
- package/esm/accordion/accordion.js +2 -0
- package/esm/app-bar/app-bar/app-bar-adapter.js +2 -2
- package/esm/app-bar/app-bar/app-bar.d.ts +1 -1
- package/esm/app-bar/app-bar/app-bar.js +1 -1
- package/esm/app-bar/help-button/app-bar-help-button.d.ts +1 -1
- package/esm/app-bar/help-button/app-bar-help-button.js +1 -1
- package/esm/app-bar/menu-button/app-bar-menu-button.d.ts +1 -1
- package/esm/app-bar/menu-button/app-bar-menu-button.js +1 -1
- package/esm/app-bar/notification-button/app-bar-notification-button.d.ts +2 -0
- package/esm/app-bar/notification-button/app-bar-notification-button.js +2 -0
- package/esm/app-bar/profile-button/app-bar-profile-button-adapter.d.ts +2 -1
- package/esm/app-bar/profile-button/app-bar-profile-button-adapter.js +2 -0
- package/esm/app-bar/profile-button/app-bar-profile-button.d.ts +2 -0
- package/esm/app-bar/profile-button/app-bar-profile-button.js +2 -0
- package/esm/app-bar/search/app-bar-search.d.ts +2 -0
- package/esm/app-bar/search/app-bar-search.js +2 -0
- package/esm/autocomplete/autocomplete-core.js +16 -3
- package/esm/autocomplete/autocomplete.d.ts +2 -0
- package/esm/autocomplete/autocomplete.js +2 -0
- package/esm/avatar/avatar.d.ts +1 -1
- package/esm/avatar/avatar.js +1 -1
- package/esm/backdrop/backdrop.d.ts +2 -0
- package/esm/backdrop/backdrop.js +2 -0
- package/esm/badge/badge.d.ts +2 -0
- package/esm/badge/badge.js +2 -0
- package/esm/banner/banner.d.ts +1 -1
- package/esm/banner/banner.js +1 -1
- package/esm/button/base/base-button-adapter.js +2 -2
- package/esm/button/button.d.ts +1 -6
- package/esm/button/button.js +1 -6
- package/esm/button-area/button-area-adapter.js +2 -2
- package/esm/button-area/button-area.d.ts +1 -4
- package/esm/button-area/button-area.js +1 -4
- package/esm/button-toggle/button-toggle/button-toggle-adapter.js +2 -2
- package/esm/button-toggle/button-toggle/button-toggle.d.ts +2 -0
- package/esm/button-toggle/button-toggle/button-toggle.js +2 -0
- package/esm/button-toggle/button-toggle-group/button-toggle-group.d.ts +1 -1
- package/esm/button-toggle/button-toggle-group/button-toggle-group.js +1 -1
- package/esm/calendar/calendar-menu/calendar-menu.js +1 -1
- package/esm/calendar/calendar.d.ts +2 -0
- package/esm/calendar/calendar.js +3 -1
- package/esm/card/card.d.ts +2 -0
- package/esm/card/card.js +2 -0
- package/esm/chip-field/chip-field.d.ts +2 -0
- package/esm/chip-field/chip-field.js +2 -0
- package/esm/chips/chip/chip-adapter.d.ts +3 -0
- package/esm/chips/chip/chip-adapter.js +14 -4
- package/esm/chips/chip/chip-constants.d.ts +2 -0
- package/esm/chips/chip/chip-constants.js +2 -1
- package/esm/chips/chip/chip-core.d.ts +4 -0
- package/esm/chips/chip/chip-core.js +9 -0
- package/esm/chips/chip/chip.d.ts +6 -0
- package/esm/chips/chip/chip.js +10 -0
- package/esm/chips/chip-set/chip-set.d.ts +1 -1
- package/esm/chips/chip-set/chip-set.js +1 -1
- package/esm/circular-progress/circular-progress.d.ts +1 -2
- package/esm/circular-progress/circular-progress.js +1 -2
- package/esm/color-picker/color-picker.d.ts +2 -0
- package/esm/color-picker/color-picker.js +3 -1
- package/esm/core/utils/a11y-utils.js +17 -0
- package/esm/core/utils/utils.js +8 -2
- package/esm/date-picker/date-picker.d.ts +2 -0
- package/esm/date-picker/date-picker.js +2 -0
- package/esm/date-range-picker/date-range-picker.d.ts +2 -0
- package/esm/date-range-picker/date-range-picker.js +2 -0
- package/esm/deprecated/button/deprecated-button.js +3 -3
- package/esm/deprecated/icon-button/deprecated-icon-button.js +2 -2
- package/esm/dialog/dialog.d.ts +1 -1
- package/esm/dialog/dialog.js +1 -1
- package/esm/divider/divider.d.ts +1 -1
- package/esm/divider/divider.js +1 -1
- package/esm/drawer/base/base-drawer-adapter.d.ts +2 -0
- package/esm/drawer/base/base-drawer-adapter.js +3 -0
- package/esm/drawer/base/base-drawer-core.js +3 -0
- package/esm/drawer/drawer/drawer.d.ts +2 -0
- package/esm/drawer/drawer/drawer.js +3 -1
- package/esm/drawer/mini-drawer/mini-drawer.d.ts +2 -0
- package/esm/drawer/mini-drawer/mini-drawer.js +3 -1
- package/esm/drawer/modal-drawer/modal-drawer.d.ts +2 -0
- package/esm/drawer/modal-drawer/modal-drawer.js +3 -1
- package/esm/expansion-panel/expansion-panel.d.ts +1 -1
- package/esm/expansion-panel/expansion-panel.js +1 -1
- package/esm/field/field-adapter.js +2 -2
- package/esm/field/field-core.d.ts +3 -3
- package/esm/field/field.d.ts +1 -2
- package/esm/field/field.js +1 -2
- package/esm/file-picker/file-picker.d.ts +2 -3
- package/esm/file-picker/file-picker.js +2 -3
- package/esm/floating-action-button/floating-action-button.d.ts +1 -1
- package/esm/floating-action-button/floating-action-button.js +1 -1
- package/esm/focus-indicator/focus-indicator-constants.d.ts +1 -11
- package/esm/focus-indicator/focus-indicator-constants.js +2 -17
- package/esm/focus-indicator/focus-indicator.d.ts +53 -26
- package/esm/focus-indicator/focus-indicator.js +139 -62
- package/esm/focus-indicator/index.d.ts +0 -2
- package/esm/focus-indicator/index.js +0 -2
- package/esm/icon/icon.d.ts +1 -1
- package/esm/icon/icon.js +1 -1
- package/esm/icon-button/icon-button.d.ts +2 -0
- package/esm/icon-button/icon-button.js +2 -0
- package/esm/inline-message/inline-message.d.ts +1 -1
- package/esm/inline-message/inline-message.js +1 -1
- package/esm/keyboard-shortcut/keyboard-shortcut.d.ts +2 -0
- package/esm/keyboard-shortcut/keyboard-shortcut.js +2 -0
- package/esm/label/label.d.ts +1 -1
- package/esm/label/label.js +1 -1
- package/esm/label-value/label-value.d.ts +1 -1
- package/esm/label-value/label-value.js +1 -1
- package/esm/linear-progress/linear-progress.d.ts +1 -2
- package/esm/linear-progress/linear-progress.js +1 -2
- package/esm/list/list/list.d.ts +1 -1
- package/esm/list/list/list.js +2 -2
- package/esm/list/list-item/list-item-constants.js +1 -1
- package/esm/list/list-item/list-item-core.d.ts +2 -0
- package/esm/list/list-item/list-item-core.js +29 -6
- package/esm/list/list-item/list-item.d.ts +1 -0
- package/esm/list/list-item/list-item.js +2 -1
- package/esm/list-dropdown/list-dropdown-constants.d.ts +11 -1
- package/esm/list-dropdown/list-dropdown-constants.js +6 -1
- package/esm/list-dropdown/list-dropdown-utils.d.ts +3 -1
- package/esm/list-dropdown/list-dropdown-utils.js +69 -21
- package/esm/menu/menu-adapter.d.ts +2 -0
- package/esm/menu/menu-adapter.js +12 -8
- package/esm/menu/menu-constants.d.ts +1 -0
- package/esm/menu/menu-constants.js +3 -2
- package/esm/menu/menu-core.d.ts +5 -0
- package/esm/menu/menu-core.js +41 -2
- package/esm/menu/menu.d.ts +17 -0
- package/esm/menu/menu.js +15 -1
- package/esm/open-icon/open-icon.d.ts +2 -1
- package/esm/open-icon/open-icon.js +2 -1
- package/esm/overlay/overlay.d.ts +1 -2
- package/esm/overlay/overlay.js +1 -2
- package/esm/page-state/page-state.d.ts +2 -1
- package/esm/page-state/page-state.js +2 -1
- package/esm/paginator/paginator-core.d.ts +16 -0
- package/esm/paginator/paginator-core.js +29 -9
- package/esm/paginator/paginator.d.ts +38 -0
- package/esm/paginator/paginator.js +46 -0
- package/esm/popover/popover-adapter.js +1 -1
- package/esm/popover/popover-constants.d.ts +4 -0
- package/esm/popover/popover-constants.js +4 -2
- package/esm/popover/popover-core.d.ts +5 -1
- package/esm/popover/popover-core.js +13 -0
- package/esm/popover/popover.d.ts +6 -2
- package/esm/popover/popover.js +10 -2
- package/esm/profile-card/profile-card.d.ts +3 -0
- package/esm/profile-card/profile-card.js +3 -0
- package/esm/radio/radio/radio.d.ts +1 -2
- package/esm/radio/radio/radio.js +1 -2
- package/esm/scaffold/scaffold.d.ts +1 -1
- package/esm/scaffold/scaffold.js +1 -1
- package/esm/select/core/base-select-constants.d.ts +4 -0
- package/esm/select/core/base-select-core.d.ts +22 -2
- package/esm/select/core/base-select-core.js +217 -40
- package/esm/select/option/option.d.ts +2 -0
- package/esm/select/option/option.js +2 -0
- package/esm/select/option-group/option-group.d.ts +2 -0
- package/esm/select/option-group/option-group.js +2 -0
- package/esm/select/select/select-constants.d.ts +5 -0
- package/esm/select/select/select-constants.js +5 -2
- package/esm/select/select/select.d.ts +14 -2
- package/esm/select/select/select.js +23 -2
- package/esm/select/select-dropdown/select-dropdown.d.ts +2 -0
- package/esm/select/select-dropdown/select-dropdown.js +2 -0
- package/esm/skeleton/skeleton.d.ts +1 -1
- package/esm/skeleton/skeleton.js +1 -1
- package/esm/skip-link/skip-link.d.ts +1 -1
- package/esm/skip-link/skip-link.js +1 -1
- package/esm/slider/slider.d.ts +1 -1
- package/esm/slider/slider.js +1 -1
- package/esm/split-button/split-button.d.ts +1 -1
- package/esm/split-button/split-button.js +2 -2
- package/esm/split-view/split-view/split-view.d.ts +2 -0
- package/esm/split-view/split-view/split-view.js +2 -0
- package/esm/split-view/split-view-panel/split-view-panel.d.ts +2 -0
- package/esm/split-view/split-view-panel/split-view-panel.js +3 -1
- package/esm/stack/stack.d.ts +1 -8
- package/esm/stack/stack.js +1 -8
- package/esm/state-layer/state-layer.d.ts +1 -1
- package/esm/state-layer/state-layer.js +2 -2
- package/esm/stepper/step/step.d.ts +2 -0
- package/esm/stepper/step/step.js +3 -1
- package/esm/stepper/stepper/stepper.d.ts +2 -0
- package/esm/stepper/stepper/stepper.js +2 -0
- package/esm/table/table-adapter.d.ts +4 -4
- package/esm/table/table-adapter.js +4 -4
- package/esm/table/table-core.js +2 -2
- package/esm/table/table-utils.d.ts +2 -2
- package/esm/table/table-utils.js +25 -18
- package/esm/table/table.d.ts +3 -1
- package/esm/table/table.js +4 -1
- package/esm/tabs/tab/tab-adapter.js +2 -2
- package/esm/tabs/tab/tab.d.ts +2 -0
- package/esm/tabs/tab/tab.js +2 -0
- package/esm/tabs/tab-bar/tab-bar.d.ts +1 -1
- package/esm/tabs/tab-bar/tab-bar.js +1 -1
- package/esm/text-field/text-field-adapter.d.ts +6 -4
- package/esm/text-field/text-field-adapter.js +11 -4
- package/esm/text-field/text-field-core.d.ts +4 -0
- package/esm/text-field/text-field-core.js +13 -2
- package/esm/text-field/text-field.d.ts +1 -1
- package/esm/text-field/text-field.js +1 -1
- package/esm/time-picker/time-picker-adapter.js +1 -0
- package/esm/time-picker/time-picker-core.js +3 -3
- package/esm/time-picker/time-picker.d.ts +2 -0
- package/esm/time-picker/time-picker.js +2 -0
- package/esm/toast/toast-adapter.d.ts +20 -0
- package/esm/toast/toast-adapter.js +30 -0
- package/esm/toast/toast-core.d.ts +17 -0
- package/esm/toast/toast-core.js +66 -0
- package/esm/toast/toast.d.ts +9 -2
- package/esm/toast/toast.js +10 -1
- package/esm/toolbar/toolbar.d.ts +1 -3
- package/esm/toolbar/toolbar.js +1 -3
- package/esm/tooltip/tooltip-adapter.d.ts +6 -0
- package/esm/tooltip/tooltip-adapter.js +9 -0
- package/esm/tooltip/tooltip-constants.d.ts +1 -0
- package/esm/tooltip/tooltip-constants.js +2 -1
- package/esm/tooltip/tooltip-core.d.ts +20 -0
- package/esm/tooltip/tooltip-core.js +96 -2
- package/esm/tooltip/tooltip.d.ts +1 -1
- package/esm/tooltip/tooltip.js +2 -2
- package/esm/view-switcher/view/view.d.ts +2 -0
- package/esm/view-switcher/view/view.js +2 -0
- package/esm/view-switcher/view-switcher.d.ts +2 -0
- package/esm/view-switcher/view-switcher.js +2 -0
- package/package.json +4 -4
- package/sass/focus-indicator/focus-indicator.scss +1 -1
- package/sass/icon-button/forge-icon-button.scss +3 -3
- package/sass/list/forge-list.scss +6 -6
- package/sass/state-layer/_core.scss +2 -0
- package/sass/table/_core.scss +13 -1
- package/sass/tooltip/_core.scss +0 -2
- package/esm/focus-indicator/focus-indicator-adapter.d.ts +0 -29
- package/esm/focus-indicator/focus-indicator-adapter.js +0 -37
- package/esm/focus-indicator/focus-indicator-core.d.ts +0 -48
- package/esm/focus-indicator/focus-indicator-core.js +0 -129
package/esm/table/table.js
CHANGED
|
@@ -15,7 +15,10 @@ import { IconRegistry, IconComponent } from '../icon';
|
|
|
15
15
|
import { BaseComponent } from '../core/base/base-component';
|
|
16
16
|
import { CellAlign } from './types';
|
|
17
17
|
import { TooltipComponent } from '../tooltip';
|
|
18
|
+
import { FocusIndicatorComponent } from '../focus-indicator';
|
|
18
19
|
/**
|
|
20
|
+
* @summary Tables are used to display sets of data. They organize information into rows and columns, making it easier to read, compare, and analyze. The Forge table provides a configuration-based approach to building data tables with means for sorting, filtering, selecting, and customizing the display of tabular data.
|
|
21
|
+
*
|
|
19
22
|
* @tag forge-table
|
|
20
23
|
*
|
|
21
24
|
* @dependency forge-expansion-panel
|
|
@@ -309,7 +312,7 @@ __decorate([
|
|
|
309
312
|
TableComponent = __decorate([
|
|
310
313
|
customElement({
|
|
311
314
|
name: TABLE_CONSTANTS.elementName,
|
|
312
|
-
dependencies: [ExpansionPanelComponent, IconComponent, CheckboxComponent, TooltipComponent]
|
|
315
|
+
dependencies: [ExpansionPanelComponent, IconComponent, CheckboxComponent, TooltipComponent, FocusIndicatorComponent]
|
|
313
316
|
})
|
|
314
317
|
], TableComponent);
|
|
315
318
|
export { TableComponent };
|
|
@@ -8,12 +8,12 @@ import { STATE_LAYER_CONSTANTS } from '../../state-layer';
|
|
|
8
8
|
import { BaseAdapter } from '../../core/base/base-adapter';
|
|
9
9
|
import { TAB_BAR_CONSTANTS } from '../tab-bar/tab-bar-constants';
|
|
10
10
|
import { TAB_CONSTANTS } from './tab-constants';
|
|
11
|
-
import {
|
|
11
|
+
import { FOCUS_INDICATOR_TAG_NAME } from '../../focus-indicator';
|
|
12
12
|
export class TabAdapter extends BaseAdapter {
|
|
13
13
|
constructor(component) {
|
|
14
14
|
super(component);
|
|
15
15
|
this._tabIndicatorElement = getShadowElement(this._component, TAB_CONSTANTS.selectors.INDICATOR);
|
|
16
|
-
this._focusIndicatorElement = getShadowElement(this._component,
|
|
16
|
+
this._focusIndicatorElement = getShadowElement(this._component, FOCUS_INDICATOR_TAG_NAME);
|
|
17
17
|
this._stateLayerElement = getShadowElement(this._component, STATE_LAYER_CONSTANTS.elementName);
|
|
18
18
|
}
|
|
19
19
|
initialize() {
|
package/esm/tabs/tab/tab.d.ts
CHANGED
package/esm/tabs/tab/tab.js
CHANGED
|
@@ -16,6 +16,8 @@ const styles = ':host{display:inline-flex;outline:0;-webkit-tap-highlight-color:
|
|
|
16
16
|
/**
|
|
17
17
|
* @tag forge-tab
|
|
18
18
|
*
|
|
19
|
+
* @summary Tab components represent a single tab inside a tab bar.
|
|
20
|
+
*
|
|
19
21
|
* @dependency forge-focus-indicator
|
|
20
22
|
* @dependency forge-state-layer
|
|
21
23
|
*
|
|
@@ -31,7 +31,7 @@ declare const TabBarComponent_base: import("../../constants").AbstractConstructo
|
|
|
31
31
|
/**
|
|
32
32
|
* @tag forge-tab-bar
|
|
33
33
|
*
|
|
34
|
-
* @summary
|
|
34
|
+
* @summary Tab bars organize a set of tabs, holding selection state and enabling navigation between different views or sections of content.
|
|
35
35
|
*
|
|
36
36
|
* @description
|
|
37
37
|
* Use tabs to group content into helpful categories. Tabs are typically placed
|
|
@@ -21,7 +21,7 @@ const styles = ':host{position:relative;display:block}:host([hidden]){display:no
|
|
|
21
21
|
/**
|
|
22
22
|
* @tag forge-tab-bar
|
|
23
23
|
*
|
|
24
|
-
* @summary
|
|
24
|
+
* @summary Tab bars organize a set of tabs, holding selection state and enabling navigation between different views or sections of content.
|
|
25
25
|
*
|
|
26
26
|
* @description
|
|
27
27
|
* Use tabs to group content into helpful categories. Tabs are typically placed
|
|
@@ -12,13 +12,14 @@ export interface ITextFieldAdapter extends IBaseFieldAdapter {
|
|
|
12
12
|
addRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
|
|
13
13
|
removeRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
|
|
14
14
|
disableInput(disabled: boolean): void;
|
|
15
|
+
setInvalid(value: boolean): void;
|
|
15
16
|
handleDefaultSlotChange(listener: TextFieldInputAttributeObserver): void;
|
|
16
17
|
tryAddValueChangeListener(context: unknown, listener: TextFieldValueChangeListener): void;
|
|
17
18
|
removeValueChangeListener(): void;
|
|
18
19
|
tryFloatLabel(force?: boolean): void;
|
|
19
20
|
tryConnectSlottedLabel(): void;
|
|
20
|
-
connectClearButton(
|
|
21
|
-
disconnectClearButton(
|
|
21
|
+
connectClearButton(clickListener: EventListener, mouseDownListener: EventListener): void;
|
|
22
|
+
disconnectClearButton(clickListener: EventListener, mouseDownListener: EventListener): void;
|
|
22
23
|
toggleClearButtonVisibility(visible: boolean): void;
|
|
23
24
|
clearInput(): void;
|
|
24
25
|
getAllSlotElements(): HTMLSlotElement[];
|
|
@@ -39,6 +40,7 @@ export declare class TextFieldAdapter extends BaseFieldAdapter implements ITextF
|
|
|
39
40
|
addRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
|
|
40
41
|
removeRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
|
|
41
42
|
disableInput(disabled: boolean): void;
|
|
43
|
+
setInvalid(value: boolean): void;
|
|
42
44
|
inputIsDisabled(): boolean;
|
|
43
45
|
click(): void;
|
|
44
46
|
applyLabel(value: string | null): void;
|
|
@@ -47,8 +49,8 @@ export declare class TextFieldAdapter extends BaseFieldAdapter implements ITextF
|
|
|
47
49
|
removeValueChangeListener(): void;
|
|
48
50
|
tryFloatLabel(force?: boolean): void;
|
|
49
51
|
tryConnectSlottedLabel(): void;
|
|
50
|
-
connectClearButton(
|
|
51
|
-
disconnectClearButton(
|
|
52
|
+
connectClearButton(clickListener: EventListener, mouseDownListener: EventListener): void;
|
|
53
|
+
disconnectClearButton(clickListener: EventListener, mouseDownListener: EventListener): void;
|
|
52
54
|
toggleClearButtonVisibility(visible: boolean): void;
|
|
53
55
|
clearInput(): void;
|
|
54
56
|
getAllSlotElements(): HTMLSlotElement[];
|
|
@@ -40,6 +40,9 @@ export class TextFieldAdapter extends BaseFieldAdapter {
|
|
|
40
40
|
disableInput(disabled) {
|
|
41
41
|
this._inputElements.forEach(el => (el.disabled = disabled));
|
|
42
42
|
}
|
|
43
|
+
setInvalid(value) {
|
|
44
|
+
this._inputElements.forEach(el => toggleAttribute(el, value, 'aria-invalid', 'true'));
|
|
45
|
+
}
|
|
43
46
|
inputIsDisabled() {
|
|
44
47
|
return this._inputElements.some(el => el.disabled);
|
|
45
48
|
}
|
|
@@ -130,11 +133,15 @@ export class TextFieldAdapter extends BaseFieldAdapter {
|
|
|
130
133
|
inputElement.id = id;
|
|
131
134
|
label.htmlFor = id;
|
|
132
135
|
}
|
|
133
|
-
connectClearButton(
|
|
134
|
-
this._clearButtonSlotElement.addEventListener('click',
|
|
136
|
+
connectClearButton(clickListener, mouseDownListener) {
|
|
137
|
+
this._clearButtonSlotElement.addEventListener('click', clickListener);
|
|
138
|
+
if (mouseDownListener) {
|
|
139
|
+
this._clearButtonSlotElement.addEventListener('mousedown', mouseDownListener);
|
|
140
|
+
}
|
|
135
141
|
}
|
|
136
|
-
disconnectClearButton(
|
|
137
|
-
this._clearButtonSlotElement.removeEventListener('click',
|
|
142
|
+
disconnectClearButton(clickListener, mouseDownListener) {
|
|
143
|
+
this._clearButtonSlotElement.removeEventListener('click', clickListener);
|
|
144
|
+
this._clearButtonSlotElement.removeEventListener('mousedown', mouseDownListener);
|
|
138
145
|
}
|
|
139
146
|
toggleClearButtonVisibility(visible) {
|
|
140
147
|
if (visible) {
|
|
@@ -18,6 +18,7 @@ export declare class TextFieldCore extends BaseFieldCore<ITextFieldAdapter> impl
|
|
|
18
18
|
private _valueChangeListener;
|
|
19
19
|
private _inputListener;
|
|
20
20
|
private _clearButtonClickListener;
|
|
21
|
+
private _clearButtonMouseDownListener;
|
|
21
22
|
constructor(_adapter: TextFieldAdapter);
|
|
22
23
|
initialize(): void;
|
|
23
24
|
destroy(): void;
|
|
@@ -27,6 +28,7 @@ export declare class TextFieldCore extends BaseFieldCore<ITextFieldAdapter> impl
|
|
|
27
28
|
private _handleSlotChange;
|
|
28
29
|
private _onInputAttributeChange;
|
|
29
30
|
private _onClearButtonClick;
|
|
31
|
+
private _onClearButtonMouseDown;
|
|
30
32
|
/** Responds to the `input` event from the <input> element. */
|
|
31
33
|
private _onInputChange;
|
|
32
34
|
/** Called from the `value` property setter on the <input> element. */
|
|
@@ -35,6 +37,8 @@ export declare class TextFieldCore extends BaseFieldCore<ITextFieldAdapter> impl
|
|
|
35
37
|
private _toggleClearButtonVisibility;
|
|
36
38
|
get showClear(): boolean;
|
|
37
39
|
set showClear(value: boolean);
|
|
40
|
+
get invalid(): boolean;
|
|
41
|
+
set invalid(value: boolean);
|
|
38
42
|
get disabled(): boolean;
|
|
39
43
|
set disabled(value: boolean);
|
|
40
44
|
get labelPosition(): FieldLabelPosition;
|
|
@@ -17,6 +17,7 @@ export class TextFieldCore extends BaseFieldCore {
|
|
|
17
17
|
this._valueChangeListener = this._onValueChange.bind(this);
|
|
18
18
|
this._inputListener = this._onInputChange.bind(this);
|
|
19
19
|
this._clearButtonClickListener = (evt) => this._onClearButtonClick(evt);
|
|
20
|
+
this._clearButtonMouseDownListener = (evt) => this._onClearButtonMouseDown(evt);
|
|
20
21
|
}
|
|
21
22
|
initialize() {
|
|
22
23
|
this._adapter.tryApplyGlobalConfiguration(['labelPosition', 'variant']);
|
|
@@ -72,6 +73,9 @@ export class TextFieldCore extends BaseFieldCore {
|
|
|
72
73
|
this._adapter.clearInput();
|
|
73
74
|
}
|
|
74
75
|
}
|
|
76
|
+
_onClearButtonMouseDown(evt) {
|
|
77
|
+
evt.preventDefault(); // Prevent focus change to avoid blur event
|
|
78
|
+
}
|
|
75
79
|
/** Responds to the `input` event from the <input> element. */
|
|
76
80
|
_onInputChange(evt) {
|
|
77
81
|
let floatLabel;
|
|
@@ -101,14 +105,21 @@ export class TextFieldCore extends BaseFieldCore {
|
|
|
101
105
|
this._showClear = value;
|
|
102
106
|
this._adapter.toggleHostAttribute(TEXT_FIELD_CONSTANTS.attributes.SHOW_CLEAR, value);
|
|
103
107
|
if (value) {
|
|
104
|
-
this._adapter.connectClearButton(this._clearButtonClickListener);
|
|
108
|
+
this._adapter.connectClearButton(this._clearButtonClickListener, this._clearButtonMouseDownListener);
|
|
105
109
|
}
|
|
106
110
|
else {
|
|
107
|
-
this._adapter.disconnectClearButton(this._clearButtonClickListener);
|
|
111
|
+
this._adapter.disconnectClearButton(this._clearButtonClickListener, this._clearButtonMouseDownListener);
|
|
108
112
|
}
|
|
109
113
|
this._toggleClearButtonVisibility();
|
|
110
114
|
}
|
|
111
115
|
}
|
|
116
|
+
get invalid() {
|
|
117
|
+
return super.invalid;
|
|
118
|
+
}
|
|
119
|
+
set invalid(value) {
|
|
120
|
+
super.invalid = value;
|
|
121
|
+
this._adapter.setInvalid(value);
|
|
122
|
+
}
|
|
112
123
|
get disabled() {
|
|
113
124
|
return super.disabled;
|
|
114
125
|
}
|
|
@@ -20,7 +20,7 @@ declare global {
|
|
|
20
20
|
/**
|
|
21
21
|
* @tag forge-text-field
|
|
22
22
|
*
|
|
23
|
-
* @summary The Forge Text Field component
|
|
23
|
+
* @summary The Forge Text Field component is an input field used to capture user text input. It requires a child `<input>` or `<textarea>` element to function properly, and an optional `<label>` element can be used to provide a label for the `<input>`.
|
|
24
24
|
*
|
|
25
25
|
* @dependency forge-field
|
|
26
26
|
* @dependency forge-icon-button
|
|
@@ -19,7 +19,7 @@ const styles = ':host{display:block}:host([hidden]){display:none}forge-field{dis
|
|
|
19
19
|
/**
|
|
20
20
|
* @tag forge-text-field
|
|
21
21
|
*
|
|
22
|
-
* @summary The Forge Text Field component
|
|
22
|
+
* @summary The Forge Text Field component is an input field used to capture user text input. It requires a child `<input>` or `<textarea>` element to function properly, and an optional `<label>` element can be used to provide a label for the `<input>`.
|
|
23
23
|
*
|
|
24
24
|
* @dependency forge-field
|
|
25
25
|
* @dependency forge-icon-button
|
|
@@ -189,6 +189,7 @@ export class TimePickerAdapter extends BaseAdapter {
|
|
|
189
189
|
this._toggleElement.setAttribute('aria-disabled', value.toString());
|
|
190
190
|
if ('disabled' in this._toggleElement) {
|
|
191
191
|
this._toggleElement.disabled = value;
|
|
192
|
+
this._toggleElement.tabIndex = -1;
|
|
192
193
|
}
|
|
193
194
|
else {
|
|
194
195
|
const button = this._toggleElement.querySelector('button');
|
|
@@ -579,7 +579,7 @@ export class TimePickerCore {
|
|
|
579
579
|
for (let totalMinutes = minMinutes; totalMinutes < TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES; totalMinutes += minuteStep) {
|
|
580
580
|
const millis = minutesToMillis(totalMinutes);
|
|
581
581
|
const disabled = this._restrictedTimes.includes(millis);
|
|
582
|
-
const label = millisToTimeString(millis, this._use24HourTime,
|
|
582
|
+
const label = millisToTimeString(millis, this._use24HourTime, this._allowSeconds) || '';
|
|
583
583
|
const value = { time: millis };
|
|
584
584
|
times.push({ label, value, disabled });
|
|
585
585
|
}
|
|
@@ -587,7 +587,7 @@ export class TimePickerCore {
|
|
|
587
587
|
for (let totalMinutes = 0; totalMinutes <= maxMinutes; totalMinutes += minuteStep) {
|
|
588
588
|
const millis = minutesToMillis(totalMinutes);
|
|
589
589
|
const disabled = this._restrictedTimes.includes(millis);
|
|
590
|
-
const label = millisToTimeString(millis, this._use24HourTime,
|
|
590
|
+
const label = millisToTimeString(millis, this._use24HourTime, this._allowSeconds) || '';
|
|
591
591
|
const value = { time: millis };
|
|
592
592
|
times.push({ label, value, disabled });
|
|
593
593
|
}
|
|
@@ -602,7 +602,7 @@ export class TimePickerCore {
|
|
|
602
602
|
}
|
|
603
603
|
const millis = minutesToMillis(totalMinutes);
|
|
604
604
|
const disabled = this._restrictedTimes.includes(millis);
|
|
605
|
-
const label = millisToTimeString(millis, this._use24HourTime,
|
|
605
|
+
const label = millisToTimeString(millis, this._use24HourTime, this._allowSeconds) || '';
|
|
606
606
|
const value = { time: millis };
|
|
607
607
|
times.push({ label, value, disabled });
|
|
608
608
|
}
|
|
@@ -44,6 +44,8 @@ declare global {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
|
+
* @summary A time input component with integrated dropdown for selecting time values with support for various formats, masking, and validation options.
|
|
48
|
+
*
|
|
47
49
|
* @tag forge-time-picker
|
|
48
50
|
*/
|
|
49
51
|
export declare class TimePickerComponent extends BaseComponent implements ITimePickerComponent {
|
|
@@ -18,6 +18,8 @@ import { PopoverComponent } from '../popover/popover';
|
|
|
18
18
|
const template = '<template><slot></slot></template>';
|
|
19
19
|
const styles = ':host{display:block}:host([hidden]){display:none}';
|
|
20
20
|
/**
|
|
21
|
+
* @summary A time input component with integrated dropdown for selecting time values with support for various formats, masking, and validation options.
|
|
22
|
+
*
|
|
21
23
|
* @tag forge-time-picker
|
|
22
24
|
*/
|
|
23
25
|
let TimePickerComponent = class TimePickerComponent extends BaseComponent {
|
|
@@ -14,6 +14,16 @@ export interface IToastAdapter extends IBaseAdapter<IToastComponent> {
|
|
|
14
14
|
removeActionListener(listener: EventListener): void;
|
|
15
15
|
setDismissLabel(label: string): void;
|
|
16
16
|
setActionText(text: string): void;
|
|
17
|
+
addPointerEnterListener(listener: EventListener): void;
|
|
18
|
+
removePointerEnterListener(listener: EventListener): void;
|
|
19
|
+
addPointerLeaveListener(listener: EventListener): void;
|
|
20
|
+
removePointerLeaveListener(listener: EventListener): void;
|
|
21
|
+
addFocusInListener(listener: EventListener): void;
|
|
22
|
+
removeFocusInListener(listener: EventListener): void;
|
|
23
|
+
addFocusOutListener(listener: EventListener): void;
|
|
24
|
+
removeFocusOutListener(listener: EventListener): void;
|
|
25
|
+
addKeyboardListener(listener: EventListener): void;
|
|
26
|
+
removeKeyboardListener(listener: EventListener): void;
|
|
17
27
|
}
|
|
18
28
|
export declare class ToastAdapter extends BaseAdapter<IToastComponent> implements IToastAdapter {
|
|
19
29
|
private _overlayElement;
|
|
@@ -29,4 +39,14 @@ export declare class ToastAdapter extends BaseAdapter<IToastComponent> implement
|
|
|
29
39
|
removeActionListener(listener: EventListener): void;
|
|
30
40
|
setDismissLabel(label: string): void;
|
|
31
41
|
setActionText(text: string): void;
|
|
42
|
+
addPointerEnterListener(listener: EventListener): void;
|
|
43
|
+
removePointerEnterListener(listener: EventListener): void;
|
|
44
|
+
addPointerLeaveListener(listener: EventListener): void;
|
|
45
|
+
removePointerLeaveListener(listener: EventListener): void;
|
|
46
|
+
addFocusInListener(listener: EventListener): void;
|
|
47
|
+
removeFocusInListener(listener: EventListener): void;
|
|
48
|
+
addFocusOutListener(listener: EventListener): void;
|
|
49
|
+
removeFocusOutListener(listener: EventListener): void;
|
|
50
|
+
addKeyboardListener(listener: EventListener): void;
|
|
51
|
+
removeKeyboardListener(listener: EventListener): void;
|
|
32
52
|
}
|
|
@@ -46,4 +46,34 @@ export class ToastAdapter extends BaseAdapter {
|
|
|
46
46
|
this._actionButtonElement.setAttribute('hidden', '');
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
+
addPointerEnterListener(listener) {
|
|
50
|
+
this._component.addEventListener('pointerenter', listener);
|
|
51
|
+
}
|
|
52
|
+
removePointerEnterListener(listener) {
|
|
53
|
+
this._component.removeEventListener('pointerenter', listener);
|
|
54
|
+
}
|
|
55
|
+
addPointerLeaveListener(listener) {
|
|
56
|
+
this._component.addEventListener('pointerleave', listener);
|
|
57
|
+
}
|
|
58
|
+
removePointerLeaveListener(listener) {
|
|
59
|
+
this._component.removeEventListener('pointerleave', listener);
|
|
60
|
+
}
|
|
61
|
+
addFocusInListener(listener) {
|
|
62
|
+
this._component.addEventListener('focusin', listener);
|
|
63
|
+
}
|
|
64
|
+
removeFocusInListener(listener) {
|
|
65
|
+
this._component.removeEventListener('focusin', listener);
|
|
66
|
+
}
|
|
67
|
+
addFocusOutListener(listener) {
|
|
68
|
+
this._component.addEventListener('focusout', listener);
|
|
69
|
+
}
|
|
70
|
+
removeFocusOutListener(listener) {
|
|
71
|
+
this._component.removeEventListener('focusout', listener);
|
|
72
|
+
}
|
|
73
|
+
addKeyboardListener(listener) {
|
|
74
|
+
this._component.addEventListener('keydown', listener);
|
|
75
|
+
}
|
|
76
|
+
removeKeyboardListener(listener) {
|
|
77
|
+
this._component.removeEventListener('keydown', listener);
|
|
78
|
+
}
|
|
49
79
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright Tyler Technologies, Inc.
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { IDismissibleStackState, tryDismiss } from '../core/utils/dismissible-stack';
|
|
6
7
|
import { IToastAdapter } from './toast-adapter';
|
|
7
8
|
import { ToastPlacement, ToastTheme } from './toast-constants';
|
|
8
9
|
export interface IToastCore {
|
|
@@ -26,6 +27,13 @@ export declare class ToastCore implements IToastCore {
|
|
|
26
27
|
private _hideTimeout;
|
|
27
28
|
private _actionListener;
|
|
28
29
|
private _closeListener;
|
|
30
|
+
private _isHovered;
|
|
31
|
+
private _isFocused;
|
|
32
|
+
private _pointerEnterListener;
|
|
33
|
+
private _pointerLeaveListener;
|
|
34
|
+
private _focusInListener;
|
|
35
|
+
private _focusOutListener;
|
|
36
|
+
private _keyboardListener;
|
|
29
37
|
constructor(_adapter: IToastAdapter);
|
|
30
38
|
initialize(): void;
|
|
31
39
|
show(): void;
|
|
@@ -34,6 +42,15 @@ export declare class ToastCore implements IToastCore {
|
|
|
34
42
|
}): Promise<void>;
|
|
35
43
|
private _onAction;
|
|
36
44
|
private _onClose;
|
|
45
|
+
private _handlePointerEnter;
|
|
46
|
+
private _handlePointerLeave;
|
|
47
|
+
private _handleFocusIn;
|
|
48
|
+
private _handleFocusOut;
|
|
49
|
+
private _handleKeyboard;
|
|
50
|
+
private _updateTimerState;
|
|
51
|
+
private _pauseTimer;
|
|
52
|
+
private _resumeTimer;
|
|
53
|
+
[tryDismiss](state?: IDismissibleStackState): boolean;
|
|
37
54
|
get open(): boolean;
|
|
38
55
|
set open(value: boolean);
|
|
39
56
|
get duration(): number;
|
package/esm/toast/toast-core.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright Tyler Technologies, Inc.
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { DismissibleStack, tryDismiss } from '../core/utils/dismissible-stack';
|
|
6
7
|
import { TOAST_CONSTANTS } from './toast-constants';
|
|
7
8
|
export class ToastCore {
|
|
8
9
|
constructor(_adapter) {
|
|
@@ -14,15 +15,28 @@ export class ToastCore {
|
|
|
14
15
|
this._theme = TOAST_CONSTANTS.defaults.THEME;
|
|
15
16
|
this._actionListener = this._onAction.bind(this);
|
|
16
17
|
this._closeListener = this._onClose.bind(this);
|
|
18
|
+
this._isHovered = false;
|
|
19
|
+
this._isFocused = false;
|
|
20
|
+
this._pointerEnterListener = this._handlePointerEnter.bind(this);
|
|
21
|
+
this._pointerLeaveListener = this._handlePointerLeave.bind(this);
|
|
22
|
+
this._focusInListener = this._handleFocusIn.bind(this);
|
|
23
|
+
this._focusOutListener = this._handleFocusOut.bind(this);
|
|
24
|
+
this._keyboardListener = this._handleKeyboard.bind(this);
|
|
17
25
|
}
|
|
18
26
|
initialize() {
|
|
19
27
|
this._adapter.tryApplyGlobalConfiguration(['duration', 'placement', 'dismissible']);
|
|
28
|
+
this._adapter.addPointerEnterListener(this._pointerEnterListener);
|
|
29
|
+
this._adapter.addPointerLeaveListener(this._pointerLeaveListener);
|
|
30
|
+
this._adapter.addFocusInListener(this._focusInListener);
|
|
31
|
+
this._adapter.addFocusOutListener(this._focusOutListener);
|
|
32
|
+
this._adapter.addKeyboardListener(this._keyboardListener);
|
|
20
33
|
if (this._open) {
|
|
21
34
|
this.show();
|
|
22
35
|
}
|
|
23
36
|
}
|
|
24
37
|
show() {
|
|
25
38
|
this._adapter.show();
|
|
39
|
+
DismissibleStack.instance.add(this._adapter.hostElement);
|
|
26
40
|
if (isFinite(this._duration) && this._duration > 0) {
|
|
27
41
|
/* c8 ignore next 3 */
|
|
28
42
|
if (this._hideTimeout) {
|
|
@@ -38,6 +52,9 @@ export class ToastCore {
|
|
|
38
52
|
window.clearTimeout(this._hideTimeout);
|
|
39
53
|
this._hideTimeout = undefined;
|
|
40
54
|
}
|
|
55
|
+
this._isHovered = false;
|
|
56
|
+
this._isFocused = false;
|
|
57
|
+
DismissibleStack.instance.remove(this._adapter.hostElement);
|
|
41
58
|
await this._adapter.hide();
|
|
42
59
|
this._open = false;
|
|
43
60
|
this._adapter.toggleHostAttribute(TOAST_CONSTANTS.attributes.OPEN, this._open);
|
|
@@ -52,6 +69,55 @@ export class ToastCore {
|
|
|
52
69
|
_onClose(_evt) {
|
|
53
70
|
this.hide();
|
|
54
71
|
}
|
|
72
|
+
_handlePointerEnter() {
|
|
73
|
+
this._isHovered = true;
|
|
74
|
+
this._updateTimerState();
|
|
75
|
+
}
|
|
76
|
+
_handlePointerLeave() {
|
|
77
|
+
this._isHovered = false;
|
|
78
|
+
this._updateTimerState();
|
|
79
|
+
}
|
|
80
|
+
_handleFocusIn() {
|
|
81
|
+
this._isFocused = true;
|
|
82
|
+
this._updateTimerState();
|
|
83
|
+
}
|
|
84
|
+
_handleFocusOut() {
|
|
85
|
+
this._isFocused = false;
|
|
86
|
+
this._updateTimerState();
|
|
87
|
+
}
|
|
88
|
+
_handleKeyboard(event) {
|
|
89
|
+
if (event.key === 'Escape' && this._open) {
|
|
90
|
+
event.stopPropagation();
|
|
91
|
+
DismissibleStack.instance.dismiss(this._adapter.hostElement, { reason: 'escape' });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
_updateTimerState() {
|
|
95
|
+
const shouldPause = this._isHovered || this._isFocused;
|
|
96
|
+
if (shouldPause && this._hideTimeout) {
|
|
97
|
+
this._pauseTimer();
|
|
98
|
+
}
|
|
99
|
+
else if (!shouldPause && !this._hideTimeout) {
|
|
100
|
+
this._resumeTimer();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
_pauseTimer() {
|
|
104
|
+
if (this._hideTimeout) {
|
|
105
|
+
window.clearTimeout(this._hideTimeout);
|
|
106
|
+
this._hideTimeout = undefined;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
_resumeTimer() {
|
|
110
|
+
if (isFinite(this._duration) && this._duration > 0) {
|
|
111
|
+
this._hideTimeout = window.setTimeout(() => this.hide(), this._duration);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
[tryDismiss](state) {
|
|
115
|
+
if (state?.reason === 'escape') {
|
|
116
|
+
this.hide();
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
55
121
|
get open() {
|
|
56
122
|
return this._open;
|
|
57
123
|
}
|
package/esm/toast/toast.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { BaseComponent } from '../core/base/base-component';
|
|
7
7
|
import { IWithDefaultAria } from '../core/mixins/internals/with-default-aria';
|
|
8
8
|
import { IWithElementInternals } from '../core/mixins/internals/with-element-internals';
|
|
9
|
+
import { IDismissible, IDismissibleStackState, tryDismiss } from '../core/utils/dismissible-stack';
|
|
9
10
|
import { IIconProperties } from '../icon';
|
|
10
11
|
import { ToastPlacement, ToastTheme } from './toast-constants';
|
|
11
12
|
export interface IToastProperties {
|
|
@@ -24,7 +25,7 @@ export interface IToastPresentConfiguration extends Partial<IToastProperties> {
|
|
|
24
25
|
icon?: Partial<IIconProperties>;
|
|
25
26
|
topLayer?: boolean;
|
|
26
27
|
}
|
|
27
|
-
export interface IToastComponent extends IToastProperties, IWithElementInternals, IWithDefaultAria {
|
|
28
|
+
export interface IToastComponent extends IToastProperties, IWithElementInternals, IWithDefaultAria, IDismissible {
|
|
28
29
|
show(): void;
|
|
29
30
|
hide(): Promise<void>;
|
|
30
31
|
}
|
|
@@ -41,7 +42,7 @@ declare const ToastComponent_base: import("../constants").AbstractConstructor<im
|
|
|
41
42
|
/**
|
|
42
43
|
* @tag forge-toast
|
|
43
44
|
*
|
|
44
|
-
* @summary Toasts are non-modal notifications that appear in response to user interactions.
|
|
45
|
+
* @summary Toasts are non-modal notifications that appear in response to user interactions. Use toasts to provide brief messages about app processes at the bottom or top of the screen. They automatically disappear after a timeout, but can also include an action button and a dismiss button.
|
|
45
46
|
*
|
|
46
47
|
* @dependency forge-overlay
|
|
47
48
|
* @dependency forge-button
|
|
@@ -117,6 +118,12 @@ export declare class ToastComponent extends ToastComponent_base implements IToas
|
|
|
117
118
|
* @returns A promise that resolves when the toast animation completes.
|
|
118
119
|
*/
|
|
119
120
|
hide(): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Attempts to dismiss the toast.
|
|
123
|
+
* @param state The dismiss state.
|
|
124
|
+
* @returns True if the toast was dismissed, false otherwise.
|
|
125
|
+
*/
|
|
126
|
+
[tryDismiss](state?: IDismissibleStackState): boolean;
|
|
120
127
|
/**
|
|
121
128
|
* Presents a toast notification.
|
|
122
129
|
* @param config The configuration for the toast.
|
package/esm/toast/toast.js
CHANGED
|
@@ -11,6 +11,7 @@ import { setDefaultAria } from '../constants';
|
|
|
11
11
|
import { BaseComponent } from '../core/base/base-component';
|
|
12
12
|
import { WithDefaultAria } from '../core/mixins/internals/with-default-aria';
|
|
13
13
|
import { WithElementInternals } from '../core/mixins/internals/with-element-internals';
|
|
14
|
+
import { tryDismiss } from '../core/utils/dismissible-stack';
|
|
14
15
|
import { DialogComponent, dialogStack } from '../dialog';
|
|
15
16
|
import { IconComponent, IconRegistry } from '../icon';
|
|
16
17
|
import { IconButtonComponent } from '../icon-button';
|
|
@@ -23,7 +24,7 @@ const styles = '@keyframes slidein{from{transform:translateY(var(--_toast-slide-
|
|
|
23
24
|
/**
|
|
24
25
|
* @tag forge-toast
|
|
25
26
|
*
|
|
26
|
-
* @summary Toasts are non-modal notifications that appear in response to user interactions.
|
|
27
|
+
* @summary Toasts are non-modal notifications that appear in response to user interactions. Use toasts to provide brief messages about app processes at the bottom or top of the screen. They automatically disappear after a timeout, but can also include an action button and a dismiss button.
|
|
27
28
|
*
|
|
28
29
|
* @dependency forge-overlay
|
|
29
30
|
* @dependency forge-button
|
|
@@ -138,6 +139,14 @@ let ToastComponent = class ToastComponent extends WithElementInternals(WithDefau
|
|
|
138
139
|
hide() {
|
|
139
140
|
return this._core.hide();
|
|
140
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Attempts to dismiss the toast.
|
|
144
|
+
* @param state The dismiss state.
|
|
145
|
+
* @returns True if the toast was dismissed, false otherwise.
|
|
146
|
+
*/
|
|
147
|
+
[tryDismiss](state) {
|
|
148
|
+
return this._core[tryDismiss](state);
|
|
149
|
+
}
|
|
141
150
|
/**
|
|
142
151
|
* Presents a toast notification.
|
|
143
152
|
* @param config The configuration for the toast.
|
package/esm/toolbar/toolbar.d.ts
CHANGED
|
@@ -15,9 +15,7 @@ declare global {
|
|
|
15
15
|
/**
|
|
16
16
|
* @tag forge-toolbar
|
|
17
17
|
*
|
|
18
|
-
* @summary
|
|
19
|
-
* Toolbars allow you to place titles and actions within a container and align them to the start, center, or end of the toolbar.
|
|
20
|
-
* This component is useful as headers and footers within pages, dialogs, sections... etc. to ensure consistent layout and alignment.
|
|
18
|
+
* @summary Toolbars allow you to place titles and actions within a container and align them to the start, center, or end of the toolbar. This component is useful as headers and footers within pages, dialogs, sections... etc. to ensure consistent layout and alignment.
|
|
21
19
|
*
|
|
22
20
|
* @property {boolean} [inverted=false] - Controls whether a bottom divider (default) or top divider (true) is used.
|
|
23
21
|
*
|
package/esm/toolbar/toolbar.js
CHANGED
|
@@ -12,9 +12,7 @@ const styles = ':host{display:block}:host([hidden]){display:none}.forge-toolbar{
|
|
|
12
12
|
/**
|
|
13
13
|
* @tag forge-toolbar
|
|
14
14
|
*
|
|
15
|
-
* @summary
|
|
16
|
-
* Toolbars allow you to place titles and actions within a container and align them to the start, center, or end of the toolbar.
|
|
17
|
-
* This component is useful as headers and footers within pages, dialogs, sections... etc. to ensure consistent layout and alignment.
|
|
15
|
+
* @summary Toolbars allow you to place titles and actions within a container and align them to the start, center, or end of the toolbar. This component is useful as headers and footers within pages, dialogs, sections... etc. to ensure consistent layout and alignment.
|
|
18
16
|
*
|
|
19
17
|
* @property {boolean} [inverted=false] - Controls whether a bottom divider (default) or top divider (true) is used.
|
|
20
18
|
*
|
|
@@ -17,6 +17,9 @@ export interface ITooltipAdapter extends IBaseAdapter<ITooltipComponent> {
|
|
|
17
17
|
removeAnchorListener(type: string, listener: EventListener): void;
|
|
18
18
|
addLightDismissListener(listener: EventListener): void;
|
|
19
19
|
removeLightDismissListener(listener: EventListener): void;
|
|
20
|
+
addTooltipListener(type: string, listener: EventListener, opts?: AddEventListenerOptions): void;
|
|
21
|
+
removeTooltipListener(type: string, listener: EventListener): void;
|
|
22
|
+
isKeyboardFocused(): boolean;
|
|
20
23
|
show(): void;
|
|
21
24
|
hide(): void;
|
|
22
25
|
}
|
|
@@ -41,6 +44,9 @@ export declare class TooltipAdapter extends BaseAdapter<ITooltipComponent> imple
|
|
|
41
44
|
removeAnchorListener(type: string, listener: EventListener): void;
|
|
42
45
|
addLightDismissListener(listener: EventListener): void;
|
|
43
46
|
removeLightDismissListener(listener: EventListener): void;
|
|
47
|
+
addTooltipListener(type: string, listener: EventListener, opts?: AddEventListenerOptions): void;
|
|
48
|
+
removeTooltipListener(type: string, listener: EventListener): void;
|
|
49
|
+
isKeyboardFocused(): boolean;
|
|
44
50
|
show(): void;
|
|
45
51
|
hide(): void;
|
|
46
52
|
/**
|
|
@@ -80,6 +80,15 @@ export class TooltipAdapter extends BaseAdapter {
|
|
|
80
80
|
removeLightDismissListener(listener) {
|
|
81
81
|
this._overlayElement?.removeEventListener(OVERLAY_CONSTANTS.events.LIGHT_DISMISS, listener);
|
|
82
82
|
}
|
|
83
|
+
addTooltipListener(type, listener, opts) {
|
|
84
|
+
this.hostElement?.addEventListener(type, listener, opts);
|
|
85
|
+
}
|
|
86
|
+
removeTooltipListener(type, listener) {
|
|
87
|
+
this.hostElement?.removeEventListener(type, listener);
|
|
88
|
+
}
|
|
89
|
+
isKeyboardFocused() {
|
|
90
|
+
return !!this._anchorElement?.matches(':focus-visible');
|
|
91
|
+
}
|
|
83
92
|
show() {
|
|
84
93
|
// Tooltips are shown above all content via <forge-overlay>
|
|
85
94
|
// We do this by dynamically creating an overlay element and appending it to the shadow root
|