@aurelia-mdc-web/all 9.3.0-au2 → 9.3.1-au2

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.
Files changed (27) hide show
  1. package/dist/chips/mdc-chip/mdc-chip.js.map +1 -1
  2. package/dist/data-table/mdc-data-table.js.map +1 -1
  3. package/dist/dialog/mdc-dialog-service.js.map +1 -1
  4. package/dist/expandable/mdc-expandable.js.map +1 -1
  5. package/dist/form-field/mdc-form-field.js.map +1 -1
  6. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.js.map +1 -1
  7. package/dist/list/mdc-list-item/mdc-list-item.js.map +1 -1
  8. package/dist/menu/mdc-menu.js.map +1 -1
  9. package/dist/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.js.map +1 -1
  10. package/dist/select/mdc-select-value-observer.js.map +1 -1
  11. package/dist/select/mdc-select.js.map +1 -1
  12. package/dist/text-field/mdc-text-field.js.map +1 -1
  13. package/dist/tree-view/mdc-tree-view.js.map +1 -1
  14. package/package.json +2 -2
  15. package/src/chips/mdc-chip/mdc-chip.ts +290 -290
  16. package/src/data-table/mdc-data-table.ts +432 -432
  17. package/src/dialog/mdc-dialog-service.ts +80 -80
  18. package/src/expandable/mdc-expandable.ts +104 -104
  19. package/src/form-field/mdc-form-field.ts +60 -60
  20. package/src/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.ts +108 -108
  21. package/src/list/mdc-list-item/mdc-list-item.ts +136 -136
  22. package/src/menu/mdc-menu.ts +340 -340
  23. package/src/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.ts +170 -170
  24. package/src/select/mdc-select-value-observer.ts +346 -346
  25. package/src/select/mdc-select.ts +480 -480
  26. package/src/text-field/mdc-text-field.ts +535 -535
  27. package/src/tree-view/mdc-tree-view.ts +147 -147
