wunderbaum 0.5.0 → 0.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/wunderbaum.css +19 -0
- package/dist/wunderbaum.css.map +1 -1
- package/dist/wunderbaum.d.ts +16 -4
- package/dist/wunderbaum.esm.js +61 -38
- package/dist/wunderbaum.esm.min.js +21 -21
- package/dist/wunderbaum.esm.min.js.map +1 -1
- package/dist/wunderbaum.umd.js +61 -38
- package/dist/wunderbaum.umd.min.js +30 -30
- package/dist/wunderbaum.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/common.ts +4 -4
- package/src/types.ts +18 -2
- package/src/wb_ext_filter.ts +4 -11
- package/src/wb_ext_logger.ts +2 -1
- package/src/wb_node.ts +36 -2
- package/src/wb_options.ts +7 -2
- package/src/wunderbaum.scss +20 -0
- package/src/wunderbaum.ts +5 -4
package/src/wb_ext_filter.ts
CHANGED
|
@@ -287,7 +287,6 @@ export class FilterExtension extends WunderbaumExtension {
|
|
|
287
287
|
let tree = this.tree;
|
|
288
288
|
// statusNode = tree.root.findDirectChild(KEY_NODATA),
|
|
289
289
|
// escapeTitles = tree.options.escapeTitles;
|
|
290
|
-
// enhanceTitle = tree.options.enhanceTitle,
|
|
291
290
|
tree.enableUpdate(false);
|
|
292
291
|
|
|
293
292
|
// if (statusNode) {
|
|
@@ -299,16 +298,10 @@ export class FilterExtension extends WunderbaumExtension {
|
|
|
299
298
|
delete tree.root.subMatchCount;
|
|
300
299
|
|
|
301
300
|
tree.visit((node) => {
|
|
302
|
-
if (node.match && node._rowElem) {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
titleElem.textContent = node.title;
|
|
307
|
-
// } else {
|
|
308
|
-
// titleElem.innerHTML = node.title;
|
|
309
|
-
// }
|
|
310
|
-
node._callEvent("enhanceTitle", { titleElem: titleElem });
|
|
311
|
-
}
|
|
301
|
+
// if (node.match && node._rowElem) {
|
|
302
|
+
// let titleElem = node._rowElem.querySelector("span.wb-title")!;
|
|
303
|
+
// node._callEvent("enhanceTitle", { titleElem: titleElem });
|
|
304
|
+
// }
|
|
312
305
|
delete node.match;
|
|
313
306
|
delete node.subMatchCount;
|
|
314
307
|
delete node.titleWithHighlight;
|
package/src/wb_ext_logger.ts
CHANGED
|
@@ -11,7 +11,8 @@ import { Wunderbaum } from "./wunderbaum";
|
|
|
11
11
|
export class LoggerExtension extends WunderbaumExtension {
|
|
12
12
|
readonly prefix: string;
|
|
13
13
|
protected ignoreEvents = new Set<string>([
|
|
14
|
-
"
|
|
14
|
+
"iconBadge",
|
|
15
|
+
// "enhanceTitle",
|
|
15
16
|
"render",
|
|
16
17
|
"discard",
|
|
17
18
|
]);
|
package/src/wb_node.ts
CHANGED
|
@@ -878,6 +878,11 @@ export class WunderbaumNode {
|
|
|
878
878
|
return !this.selected && !!this._partsel;
|
|
879
879
|
}
|
|
880
880
|
|
|
881
|
+
/** Return true if this node has DOM representaion, i.e. is displayed in the viewport. */
|
|
882
|
+
isRadio(): boolean {
|
|
883
|
+
return this.checkbox === "radio" || !!this.parent.radiogroup;
|
|
884
|
+
}
|
|
885
|
+
|
|
881
886
|
/** Return true if this node has DOM representaion, i.e. is displayed in the viewport. */
|
|
882
887
|
isRendered(): boolean {
|
|
883
888
|
return !!this._rowElem;
|
|
@@ -1520,6 +1525,35 @@ export class WunderbaumNode {
|
|
|
1520
1525
|
} else {
|
|
1521
1526
|
parentElem.appendChild(iconSpan);
|
|
1522
1527
|
}
|
|
1528
|
+
|
|
1529
|
+
// Event handler `tree.iconBadge` can return a badge text or HTMLSpanElement
|
|
1530
|
+
|
|
1531
|
+
let cbRes = this._callEvent("iconBadge", { iconSpan: iconSpan });
|
|
1532
|
+
let badge = null;
|
|
1533
|
+
if (cbRes != null && cbRes !== false) {
|
|
1534
|
+
let classes = "";
|
|
1535
|
+
let tooltip = "";
|
|
1536
|
+
if (util.isPlainObject(cbRes)) {
|
|
1537
|
+
badge = "" + cbRes.badge;
|
|
1538
|
+
classes = cbRes.badgeClass ? " " + cbRes.badgeClass : "";
|
|
1539
|
+
tooltip = cbRes.badgeTooltip ? ` title="${cbRes.badgeTooltip}"` : "";
|
|
1540
|
+
} else if (typeof cbRes === "number") {
|
|
1541
|
+
badge = "" + cbRes;
|
|
1542
|
+
} else {
|
|
1543
|
+
badge = cbRes; // string or HTMLSpanElement
|
|
1544
|
+
}
|
|
1545
|
+
if (typeof badge === "string") {
|
|
1546
|
+
badge = util.elemFromHtml(
|
|
1547
|
+
`<span class="wb-badge${classes}"${tooltip}>${util.escapeHtml(
|
|
1548
|
+
badge
|
|
1549
|
+
)}</span>`
|
|
1550
|
+
);
|
|
1551
|
+
}
|
|
1552
|
+
if (badge) {
|
|
1553
|
+
iconSpan.append(<HTMLSpanElement>badge);
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1523
1557
|
// this.log("_createIcon: ", iconSpan);
|
|
1524
1558
|
return iconSpan;
|
|
1525
1559
|
}
|
|
@@ -1603,7 +1637,7 @@ export class WunderbaumNode {
|
|
|
1603
1637
|
titleSpan.classList.add("wb-title");
|
|
1604
1638
|
nodeElem.appendChild(titleSpan);
|
|
1605
1639
|
|
|
1606
|
-
this._callEvent("enhanceTitle", { titleSpan: titleSpan });
|
|
1640
|
+
// this._callEvent("enhanceTitle", { titleSpan: titleSpan });
|
|
1607
1641
|
|
|
1608
1642
|
// Store the width of leading icons with the node, so we can calculate
|
|
1609
1643
|
// the width of the embedded title span later
|
|
@@ -2178,7 +2212,7 @@ export class WunderbaumNode {
|
|
|
2178
2212
|
/** Toggle the check/uncheck state. */
|
|
2179
2213
|
toggleSelected(options?: SetSelectedOptions): TristateType {
|
|
2180
2214
|
let flag = this.isSelected();
|
|
2181
|
-
if (flag === undefined) {
|
|
2215
|
+
if (flag === undefined && !this.isRadio()) {
|
|
2182
2216
|
flag = this._anySelectable();
|
|
2183
2217
|
} else {
|
|
2184
2218
|
flag = !flag;
|
package/src/wb_options.ts
CHANGED
|
@@ -18,8 +18,8 @@ import {
|
|
|
18
18
|
WbChangeEventType,
|
|
19
19
|
WbClickEventType,
|
|
20
20
|
WbDeactivateEventType,
|
|
21
|
-
WbEnhanceTitleEventType,
|
|
22
21
|
WbErrorEventType,
|
|
22
|
+
WbIconBadgeCallback,
|
|
23
23
|
WbInitEventType,
|
|
24
24
|
WbKeydownEventType,
|
|
25
25
|
WbNodeData,
|
|
@@ -258,7 +258,12 @@ export interface WunderbaumOptions {
|
|
|
258
258
|
*
|
|
259
259
|
* @category Callback
|
|
260
260
|
*/
|
|
261
|
-
|
|
261
|
+
iconBadge?: WbIconBadgeCallback;
|
|
262
|
+
// /**
|
|
263
|
+
// *
|
|
264
|
+
// * @category Callback
|
|
265
|
+
// */
|
|
266
|
+
// enhanceTitle?: (e: WbEnhanceTitleEventType) => void;
|
|
262
267
|
/**
|
|
263
268
|
*
|
|
264
269
|
* @category Callback
|
package/src/wunderbaum.scss
CHANGED
|
@@ -789,6 +789,26 @@ div.wunderbaum {
|
|
|
789
789
|
}
|
|
790
790
|
}
|
|
791
791
|
|
|
792
|
+
i.wb-icon {
|
|
793
|
+
position: relative;
|
|
794
|
+
> span.wb-badge {
|
|
795
|
+
position: absolute;
|
|
796
|
+
display: inline-block;
|
|
797
|
+
top: 0;
|
|
798
|
+
left: -0.6rem;
|
|
799
|
+
color: white; //var(--wb-dim-color);
|
|
800
|
+
background-color: var(--wb-bg-highlight-color);
|
|
801
|
+
padding: 0.2em 0.3rem 0.1em 0.3rem;
|
|
802
|
+
font-size: 60%;
|
|
803
|
+
font-weight: 200;
|
|
804
|
+
line-height: 1;
|
|
805
|
+
text-align: center;
|
|
806
|
+
white-space: nowrap;
|
|
807
|
+
// vertical-align: baseline;
|
|
808
|
+
border-radius: 0.5rem;
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
|
|
792
812
|
/* Class 'wb-tristate' is used to mark checkboxes that should toggle like
|
|
793
813
|
* indeterminate -> checked -> unchecked -> indeterminate ...
|
|
794
814
|
*/
|
package/src/wunderbaum.ts
CHANGED
|
@@ -193,10 +193,11 @@ export class Wunderbaum {
|
|
|
193
193
|
navigationModeOption: null, // NavModeEnum.startRow,
|
|
194
194
|
quicksearch: true,
|
|
195
195
|
// --- Events ---
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
196
|
+
iconBadge: null,
|
|
197
|
+
change: null,
|
|
198
|
+
// enhanceTitle: null,
|
|
199
|
+
error: null,
|
|
200
|
+
receive: null,
|
|
200
201
|
// --- Strings ---
|
|
201
202
|
strings: {
|
|
202
203
|
loadError: "Error",
|