@omegagrid/tree 0.6.95 → 0.6.96

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.
@@ -1 +1 @@
1
- {"version":3,"file":"nodeModel.d.ts","sourceRoot":"","sources":["../../src/model/nodeModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG;IACxB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,GAAC,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAgDsB,CAAC;iBAC7B,CAAC;;4BACjB,CAAA,iBAAiB,CAAC;;;;;;;;AAhDpB,qBAAa,SAAU,SAAQ,cAAoB;IAuC/B,KAAK,EAAE,SAAS;IAtC5B,SAAS,EAAE,MAAM,CAAQ;IAEhC,OAAO,CAAC,KAAK,CAAS;IACtB,IAAI,IAAI,IAAI,MAAM,CAAsB;IACxC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,EAAoB;IAEtC,OAAO,CAAC,SAAS,CAAiB;IAClC,IAAI,QAAQ,IAAI,OAAO,CAA0B;IACjD,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAwB;IAE/C,OAAO,CAAC,IAAI,CAAS;IACrB,IAAI,GAAG,IAAI,MAAM,CAAqB;IACtC,OAAO,KAAK,GAAG,QAA6B;IAE5C,OAAO,CAAC,MAAM,CAAS;IACvB,IAAI,KAAK,IAAI,MAAM,CAAuB;IAC1C,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAAoB;IAEvC,OAAO,CAAC,UAAU,CAAS;IAC3B,IAAI,SAAS,IACI,MAAM,CADmB;IAC1C,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,EAAyB;IAEhD,OAAO,CAAC,KAAK,CAAkB;IAC/B,IAAI,IAAI,IAAI,QAAQ,GAAC,MAAM,CAAsB;IACjD,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAC,MAAM,EAAoB;IAE/C,OAAO,CAAC,OAAO,CAAgB;IAC/B,IAAI,MAAM,IAAI,aAAa,CAAwB;IACnD,IAAI,MAAM,CAAC,CAAC,EAAE,aAAa,EAAsB;IAEjD,OAAO,CAAC,SAAS,CAAmB;IACpC,IAAI,QAAQ,IAAI,gBAAgB,CAA6D;IAC7F,IAAI,QAAQ,CAAC,CAAC,EAAE,gBAAgB,EAAwB;IAExD,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACxC,IAAI,UAAU,IACI,gBAAgB,CADU;IAC5C,IAAI,UAAU,CAAC,CAAC,EAAE,gBAAgB,EAA0B;gBAEzC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU;IAKvD,QAAQ,CAAC,MAAM,EAAE,UAAU;IAY3B,aAAa;CAUb"}
1
+ {"version":3,"file":"nodeModel.d.ts","sourceRoot":"","sources":["../../src/model/nodeModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG;IACxB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,GAAC,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAgDsB,CAAC;iBAC7B,CAAC;;4BACjB,CAAA,iBAAiB,CAAC;;;;;;;;AAhDpB,qBAAa,SAAU,SAAQ,cAAoB;IAuC/B,KAAK,EAAE,SAAS;IAtC5B,SAAS,EAAE,MAAM,CAAQ;IAEhC,OAAO,CAAC,KAAK,CAAS;IACtB,IAAI,IAAI,IAAI,MAAM,CAAsB;IACxC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,EAAoB;IAEtC,OAAO,CAAC,SAAS,CAAiB;IAClC,IAAI,QAAQ,IAAI,OAAO,CAA0B;IACjD,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAwB;IAE/C,OAAO,CAAC,IAAI,CAAS;IACrB,IAAI,GAAG,IAAI,MAAM,CAAqB;IACtC,OAAO,KAAK,GAAG,QAA6B;IAE5C,OAAO,CAAC,MAAM,CAAS;IACvB,IAAI,KAAK,IAAI,MAAM,CAAuB;IAC1C,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAAoB;IAEvC,OAAO,CAAC,UAAU,CAAS;IAC3B,IAAI,SAAS,IACI,MAAM,CADmB;IAC1C,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,EAAyB;IAEhD,OAAO,CAAC,KAAK,CAAkB;IAC/B,IAAI,IAAI,IAAI,QAAQ,GAAC,MAAM,CAAsB;IACjD,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAC,MAAM,EAAoB;IAE/C,OAAO,CAAC,OAAO,CAAgB;IAC/B,IAAI,MAAM,IAAI,aAAa,CAAwB;IACnD,IAAI,MAAM,CAAC,CAAC,EAAE,aAAa,EAAsB;IAEjD,OAAO,CAAC,SAAS,CAAmB;IACpC,IAAI,QAAQ,IAAI,gBAAgB,CAA6D;IAC7F,IAAI,QAAQ,CAAC,CAAC,EAAE,gBAAgB,EAAwB;IAExD,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACxC,IAAI,UAAU,IACI,gBAAgB,CADU;IAC5C,IAAI,UAAU,CAAC,CAAC,EAAE,gBAAgB,EAA0B;gBAEzC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU;IAKvD,QAAQ,CAAC,MAAM,EAAE,UAAU;IAY3B,aAAa;CAYb"}
@@ -39,6 +39,10 @@ export class NodeModel extends tree.TreeNodeMixin() {
39
39
  }
40
40
  getSourceData() {
41
41
  const data = super.getSourceData();
42
+ if (this.key)
43
+ data.k = this.key;
44
+ if (this.value)
45
+ data.v = this.value;
42
46
  if (this.type)
43
47
  data.t = this.type;
44
48
  if (this.icon)
@@ -1 +1 @@
1
- {"version":3,"file":"nodeModel.js","sourceRoot":"","sources":["../../src/model/nodeModel.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAE1C,OAAO,EAA8B,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAkBnE,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,aAAa,EAAE;IAIlD,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,KAAK,CAAA,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,CAAS,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA,CAAC,CAAC;IAGtC,IAAI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,CAAU,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA,CAAC,CAAC;IAG/C,IAAI,GAAG,KAAa,OAAO,IAAI,CAAC,IAAI,CAAA,CAAC,CAAC;IACtC,IAAY,GAAG,CAAC,CAAS,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA,CAAC,CAAC;IAG5C,IAAI,KAAK,KAAa,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;IAC1C,IAAI,KAAK,CAAC,CAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,CAAA,CAAC;IAGvC,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAA,CAAC,CAAC;IAC1C,IAAI,SAAS,CAAC,CAAS,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA,CAAC,CAAC;IAGhD,IAAI,IAAI,KAAsB,OAAO,IAAI,CAAC,KAAK,CAAA,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,CAAkB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA,CAAC,CAAC;IAG/C,IAAI,MAAM,KAAoB,OAAO,IAAI,CAAC,OAAO,CAAA,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,CAAgB,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA,CAAC,CAAC;IAGjD,IAAI,QAAQ,KAAuB,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAA,CAAC,CAAC;IAC7F,IAAI,QAAQ,CAAC,CAAmB,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA,CAAC,CAAC;IAGxD,IAAI,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;IAC5C,IAAI,UAAU,CAAC,CAAmB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA,CAAC,CAAC;IAE5D,YAAmB,KAAgB,EAAE,MAAkB;QACtD,KAAK,EAAE,CAAC;QADU,UAAK,GAAL,KAAK,CAAW;QAtC5B,cAAS,GAAW,IAAI,CAAC;QAMxB,cAAS,GAAY,IAAI,CAAC;QAkCjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,MAAkB;QAC1B,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3F,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,aAAa;QACZ,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,EAAgB,CAAC;QACjD,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnD,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAClD,OAAO,IAAI,CAAC;IACb,CAAC;CAED","sourcesContent":["/* eslint-disable no-prototype-builtins */\n\nimport { CustomProperties, IconSpec, tree } from '@omegagrid/core';\nimport { FolderOptions, TreeNodeRenderer } from '../types';\nimport { TreeModel } from './treeModel';\n\nexport type NodeSource = {\n\tk?: string,\n\tv?: string,\n\tkey?: string,\n\tvalue?: string,\n\tt?: string,\n\ts?: boolean,\n\tch?: boolean,\n\ticon?: IconSpec|string,\n\tfolder?: FolderOptions,\n\tprops?: CustomProperties,\n\trenderer?: TreeNodeRenderer\n} & tree.TreeNodeSource;\n\nexport class NodeModel extends tree.TreeNodeMixin() {\n\tpublic subLevels: number = null;\n\t\n\tprivate _type: string;\n\tget type(): string { return this._type }\n\tset type(v: string) { this._type = v }\n\t\n\tprivate _checkbox: boolean = null;\n\tget checkbox(): boolean { return this._checkbox }\n\tset checkbox(v: boolean) { this._checkbox = v }\n\t\n\tprivate _key: string;\n\tget key(): string { return this._key }\n\tprivate set key(v: string) { this._key = v }\n\t\n\tprivate _value: string;\n\tget value(): string { return this._value }\n\tset value(v: string) { this._value = v}\n\t\n\tprivate _htmlValue: string;\n\tget htmlValue() { return this._htmlValue }\n\tset htmlValue(v: string) { this._htmlValue = v }\n\n\tprivate _icon: IconSpec|string;\n\tget icon(): IconSpec|string { return this._icon }\n\tset icon(v: IconSpec|string) { this._icon = v }\n\n\tprivate _folder: FolderOptions;\n\tget folder(): FolderOptions { return this._folder }\n\tset folder(v: FolderOptions) { this._folder = v }\n\n\tprivate _renderer: TreeNodeRenderer;\n\tget renderer(): TreeNodeRenderer { return this._renderer || this.model.options.nodeRenderer }\n\tset renderer(v: TreeNodeRenderer) { this._renderer = v }\n\n\tprotected _properties: CustomProperties;\n\tget properties() { return this._properties }\n\tset properties(v: CustomProperties) { this._properties = v }\n\n\tconstructor(public model: TreeModel, source: NodeSource) {\n\t\tsuper();\n\t\tthis.populate(source);\n\t}\n\n\tpopulate(source: NodeSource) {\n\t\tsuper.populate(source);\n\t\tthis.key = source.hasOwnProperty('key') ? source.key : source.k;\n\t\tthis.value = ((source.hasOwnProperty('value') ? source.value : source.v) ?? '').toString();\n\t\tthis.type = source.t;\n\t\tthis.icon = source.icon;\n\t\tthis.folder = source.folder;\n\t\tthis.checkbox = source.ch ?? null;\n\t\tthis.renderer = source.renderer;\n\t\tthis._properties = source.props;\n\t}\n\n\tgetSourceData() {\n\t\tconst data = super.getSourceData() as NodeSource;\n\t\tif (this.type) data.t = this.type;\n\t\tif (this.icon) data.icon = this.icon;\n\t\tif (this.folder) data.folder = this.folder;\n\t\tif (this.checkbox != null) data.ch = this.checkbox;\n\t\tif (this.properties) data.props = this.properties;\n\t\treturn data;\n\t}\n\n}"]}
1
+ {"version":3,"file":"nodeModel.js","sourceRoot":"","sources":["../../src/model/nodeModel.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-prototype-builtins */\n\nimport { CustomProperties, IconSpec, tree } from '@omegagrid/core';\nimport { FolderOptions, TreeNodeRenderer } from '../types';\nimport { TreeModel } from './treeModel';\n\nexport type NodeSource = {\n\tk?: string,\n\tv?: string,\n\tkey?: string,\n\tvalue?: string,\n\tt?: string,\n\ts?: boolean,\n\tch?: boolean,\n\ticon?: IconSpec|string,\n\tfolder?: FolderOptions,\n\tprops?: CustomProperties,\n\trenderer?: TreeNodeRenderer\n} & tree.TreeNodeSource;\n\nexport class NodeModel extends tree.TreeNodeMixin() {\n\tpublic subLevels: number = null;\n\t\n\tprivate _type: string;\n\tget type(): string { return this._type }\n\tset type(v: string) { this._type = v }\n\t\n\tprivate _checkbox: boolean = null;\n\tget checkbox(): boolean { return this._checkbox }\n\tset checkbox(v: boolean) { this._checkbox = v }\n\t\n\tprivate _key: string;\n\tget key(): string { return this._key }\n\tprivate set key(v: string) { this._key = v }\n\t\n\tprivate _value: string;\n\tget value(): string { return this._value }\n\tset value(v: string) { this._value = v}\n\t\n\tprivate _htmlValue: string;\n\tget htmlValue() { return this._htmlValue }\n\tset htmlValue(v: string) { this._htmlValue = v }\n\n\tprivate _icon: IconSpec|string;\n\tget icon(): IconSpec|string { return this._icon }\n\tset icon(v: IconSpec|string) { this._icon = v }\n\n\tprivate _folder: FolderOptions;\n\tget folder(): FolderOptions { return this._folder }\n\tset folder(v: FolderOptions) { this._folder = v }\n\n\tprivate _renderer: TreeNodeRenderer;\n\tget renderer(): TreeNodeRenderer { return this._renderer || this.model.options.nodeRenderer }\n\tset renderer(v: TreeNodeRenderer) { this._renderer = v }\n\n\tprotected _properties: CustomProperties;\n\tget properties() { return this._properties }\n\tset properties(v: CustomProperties) { this._properties = v }\n\n\tconstructor(public model: TreeModel, source: NodeSource) {\n\t\tsuper();\n\t\tthis.populate(source);\n\t}\n\n\tpopulate(source: NodeSource) {\n\t\tsuper.populate(source);\n\t\tthis.key = source.hasOwnProperty('key') ? source.key : source.k;\n\t\tthis.value = ((source.hasOwnProperty('value') ? source.value : source.v) ?? '').toString();\n\t\tthis.type = source.t;\n\t\tthis.icon = source.icon;\n\t\tthis.folder = source.folder;\n\t\tthis.checkbox = source.ch ?? null;\n\t\tthis.renderer = source.renderer;\n\t\tthis._properties = source.props;\n\t}\n\n\tgetSourceData() {\n\t\tconst data = super.getSourceData() as NodeSource;\n\t\tif (this.key) data.k = this.key;\n\t\tif (this.value) data.v = this.value;\n\t\tif (this.type) data.t = this.type;\n\t\tif (this.icon) data.icon = this.icon;\n\t\tif (this.folder) data.folder = this.folder;\n\t\tif (this.checkbox != null) data.ch = this.checkbox;\n\t\tif (this.properties) data.props = this.properties;\n\t\treturn data;\n\t}\n\n}"]}
@@ -1,28 +1,29 @@
1
- import { NodeModel } from "./nodeModel";
1
+ import { NodeModel, NodeSource } from "./nodeModel";
2
2
  import { Options } from "../options";
3
+ import { TreeModel } from ".";
3
4
  export declare enum NodeSelectionStatus {
4
5
  None = 0,
5
6
  Checked = 1,
6
7
  CheckedByParent = 2,
7
8
  Unchecked = 3
8
9
  }
9
- export type SerializedValue = [string, number?, (0 | 1)?, ItemMetadata?];
10
+ export type SerializedValue = [string, number?, (0 | 1)?, Partial<NodeSource>?];
10
11
  export declare function normalizeSerializedValues(data: (string | number | SerializedValue)[]): SerializedValue[];
11
- export type ItemMetadata = {
12
- value?: string;
13
- };
14
12
  export type SelectedItemParams = {
15
13
  levels: Map<number, boolean>;
16
- } & ItemMetadata;
14
+ value?: string;
15
+ };
17
16
  export declare class TreeSelectionModel {
18
17
  options: Options;
19
- readonly items: Map<string, SelectedItemParams>;
18
+ items: Map<string, SelectedItemParams>;
19
+ model: TreeModel;
20
20
  get count(): number;
21
21
  constructor(options: Options, sourceData?: SerializedValue[]);
22
22
  ensureItem(key: string, value?: string): SelectedItemParams;
23
23
  setItems(items: SerializedValue[]): void;
24
24
  populate(sourceData: SerializedValue[]): void;
25
- serialize(): SerializedValue[];
25
+ getPropertySerializer(serializedProps?: (keyof NodeSource)[]): (nodeKey: string, params: SelectedItemParams) => Record<string, unknown>;
26
+ serialize(serializedProps?: (keyof NodeSource)[]): SerializedValue[];
26
27
  clear(): void;
27
28
  validateChange(node: NodeModel, level: number, value: boolean): boolean;
28
29
  toggle(node: NodeModel, level: number): this;
@@ -1 +1 @@
1
- {"version":3,"file":"selectionModel.d.ts","sourceRoot":"","sources":["../../src/model/selectionModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMrC,oBAAY,mBAAmB;IAC9B,IAAI,IAAI;IACR,OAAO,IAAI;IACX,eAAe,IAAI;IACnB,SAAS,IAAI;CACb;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAEvE,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAC,MAAM,GAAC,eAAe,CAAC,EAAE,qBAKhF;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC5B,GAAG,YAAY,CAAC;AAEjB,qBAAa,kBAAkB;IAQX,OAAO,EAAE,OAAO;IANnC,QAAQ,CAAC,KAAK,kCAAyC;IAEvD,IAAI,KAAK,WAER;gBAEkB,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,eAAe,EAAE;IAMnE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAa;IAO5C,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE;IAIjC,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE;IAStC,SAAS;IAQT,KAAK;IAIL,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAS7D,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAmCrC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,GAAC,IAAW;IAgBjE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAUvC,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAIlC,iBAAiB,CAAC,IAAI,EAAE,SAAS;IAMjC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc;IAOrE,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAYlC,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,mBAAmB;IAaxD,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;CAgB/C"}
1
+ {"version":3,"file":"selectionModel.d.ts","sourceRoot":"","sources":["../../src/model/selectionModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAK9B,oBAAY,mBAAmB;IAC9B,IAAI,IAAI;IACR,OAAO,IAAI;IACX,eAAe,IAAI;IACnB,SAAS,IAAI;CACb;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAE9E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAC,MAAM,GAAC,eAAe,CAAC,EAAE,qBAKhF;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;AAEF,qBAAa,kBAAkB;IASX,OAAO,EAAE,OAAO;IAPnC,KAAK,kCAAyC;IAC9C,KAAK,EAAE,SAAS,CAAC;IAEjB,IAAI,KAAK,WAER;gBAEkB,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,eAAe,EAAE;IAMnE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAOtC,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE;IAIjC,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE;IAWtC,qBAAqB,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,UAAU,CAAC,EAAE,aAC1C,MAAM,UAAU,kBAAkB;IAUpD,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,UAAU,CAAC,EAAE;IAahD,KAAK;IAIL,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAS7D,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAmCrC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,GAAC,IAAW;IAgBjE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAUvC,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAIlC,iBAAiB,CAAC,IAAI,EAAE,SAAS;IAMjC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc;IAOrE,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAYlC,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,mBAAmB;IAaxD,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;CAgB/C"}
@@ -25,11 +25,11 @@ export class TreeSelectionModel {
25
25
  this.populate(sourceData);
26
26
  }
27
27
  }
28
- ensureItem(key, value = null) {
28
+ ensureItem(key, value) {
29
29
  if (!this.items.has(key))
30
30
  this.items.set(key, { levels: new Map() });
31
31
  const item = this.items.get(key);
32
- if (value !== null)
32
+ if (value != null)
33
33
  item.value = value;
34
34
  return item;
35
35
  }
@@ -37,17 +37,36 @@ export class TreeSelectionModel {
37
37
  this.populate(items ?? []);
38
38
  }
39
39
  populate(sourceData) {
40
- this.items.clear();
40
+ const oldItems = this.items;
41
+ this.items = new Map();
41
42
  sourceData.forEach(sourceItem => {
42
- const item = this.ensureItem(sourceItem[0], sourceItem[3]?.value);
43
+ const value = sourceItem[3]?.v ?? sourceItem[3]?.value ?? oldItems.get(sourceItem[0])?.value;
44
+ const item = this.ensureItem(sourceItem[0], value);
43
45
  item.levels.set(sourceItem[1] ?? 0, (sourceItem[2] ?? 1) == 1);
44
46
  if (sourceItem[3])
45
47
  Object.assign(item, sourceItem[3]);
46
48
  });
47
49
  }
48
- serialize() {
50
+ getPropertySerializer(serializedProps) {
51
+ return (nodeKey, params) => serializedProps.reduce((acc, key) => {
52
+ if (key == 'v' || key == 'value') {
53
+ acc[key] = params.value ?? this.model?.nodeMap.get(nodeKey)?.value;
54
+ }
55
+ else {
56
+ acc[key] = this.model?.nodeMap.get(nodeKey)?.value;
57
+ }
58
+ return acc;
59
+ }, {});
60
+ }
61
+ serialize(serializedProps) {
49
62
  const items = [];
50
- this.items.forEach((item, key) => item.levels.forEach((value, level) => items.push([key, level, value ? 1 : 0])));
63
+ const propertySerializer = serializedProps?.length ? this.getPropertySerializer(serializedProps) : null;
64
+ this.items.forEach((item, key) => {
65
+ const props = propertySerializer ? propertySerializer(key, item) : null;
66
+ item.levels.forEach((value, level) => items.push(props
67
+ ? [key, level, value ? 1 : 0, props]
68
+ : [key, level, value ? 1 : 0]));
69
+ });
51
70
  return items;
52
71
  }
53
72
  clear() {
@@ -1 +1 @@
1
- {"version":3,"file":"selectionModel.js","sourceRoot":"","sources":["../../src/model/selectionModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeModel } from \"./nodeModel\";\nimport { Options } from \"../options\";\nimport { SelectMode } from \"../types\";\n\nconst getMapValue = <TKey, TValue>(map: Map<TKey, TValue>, key: TKey, defaultValue: TValue = null) =>\n\tmap.has(key) ? map.get(key) : defaultValue;\n\nexport enum NodeSelectionStatus {\n\tNone = 0,\n\tChecked = 1,\n\tCheckedByParent = 2,\n\tUnchecked = 3\n}\n\nexport type SerializedValue = [string, number?, (0|1)?, ItemMetadata?];\n\nexport function normalizeSerializedValues(data: (string|number|SerializedValue)[]) {\n\treturn data.map<SerializedValue>(item => {\n\t\tif (Array.isArray(item)) return item;\n\t\treturn [item.toString(), 0, 1];\n\t});\n}\n\nexport type ItemMetadata = {\n\tvalue?: string\n};\n\nexport type SelectedItemParams = {\n\tlevels: Map<number, boolean>\n} & ItemMetadata;\n\nexport class TreeSelectionModel {\n\n\treadonly items = new Map<string, SelectedItemParams>();\n\n\tget count() {\n\t\treturn this.items.size;\n\t}\n\n\tconstructor(public options: Options, sourceData?: SerializedValue[]) {\n\t\tif (sourceData) {\n\t\t\tthis.populate(sourceData);\n\t\t}\n\t}\n\n\tensureItem(key: string, value: string = null) {\n\t\tif (!this.items.has(key)) this.items.set(key, {levels: new Map<number, boolean>()});\n\t\tconst item = this.items.get(key);\n\t\tif (value !== null) item.value = value;\n\t\treturn item;\t\n\t}\n\n\tsetItems(items: SerializedValue[]) {\n\t\tthis.populate(items ?? []);\n\t}\n\n\tpopulate(sourceData: SerializedValue[]) {\n\t\tthis.items.clear();\n\t\tsourceData.forEach(sourceItem => {\n\t\t\tconst item = this.ensureItem(sourceItem[0], sourceItem[3]?.value);\n\t\t\titem.levels.set(sourceItem[1] ?? 0, (sourceItem[2] ?? 1) == 1);\n\t\t\tif (sourceItem[3]) Object.assign(item, sourceItem[3]);\n\t\t});\n\t}\n\n\tserialize() {\n\t\tconst items: SerializedValue[] = [];\n\t\tthis.items.forEach((item, key) => \n\t\t\titem.levels.forEach((value, level) => items.push([key, level, value ? 1 : 0]))\n\t\t);\n\t\treturn items;\n\t}\n\n\tclear() {\n\t\tthis.items.clear();\n\t}\n\n\tvalidateChange(node: NodeModel, level: number, value: boolean) {\n\t\tif (this.options.selectMode == SelectMode.Single) {\n\t\t\tif (value === false && this.items.size == 1) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\ttoggle(node: NodeModel, level: number) {\n\t\tlet item = this.ensureItem(node.key, node.value);\n\t\tconst currentValue = item.levels.has(level) ? item.levels.get(level) : null;\n\t\t\n\t\tif (!this.validateChange(node, level, item.levels.has(level) ? !item.levels.get(level) : true)) return this;\n\n\t\tif (currentValue) {\n\t\t\titem.levels.delete(level);\n\t\t} else if (this.options.selectMode == SelectMode.MultipleLevels) {\n\t\t\tif (level == 0 && this.isSelectedByParent(node)) {\n\t\t\t\tif (currentValue === false) {\n\t\t\t\t\titem.levels.delete(0);\n\t\t\t\t} else {\n\t\t\t\t\titem.levels.set(0, false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\titem.levels.set(level, true);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.options.selectMode == SelectMode.Single) {\n\t\t\t\tthis.clear();\n\t\t\t\titem = this.ensureItem(node.key, node.value);\n\t\t\t}\n\n\t\t\tif (level == 0) {\n\t\t\t\titem.levels.set(0, true);\n\t\t\t} else {\n\t\t\t\tthis.toggleChildNodes(node, level);\n\t\t\t}\n\t\t}\n\n\t\tif (item.levels.size == 0) this.clearItemSelection(node);\n\t\treturn this;\n\t}\n\t\n\tselect(node: NodeModel, level: number, value: boolean|null = true) {\n\t\tconst item = this.ensureItem(node.key, node.value);\n\n\t\tif (!this.validateChange(node, level, value === null ? (item.levels.has(level) ? item.levels.get(level) : false) : value)) return this;\n\n\t\tif (value === true) {\n\t\t\titem.levels.set(level, true);\n\t\t} else if (value === false && this.options.selectMode == SelectMode.MultipleLevels) {\n\t\t\titem.levels.set(level, false);\n\t\t} else {\n\t\t\titem.levels.delete(level);\n\t\t}\n\t\tif (item.levels.size == 0) this.clearItemSelection(node);\n\t\treturn this;\n\t}\n\n\tdeselect(node: NodeModel, level: number) {\n\t\tif (!this.validateChange(node, level, false)) return this;\n\n\t\tif (this.items.has(node.key)) {\n\t\t\tthis.items.get(node.key).levels.delete(level);\n\t\t\tif (this.items.get(node.key).levels.size == 0) this.clearItemSelection(node);\n\t\t}\n\t\treturn this;\n\t}\n\t\n\tclearItemSelection(node: NodeModel) {\n\t\tthis.items.delete(node.key);\n\t}\n\n\tgetLevelSelection(node: NodeModel) {\n\t\treturn this.items.has(node.key)\n\t\t\t? this.items.get(node.key).levels\n\t\t\t: new Map<number, boolean>()\n\t}\n\n\tgetValue(node: NodeModel, level: number, defaultValue: boolean = null) {\n\t\tif (this.items.has(node.key)) {\n\t\t\treturn getMapValue(this.items.get(node.key).levels, level, defaultValue);\n\t\t}\n\t\treturn defaultValue;\n\t}\n\n\tisSelectedByParent(node: NodeModel) {\n\t\tlet parent = node.parent as NodeModel;\n\t\tlet levelSpan = 0;\n\t\twhile (parent) {\n\t\t\tif (this.getValue(parent, ++levelSpan, false)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tparent = parent.parent as NodeModel;\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetSelectionStatus(node: NodeModel): NodeSelectionStatus {\n\t\tconst value = this.getValue(node, 0, null);\n\n\t\tif (value === true) {\n\t\t\treturn NodeSelectionStatus.Checked;\n\t\t} else if (value === false) {\n\t\t\treturn NodeSelectionStatus.Unchecked;\n\t\t} else if (this.options.selectMode == SelectMode.MultipleLevels && this.isSelectedByParent(node)) {\n\t\t\treturn NodeSelectionStatus.CheckedByParent;\n\t\t}\n\t\treturn NodeSelectionStatus.None;\n\t}\n\n\ttoggleChildNodes(node: NodeModel, level: number) {\n\t\tconst parentLevel = node.level;\n\t\tlet value: boolean = null;\n\n\t\tnode.walk((n: NodeModel) => {\n\t\t\tif (n.level - parentLevel == level) {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tvalue = this.getSelectionStatus(n) != NodeSelectionStatus.Checked;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.select(n, 0, value ? true : null)\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n}"]}
1
+ {"version":3,"file":"selectionModel.js","sourceRoot":"","sources":["../../src/model/selectionModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeModel, NodeSource } from \"./nodeModel\";\nimport { Options } from \"../options\";\nimport { SelectMode } from \"../types\";\nimport { TreeModel } from \".\";\n\nconst getMapValue = <TKey, TValue>(map: Map<TKey, TValue>, key: TKey, defaultValue: TValue = null) =>\n\tmap.has(key) ? map.get(key) : defaultValue;\n\nexport enum NodeSelectionStatus {\n\tNone = 0,\n\tChecked = 1,\n\tCheckedByParent = 2,\n\tUnchecked = 3\n}\n\nexport type SerializedValue = [string, number?, (0|1)?, Partial<NodeSource>?];\n\nexport function normalizeSerializedValues(data: (string|number|SerializedValue)[]) {\n\treturn data.map<SerializedValue>(item => {\n\t\tif (Array.isArray(item)) return item;\n\t\treturn [item.toString(), 0, 1];\n\t});\n}\n\nexport type SelectedItemParams = {\n\tlevels: Map<number, boolean>,\n\tvalue?: string\n};\n\nexport class TreeSelectionModel {\n\n\titems = new Map<string, SelectedItemParams>();\n\tmodel: TreeModel;\n\n\tget count() {\n\t\treturn this.items.size;\n\t}\n\n\tconstructor(public options: Options, sourceData?: SerializedValue[]) {\n\t\tif (sourceData) {\n\t\t\tthis.populate(sourceData);\n\t\t}\n\t}\n\n\tensureItem(key: string, value?: string) {\n\t\tif (!this.items.has(key)) this.items.set(key, {levels: new Map<number, boolean>()});\n\t\tconst item = this.items.get(key);\n\t\tif (value != null) item.value = value;\n\t\treturn item;\t\n\t}\n\n\tsetItems(items: SerializedValue[]) {\n\t\tthis.populate(items ?? []);\n\t}\n\n\tpopulate(sourceData: SerializedValue[]) {\n\t\tconst oldItems = this.items;\n\t\tthis.items = new Map();\n\t\tsourceData.forEach(sourceItem => {\n\t\t\tconst value = sourceItem[3]?.v ?? sourceItem[3]?.value ?? oldItems.get(sourceItem[0])?.value;\n\t\t\tconst item = this.ensureItem(sourceItem[0], value);\n\t\t\titem.levels.set(sourceItem[1] ?? 0, (sourceItem[2] ?? 1) == 1);\n\t\t\tif (sourceItem[3]) Object.assign(item, sourceItem[3]);\n\t\t});\n\t}\n\n\tgetPropertySerializer(serializedProps?: (keyof NodeSource)[]) {\n\t\treturn (nodeKey: string, params: SelectedItemParams) => serializedProps.reduce((acc, key) => {\n\t\t\tif (key == 'v' || key == 'value') {\n\t\t\t\tacc[key] = params.value ?? this.model?.nodeMap.get(nodeKey)?.value;\n\t\t\t} else {\n\t\t\t\tacc[key] = this.model?.nodeMap.get(nodeKey)?.value;\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} as Record<string, unknown>);\n\t}\n\n\tserialize(serializedProps?: (keyof NodeSource)[]) {\n\t\tconst items: SerializedValue[] = [];\n\t\tconst propertySerializer = serializedProps?.length ? this.getPropertySerializer(serializedProps) : null;\n\t\tthis.items.forEach((item, key) => {\n\t\t\tconst props = propertySerializer ? propertySerializer(key, item) : null;\n\t\t\titem.levels.forEach((value, level) => items.push(props \n\t\t\t\t? [key, level, value ? 1 : 0, props] \n\t\t\t\t: [key, level, value ? 1 : 0]\n\t\t\t));\n\t\t});\n\t\treturn items;\n\t}\n\n\tclear() {\n\t\tthis.items.clear();\n\t}\n\n\tvalidateChange(node: NodeModel, level: number, value: boolean) {\n\t\tif (this.options.selectMode == SelectMode.Single) {\n\t\t\tif (value === false && this.items.size == 1) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\ttoggle(node: NodeModel, level: number) {\n\t\tlet item = this.ensureItem(node.key, node.value);\n\t\tconst currentValue = item.levels.has(level) ? item.levels.get(level) : null;\n\t\t\n\t\tif (!this.validateChange(node, level, item.levels.has(level) ? !item.levels.get(level) : true)) return this;\n\n\t\tif (currentValue) {\n\t\t\titem.levels.delete(level);\n\t\t} else if (this.options.selectMode == SelectMode.MultipleLevels) {\n\t\t\tif (level == 0 && this.isSelectedByParent(node)) {\n\t\t\t\tif (currentValue === false) {\n\t\t\t\t\titem.levels.delete(0);\n\t\t\t\t} else {\n\t\t\t\t\titem.levels.set(0, false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\titem.levels.set(level, true);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.options.selectMode == SelectMode.Single) {\n\t\t\t\tthis.clear();\n\t\t\t\titem = this.ensureItem(node.key, node.value);\n\t\t\t}\n\n\t\t\tif (level == 0) {\n\t\t\t\titem.levels.set(0, true);\n\t\t\t} else {\n\t\t\t\tthis.toggleChildNodes(node, level);\n\t\t\t}\n\t\t}\n\n\t\tif (item.levels.size == 0) this.clearItemSelection(node);\n\t\treturn this;\n\t}\n\t\n\tselect(node: NodeModel, level: number, value: boolean|null = true) {\n\t\tconst item = this.ensureItem(node.key, node.value);\n\n\t\tif (!this.validateChange(node, level, value === null ? (item.levels.has(level) ? item.levels.get(level) : false) : value)) return this;\n\n\t\tif (value === true) {\n\t\t\titem.levels.set(level, true);\n\t\t} else if (value === false && this.options.selectMode == SelectMode.MultipleLevels) {\n\t\t\titem.levels.set(level, false);\n\t\t} else {\n\t\t\titem.levels.delete(level);\n\t\t}\n\t\tif (item.levels.size == 0) this.clearItemSelection(node);\n\t\treturn this;\n\t}\n\n\tdeselect(node: NodeModel, level: number) {\n\t\tif (!this.validateChange(node, level, false)) return this;\n\n\t\tif (this.items.has(node.key)) {\n\t\t\tthis.items.get(node.key).levels.delete(level);\n\t\t\tif (this.items.get(node.key).levels.size == 0) this.clearItemSelection(node);\n\t\t}\n\t\treturn this;\n\t}\n\t\n\tclearItemSelection(node: NodeModel) {\n\t\tthis.items.delete(node.key);\n\t}\n\n\tgetLevelSelection(node: NodeModel) {\n\t\treturn this.items.has(node.key)\n\t\t\t? this.items.get(node.key).levels\n\t\t\t: new Map<number, boolean>()\n\t}\n\n\tgetValue(node: NodeModel, level: number, defaultValue: boolean = null) {\n\t\tif (this.items.has(node.key)) {\n\t\t\treturn getMapValue(this.items.get(node.key).levels, level, defaultValue);\n\t\t}\n\t\treturn defaultValue;\n\t}\n\n\tisSelectedByParent(node: NodeModel) {\n\t\tlet parent = node.parent as NodeModel;\n\t\tlet levelSpan = 0;\n\t\twhile (parent) {\n\t\t\tif (this.getValue(parent, ++levelSpan, false)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tparent = parent.parent as NodeModel;\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetSelectionStatus(node: NodeModel): NodeSelectionStatus {\n\t\tconst value = this.getValue(node, 0, null);\n\n\t\tif (value === true) {\n\t\t\treturn NodeSelectionStatus.Checked;\n\t\t} else if (value === false) {\n\t\t\treturn NodeSelectionStatus.Unchecked;\n\t\t} else if (this.options.selectMode == SelectMode.MultipleLevels && this.isSelectedByParent(node)) {\n\t\t\treturn NodeSelectionStatus.CheckedByParent;\n\t\t}\n\t\treturn NodeSelectionStatus.None;\n\t}\n\n\ttoggleChildNodes(node: NodeModel, level: number) {\n\t\tconst parentLevel = node.level;\n\t\tlet value: boolean = null;\n\n\t\tnode.walk((n: NodeModel) => {\n\t\t\tif (n.level - parentLevel == level) {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tvalue = this.getSelectionStatus(n) != NodeSelectionStatus.Checked;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.select(n, 0, value ? true : null)\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"treeAdapter.d.ts","sourceRoot":"","sources":["../../src/model/treeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,8BAAsB,WAAY,SAAQ,gBAAgB,CAAC,IAAI,CAAC;IAE/D,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,UAAU,GAAC,OAAO,CAAC,UAAU,CAAC;IAM5E,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CAIxD"}
1
+ {"version":3,"file":"treeAdapter.d.ts","sourceRoot":"","sources":["../../src/model/treeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,8BAAsB,WAAY,SAAQ,gBAAgB,CAAC,IAAI,CAAC;IAE/D,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,UAAU,GAAC,OAAO,CAAC,UAAU,CAAC;IAM5E,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CAIxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"treeAdapter.js","sourceRoot":"","sources":["../../src/model/treeAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKnD,MAAM,OAAgB,WAAY,SAAQ,gBAAsB;IAI/D,kEAAkE;IAClE,cAAc;IACd,IAAI;IAEJ,UAAU;QACT,OAAO,IAAI,CAAC;IACb,CAAC;CAED","sourcesContent":["import { Options } from '../options';\nimport { TreeSource } from './treeModel';\nimport { ComponentAdapter } from '@omegagrid/core';\nimport { Tree } from '../ui';\nimport { TreeAdapterParams } from '../types';\nimport { NodeSource } from '.';\n\nexport abstract class TreeAdapter extends ComponentAdapter<Tree> {\n\n\tabstract getTree(params?: TreeAdapterParams): TreeSource|Promise<TreeSource>;\n\n\t// getItems(_keys: string[]): NodeSource[]|Promise<NodeSource[]> {\n\t// \treturn [];\n\t// }\n\n\tgetOptions(): Partial<Options>|Promise<Partial<Options>> {\n\t\treturn null;\n\t}\n\n}"]}
1
+ {"version":3,"file":"treeAdapter.js","sourceRoot":"","sources":["../../src/model/treeAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAInD,MAAM,OAAgB,WAAY,SAAQ,gBAAsB;IAI/D,kEAAkE;IAClE,cAAc;IACd,IAAI;IAEJ,UAAU;QACT,OAAO,IAAI,CAAC;IACb,CAAC;CAED","sourcesContent":["import { Options } from '../options';\nimport { TreeSource } from './treeModel';\nimport { ComponentAdapter } from '@omegagrid/core';\nimport { Tree } from '../ui';\nimport { TreeAdapterParams } from '../types';\n\nexport abstract class TreeAdapter extends ComponentAdapter<Tree> {\n\n\tabstract getTree(params?: TreeAdapterParams): TreeSource|Promise<TreeSource>;\n\n\t// getItems(_keys: string[]): NodeSource[]|Promise<NodeSource[]> {\n\t// \treturn [];\n\t// }\n\n\tgetOptions(): Partial<Options>|Promise<Partial<Options>> {\n\t\treturn null;\n\t}\n\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../src/ui/dropdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAO,KAAK,EAAqB,MAAM,iBAAiB,CAAC;AAE3F,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAe,OAAO,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAIzC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,qBACa,YAAa,SAAQ,QAAQ;IAEzC,MAAM,CAAC,MAAM,4BAA+B;IAG5C,OAAO,EAAE,OAAO,CAAiB;IAGjC,KAAK,EAAE,SAAS,CAAC;IAGjB,OAAO,EAAE,WAAW,CAAC;IAGrB,SAAS,EAAE,kBAAkB,CAAwC;IAGrE,SAAS,SAAO;IAGhB,QAAQ,SAAO;IAGf,KAAK,EAAE,eAAe,EAAE,CAAC;IAGzB,KAAK,UAAS;IAGd,OAAO,EAAE,MAAM,CAAC;IAGhB,WAAW,EAAE,MAAM,CAAC;IAGpB,WAAW,UAAS;IAGpB,iBAAiB,UAAS;IAG1B,YAAY,UAAS;IAGrB,aAAa,kCAAyC;IAGtD,MAAM,EAAE,MAAM,CAAC;IAGf,KAAK,EAAE,KAAK,CAAC;IAGb,UAAU,EAAE,cAAc,CAAC;IAG3B,UAAU,SAAM;IAEhB,KAAK,EAAE,IAAI,CAAC;IACZ,eAAe,UAAQ;IACvB,UAAU,UAAQ;IAClB,cAAc,UAAQ;IACtB,aAAa,SAAK;IAElB,oBAAoB;;uBArEA,CAAC;MAyElB;IAEH,aAAa,aAEZ;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,IAAI,SAaP;IAED,OAAO,UAA4C;IAEnD,SAAS,CAAC,CAAC,EAAE,SAAS;IAYhB,IAAI;IAKJ,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IA8BlD,MAAM,CAAC,IAAI,EAAE,MAAM;IAQnB,WAAW;IAOjB,KAAK;;IAmBL,iBAAiB;IASjB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,OAAO,CAAC,OAAO,CAAQ;IAMtE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAKvC,WAAW;IAaL,cAAc,CAAC,aAAa,UAAQ;IAQ1C,YAAY,aASX;IAED,WAAW,aAEV;IAED,iBAAiB,IAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;IAgBjE,oBAAoB;IAoBpB,gBAAgB;IAOhB,eAAe;;uBAxRK,CAAC;MA2Rb;IAER,QAAQ,MAAa,UAAU,mBAK9B;IAED,eAAe,MAAO,aAAa,UAmBlC;IAED,YAAY,eAAoD;IAEhE,MAAM,6CAmCJ;CACF"}
1
+ {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../src/ui/dropdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAO,KAAK,EAAqB,MAAM,iBAAiB,CAAC;AAE3F,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAe,OAAO,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAIzC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,qBACa,YAAa,SAAQ,QAAQ;IAEzC,MAAM,CAAC,MAAM,4BAA+B;IAG5C,OAAO,EAAE,OAAO,CAAiB;IAGjC,KAAK,EAAE,SAAS,CAAC;IAGjB,OAAO,EAAE,WAAW,CAAC;IAGrB,SAAS,EAAE,kBAAkB,CAAwC;IAGrE,SAAS,SAAO;IAGhB,QAAQ,SAAO;IAGf,KAAK,EAAE,eAAe,EAAE,CAAC;IAGzB,KAAK,UAAS;IAGd,OAAO,EAAE,MAAM,CAAC;IAGhB,WAAW,EAAE,MAAM,CAAC;IAGpB,WAAW,UAAS;IAGpB,iBAAiB,UAAS;IAG1B,YAAY,UAAS;IAGrB,aAAa,kCAAyC;IAGtD,MAAM,EAAE,MAAM,CAAC;IAGf,KAAK,EAAE,KAAK,CAAC;IAGb,UAAU,EAAE,cAAc,CAAC;IAG3B,UAAU,SAAM;IAEhB,KAAK,EAAE,IAAI,CAAC;IACZ,eAAe,UAAQ;IACvB,UAAU,UAAQ;IAClB,cAAc,UAAQ;IACtB,aAAa,SAAK;IAElB,oBAAoB;;uBArEA,CAAC;MAyElB;IAEH,aAAa,aAEZ;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,IAAI,SAaP;IAED,OAAO,UAA4C;IAEnD,SAAS,CAAC,CAAC,EAAE,SAAS;IAYhB,IAAI;IAKJ,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IA8BlD,MAAM,CAAC,IAAI,EAAE,MAAM;IAQnB,WAAW;IAQjB,KAAK;;IAmBL,iBAAiB;IASjB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,OAAO,CAAC,OAAO,CAAQ;IAMtE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAKvC,WAAW;IAaL,cAAc,CAAC,aAAa,UAAQ;IAQ1C,YAAY,aASX;IAED,WAAW,aAEV;IAED,iBAAiB,IAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;IAgBjE,oBAAoB;IAoBpB,gBAAgB;IAOhB,eAAe;;uBAzRK,CAAC;MA4Rb;IAER,QAAQ,MAAa,UAAU,mBAK9B;IAED,eAAe,MAAO,aAAa,UAmBlC;IAED,YAAY,eAAoD;IAEhE,MAAM,6CAmCJ;CACF"}
@@ -95,6 +95,7 @@ let TreeDropdown = class TreeDropdown extends Dropdown {
95
95
  await this.updateComplete;
96
96
  if (this.input)
97
97
  this.input.value = '';
98
+ await this.tree.updateComplete;
98
99
  this.tree.clearFilter();
99
100
  }
100
101
  focus() {
@@ -265,7 +266,7 @@ let TreeDropdown = class TreeDropdown extends Dropdown {
265
266
  const levels = [...item.levels.entries()].filter(item2 => item2[0] > 0);
266
267
  const node = model?.nodeMap.has(key) ? model.nodeMap.get(key) : new NodeModel(this.tree.model, {
267
268
  k: key,
268
- v: item.value ?? key
269
+ v: item?.value ?? key
269
270
  });
270
271
  if (levels.length < item.levels.size && levels.length > 0) {
271
272
  levels.unshift([0, item.levels.get(0)]);
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../src/ui/dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["import { Button, Dropdown, Tooltip, dom, Input, ListSelectTrigger } from \"@omegagrid/core\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport { TreeModel, TreeSource } from \"../model/treeModel\";\nimport { SelectedItemParams, TreeSelectionModel, SerializedValue } from \"../model/selectionModel\";\nimport { initOptions, Options } from \"../options\";\nimport { html } from \"lit\";\nimport { TreeAdapter } from \"../model/treeAdapter\";\nimport { Tree, TreeEvent } from \"./tree\";\nimport { map } from 'lit/directives/map.js';\nimport { join } from 'lit/directives/join.js';\nimport { debounce } from \"ts-debounce\";\nimport { NodeModel } from \"../model\";\nimport { style } from \"./dropdown.style\";\n\n@customElement('og-tree-dropdown')\nexport class TreeDropdown extends Dropdown {\n\n\tstatic styles = [...Dropdown.styles, style];\n\n\t@property({type: Object})\n\toptions: Options = initOptions();\n\n\t@property({type: Object})\n\tmodel: TreeModel;\n\n\t@property({type: Object})\n\tadapter: TreeAdapter;\n\n\t@property({type: Object})\n\tselection: TreeSelectionModel = new TreeSelectionModel(this.options);\n\n\t@property({type: Number})\n\tmaxHeight = 300;\n\n\t@property({type: Number})\n\tmaxWidth = 400;\n\n\t@property({type: Array})\n\tvalue: SerializedValue[];\n\n\t@property({type: Boolean, reflect: true})\n\tcross = false;\n\t\n\t@property({type: String})\n\tcaption: string;\n\n\t@property({type: String})\n\tplaceholder: string;\n\n\t@property({type: Boolean})\n\tbuttonInput = false;\n\n\t@property({type: Boolean})\n\tpreventInputEnter = false;\n\n\t@property({type: Boolean})\n\tdynamicWidth = false;\n\n\t@state()\n\tselectedItems = new Map<string, SelectedItemParams>();\n\n\t@query('og-button')\n\tbutton: Button;\n\n\t@query('og-input')\n\tinput: Input;\n\n\t@query('#content')\n\tcontentDiv: HTMLDivElement;\n\n\t@state()\n\tsearchTerm = '';\n\n\t_tree: Tree;\n\t_renderDropdown = true;\n\t_firstOpen = true;\n\t_autoHighlight = true;\n\toriginalWidth = 0;\n\n\t_debounceWidthUpdate = debounce(() => {\n\t\tif (!this.dropdown) return;\n\t\tdom.fixElementPosition(this.dropdown);\n\t\tif (this.dynamicWidth) this.adjustWidth();\n\t});\n\n\t_onTreeRender = () => {\n\t\tthis._debounceWidthUpdate();\n\t}\n\n\tget hasCrossButton() { \n\t\treturn this.cross && ((this.selection.count > 0 && this.options.allowEmpty) || this.searchTerm !== '');\n\t}\n\n\tget tree() {\n\t\tif (this._tree) return this._tree;\n\t\tthis._tree = new Tree();\n\t\tthis._tree.disableAutoload = true;\n\t\tthis._tree.model = this.adapter ? null : this.model;\n\t\tthis._tree.adapter = this.adapter;\n\t\tthis._tree.selection = this.selection;\n\t\tthis._tree.options = this.options;\n\t\tthis._tree.maxHeight = this.maxHeight;\n\t\tthis._tree.addEventListener('change', (e: TreeEvent) => this._onChange(e));\n\t\tthis._tree.addEventListener('render', this._onTreeRender);\n\t\tthis._tree.slot = 'inner-content';\n\t\treturn this._tree;\n\t}\n\n\ttooltip = dom.createElement<Tooltip>('og-tooltip');\n\n\t_onChange(e: TreeEvent) {\n\t\tthis._autoHighlight = false; // prevent autoscroll after manual selection\n\t\tthis.selectedItems = null;\n\t\tthis.selectedItems = e.component.selection.items;\n\t\tthis.value = e.component.selection.serialize();\n\t\tif (this.options.autoClose) this.close();\n\t\tthis.dispatchEvent(new TreeEvent(e.type, {component: e.component, node: e.node}));\n\t\t// if (this.input) {\n\t\t// \tsetTimeout(() => this.input.focus(), 1000);\n\t\t// }\n\t}\n\n\tasync open() {\n\t\tif (this.tree.parentElement != this.dropdown) this.dropdown.appendChild(this._tree);\n\t\tawait super.open();\n\t}\n\n\tasync willUpdate(changedProps: Map<PropertyKey, unknown>) {\n\t\tif (this.buttonInput) {\n\t\t\tthis.options.search = false;\n\t\t}\n\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.selection.setItems(this.value);\n\t\t\tthis.selectedItems = null;\n\t\t\tthis.selectedItems = this.selection.items;\n\t\t\tif (this._autoHighlight) {\n\t\t\t\tthis.tree.highlightFirstSelectedNode();\n\t\t\t} else {\n\t\t\t\tthis._autoHighlight = true;\n\t\t\t}\n\t\t\tthis.tree.renderItems(true);\n\t\t}\n\n\t\tif (this._tree) {\n\t\t\tif (changedProps.has('adapter')) this._tree.adapter = this.adapter;\n\t\t\tif (changedProps.has('model')) this._tree.model = this.model;\n\t\t}\n\n\t\tif (changedProps.has('adapter') && this.adapter) {\n\t\t\tthis._firstOpen = true; // force to reload data after opening dropdown\n\t\t\tthis.options = initOptions(await this.adapter.getOptions(), this.options);\n\t\t}\n\n\t\tthis._renderDropdown = true;\n\t}\n\n\tasync filter(term: string) {\n\t\tif (this.input) this.searchTerm = term;\n\t\tawait this.updateComplete;\n\t\tif (this.input) this.input.value = term;\n\t\tawait this.tree.updateComplete;\n\t\tthis.tree.filter(term);\n\t}\n\n\tasync clearFilter() {\n\t\tif (this.input) this.searchTerm = '';\n\t\tawait this.updateComplete;\n\t\tif (this.input) this.input.value = '';\n\t\tthis.tree.clearFilter();\n\t}\n\n\tfocus() {\n\t\tif (this.buttonInput) this.input?.focus();\n\t\telse super.focus();\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.addEventListener('dropdown.open', async () => {\n\t\t\tthis.focus();\n\t\t\t\n\t\t\tif (this.adapter && (this._firstOpen || this.options.alwaysRefresh)) {\n\t\t\t\tawait this.tree.loadData();\n\t\t\t}\n\n\t\t\tthis._firstOpen = false;\n\t\t});\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\n\t\tif (!this.hasUpdated) {\n\t\t\tif (this.value) this.selection.setItems(this.value);\n\t\t\tthis.selectedItems = this.selection.items;\n\t\t}\n\t}\n\n\tsetSourceData(sourceData: TreeSource, options: Partial<Options> = null) {\n\t\tif (options) this.updateOptions(options);\n\t\tthis.model = new TreeModel(sourceData, this.options);\n\t\tif (this._tree) this._tree.model = this.model;\n\t}\n\n\tupdateOptions(options: Partial<Options>) {\n\t\tObject.assign(this.options, options ?? {});\n\t\tthis.requestUpdate();\n\t}\n\n\tadjustWidth() {\n\t\tif (this.tree?.list && this.dropdown) {\n\t\t\tthis.originalWidth = this.originalWidth || this.dropdown.offsetWidth;\n\t\t\tdom.setSize(this.dropdown, {w: Math.min(this.originalWidth, this.maxWidth)});\n\t\t\t\n\t\t\tconst width = this.tree.list.calculateViewportMaxItemWidth();\n\t\t\tif (width > this.dropdown.offsetWidth) {\n\t\t\t\tdom.setSize(this.dropdown, {w: Math.min(width, this.maxWidth)});\n\t\t\t\tthis.layout();\n\t\t\t}\n\t\t}\n\t}\n\n\tasync clearSelection(dispatchEvent = false) {\n\t\tthis.selection.clear();\n\t\tawait this.clearFilter();\n\t\tthis.requestUpdate();\n\t\tif (dispatchEvent) this.dispatchEvent(new TreeEvent('change', {component: this.tree}));\n\t\tthis.tree?.renderItems(true);\n\t}\n\n\t_onMouseOver = () => {\n\t\tif (this.contentDiv && this.contentDiv.scrollWidth > this.contentDiv.clientWidth) {\n\t\t\tif (!this.tooltip.parentElement) {\n\t\t\t\tdocument.body.appendChild(this.tooltip);\n\t\t\t\tthis.tooltip.style.maxWidth = \"200px\";\n\t\t\t}\n\t\t\tthis.tooltip.content = this.getButtonContentHtml();\n\t\t\tthis.tooltip.attachTo(this.button, 'bottom');\n\t\t}\n\t}\n\n\t_onMouseOut = () => {\n\t\tthis.tooltip.deatach();\n\t}\n\n\tgetSelectionItems() : [NodeModel, [number, boolean][], boolean][] {\n\t\tconst model = this.tree?.model ?? this.model;\n\t\treturn Array.from(this.selectedItems).map(([key, item]) => {\n\t\t\tconst red = item.levels.has(0) && item.levels.get(0) == false;\n\t\t\tconst levels = [...item.levels.entries()].filter(item2 => item2[0] > 0);\n\t\t\tconst node = model?.nodeMap.has(key) ? model.nodeMap.get(key) : new NodeModel(this.tree.model, {\n\t\t\t\tk: key, \n\t\t\t\tv: item.value ?? key\n\t\t\t});\n\t\t\tif (levels.length < item.levels.size && levels.length > 0) {\n\t\t\t\tlevels.unshift([0, item.levels.get(0)]);\n\t\t\t}\n\t\t\treturn [node, levels, red];\n\t\t});\n\t}\n\n\tgetButtonContentHtml() {\n\t\tconst items = this.getSelectionItems();\n\t\tconst caption = this.caption ? html`<span id=\"caption\">${this.caption}</span>` : null;\n\t\tconst placeholder = this.placeholder ? html`<span id=\"placeholder\">${this.placeholder}</span>` : null;\n\t\treturn items.length > 0 ? html`${caption ? html`${caption}:&nbsp;` : ``}${join(map(items, ([node, levels, red]) => html`\n\t\t\t${node && node.icon ? html`<og-icon .icon=\"${node.icon}\"></og-icon>&nbsp;` : null}\n\t\t\t${red \n\t\t\t\t? html`<span style=\"color:#ff0000\">${node.value}</span>` \n\t\t\t\t: html`<span>${node.value}</span>`\n\t\t\t}\n\t\t\t${levels.length > 0 \n\t\t\t\t? html`(${join(map(levels, level => level[0]), html`,&nbsp;`)})` \n\t\t\t\t: ``\n\t\t\t}\n\t\t`), html`,&nbsp;`)}` : (caption \n\t\t\t? html`${caption}${placeholder ? html`: ${placeholder}` : ``}` \n\t\t\t: (placeholder ? html`${placeholder}` : html`&nbsp;`)\n\t\t);\n\t}\n\n\tgetSelectionText() {\n\t\treturn this.getSelectionItems().map(([node, levels]) => node.value + (levels.length > 0 \n\t\t\t? ` (${levels.map(level => level[0]).join(',')})`\n\t\t\t: ''\n\t\t)).join(',');\n\t}\n\n\t_debounceFilter = debounce((term: string) => {\n\t\tthis.tree.filter(term);\n\t\tthis.dispatchEvent(new TreeEvent('tree.filter'));\n\t}, 300);\n\n\t_onInput = async (e: InputEvent) => {\n\t\tif (!this.isOpen) await this.open();\n\t\tconst value = (e.target as Input).value;\n\t\tthis._debounceFilter(value);\n\t\tthis.searchTerm = value;\n\t}\n\n\t_onInputKeyDown = (e: KeyboardEvent) => {\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.tree.list.moveDown();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.tree.list.moveUp();\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\te.preventDefault();\n\t\t\t\tif (this.preventInputEnter) return;\n\t\t\t\tif (this.tree.list.selectedIndex > -1) {\n\t\t\t\t\tthis.tree.list.select(this.tree.list.selectedIndex, ListSelectTrigger.Enter);\n\t\t\t\t\tsetTimeout(() => this.input.focus(), 100);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t_onInputBlur = () => this.input.value = this.getSelectionText();\n\n\trender = () => html`\n\t\t${this.buttonInput ? html`\n\t\t\t<og-input\n\t\t\t\t@input=\"${this._onInput}\"\n\t\t\t\t@keydown=\"${this._onInputKeyDown}\"\n\t\t\t\t@blur=\"${this._onInputBlur}\"\n\t\t\t\t.value=\"${this.getSelectionText()}\">\n\t\t\t</og-input>\n\t\t` : ''}\n\n\t\t<og-button\n\t\t\t@mousedown=\"${this._onMousedown}\"\n\t\t\t@mouseenter=\"${this._onMouseOver}\"\n\t\t\t@mouseleave=\"${this._onMouseOut}\"\n\t\t\tcolor=\"${this.color}\"\n\t\t\tid=\"main\"\n\t\t\tstyle=\"flex: 1\" \n\t\t\tcaret>\n\t\t\t${this.buttonInput ? '' : html`\n\t\t\t\t<div id=\"content\" slot=\"content\">\n\t\t\t\t\t${this.getButtonContentHtml()}\n\t\t\t\t</div>\n\t\t\t`}\n\t\t</og-button>\n\n\t\t${this.hasCrossButton ? html`\n\t\t\t<og-button\n\t\t\t\tid=\"cross\"\n\t\t\t\t@mousedown=\"${() => this.clearSelection(true)}\"\n\t\t\t\ticon=\"xmark\"\n\t\t\t\tcolor=\"red\">\n\t\t\t</og-button>\n\t\t` : ``}\n\n\t\t${this.renderDropdown()}\n\t`;\n}\n"]}
1
+ {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../src/ui/dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["import { Button, Dropdown, Tooltip, dom, Input, ListSelectTrigger } from \"@omegagrid/core\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport { TreeModel, TreeSource } from \"../model/treeModel\";\nimport { SelectedItemParams, TreeSelectionModel, SerializedValue } from \"../model/selectionModel\";\nimport { initOptions, Options } from \"../options\";\nimport { html } from \"lit\";\nimport { TreeAdapter } from \"../model/treeAdapter\";\nimport { Tree, TreeEvent } from \"./tree\";\nimport { map } from 'lit/directives/map.js';\nimport { join } from 'lit/directives/join.js';\nimport { debounce } from \"ts-debounce\";\nimport { NodeModel } from \"../model\";\nimport { style } from \"./dropdown.style\";\n\n@customElement('og-tree-dropdown')\nexport class TreeDropdown extends Dropdown {\n\n\tstatic styles = [...Dropdown.styles, style];\n\n\t@property({type: Object})\n\toptions: Options = initOptions();\n\n\t@property({type: Object})\n\tmodel: TreeModel;\n\n\t@property({type: Object})\n\tadapter: TreeAdapter;\n\n\t@property({type: Object})\n\tselection: TreeSelectionModel = new TreeSelectionModel(this.options);\n\n\t@property({type: Number})\n\tmaxHeight = 300;\n\n\t@property({type: Number})\n\tmaxWidth = 400;\n\n\t@property({type: Array})\n\tvalue: SerializedValue[];\n\n\t@property({type: Boolean, reflect: true})\n\tcross = false;\n\t\n\t@property({type: String})\n\tcaption: string;\n\n\t@property({type: String})\n\tplaceholder: string;\n\n\t@property({type: Boolean})\n\tbuttonInput = false;\n\n\t@property({type: Boolean})\n\tpreventInputEnter = false;\n\n\t@property({type: Boolean})\n\tdynamicWidth = false;\n\n\t@state()\n\tselectedItems = new Map<string, SelectedItemParams>();\n\n\t@query('og-button')\n\tbutton: Button;\n\n\t@query('og-input')\n\tinput: Input;\n\n\t@query('#content')\n\tcontentDiv: HTMLDivElement;\n\n\t@state()\n\tsearchTerm = '';\n\n\t_tree: Tree;\n\t_renderDropdown = true;\n\t_firstOpen = true;\n\t_autoHighlight = true;\n\toriginalWidth = 0;\n\n\t_debounceWidthUpdate = debounce(() => {\n\t\tif (!this.dropdown) return;\n\t\tdom.fixElementPosition(this.dropdown);\n\t\tif (this.dynamicWidth) this.adjustWidth();\n\t});\n\n\t_onTreeRender = () => {\n\t\tthis._debounceWidthUpdate();\n\t}\n\n\tget hasCrossButton() { \n\t\treturn this.cross && ((this.selection.count > 0 && this.options.allowEmpty) || this.searchTerm !== '');\n\t}\n\n\tget tree() {\n\t\tif (this._tree) return this._tree;\n\t\tthis._tree = new Tree();\n\t\tthis._tree.disableAutoload = true;\n\t\tthis._tree.model = this.adapter ? null : this.model;\n\t\tthis._tree.adapter = this.adapter;\n\t\tthis._tree.selection = this.selection;\n\t\tthis._tree.options = this.options;\n\t\tthis._tree.maxHeight = this.maxHeight;\n\t\tthis._tree.addEventListener('change', (e: TreeEvent) => this._onChange(e));\n\t\tthis._tree.addEventListener('render', this._onTreeRender);\n\t\tthis._tree.slot = 'inner-content';\n\t\treturn this._tree;\n\t}\n\n\ttooltip = dom.createElement<Tooltip>('og-tooltip');\n\n\t_onChange(e: TreeEvent) {\n\t\tthis._autoHighlight = false; // prevent autoscroll after manual selection\n\t\tthis.selectedItems = null;\n\t\tthis.selectedItems = e.component.selection.items;\n\t\tthis.value = e.component.selection.serialize();\n\t\tif (this.options.autoClose) this.close();\n\t\tthis.dispatchEvent(new TreeEvent(e.type, {component: e.component, node: e.node}));\n\t\t// if (this.input) {\n\t\t// \tsetTimeout(() => this.input.focus(), 1000);\n\t\t// }\n\t}\n\n\tasync open() {\n\t\tif (this.tree.parentElement != this.dropdown) this.dropdown.appendChild(this._tree);\n\t\tawait super.open();\n\t}\n\n\tasync willUpdate(changedProps: Map<PropertyKey, unknown>) {\n\t\tif (this.buttonInput) {\n\t\t\tthis.options.search = false;\n\t\t}\n\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.selection.setItems(this.value);\n\t\t\tthis.selectedItems = null;\n\t\t\tthis.selectedItems = this.selection.items;\n\t\t\tif (this._autoHighlight) {\n\t\t\t\tthis.tree.highlightFirstSelectedNode();\n\t\t\t} else {\n\t\t\t\tthis._autoHighlight = true;\n\t\t\t}\n\t\t\tthis.tree.renderItems(true);\n\t\t}\n\n\t\tif (this._tree) {\n\t\t\tif (changedProps.has('adapter')) this._tree.adapter = this.adapter;\n\t\t\tif (changedProps.has('model')) this._tree.model = this.model;\n\t\t}\n\n\t\tif (changedProps.has('adapter') && this.adapter) {\n\t\t\tthis._firstOpen = true; // force to reload data after opening dropdown\n\t\t\tthis.options = initOptions(await this.adapter.getOptions(), this.options);\n\t\t}\n\n\t\tthis._renderDropdown = true;\n\t}\n\n\tasync filter(term: string) {\n\t\tif (this.input) this.searchTerm = term;\n\t\tawait this.updateComplete;\n\t\tif (this.input) this.input.value = term;\n\t\tawait this.tree.updateComplete;\n\t\tthis.tree.filter(term);\n\t}\n\n\tasync clearFilter() {\n\t\tif (this.input) this.searchTerm = '';\n\t\tawait this.updateComplete;\n\t\tif (this.input) this.input.value = '';\n\t\tawait this.tree.updateComplete;\n\t\tthis.tree.clearFilter();\n\t}\n\n\tfocus() {\n\t\tif (this.buttonInput) this.input?.focus();\n\t\telse super.focus();\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.addEventListener('dropdown.open', async () => {\n\t\t\tthis.focus();\n\t\t\t\n\t\t\tif (this.adapter && (this._firstOpen || this.options.alwaysRefresh)) {\n\t\t\t\tawait this.tree.loadData();\n\t\t\t}\n\n\t\t\tthis._firstOpen = false;\n\t\t});\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\n\t\tif (!this.hasUpdated) {\n\t\t\tif (this.value) this.selection.setItems(this.value);\n\t\t\tthis.selectedItems = this.selection.items;\n\t\t}\n\t}\n\n\tsetSourceData(sourceData: TreeSource, options: Partial<Options> = null) {\n\t\tif (options) this.updateOptions(options);\n\t\tthis.model = new TreeModel(sourceData, this.options);\n\t\tif (this._tree) this._tree.model = this.model;\n\t}\n\n\tupdateOptions(options: Partial<Options>) {\n\t\tObject.assign(this.options, options ?? {});\n\t\tthis.requestUpdate();\n\t}\n\n\tadjustWidth() {\n\t\tif (this.tree?.list && this.dropdown) {\n\t\t\tthis.originalWidth = this.originalWidth || this.dropdown.offsetWidth;\n\t\t\tdom.setSize(this.dropdown, {w: Math.min(this.originalWidth, this.maxWidth)});\n\t\t\t\n\t\t\tconst width = this.tree.list.calculateViewportMaxItemWidth();\n\t\t\tif (width > this.dropdown.offsetWidth) {\n\t\t\t\tdom.setSize(this.dropdown, {w: Math.min(width, this.maxWidth)});\n\t\t\t\tthis.layout();\n\t\t\t}\n\t\t}\n\t}\n\n\tasync clearSelection(dispatchEvent = false) {\n\t\tthis.selection.clear();\n\t\tawait this.clearFilter();\n\t\tthis.requestUpdate();\n\t\tif (dispatchEvent) this.dispatchEvent(new TreeEvent('change', {component: this.tree}));\n\t\tthis.tree?.renderItems(true);\n\t}\n\n\t_onMouseOver = () => {\n\t\tif (this.contentDiv && this.contentDiv.scrollWidth > this.contentDiv.clientWidth) {\n\t\t\tif (!this.tooltip.parentElement) {\n\t\t\t\tdocument.body.appendChild(this.tooltip);\n\t\t\t\tthis.tooltip.style.maxWidth = \"200px\";\n\t\t\t}\n\t\t\tthis.tooltip.content = this.getButtonContentHtml();\n\t\t\tthis.tooltip.attachTo(this.button, 'bottom');\n\t\t}\n\t}\n\n\t_onMouseOut = () => {\n\t\tthis.tooltip.deatach();\n\t}\n\n\tgetSelectionItems() : [NodeModel, [number, boolean][], boolean][] {\n\t\tconst model = this.tree?.model ?? this.model;\n\t\treturn Array.from(this.selectedItems).map(([key, item]) => {\n\t\t\tconst red = item.levels.has(0) && item.levels.get(0) == false;\n\t\t\tconst levels = [...item.levels.entries()].filter(item2 => item2[0] > 0);\n\t\t\tconst node = model?.nodeMap.has(key) ? model.nodeMap.get(key) : new NodeModel(this.tree.model, {\n\t\t\t\tk: key, \n\t\t\t\tv: item?.value ?? key\n\t\t\t});\n\t\t\tif (levels.length < item.levels.size && levels.length > 0) {\n\t\t\t\tlevels.unshift([0, item.levels.get(0)]);\n\t\t\t}\n\t\t\treturn [node, levels, red] as [NodeModel, [number, boolean][], boolean];\n\t\t});\n\t}\n\n\tgetButtonContentHtml() {\n\t\tconst items = this.getSelectionItems();\n\t\tconst caption = this.caption ? html`<span id=\"caption\">${this.caption}</span>` : null;\n\t\tconst placeholder = this.placeholder ? html`<span id=\"placeholder\">${this.placeholder}</span>` : null;\n\t\treturn items.length > 0 ? html`${caption ? html`${caption}:&nbsp;` : ``}${join(map(items, ([node, levels, red]) => html`\n\t\t\t${node && node.icon ? html`<og-icon .icon=\"${node.icon}\"></og-icon>&nbsp;` : null}\n\t\t\t${red \n\t\t\t\t? html`<span style=\"color:#ff0000\">${node.value}</span>` \n\t\t\t\t: html`<span>${node.value}</span>`\n\t\t\t}\n\t\t\t${levels.length > 0 \n\t\t\t\t? html`(${join(map(levels, level => level[0]), html`,&nbsp;`)})` \n\t\t\t\t: ``\n\t\t\t}\n\t\t`), html`,&nbsp;`)}` : (caption \n\t\t\t? html`${caption}${placeholder ? html`: ${placeholder}` : ``}` \n\t\t\t: (placeholder ? html`${placeholder}` : html`&nbsp;`)\n\t\t);\n\t}\n\n\tgetSelectionText() {\n\t\treturn this.getSelectionItems().map(([node, levels]) => node.value + (levels.length > 0 \n\t\t\t? ` (${levels.map(level => level[0]).join(',')})`\n\t\t\t: ''\n\t\t)).join(',');\n\t}\n\n\t_debounceFilter = debounce((term: string) => {\n\t\tthis.tree.filter(term);\n\t\tthis.dispatchEvent(new TreeEvent('tree.filter'));\n\t}, 300);\n\n\t_onInput = async (e: InputEvent) => {\n\t\tif (!this.isOpen) await this.open();\n\t\tconst value = (e.target as Input).value;\n\t\tthis._debounceFilter(value);\n\t\tthis.searchTerm = value;\n\t}\n\n\t_onInputKeyDown = (e: KeyboardEvent) => {\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.tree.list.moveDown();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.tree.list.moveUp();\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\te.preventDefault();\n\t\t\t\tif (this.preventInputEnter) return;\n\t\t\t\tif (this.tree.list.selectedIndex > -1) {\n\t\t\t\t\tthis.tree.list.select(this.tree.list.selectedIndex, ListSelectTrigger.Enter);\n\t\t\t\t\tsetTimeout(() => this.input.focus(), 100);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t_onInputBlur = () => this.input.value = this.getSelectionText();\n\n\trender = () => html`\n\t\t${this.buttonInput ? html`\n\t\t\t<og-input\n\t\t\t\t@input=\"${this._onInput}\"\n\t\t\t\t@keydown=\"${this._onInputKeyDown}\"\n\t\t\t\t@blur=\"${this._onInputBlur}\"\n\t\t\t\t.value=\"${this.getSelectionText()}\">\n\t\t\t</og-input>\n\t\t` : ''}\n\n\t\t<og-button\n\t\t\t@mousedown=\"${this._onMousedown}\"\n\t\t\t@mouseenter=\"${this._onMouseOver}\"\n\t\t\t@mouseleave=\"${this._onMouseOut}\"\n\t\t\tcolor=\"${this.color}\"\n\t\t\tid=\"main\"\n\t\t\tstyle=\"flex: 1\" \n\t\t\tcaret>\n\t\t\t${this.buttonInput ? '' : html`\n\t\t\t\t<div id=\"content\" slot=\"content\">\n\t\t\t\t\t${this.getButtonContentHtml()}\n\t\t\t\t</div>\n\t\t\t`}\n\t\t</og-button>\n\n\t\t${this.hasCrossButton ? html`\n\t\t\t<og-button\n\t\t\t\tid=\"cross\"\n\t\t\t\t@mousedown=\"${() => this.clearSelection(true)}\"\n\t\t\t\ticon=\"xmark\"\n\t\t\t\tcolor=\"red\">\n\t\t\t</og-button>\n\t\t` : ``}\n\n\t\t${this.renderDropdown()}\n\t`;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/ui/tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/ui/tree.ts"],"names":[],"mappings":"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"}
package/dist/ui/tree.js CHANGED
@@ -185,6 +185,7 @@ let Tree = class Tree extends LitElement {
185
185
  // }
186
186
  this.model = this.model ?? new TreeModel([], null);
187
187
  this.filtering = new FilterModel(this.model);
188
+ this.selection.model = this.model;
188
189
  if (props.has('options')) {
189
190
  this.options = initOptions(this.options);
190
191
  this.model.options = this.options;
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/ui/tree.ts"],"names":[],"mappings":"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","sourcesContent":["import { \n\tdom, List, log, ListSelectTrigger, ListSelectEvent, Expander, \n\tLevelExpandEvent, ListPointerEvent, Icon \n} from '@omegagrid/core';\nimport { Options, initOptions } from '../options';\nimport { TreeModel, TreeSource } from '../model/treeModel';\nimport { LitElement, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { style, itemStyle } from \"./tree.style\";\nimport Levels, { LevelSelectEvent } from './levels';\nimport { createItemRenderer } from './tree.renderer';\nimport { TreeSelectionModel, SerializedValue } from '../model/selectionModel';\nimport constants from '../constants';\nimport { NodeModel } from '../model/nodeModel';\nimport { TreeAdapter } from '../model/treeAdapter';\nimport { FilterModel } from '../model/filterModel';\nimport Search from './search';\nimport { styleMap } from 'lit-html/directives/style-map.js';\nimport { NodePlaceholder, SelectMode, TreeAdapterParams } from '../types';\nimport { join } from 'lit/directives/join.js';\n\nexport class TreeEvent extends Event {\n\n\tcomponent: Tree;\n\tnode: NodeModel;\n\n\tconstructor(type: string, args?: Partial<TreeEvent>) {\n\t\tsuper(type, {bubbles: false, cancelable: true, composed: false});\n\t\tObject.assign(this, args);\n\t}\n}\n\nexport class TreePointerEvent extends PointerEvent {\n\n\ttree: Tree;\n\tnode: NodeModel;\n\n\tconstructor(type: string, e: PointerEvent, args?: Partial<TreePointerEvent>) {\n\t\tsuper(`tree.${type}`, e);\n\t\tObject.assign(this, args);\n\t}\n}\n\nexport class TreeDropEvent extends DragEvent {\n\n\ttree: Tree;\n\tnode: NodeModel;\n\n\tconstructor(type: string, e: DragEvent, args?: Partial<TreeDropEvent>) {\n\t\tsuper(`tree.${type}`, e);\n\t\tObject.assign(this, args);\n\t}\n}\n\n@customElement('og-tree')\nexport class Tree extends LitElement {\n\n\tstatic styles = [style];\n\n\t@property({type: Object})\n\tmodel: TreeModel;\n\n\t@property({type: Object})\n\tadapter: TreeAdapter;\n\n\t@property({type: Object})\n\toptions: Options = initOptions();\n\n\t@property({type: Object})\n\tselection: TreeSelectionModel = new TreeSelectionModel(this.options);\n\n\t@property({type: Object})\n\tlogger: log.Logger = new log.Logger('Ωtree');\n\n\t@property({type: Number})\n\tmaxHeight: number = null;\n\n\t@property({type: Number})\n\titemHeight: number = constants.LIST_ITEM_HEIGHT;\n\t\n\t@property({type: Array})\n\tvalue: SerializedValue[];\n\n\t@property({type: Boolean})\n\tdisableAutoload = false;\n\t\n\t@query('og-list')\n\tlist: List;\n\n\t@query('og-tree-search')\n\tsearchBar: Search;\n\n\t@query('#globalLevels')\n\tglobalTreeLevels: Levels;\n\n\t@state()\n\tloading = false;\n\n\t@state()\n\tnoMatches = false;\n\n\tfiltering: FilterModel;\n\tawaitFilter = false;\n\tcurrentFilter = '';\n\tloadingNodes: Set<string> = new Set();\n\n\tget size () {\n\t\treturn this.model?.visibleNodes.length ?? 0;\n\t}\n\n\tget hasGlobalLevels() {\n\t\treturn (this.options.selectMode == SelectMode.Multiple || this.options.selectMode == SelectMode.MultipleLevels)\n\t\t\t&& this.options.globalLevels && this.model.maxLevel > 0;\n\t}\n\n\t_lastDragItem: HTMLElement;\n\t_onDragover = (e: DragEvent) => {\n\t\tif (!this.options.fileDrop) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tif (e.dataTransfer.types[0] == 'Files') {\n\t\t\te.dataTransfer.dropEffect = 'move';\n\t\t\tconst item = e.composedPath().find((elm: HTMLElement) => elm.classList && elm.classList.contains('item')) as HTMLElement;\n\t\t\tthis._onDragLeave();\n\t\t\tif (item) item.classList.add('drag');\n\t\t\tthis._lastDragItem = item;\n\t\t}\n\t}\n\n\t_onDrop = (e: DragEvent) => {\n\t\te.preventDefault();\n\t\tthis._onDragLeave();\n\t\tconst item = e.composedPath().find((elm: HTMLElement) => elm.classList && elm.classList.contains('item')) as HTMLElement;\n\t\tconst node = this.model.nodes[parseInt(item.dataset.node)];\n\t\tthis.dispatchEvent(new TreeDropEvent('drop', e, {tree: this, node: node}));\n\t}\n\n\t_onDragLeave = () => {\n\t\tif (this._lastDragItem) this._lastDragItem.classList.remove('drag');\n\t\tthis._lastDragItem = null;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.addEventListener('dragover', this._onDragover);\n\t\tthis.addEventListener('dragleave', this._onDragLeave);\n\t\tthis.addEventListener('drop', this._onDrop);\n\t}\n\n\tdestroy() {\n\t\tthis.logger.info('destroy');\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.logger.info('init');\n\t\tthis.tabIndex = 0;\n\t}\n\n\tsetSourceData(sourceData: TreeSource, options: Partial<Options> = null) {\n\t\tObject.assign(this.options, options ?? {});\n\t\tthis.model = new TreeModel(sourceData, this.options);\n\n\t\tif (sourceData?.length > 0 && sourceData[0].s !== undefined) {\n\t\t\tthis.selection.setItems(sourceData.filter(i => i.s).map(i => [i.k, 0, 1]));\n\t\t}\n\n\t\tthis.dispatchEvent(new TreeEvent('load', {component: this}));\n\t}\n\n\tsetValue(values: SerializedValue[]) {\n\t\tthis.selection.populate(values);\n\t}\n\n\tasync loadData(params?: TreeAdapterParams) {\n\t\tthis.loading = true;\n\t\tif (this.list) this.list.size = 0;\n\t\t\n\t\tthis.model = null;\n\t\tparams = params ?? {};\n\t\tconst [tree, options] = await Promise.all([this.adapter.getTree(params), this.adapter.getOptions()]);\n\t\tthis.setSourceData(tree, options);\n\t\tif (options?.pageSize > 0) {\n\t\t\tthis.updateNodeLoadState(this.model.root, this.model.root.children.length);\n\t\t\tthis.model.indexVisibleNodes();\n\t\t}\n\t\tthis.loading = false;\n\t}\n\n\tasync loadMore(parent: NodeModel) {\n\t\tconst offset = parent.children.length;\n\t\tconst sourceData = await this.adapter.getTree({parent: parent, parentKey: parent.key, offset: offset});\n\t\tconst model = new TreeModel(sourceData, this.options);\n\t\tparent.insertChildren(model.root.children, offset);\n\t\tthis.updateNodeLoadState(parent, model.root.children.length);\n\t\tthis.model.indexNodesByTree(true);\n\t\tthis.list.size = this.size;\n\t\tthis.list.requestUpdate();\n\t}\n\n\tkeyActions = {\n\t\t'ArrowRight': () => {\n\t\t\tconst node = this.model.visibleNodes[this.list.selectedIndex] as NodeModel;\n\t\t\tif (node.collapsed) {\n\t\t\t\tthis.toggleNodeCollapse(node);\n\t\t\t\tthis.model.indexVisibleNodes();\n\t\t\t\tthis.list.size = this.size;\n\t\t\t}\n\t\t},\n\t\t'ArrowLeft': () => {\n\t\t\tconst node = this.model.visibleNodes[this.list.selectedIndex] as NodeModel;\n\t\t\tif (!node.collapsed) {\n\t\t\t\tthis.toggleNodeCollapse(node);\n\t\t\t\tthis.model.indexVisibleNodes();\n\t\t\t\tthis.list.size = this.size;\n\t\t\t}\n\t\t}\n\t}\n\t\n\twillUpdate(props: Map<PropertyKey, unknown>) {\n\t\tif (props.has('adapter') && this.adapter) {\n\t\t\tthis.model = null;\n\t\t\tthis.adapter.attach(this);\n\t\t\tif (!this.disableAutoload) this.loadData();\n\t\t}\n\n\t\t// if (props.has('value')) {\n\t\t// \tthis.setValue(this.value);\n\t\t// }\n\n\t\tthis.model = this.model ?? new TreeModel([], null);\n\t\tthis.filtering = new FilterModel(this.model);\n\n\t\tif (props.has('options')) {\n\t\t\tthis.options = initOptions(this.options);\n\t\t\tthis.model.options = this.options;\n\t\t\tthis.selection.options = this.options;\n\t\t}\n\t}\n\n\tupdated(changedProps: Map<PropertyKey, unknown>): void {\n\t\tif (changedProps.has('model') && this.list) {\n\t\t\tthis.list.size = this.size;\n\t\t\tthis.noMatches = this.noMatches && this.size == 0;\n\t\t\tthis.list.requestUpdate();\n\t\t}\n\t}\n\n\tasync firstUpdated() {\n\t\tif (this.value) {\n\t\t\tthis.selection.setItems(this.value ?? []);\n\t\t}\n\n\t\tthis.list.itemRenderer = createItemRenderer(this);\n\n\t\tdom.on(this.list, 'toggle', '.item', async (e, elm) => {\n\t\t\tconst node = this.model.nodes[parseInt(elm.dataset.node)];\n\t\t\tthis.toggleNodeCollapse(node);\n\t\t\tthis.model.indexVisibleNodes();\n\t\t\tthis.list.size = this.size;\n\t\t});\n\n\t\tdom.on(this.list, 'levelselect', '.item', (e: LevelExpandEvent, elm) => {\n\t\t\tthis.toggleNode(this.model.nodes[parseInt(elm.dataset.node)], e.level, true);\n\t\t});\n\t\t\n\t\tdom.on(this.list, 'contextmenu', '.item', (e, elm) => {\n\t\t\te.preventDefault();\n\t\t\tconst node = this.model.nodes[parseInt(elm.dataset.node)];\n\t\t\tthis.selection.select(node, 0, false);\n\t\t\tthis.list.renderItems(true);\n\t\t});\n\n\t\tthis.list.addEventListener('select', (e: ListSelectEvent) => {\n\t\t\te.stopPropagation();\n\t\t\tif (e.trigger != ListSelectTrigger.Arrow && !(e.elm instanceof Expander)) {\n\t\t\t\tconst item = this.model.visibleNodes[e.index];\n\t\t\t\tif (item instanceof NodeModel) {\n\t\t\t\t\tconst node = item as NodeModel;\n\t\t\t\t\tif (node.checkbox ?? this.options.selectMode != SelectMode.None) {\n\t\t\t\t\t\tthis.toggleNode(node, 0, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.toggleNodeCollapse(node);\n\t\t\t\t\t\tthis.model.indexVisibleNodes();\n\t\t\t\t\t\tthis.list.size = this.size;\n\t\t\t\t\t}\n\t\t\t\t\tthis.dispatchEvent(new TreeEvent('select', {component: this, node}));\n\t\t\t\t} else if (item) {\n\t\t\t\t\tconst placeholder = item as NodePlaceholder;\n\t\t\t\t\tif (placeholder.loading) return;\n\t\t\t\t\tplaceholder.loading = true;\n\t\t\t\t\tplaceholder.element.querySelector<Icon>('og-icon').icon = 'hourglass-half';\n\t\t\t\t\tthis.loadMore(placeholder.parent);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.list.addEventListener('keydown', (e: KeyboardEvent) => {\n\t\t\tconst action = this.keyActions[e.key as keyof typeof this.keyActions];\n\t\t\tif (action) {\n\t\t\t\taction();\n\t\t\t} else if (!isNaN(parseInt(e.key))) {\n\t\t\t\tconst level = parseInt(e.key);\n\t\t\t\tconst node = this.model.visibleNodes[this.list.selectedIndex] as NodeModel;\n\t\t\t\tif (node.subLevels >= level) {\n\t\t\t\t\tthis.toggleNode(node, level, true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t_onGlobalLevelSelect = async (e: LevelSelectEvent) => {\n\t\tthis.toggleNode(this.model.root, e.level, true);\n\t\tthis.globalTreeLevels.requestUpdate();\n\t\tthis.requestUpdate();\n\t\tawait this.list.updateComplete;\n\t\tthis.list.renderItems(true);\n\t}\n\n\t_onSearch = () => {\n\t\tthis.list.size = this.size;\n\t\tthis.list.select(0);\n\t\tthis.renderItems(true);\n\t\tthis.noMatches = this.size == 0;\n\t}\n\n\ttoggleNode(node: NodeModel, level: number, dispatchEvent = false) {\n\t\tthis.selection.toggle(node, level);\n\t\tthis.list.renderItems(true);\n\t\tsetTimeout(() => this.list.focus()); // TODO: list looses focus for unknown reason\n\t\tif (dispatchEvent) {\n\t\t\tthis.dispatchEvent(new TreeEvent('change', {component: this, node}));\n\t\t}\n\t}\n\n\tupdateNodeLoadState(node: NodeModel, newNodeCount: number) {\n\t\tif (this.options.pageSize > 0) {\n\t\t\tif (newNodeCount < this.options.pageSize) node.count = node.children.length;\n\t\t\telse node.count = node.children.length + 1;\n\t\t}\n\t}\n\n\tasync toggleNodeCollapse(node: NodeModel, dispatchEvent = true) {\n\t\tnode.toggleCollapse();\n\t\tif (!node.isLoaded && !node.isPartialyLoaded && this.adapter && !this.loadingNodes.has(node.key)) {\n\t\t\tthis.loadingNodes.add(node.key);\n\t\t\tthis.list.requestUpdate();\n\t\t\tconst sourceData = await this.adapter.getTree({parent: node, parentKey: node.key, offset: 0});\n\t\t\tconst model = new TreeModel(sourceData, this.options);\n\t\t\tnode.insertChildren(model.root.children, 0);\n\t\t\tthis.updateNodeLoadState(node, node.children.length);\n\t\t\tthis.model.indexNodesByTree(true);\n\t\t\tthis.list.size = this.size;\n\t\t\tthis.list.requestUpdate();\n\t\t\tthis.loadingNodes.delete(node.key);\n\t\t}\n\t\tif (dispatchEvent) this.dispatchEvent(new TreeEvent('tree.collapse', {component: this, node}));\n\t}\n\n\ttoggleTreeCollapse(node?: NodeModel, dispatchEvent = true) {\n\t\tif (this.model.nodes.length == 0) return;\n\t\tif (!node) {\n\t\t\tnode = this.model.root;\n\t\t\tnode.collapsed = this.model.nodes[0].collapsed;\n\t\t}\n\t\tnode.toggleCollapse(true);\n\t\tthis.model.indexVisibleNodes();\n\t\tthis.list.size = this.size;\n\t\tif (dispatchEvent) this.dispatchEvent(new TreeEvent('tree.collapse', {component: this, node}));\n\t}\n\n\t_onListRender = () => {\n\t\tif (this.awaitFilter) {\n\t\t\tthis.filter(this.currentFilter);\n\t\t\tthis.awaitFilter = null;\n\t\t}\n\t}\n\n\t_onListMenu = (e: ListPointerEvent) => {\n\t\tthis.dispatchEvent(new TreePointerEvent('menu', e, {\n\t\t\ttree: this,\n\t\t\tnode: this.model.visibleNodes[e.index] as NodeModel\n\t\t}));\n\t}\n\n\tget itemStyle() {\n\t\tconst customStyle = this.options?.customStyle;\n\t\treturn [itemStyle, ...(customStyle ? (Array.isArray(customStyle) ? customStyle : [customStyle]) : [])];\n\t}\n\t\n\trender() {\n\t\tthis.logger.info(`render ${this.model?.visibleNodes.length ?? 0}`);\n\n\t\tconst list = html`\n\t\t\t<div class=\"main\" style=\"${styleMap({overflow: 'hidden', maxHeight: this.maxHeight ? dom.numToPixels(this.maxHeight) : null})}\">\n\t\t\t\t<og-list\n\t\t\t\t\tsize=\"${this.size}\"\n\t\t\t\t\t.customStyle=${this.itemStyle}\n\t\t\t\t\t?nativeHeight=\"${!this.maxHeight}\"\n\t\t\t\t\tmaxHeight=\"${this.maxHeight || null}\"\n\t\t\t\t\t@render=\"${this._onListRender}\"\n\t\t\t\t\t@list.menu=\"${this._onListMenu}\">\n\t\t\t\t</og-list>\n\t\t\t</div>\n\t\t`;\n\n\t\tconst loader = this.loading ? html`\n\t\t\t<div style=\"padding: 10px; text-align: center\">\n\t\t\t\t<og-loader></og-loader>\n\t\t\t</div>\n\t\t` : null;\n\n\t\tconst search = this.options.search ? html`\n\t\t\t<div class=\"toolbar\">\n\t\t\t\t<og-tree-search\n\t\t\t\t\t.tree=\"${this}\"\n\t\t\t\t\t@search=\"${this._onSearch}\">\n\t\t\t\t</og-tree-search>\n\t\t\t</div>\n\t\t` : null;\n\n\t\tconst alert = this.noMatches ? html`\n\t\t\t<og-alert text=\"No matches\" type=\"warning\"></og-alert>\n\t\t` : null;\n\n\t\tconst levels = this.hasGlobalLevels && !this.noMatches ? html`\n\t\t\t<div class=\"toolbar\">\n\t\t\t\t<og-tree-levels\n\t\t\t\t\tid=\"globalLevels\"\n\t\t\t\t\tcount=\"${(this.options.maxLevel ?? this.model.maxLevel) + 1}\"\n\t\t\t\t\t.selection=\"${this.selection.getLevelSelection(this.model.root)}\"\n\t\t\t\t\t@levelselect=\"${this._onGlobalLevelSelect}\">\n\t\t\t\t</og-tree-levels>\n\t\t\t</div>\n\t\t` : null;\n\n\t\treturn join([search, alert, levels, loader, list], () => ' ');\n\t}\n\n\thighlightFirstSelectedNode() {\n\t\tif (!this.list) return; // TODO - fix this\n\t\tif (!this.selection?.count) return;\n\t\tconst key = this.selection.items.keys().next().value;\n\t\tconst node = this.model.nodeMap.get(key);\n\t\tif (!node || node.visibleIndex == null) {\n\t\t\tthis.list.selectedIndex = -1;\n\t\t\treturn;\n\t\t}\n\n\t\t\n\t\tthis.list.selectedIndex = node.visibleIndex;\n\t\tthis.list.scrollToIndex(node.index);\n\t}\n\n\trenderItems(all = false) {\n\t\tif (this.list) {\n\t\t\tthis.list.size = this.size;\n\t\t\tthis.list.renderItems(all);\n\t\t}\n\t}\n\n\tclearSelection() {\n\t\tthis.selection.clear();\n\t\tthis.requestUpdate();\n\t}\n\n\tasync filter(term?: string) {\n\t\tterm = (term ?? '').trim();\n\t\tif (term === this.currentFilter) return;\n\n\t\tthis.currentFilter = term;\n\t\t\n\t\tif (this.loading) {\n\t\t\tthis.awaitFilter = true;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.customSearch && this.adapter) {\n\t\t\tawait this.loadData({filter: term});\n\t\t\treturn;\n\t\t}\n\n\t\tif (term == null) {\n\t\t\tthis.filtering?.clear();\n\t\t\tthis.noMatches = false;\n\t\t} else {\n\t\t\tthis.filtering?.filter(term);\n\t\t\tthis.noMatches = this.size == 0;\n\t\t}\n\n\t\tthis.list.size = this.size;\n\t\tthis.list.select(0);\n\t\tthis.list.requestUpdate();\n\t}\n\n\tasync clearFilter() {\n\t\tif (this.searchBar?.searchInput) this.searchBar.searchInput.value = '';\n\t\tawait this.filter();\n\t}\n\n\n}"]}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/ui/tree.ts"],"names":[],"mappings":"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","sourcesContent":["import { \n\tdom, List, log, ListSelectTrigger, ListSelectEvent, Expander, \n\tLevelExpandEvent, ListPointerEvent, Icon \n} from '@omegagrid/core';\nimport { Options, initOptions } from '../options';\nimport { TreeModel, TreeSource } from '../model/treeModel';\nimport { LitElement, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { style, itemStyle } from \"./tree.style\";\nimport Levels, { LevelSelectEvent } from './levels';\nimport { createItemRenderer } from './tree.renderer';\nimport { TreeSelectionModel, SerializedValue } from '../model/selectionModel';\nimport constants from '../constants';\nimport { NodeModel } from '../model/nodeModel';\nimport { TreeAdapter } from '../model/treeAdapter';\nimport { FilterModel } from '../model/filterModel';\nimport Search from './search';\nimport { styleMap } from 'lit-html/directives/style-map.js';\nimport { NodePlaceholder, SelectMode, TreeAdapterParams } from '../types';\nimport { join } from 'lit/directives/join.js';\n\nexport class TreeEvent extends Event {\n\n\tcomponent: Tree;\n\tnode: NodeModel;\n\n\tconstructor(type: string, args?: Partial<TreeEvent>) {\n\t\tsuper(type, {bubbles: false, cancelable: true, composed: false});\n\t\tObject.assign(this, args);\n\t}\n}\n\nexport class TreePointerEvent extends PointerEvent {\n\n\ttree: Tree;\n\tnode: NodeModel;\n\n\tconstructor(type: string, e: PointerEvent, args?: Partial<TreePointerEvent>) {\n\t\tsuper(`tree.${type}`, e);\n\t\tObject.assign(this, args);\n\t}\n}\n\nexport class TreeDropEvent extends DragEvent {\n\n\ttree: Tree;\n\tnode: NodeModel;\n\n\tconstructor(type: string, e: DragEvent, args?: Partial<TreeDropEvent>) {\n\t\tsuper(`tree.${type}`, e);\n\t\tObject.assign(this, args);\n\t}\n}\n\n@customElement('og-tree')\nexport class Tree extends LitElement {\n\n\tstatic styles = [style];\n\n\t@property({type: Object})\n\tmodel: TreeModel;\n\n\t@property({type: Object})\n\tadapter: TreeAdapter;\n\n\t@property({type: Object})\n\toptions: Options = initOptions();\n\n\t@property({type: Object})\n\tselection: TreeSelectionModel = new TreeSelectionModel(this.options);\n\n\t@property({type: Object})\n\tlogger: log.Logger = new log.Logger('Ωtree');\n\n\t@property({type: Number})\n\tmaxHeight: number = null;\n\n\t@property({type: Number})\n\titemHeight: number = constants.LIST_ITEM_HEIGHT;\n\t\n\t@property({type: Array})\n\tvalue: SerializedValue[];\n\n\t@property({type: Boolean})\n\tdisableAutoload = false;\n\t\n\t@query('og-list')\n\tlist: List;\n\n\t@query('og-tree-search')\n\tsearchBar: Search;\n\n\t@query('#globalLevels')\n\tglobalTreeLevels: Levels;\n\n\t@state()\n\tloading = false;\n\n\t@state()\n\tnoMatches = false;\n\n\tfiltering: FilterModel;\n\tawaitFilter = false;\n\tcurrentFilter = '';\n\tloadingNodes: Set<string> = new Set();\n\n\tget size () {\n\t\treturn this.model?.visibleNodes.length ?? 0;\n\t}\n\n\tget hasGlobalLevels() {\n\t\treturn (this.options.selectMode == SelectMode.Multiple || this.options.selectMode == SelectMode.MultipleLevels)\n\t\t\t&& this.options.globalLevels && this.model.maxLevel > 0;\n\t}\n\n\t_lastDragItem: HTMLElement;\n\t_onDragover = (e: DragEvent) => {\n\t\tif (!this.options.fileDrop) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tif (e.dataTransfer.types[0] == 'Files') {\n\t\t\te.dataTransfer.dropEffect = 'move';\n\t\t\tconst item = e.composedPath().find((elm: HTMLElement) => elm.classList && elm.classList.contains('item')) as HTMLElement;\n\t\t\tthis._onDragLeave();\n\t\t\tif (item) item.classList.add('drag');\n\t\t\tthis._lastDragItem = item;\n\t\t}\n\t}\n\n\t_onDrop = (e: DragEvent) => {\n\t\te.preventDefault();\n\t\tthis._onDragLeave();\n\t\tconst item = e.composedPath().find((elm: HTMLElement) => elm.classList && elm.classList.contains('item')) as HTMLElement;\n\t\tconst node = this.model.nodes[parseInt(item.dataset.node)];\n\t\tthis.dispatchEvent(new TreeDropEvent('drop', e, {tree: this, node: node}));\n\t}\n\n\t_onDragLeave = () => {\n\t\tif (this._lastDragItem) this._lastDragItem.classList.remove('drag');\n\t\tthis._lastDragItem = null;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.addEventListener('dragover', this._onDragover);\n\t\tthis.addEventListener('dragleave', this._onDragLeave);\n\t\tthis.addEventListener('drop', this._onDrop);\n\t}\n\n\tdestroy() {\n\t\tthis.logger.info('destroy');\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.logger.info('init');\n\t\tthis.tabIndex = 0;\n\t}\n\n\tsetSourceData(sourceData: TreeSource, options: Partial<Options> = null) {\n\t\tObject.assign(this.options, options ?? {});\n\t\tthis.model = new TreeModel(sourceData, this.options);\n\n\t\tif (sourceData?.length > 0 && sourceData[0].s !== undefined) {\n\t\t\tthis.selection.setItems(sourceData.filter(i => i.s).map(i => [i.k, 0, 1]));\n\t\t}\n\n\t\tthis.dispatchEvent(new TreeEvent('load', {component: this}));\n\t}\n\n\tsetValue(values: SerializedValue[]) {\n\t\tthis.selection.populate(values);\n\t}\n\n\tasync loadData(params?: TreeAdapterParams) {\n\t\tthis.loading = true;\n\t\tif (this.list) this.list.size = 0;\n\t\t\n\t\tthis.model = null;\n\t\tparams = params ?? {};\n\t\tconst [tree, options] = await Promise.all([this.adapter.getTree(params), this.adapter.getOptions()]);\n\t\tthis.setSourceData(tree, options);\n\t\tif (options?.pageSize > 0) {\n\t\t\tthis.updateNodeLoadState(this.model.root, this.model.root.children.length);\n\t\t\tthis.model.indexVisibleNodes();\n\t\t}\n\t\tthis.loading = false;\n\t}\n\n\tasync loadMore(parent: NodeModel) {\n\t\tconst offset = parent.children.length;\n\t\tconst sourceData = await this.adapter.getTree({parent: parent, parentKey: parent.key, offset: offset});\n\t\tconst model = new TreeModel(sourceData, this.options);\n\t\tparent.insertChildren(model.root.children, offset);\n\t\tthis.updateNodeLoadState(parent, model.root.children.length);\n\t\tthis.model.indexNodesByTree(true);\n\t\tthis.list.size = this.size;\n\t\tthis.list.requestUpdate();\n\t}\n\n\tkeyActions = {\n\t\t'ArrowRight': () => {\n\t\t\tconst node = this.model.visibleNodes[this.list.selectedIndex] as NodeModel;\n\t\t\tif (node.collapsed) {\n\t\t\t\tthis.toggleNodeCollapse(node);\n\t\t\t\tthis.model.indexVisibleNodes();\n\t\t\t\tthis.list.size = this.size;\n\t\t\t}\n\t\t},\n\t\t'ArrowLeft': () => {\n\t\t\tconst node = this.model.visibleNodes[this.list.selectedIndex] as NodeModel;\n\t\t\tif (!node.collapsed) {\n\t\t\t\tthis.toggleNodeCollapse(node);\n\t\t\t\tthis.model.indexVisibleNodes();\n\t\t\t\tthis.list.size = this.size;\n\t\t\t}\n\t\t}\n\t}\n\t\n\twillUpdate(props: Map<PropertyKey, unknown>) {\n\t\tif (props.has('adapter') && this.adapter) {\n\t\t\tthis.model = null;\n\t\t\tthis.adapter.attach(this);\n\t\t\tif (!this.disableAutoload) this.loadData();\n\t\t}\n\n\t\t// if (props.has('value')) {\n\t\t// \tthis.setValue(this.value);\n\t\t// }\n\n\t\tthis.model = this.model ?? new TreeModel([], null);\n\t\tthis.filtering = new FilterModel(this.model);\n\t\tthis.selection.model = this.model;\n\n\t\tif (props.has('options')) {\n\t\t\tthis.options = initOptions(this.options);\n\t\t\tthis.model.options = this.options;\n\t\t\tthis.selection.options = this.options;\n\t\t}\n\t}\n\n\tupdated(changedProps: Map<PropertyKey, unknown>): void {\n\t\tif (changedProps.has('model') && this.list) {\n\t\t\tthis.list.size = this.size;\n\t\t\tthis.noMatches = this.noMatches && this.size == 0;\n\t\t\tthis.list.requestUpdate();\n\t\t}\n\t}\n\n\tasync firstUpdated() {\n\t\tif (this.value) {\n\t\t\tthis.selection.setItems(this.value ?? []);\n\t\t}\n\n\t\tthis.list.itemRenderer = createItemRenderer(this);\n\n\t\tdom.on(this.list, 'toggle', '.item', async (e, elm) => {\n\t\t\tconst node = this.model.nodes[parseInt(elm.dataset.node)];\n\t\t\tthis.toggleNodeCollapse(node);\n\t\t\tthis.model.indexVisibleNodes();\n\t\t\tthis.list.size = this.size;\n\t\t});\n\n\t\tdom.on(this.list, 'levelselect', '.item', (e: LevelExpandEvent, elm) => {\n\t\t\tthis.toggleNode(this.model.nodes[parseInt(elm.dataset.node)], e.level, true);\n\t\t});\n\t\t\n\t\tdom.on(this.list, 'contextmenu', '.item', (e, elm) => {\n\t\t\te.preventDefault();\n\t\t\tconst node = this.model.nodes[parseInt(elm.dataset.node)];\n\t\t\tthis.selection.select(node, 0, false);\n\t\t\tthis.list.renderItems(true);\n\t\t});\n\n\t\tthis.list.addEventListener('select', (e: ListSelectEvent) => {\n\t\t\te.stopPropagation();\n\t\t\tif (e.trigger != ListSelectTrigger.Arrow && !(e.elm instanceof Expander)) {\n\t\t\t\tconst item = this.model.visibleNodes[e.index];\n\t\t\t\tif (item instanceof NodeModel) {\n\t\t\t\t\tconst node = item as NodeModel;\n\t\t\t\t\tif (node.checkbox ?? this.options.selectMode != SelectMode.None) {\n\t\t\t\t\t\tthis.toggleNode(node, 0, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.toggleNodeCollapse(node);\n\t\t\t\t\t\tthis.model.indexVisibleNodes();\n\t\t\t\t\t\tthis.list.size = this.size;\n\t\t\t\t\t}\n\t\t\t\t\tthis.dispatchEvent(new TreeEvent('select', {component: this, node}));\n\t\t\t\t} else if (item) {\n\t\t\t\t\tconst placeholder = item as NodePlaceholder;\n\t\t\t\t\tif (placeholder.loading) return;\n\t\t\t\t\tplaceholder.loading = true;\n\t\t\t\t\tplaceholder.element.querySelector<Icon>('og-icon').icon = 'hourglass-half';\n\t\t\t\t\tthis.loadMore(placeholder.parent);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.list.addEventListener('keydown', (e: KeyboardEvent) => {\n\t\t\tconst action = this.keyActions[e.key as keyof typeof this.keyActions];\n\t\t\tif (action) {\n\t\t\t\taction();\n\t\t\t} else if (!isNaN(parseInt(e.key))) {\n\t\t\t\tconst level = parseInt(e.key);\n\t\t\t\tconst node = this.model.visibleNodes[this.list.selectedIndex] as NodeModel;\n\t\t\t\tif (node.subLevels >= level) {\n\t\t\t\t\tthis.toggleNode(node, level, true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t_onGlobalLevelSelect = async (e: LevelSelectEvent) => {\n\t\tthis.toggleNode(this.model.root, e.level, true);\n\t\tthis.globalTreeLevels.requestUpdate();\n\t\tthis.requestUpdate();\n\t\tawait this.list.updateComplete;\n\t\tthis.list.renderItems(true);\n\t}\n\n\t_onSearch = () => {\n\t\tthis.list.size = this.size;\n\t\tthis.list.select(0);\n\t\tthis.renderItems(true);\n\t\tthis.noMatches = this.size == 0;\n\t}\n\n\ttoggleNode(node: NodeModel, level: number, dispatchEvent = false) {\n\t\tthis.selection.toggle(node, level);\n\t\tthis.list.renderItems(true);\n\t\tsetTimeout(() => this.list.focus()); // TODO: list looses focus for unknown reason\n\t\tif (dispatchEvent) {\n\t\t\tthis.dispatchEvent(new TreeEvent('change', {component: this, node}));\n\t\t}\n\t}\n\n\tupdateNodeLoadState(node: NodeModel, newNodeCount: number) {\n\t\tif (this.options.pageSize > 0) {\n\t\t\tif (newNodeCount < this.options.pageSize) node.count = node.children.length;\n\t\t\telse node.count = node.children.length + 1;\n\t\t}\n\t}\n\n\tasync toggleNodeCollapse(node: NodeModel, dispatchEvent = true) {\n\t\tnode.toggleCollapse();\n\t\tif (!node.isLoaded && !node.isPartialyLoaded && this.adapter && !this.loadingNodes.has(node.key)) {\n\t\t\tthis.loadingNodes.add(node.key);\n\t\t\tthis.list.requestUpdate();\n\t\t\tconst sourceData = await this.adapter.getTree({parent: node, parentKey: node.key, offset: 0});\n\t\t\tconst model = new TreeModel(sourceData, this.options);\n\t\t\tnode.insertChildren(model.root.children, 0);\n\t\t\tthis.updateNodeLoadState(node, node.children.length);\n\t\t\tthis.model.indexNodesByTree(true);\n\t\t\tthis.list.size = this.size;\n\t\t\tthis.list.requestUpdate();\n\t\t\tthis.loadingNodes.delete(node.key);\n\t\t}\n\t\tif (dispatchEvent) this.dispatchEvent(new TreeEvent('tree.collapse', {component: this, node}));\n\t}\n\n\ttoggleTreeCollapse(node?: NodeModel, dispatchEvent = true) {\n\t\tif (this.model.nodes.length == 0) return;\n\t\tif (!node) {\n\t\t\tnode = this.model.root;\n\t\t\tnode.collapsed = this.model.nodes[0].collapsed;\n\t\t}\n\t\tnode.toggleCollapse(true);\n\t\tthis.model.indexVisibleNodes();\n\t\tthis.list.size = this.size;\n\t\tif (dispatchEvent) this.dispatchEvent(new TreeEvent('tree.collapse', {component: this, node}));\n\t}\n\n\t_onListRender = () => {\n\t\tif (this.awaitFilter) {\n\t\t\tthis.filter(this.currentFilter);\n\t\t\tthis.awaitFilter = null;\n\t\t}\n\t}\n\n\t_onListMenu = (e: ListPointerEvent) => {\n\t\tthis.dispatchEvent(new TreePointerEvent('menu', e, {\n\t\t\ttree: this,\n\t\t\tnode: this.model.visibleNodes[e.index] as NodeModel\n\t\t}));\n\t}\n\n\tget itemStyle() {\n\t\tconst customStyle = this.options?.customStyle;\n\t\treturn [itemStyle, ...(customStyle ? (Array.isArray(customStyle) ? customStyle : [customStyle]) : [])];\n\t}\n\t\n\trender() {\n\t\tthis.logger.info(`render ${this.model?.visibleNodes.length ?? 0}`);\n\n\t\tconst list = html`\n\t\t\t<div class=\"main\" style=\"${styleMap({overflow: 'hidden', maxHeight: this.maxHeight ? dom.numToPixels(this.maxHeight) : null})}\">\n\t\t\t\t<og-list\n\t\t\t\t\tsize=\"${this.size}\"\n\t\t\t\t\t.customStyle=${this.itemStyle}\n\t\t\t\t\t?nativeHeight=\"${!this.maxHeight}\"\n\t\t\t\t\tmaxHeight=\"${this.maxHeight || null}\"\n\t\t\t\t\t@render=\"${this._onListRender}\"\n\t\t\t\t\t@list.menu=\"${this._onListMenu}\">\n\t\t\t\t</og-list>\n\t\t\t</div>\n\t\t`;\n\n\t\tconst loader = this.loading ? html`\n\t\t\t<div style=\"padding: 10px; text-align: center\">\n\t\t\t\t<og-loader></og-loader>\n\t\t\t</div>\n\t\t` : null;\n\n\t\tconst search = this.options.search ? html`\n\t\t\t<div class=\"toolbar\">\n\t\t\t\t<og-tree-search\n\t\t\t\t\t.tree=\"${this}\"\n\t\t\t\t\t@search=\"${this._onSearch}\">\n\t\t\t\t</og-tree-search>\n\t\t\t</div>\n\t\t` : null;\n\n\t\tconst alert = this.noMatches ? html`\n\t\t\t<og-alert text=\"No matches\" type=\"warning\"></og-alert>\n\t\t` : null;\n\n\t\tconst levels = this.hasGlobalLevels && !this.noMatches ? html`\n\t\t\t<div class=\"toolbar\">\n\t\t\t\t<og-tree-levels\n\t\t\t\t\tid=\"globalLevels\"\n\t\t\t\t\tcount=\"${(this.options.maxLevel ?? this.model.maxLevel) + 1}\"\n\t\t\t\t\t.selection=\"${this.selection.getLevelSelection(this.model.root)}\"\n\t\t\t\t\t@levelselect=\"${this._onGlobalLevelSelect}\">\n\t\t\t\t</og-tree-levels>\n\t\t\t</div>\n\t\t` : null;\n\n\t\treturn join([search, alert, levels, loader, list], () => ' ');\n\t}\n\n\thighlightFirstSelectedNode() {\n\t\tif (!this.list) return; // TODO - fix this\n\t\tif (!this.selection?.count) return;\n\t\tconst key = this.selection.items.keys().next().value;\n\t\tconst node = this.model.nodeMap.get(key);\n\t\tif (!node || node.visibleIndex == null) {\n\t\t\tthis.list.selectedIndex = -1;\n\t\t\treturn;\n\t\t}\n\n\t\t\n\t\tthis.list.selectedIndex = node.visibleIndex;\n\t\tthis.list.scrollToIndex(node.index);\n\t}\n\n\trenderItems(all = false) {\n\t\tif (this.list) {\n\t\t\tthis.list.size = this.size;\n\t\t\tthis.list.renderItems(all);\n\t\t}\n\t}\n\n\tclearSelection() {\n\t\tthis.selection.clear();\n\t\tthis.requestUpdate();\n\t}\n\n\tasync filter(term?: string) {\n\t\tterm = (term ?? '').trim();\n\t\tif (term === this.currentFilter) return;\n\n\t\tthis.currentFilter = term;\n\t\t\n\t\tif (this.loading) {\n\t\t\tthis.awaitFilter = true;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.customSearch && this.adapter) {\n\t\t\tawait this.loadData({filter: term});\n\t\t\treturn;\n\t\t}\n\n\t\tif (term == null) {\n\t\t\tthis.filtering?.clear();\n\t\t\tthis.noMatches = false;\n\t\t} else {\n\t\t\tthis.filtering?.filter(term);\n\t\t\tthis.noMatches = this.size == 0;\n\t\t}\n\n\t\tthis.list.size = this.size;\n\t\tthis.list.select(0);\n\t\tthis.list.requestUpdate();\n\t}\n\n\tasync clearFilter() {\n\t\tif (this.searchBar?.searchInput) this.searchBar.searchInput.value = '';\n\t\tawait this.filter();\n\t}\n\n\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/tree",
3
- "version": "0.6.95",
3
+ "version": "0.6.96",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Universal treeview component",
6
6
  "main": "./dist/index.js",
@@ -27,8 +27,8 @@
27
27
  "_prepublish": "yarn test && yarn lint"
28
28
  },
29
29
  "dependencies": {
30
- "@omegagrid/core": "^0.6.95",
31
- "@omegagrid/localize": "^0.6.95",
30
+ "@omegagrid/core": "^0.6.96",
31
+ "@omegagrid/localize": "^0.6.96",
32
32
  "date-fns": "^3.2.0",
33
33
  "lit": "^3.1.1",
34
34
  "lit-html": "^3.1.1",