@@ -1,147 +1,147 @@
1
- import { MdcComponent } from '../base';
2
- import { MDCFoundation } from '@material/base';
3
- import { customElement, bindable, inject, ViewFactory, INode } from 'aurelia';
4
- import { ITreeNode } from './i-tree-node';
5
- import { processContent } from '@aurelia/runtime-html';
6
- import template from './mdc-tree-view.html?raw';
7
-
8
- let id = 0;
9
- const templateLookup: Record<string, string> = {};
10
- const getNextNodeTemplateId = () => ++id;
11
- const NODE_SELECTED_EVENT = 'mdctree:node-selected';
12
-
13
- export class MDCTreeViewFoundation extends MDCFoundation { }
14
-
15
- @inject(Element)
16
- @customElement({ name: 'mdc-tree-view', template })
17
- @processContent(function processContent(node: INode) {
18
- const element = node as Element;
19
- const treeNode = element.querySelector('mdc-tree-node');
20
- if (treeNode) {
21
- const nodeTemplateId = getNextNodeTemplateId();
22
- element.setAttribute('data-template-id', nodeTemplateId.toString());
23
- templateLookup[nodeTemplateId] = treeNode.innerHTML;
24
- }
25
- element.innerHTML = '';
26
- return false;
27
- }
28
- )
29
- export class MdcTreeView extends MdcComponent<MDCTreeViewFoundation> {
30
- getDefaultFoundation(): MDCTreeViewFoundation {
31
- return new MDCTreeViewFoundation();
32
- }
33
-
34
- constructor(root: HTMLElement) {
35
- super(root);
36
- const templateId = root.getAttribute('data-template-id');
37
- if (templateId !== null) {
38
- this.nodeTemplate = templateLookup[templateId];
39
- }
40
- }
41
-
42
- nodeViewFactory: ViewFactory;
43
- selectedNode?: ITreeNode;
44
-
45
- @bindable()
46
- nodeTemplate: string;
47
-
48
- @bindable()
49
- nodes: ITreeNode[];
50
-
51
- /**
52
- * Allows for filtering tree nodes
53
- */
54
- @bindable()
55
- filter: (n: ITreeNode) => boolean = () => true;
56
-
57
- @bindable()
58
- rootBindingContext: Record<string, unknown>;
59
-
60
- bind(bindingContext: Record<string, unknown>) {
61
- this.rootBindingContext = this.rootBindingContext ?? bindingContext;
62
- }
63
-
64
- toggleExpanded(n: ITreeNode, e: Event): boolean {
65
- n.expanded = !n.expanded;
66
- e.stopPropagation();
67
- return false;
68
- }
69
-
70
- nodeClicked(n?: ITreeNode) {
71
- if (this.selectedNode) {
72
- this.selectedNode.selected = false;
73
- }
74
- if (n) {
75
- n.selected = true;
76
- }
77
- this.selectedNode = n;
78
- this.root.dispatchEvent(new CustomEvent(NODE_SELECTED_EVENT,
79
- { detail: { node: n }, bubbles: true })
80
- );
81
- return true;
82
- }
83
-
84
- childNodeSelected(n: ITreeNode) {
85
- if (this.selectedNode && this.selectedNode !== n) {
86
- this.selectedNode.selected = false;
87
- }
88
- this.selectedNode = n;
89
- }
90
-
91
- findPath<T extends ITreeNode>(nodes: T[], predicate: (node: T) => boolean): number[] {
92
- const path: number[] = [];
93
- for (let i = 0; i < nodes.length; ++i) {
94
- if (predicate(nodes[i])) {
95
- return [i];
96
- }
97
- if (!nodes[i].children) {
98
- continue;
99
- }
100
- const childPath = this.findPath(nodes[i].children!, predicate);
101
- if (childPath.length) {
102
- return [i, ...childPath];
103
- }
104
- }
105
- return path;
106
- }
107
-
108
- async expandPath(path: number[]) {
109
- const filteredNodes = this.nodes.filter(x => this.filter(x));
110
- if (path.length === 1) {
111
- this.nodeClicked(filteredNodes[path[0]]);
112
- this.root.querySelectorAll('.mdc-tree-view__node')[path[0]].scrollIntoView();
113
- } else {
114
- filteredNodes[path[0]].expanded = true;
115
- // child tree views are hidden with 'if.bind'
116
- // promises are created by a helper element `mdc-promisify-reference`
117
- // this lets dependent code to wait till a view model reference is assigned
118
- await this.initialised;
119
- const childTreeView = await (filteredNodes[path[0]].childTreeViewPromise);
120
- await childTreeView?.expandPath(path.slice(1));
121
- }
122
- }
123
-
124
- async find<T extends ITreeNode>(predicate: (node: T) => boolean) {
125
- // to avoid rendering the whole tree finding a node is a 2-step process
126
- // firstly, find the path - nodes which need to be expanded to display the target node
127
- const filteredNodes = this.nodes.filter(x => this.filter(x));
128
- const path = this.findPath(filteredNodes, predicate);
129
- if (path.length) {
130
- // secondly, expand the path
131
- await this.expandPath(path);
132
- }
133
- }
134
-
135
- dispatchEvent(type: string, node: ITreeNode) {
136
- this.root.dispatchEvent(new CustomEvent(type, { bubbles: true, detail: { node } }));
137
- }
138
- }
139
-
140
- /** @hidden */
141
- export interface IMdcTreeElement extends HTMLElement {
142
- $au: {
143
- 'au:resource:custom-element': {
144
- viewModel: MdcTreeView;
145
- };
146
- };
147
- }
1
+ import { MdcComponent } from '../base';
2
+ import { MDCFoundation } from '@material/base';
3
+ import { customElement, bindable, inject, ViewFactory, INode } from 'aurelia';
4
+ import { ITreeNode } from './i-tree-node';
5
+ import { processContent } from '@aurelia/runtime-html';
6
+ import template from './mdc-tree-view.html?raw';
7
+
8
+ let id = 0;
9
+ const templateLookup: Record<string, string> = {};
10
+ const getNextNodeTemplateId = () => ++id;
11
+ const NODE_SELECTED_EVENT = 'mdctree:node-selected';
12
+
13
+ export class MDCTreeViewFoundation extends MDCFoundation { }
14
+
15
+ @inject(Element)
16
+ @customElement({ name: 'mdc-tree-view', template })
17
+ @processContent(function processContent(node: INode) {
18
+ const element = node as Element;
19
+ const treeNode = element.querySelector('mdc-tree-node');
20
+ if (treeNode) {
21
+ const nodeTemplateId = getNextNodeTemplateId();
22
+ element.setAttribute('data-template-id', nodeTemplateId.toString());
23
+ templateLookup[nodeTemplateId] = treeNode.innerHTML;
24
+ }
25
+ element.innerHTML = '';
26
+ return false;
27
+ }
28
+ )
29
+ export class MdcTreeView extends MdcComponent<MDCTreeViewFoundation> {
30
+ getDefaultFoundation(): MDCTreeViewFoundation {
31
+ return new MDCTreeViewFoundation();
32
+ }
33
+
34
+ constructor(root: HTMLElement) {
35
+ super(root);
36
+ const templateId = root.getAttribute('data-template-id');
37
+ if (templateId !== null) {
38
+ this.nodeTemplate = templateLookup[templateId];
39
+ }
40
+ }
41
+
42
+ nodeViewFactory: ViewFactory;
43
+ selectedNode?: ITreeNode;
44
+
45
+ @bindable()
46
+ nodeTemplate: string;
47
+
48
+ @bindable()
49
+ nodes: ITreeNode[];
50
+
51
+ /**
52
+ * Allows for filtering tree nodes
53
+ */
54
+ @bindable()
55
+ filter: (n: ITreeNode) => boolean = () => true;
56
+
57
+ @bindable()
58
+ rootBindingContext: Record<string, unknown>;
59
+
60
+ bind(bindingContext: Record<string, unknown>) {
61
+ this.rootBindingContext = this.rootBindingContext ?? bindingContext;
62
+ }
63
+
64
+ toggleExpanded(n: ITreeNode, e: Event): boolean {
65
+ n.expanded = !n.expanded;
66
+ e.stopPropagation();
67
+ return false;
68
+ }
69
+
70
+ nodeClicked(n?: ITreeNode) {
71
+ if (this.selectedNode) {
72
+ this.selectedNode.selected = false;
73
+ }
74
+ if (n) {
75
+ n.selected = true;
76
+ }
77
+ this.selectedNode = n;
78
+ this.root.dispatchEvent(new CustomEvent(NODE_SELECTED_EVENT,
79
+ { detail: { node: n }, bubbles: true })
80
+ );
81
+ return true;
82
+ }
83
+
84
+ childNodeSelected(n: ITreeNode) {
85
+ if (this.selectedNode && this.selectedNode !== n) {
86
+ this.selectedNode.selected = false;
87
+ }
88
+ this.selectedNode = n;
89
+ }
90
+
91
+ findPath<T extends ITreeNode>(nodes: T[], predicate: (node: T) => boolean): number[] {
92
+ const path: number[] = [];
93
+ for (let i = 0; i < nodes.length; ++i) {
94
+ if (predicate(nodes[i])) {
95
+ return [i];
96
+ }
97
+ if (!nodes[i].children) {
98
+ continue;
99
+ }
100
+ const childPath = this.findPath(nodes[i].children!, predicate);
101
+ if (childPath.length) {
102
+ return [i, ...childPath];
103
+ }
104
+ }
105
+ return path;
106
+ }
107
+
108
+ async expandPath(path: number[]) {
109
+ const filteredNodes = this.nodes.filter(x => this.filter(x));
110
+ if (path.length === 1) {
111
+ this.nodeClicked(filteredNodes[path[0]]);
112
+ this.root.querySelectorAll('.mdc-tree-view__node')[path[0]].scrollIntoView();
113
+ } else {
114
+ filteredNodes[path[0]].expanded = true;
115
+ // child tree views are hidden with 'if.bind'
116
+ // promises are created by a helper element `mdc-promisify-reference`
117
+ // this lets dependent code to wait till a view model reference is assigned
118
+ await this.initialised;
119
+ const childTreeView = await (filteredNodes[path[0]].childTreeViewPromise);
120
+ await childTreeView?.expandPath(path.slice(1));
121
+ }
122
+ }
123
+
124
+ async find<T extends ITreeNode>(predicate: (node: T) => boolean) {
125
+ // to avoid rendering the whole tree finding a node is a 2-step process
126
+ // firstly, find the path - nodes which need to be expanded to display the target node
127
+ const filteredNodes = this.nodes.filter(x => this.filter(x));
128
+ const path = this.findPath(filteredNodes, predicate);
129
+ if (path.length) {
130
+ // secondly, expand the path
131
+ await this.expandPath(path);
132
+ }
133
+ }
134
+
135
+ dispatchEvent(type: string, node: ITreeNode) {
136
+ this.root.dispatchEvent(new CustomEvent(type, { bubbles: true, detail: { node } }));
137
+ }
138
+ }
139
+
140
+ /** @hidden */
141
+ export interface IMdcTreeElement extends HTMLElement {
142
+ $au: {
143
+ 'au:resource:custom-element': {
144
+ viewModel: MdcTreeView;
145
+ };
146
+ };
147
+ }