@tylertech/forge 3.10.4 → 3.11.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 +343 -141
- package/dist/app-bar/forge-app-bar.css +11 -5
- package/dist/button/forge-button.css +12 -6
- package/dist/checkbox/forge-checkbox.css +21 -17
- package/dist/chips/forge-chips.css +10 -4
- package/dist/field/forge-field.css +7 -5
- package/dist/floating-action-button/forge-floating-action-button.css +10 -6
- package/dist/forge.css +6 -1
- package/dist/icon-button/forge-icon-button.css +10 -4
- package/dist/lib.js +22 -22
- package/dist/lib.js.map +4 -4
- package/dist/list/forge-list.css +57 -3
- package/dist/radio/forge-radio.css +20 -12
- package/dist/skip-link/forge-skip-link.css +36 -32
- package/dist/switch/forge-switch.css +7 -5
- package/dist/table/forge-table.css +6 -1
- package/dist/vscode.html-custom-data.json +53 -43
- 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.d.ts +2 -0
- package/esm/autocomplete/autocomplete.js +2 -0
- 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/button/base/base-button-adapter.js +2 -2
- package/esm/button-area/button-area-adapter.js +2 -2
- 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.js +2 -2
- package/esm/chips/chip/chip.d.ts +2 -0
- package/esm/chips/chip/chip.js +2 -0
- package/esm/color-picker/color-picker.d.ts +2 -0
- package/esm/color-picker/color-picker.js +3 -1
- package/esm/core/mixins/interactions/moveable/with-moveable.js +5 -7
- package/esm/core/utils/a11y-utils.js +17 -0
- package/esm/core/utils/utils.d.ts +16 -0
- package/esm/core/utils/utils.js +75 -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-adapter.d.ts +6 -0
- package/esm/dialog/dialog-adapter.js +16 -0
- package/esm/dialog/dialog-core.js +4 -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-adapter.js +1 -1
- package/esm/expansion-panel/expansion-panel-core.js +3 -7
- package/esm/field/field-adapter.js +2 -2
- package/esm/field/field-core.d.ts +3 -3
- 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 +52 -25
- package/esm/focus-indicator/focus-indicator.js +137 -61
- package/esm/focus-indicator/index.d.ts +0 -2
- package/esm/focus-indicator/index.js +0 -2
- package/esm/icon-button/icon-button.d.ts +2 -0
- package/esm/icon-button/icon-button.js +2 -0
- package/esm/keyboard-shortcut/keyboard-shortcut.d.ts +2 -0
- package/esm/keyboard-shortcut/keyboard-shortcut.js +2 -0
- package/esm/list/list/list.js +1 -1
- 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 +6 -0
- package/esm/list-dropdown/list-dropdown-constants.js +6 -1
- package/esm/list-dropdown/list-dropdown-utils.js +28 -1
- package/esm/menu/menu-core.js +2 -2
- package/esm/menu/menu.d.ts +2 -0
- package/esm/menu/menu.js +2 -0
- package/esm/page-state/page-state.d.ts +2 -1
- package/esm/page-state/page-state.js +2 -1
- package/esm/paginator/paginator.d.ts +2 -0
- package/esm/paginator/paginator.js +2 -0
- package/esm/popover/popover.js +1 -1
- package/esm/profile-card/profile-card.d.ts +2 -0
- package/esm/profile-card/profile-card.js +2 -0
- 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 +22 -1
- package/esm/select/select-dropdown/select-dropdown.d.ts +2 -0
- package/esm/select/select-dropdown/select-dropdown.js +2 -0
- package/esm/split-button/split-button.js +1 -1
- 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/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-utils.js +3 -0
- package/esm/table/table.d.ts +2 -0
- 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/time-picker/time-picker.d.ts +2 -0
- package/esm/time-picker/time-picker.js +2 -0
- package/esm/toast/toast-core.js +1 -0
- 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.js +1 -1
- 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/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
|
@@ -148,10 +148,8 @@ export class ExpansionPanelCore {
|
|
|
148
148
|
if (this._trigger !== value) {
|
|
149
149
|
this._clearTrigger();
|
|
150
150
|
this._trigger = value;
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
165
|
-
this._syncTrigger();
|
|
166
|
-
}
|
|
162
|
+
this._syncTrigger();
|
|
167
163
|
}
|
|
168
164
|
}
|
|
169
165
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { addClass, getShadowElement, removeClass, toggleClass } from '@tylertech/forge-core';
|
|
7
7
|
import { BaseAdapter } from '../core/base';
|
|
8
|
-
import {
|
|
8
|
+
import { FOCUS_INDICATOR_TAG_NAME } from '../focus-indicator';
|
|
9
9
|
import { FIELD_CONSTANTS } from './field-constants';
|
|
10
10
|
export class FieldAdapter extends BaseAdapter {
|
|
11
11
|
get focusIndicator() {
|
|
@@ -22,7 +22,7 @@ export class FieldAdapter extends BaseAdapter {
|
|
|
22
22
|
this._labelElement = getShadowElement(component, FIELD_CONSTANTS.selectors.LABEL);
|
|
23
23
|
this._labelSlotElement = getShadowElement(component, FIELD_CONSTANTS.selectors.LABEL_SLOT);
|
|
24
24
|
this._popoverIconElement = getShadowElement(component, FIELD_CONSTANTS.selectors.POPOVER_ICON);
|
|
25
|
-
this._focusIndicatorElement = getShadowElement(component,
|
|
25
|
+
this._focusIndicatorElement = getShadowElement(component, FOCUS_INDICATOR_TAG_NAME);
|
|
26
26
|
}
|
|
27
27
|
addRootListener(name, listener) {
|
|
28
28
|
this._rootElement.addEventListener(name, listener);
|
|
@@ -23,7 +23,7 @@ export interface IFieldCore {
|
|
|
23
23
|
popoverExpanded: boolean;
|
|
24
24
|
multiline: boolean;
|
|
25
25
|
supportTextInset: FieldSupportTextInset;
|
|
26
|
-
focusIndicatorTargetElement: HTMLElement;
|
|
26
|
+
focusIndicatorTargetElement: HTMLElement | undefined;
|
|
27
27
|
focusIndicatorFocusMode: FocusIndicatorFocusMode;
|
|
28
28
|
focusIndicatorAllowFocus: boolean;
|
|
29
29
|
initialize(): void;
|
|
@@ -88,8 +88,8 @@ export declare class FieldCore implements IFieldCore {
|
|
|
88
88
|
set multiline(value: boolean);
|
|
89
89
|
get supportTextInset(): FieldSupportTextInset;
|
|
90
90
|
set supportTextInset(value: FieldSupportTextInset);
|
|
91
|
-
get focusIndicatorTargetElement(): HTMLElement;
|
|
92
|
-
set focusIndicatorTargetElement(value: HTMLElement);
|
|
91
|
+
get focusIndicatorTargetElement(): HTMLElement | undefined;
|
|
92
|
+
set focusIndicatorTargetElement(value: HTMLElement | undefined);
|
|
93
93
|
get focusIndicatorFocusMode(): FocusIndicatorFocusMode;
|
|
94
94
|
set focusIndicatorFocusMode(value: FocusIndicatorFocusMode);
|
|
95
95
|
get focusIndicatorAllowFocus(): boolean;
|
|
@@ -4,17 +4,7 @@
|
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
export declare const FOCUS_INDICATOR_CONSTANTS: {
|
|
7
|
+
/** @deprecated use `FOCUS_INDICATOR_TAG_NAME` instead. */
|
|
7
8
|
elementName: "forge-focus-indicator";
|
|
8
|
-
attributes: {
|
|
9
|
-
TARGET: string;
|
|
10
|
-
ACTIVE: string;
|
|
11
|
-
INWARD: string;
|
|
12
|
-
CIRCULAR: string;
|
|
13
|
-
ALLOW_FOCUS: string;
|
|
14
|
-
FOCUS_MODE: string;
|
|
15
|
-
};
|
|
16
|
-
defaults: {
|
|
17
|
-
FOCUS_MODE: FocusIndicatorFocusMode;
|
|
18
|
-
};
|
|
19
9
|
};
|
|
20
10
|
export type FocusIndicatorFocusMode = 'focus' | 'focusin';
|
|
@@ -5,22 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { COMPONENT_NAME_PREFIX } from '../constants';
|
|
7
7
|
const elementName = `${COMPONENT_NAME_PREFIX}focus-indicator`;
|
|
8
|
-
const observedAttributes = {
|
|
9
|
-
TARGET: 'target',
|
|
10
|
-
ACTIVE: 'active',
|
|
11
|
-
INWARD: 'inward',
|
|
12
|
-
CIRCULAR: 'circular',
|
|
13
|
-
ALLOW_FOCUS: 'allow-focus',
|
|
14
|
-
FOCUS_MODE: 'focus-mode'
|
|
15
|
-
};
|
|
16
|
-
const attributes = {
|
|
17
|
-
...observedAttributes
|
|
18
|
-
};
|
|
19
|
-
const defaults = {
|
|
20
|
-
FOCUS_MODE: 'focusin'
|
|
21
|
-
};
|
|
22
8
|
export const FOCUS_INDICATOR_CONSTANTS = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
defaults
|
|
9
|
+
/** @deprecated use `FOCUS_INDICATOR_TAG_NAME` instead. */
|
|
10
|
+
elementName
|
|
26
11
|
};
|
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
* Copyright Tyler Technologies, Inc.
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
|
|
7
|
+
import { nothing, PropertyValues } from 'lit';
|
|
8
|
+
import { IBaseComponent } from '../core/base/base-component';
|
|
9
|
+
import { BaseLitElement } from '../core/base/base-lit-element';
|
|
7
10
|
import { FocusIndicatorFocusMode } from './focus-indicator-constants';
|
|
8
11
|
export interface IFocusIndicatorComponent extends IBaseComponent {
|
|
9
|
-
targetElement: HTMLElement;
|
|
12
|
+
targetElement: HTMLElement | undefined;
|
|
10
13
|
target: string | null;
|
|
11
14
|
active: boolean;
|
|
12
15
|
inward: boolean;
|
|
@@ -19,26 +22,12 @@ declare global {
|
|
|
19
22
|
'forge-focus-indicator': IFocusIndicatorComponent;
|
|
20
23
|
}
|
|
21
24
|
}
|
|
25
|
+
export declare const FOCUS_INDICATOR_TAG_NAME: keyof HTMLElementTagNameMap;
|
|
22
26
|
/**
|
|
23
27
|
* @tag forge-focus-indicator
|
|
24
28
|
*
|
|
25
29
|
* @summary Renders a focus indicator when an attached element matches `:focus-visible`.
|
|
26
30
|
*
|
|
27
|
-
* @property {HTMLElement} targetElement - The element to attach the focus indicator to.
|
|
28
|
-
* @property {string} target - The id of the element to attach the focus indicator to.
|
|
29
|
-
* @property {boolean} [active=false] - Controls whether the indicator is active.
|
|
30
|
-
* @property {boolean} [inward=false] - Controls whether the indicator renders inward.
|
|
31
|
-
* @property {boolean} [circular=false] - Controls whether the indicator renders circular.
|
|
32
|
-
* @property {boolean} [allowFocus=false] - Controls whether the indicator renders when the target element matches `:focus` instead of `:focus-visible`.
|
|
33
|
-
* @property {FocusIndicatorFocusMode} [focusMode="focusin"] - The focus mode to use.
|
|
34
|
-
*
|
|
35
|
-
* @attribute {string} target - The id of the element to attach the focus indicator to.
|
|
36
|
-
* @attribute {boolean} [active=false] - Controls whether the indicator is active.
|
|
37
|
-
* @attribute {boolean} [inward=false] - Controls whether the indicator renders inward.
|
|
38
|
-
* @attribute {boolean} [circular=false] - Controls whether the indicator renders circular.
|
|
39
|
-
* @attribute {boolean} [allow-focus=false] - Controls whether the indicator renders when the target element matches `:focus` instead of `:focus-visible`.
|
|
40
|
-
* @attribute {FocusIndicatorFocusMode} [focus-mode="focusin"] - The focus mode to use.
|
|
41
|
-
*
|
|
42
31
|
* @cssproperty --forge-focus-indicator-display - The `display` style. Defaults to `flex`.
|
|
43
32
|
* @cssproperty --forge-focus-indicator-width - The width of the focus indicator when resting.
|
|
44
33
|
* @cssproperty --forge-focus-indicator-active-width - The width of the focus indicator when active. When animating this is the max extent.
|
|
@@ -62,18 +51,56 @@ declare global {
|
|
|
62
51
|
* @cssclass forge-focus-indicator--active - Forces the focus indicator to be visible.
|
|
63
52
|
* @cssclass forge-focus-indicator--inward - Renders the focus inside the target element.
|
|
64
53
|
*/
|
|
65
|
-
export declare class FocusIndicatorComponent extends
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
54
|
+
export declare class FocusIndicatorComponent extends BaseLitElement implements IFocusIndicatorComponent {
|
|
55
|
+
#private;
|
|
56
|
+
static styles: import("lit").CSSResult;
|
|
57
|
+
/** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
|
|
58
|
+
static [CUSTOM_ELEMENT_NAME_PROPERTY]: keyof HTMLElementTagNameMap;
|
|
59
|
+
/**
|
|
60
|
+
* The element to attach the focus indicator to.
|
|
61
|
+
* @default undefined
|
|
62
|
+
*/
|
|
63
|
+
set targetElement(value: HTMLElement | undefined);
|
|
64
|
+
get targetElement(): HTMLElement | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* The id of the element to attach the focus indicator to.
|
|
67
|
+
* @default null
|
|
68
|
+
* @attribute
|
|
69
|
+
*/
|
|
73
70
|
target: string | null;
|
|
71
|
+
/**
|
|
72
|
+
* Controls whether the indicator is active.
|
|
73
|
+
* @default false
|
|
74
|
+
* @attribute
|
|
75
|
+
*/
|
|
74
76
|
active: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Controls whether the indicator renders inward.
|
|
79
|
+
* @default false
|
|
80
|
+
* @attribute
|
|
81
|
+
*/
|
|
75
82
|
inward: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Controls whether the indicator renders circular.
|
|
85
|
+
* @default false
|
|
86
|
+
* @attribute
|
|
87
|
+
*/
|
|
76
88
|
circular: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Controls whether the indicator renders when the target element matches `:focus` instead of `:focus-visible`.
|
|
91
|
+
* @default false
|
|
92
|
+
* @attribute allow-focus
|
|
93
|
+
*/
|
|
77
94
|
allowFocus: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* The focus mode to use. Valid values are `focusin` (default) and `focus`.
|
|
97
|
+
* @default 'focusin'
|
|
98
|
+
* @attribute focus-mode
|
|
99
|
+
*/
|
|
78
100
|
focusMode: FocusIndicatorFocusMode;
|
|
101
|
+
constructor();
|
|
102
|
+
connectedCallback(): void;
|
|
103
|
+
disconnectedCallback(): void;
|
|
104
|
+
willUpdate(changedProperties: PropertyValues<this>): void;
|
|
105
|
+
render(): typeof nothing;
|
|
79
106
|
}
|
|
@@ -3,34 +3,20 @@
|
|
|
3
3
|
* Copyright Tyler Technologies, Inc.
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
const styles = ':host{--_focus-indicator-display:var(--forge-focus-indicator-display, flex);--_focus-indicator-width:var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));--_focus-indicator-active-width:var(--forge-focus-indicator-active-width, 6px);--_focus-indicator-color:var(--forge-focus-indicator-color, var(--forge-theme-primary, #3f51b5));--_focus-indicator-shape:var(--forge-focus-indicator-shape, calc(var(--forge-shape-extra-small, 1px) * var(--forge-shape-factor, 1)));--_focus-indicator-duration:var(--forge-focus-indicator-duration, var(--forge-animation-duration-long4, 600ms));--_focus-indicator-easing:var(--forge-focus-indicator-easing, var(--forge-animation-easing-emphasized, cubic-bezier(0.2, 0, 0, 1)));--_focus-indicator-shape-start-start:var(--forge-focus-indicator-shape-start-start, var(--_focus-indicator-shape));--_focus-indicator-shape-start-end:var(--forge-focus-indicator-shape-start-end, var(--_focus-indicator-shape));--_focus-indicator-shape-end-end:var(--forge-focus-indicator-shape-end-end, var(--_focus-indicator-shape));--_focus-indicator-shape-end-start:var(--forge-focus-indicator-shape-end-start, var(--_focus-indicator-shape));--_focus-indicator-outward-offset:var(--forge-focus-indicator-outward-offset, var(--forge-spacing-xxsmall, 4px));--_focus-indicator-inward-offset:var(--forge-focus-indicator-inward-offset, 0px);--_focus-indicator-offset-block:var(--forge-focus-indicator-offset-block, 0);--_focus-indicator-offset-inline:var(--forge-focus-indicator-offset-inline, 0)}:host{animation-delay:0s,calc(var(--_focus-indicator-duration) * .25);animation-duration:calc(var(--_focus-indicator-duration) * .25),calc(var(--_focus-indicator-duration) * .75);animation-timing-function:var(--_focus-indicator-easing);box-sizing:border-box;color:var(--_focus-indicator-color);display:none;pointer-events:none;position:absolute;margin-block:var(--_focus-indicator-offset-block);margin-inline:var(--_focus-indicator-offset-inline)}:host([hidden]){display:none}:host([active]){display:var(--_focus-indicator-display)}:host(:not([inward])){animation-name:forge-focus-indicator-outward-grow,forge-focus-indicator-outward-shrink;border-end-end-radius:calc(var(--_focus-indicator-shape-end-end) + var(--_focus-indicator-outward-offset));border-end-start-radius:calc(var(--_focus-indicator-shape-end-start) + var(--_focus-indicator-outward-offset));border-start-end-radius:calc(var(--_focus-indicator-shape-start-end) + var(--_focus-indicator-outward-offset));border-start-start-radius:calc(var(--_focus-indicator-shape-start-start) + var(--_focus-indicator-outward-offset));inset:calc(-1 * var(--_focus-indicator-outward-offset));outline:var(--_focus-indicator-width) solid currentColor}:host([inward]){animation-name:forge-focus-indicator-inward-grow,forge-focus-indicator-inward-shrink;border-end-end-radius:calc(var(--_focus-indicator-shape-end-end) - var(--_focus-indicator-inward-offset));border-end-start-radius:calc(var(--_focus-indicator-shape-end-start) - var(--_focus-indicator-inward-offset));border-start-end-radius:calc(var(--_focus-indicator-shape-start-end) - var(--_focus-indicator-inward-offset));border-start-start-radius:calc(var(--_focus-indicator-shape-start-start) - var(--_focus-indicator-inward-offset));border:var(--_focus-indicator-width) solid currentColor;inset:var(--_focus-indicator-inward-offset)}:host([circular]){--_focus-indicator-shape:var(--forge-focus-indicator-shape, 50%)}@keyframes forge-focus-indicator-outward-grow{from{outline-width:0}to{outline-width:var(--_focus-indicator-active-width)}}@keyframes forge-focus-indicator-outward-shrink{from{outline-width:var(--_focus-indicator-active-width)}}@keyframes forge-focus-indicator-inward-grow{from{border-width:0}to{border-width:var(--_focus-indicator-active-width)}}@keyframes forge-focus-indicator-inward-shrink{from{border-width:var(--_focus-indicator-active-width)}}@media (prefers-reduced-motion){:host{animation:none}}';
|
|
6
|
+
var _FocusIndicatorComponent_instances, _FocusIndicatorComponent_targetElement, _FocusIndicatorComponent_internals, _FocusIndicatorComponent_detachTargetListeners, _FocusIndicatorComponent_attachTargetListeners, _FocusIndicatorComponent_handleTargetInteraction, _FocusIndicatorComponent_isActive, _FocusIndicatorComponent_handleTargetChange, _FocusIndicatorComponent_handleActiveChange, _a;
|
|
7
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from "tslib";
|
|
8
|
+
import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
|
|
9
|
+
import { nothing, unsafeCSS } from 'lit';
|
|
10
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
11
|
+
import { BaseLitElement } from '../core/base/base-lit-element';
|
|
12
|
+
import { locateTargetHeuristic, toggleState } from '../core/utils/utils';
|
|
13
|
+
const styles = ':host{--_focus-indicator-display:var(--forge-focus-indicator-display, flex);--_focus-indicator-width:var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));--_focus-indicator-active-width:var(--forge-focus-indicator-active-width, 6px);--_focus-indicator-color:var(--forge-focus-indicator-color, var(--forge-theme-primary, #3f51b5));--_focus-indicator-shape:var(--forge-focus-indicator-shape, calc(var(--forge-shape-extra-small, 1px) * var(--forge-shape-factor, 1)));--_focus-indicator-duration:var(--forge-focus-indicator-duration, var(--forge-animation-duration-long4, 600ms));--_focus-indicator-easing:var(--forge-focus-indicator-easing, var(--forge-animation-easing-emphasized, cubic-bezier(0.2, 0, 0, 1)));--_focus-indicator-shape-start-start:var(--forge-focus-indicator-shape-start-start, var(--_focus-indicator-shape));--_focus-indicator-shape-start-end:var(--forge-focus-indicator-shape-start-end, var(--_focus-indicator-shape));--_focus-indicator-shape-end-end:var(--forge-focus-indicator-shape-end-end, var(--_focus-indicator-shape));--_focus-indicator-shape-end-start:var(--forge-focus-indicator-shape-end-start, var(--_focus-indicator-shape));--_focus-indicator-outward-offset:var(--forge-focus-indicator-outward-offset, var(--forge-spacing-xxsmall, 4px));--_focus-indicator-inward-offset:var(--forge-focus-indicator-inward-offset, 0px);--_focus-indicator-offset-block:var(--forge-focus-indicator-offset-block, 0);--_focus-indicator-offset-inline:var(--forge-focus-indicator-offset-inline, 0)}:host{animation-delay:0s,calc(var(--_focus-indicator-duration) * .25);animation-duration:calc(var(--_focus-indicator-duration) * .25),calc(var(--_focus-indicator-duration) * .75);animation-timing-function:var(--_focus-indicator-easing);box-sizing:border-box;color:var(--_focus-indicator-color);display:none;pointer-events:none;position:absolute;margin-block:var(--_focus-indicator-offset-block);margin-inline:var(--_focus-indicator-offset-inline)}:host([hidden]){display:none}:host(:where(:state(active),[active])){display:var(--_focus-indicator-display)}:host(:not([inward])){animation-name:forge-focus-indicator-outward-grow,forge-focus-indicator-outward-shrink;border-end-end-radius:calc(var(--_focus-indicator-shape-end-end) + var(--_focus-indicator-outward-offset));border-end-start-radius:calc(var(--_focus-indicator-shape-end-start) + var(--_focus-indicator-outward-offset));border-start-end-radius:calc(var(--_focus-indicator-shape-start-end) + var(--_focus-indicator-outward-offset));border-start-start-radius:calc(var(--_focus-indicator-shape-start-start) + var(--_focus-indicator-outward-offset));inset:calc(-1 * var(--_focus-indicator-outward-offset));outline:var(--_focus-indicator-width) solid currentColor}:host([inward]){animation-name:forge-focus-indicator-inward-grow,forge-focus-indicator-inward-shrink;border-end-end-radius:calc(var(--_focus-indicator-shape-end-end) - var(--_focus-indicator-inward-offset));border-end-start-radius:calc(var(--_focus-indicator-shape-end-start) - var(--_focus-indicator-inward-offset));border-start-end-radius:calc(var(--_focus-indicator-shape-start-end) - var(--_focus-indicator-inward-offset));border-start-start-radius:calc(var(--_focus-indicator-shape-start-start) - var(--_focus-indicator-inward-offset));border:var(--_focus-indicator-width) solid currentColor;inset:var(--_focus-indicator-inward-offset)}:host([circular]){--_focus-indicator-shape:var(--forge-focus-indicator-shape, 50%)}@keyframes forge-focus-indicator-outward-grow{from{outline-width:0}to{outline-width:var(--_focus-indicator-active-width)}}@keyframes forge-focus-indicator-outward-shrink{from{outline-width:var(--_focus-indicator-active-width)}}@keyframes forge-focus-indicator-inward-grow{from{border-width:0}to{border-width:var(--_focus-indicator-active-width)}}@keyframes forge-focus-indicator-inward-shrink{from{border-width:var(--_focus-indicator-active-width)}}@media (prefers-reduced-motion){:host{animation:none}}';
|
|
14
|
+
export const FOCUS_INDICATOR_TAG_NAME = 'forge-focus-indicator';
|
|
14
15
|
/**
|
|
15
16
|
* @tag forge-focus-indicator
|
|
16
17
|
*
|
|
17
18
|
* @summary Renders a focus indicator when an attached element matches `:focus-visible`.
|
|
18
19
|
*
|
|
19
|
-
* @property {HTMLElement} targetElement - The element to attach the focus indicator to.
|
|
20
|
-
* @property {string} target - The id of the element to attach the focus indicator to.
|
|
21
|
-
* @property {boolean} [active=false] - Controls whether the indicator is active.
|
|
22
|
-
* @property {boolean} [inward=false] - Controls whether the indicator renders inward.
|
|
23
|
-
* @property {boolean} [circular=false] - Controls whether the indicator renders circular.
|
|
24
|
-
* @property {boolean} [allowFocus=false] - Controls whether the indicator renders when the target element matches `:focus` instead of `:focus-visible`.
|
|
25
|
-
* @property {FocusIndicatorFocusMode} [focusMode="focusin"] - The focus mode to use.
|
|
26
|
-
*
|
|
27
|
-
* @attribute {string} target - The id of the element to attach the focus indicator to.
|
|
28
|
-
* @attribute {boolean} [active=false] - Controls whether the indicator is active.
|
|
29
|
-
* @attribute {boolean} [inward=false] - Controls whether the indicator renders inward.
|
|
30
|
-
* @attribute {boolean} [circular=false] - Controls whether the indicator renders circular.
|
|
31
|
-
* @attribute {boolean} [allow-focus=false] - Controls whether the indicator renders when the target element matches `:focus` instead of `:focus-visible`.
|
|
32
|
-
* @attribute {FocusIndicatorFocusMode} [focus-mode="focusin"] - The focus mode to use.
|
|
33
|
-
*
|
|
34
20
|
* @cssproperty --forge-focus-indicator-display - The `display` style. Defaults to `flex`.
|
|
35
21
|
* @cssproperty --forge-focus-indicator-width - The width of the focus indicator when resting.
|
|
36
22
|
* @cssproperty --forge-focus-indicator-active-width - The width of the focus indicator when active. When animating this is the max extent.
|
|
@@ -54,68 +40,158 @@ const styles = ':host{--_focus-indicator-display:var(--forge-focus-indicator-dis
|
|
|
54
40
|
* @cssclass forge-focus-indicator--active - Forces the focus indicator to be visible.
|
|
55
41
|
* @cssclass forge-focus-indicator--inward - Renders the focus inside the target element.
|
|
56
42
|
*/
|
|
57
|
-
let FocusIndicatorComponent = class FocusIndicatorComponent extends
|
|
58
|
-
|
|
59
|
-
|
|
43
|
+
let FocusIndicatorComponent = class FocusIndicatorComponent extends BaseLitElement {
|
|
44
|
+
/**
|
|
45
|
+
* The element to attach the focus indicator to.
|
|
46
|
+
* @default undefined
|
|
47
|
+
*/
|
|
48
|
+
set targetElement(value) {
|
|
49
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_detachTargetListeners).call(this);
|
|
50
|
+
__classPrivateFieldSet(this, _FocusIndicatorComponent_targetElement, value, "f");
|
|
51
|
+
if (this.isConnected) {
|
|
52
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_attachTargetListeners).call(this);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
get targetElement() {
|
|
56
|
+
return __classPrivateFieldGet(this, _FocusIndicatorComponent_targetElement, "f");
|
|
60
57
|
}
|
|
61
58
|
constructor() {
|
|
62
59
|
super();
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
_FocusIndicatorComponent_instances.add(this);
|
|
61
|
+
/**
|
|
62
|
+
* The id of the element to attach the focus indicator to.
|
|
63
|
+
* @default null
|
|
64
|
+
* @attribute
|
|
65
|
+
*/
|
|
66
|
+
this.target = null;
|
|
67
|
+
/**
|
|
68
|
+
* Controls whether the indicator is active.
|
|
69
|
+
* @default false
|
|
70
|
+
* @attribute
|
|
71
|
+
*/
|
|
72
|
+
this.active = false;
|
|
73
|
+
/**
|
|
74
|
+
* Controls whether the indicator renders inward.
|
|
75
|
+
* @default false
|
|
76
|
+
* @attribute
|
|
77
|
+
*/
|
|
78
|
+
this.inward = false;
|
|
79
|
+
/**
|
|
80
|
+
* Controls whether the indicator renders circular.
|
|
81
|
+
* @default false
|
|
82
|
+
* @attribute
|
|
83
|
+
*/
|
|
84
|
+
this.circular = false;
|
|
85
|
+
/**
|
|
86
|
+
* Controls whether the indicator renders when the target element matches `:focus` instead of `:focus-visible`.
|
|
87
|
+
* @default false
|
|
88
|
+
* @attribute allow-focus
|
|
89
|
+
*/
|
|
90
|
+
this.allowFocus = false;
|
|
91
|
+
/**
|
|
92
|
+
* The focus mode to use. Valid values are `focusin` (default) and `focus`.
|
|
93
|
+
* @default 'focusin'
|
|
94
|
+
* @attribute focus-mode
|
|
95
|
+
*/
|
|
96
|
+
this.focusMode = 'focusin';
|
|
97
|
+
_FocusIndicatorComponent_targetElement.set(this, void 0);
|
|
98
|
+
_FocusIndicatorComponent_internals.set(this, void 0);
|
|
99
|
+
__classPrivateFieldSet(this, _FocusIndicatorComponent_internals, this.attachInternals(), "f");
|
|
65
100
|
}
|
|
66
101
|
connectedCallback() {
|
|
67
|
-
|
|
102
|
+
super.connectedCallback();
|
|
103
|
+
if (!__classPrivateFieldGet(this, _FocusIndicatorComponent_targetElement, "f")) {
|
|
104
|
+
__classPrivateFieldSet(this, _FocusIndicatorComponent_targetElement, locateTargetHeuristic(this, this.target) ?? undefined, "f");
|
|
105
|
+
}
|
|
106
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_attachTargetListeners).call(this);
|
|
68
107
|
}
|
|
69
108
|
disconnectedCallback() {
|
|
70
|
-
|
|
109
|
+
super.disconnectedCallback();
|
|
110
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_detachTargetListeners).call(this);
|
|
111
|
+
__classPrivateFieldSet(this, _FocusIndicatorComponent_targetElement, undefined, "f");
|
|
71
112
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
this
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
case FOCUS_INDICATOR_CONSTANTS.attributes.INWARD:
|
|
81
|
-
this.inward = coerceBoolean(newValue);
|
|
82
|
-
break;
|
|
83
|
-
case FOCUS_INDICATOR_CONSTANTS.attributes.CIRCULAR:
|
|
84
|
-
this.circular = coerceBoolean(newValue);
|
|
85
|
-
break;
|
|
86
|
-
case FOCUS_INDICATOR_CONSTANTS.attributes.ALLOW_FOCUS:
|
|
87
|
-
this.allowFocus = coerceBoolean(newValue);
|
|
88
|
-
break;
|
|
89
|
-
case FOCUS_INDICATOR_CONSTANTS.attributes.FOCUS_MODE:
|
|
90
|
-
this.focusMode = newValue;
|
|
91
|
-
break;
|
|
113
|
+
willUpdate(changedProperties) {
|
|
114
|
+
if (this.hasUpdated) {
|
|
115
|
+
if (changedProperties.has('target')) {
|
|
116
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_handleTargetChange).call(this);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (changedProperties.has('active')) {
|
|
120
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_handleActiveChange).call(this);
|
|
92
121
|
}
|
|
93
122
|
}
|
|
123
|
+
render() {
|
|
124
|
+
return nothing; // This component does not render any elements, it only applies encapsulated styles to the host element.
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
_FocusIndicatorComponent_targetElement = new WeakMap();
|
|
128
|
+
_FocusIndicatorComponent_internals = new WeakMap();
|
|
129
|
+
_FocusIndicatorComponent_instances = new WeakSet();
|
|
130
|
+
_a = CUSTOM_ELEMENT_NAME_PROPERTY;
|
|
131
|
+
_FocusIndicatorComponent_detachTargetListeners = function _FocusIndicatorComponent_detachTargetListeners() {
|
|
132
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_targetElement, "f")?.removeEventListener(this.focusMode, __classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_handleTargetInteraction).bind(this));
|
|
133
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_targetElement, "f")?.removeEventListener('focusout', __classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_handleTargetInteraction).bind(this));
|
|
134
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_targetElement, "f")?.removeEventListener('pointerdown', __classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_handleTargetInteraction).bind(this));
|
|
135
|
+
};
|
|
136
|
+
_FocusIndicatorComponent_attachTargetListeners = function _FocusIndicatorComponent_attachTargetListeners() {
|
|
137
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_targetElement, "f")?.addEventListener(this.focusMode, __classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_handleTargetInteraction).bind(this));
|
|
138
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_targetElement, "f")?.addEventListener('focusout', __classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_handleTargetInteraction).bind(this));
|
|
139
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_targetElement, "f")?.addEventListener('pointerdown', __classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_handleTargetInteraction).bind(this));
|
|
140
|
+
};
|
|
141
|
+
_FocusIndicatorComponent_handleTargetInteraction = function _FocusIndicatorComponent_handleTargetInteraction(evt) {
|
|
142
|
+
const target = evt.target;
|
|
143
|
+
switch (evt.type) {
|
|
144
|
+
case this.focusMode:
|
|
145
|
+
this.active = __classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_isActive).call(this, this.allowFocus ? ':focus' : ':focus-visible', target);
|
|
146
|
+
break;
|
|
147
|
+
case 'focusout':
|
|
148
|
+
this.active = false;
|
|
149
|
+
break;
|
|
150
|
+
case 'pointerdown':
|
|
151
|
+
this.active = this.allowFocus ? __classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_isActive).call(this, ':focus', target) : __classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_isActive).call(this, ':focus-visible', target);
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
_FocusIndicatorComponent_isActive = function _FocusIndicatorComponent_isActive(selector, el) {
|
|
156
|
+
const targetedEl = el ?? __classPrivateFieldGet(this, _FocusIndicatorComponent_targetElement, "f");
|
|
157
|
+
return !!targetedEl?.matches(selector);
|
|
158
|
+
};
|
|
159
|
+
_FocusIndicatorComponent_handleTargetChange = function _FocusIndicatorComponent_handleTargetChange() {
|
|
160
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_detachTargetListeners).call(this);
|
|
161
|
+
if (this.isConnected) {
|
|
162
|
+
__classPrivateFieldSet(this, _FocusIndicatorComponent_targetElement, locateTargetHeuristic(this, this.target) ?? undefined, "f");
|
|
163
|
+
__classPrivateFieldGet(this, _FocusIndicatorComponent_instances, "m", _FocusIndicatorComponent_attachTargetListeners).call(this);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
_FocusIndicatorComponent_handleActiveChange = function _FocusIndicatorComponent_handleActiveChange() {
|
|
167
|
+
this.toggleAttribute('active', this.active);
|
|
168
|
+
toggleState(__classPrivateFieldGet(this, _FocusIndicatorComponent_internals, "f"), 'active', this.active);
|
|
94
169
|
};
|
|
170
|
+
FocusIndicatorComponent.styles = unsafeCSS(styles);
|
|
171
|
+
/** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
|
|
172
|
+
FocusIndicatorComponent[_a] = FOCUS_INDICATOR_TAG_NAME;
|
|
95
173
|
__decorate([
|
|
96
|
-
|
|
97
|
-
], FocusIndicatorComponent.prototype, "targetElement",
|
|
174
|
+
property({ attribute: false })
|
|
175
|
+
], FocusIndicatorComponent.prototype, "targetElement", null);
|
|
98
176
|
__decorate([
|
|
99
|
-
|
|
177
|
+
property({ type: String })
|
|
100
178
|
], FocusIndicatorComponent.prototype, "target", void 0);
|
|
101
179
|
__decorate([
|
|
102
|
-
|
|
180
|
+
property({ type: Boolean, reflect: true })
|
|
103
181
|
], FocusIndicatorComponent.prototype, "active", void 0);
|
|
104
182
|
__decorate([
|
|
105
|
-
|
|
183
|
+
property({ type: Boolean, reflect: true })
|
|
106
184
|
], FocusIndicatorComponent.prototype, "inward", void 0);
|
|
107
185
|
__decorate([
|
|
108
|
-
|
|
186
|
+
property({ type: Boolean, reflect: true })
|
|
109
187
|
], FocusIndicatorComponent.prototype, "circular", void 0);
|
|
110
188
|
__decorate([
|
|
111
|
-
|
|
189
|
+
property({ type: Boolean, attribute: 'allow-focus' })
|
|
112
190
|
], FocusIndicatorComponent.prototype, "allowFocus", void 0);
|
|
113
191
|
__decorate([
|
|
114
|
-
|
|
192
|
+
property({ attribute: 'focus-mode' })
|
|
115
193
|
], FocusIndicatorComponent.prototype, "focusMode", void 0);
|
|
116
194
|
FocusIndicatorComponent = __decorate([
|
|
117
|
-
customElement(
|
|
118
|
-
name: FOCUS_INDICATOR_CONSTANTS.elementName
|
|
119
|
-
})
|
|
195
|
+
customElement(FOCUS_INDICATOR_TAG_NAME)
|
|
120
196
|
], FocusIndicatorComponent);
|
|
121
197
|
export { FocusIndicatorComponent };
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
* Copyright Tyler Technologies, Inc.
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export * from './focus-indicator-adapter';
|
|
7
6
|
export * from './focus-indicator-constants';
|
|
8
|
-
export * from './focus-indicator-core';
|
|
9
7
|
export * from './focus-indicator';
|
|
10
8
|
export declare function defineFocusIndicatorComponent(): void;
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { defineCustomElement } from '@tylertech/forge-core';
|
|
7
7
|
import { FocusIndicatorComponent } from './focus-indicator';
|
|
8
|
-
export * from './focus-indicator-adapter';
|
|
9
8
|
export * from './focus-indicator-constants';
|
|
10
|
-
export * from './focus-indicator-core';
|
|
11
9
|
export * from './focus-indicator';
|
|
12
10
|
export function defineFocusIndicatorComponent() {
|
|
13
11
|
defineCustomElement(FocusIndicatorComponent);
|
|
@@ -16,6 +16,8 @@ import { IconButtonAdapter } from './icon-button-adapter';
|
|
|
16
16
|
const template = '<template><div class=\"forge-icon-button\" part=\"root\"><slot name=\"start\"></slot><slot></slot><slot name=\"on\"></slot><slot name=\"end\"></slot><slot name=\"badge\"></slot><forge-focus-indicator target=\":host\" part=\"focus-indicator\"></forge-focus-indicator><forge-state-layer target=\":host\" exportparts=\"surface:state-layer\"></forge-state-layer></div></template>';
|
|
17
17
|
const styles = ':host{--_icon-button-display:var(--forge-icon-button-display, inline-flex);--_icon-button-disabled-cursor:var(--forge-icon-button-disabled-cursor, not-allowed)}:host{display:var(--_icon-button-display);position:relative;outline:0;-webkit-tap-highlight-color:transparent}:host([hidden]){display:none}.forge-icon-button{--_icon-button-size:var(--forge-icon-button-size, 48px);--_icon-button-gap:var(--forge-icon-button-gap, 0);--_icon-button-icon-color:var(--forge-icon-button-icon-color, currentColor);--_icon-button-background-color:var(--forge-icon-button-background-color, none);--_icon-button-icon-size:var(--forge-icon-button-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1.5));--_icon-button-cursor:var(--forge-icon-button-cursor, pointer);--_icon-button-padding:var(--forge-icon-button-padding, var(--forge-spacing-xxsmall, 4px));--_icon-button-border:var(--forge-icon-button-border, none);--_icon-button-shadow:var(--forge-icon-button-shadow, none);--_icon-button-transition-duration:var(--forge-icon-button-transition-duration, var(--forge-animation-duration-short3, 150ms));--_icon-button-transition-timing:var(--forge-icon-button-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));--_icon-button-shape:var(--forge-icon-button-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));--_icon-button-shape-start-start:var(--forge-icon-button-shape-start-start, var(--_icon-button-shape));--_icon-button-shape-start-end:var(--forge-icon-button-shape-start-end, var(--_icon-button-shape));--_icon-button-shape-end-start:var(--forge-icon-button-shape-end-start, var(--_icon-button-shape));--_icon-button-shape-end-end:var(--forge-icon-button-shape-end-end, var(--_icon-button-shape));--_icon-button-shape-squared:var(--forge-icon-button-shape-squared, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_icon-button-outlined-border-width:var(--forge-icon-button-outlined-border-width, 1px);--_icon-button-outlined-border-style:var(--forge-icon-button-outlined-border-style, solid);--_icon-button-outlined-border-color:var(--forge-icon-button-outlined-border-color, var(--_icon-button-icon-color));--_icon-button-tonal-icon-color:var(--forge-icon-button-tonal-icon-color, var(--forge-theme-on-primary-container, #222c62));--_icon-button-tonal-background-color:var(--forge-icon-button-tonal-background-color, var(--forge-theme-primary-container, #d1d5ed));--_icon-button-filled-icon-color:var(--forge-icon-button-filled-icon-color, var(--forge-theme-on-primary, #ffffff));--_icon-button-filled-background-color:var(--forge-icon-button-filled-background-color, var(--forge-theme-primary, #3f51b5));--_icon-button-raised-shadow:var(--forge-icon-button-raised-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));--_icon-button-raised-hover-shadow:var(--forge-icon-button-raised-hover-shadow, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));--_icon-button-raised-active-shadow:var(--forge-icon-button-raised-active-shadow, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12));--_icon-button-raised-disabled-shadow:var(--forge-icon-button-raised-disabled-shadow, none);--_icon-button-density-small-size:var(--forge-icon-button-density-small-size, 24px);--_icon-button-density-small-padding:var(--forge-icon-button-density-small-padding, var(--forge-spacing-xxxsmall, 2px));--_icon-button-density-small-icon-size:var(--forge-icon-button-density-small-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1.125));--_icon-button-density-medium-size:var(--forge-icon-button-density-medium-size, 36px);--_icon-button-density-medium-padding:var(--forge-icon-button-density-medium-padding, var(--forge-spacing-xxsmall, 4px));--_icon-button-density-large-size:var(--forge-icon-button-density-large-size, var(--_icon-button-size));--_icon-button-toggle-on-background-color:var(--forge-icon-button-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));--_icon-button-toggle-on-icon-color:var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5));--_icon-button-outlined-toggle-on-background-color:var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));--_icon-button-outlined-toggle-on-icon-color:var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5));--_icon-button-tonal-toggle-background-color:var(--forge-icon-button-tonal-toggle-background-color, var(--forge-theme-surface-container-low, #ebebeb));--_icon-button-tonal-toggle-on-background-color:var(--forge-icon-button-tonal-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));--_icon-button-tonal-toggle-on-icon-color:var(--forge-icon-button-tonal-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5));--_icon-button-filled-toggle-background-color:var(--forge-icon-button-filled-toggle-background-color, var(--forge-theme-surface-container-low, #ebebeb));--_icon-button-filled-toggle-icon-color:var(--forge-icon-button-filled-toggle-icon-color, var(--forge-theme-primary, #3f51b5));--_icon-button-filled-toggle-on-background-color:var(--forge-icon-button-filled-toggle-on-background-color, var(--forge-theme-primary, #3f51b5));--_icon-button-filled-toggle-on-icon-color:var(--forge-icon-button-filled-toggle-on-icon-color, var(--forge-theme-on-primary, #ffffff));--_icon-button-disabled-opacity:var(--forge-icon-button-disabled-opacity, 0.38);--_icon-button-popover-icon-padding:var(--forge-icon-button-popover-icon-padding, var(--forge-spacing-xsmall, 8px));--_icon-button-focus-indicator-color:var(--forge-icon-button-focus-indicator-color, var(--forge-theme-primary, #3f51b5))}.forge-icon-button{position:relative;z-index:0;display:var(--_icon-button-display);align-items:center;justify-content:center;gap:var(--_icon-button-gap);box-sizing:border-box;height:var(--_icon-button-density-large-size);min-width:var(--_icon-button-density-large-size);border:var(--_icon-button-border);border-start-start-radius:var(--_icon-button-shape-start-start);border-start-end-radius:var(--_icon-button-shape-start-end);border-end-start-radius:var(--_icon-button-shape-end-start);border-end-end-radius:var(--_icon-button-shape-end-end);padding:var(--_icon-button-padding);box-shadow:var(--_icon-button-shadow);color:var(--_icon-button-icon-color);background:var(--_icon-button-background-color);font-size:var(--_icon-button-icon-size);cursor:var(--_icon-button-cursor);user-select:none;transition-property:box-shadow,background;transition-duration:var(--_icon-button-transition-duration);transition-timing-function:var(--_icon-button-transition-timing)}.forge-icon-button ::slotted(:is([slot=start],[slot=end])){font-size:var(--_icon-button-icon-size);height:var(--_icon-button-icon-size);width:var(--_icon-button-icon-size);font-weight:inherit}::slotted(a){height:100%;width:100%;outline:0;border-radius:var(--_icon-button-shape);padding-inline:var(--_icon-button-padding);display:flex;align-items:center;justify-content:center;gap:var(--_icon-button-gap);color:var(--_icon-button-icon-color);text-decoration:none}forge-focus-indicator{--forge-focus-indicator-color:var(--_icon-button-focus-indicator-color);--forge-focus-indicator-shape-start-start:var(--_icon-button-shape-start-start);--forge-focus-indicator-shape-start-end:var(--_icon-button-shape-start-end);--forge-focus-indicator-shape-end-start:var(--_icon-button-shape-end-start);--forge-focus-indicator-shape-end-end:var(--_icon-button-shape-end-end)}:host(:is([variant=icon],:not([variant]))){--forge-focus-indicator-outward-offset:0px}forge-state-layer{--forge-state-layer-color:var(--_icon-button-icon-color)}:host([popover-icon]) .forge-icon-button{--_icon-button-padding:var(--_icon-button-popover-icon-padding)}:host([variant=outlined]) .forge-icon-button{border-width:var(--_icon-button-outlined-border-width);border-style:var(--_icon-button-outlined-border-style);border-color:var(--_icon-button-outlined-border-color)}:host([variant=tonal]) .forge-icon-button{--_icon-button-icon-color:var(--_icon-button-tonal-icon-color);--_icon-button-background-color:var(--_icon-button-tonal-background-color)}:host(:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--_icon-button-filled-icon-color);--_icon-button-background-color:var(--_icon-button-filled-background-color)}:host([variant=raised]) .forge-icon-button{--_icon-button-shadow:var(--_icon-button-raised-shadow)}:host([variant=raised]) .forge-icon-button:hover{--_icon-button-raised-shadow:var(--_icon-button-raised-hover-shadow)}:host([variant=raised]) .forge-icon-button:active{--_icon-button-raised-shadow:var(--_icon-button-raised-active-shadow)}:host(:is(:not([toggle]),[toggle]:not([pressed]))) slot[name=on]{display:none}:host([toggle][pressed]) slot:not([name]){display:none}:host([toggle][pressed]:is(:not([variant]),[variant=icon])) .forge-icon-button{--_icon-button-background-color:var(--_icon-button-toggle-on-background-color);--_icon-button-icon-color:var(--_icon-button-toggle-on-icon-color)}:host([toggle][pressed][variant=outlined]) .forge-icon-button{--_icon-button-background-color:var(--_icon-button-outlined-toggle-on-background-color);--_icon-button-icon-color:var(--_icon-button-outlined-toggle-on-icon-color)}:host([toggle]:not([pressed])[variant=tonal]) .forge-icon-button{--_icon-button-background-color:var(--_icon-button-tonal-toggle-background-color)}:host([toggle][pressed][variant=tonal]) .forge-icon-button{--_icon-button-icon-color:var(--_icon-button-tonal-toggle-on-icon-color);--_icon-button-background-color:var(--_icon-button-tonal-toggle-on-background-color)}:host([toggle]:not([pressed]):is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--_icon-button-filled-toggle-icon-color);--_icon-button-background-color:var(--_icon-button-filled-toggle-background-color)}:host([toggle][pressed]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--_icon-button-filled-toggle-on-icon-color);--_icon-button-background-color:var(--_icon-button-filled-toggle-on-background-color)}::slotted([slot=badge]){position:absolute;top:0;left:60%;z-index:1;pointer-events:none}::slotted(forge-badge[slot=badge][dot]){top:8px}:host(:is([dense],[density=small],[density=medium])) ::slotted(forge-badge[slot=badge]:not([dot])){top:-25%}:host(:is([dense],[density=small],[density=medium])) ::slotted(forge-badge[slot=badge][dot]){top:0}:host(:is([dense],[density=small])) ::slotted(forge-badge[slot=badge]){--forge-typography-label1-line-height:normal;--forge-badge-height:auto}::slotted(forge-circular-progress){--forge-circular-progress-indicator-color:var(--_icon-button-icon-color);--forge-circular-progress-track-color:transparent;--forge-circular-progress-size:1em}:host(:is([dense],[density=small])) .forge-icon-button{--_icon-button-size:var(--_icon-button-density-small-size);--_icon-button-icon-size:var(--_icon-button-density-small-icon-size);--_icon-button-padding:var(--_icon-button-density-small-padding)}:host(:is([dense],[density=small])) ::slotted(*){font-size:var(--_icon-button-density-small-icon-size)}:host([density=medium]) .forge-icon-button{--_icon-button-size:var(--_icon-button-density-medium-size);--_icon-button-padding:var(--_icon-button-density-medium-padding)}:host([shape=squared]) .forge-icon-button{--_icon-button-shape:var(--_icon-button-shape-squared)}:host([disabled]){cursor:var(--_icon-button-disabled-cursor)}:host([disabled]) .forge-icon-button{pointer-events:none;opacity:var(--_icon-button-disabled-opacity)}:host([disabled][variant=raised]) .forge-icon-button{--_icon-button-raised-shadow:var(--_icon-button-raised-disabled-shadow)}:host(:not([toggle])[theme=primary]:is(:not([variant]),[variant=icon],[variant=outlined])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-primary, #3f51b5))}:host([toggle][theme=primary]:is(:not([variant]),[variant=icon])) .forge-icon-button{--_icon-button-toggle-on-icon-color:var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5))}:host([toggle][theme=primary][variant=outlined]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-primary, #3f51b5));--_icon-button-outlined-toggle-on-background-color:var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));--_icon-button-outlined-toggle-on-icon-color:var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5))}:host([theme=primary]) .forge-icon-button{--_icon-button-focus-indicator-color:var(--forge-icon-button-focus-indicator-color, var(--forge-theme-primary, #3f51b5))}:host(:not([toggle])[theme=secondary]:is(:not([variant]),[variant=icon],[variant=outlined])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-secondary, #ffc107))}:host([toggle][theme=secondary]:is(:not([variant]),[variant=icon])) .forge-icon-button{--_icon-button-toggle-on-icon-color:var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-secondary, #ffc107))}:host([toggle][theme=secondary][variant=outlined]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-secondary, #ffc107));--_icon-button-outlined-toggle-on-background-color:var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-secondary-container, #fff0c3));--_icon-button-outlined-toggle-on-icon-color:var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-secondary, #ffc107))}:host(:not([toggle])[theme=secondary][variant=tonal]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-secondary-container, #8a6804));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-secondary-container, #fff0c3))}:host([toggle]:not([pressed])[theme=secondary][variant=tonal]) .forge-icon-button{--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-secondary-container, #fff0c3))}:host([toggle][theme=secondary][variant=tonal]) .forge-icon-button{--_icon-button-tonal-toggle-on-background-color:var(--forge-icon-button-tonal-toggle-on-background-color, var(--forge-theme-secondary-container, #fff0c3));--_icon-button-tonal-toggle-on-icon-color:var(--forge-icon-button-tonal-toggle-on-icon-color, var(--forge-theme-on-secondary-container, #8a6804))}:host(:not([toggle])[theme=secondary]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-secondary, #000000));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-secondary, #ffc107))}:host([toggle]:not([pressed])[theme=secondary]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-secondary, #ffc107));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-secondary-container, #fff0c3))}:host([toggle][theme=secondary]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-filled-toggle-on-background-color:var(--forge-icon-button-filled-toggle-on-background-color, var(--forge-theme-secondary, #ffc107));--_icon-button-filled-toggle-on-icon-color:var(--forge-icon-button-filled-toggle-on-icon-color, var(--forge-theme-on-secondary, #000000))}:host([theme=secondary]) .forge-icon-button{--_icon-button-focus-indicator-color:var(--forge-icon-button-focus-indicator-color, var(--forge-theme-secondary, #ffc107))}:host(:not([toggle])[theme=tertiary]:is(:not([variant]),[variant=icon],[variant=outlined])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-tertiary, #3d5afe))}:host([toggle][theme=tertiary]:is(:not([variant]),[variant=icon])) .forge-icon-button{--_icon-button-toggle-on-icon-color:var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-tertiary, #3d5afe))}:host([toggle][theme=tertiary][variant=outlined]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-tertiary, #3d5afe));--_icon-button-outlined-toggle-on-background-color:var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-tertiary-container, #d0d7ff));--_icon-button-outlined-toggle-on-icon-color:var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-tertiary, #3d5afe))}:host(:not([toggle])[theme=tertiary][variant=tonal]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-tertiary-container, #213189));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-tertiary-container, #d0d7ff))}:host([toggle]:not([pressed])[theme=tertiary][variant=tonal]) .forge-icon-button{--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-tertiary-container, #d0d7ff))}:host([toggle][theme=tertiary][variant=tonal]) .forge-icon-button{--_icon-button-tonal-toggle-on-background-color:var(--forge-icon-button-tonal-toggle-on-background-color, var(--forge-theme-tertiary-container, #d0d7ff));--_icon-button-tonal-toggle-on-icon-color:var(--forge-icon-button-tonal-toggle-on-icon-color, var(--forge-theme-on-tertiary-container, #213189))}:host(:not([toggle])[theme=tertiary]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-tertiary, #ffffff));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-tertiary, #3d5afe))}:host([toggle]:not([pressed])[theme=tertiary]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-tertiary, #3d5afe));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-tertiary-container, #d0d7ff))}:host([toggle][theme=tertiary]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-filled-toggle-on-background-color:var(--forge-icon-button-filled-toggle-on-background-color, var(--forge-theme-tertiary, #3d5afe));--_icon-button-filled-toggle-on-icon-color:var(--forge-icon-button-filled-toggle-on-icon-color, var(--forge-theme-on-tertiary, #ffffff))}:host([theme=tertiary]) .forge-icon-button{--_icon-button-focus-indicator-color:var(--forge-icon-button-focus-indicator-color, var(--forge-theme-tertiary, #3d5afe))}:host(:not([toggle])[theme=success]:is(:not([variant]),[variant=icon],[variant=outlined])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-success, #2e7d32))}:host([toggle][theme=success]:is(:not([variant]),[variant=icon])) .forge-icon-button{--_icon-button-toggle-on-icon-color:var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-success, #2e7d32))}:host([toggle][theme=success][variant=outlined]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-success, #2e7d32));--_icon-button-outlined-toggle-on-background-color:var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-success-container, #cde0ce));--_icon-button-outlined-toggle-on-icon-color:var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-success, #2e7d32))}:host(:not([toggle])[theme=success][variant=tonal]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-success-container, #19441b));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-success-container, #cde0ce))}:host([toggle]:not([pressed])[theme=success][variant=tonal]) .forge-icon-button{--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-success-container, #cde0ce))}:host([toggle][theme=success][variant=tonal]) .forge-icon-button{--_icon-button-tonal-toggle-on-background-color:var(--forge-icon-button-tonal-toggle-on-background-color, var(--forge-theme-success-container, #cde0ce));--_icon-button-tonal-toggle-on-icon-color:var(--forge-icon-button-tonal-toggle-on-icon-color, var(--forge-theme-on-success-container, #19441b))}:host(:not([toggle])[theme=success]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-success, #ffffff));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-success, #2e7d32))}:host([toggle]:not([pressed])[theme=success]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-success, #2e7d32));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-success-container, #cde0ce))}:host([toggle][theme=success]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-filled-toggle-on-background-color:var(--forge-icon-button-filled-toggle-on-background-color, var(--forge-theme-success, #2e7d32));--_icon-button-filled-toggle-on-icon-color:var(--forge-icon-button-filled-toggle-on-icon-color, var(--forge-theme-on-success, #ffffff))}:host([theme=success]) .forge-icon-button{--_icon-button-focus-indicator-color:var(--forge-icon-button-focus-indicator-color, var(--forge-theme-success, #2e7d32))}:host(:not([toggle])[theme=error]:is(:not([variant]),[variant=icon],[variant=outlined])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-error, #b00020))}:host([toggle][theme=error]:is(:not([variant]),[variant=icon])) .forge-icon-button{--_icon-button-toggle-on-icon-color:var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-error, #b00020))}:host([toggle][theme=error][variant=outlined]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-error, #b00020));--_icon-button-outlined-toggle-on-background-color:var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-error-container, #ecc2c9));--_icon-button-outlined-toggle-on-icon-color:var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-error, #b00020))}:host(:not([toggle])[theme=error][variant=tonal]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-error-container, #5f0011));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-error-container, #ecc2c9))}:host([toggle]:not([pressed])[theme=error][variant=tonal]) .forge-icon-button{--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-error-container, #ecc2c9))}:host([toggle][theme=error][variant=tonal]) .forge-icon-button{--_icon-button-tonal-toggle-on-background-color:var(--forge-icon-button-tonal-toggle-on-background-color, var(--forge-theme-error-container, #ecc2c9));--_icon-button-tonal-toggle-on-icon-color:var(--forge-icon-button-tonal-toggle-on-icon-color, var(--forge-theme-on-error-container, #5f0011))}:host(:not([toggle])[theme=error]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-error, #ffffff));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-error, #b00020))}:host([toggle]:not([pressed])[theme=error]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-error, #b00020));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-error-container, #ecc2c9))}:host([toggle][theme=error]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-filled-toggle-on-background-color:var(--forge-icon-button-filled-toggle-on-background-color, var(--forge-theme-error, #b00020));--_icon-button-filled-toggle-on-icon-color:var(--forge-icon-button-filled-toggle-on-icon-color, var(--forge-theme-on-error, #ffffff))}:host([theme=error]) .forge-icon-button{--_icon-button-focus-indicator-color:var(--forge-icon-button-focus-indicator-color, var(--forge-theme-error, #b00020))}:host(:not([toggle])[theme=warning]:is(:not([variant]),[variant=icon],[variant=outlined])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-warning, #d14900))}:host([toggle][theme=warning]:is(:not([variant]),[variant=icon])) .forge-icon-button{--_icon-button-toggle-on-icon-color:var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-warning, #d14900))}:host([toggle][theme=warning][variant=outlined]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-warning, #d14900));--_icon-button-outlined-toggle-on-background-color:var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-warning-container, #f4d3c2));--_icon-button-outlined-toggle-on-icon-color:var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-warning, #d14900))}:host(:not([toggle])[theme=warning][variant=tonal]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-warning-container, #712700));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-warning-container, #f4d3c2))}:host([toggle]:not([pressed])[theme=warning][variant=tonal]) .forge-icon-button{--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-warning-container, #f4d3c2))}:host([toggle][theme=warning][variant=tonal]) .forge-icon-button{--_icon-button-tonal-toggle-on-background-color:var(--forge-icon-button-tonal-toggle-on-background-color, var(--forge-theme-warning-container, #f4d3c2));--_icon-button-tonal-toggle-on-icon-color:var(--forge-icon-button-tonal-toggle-on-icon-color, var(--forge-theme-on-warning-container, #712700))}:host(:not([toggle])[theme=warning]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-warning, #ffffff));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-warning, #d14900))}:host([toggle]:not([pressed])[theme=warning]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-warning, #d14900));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-warning-container, #f4d3c2))}:host([toggle][theme=warning]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-filled-toggle-on-background-color:var(--forge-icon-button-filled-toggle-on-background-color, var(--forge-theme-warning, #d14900));--_icon-button-filled-toggle-on-icon-color:var(--forge-icon-button-filled-toggle-on-icon-color, var(--forge-theme-on-warning, #ffffff))}:host([theme=warning]) .forge-icon-button{--_icon-button-focus-indicator-color:var(--forge-icon-button-focus-indicator-color, var(--forge-theme-warning, #d14900))}:host(:not([toggle])[theme=info]:is(:not([variant]),[variant=icon],[variant=outlined])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-info, #1565c0))}:host([toggle][theme=info]:is(:not([variant]),[variant=icon])) .forge-icon-button{--_icon-button-toggle-on-icon-color:var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-info, #1565c0))}:host([toggle][theme=info][variant=outlined]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-info, #1565c0));--_icon-button-outlined-toggle-on-background-color:var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-info-container, #c7daf0));--_icon-button-outlined-toggle-on-icon-color:var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-info, #1565c0))}:host(:not([toggle])[theme=info][variant=tonal]) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-info-container, #0b3768));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-info-container, #c7daf0))}:host([toggle]:not([pressed])[theme=info][variant=tonal]) .forge-icon-button{--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-info-container, #c7daf0))}:host([toggle][theme=info][variant=tonal]) .forge-icon-button{--_icon-button-tonal-toggle-on-background-color:var(--forge-icon-button-tonal-toggle-on-background-color, var(--forge-theme-info-container, #c7daf0));--_icon-button-tonal-toggle-on-icon-color:var(--forge-icon-button-tonal-toggle-on-icon-color, var(--forge-theme-on-info-container, #0b3768))}:host(:not([toggle])[theme=info]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-on-info, #ffffff));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-info, #1565c0))}:host([toggle]:not([pressed])[theme=info]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-icon-color:var(--forge-icon-button-icon-color, var(--forge-theme-info, #1565c0));--_icon-button-background-color:var(--forge-icon-button-background-color, var(--forge-theme-info-container, #c7daf0))}:host([toggle][theme=info]:is([variant=filled],[variant=raised])) .forge-icon-button{--_icon-button-filled-toggle-on-background-color:var(--forge-icon-button-filled-toggle-on-background-color, var(--forge-theme-info, #1565c0));--_icon-button-filled-toggle-on-icon-color:var(--forge-icon-button-filled-toggle-on-icon-color, var(--forge-theme-on-info, #ffffff))}:host([theme=info]) .forge-icon-button{--_icon-button-focus-indicator-color:var(--forge-icon-button-focus-indicator-color, var(--forge-theme-info, #1565c0))}:host([theme=app-bar]){--forge-icon-button-icon-color:var(--_app-bar-theme-foreground);--forge-icon-button-focus-indicator-color:var(--_app-bar-theme-foreground)}';
|
|
18
18
|
/**
|
|
19
|
+
* @summary A clickable button component that displays an icon with support for different variants, themes, toggle states, and accessibility features.
|
|
20
|
+
*
|
|
19
21
|
* @tag forge-icon-button
|
|
20
22
|
*
|
|
21
23
|
* @globalconfig variant
|
|
@@ -26,6 +26,8 @@ declare global {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
+
* @summary A utility component that listens for keyboard shortcut combinations and triggers callbacks or events when the specified key bindings are activated.
|
|
30
|
+
*
|
|
29
31
|
* @tag forge-keyboard-shortcut
|
|
30
32
|
*
|
|
31
33
|
* @event {CustomEvent<KeyboardEvent>} forge-keyboard-shortcut-activate - Event fired when the keyboard shortcut is activated.
|
|
@@ -10,6 +10,8 @@ import { KeyboardShortcutCore } from './keyboard-shortcut-core';
|
|
|
10
10
|
import { KEYBOARD_SHORTCUT_CONSTANTS } from './keyboard-shortcut-constants';
|
|
11
11
|
import { BaseComponent } from '../core/base/base-component';
|
|
12
12
|
/**
|
|
13
|
+
* @summary A utility component that listens for keyboard shortcut combinations and triggers callbacks or events when the specified key bindings are activated.
|
|
14
|
+
*
|
|
13
15
|
* @tag forge-keyboard-shortcut
|
|
14
16
|
*
|
|
15
17
|
* @event {CustomEvent<KeyboardEvent>} forge-keyboard-shortcut-activate - Event fired when the keyboard shortcut is activated.
|
package/esm/list/list/list.js
CHANGED
|
@@ -14,7 +14,7 @@ import { setDefaultAria } from '../../constants';
|
|
|
14
14
|
import { WithElementInternals } from '../../core/mixins/internals/with-element-internals';
|
|
15
15
|
import { WithDefaultAria } from '../../core/mixins/internals/with-default-aria';
|
|
16
16
|
const template = '<template><div class=\"forge-list\" part=\"root\"><div class=\"inner\"><slot></slot></div></div></template>';
|
|
17
|
-
const styles = ':host{--_list-navlist-spacing:var(--forge-list-navlist-spacing, var(--forge-spacing-xxsmall, 4px));--_list-navlist-margin:var(--forge-list-navlist-margin, var(--forge-spacing-xxsmall, 4px) var(--forge-spacing-xsmall, 8px));--_list-navlist-height:var(--forge-list-navlist-height, 40px);--_list-navlist-padding:var(--forge-list-navlist-padding, 0 var(--forge-spacing-xsmall, 8px));--_list-navlist-shape:var(--forge-list-navlist-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_list-navlist-font-size:var(--forge-list-navlist-font-size, calc(var(--forge-typography-font-size, 1rem) * 0.875));--_list-navlist-font-weight:var(--forge-list-navlist-font-weight, 500)}:host{display:block}:host([hidden]){display:none}:host([navlist]){--forge-list-item-height:var(--_list-navlist-height);--forge-list-item-margin:var(--_list-navlist-margin);--forge-list-item-padding:var(--_list-navlist-padding);--forge-list-item-shape:var(--_list-navlist-shape);--forge-list-item-text-font-size:var(--_list-navlist-font-size);--forge-list-item-text-font-weight:var(--_list-navlist-font-weight)}
|
|
17
|
+
const styles = ':host{--_list-navlist-spacing:var(--forge-list-navlist-spacing, var(--forge-spacing-xxsmall, 4px));--_list-navlist-margin:var(--forge-list-navlist-margin, var(--forge-spacing-xxsmall, 4px) var(--forge-spacing-xsmall, 8px));--_list-navlist-height:var(--forge-list-navlist-height, 40px);--_list-navlist-padding:var(--forge-list-navlist-padding, 0 var(--forge-spacing-xsmall, 8px));--_list-navlist-shape:var(--forge-list-navlist-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_list-navlist-font-size:var(--forge-list-navlist-font-size, calc(var(--forge-typography-font-size, 1rem) * 0.875));--_list-navlist-font-weight:var(--forge-list-navlist-font-weight, 500)}:host{display:block}:host([hidden]){display:none}:host([navlist]) .forge-list{margin-block:var(--_list-navlist-spacing)}:host([navlist]){--forge-list-item-height:var(--_list-navlist-height);--forge-list-item-margin:var(--_list-navlist-margin);--forge-list-item-padding:var(--_list-navlist-padding);--forge-list-item-shape:var(--_list-navlist-shape);--forge-list-item-text-font-size:var(--_list-navlist-font-size);--forge-list-item-text-font-weight:var(--_list-navlist-font-weight)}.forge-list{--_list-spacing:var(--forge-list-spacing, 0);--_list-container-color:var(--forge-list-container-color, transparent)}.forge-list{outline:0;background-color:var(--_list-container-color);margin:0;border-radius:inherit;min-width:inherit}.inner{display:grid;gap:var(--_list-spacing);min-width:0}.inner ::slotted(*){min-width:0}';
|
|
18
18
|
/**
|
|
19
19
|
* @tag forge-list
|
|
20
20
|
*
|
|
@@ -33,7 +33,7 @@ const selectors = {
|
|
|
33
33
|
ROOT: `.${classes.ROOT}`,
|
|
34
34
|
FORM_CONTROL_LIKE: ':is([forge-list-item-interactive],forge-radio,forge-checkbox,forge-switch,input[type=checkbox],input[type=radio]):is([slot=start],[slot=end],[slot=leading],[slot=trailing]):not([forge-ignore])',
|
|
35
35
|
BUTTON_LIKE: ':is(button,[role=button][tabindex]:not([tabindex=-1]),[forge-list-item-interactive]):not([forge-ignore])',
|
|
36
|
-
IGNORE: '[forge-ignore],[data-forge-ignore]',
|
|
36
|
+
IGNORE: '[forge-ignore],[data-forge-ignore],[slot="additional-content"]',
|
|
37
37
|
INTERNAL_ANCHOR: `#${ids.INTERNAL_ANCHOR}`,
|
|
38
38
|
SLOTTED_START_END: ':is([slot=start],[slot=end],[slot=leading],[slot=trailing])'
|
|
39
39
|
};
|