@tylertech/forge 3.14.0-dev.5 → 3.14.1
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 +11729 -11176
- package/dist/secret/forge-secret.css +6 -0
- package/esm/button-area/button-area.js +17 -6
- package/esm/calendar/calendar-adapter.js +10 -0
- package/esm/calendar/calendar-menu/calendar-menu-adapter.js +3 -1
- package/esm/expansion-panel/expansion-panel.js +6 -4
- package/esm/index.d.ts +4 -3
- package/esm/index.js +7 -4
- package/esm/secret/index.d.ts +3 -0
- package/esm/secret/index.js +16 -0
- package/esm/secret/secret.d.ts +138 -0
- package/esm/secret/secret.js +331 -0
- package/esm/secret/secret.scss.js +9 -0
- package/esm/split-view/split-view-panel/split-view-panel.scss.js +1 -1
- package/package.json +5 -5
- package/sass/core/styles/tokens/secret/_tokens.scss +27 -0
- package/sass/secret/_core.scss +170 -0
- package/sass/secret/_token-utils.scss +25 -0
- package/sass/secret/forge-secret.scss +111 -0
- package/sass/secret/index.scss +1 -0
- package/sass/secret/secret.scss +104 -0
- package/vscode.css-custom-data.json +484 -412
- package/vscode.html-custom-data.json +553 -501
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
.forge-secret{--_secret-blur:var(--forge-secret-blur, var(--forge-spacing-xsmall, 8px));--_secret-button-background:var(--forge-secret-button-background, var(--forge-theme-surface-inverse, #333333));--_secret-button-color:var(--forge-secret-button-color, var(--forge-theme-on-surface-inverse, #ffffff));--_secret-button-shape:var(--forge-secret-button-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_secret-button-padding:var(--forge-secret-button-padding, var(--forge-spacing-xsmall, 8px));--_secret-icon-size:var(--forge-secret-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1));--_secret-text-button-shape:var(--forge-secret-text-button-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));--_secret-text-decoration-line:var(--forge-secret-text-decoration-line, underline);--_secret-text-decoration-style:var(--forge-secret-text-decoration-style, dotted);--_secret-text-decoration-color:var(--forge-secret-text-decoration-color, inherit);--_secret-text-underline-offset:var(--forge-secret-text-underline-offset, var(--forge-spacing-xxxsmall, 2px));--_secret-transition-duration:var(--forge-secret-transition-duration, var(--forge-animation-duration-short4, 200ms));--_secret-transition-easing:var(--forge-secret-transition-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));display:inline-block;vertical-align:bottom;display:flex;max-inline-size:fit-content}.forge-secret__content{display:inline-block;position:relative;transition:filter var(--_secret-transition-duration) var(--_secret-transition-easing)}.forge-secret__button{--forge-icon-button-background-color: var(--_secret-button-background);--forge-icon-button-icon-color: var(--_secret-button-color);--forge-icon-button-icon-size: inherit;--forge-icon-button-padding: 0;--forge-icon-button-shape: var(--_secret-button-shape);--forge-icon-button-size: 1lh;--forge-focus-indicator-outward-offset: 2px;block-size:0;padding-inline:var(--_secret-button-padding)}.forge-secret__text-button{--_button-dense-height:var(--forge-button-dense-height, 24px);--forge-button-background: var(--_secret-button-background);--forge-button-color: var(--_secret-button-color);--forge-button-shape: var(--_secret-text-button-shape);--forge-button-height: var(--_button-dense-height);--forge-focus-indicator-shape: var(--_secret-text-button-shape);padding:var(--_secret-button-padding);position:absolute;place-self:center;inset:0;translate:0;transition-property:inset-block-start,translate;transition-duration:var(--_secret-transition-duration);transition-timing-function:var(--_secret-transition-easing)}.forge-secret__icon{--forge-icon-font-size: var(--_secret-icon-size)}.forge-secret--show-on-hover:where(:hover,:has(:where(.forge-secret__button,.forge-secret__text-button):focus-visible)) .forge-secret__content{filter:none !important}.forge-secret--show-on-hover:where(:hover,:has(:where(.forge-secret__button,.forge-secret__text-button):focus-visible)) .forge-secret__content::before{display:none}.forge-secret--show-on-hover:where(:hover,:has(:where(.forge-secret__button,.forge-secret__text-button):focus-visible)).forge-secret--masked:not(.forge-secret--block) .forge-secret__content{display:inline-block !important}.forge-secret--show-on-hover:where(:hover,:has(:where(.forge-secret__button,.forge-secret__text-button):focus-visible)).forge-secret--masked:not(.forge-secret--block) .forge-secret__masked::before{display:none}.forge-secret--show-on-hover:where(:hover,:has(:where(.forge-secret__button,.forge-secret__text-button):focus-visible)) .forge-secret__text-button{inset-block-start:-100%;translate:0 -50%}.forge-secret--block{display:block;vertical-align:initial;display:block;position:relative}.forge-secret--block .forge-secret__content{display:block}.forge-secret:has(:where(.forge-secret__button,.forge-secret__text-button):not([aria-expanded=true])){cursor:pointer;cursor:unset}.forge-secret:has(:where(.forge-secret__button,.forge-secret__text-button):not([aria-expanded=true])) .forge-secret__content{interactivity:inert;user-select:none}.forge-secret:has(:where(.forge-secret__button,.forge-secret__text-button):not([aria-expanded=true])):where(.forge-secret--blur,.forge-secret--block.forge-secret--masked) .forge-secret__content{filter:blur(var(--_secret-blur))}.forge-secret:has(:where(.forge-secret__button,.forge-secret__text-button):not([aria-expanded=true])).forge-secret--masked:not(.forge-secret--block) .forge-secret__content{display:none}.forge-secret:has(:where(.forge-secret__button,.forge-secret__text-button):not([aria-expanded=true])).forge-secret--masked:not(.forge-secret--block) .forge-secret__masked::before{content:attr(data-mask)}.forge-secret:has(:where(.forge-secret__button,.forge-secret__text-button):not([aria-expanded=true])).forge-secret--noise .forge-secret__content::before{content:"";position:absolute;inset:0;width:100%;height:100%;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="600" height="600"><filter id="noise"><feTurbulence type="fractalNoise" baseFrequency="0.85" numOctaves="8" stitchTiles="stitch" /><feColorMatrix type="matrix" values="0.33 0.33 0.33 0 0 0.33 0.33 0.33 0 0 0.33 0.33 0.33 0 0 0 0 0 1 0" /></filter><rect width="100%" height="100%" filter="url(%23noise)" opacity=".5" /></svg>');background-size:600px 600px;background-repeat:repeat;backdrop-filter:blur(24px)}.forge-secret:has(:where(.forge-secret__button,.forge-secret__text-button)[aria-expanded=true]) .forge-secret__text-button{inset-block-start:-100%;translate:0 -50%}.forge-secret:has(:where(.forge-secret__button,.forge-secret__text-button)[aria-expanded=true]):not(.forge-secret--block) .forge-secret__content{text-decoration-line:var(--_secret-text-decoration-line);text-decoration-style:var(--_secret-text-decoration-style);text-decoration-color:var(--_secret-text-decoration-color);text-underline-offset:var(--_secret-text-underline-offset)}@media(prefers-reduced-motion: reduce){.forge-secret{--_secret-transition-duration:var(--forge-secret-transition-duration, 0)}}
|
|
@@ -68,9 +68,15 @@ let ButtonAreaComponent = class ButtonAreaComponent extends BaseLitElement {
|
|
|
68
68
|
this.#stateLayer = createRef();
|
|
69
69
|
this.#focusIndicator = createRef();
|
|
70
70
|
this.#handleClick = (event) => {
|
|
71
|
+
// Ignore the click if it originates from an ignored element
|
|
72
|
+
if (this.#shouldIgnoreEvent(event)) {
|
|
73
|
+
event.stopPropagation();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
71
76
|
// Prevent the click if disabled
|
|
72
77
|
if (this.disabled) {
|
|
73
78
|
event.stopPropagation();
|
|
79
|
+
return;
|
|
74
80
|
}
|
|
75
81
|
// Prevent the click if a selection was made
|
|
76
82
|
const selection = window.getSelection();
|
|
@@ -78,14 +84,19 @@ let ButtonAreaComponent = class ButtonAreaComponent extends BaseLitElement {
|
|
|
78
84
|
event.stopPropagation();
|
|
79
85
|
return;
|
|
80
86
|
}
|
|
81
|
-
//
|
|
82
|
-
|
|
83
|
-
|
|
87
|
+
// If the click occured outside an external associated element, trigger a click on it
|
|
88
|
+
// The event doesn't bubble so the host won't receive duplicate clicks
|
|
89
|
+
const associatedElement = this.#associatedElement;
|
|
90
|
+
if (!associatedElement) {
|
|
84
91
|
return;
|
|
85
92
|
}
|
|
86
|
-
|
|
87
|
-
if (
|
|
88
|
-
|
|
93
|
+
const clickOccurredInAssociatedElement = event.composedPath().includes(associatedElement);
|
|
94
|
+
if (!clickOccurredInAssociatedElement) {
|
|
95
|
+
associatedElement.dispatchEvent(new PointerEvent('click', {
|
|
96
|
+
bubbles: false,
|
|
97
|
+
cancelable: true,
|
|
98
|
+
composed: true
|
|
99
|
+
}));
|
|
89
100
|
}
|
|
90
101
|
};
|
|
91
102
|
this.#handleKeydown = (event) => {
|
|
@@ -207,6 +207,11 @@ class CalendarAdapter extends BaseAdapter {
|
|
|
207
207
|
setMonth(month, locale) {
|
|
208
208
|
const monthButton = this._container.querySelector(CALENDAR_CONSTANTS.selectors.MONTH_BUTTON);
|
|
209
209
|
if (monthButton) {
|
|
210
|
+
const span = monthButton.querySelector('span');
|
|
211
|
+
if (span) {
|
|
212
|
+
span.textContent = getLocalizedMonth(month, 'long', locale);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
210
215
|
const content = getMonthButtonContent(month, locale);
|
|
211
216
|
monthButton.replaceChildren(content[0], content[1]);
|
|
212
217
|
return;
|
|
@@ -219,6 +224,11 @@ class CalendarAdapter extends BaseAdapter {
|
|
|
219
224
|
setYear(year, locale) {
|
|
220
225
|
const yearButton = this._container.querySelector(CALENDAR_CONSTANTS.selectors.YEAR_BUTTON);
|
|
221
226
|
if (yearButton) {
|
|
227
|
+
const span = yearButton.querySelector('span');
|
|
228
|
+
if (span) {
|
|
229
|
+
span.textContent = getLocalizedYear(year, 'numeric', locale);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
222
232
|
const content = getYearButtonContent(year, locale);
|
|
223
233
|
yearButton.replaceChildren(content[0], content[1]);
|
|
224
234
|
return;
|
|
@@ -52,8 +52,8 @@ class CalendarMenuAdapter extends BaseAdapter {
|
|
|
52
52
|
setClosed() {
|
|
53
53
|
this._container.classList.remove(CALENDAR_MENU_CONSTANTS.classes.OPEN);
|
|
54
54
|
this._container.classList.add(CALENDAR_MENU_CONSTANTS.classes.CLOSING);
|
|
55
|
-
this.toggleHostAttribute('hidden', true);
|
|
56
55
|
playKeyframeAnimation(this._container, CALENDAR_MENU_CONSTANTS.classes.CLOSING, true).then(() => {
|
|
56
|
+
this.toggleHostAttribute('hidden', true);
|
|
57
57
|
removeAllChildren(this._container);
|
|
58
58
|
});
|
|
59
59
|
}
|
|
@@ -67,6 +67,7 @@ class CalendarMenuAdapter extends BaseAdapter {
|
|
|
67
67
|
}
|
|
68
68
|
this._container.appendChild(element);
|
|
69
69
|
this.toggleHostAttribute('hidden', false);
|
|
70
|
+
this._container.classList.remove(CALENDAR_MENU_CONSTANTS.classes.CLOSING);
|
|
70
71
|
this._container.classList.add(CALENDAR_MENU_CONSTANTS.classes.OPEN);
|
|
71
72
|
if (!replace) {
|
|
72
73
|
this.setFocusAtIndex(focusedIndex, setFocus, preventFocus);
|
|
@@ -82,6 +83,7 @@ class CalendarMenuAdapter extends BaseAdapter {
|
|
|
82
83
|
}
|
|
83
84
|
this._container.appendChild(element);
|
|
84
85
|
this.toggleHostAttribute('hidden', false);
|
|
86
|
+
this._container.classList.remove(CALENDAR_MENU_CONSTANTS.classes.CLOSING);
|
|
85
87
|
this._container.classList.add(CALENDAR_MENU_CONSTANTS.classes.OPEN);
|
|
86
88
|
this._scrollItemIntoView('selected');
|
|
87
89
|
if (!replace) {
|
|
@@ -139,11 +139,13 @@ let ExpansionPanelComponent = class ExpansionPanelComponent extends BaseLitEleme
|
|
|
139
139
|
if (changedProperties.has('open')) {
|
|
140
140
|
this.#handleOpen();
|
|
141
141
|
}
|
|
142
|
-
if (changedProperties.has('open') || changedProperties.has('openIconElement')) {
|
|
143
|
-
this.#tryToggleOpenIcon();
|
|
144
|
-
}
|
|
145
142
|
if (changedProperties.has('openIcon')) {
|
|
146
|
-
|
|
143
|
+
if (this.openIcon) {
|
|
144
|
+
this.openIconElement = this.#getOpenIconElementById(this.openIcon);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (changedProperties.has('open') || changedProperties.has('openIcon') || changedProperties.has('openIconElement')) {
|
|
148
|
+
this.#tryToggleOpenIcon();
|
|
147
149
|
}
|
|
148
150
|
if (changedProperties.has('orientation')) {
|
|
149
151
|
toggleState(this.#internals, 'horizontal', this.orientation === 'horizontal');
|
package/esm/index.d.ts
CHANGED
|
@@ -6,9 +6,9 @@ export * from './backdrop/index.js';
|
|
|
6
6
|
export * from './badge/index.js';
|
|
7
7
|
export * from './banner/index.js';
|
|
8
8
|
export * from './bottom-sheet/index.js';
|
|
9
|
-
export * from './button/index.js';
|
|
10
9
|
export * from './button-area/index.js';
|
|
11
10
|
export * from './button-toggle/index.js';
|
|
11
|
+
export * from './button/index.js';
|
|
12
12
|
export * from './calendar/index.js';
|
|
13
13
|
export * from './card/index.js';
|
|
14
14
|
export * from './checkbox/index.js';
|
|
@@ -28,13 +28,13 @@ export * from './field/index.js';
|
|
|
28
28
|
export * from './file-picker/index.js';
|
|
29
29
|
export * from './floating-action-button/index.js';
|
|
30
30
|
export * from './focus-indicator/index.js';
|
|
31
|
-
export * from './icon/index.js';
|
|
32
31
|
export * from './icon-button/index.js';
|
|
32
|
+
export * from './icon/index.js';
|
|
33
33
|
export * from './inline-message/index.js';
|
|
34
34
|
export * from './key/index.js';
|
|
35
35
|
export * from './keyboard-shortcut/index.js';
|
|
36
|
-
export * from './label/index.js';
|
|
37
36
|
export * from './label-value/index.js';
|
|
37
|
+
export * from './label/index.js';
|
|
38
38
|
export * from './linear-progress/index.js';
|
|
39
39
|
export * from './list/index.js';
|
|
40
40
|
export * from './menu/index.js';
|
|
@@ -46,6 +46,7 @@ export * from './paginator/index.js';
|
|
|
46
46
|
export * from './popover/index.js';
|
|
47
47
|
export * from './radio/index.js';
|
|
48
48
|
export * from './scaffold/index.js';
|
|
49
|
+
export * from './secret/index.js';
|
|
49
50
|
export * from './select/index.js';
|
|
50
51
|
export * from './skeleton/index.js';
|
|
51
52
|
export * from './skip-link/index.js';
|
package/esm/index.js
CHANGED
|
@@ -12,9 +12,9 @@ import { defineBackdropComponent } from './backdrop/index.js';
|
|
|
12
12
|
import { defineBadgeComponent } from './badge/index.js';
|
|
13
13
|
import { defineBannerComponent } from './banner/index.js';
|
|
14
14
|
import { defineBottomSheetComponent } from './bottom-sheet/index.js';
|
|
15
|
-
import { defineButtonComponent } from './button/index.js';
|
|
16
15
|
import { defineButtonAreaComponent } from './button-area/index.js';
|
|
17
16
|
import './button-toggle/index.js';
|
|
17
|
+
import { defineButtonComponent } from './button/index.js';
|
|
18
18
|
import { defineCalendarComponent } from './calendar/index.js';
|
|
19
19
|
import { defineCardComponent } from './card/index.js';
|
|
20
20
|
import { defineCheckboxComponent } from './checkbox/index.js';
|
|
@@ -32,13 +32,13 @@ import { defineFieldComponent } from './field/index.js';
|
|
|
32
32
|
import { defineFilePickerComponent } from './file-picker/index.js';
|
|
33
33
|
import { defineFloatingActionButtonComponent } from './floating-action-button/index.js';
|
|
34
34
|
import { defineFocusIndicatorComponent } from './focus-indicator/index.js';
|
|
35
|
-
import { defineIconComponent } from './icon/index.js';
|
|
36
35
|
import { defineIconButtonComponent } from './icon-button/index.js';
|
|
36
|
+
import { defineIconComponent } from './icon/index.js';
|
|
37
37
|
import { defineInlineMessageComponent } from './inline-message/index.js';
|
|
38
38
|
import './key/index.js';
|
|
39
39
|
import { defineKeyboardShortcutComponent } from './keyboard-shortcut/index.js';
|
|
40
|
-
import { defineLabelComponent } from './label/index.js';
|
|
41
40
|
import { defineLabelValueComponent } from './label-value/index.js';
|
|
41
|
+
import { defineLabelComponent } from './label/index.js';
|
|
42
42
|
import { defineLinearProgressComponent } from './linear-progress/index.js';
|
|
43
43
|
import './list/index.js';
|
|
44
44
|
import { defineListItemComponent } from './list/list-item/index.js';
|
|
@@ -51,6 +51,7 @@ import { definePaginatorComponent } from './paginator/index.js';
|
|
|
51
51
|
import { definePopoverComponent } from './popover/index.js';
|
|
52
52
|
import './radio/index.js';
|
|
53
53
|
import { defineScaffoldComponent } from './scaffold/index.js';
|
|
54
|
+
import { defineSecretComponent } from './secret/index.js';
|
|
54
55
|
import './select/index.js';
|
|
55
56
|
import { defineSelectDropdownComponent } from './select/select-dropdown/index.js';
|
|
56
57
|
import { defineSkeletonComponent } from './skeleton/index.js';
|
|
@@ -353,6 +354,7 @@ export { RadioGroupAdapter } from './radio/radio-group/radio-group-adapter.js';
|
|
|
353
354
|
export { RadioGroupComponent } from './radio/radio-group/radio-group.js';
|
|
354
355
|
export { RadioGroupCore } from './radio/radio-group/radio-group-core.js';
|
|
355
356
|
export { SCAFFOLD_CONSTANTS } from './scaffold/scaffold-constants.js';
|
|
357
|
+
export { SECRET_TAG_NAME, SecretComponent } from './secret/secret.js';
|
|
356
358
|
export { SELECT_CONSTANTS } from './select/select/select-constants.js';
|
|
357
359
|
export { SELECT_DROPDOWN_CONSTANTS } from './select/select-dropdown/select-dropdown-constants.js';
|
|
358
360
|
export { SKELETON_CONSTANTS } from './skeleton/skeleton-constants.js';
|
|
@@ -532,6 +534,7 @@ function defineComponents() {
|
|
|
532
534
|
defineRadioComponent();
|
|
533
535
|
defineRadioGroupComponent();
|
|
534
536
|
defineScaffoldComponent();
|
|
537
|
+
defineSecretComponent();
|
|
535
538
|
defineSelectComponent();
|
|
536
539
|
defineSelectDropdownComponent();
|
|
537
540
|
defineSkeletonComponent();
|
|
@@ -564,4 +567,4 @@ function defineDeprecatedComponents() {
|
|
|
564
567
|
defineDeprecatedIconButtonComponent();
|
|
565
568
|
}
|
|
566
569
|
|
|
567
|
-
export { defineAccordionComponent, defineAppBarComponent, defineAppBarHelpButtonComponent, defineAppBarMenuButtonComponent, defineAppBarNotificationButtonComponent, defineAppBarProfileButtonComponent, defineAppBarSearchComponent, defineAutocompleteComponent, defineAvatarComponent, defineBackdropComponent, defineBadgeComponent, defineBannerComponent, defineBottomSheetComponent, defineButtonAreaComponent, defineButtonComponent, defineButtonToggleComponent, defineButtonToggleGroupComponent, defineCalendarComponent, defineCardComponent, defineCheckboxComponent, defineChipComponent, defineChipFieldComponent, defineChipSetComponent, defineCircularProgressComponent, defineColorPickerComponent, defineComponents, defineDatePickerComponent, defineDateRangePickerComponent, defineDeprecatedButtonComponent, defineDeprecatedComponents, defineDeprecatedIconButtonComponent, defineDialogComponent, defineDividerComponent, defineDrawerComponent, defineExpansionPanelComponent, defineFieldComponent, defineFilePickerComponent, defineFloatingActionButtonComponent, defineFocusIndicatorComponent, defineIconButtonComponent, defineIconComponent, defineInlineMessageComponent, defineKeyComponent, defineKeyItemComponent, defineKeyboardShortcutComponent, defineLabelComponent, defineLabelValueComponent, defineLinearProgressComponent, defineListComponent, defineListItemComponent, defineMenuComponent, defineMeterComponent, defineMeterGroupComponent, defineMiniDrawerComponent, defineModalDrawerComponent, defineOpenIconComponent, defineOptionComponent, defineOptionGroupComponent, defineOverlayComponent, definePageStateComponent, definePaginatorComponent, definePopoverComponent, defineProfileCardComponent, defineRadioComponent, defineRadioGroupComponent, defineScaffoldComponent, defineSelectComponent, defineSelectDropdownComponent, defineSkeletonComponent, defineSkipLinkComponent, defineSliderComponent, defineSplitViewComponent, defineStackComponent, defineStateLayerComponent, defineStepComponent, defineStepperComponent, defineSwitchComponent, defineTabBarComponent, defineTabComponent, defineTableComponent, defineTextFieldComponent, defineTimePickerComponent, defineToastComponent, defineToolbarComponent, defineTooltipComponent, defineTreeComponent, defineTreeItemComponent, defineViewComponent, defineViewSwitcherComponent };
|
|
570
|
+
export { defineAccordionComponent, defineAppBarComponent, defineAppBarHelpButtonComponent, defineAppBarMenuButtonComponent, defineAppBarNotificationButtonComponent, defineAppBarProfileButtonComponent, defineAppBarSearchComponent, defineAutocompleteComponent, defineAvatarComponent, defineBackdropComponent, defineBadgeComponent, defineBannerComponent, defineBottomSheetComponent, defineButtonAreaComponent, defineButtonComponent, defineButtonToggleComponent, defineButtonToggleGroupComponent, defineCalendarComponent, defineCardComponent, defineCheckboxComponent, defineChipComponent, defineChipFieldComponent, defineChipSetComponent, defineCircularProgressComponent, defineColorPickerComponent, defineComponents, defineDatePickerComponent, defineDateRangePickerComponent, defineDeprecatedButtonComponent, defineDeprecatedComponents, defineDeprecatedIconButtonComponent, defineDialogComponent, defineDividerComponent, defineDrawerComponent, defineExpansionPanelComponent, defineFieldComponent, defineFilePickerComponent, defineFloatingActionButtonComponent, defineFocusIndicatorComponent, defineIconButtonComponent, defineIconComponent, defineInlineMessageComponent, defineKeyComponent, defineKeyItemComponent, defineKeyboardShortcutComponent, defineLabelComponent, defineLabelValueComponent, defineLinearProgressComponent, defineListComponent, defineListItemComponent, defineMenuComponent, defineMeterComponent, defineMeterGroupComponent, defineMiniDrawerComponent, defineModalDrawerComponent, defineOpenIconComponent, defineOptionComponent, defineOptionGroupComponent, defineOverlayComponent, definePageStateComponent, definePaginatorComponent, definePopoverComponent, defineProfileCardComponent, defineRadioComponent, defineRadioGroupComponent, defineScaffoldComponent, defineSecretComponent, defineSelectComponent, defineSelectDropdownComponent, defineSkeletonComponent, defineSkipLinkComponent, defineSliderComponent, defineSplitViewComponent, defineStackComponent, defineStateLayerComponent, defineStepComponent, defineStepperComponent, defineSwitchComponent, defineTabBarComponent, defineTabComponent, defineTableComponent, defineTextFieldComponent, defineTimePickerComponent, defineToastComponent, defineToolbarComponent, defineTooltipComponent, defineTreeComponent, defineTreeItemComponent, defineViewComponent, defineViewSwitcherComponent };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { defineCustomElement } from '@tylertech/forge-core';
|
|
8
|
+
import { SecretComponent } from './secret.js';
|
|
9
|
+
export { SECRET_TAG_NAME } from './secret.js';
|
|
10
|
+
|
|
11
|
+
/** @deprecated Definition functions are deprecated and replaced with side effect imports (`import '@tylertech/forge/secret'`). */
|
|
12
|
+
function defineSecretComponent() {
|
|
13
|
+
defineCustomElement(SecretComponent);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { SecretComponent, defineSecretComponent };
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENT_DEPENDENCIES_PROPERTY, CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
|
|
2
|
+
import { PropertyValues, TemplateResult } from 'lit';
|
|
3
|
+
import { BaseLitElement } from '../core/base/base-lit-element.js';
|
|
4
|
+
import { IconButtonComponent } from '../icon-button/index.js';
|
|
5
|
+
import { IconComponent } from '../icon/index.js';
|
|
6
|
+
import { TooltipComponent } from '../tooltip/index.js';
|
|
7
|
+
import { ButtonComponent } from '../button/index.js';
|
|
8
|
+
import '../button/button.js';
|
|
9
|
+
import '../icon-button/icon-button.js';
|
|
10
|
+
import '../tooltip/tooltip.js';
|
|
11
|
+
export type SecretVariant = 'blur' | 'masked' | 'noise';
|
|
12
|
+
export type SecretButtonPosition = 'start' | 'end';
|
|
13
|
+
export declare const SECRET_TAG_NAME: keyof HTMLElementTagNameMap;
|
|
14
|
+
/**
|
|
15
|
+
* @tag forge-secret
|
|
16
|
+
*
|
|
17
|
+
* @summary A component that conceals content with a blur or dot mask, revealing it on user interaction.
|
|
18
|
+
*
|
|
19
|
+
* @description
|
|
20
|
+
* The secret component blurs or masks content and provides a connected button to reveal it.
|
|
21
|
+
* Content is revealed on click/keyboard interaction, with optional hover reveal. Multiple instances
|
|
22
|
+
* sharing a name act as a radio group where only one can be revealed at a time.
|
|
23
|
+
*
|
|
24
|
+
* @cssproperty --forge-secret-blur - The radius of the blur effect.
|
|
25
|
+
* @cssproperty --forge-secret-button-background - The background color of the button.
|
|
26
|
+
* @cssproperty --forge-secret-button-color - The text and icon color of the button.
|
|
27
|
+
* @cssproperty --forge-secret-button-shape - The button's border radius.
|
|
28
|
+
* @cssproperty --forge-secret-button-padding - The inline padding around the button or inline and block padding around the text button.
|
|
29
|
+
* @cssproperty --forge-secret-icon-size - The icon's size.
|
|
30
|
+
* @cssproperty --forge-secret-text-button-shape - The text button's border radius.
|
|
31
|
+
* @cssproperty --forge-secret-text-decoration-line - The decoration line applied to open inline content.
|
|
32
|
+
* @cssproperty --forge-secret-text-decoration-style - The style of the text decoration line.
|
|
33
|
+
* @cssproperty --forge-secret-text-decoration-color - The color of the text decoration line.
|
|
34
|
+
* @cssproperty --forge-secret-text-underline-offset - The spacing between the inline content and the text decoration line.
|
|
35
|
+
* @cssproperty --forge-secret-transition-duration - The duration of transitions.
|
|
36
|
+
* @cssproperty --forge-secret-transition-easing - The timing function of transitions.
|
|
37
|
+
*
|
|
38
|
+
* @slot - Default slot for the secret content.
|
|
39
|
+
* @slot close-icon - An icon that is shown when the secret is open, indicating it can be closed.
|
|
40
|
+
* @slot open-icon - An icon that is shown when the secret is closed, indicating it can be opened.
|
|
41
|
+
* @slot label - Text content that appears in the tooltip attached to the button or as the button text when set to block.
|
|
42
|
+
*
|
|
43
|
+
* @state open - Indicates that the content is visible.
|
|
44
|
+
* @state block - Indicates that the secret is displayed as a block element instead of inline.
|
|
45
|
+
*
|
|
46
|
+
* @csspart root - The root container.
|
|
47
|
+
* @csspart content - The content container.
|
|
48
|
+
* @csspart button - The toggle button element.
|
|
49
|
+
* @csspart text-button - The toggle button element when the secret is set to block.
|
|
50
|
+
*
|
|
51
|
+
* @cssclass forge-secret - The secret component container (required).
|
|
52
|
+
* @cssclass forge-secret--blur - Applies a blur effect to conceal content when the button has `aria-expanded="false"`.
|
|
53
|
+
* @cssclass forge-secret--masked - Applies a dot mask to conceal content when the button has `aria-expanded="false"`. Not applicable when the secret is set to block. In that case the blur variant is used instead.
|
|
54
|
+
* @cssclass forge-secret--noise - Applies a noise effect to conceal content when the button has `aria-expanded="false"`.
|
|
55
|
+
* @cssclass forge-secret--block - Displays the secret as a block element.
|
|
56
|
+
* @cssclass forge-secret--show-on-hover - Reveals the secret content when hovering over the component or focusing the button.
|
|
57
|
+
* @cssclass forge-secret__content - The content to be concealed or revealed.
|
|
58
|
+
* @cssclass forge-secret__button - The icon button used to toggle an inline secret.
|
|
59
|
+
* @cssclass forge-secret__text-button - The text button used to toggle a block secret.
|
|
60
|
+
* @cssclass forge-secret__masked - The element replacing concealed content when the masked variant is used. The `data-mask` attribute on this element sets its content.
|
|
61
|
+
*
|
|
62
|
+
* @fires {ToggleEvent} toggle - Dispatched when the secret opens or closes.
|
|
63
|
+
*/
|
|
64
|
+
export declare class SecretComponent extends BaseLitElement {
|
|
65
|
+
#private;
|
|
66
|
+
static styles: import("lit").CSSResult;
|
|
67
|
+
/** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
|
|
68
|
+
static [CUSTOM_ELEMENT_NAME_PROPERTY]: keyof HTMLElementTagNameMap;
|
|
69
|
+
/** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
|
|
70
|
+
static [CUSTOM_ELEMENT_DEPENDENCIES_PROPERTY]: (typeof IconComponent | typeof IconButtonComponent | typeof TooltipComponent | typeof ButtonComponent)[];
|
|
71
|
+
/**
|
|
72
|
+
* Whether the secret content is visible.
|
|
73
|
+
* @attribute
|
|
74
|
+
* @default false
|
|
75
|
+
*/
|
|
76
|
+
open: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* The style applied to hidden content when the secret is set to inline. Possible values are blur, masked, and noise.
|
|
79
|
+
* @attribute
|
|
80
|
+
* @default 'blur'
|
|
81
|
+
*/
|
|
82
|
+
variant: SecretVariant;
|
|
83
|
+
/**
|
|
84
|
+
* The mask pattern to use with the masked variant. When empty the slotted text content is used as the mask.
|
|
85
|
+
* @attribute
|
|
86
|
+
* @default ''
|
|
87
|
+
*/
|
|
88
|
+
mask: string;
|
|
89
|
+
/**
|
|
90
|
+
* The character to replace characters with in the masked variant.
|
|
91
|
+
* @attribute mask-character
|
|
92
|
+
* @default '●'
|
|
93
|
+
*/
|
|
94
|
+
maskCharacter: string;
|
|
95
|
+
/**
|
|
96
|
+
* Characters that will not be replaced by the mask character in the masked variant.
|
|
97
|
+
* @attribute unmasked-characters
|
|
98
|
+
* @default ''
|
|
99
|
+
*/
|
|
100
|
+
unmaskedCharacters: string;
|
|
101
|
+
/**
|
|
102
|
+
* Whether the secret content should be displayed as a block element instead of inline with text.
|
|
103
|
+
* @attribute
|
|
104
|
+
* @default false
|
|
105
|
+
*/
|
|
106
|
+
block: boolean;
|
|
107
|
+
/**
|
|
108
|
+
* The position of the button when the secret is set to inline. Possible values are start and end.
|
|
109
|
+
* @attribute button-position
|
|
110
|
+
* @default 'end'
|
|
111
|
+
*/
|
|
112
|
+
buttonPosition: SecretButtonPosition;
|
|
113
|
+
/**
|
|
114
|
+
* Whether to reveal content on hover/focus in addition to clicks.
|
|
115
|
+
* @attribute show-on-hover
|
|
116
|
+
* @default false
|
|
117
|
+
*/
|
|
118
|
+
showOnHover: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* When set, secrets with the same name will close when another secret with that name is opened.
|
|
121
|
+
* @attribute
|
|
122
|
+
* @default ''
|
|
123
|
+
*/
|
|
124
|
+
name: string;
|
|
125
|
+
private _buttonElement;
|
|
126
|
+
private _contentNodes;
|
|
127
|
+
private _mask;
|
|
128
|
+
constructor();
|
|
129
|
+
firstUpdated(): void;
|
|
130
|
+
willUpdate(changedProperties: PropertyValues<this>): void;
|
|
131
|
+
updated(changedProperties: PropertyValues<this>): void;
|
|
132
|
+
render(): TemplateResult;
|
|
133
|
+
}
|
|
134
|
+
declare global {
|
|
135
|
+
interface HTMLElementTagNameMap {
|
|
136
|
+
'forge-secret': SecretComponent;
|
|
137
|
+
}
|
|
138
|
+
}
|