@redvars/peacock 3.6.2 → 3.6.3
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/dist/assets/components.css.map +1 -1
- package/dist/assets/styles.css.map +1 -1
- package/dist/{button-colors-AvGh22Zn.js → button-colors-Cg6oxiz-.js} +126 -116
- package/dist/{button-colors-AvGh22Zn.js.map → button-colors-Cg6oxiz-.js.map} +1 -1
- package/dist/button-group.js +2 -2
- package/dist/button.js +17 -14
- package/dist/button.js.map +1 -1
- package/dist/canvas.js +126 -107
- package/dist/canvas.js.map +1 -1
- package/dist/custom-elements-jsdocs.json +665 -162
- package/dist/custom-elements.json +859 -326
- package/dist/{flow-designer-node-BWrPuxAR.js → flow-designer-node-9Bqyn6qx.js} +2 -1
- package/dist/flow-designer-node-9Bqyn6qx.js.map +1 -0
- package/dist/flow-designer-node.js +1 -1
- package/dist/flow-designer.js +3 -3
- package/dist/{icon-button-ohxHhy4t.js → icon-button-AdJBEoNy.js} +34 -30
- package/dist/icon-button-AdJBEoNy.js.map +1 -0
- package/dist/index.js +4 -4
- package/dist/{navigation-rail-CD7IrqbN.js → navigation-rail-DAUuJ_Yp.js} +735 -370
- package/dist/navigation-rail-DAUuJ_Yp.js.map +1 -0
- package/dist/peacock-loader.js +6 -3
- package/dist/peacock-loader.js.map +1 -1
- package/dist/popover-content.js +1 -1
- package/dist/popover-content.js.map +1 -1
- package/dist/search.js +11 -14
- package/dist/search.js.map +1 -1
- package/dist/src/canvas/canvas.d.ts +3 -3
- package/dist/src/field/field.d.ts +1 -0
- package/dist/src/flow-designer/flow-designer-node.d.ts +1 -0
- package/dist/src/image/image.d.ts +2 -2
- package/dist/src/index.d.ts +1 -0
- package/dist/src/input/input.d.ts +1 -3
- package/dist/src/item/index.d.ts +1 -0
- package/dist/src/item/item.d.ts +48 -0
- package/dist/src/menu/menu-item/menu-item.d.ts +8 -9
- package/dist/src/menu/sub-menu/sub-menu.d.ts +1 -0
- package/dist/src/navigation-rail/navigation-rail.d.ts +2 -6
- package/dist/src/popover/popover-content.d.ts +1 -1
- package/dist/src/search/search.d.ts +2 -6
- package/dist/test/item.test.d.ts +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/scss/mixin.scss +23 -0
- package/src/button/button/button-sizes.scss +11 -11
- package/src/button/button/button.scss +96 -122
- package/src/button/button/button.ts +37 -34
- package/src/button/icon-button/icon-button-sizes.scss +8 -8
- package/src/button/icon-button/icon-button.ts +23 -20
- package/src/canvas/canvas.scss +18 -6
- package/src/canvas/canvas.ts +125 -103
- package/src/chip/chip/chip.scss +1 -1
- package/src/empty-state/empty-state.scss +1 -0
- package/src/field/field.ts +6 -0
- package/src/flow-designer/flow-designer-node.ts +1 -0
- package/src/image/image.scss +21 -16
- package/src/image/image.ts +13 -14
- package/src/index.ts +1 -0
- package/src/input/input.ts +16 -25
- package/src/item/index.ts +1 -0
- package/src/item/item.scss +184 -0
- package/src/item/item.ts +340 -0
- package/src/menu/menu/menu.ts +5 -9
- package/src/menu/menu-item/menu-item.scss +30 -108
- package/src/menu/menu-item/menu-item.ts +89 -129
- package/src/menu/sub-menu/sub-menu.ts +6 -2
- package/src/navigation-rail/navigation-rail.ts +2 -6
- package/src/peacock-loader.ts +4 -0
- package/src/popover/popover-content.ts +1 -1
- package/src/search/search.ts +11 -16
- package/src/select/option.ts +1 -1
- package/src/select/select.scss +1 -10
- package/src/select/select.ts +2 -0
- package/dist/flow-designer-node-BWrPuxAR.js.map +0 -1
- package/dist/icon-button-ohxHhy4t.js.map +0 -1
- package/dist/navigation-rail-CD7IrqbN.js.map +0 -1
|
@@ -3,118 +3,40 @@
|
|
|
3
3
|
@include mixin.base-styles;
|
|
4
4
|
|
|
5
5
|
:host {
|
|
6
|
-
padding-inline: var(--spacing-050);
|
|
7
6
|
outline: none;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.menu-item {
|
|
11
|
-
position: relative;
|
|
12
|
-
height: 3rem;
|
|
13
|
-
display: flex;
|
|
14
|
-
align-items: center;
|
|
15
|
-
padding-inline: 0.75rem;
|
|
16
|
-
outline: 0;
|
|
17
|
-
text-decoration: none;
|
|
18
|
-
|
|
19
|
-
@include mixin.get-typography(label-large);
|
|
20
|
-
|
|
21
|
-
.menu-item-content {
|
|
22
|
-
display: flex;
|
|
23
|
-
align-items: center;
|
|
24
|
-
z-index: 1;
|
|
25
|
-
width: 100%;
|
|
26
|
-
gap: var(--spacing-100);
|
|
27
|
-
|
|
28
|
-
color: var(--_label-text-color);
|
|
29
|
-
opacity: var(--_label-text-opacity, 1);
|
|
30
|
-
--icon-size: var(--button-icon-size, var(--_button-icon-size));
|
|
31
|
-
--icon-color: var(--_label-text-color);
|
|
32
|
-
|
|
33
|
-
.slot-container {
|
|
34
|
-
flex: 1;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
.background {
|
|
40
|
-
display: block;
|
|
41
|
-
position: absolute;
|
|
42
|
-
left: 0;
|
|
43
|
-
top: 0;
|
|
44
|
-
width: 100%;
|
|
45
|
-
height: 100%;
|
|
46
|
-
background-color: var(--_container-color);
|
|
47
|
-
opacity: var(--_container-opacity, 1);
|
|
48
7
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
corner-shape: var(--_container-corner-shape-variant);
|
|
54
|
-
pointer-events: none;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/*
|
|
58
|
-
Background layers
|
|
59
|
-
*/
|
|
60
|
-
.focus-ring {
|
|
61
|
-
z-index: 2;
|
|
62
|
-
--focus-ring-container-shape-start-start: var(--_container-shape-start-start);
|
|
63
|
-
--focus-ring-container-shape-start-end: var(--_container-shape-start-end);
|
|
64
|
-
--focus-ring-container-shape-end-start: var(--_container-shape-end-start);
|
|
65
|
-
--focus-ring-container-shape-end-end: var(--_container-shape-end-end);
|
|
66
|
-
--focus-ring-container-shape-variant: var(--_container-corner-shape-variant);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
.ripple {
|
|
70
|
-
--ripple-state-opacity: var(--_container-state-opacity, 0);
|
|
71
|
-
--ripple-pressed-color: var(--_container-state-color);
|
|
72
|
-
border-start-start-radius: var(--_container-shape-start-start);
|
|
73
|
-
border-start-end-radius: var(--_container-shape-start-end);
|
|
74
|
-
border-end-start-radius: var(--_container-shape-end-start);
|
|
75
|
-
border-end-end-radius: var(--_container-shape-end-end);
|
|
76
|
-
corner-shape: var(--_container-corner-shape-variant);
|
|
77
|
-
}
|
|
8
|
+
--menu-item-container-shape-start-start: var(--shape-corner-extra-small);
|
|
9
|
+
--menu-item-container-shape-start-end: var(--shape-corner-extra-small);
|
|
10
|
+
--menu-item-container-shape-end-start: var(--shape-corner-extra-small);
|
|
11
|
+
--menu-item-container-shape-end-end: var(--shape-corner-extra-small);
|
|
78
12
|
}
|
|
79
13
|
|
|
80
|
-
|
|
81
14
|
.menu-item {
|
|
15
|
+
width: 100%;
|
|
16
|
+
--item-height: 3rem;
|
|
17
|
+
--item-container-shape-start-start: var(--menu-item-container-shape-start-start);
|
|
18
|
+
--item-container-shape-start-end: var(--menu-item-container-shape-start-end);
|
|
19
|
+
--item-container-shape-end-start: var(--menu-item-container-shape-end-start);
|
|
20
|
+
--item-container-shape-end-end: var(--menu-item-container-shape-end-end);
|
|
21
|
+
--item-container-shape-variant: none;
|
|
22
|
+
|
|
23
|
+
--item-label-font-family: var(--typography-label-large-font-family);
|
|
24
|
+
--item-label-font-size: var(--typography-label-large-font-size);
|
|
25
|
+
--item-label-font-weight: var(--typography-label-large-font-weight);
|
|
26
|
+
--item-label-line-height: var(--typography-label-large-line-height);
|
|
27
|
+
--item-label-letter-spacing: var(--typography-label-large-letter-spacing);
|
|
28
|
+
|
|
29
|
+
--item-label-text-color: var(--menu-item-label-color);
|
|
30
|
+
--item-leading-trailing-color: var(--menu-item-label-color);
|
|
31
|
+
--item-supporting-text-color: var(--menu-item-label-color);
|
|
32
|
+
--item-container-selected-color: var(--menu-item-container-selected-color);
|
|
33
|
+
--item-label-text-selected-color: var(--menu-item-label-selected-color);
|
|
34
|
+
--item-icon-size: var(--button-icon-size, var(--_button-icon-size));
|
|
35
|
+
}
|
|
82
36
|
|
|
83
|
-
|
|
84
|
-
--
|
|
85
|
-
--
|
|
86
|
-
--
|
|
87
|
-
--
|
|
88
|
-
--_label-text-color: var(--menu-item-label-color);
|
|
89
|
-
--_container-state-color: var(--_label-text-color);
|
|
90
|
-
|
|
91
|
-
&:hover:not(:where(.disabled, .selected)) {
|
|
92
|
-
--_container-state-opacity: 0.08;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
&.pressed:not(:where(.disabled)) {
|
|
96
|
-
--_container-state-opacity: 0.12;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
&.selected {
|
|
100
|
-
--_container-color: var(--menu-item-container-selected-color);
|
|
101
|
-
--_label-text-color: var(--menu-item-label-selected-color);
|
|
102
|
-
--_container-shape-start-start: var(--shape-corner-large);
|
|
103
|
-
--_container-shape-start-end: var(--shape-corner-large);
|
|
104
|
-
--_container-shape-end-start: var(--shape-corner-large);
|
|
105
|
-
--_container-shape-end-end: var(--shape-corner-large);
|
|
106
|
-
--_container-corner-shape-variant: none;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
&.disabled {
|
|
110
|
-
cursor: not-allowed;
|
|
111
|
-
--_container-color: var(--color-on-surface);
|
|
112
|
-
--_container-opacity: 0.1;
|
|
113
|
-
--_label-text-color: var(--color-on-surface);
|
|
114
|
-
--_label-text-opacity: 0.38;
|
|
115
|
-
|
|
116
|
-
.ripple {
|
|
117
|
-
display: none;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
37
|
+
:host([selected]) {
|
|
38
|
+
--menu-item-container-shape-start-start: var(--shape-corner-large);
|
|
39
|
+
--menu-item-container-shape-start-end: var(--shape-corner-large);
|
|
40
|
+
--menu-item-container-shape-end-start: var(--shape-corner-large);
|
|
41
|
+
--menu-item-container-shape-end-end: var(--shape-corner-large);
|
|
120
42
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { html, LitElement, nothing } from 'lit';
|
|
2
|
-
import { property, query
|
|
3
|
-
import {
|
|
2
|
+
import { property, query } from 'lit/decorators.js';
|
|
3
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
4
4
|
import styles from './menu-item.scss';
|
|
5
5
|
import colorStyles from './menu-item-colors.scss';
|
|
6
6
|
import BaseButtonMixin from '@/__mixins/BaseButtonMixin.js';
|
|
7
7
|
import BaseHyperlinkMixin from '@/__mixins/BaseHyperlinkMixin.js';
|
|
8
|
-
import {
|
|
8
|
+
import { Item } from '@/item/item.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* @label Menu Item
|
|
@@ -21,7 +21,6 @@ import { dispatchActivationClick, isActivationClick } from '@/__utils/dispatch-e
|
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
23
|
export class MenuItem extends BaseButtonMixin(BaseHyperlinkMixin(LitElement)) {
|
|
24
|
-
|
|
25
24
|
@property({ type: String }) value = '';
|
|
26
25
|
|
|
27
26
|
@property({ type: Boolean, reflect: true }) selected = false;
|
|
@@ -37,31 +36,40 @@ export class MenuItem extends BaseButtonMixin(BaseHyperlinkMixin(LitElement)) {
|
|
|
37
36
|
|
|
38
37
|
static styles = [styles, colorStyles];
|
|
39
38
|
|
|
40
|
-
@query('
|
|
39
|
+
@query('wc-item') readonly itemElement!: Item | null;
|
|
41
40
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
private readonly _contentObserver = new MutationObserver(() => {
|
|
42
|
+
this.requestUpdate();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
private _rovingTabIndex = -1;
|
|
47
46
|
|
|
48
47
|
connectedCallback() {
|
|
49
48
|
// eslint-disable-next-line wc/guard-super-call
|
|
50
49
|
super.connectedCallback();
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
this._contentObserver.observe(this, {
|
|
51
|
+
subtree: true,
|
|
52
|
+
childList: true,
|
|
53
|
+
characterData: true,
|
|
54
|
+
attributes: true,
|
|
55
|
+
attributeFilter: ['slot'],
|
|
56
|
+
});
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
disconnectedCallback() {
|
|
60
|
-
|
|
61
|
-
this.removeEventListener('click', this.__dispatchClickWithThrottle);
|
|
60
|
+
this._contentObserver.disconnect();
|
|
62
61
|
super.disconnectedCallback();
|
|
63
62
|
}
|
|
64
63
|
|
|
64
|
+
override get tabIndex() {
|
|
65
|
+
return this._rovingTabIndex;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
override set tabIndex(value: number) {
|
|
69
|
+
this._rovingTabIndex = value;
|
|
70
|
+
this.requestUpdate();
|
|
71
|
+
}
|
|
72
|
+
|
|
65
73
|
override focus() {
|
|
66
74
|
this.itemElement?.focus();
|
|
67
75
|
}
|
|
@@ -70,129 +78,81 @@ export class MenuItem extends BaseButtonMixin(BaseHyperlinkMixin(LitElement)) {
|
|
|
70
78
|
this.itemElement?.blur();
|
|
71
79
|
}
|
|
72
80
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
__dispatchClick = (event: MouseEvent | KeyboardEvent) => {
|
|
79
|
-
// If the button is soft-disabled or a disabled link, we need to explicitly
|
|
80
|
-
// prevent the click from propagating to other event listeners as well as
|
|
81
|
-
// prevent the default action.
|
|
82
|
-
if (this.softDisabled || (this.disabled && this.href)) {
|
|
83
|
-
event.stopImmediatePropagation();
|
|
84
|
-
event.preventDefault();
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (!isActivationClick(event) || !this.itemElement) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
this.focus();
|
|
93
|
-
dispatchActivationClick(this.itemElement);
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
__handleKeyDown = (event: KeyboardEvent) => {
|
|
97
|
-
this.__handlePress(event);
|
|
98
|
-
|
|
99
|
-
if (this.disabled || this.softDisabled || !this.itemElement) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (event.key === ' ') {
|
|
104
|
-
event.preventDefault();
|
|
105
|
-
this.itemElement.click();
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (event.key === 'Enter' && !this.__isLink()) {
|
|
110
|
-
event.preventDefault();
|
|
111
|
-
this.itemElement.click();
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
__handlePress = (event: KeyboardEvent | MouseEvent) => {
|
|
116
|
-
if (this.disabled || this.softDisabled) return;
|
|
117
|
-
if (
|
|
118
|
-
event instanceof KeyboardEvent &&
|
|
119
|
-
event.type === 'keydown' &&
|
|
120
|
-
(event.key === 'Enter' || event.key === ' ')
|
|
121
|
-
) {
|
|
122
|
-
this.isPressed = true;
|
|
123
|
-
} else if (event.type === 'mousedown') {
|
|
124
|
-
this.isPressed = true;
|
|
125
|
-
} else {
|
|
126
|
-
this.isPressed = false;
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
render() {
|
|
131
|
-
const isLink = this.__isLink();
|
|
81
|
+
private _hasNamedSlot(...names: string[]) {
|
|
82
|
+
return names.some(name =>
|
|
83
|
+
Array.from(this.children).some(child => child.getAttribute('slot') === name),
|
|
84
|
+
);
|
|
85
|
+
}
|
|
132
86
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
87
|
+
private _hasDefaultSlot() {
|
|
88
|
+
return Array.from(this.childNodes).some(node => {
|
|
89
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
90
|
+
return Boolean(node.textContent?.trim());
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return (
|
|
94
|
+
node.nodeType === Node.ELEMENT_NODE &&
|
|
95
|
+
!(node as Element).hasAttribute('slot')
|
|
96
|
+
);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
139
99
|
|
|
100
|
+
render() {
|
|
140
101
|
const controls = this.getAttribute('aria-controls');
|
|
141
102
|
|
|
142
|
-
|
|
143
|
-
|
|
103
|
+
return html`
|
|
104
|
+
<wc-item
|
|
144
105
|
id="item"
|
|
145
|
-
class
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
106
|
+
class="menu-item"
|
|
107
|
+
role="menuitem"
|
|
108
|
+
tabindex=${String(this.tabIndex)}
|
|
109
|
+
?selected=${this.selected}
|
|
110
|
+
?disabled=${this.disabled}
|
|
111
|
+
.softDisabled=${this.softDisabled}
|
|
112
|
+
.htmlType=${this.htmlType}
|
|
113
|
+
.href=${this.href}
|
|
114
|
+
.target=${this.target}
|
|
115
|
+
.rel=${this.rel}
|
|
116
|
+
.download=${this.download}
|
|
156
117
|
aria-haspopup=${this.hasSubmenu ? 'menu' : nothing}
|
|
157
|
-
aria-controls=${this.hasSubmenu && controls ? controls :
|
|
158
|
-
aria-expanded=${this.hasSubmenu ? String(this.submenuOpen) :
|
|
118
|
+
aria-controls=${ifDefined(this.hasSubmenu && controls ? controls : undefined)}
|
|
119
|
+
aria-expanded=${ifDefined(this.hasSubmenu ? String(this.submenuOpen) : undefined)}
|
|
159
120
|
>
|
|
160
121
|
${this.renderContent()}
|
|
161
|
-
</
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
return html`<div
|
|
165
|
-
id="item"
|
|
166
|
-
class=${classMap(cssClasses)}
|
|
167
|
-
tabindex=${this.disabled ? '-1' : '0'}
|
|
168
|
-
|
|
169
|
-
@click=${this.__dispatchClick}
|
|
170
|
-
@mousedown=${this.__handlePress}
|
|
171
|
-
@keydown=${this.__handleKeyDown}
|
|
172
|
-
@keyup=${this.__handlePress}
|
|
173
|
-
|
|
174
|
-
aria-disabled=${String(this.disabled)}
|
|
175
|
-
aria-haspopup=${this.hasSubmenu ? 'menu' : nothing}
|
|
176
|
-
aria-controls=${this.hasSubmenu && controls ? controls : nothing}
|
|
177
|
-
aria-expanded=${this.hasSubmenu ? String(this.submenuOpen) : nothing}
|
|
178
|
-
>
|
|
179
|
-
${this.renderContent()}
|
|
180
|
-
</div>`;
|
|
122
|
+
</wc-item>
|
|
123
|
+
`;
|
|
181
124
|
}
|
|
182
125
|
|
|
183
126
|
renderContent() {
|
|
127
|
+
const hasStart = this._hasNamedSlot('start');
|
|
128
|
+
const hasOverline = this._hasNamedSlot('overline');
|
|
129
|
+
const hasHeadline = this._hasNamedSlot('headline');
|
|
130
|
+
const hasDefault = this._hasDefaultSlot();
|
|
131
|
+
const hasSupportingText = this._hasNamedSlot('supporting-text');
|
|
132
|
+
const hasTrailingSupportingText = this._hasNamedSlot(
|
|
133
|
+
'trailing-supporting-text',
|
|
134
|
+
);
|
|
135
|
+
const hasEnd = this._hasNamedSlot('end');
|
|
136
|
+
|
|
184
137
|
return html`
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
138
|
+
${hasStart ? html`<slot name="start" slot="start"></slot>` : nothing}
|
|
139
|
+
${hasOverline
|
|
140
|
+
? html`<slot name="overline" slot="overline"></slot>`
|
|
141
|
+
: nothing}
|
|
142
|
+
${hasHeadline ? html`<slot name="headline" slot="headline"></slot>` : nothing}
|
|
143
|
+
${hasDefault ? html`<slot></slot>` : nothing}
|
|
144
|
+
${hasSupportingText
|
|
145
|
+
? html`<slot name="supporting-text" slot="supporting-text"></slot>`
|
|
146
|
+
: nothing}
|
|
147
|
+
${hasTrailingSupportingText
|
|
148
|
+
? html`
|
|
149
|
+
<slot
|
|
150
|
+
name="trailing-supporting-text"
|
|
151
|
+
slot="trailing-supporting-text"
|
|
152
|
+
></slot>
|
|
153
|
+
`
|
|
154
|
+
: nothing}
|
|
155
|
+
${hasEnd ? html`<slot name="end" slot="end"></slot>` : nothing}
|
|
196
156
|
`;
|
|
197
157
|
}
|
|
198
158
|
}
|
|
@@ -38,6 +38,10 @@ export class SubMenu extends LitElement {
|
|
|
38
38
|
|
|
39
39
|
private _closeTimeout?: number;
|
|
40
40
|
|
|
41
|
+
private _resolveAnchorElement(item: MenuItem) {
|
|
42
|
+
return item.itemElement?.itemElement ?? item.itemElement ?? item;
|
|
43
|
+
}
|
|
44
|
+
|
|
41
45
|
private readonly _onChildMenuOpened = () => {
|
|
42
46
|
const { item } = this;
|
|
43
47
|
if (!item) {
|
|
@@ -91,7 +95,7 @@ export class SubMenu extends LitElement {
|
|
|
91
95
|
return;
|
|
92
96
|
}
|
|
93
97
|
|
|
94
|
-
menu.anchorElement = item;
|
|
98
|
+
menu.anchorElement = this._resolveAnchorElement(item);
|
|
95
99
|
menu.isSubmenu = true;
|
|
96
100
|
menu.show();
|
|
97
101
|
|
|
@@ -152,7 +156,7 @@ export class SubMenu extends LitElement {
|
|
|
152
156
|
menu.addEventListener('closed', this._onChildMenuClosed);
|
|
153
157
|
|
|
154
158
|
menu.isSubmenu = true;
|
|
155
|
-
menu.anchorElement = item;
|
|
159
|
+
menu.anchorElement = this._resolveAnchorElement(item);
|
|
156
160
|
menu.placement =
|
|
157
161
|
getComputedStyle(this).direction === 'rtl' ? 'left-start' : 'right-start';
|
|
158
162
|
menu.offset = 4;
|
|
@@ -32,17 +32,13 @@ import { NavigationRailItem } from './navigation-rail-item.js';
|
|
|
32
32
|
* ```html
|
|
33
33
|
* <wc-navigation-rail>
|
|
34
34
|
* <wc-navigation-rail-item active>
|
|
35
|
-
* <wc-icon slot="icon"
|
|
35
|
+
* <wc-icon slot="icon" name="home"></wc-icon>
|
|
36
36
|
* Home
|
|
37
37
|
* </wc-navigation-rail-item>
|
|
38
38
|
* <wc-navigation-rail-item>
|
|
39
|
-
* <wc-icon slot="icon"
|
|
39
|
+
* <wc-icon slot="icon" name="search"></wc-icon>
|
|
40
40
|
* Search
|
|
41
41
|
* </wc-navigation-rail-item>
|
|
42
|
-
* <wc-navigation-rail-item>
|
|
43
|
-
* <wc-icon slot="icon">settings</wc-icon>
|
|
44
|
-
* Settings
|
|
45
|
-
* </wc-navigation-rail-item>
|
|
46
42
|
* </wc-navigation-rail>
|
|
47
43
|
* ```
|
|
48
44
|
* @tags navigation
|
package/src/peacock-loader.ts
CHANGED
|
@@ -30,6 +30,7 @@ import { Radio } from './radio/radio.js';
|
|
|
30
30
|
import { Menu } from './menu/menu/menu.js';
|
|
31
31
|
import { MenuItem } from './menu/menu-item/menu-item.js';
|
|
32
32
|
import { SubMenu } from './menu/sub-menu/sub-menu.js';
|
|
33
|
+
import { Item } from './item/item.js';
|
|
33
34
|
import { List } from './list/list.js';
|
|
34
35
|
import { ListItem } from './list/list-item.js';
|
|
35
36
|
|
|
@@ -290,6 +291,9 @@ const loaderConfig: LoaderConfig = {
|
|
|
290
291
|
'wc-list-item': {
|
|
291
292
|
CustomElementClass: ListItem,
|
|
292
293
|
},
|
|
294
|
+
'wc-item': {
|
|
295
|
+
CustomElementClass: Item,
|
|
296
|
+
},
|
|
293
297
|
'wc-container': {
|
|
294
298
|
CustomElementClass: Container,
|
|
295
299
|
},
|
|
@@ -9,7 +9,7 @@ import styles from './popover-content.scss';
|
|
|
9
9
|
* @tag wc-popover-content
|
|
10
10
|
* @rawTag popover-content
|
|
11
11
|
* @summary Content container for the wc-popover component.
|
|
12
|
-
* @
|
|
12
|
+
* @parentRawTag popover
|
|
13
13
|
* @tags display
|
|
14
14
|
*
|
|
15
15
|
* @cssprop --popover-content-background - Background color of the popover content. Defaults to `var(--color-surface-container)`.
|
package/src/search/search.ts
CHANGED
|
@@ -97,16 +97,15 @@ export class Search extends LitElement {
|
|
|
97
97
|
);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
override async focus() {
|
|
101
|
+
await Promise.all([
|
|
102
|
+
customElements.whenDefined('wc-input'),
|
|
103
|
+
customElements.whenDefined('wc-field'),
|
|
104
|
+
]);
|
|
105
|
+
await this.updateComplete;
|
|
102
106
|
this.inputElement?.focus();
|
|
103
107
|
}
|
|
104
108
|
|
|
105
|
-
/** Blurs the internal input element. */
|
|
106
|
-
override blur() {
|
|
107
|
-
this.inputElement?.blur();
|
|
108
|
-
}
|
|
109
|
-
|
|
110
109
|
private __handleInput(event: InputEvent) {
|
|
111
110
|
const input = event.target as HTMLInputElement;
|
|
112
111
|
this.value = input.value;
|
|
@@ -150,13 +149,9 @@ export class Search extends LitElement {
|
|
|
150
149
|
}
|
|
151
150
|
}
|
|
152
151
|
|
|
153
|
-
private
|
|
154
|
-
this.focused =
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
private __handleBlur() {
|
|
158
|
-
this.focused = false;
|
|
159
|
-
}
|
|
152
|
+
private __handleFocusChange = (event: FocusEvent) => {
|
|
153
|
+
this.focused = event.type === 'focus';
|
|
154
|
+
};
|
|
160
155
|
|
|
161
156
|
private __clearValue() {
|
|
162
157
|
this.value = '';
|
|
@@ -230,8 +225,8 @@ export class Search extends LitElement {
|
|
|
230
225
|
@input=${this.__handleInput}
|
|
231
226
|
@change=${this.__handleChange}
|
|
232
227
|
@keydown=${this.__handleKeydown}
|
|
233
|
-
@focus=${this.
|
|
234
|
-
@blur=${this.
|
|
228
|
+
@focus=${this.__handleFocusChange}
|
|
229
|
+
@blur=${this.__handleFocusChange}
|
|
235
230
|
/>
|
|
236
231
|
|
|
237
232
|
<div class="trailing-actions">
|
package/src/select/option.ts
CHANGED
|
@@ -94,7 +94,7 @@ export class SelectOptionElement extends LitElement {
|
|
|
94
94
|
?keep-open=${this.keepOpen}
|
|
95
95
|
>
|
|
96
96
|
${this.icon
|
|
97
|
-
? html`<wc-icon name=${this.icon} slot="
|
|
97
|
+
? html`<wc-icon name=${this.icon} slot="start"></wc-icon>`
|
|
98
98
|
: nothing}
|
|
99
99
|
<slot>${this.value === '' ? 'None' : ''}</slot>
|
|
100
100
|
${this.selected && this.keepOpen
|
package/src/select/select.scss
CHANGED
|
@@ -98,18 +98,9 @@
|
|
|
98
98
|
/* Multi-select chips area — single scrollable row, no vertical growth */
|
|
99
99
|
.chips-container {
|
|
100
100
|
display: flex;
|
|
101
|
-
flex-wrap: nowrap;
|
|
102
|
-
overflow-x: auto;
|
|
103
|
-
scrollbar-width: none;
|
|
104
|
-
gap: var(--spacing-050);
|
|
105
|
-
padding-block: var(--spacing-050);
|
|
106
101
|
align-items: center;
|
|
107
102
|
flex: 1;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
&::-webkit-scrollbar {
|
|
111
|
-
display: none;
|
|
112
|
-
}
|
|
103
|
+
padding-block: .5rem;
|
|
113
104
|
}
|
|
114
105
|
|
|
115
106
|
/* Disabled state */
|
package/src/select/select.ts
CHANGED
|
@@ -430,6 +430,7 @@ export class Select extends BaseInput {
|
|
|
430
430
|
// Multi-select: show chips for selected items
|
|
431
431
|
if (this.multiple && this._selectedValues.length > 0) {
|
|
432
432
|
return html`<div class="chips-container">
|
|
433
|
+
<wc-chip-set>
|
|
433
434
|
${this._selectedValues.map(
|
|
434
435
|
val => html`
|
|
435
436
|
<wc-chip
|
|
@@ -441,6 +442,7 @@ export class Select extends BaseInput {
|
|
|
441
442
|
>
|
|
442
443
|
`,
|
|
443
444
|
)}
|
|
445
|
+
</wc-chip-set>
|
|
444
446
|
</div>`;
|
|
445
447
|
}
|
|
446
448
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flow-designer-node-BWrPuxAR.js","sources":["../../src/flow-designer/flow-designer-node.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './flow-designer.scss';\nimport type { WorkflowNode } from './types.js';\n\n/**\n * Individual node component for flow designer\n * Renders a single workflow node with customizable slot templates\n *\n * @tag wc-flow-designer-node\n * @rawTag flow-designer-node\n * @wip true\n */\n@IndividualComponent\nexport class FlowDesignerNode extends LitElement {\n static styles = [styles];\n\n /**\n * The workflow node to render\n */\n @property({ type: Object })\n node: WorkflowNode = { id: '', type: 'action', label: '' };\n\n /**\n * Whether this node is currently selected\n */\n @property({ type: Boolean, reflect: true, attribute: 'selected' })\n isSelected: boolean = false;\n\n /**\n * Whether this node is in edit mode\n */\n @property({ type: Boolean, reflect: true, attribute: 'editing' })\n isEditing: boolean = false;\n\n /**\n * Whether this node is disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n /**\n * Whether to show the delete button\n */\n @property({ type: Boolean, attribute: 'show-delete' })\n showDelete: boolean = true;\n\n private _handleClick = () => {\n this.dispatchEvent(\n new CustomEvent('node-click', {\n detail: { nodeId: this.node.id },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n private _handleDoubleClick = () => {\n this.dispatchEvent(\n new CustomEvent('node-edit-start', {\n detail: { nodeId: this.node.id },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n private _handleDelete = (e: Event) => {\n e.stopPropagation();\n if (confirm(`Delete \"${this.node.label}\"?`)) {\n this.dispatchEvent(\n new CustomEvent('node-delete', {\n detail: { nodeId: this.node.id },\n bubbles: true,\n composed: true,\n })\n );\n }\n };\n\n private _handleMouseEnter = () => {\n // Node hover state handled via CSS\n };\n\n private _handleMouseLeave = () => {\n // Node hover state handled via CSS\n };\n\n render() {\n const { node, isSelected, isEditing, disabled } = this;\n const nodeType = node.type || 'action';\n\n return html`\n <div\n class=\"node-card ${nodeType}\"\n ?selected=${isSelected}\n ?editing=${isEditing}\n ?disabled=${disabled}\n @click=${this._handleClick}\n @dblclick=${this._handleDoubleClick}\n role=\"button\"\n tabindex=\"0\"\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') this._handleClick();\n }}\n >\n <!-- Customizable header slot -->\n <slot name=\"${nodeType}-header\">\n ${this._renderDefaultHeader()}\n </slot>\n\n <!-- Customizable body slot -->\n <slot name=\"${nodeType}-body\">${this._renderDefaultBody()}</slot>\n\n <!-- Action buttons -->\n ${this.isEditing\n ? html`\n <div class=\"node-actions\">\n <button class=\"btn-sm\" @click=${this._handleDelete}>\n Delete\n </button>\n </div>\n `\n : nothing}\n </div>\n `;\n }\n\n private _renderDefaultHeader() {\n const { node } = this;\n const iconMap: Record<string, string> = {\n trigger: 'play-circle',\n action: 'check-circle',\n decision: 'help-circle',\n loop_start: 'repeat',\n loop_end: 'repeat',\n fork: 'git-branch',\n join: 'git-merge',\n };\n\n const icon = iconMap[node.type] || 'activity';\n\n return html`\n <div class=\"node-header\">\n <wc-icon provider=\"carbon\" name=${icon} class=\"node-icon\"></wc-icon>\n <span class=\"node-title\">${node.label}</span>\n </div>\n `;\n }\n\n private _renderDefaultBody() {\n const { node } = this;\n return html`\n <div class=\"node-body\">\n ${node.description\n ? html`<p class=\"node-description\">${node.description}</p>`\n : nothing}\n <div class=\"node-metadata\">\n <span class=\"node-type-tag\">${node.type}</span>\n ${node.id ? html`<span class=\"node-id\">${node.id}</span>` : nothing}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'wc-flow-designer-node': FlowDesignerNode;\n }\n}\n"],"names":["LitElement","html","nothing","styles","property"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-button-ohxHhy4t.js","sources":["../../src/button/icon-button/icon-button.ts"],"sourcesContent":["import { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport styles from '../button/button.scss';\nimport colorStyles from '../button/button-colors.scss';\nimport sizeStyles from './icon-button-sizes.scss';\nimport { spread } from '@/__directive/spread.js';\nimport { throttle } from '@/__utils/throttle.js';\nimport { BaseButton } from '../BaseButton.js';\n\n/**\n * @label Icon Button\n * @tag wc-icon-button\n * @rawTag icon-button\n *\n * @summary Icon buttons allow users to take actions, and make choices, with a single tap.\n *\n * @overview\n * <p>Icon buttons are clickable elements that are used to trigger actions. They communicate calls to action to the user and allow users to interact with pages in a variety of ways. IconButton labels express what action will occur when the user interacts with it.</p>\n *\n * @cssprop --button-container-shape: Defines the border radius of the button container shape.\n *\n * @cssprop --button-container-shape-start-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-start-end: Defines the end position of the button container shape.\n * @cssprop --button-container-shape-end-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-end-end: Defines the end position of the button container shape.\n *\n *\n * @cssprop --filled-button-container-color: Color of the filled button container.\n * @cssprop --filled-button-label-text-color: Text color of the filled button label.\n *\n * @cssprop --outlined-button-container-color: Color of the outlined button container.\n * @cssprop --outlined-button-label-text-color: Text color of the outlined button label.\n *\n * @cssprop --text-button-label-text-color: Text color of the text button label.\n *\n * @cssprop --tonal-button-container-color: Color of the tonal button container.\n * @cssprop --tonal-button-label-text-color: Text color of the tonal button label.\n *\n * @cssprop --elevated-button-container-color: Color of the elevated button container.\n * @cssprop --elevated-button-label-text-color: Text color of the elevated button label.\n *\n * @cssprop --neo-button-container-color: Color of the neo button container.\n * @cssprop --neo-button-label-text-color: Text color of the neo button label.\n *\n * @fires {CustomEvent} button:click - Dispatched when the button is clicked.\n *\n * @example\n * ```html\n * <wc-icon-button><wc-icon name=\"home\"></wc-icon></wc-icon-button>\n * ```\n * @tags display\n */\nexport class IconButton extends BaseButton {\n static override styles = [styles, colorStyles, sizeStyles];\n\n /**\n * Button size.\n * Possible values are `\"xs\"`, `\"sm\"`, `\"md\"`, `\"lg\"`, `\"xl\"`. Defaults to `\"sm\"`.\n */\n @property({ reflect: true }) size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n\n /**\n * Type is preset of color and variant. Type will be only applied.\n *\n */\n @property({ type: String }) type?: 'primary' | 'secondary' | 'tertiary';\n \n /**\n * The visual style of the button.\n *\n * Possible variant values:\n * `\"filled\"` is a filled button.\n * `\"outlined\"` is an outlined button.\n * `\"text\"` is a transparent button.\n * `\"tonal\"` is a light color button.\n * `\"elevated\"` is elevated button\n */\n @property() variant:\n | 'elevated'\n | 'filled'\n | 'tonal'\n | 'outlined'\n | 'text'\n | 'neo' = 'filled';\n \n /**\n * Defines the primary color of the button. This can be set to predefined color names to apply specific color themes.\n */\n @property({ reflect: true }) color:\n | 'primary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'surface'\n | 'on-surface' = 'primary';\n\n /**\n * Additional ARIA attributes to pass to the inner button/anchor element.\n */\n @property({ reflect: true })\n configAria?: { [key: string]: any };\n\n override focus() {\n this.buttonElement?.focus();\n }\n\n override blur() {\n this.buttonElement?.blur();\n }\n \n override firstUpdated() {\n this.__dispatchClickWithThrottle = throttle(\n this.__dispatchClick,\n this.throttleDelay,\n );\n this.__convertTypeToVariantAndColor();\n }\n\n __convertTypeToVariantAndColor() {\n if (this.type === 'primary') {\n this.color = 'primary';\n this.variant = 'filled';\n } else if (this.type === 'secondary') {\n this.color = 'surface';\n this.variant = 'filled';\n } else if (this.type === 'tertiary') {\n this.color = 'primary';\n this.variant = 'text';\n } else if (this.type === 'danger') {\n this.color = 'danger';\n this.variant = 'filled';\n }\n }\n\n override render() {\n const isLink = this.__isLink();\n\n const cssClasses = {\n button: true,\n 'button-element': true,\n [`size-${this.size}`]: true,\n [`variant-${this.variant}`]: true,\n [`color-${this.color}`]: true,\n disabled: this.disabled || this.softDisabled,\n pressed: this.isPressed,\n skeleton: this.skeleton,\n };\n\n if (!isLink) {\n return html`<button\n class=${classMap(cssClasses)}\n id=\"button\"\n type=${this.htmlType}\n @click=${this.__dispatchClickWithThrottle}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n \n aria-describedby=${ifDefined(this.softDisabled ? BaseButton.DISABLED_REASON_ID : undefined)}\n ?aria-disabled=${this.softDisabled}\n\n ?disabled=${this.disabled}\n ${spread(this.configAria)}\n >\n ${this.renderButtonContent()}\n </button>\n ${this.__renderTooltip()}`;\n }\n return html`<a\n class=${classMap(cssClasses)}\n id=\"button\"\n href=${this.href}\n target=${this.target}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this.__dispatchClick}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n role=\"button\"\n \n aria-describedby=${ifDefined(this.softDisabled ? BaseButton.DISABLED_REASON_ID : undefined)}\n ?aria-disabled=${this.softDisabled}\n\n ${spread(this.configAria)}\n >\n ${this.renderButtonContent()}\n </a>\n ${this.__renderTooltip()}`;\n }\n\n renderButtonContent() {\n return html`\n <wc-focus-ring class=\"focus-ring\" for='button'></wc-focus-ring>\n <wc-elevation class=\"elevation\"></wc-elevation>\n <div class=\"neo-background\"></div>\n <div class=\"background\"></div>\n <div class=\"outline\"></div>\n <wc-ripple class=\"ripple\"></wc-ripple>\n <wc-skeleton class=\"skeleton\"></wc-skeleton>\n\n <div class=\"button-content\">\n <slot></slot>\n </div>\n\n ${this.__renderDisabledReason(this.softDisabled)}\n `;\n }\n}\n"],"names":["html","classMap","ifDefined","styles","colorStyles","sizeStyles","property"],"mappings":"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"}
|