@redvars/peacock 3.5.0 → 3.5.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/dist/BaseButton-DuASuVth.js +219 -0
- package/dist/BaseButton-DuASuVth.js.map +1 -0
- package/dist/BaseHyperlinkMixin-BNuwbiEf.js +65 -0
- package/dist/BaseHyperlinkMixin-BNuwbiEf.js.map +1 -0
- package/dist/assets/components.css +1 -1
- package/dist/assets/components.css.map +1 -1
- package/dist/assets/styles.css +1 -1
- package/dist/assets/styles.css.map +1 -1
- package/dist/banner.js +12 -27
- package/dist/banner.js.map +1 -1
- package/dist/{button-DMN1dPAg.js → button-DouvOfEU.js} +77 -251
- package/dist/button-DouvOfEU.js.map +1 -0
- package/dist/{button-group-CX9CUUXk.js → button-group-CEdMwvJJ.js} +71 -42
- package/dist/button-group-CEdMwvJJ.js.map +1 -0
- package/dist/button-group.js +5 -5
- package/dist/button.js +3 -3
- package/dist/card.js +18 -73
- package/dist/card.js.map +1 -1
- package/dist/chart-bar.js.map +1 -1
- package/dist/chart-doughnut.js +2 -2
- package/dist/chart-doughnut.js.map +1 -1
- package/dist/chart-pie.js +2 -2
- package/dist/chart-pie.js.map +1 -1
- package/dist/chart-stacked-bar.js.map +1 -1
- package/dist/code-highlighter.js +2 -1
- package/dist/code-highlighter.js.map +1 -1
- package/dist/custom-elements-jsdocs.json +3105 -1494
- package/dist/custom-elements.json +9244 -7829
- package/dist/fab.js +421 -9
- package/dist/fab.js.map +1 -1
- package/dist/index.js +6 -6
- package/dist/{select-4pl4XBj7.js → navigation-rail-Lxetd5-Z.js} +2214 -1090
- package/dist/navigation-rail-Lxetd5-Z.js.map +1 -0
- package/dist/notification.js +3 -2
- package/dist/notification.js.map +1 -1
- package/dist/peacock-loader.js +22 -10
- package/dist/peacock-loader.js.map +1 -1
- package/dist/search.js +4 -0
- package/dist/search.js.map +1 -1
- package/dist/src/__mixins/BaseButtonMixin.d.ts +20 -0
- package/dist/src/__mixins/BaseHyperlinkMixin.d.ts +18 -0
- package/dist/src/__mixins/MixinConstructor.d.ts +1 -0
- package/dist/src/banner/banner.d.ts +0 -4
- package/dist/src/button/BaseButton.d.ts +4 -47
- package/dist/src/button/button/button.d.ts +32 -3
- package/dist/src/button/button-group/button-group.d.ts +2 -2
- package/dist/src/button/icon-button/icon-button.d.ts +33 -8
- package/dist/src/card/card.d.ts +4 -15
- package/dist/src/fab/fab.d.ts +4 -35
- package/dist/src/focus-ring/focus-ring.d.ts +11 -5
- package/dist/src/index.d.ts +3 -1
- package/dist/src/link/link.d.ts +1 -1
- package/dist/src/navigation-rail/index.d.ts +2 -0
- package/dist/src/navigation-rail/navigation-rail-item.d.ts +55 -0
- package/dist/src/navigation-rail/navigation-rail.d.ts +71 -0
- package/dist/src/sidebar-menu/index.d.ts +3 -0
- package/dist/src/sidebar-menu/sidebar-menu-item.d.ts +58 -0
- package/dist/src/sidebar-menu/sidebar-menu.d.ts +38 -0
- package/dist/src/sidebar-menu/sidebar-sub-menu.d.ts +35 -0
- package/dist/src/toolbar/toolbar.d.ts +10 -10
- package/dist/src/tooltip/tooltip.d.ts +3 -0
- package/dist/src/url-field/index.d.ts +1 -0
- package/dist/src/url-field/url-field.d.ts +48 -0
- package/dist/test/sidebar-menu.test.d.ts +1 -0
- package/dist/toolbar.js +10 -10
- package/dist/toolbar.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/readme.md +73 -65
- package/scss/mixin.scss +16 -0
- package/src/__mixins/BaseButtonMixin.ts +83 -0
- package/src/__mixins/BaseHyperlinkMixin.ts +68 -0
- package/src/__mixins/MixinConstructor.ts +1 -0
- package/src/{__base_element → __mixins}/README.md +2 -2
- package/src/banner/banner.scss +18 -22
- package/src/banner/banner.ts +1 -7
- package/src/button/BaseButton.ts +11 -100
- package/src/button/button/button-sizes.scss +4 -2
- package/src/button/button/button.ts +76 -23
- package/src/button/button-group/button-group.ts +2 -2
- package/src/button/icon-button/icon-button.ts +75 -33
- package/src/card/card.ts +11 -71
- package/src/chart-bar/chart-bar.ts +9 -14
- package/src/chart-bar/chart-stacked-bar.ts +12 -18
- package/src/chart-doughnut/chart-doughnut.ts +23 -27
- package/src/chart-pie/chart-pie.ts +19 -23
- package/src/checkbox/checkbox.scss +17 -34
- package/src/checkbox/checkbox.ts +3 -1
- package/src/code-highlighter/code-highlighter.scss +1 -0
- package/src/code-highlighter/code-highlighter.ts +1 -1
- package/src/date-picker/date-picker.ts +1 -1
- package/src/elevation/elevation.scss +5 -5
- package/src/fab/fab.ts +29 -100
- package/src/focus-ring/focus-ring.ts +47 -40
- package/src/index.ts +3 -1
- package/src/input/input.ts +3 -1
- package/src/link/link.ts +2 -2
- package/src/menu/menu-item/menu-item.ts +3 -1
- package/src/navigation-rail/index.ts +2 -0
- package/src/navigation-rail/navigation-rail-item.scss +216 -0
- package/src/navigation-rail/navigation-rail-item.ts +223 -0
- package/src/navigation-rail/navigation-rail.scss +72 -0
- package/src/navigation-rail/navigation-rail.ts +149 -0
- package/src/notification/notification.ts +3 -2
- package/src/number-field/number-field.ts +6 -4
- package/src/pagination/pagination.ts +6 -4
- package/src/peacock-loader.ts +22 -5
- package/src/search/search.ts +4 -0
- package/src/sidebar-menu/demo/index.html +68 -0
- package/src/sidebar-menu/index.ts +3 -0
- package/src/sidebar-menu/sidebar-menu-item.scss +102 -0
- package/src/sidebar-menu/sidebar-menu-item.ts +151 -0
- package/src/{tree-view/tree-view.scss → sidebar-menu/sidebar-menu.scss} +1 -1
- package/src/sidebar-menu/sidebar-menu.ts +182 -0
- package/src/sidebar-menu/sidebar-sub-menu.scss +130 -0
- package/src/sidebar-menu/sidebar-sub-menu.ts +160 -0
- package/src/skeleton/skeleton.scss +18 -24
- package/src/snackbar/snackbar.ts +1 -1
- package/src/tabs/tab.ts +4 -3
- package/src/text/text.css-component.scss +7 -1
- package/src/time-picker/time-picker.ts +1 -1
- package/src/toolbar/toolbar.ts +10 -10
- package/src/tooltip/tooltip.ts +24 -0
- package/src/url-field/index.ts +1 -0
- package/src/url-field/url-field.scss +50 -0
- package/src/url-field/url-field.ts +239 -0
- package/dist/button-DMN1dPAg.js.map +0 -1
- package/dist/button-group-CX9CUUXk.js.map +0 -1
- package/dist/fab-C5Nzxk0E.js +0 -497
- package/dist/fab-C5Nzxk0E.js.map +0 -1
- package/dist/select-4pl4XBj7.js.map +0 -1
- package/dist/spread-B5cgadZl.js +0 -32
- package/dist/spread-B5cgadZl.js.map +0 -1
- package/dist/src/__base_element/BaseHyperlink.d.ts +0 -20
- package/dist/src/tree-view/index.d.ts +0 -2
- package/dist/src/tree-view/tree-node.d.ts +0 -69
- package/dist/src/tree-view/tree-view.d.ts +0 -40
- package/dist/src/tree-view/wc-tree-view.d.ts +0 -6
- package/dist/test/tree-view.test.d.ts +0 -1
- package/dist/throttle-C7ZAPqtu.js +0 -24
- package/dist/throttle-C7ZAPqtu.js.map +0 -1
- package/src/__base_element/BaseHyperlink.ts +0 -42
- package/src/tree-view/demo/index.html +0 -57
- package/src/tree-view/index.ts +0 -2
- package/src/tree-view/tree-node.scss +0 -101
- package/src/tree-view/tree-node.ts +0 -268
- package/src/tree-view/tree-view.ts +0 -182
- package/src/tree-view/wc-tree-view.ts +0 -9
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { html, LitElement } from 'lit';
|
|
2
|
-
import { property } from 'lit/decorators.js';
|
|
3
|
-
import styles from './tree-view.scss';
|
|
4
|
-
import { TreeNode } from './tree-node.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @label Tree View
|
|
8
|
-
* @tag wc-tree-view
|
|
9
|
-
* @rawTag tree-view
|
|
10
|
-
* @summary A tree view is a hierarchical structure that provides nested levels of navigation. It supports keyboard navigation, single/multi select, and expandable nodes.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```html
|
|
14
|
-
* <wc-tree-view>
|
|
15
|
-
* <wc-tree-node label="Parent" expanded>
|
|
16
|
-
* <wc-tree-node label="Child 1"></wc-tree-node>
|
|
17
|
-
* <wc-tree-node label="Child 2"></wc-tree-node>
|
|
18
|
-
* </wc-tree-node>
|
|
19
|
-
* </wc-tree-view>
|
|
20
|
-
* ```
|
|
21
|
-
* @tags navigation
|
|
22
|
-
*/
|
|
23
|
-
export class TreeView extends LitElement {
|
|
24
|
-
static styles = [styles];
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* The value of the currently selected node.
|
|
28
|
-
*/
|
|
29
|
-
@property({ type: String, attribute: 'selected-node', reflect: true })
|
|
30
|
-
selectedNode: string = '';
|
|
31
|
-
|
|
32
|
-
connectedCallback() {
|
|
33
|
-
super.connectedCallback();
|
|
34
|
-
this.addEventListener('tree-node:click', this._onNodeClick as EventListener);
|
|
35
|
-
this.addEventListener('keydown', this._onKeyDown);
|
|
36
|
-
this.setAttribute('role', 'tree');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
updated(changedProps: Map<string, unknown>) {
|
|
40
|
-
super.updated(changedProps);
|
|
41
|
-
|
|
42
|
-
if (changedProps.has('selectedNode')) {
|
|
43
|
-
this._syncSelectedStateFromProperty();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
disconnectedCallback() {
|
|
48
|
-
super.disconnectedCallback();
|
|
49
|
-
this.removeEventListener('tree-node:click', this._onNodeClick as EventListener);
|
|
50
|
-
this.removeEventListener('keydown', this._onKeyDown);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
private _getTopLevelNodes(): TreeNode[] {
|
|
54
|
-
return Array.from(this.children).filter(
|
|
55
|
-
el => el.tagName.toLowerCase() === 'wc-tree-node',
|
|
56
|
-
) as TreeNode[];
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
private _getAllVisibleNodes(): TreeNode[] {
|
|
60
|
-
const result: TreeNode[] = [];
|
|
61
|
-
const collect = (nodes: TreeNode[]) => {
|
|
62
|
-
nodes.forEach(node => {
|
|
63
|
-
result.push(node);
|
|
64
|
-
if (node.expanded) {
|
|
65
|
-
const children = Array.from(node.children).filter(
|
|
66
|
-
el => el.tagName.toLowerCase() === 'wc-tree-node',
|
|
67
|
-
) as TreeNode[];
|
|
68
|
-
collect(children);
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
collect(this._getTopLevelNodes());
|
|
73
|
-
return result;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
private _onNodeClick = (event: CustomEvent) => {
|
|
77
|
-
const target = event.target as TreeNode;
|
|
78
|
-
if (target.disabled) return;
|
|
79
|
-
|
|
80
|
-
const value = event.detail?.value ?? target.value ?? target.label;
|
|
81
|
-
this.selectedNode = value;
|
|
82
|
-
|
|
83
|
-
// Update selected state on all nodes
|
|
84
|
-
this._updateSelectedState(value);
|
|
85
|
-
|
|
86
|
-
this.dispatchEvent(
|
|
87
|
-
new CustomEvent('tree-view:change', {
|
|
88
|
-
bubbles: true,
|
|
89
|
-
composed: true,
|
|
90
|
-
detail: { value, node: target },
|
|
91
|
-
}),
|
|
92
|
-
);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
private _updateSelectedState(selectedValue: string) {
|
|
96
|
-
const allNodes = this._collectAllNodes(this._getTopLevelNodes());
|
|
97
|
-
allNodes.forEach(node => {
|
|
98
|
-
const nodeValue = node.value || node.label;
|
|
99
|
-
// eslint-disable-next-line no-param-reassign
|
|
100
|
-
node.selected = nodeValue === selectedValue;
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
private _clearSelectedState() {
|
|
105
|
-
const allNodes = this._collectAllNodes(this._getTopLevelNodes());
|
|
106
|
-
allNodes.forEach(node => {
|
|
107
|
-
// eslint-disable-next-line no-param-reassign
|
|
108
|
-
node.selected = false;
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
private _syncSelectedStateFromProperty() {
|
|
113
|
-
if (this.selectedNode) {
|
|
114
|
-
this._updateSelectedState(this.selectedNode);
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
this._clearSelectedState();
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
private _onSlotChange = () => {
|
|
122
|
-
this._syncSelectedStateFromProperty();
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
private _collectAllNodes(nodes: TreeNode[]): TreeNode[] {
|
|
126
|
-
const result: TreeNode[] = [];
|
|
127
|
-
nodes.forEach(node => {
|
|
128
|
-
result.push(node);
|
|
129
|
-
const children = Array.from(node.children).filter(
|
|
130
|
-
el => el.tagName.toLowerCase() === 'wc-tree-node',
|
|
131
|
-
) as TreeNode[];
|
|
132
|
-
result.push(...this._collectAllNodes(children));
|
|
133
|
-
});
|
|
134
|
-
return result;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
private _onKeyDown = (event: KeyboardEvent) => {
|
|
138
|
-
const visibleNodes = this._getAllVisibleNodes().filter(n => !n.disabled);
|
|
139
|
-
if (visibleNodes.length === 0) return;
|
|
140
|
-
|
|
141
|
-
const focusedIndex = visibleNodes.findIndex(node => {
|
|
142
|
-
const root = node.shadowRoot;
|
|
143
|
-
return root?.activeElement !== null && root?.activeElement !== undefined;
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
if (focusedIndex === -1 && event.key !== 'Tab') return;
|
|
147
|
-
|
|
148
|
-
switch (event.key) {
|
|
149
|
-
case 'ArrowDown': {
|
|
150
|
-
event.preventDefault();
|
|
151
|
-
const nextIndex = (focusedIndex + 1) % visibleNodes.length;
|
|
152
|
-
visibleNodes[nextIndex]?.focus();
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
case 'ArrowUp': {
|
|
156
|
-
event.preventDefault();
|
|
157
|
-
const prevIndex =
|
|
158
|
-
(focusedIndex - 1 + visibleNodes.length) % visibleNodes.length;
|
|
159
|
-
visibleNodes[prevIndex]?.focus();
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
case 'Home':
|
|
163
|
-
event.preventDefault();
|
|
164
|
-
visibleNodes[0]?.focus();
|
|
165
|
-
break;
|
|
166
|
-
case 'End':
|
|
167
|
-
event.preventDefault();
|
|
168
|
-
visibleNodes[visibleNodes.length - 1]?.focus();
|
|
169
|
-
break;
|
|
170
|
-
default:
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
render() {
|
|
176
|
-
return html`<div class="tree-view">
|
|
177
|
-
<slot @slotchange=${this._onSlotChange}></slot>
|
|
178
|
-
</div>`;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
static Node = TreeNode;
|
|
182
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { customElement } from 'lit/decorators.js';
|
|
2
|
-
import { TreeView } from './tree-view.js';
|
|
3
|
-
import { TreeNode } from './tree-node.js';
|
|
4
|
-
|
|
5
|
-
@customElement('wc-tree-node')
|
|
6
|
-
export class WcTreeNode extends TreeNode {}
|
|
7
|
-
|
|
8
|
-
@customElement('wc-tree-view')
|
|
9
|
-
export class WcTreeView extends TreeView {}
|