@wemake4u/form-player-se 1.0.46 → 1.0.47

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.
@@ -0,0 +1,98 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { ListenerService } from '../services/listener.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../services/listener.service";
5
+ export class TreeListDirective {
6
+ el;
7
+ listenerService;
8
+ nodes = [];
9
+ constructor(el, listenerService) {
10
+ this.el = el;
11
+ this.listenerService = listenerService;
12
+ }
13
+ ngOnChanges(changes) {
14
+ if (changes['nodes'] && this.initialized) {
15
+ this.rebuild();
16
+ }
17
+ }
18
+ ngAfterViewInit() {
19
+ this.initialized = true;
20
+ this.rebuild();
21
+ }
22
+ initialized = false;
23
+ rows = [];
24
+ rebuild() {
25
+ queueMicrotask(() => {
26
+ this.rows = Array.from(this.el.nativeElement.querySelectorAll('tbody tr'));
27
+ this.initToggles();
28
+ this.refreshTree();
29
+ });
30
+ }
31
+ getChildren(id) {
32
+ return this.rows.filter(r => r.dataset['parent'] === id);
33
+ }
34
+ setVisible(row, visible) {
35
+ row.classList.toggle('hidden', !visible);
36
+ }
37
+ updateVisibility(parentId, parentVisible, parentExpanded) {
38
+ const children = this.getChildren(parentId);
39
+ for (const child of children) {
40
+ const childVisible = parentVisible && parentExpanded;
41
+ this.setVisible(child, childVisible);
42
+ const childExpanded = child.dataset['expanded'] === 'true';
43
+ this.updateVisibility(child.dataset['id'], childVisible, childExpanded);
44
+ }
45
+ }
46
+ isExpanded(row) {
47
+ return row.dataset['expanded'] === 'true';
48
+ }
49
+ refreshTree() {
50
+ this.rows
51
+ .filter(r => !r.dataset['parent'])
52
+ .forEach(root => {
53
+ this.setVisible(root, true);
54
+ this.updateVisibility(root.dataset['id'], true, root.dataset['expanded'] === 'true');
55
+ });
56
+ }
57
+ initToggles() {
58
+ const toggles = this.el.nativeElement.querySelectorAll('.toggle');
59
+ toggles.forEach((toggle) => {
60
+ if (toggle.dataset['bound'] === 'true') {
61
+ return;
62
+ }
63
+ toggle.dataset['bound'] = 'true';
64
+ const row = toggle.closest('tr');
65
+ this.refreshToggleIcon(toggle, this.isExpanded(row));
66
+ this.listenerService.listen(toggle, 'click', (e) => {
67
+ e.stopPropagation();
68
+ const expanded = this.isExpanded(row);
69
+ row.dataset['expanded'] = (!expanded).toString();
70
+ this.refreshToggleIcon(toggle, this.isExpanded(row));
71
+ this.refreshTree();
72
+ });
73
+ });
74
+ }
75
+ refreshToggleIcon(target, expanded) {
76
+ target.classList.remove('fas', 'fa-angle-down', 'fa-angle-right');
77
+ target.classList.add('fas');
78
+ target.classList.add(expanded ? 'fa-angle-down' : 'fa-angle-right');
79
+ }
80
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeListDirective, deps: [{ token: i0.ElementRef }, { token: i1.ListenerService }], target: i0.ɵɵFactoryTarget.Directive });
81
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TreeListDirective, isStandalone: true, selector: "[treelist]", inputs: { nodes: ["treelist", "nodes"] }, providers: [
82
+ ListenerService
83
+ ], usesOnChanges: true, ngImport: i0 });
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeListDirective, decorators: [{
86
+ type: Directive,
87
+ args: [{
88
+ selector: '[treelist]',
89
+ standalone: true,
90
+ providers: [
91
+ ListenerService
92
+ ]
93
+ }]
94
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ListenerService }], propDecorators: { nodes: [{
95
+ type: Input,
96
+ args: ['treelist']
97
+ }] } });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy90cmVlbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNkIsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVMvRCxNQUFNLE9BQU8saUJBQWlCO0lBSU47SUFDTjtJQUhLLEtBQUssR0FBVSxFQUFFLENBQUM7SUFFckMsWUFBb0IsRUFBYyxFQUNwQixlQUFnQztRQUQxQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ3BCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUM5QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLElBQUksR0FBMEIsRUFBRSxDQUFDO0lBRWpDLE9BQU87UUFDWCxjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7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QU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQW1CLEVBQUUsUUFBaUI7UUFFNUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7d0dBM0ZRLGlCQUFpQjs0RkFBakIsaUJBQWlCLG1HQUpmO1lBQ1AsZUFBZTtTQUNsQjs7NEZBRVEsaUJBQWlCO2tCQVA3QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQLGVBQWU7cUJBQ2xCO2lCQUNKOzZHQUdzQixLQUFLO3NCQUF2QixLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGlzdGVuZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbGlzdGVuZXIuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3RyZWVsaXN0XScsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgTGlzdGVuZXJTZXJ2aWNlXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlTGlzdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgQElucHV0KCd0cmVlbGlzdCcpIG5vZGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcclxuICAgICAgICAsIHByaXZhdGUgbGlzdGVuZXJTZXJ2aWNlOiBMaXN0ZW5lclNlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ25vZGVzJ10gJiYgdGhpcy5pbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlYnVpbGQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVidWlsZCgpOyAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSByb3dzOiBIVE1MVGFibGVSb3dFbGVtZW50W10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIHJlYnVpbGQoKSB7XHJcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJvd3MgPSBBcnJheS5mcm9tKHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keSB0cicpKTtcclxuICAgICAgICAgICAgdGhpcy5pbml0VG9nZ2xlcygpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUcmVlKCk7ICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRDaGlsZHJlbihpZDogc3RyaW5nKTogSFRNTFRhYmxlUm93RWxlbWVudFtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yb3dzLmZpbHRlcihyID0+IHIuZGF0YXNldFsncGFyZW50J10gPT09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFZpc2libGUocm93OiBIVE1MVGFibGVSb3dFbGVtZW50LCB2aXNpYmxlOiBib29sZWFuKSB7XHJcbiAgICAgICAgcm93LmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsICF2aXNpYmxlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZVZpc2liaWxpdHkocGFyZW50SWQ6IHN0cmluZywgcGFyZW50VmlzaWJsZTogYm9vbGVhbiwgcGFyZW50RXhwYW5kZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4ocGFyZW50SWQpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkVmlzaWJsZSA9IHBhcmVudFZpc2libGUgJiYgcGFyZW50RXhwYW5kZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VmlzaWJsZShjaGlsZCwgY2hpbGRWaXNpYmxlKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkRXhwYW5kZWQgPSBjaGlsZC5kYXRhc2V0WydleHBhbmRlZCddID09PSAndHJ1ZSc7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJpbGl0eShjaGlsZC5kYXRhc2V0WydpZCddISwgY2hpbGRWaXNpYmxlLCBjaGlsZEV4cGFuZGVkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0V4cGFuZGVkKHJvdzogSFRNTFRhYmxlUm93RWxlbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiByb3cuZGF0YXNldFsnZXhwYW5kZWQnXSA9PT0gJ3RydWUnO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVmcmVzaFRyZWUoKSB7XHJcbiAgICAgICAgdGhpcy5yb3dzXHJcbiAgICAgICAgICAgIC5maWx0ZXIociA9PiAhci5kYXRhc2V0WydwYXJlbnQnXSlcclxuICAgICAgICAgICAgLmZvckVhY2gocm9vdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpc2libGUocm9vdCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoXHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5kYXRhc2V0WydpZCddISxcclxuICAgICAgICAgICAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJvb3QuZGF0YXNldFsnZXhwYW5kZWQnXSA9PT0gJ3RydWUnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRUb2dnbGVzKCkge1xyXG4gICAgICAgIGNvbnN0IHRvZ2dsZXMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpO1xyXG4gICAgICAgIHRvZ2dsZXMuZm9yRWFjaCgodG9nZ2xlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRvZ2dsZS5kYXRhc2V0Wydib3VuZCddID09PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b2dnbGUuZGF0YXNldFsnYm91bmQnXSA9ICd0cnVlJztcclxuICAgICAgICAgICAgY29uc3Qgcm93ID0gdG9nZ2xlLmNsb3Nlc3QoJ3RyJykgYXMgSFRNTFRhYmxlUm93RWxlbWVudDtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9nZ2xlSWNvbih0b2dnbGUsIHRoaXMuaXNFeHBhbmRlZChyb3cpKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lclNlcnZpY2UubGlzdGVuKHRvZ2dsZSwgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQocm93KTtcclxuICAgICAgICAgICAgICAgIHJvdy5kYXRhc2V0WydleHBhbmRlZCddID0gKCFleHBhbmRlZCkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRvZ2dsZUljb24odG9nZ2xlLCB0aGlzLmlzRXhwYW5kZWQocm93KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUcmVlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVmcmVzaFRvZ2dsZUljb24odGFyZ2V0OiBIVE1MRWxlbWVudCwgZXhwYW5kZWQ6IGJvb2xlYW4pXHJcbiAgICB7ICAgICAgICBcclxuICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgnZmFzJywgJ2ZhLWFuZ2xlLWRvd24nLCAnZmEtYW5nbGUtcmlnaHQnKTtcclxuICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgnZmFzJyk7XHJcbiAgICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoZXhwYW5kZWQgPyAnZmEtYW5nbGUtZG93bicgOiAnZmEtYW5nbGUtcmlnaHQnKTtcclxuICAgIH1cclxufVxyXG4iXX0=