@dnncommunity/dnn-elements 0.14.0-beta.6 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/cjs/dnn-button.cjs.entry.js +1 -1
  2. package/dist/cjs/dnn-button_16.cjs.entry.js +50 -77
  3. package/dist/cjs/dnn-button_16.cjs.entry.js.map +1 -1
  4. package/dist/cjs/dnn-checkbox.cjs.entry.js +1 -1
  5. package/dist/cjs/dnn-chevron.cjs.entry.js +1 -1
  6. package/dist/cjs/dnn-collapsible.cjs.entry.js +27 -73
  7. package/dist/cjs/dnn-collapsible.cjs.entry.js.map +1 -1
  8. package/dist/cjs/dnn-color-picker.cjs.entry.js +1 -1
  9. package/dist/cjs/dnn-dropzone.cjs.entry.js +1 -1
  10. package/dist/cjs/dnn-image-cropper.cjs.entry.js +1 -1
  11. package/dist/cjs/dnn-modal.cjs.entry.js +1 -1
  12. package/dist/cjs/dnn-searchbox.cjs.entry.js +1 -1
  13. package/dist/cjs/dnn-sort-icon.cjs.entry.js +1 -1
  14. package/dist/cjs/dnn-tab.cjs.entry.js +1 -1
  15. package/dist/cjs/dnn-tabs.cjs.entry.js +1 -1
  16. package/dist/cjs/dnn-toggle.cjs.entry.js +1 -1
  17. package/dist/cjs/dnn-treeview-item.cjs.entry.js +24 -6
  18. package/dist/cjs/dnn-treeview-item.cjs.entry.js.map +1 -1
  19. package/dist/cjs/dnn-vertical-overflow-menu.cjs.entry.js +1 -1
  20. package/dist/cjs/dnn-vertical-splitview.cjs.entry.js +1 -1
  21. package/dist/cjs/dnn.cjs.js +2 -2
  22. package/dist/cjs/{index-6a6ac523.js → index-7505bd72.js} +1 -5
  23. package/dist/cjs/index-7505bd72.js.map +1 -0
  24. package/dist/cjs/{index-ba8b86b1.js → index-aff4d89a.js} +2 -2
  25. package/dist/cjs/index-aff4d89a.js.map +1 -0
  26. package/dist/cjs/loader.cjs.js +2 -2
  27. package/dist/collection/components/dnn-collapsible/dnn-collapsible.css +4 -3
  28. package/dist/collection/components/dnn-collapsible/dnn-collapsible.js +27 -72
  29. package/dist/collection/components/dnn-collapsible/dnn-collapsible.js.map +1 -1
  30. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.css +2 -2
  31. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.js +55 -7
  32. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.js.map +1 -1
  33. package/dist/dnn/dnn-button.entry.js +1 -1
  34. package/dist/dnn/dnn-button.system.entry.js +1 -1
  35. package/dist/dnn/dnn-checkbox.entry.js +1 -1
  36. package/dist/dnn/dnn-checkbox.system.entry.js +1 -1
  37. package/dist/dnn/dnn-chevron.entry.js +1 -1
  38. package/dist/dnn/dnn-chevron.system.entry.js +1 -1
  39. package/dist/dnn/dnn-collapsible.entry.js +27 -73
  40. package/dist/dnn/dnn-collapsible.entry.js.map +1 -1
  41. package/dist/dnn/dnn-collapsible.system.entry.js +1 -1
  42. package/dist/dnn/dnn-collapsible.system.entry.js.map +1 -1
  43. package/dist/dnn/dnn-color-picker.entry.js +1 -1
  44. package/dist/dnn/dnn-color-picker.system.entry.js +1 -1
  45. package/dist/dnn/dnn-dropzone.entry.js +1 -1
  46. package/dist/dnn/dnn-dropzone.system.entry.js +1 -1
  47. package/dist/dnn/dnn-image-cropper.entry.js +1 -1
  48. package/dist/dnn/dnn-image-cropper.system.entry.js +1 -1
  49. package/dist/dnn/dnn-modal.entry.js +1 -1
  50. package/dist/dnn/dnn-modal.system.entry.js +1 -1
  51. package/dist/dnn/dnn-searchbox.entry.js +1 -1
  52. package/dist/dnn/dnn-searchbox.system.entry.js +1 -1
  53. package/dist/dnn/dnn-sort-icon.entry.js +1 -1
  54. package/dist/dnn/dnn-sort-icon.system.entry.js +1 -1
  55. package/dist/dnn/dnn-tab.entry.js +1 -1
  56. package/dist/dnn/dnn-tab.system.entry.js +1 -1
  57. package/dist/dnn/dnn-tabs.entry.js +1 -1
  58. package/dist/dnn/dnn-tabs.system.entry.js +1 -1
  59. package/dist/dnn/dnn-toggle.entry.js +1 -1
  60. package/dist/dnn/dnn-toggle.system.entry.js +1 -1
  61. package/dist/dnn/dnn-treeview-item.entry.js +24 -6
  62. package/dist/dnn/dnn-treeview-item.entry.js.map +1 -1
  63. package/dist/dnn/dnn-treeview-item.system.entry.js +1 -1
  64. package/dist/dnn/dnn-treeview-item.system.entry.js.map +1 -1
  65. package/dist/dnn/dnn-vertical-overflow-menu.entry.js +1 -1
  66. package/dist/dnn/dnn-vertical-overflow-menu.system.entry.js +1 -1
  67. package/dist/dnn/dnn-vertical-splitview.entry.js +1 -1
  68. package/dist/dnn/dnn-vertical-splitview.system.entry.js +1 -1
  69. package/dist/dnn/dnn.esm.js +2 -2
  70. package/dist/dnn/dnn.system.js +1 -1
  71. package/dist/dnn/dnn.system.js.map +1 -1
  72. package/dist/dnn/index-a3a55419.system.js +2 -0
  73. package/dist/dnn/index-a3a55419.system.js.map +1 -0
  74. package/dist/dnn/{index-3e56049b.js → index-b5a28c1d.js} +2 -2
  75. package/dist/dnn/index-b5a28c1d.js.map +1 -0
  76. package/dist/dnn/{p-142c6f85.system.js → p-058ba146.system.js} +2 -2
  77. package/dist/dnn/p-058ba146.system.js.map +1 -0
  78. package/dist/dnn/{p-d10994a3.js → p-45ce2139.js} +2 -2
  79. package/dist/dnn/p-45ce2139.js.map +1 -0
  80. package/dist/dnn/{p-24a552b2.system.entry.js → p-4d2d8419.system.entry.js} +4 -4
  81. package/dist/dnn/p-4d2d8419.system.entry.js.map +1 -0
  82. package/dist/dnn/{p-bdfc3291.entry.js → p-e4da2e36.entry.js} +4 -4
  83. package/dist/dnn/p-e4da2e36.entry.js.map +1 -0
  84. package/dist/dnn/{p-3fbd1ad6.system.js → p-f91193e2.system.js} +2 -2
  85. package/dist/dnn/p-f91193e2.system.js.map +1 -0
  86. package/dist/esm/dnn-button.entry.js +1 -1
  87. package/dist/esm/dnn-button_16.entry.js +50 -77
  88. package/dist/esm/dnn-button_16.entry.js.map +1 -1
  89. package/dist/esm/dnn-checkbox.entry.js +1 -1
  90. package/dist/esm/dnn-chevron.entry.js +1 -1
  91. package/dist/esm/dnn-collapsible.entry.js +27 -73
  92. package/dist/esm/dnn-collapsible.entry.js.map +1 -1
  93. package/dist/esm/dnn-color-picker.entry.js +1 -1
  94. package/dist/esm/dnn-dropzone.entry.js +1 -1
  95. package/dist/esm/dnn-image-cropper.entry.js +1 -1
  96. package/dist/esm/dnn-modal.entry.js +1 -1
  97. package/dist/esm/dnn-searchbox.entry.js +1 -1
  98. package/dist/esm/dnn-sort-icon.entry.js +1 -1
  99. package/dist/esm/dnn-tab.entry.js +1 -1
  100. package/dist/esm/dnn-tabs.entry.js +1 -1
  101. package/dist/esm/dnn-toggle.entry.js +1 -1
  102. package/dist/esm/dnn-treeview-item.entry.js +24 -6
  103. package/dist/esm/dnn-treeview-item.entry.js.map +1 -1
  104. package/dist/esm/dnn-vertical-overflow-menu.entry.js +1 -1
  105. package/dist/esm/dnn-vertical-splitview.entry.js +1 -1
  106. package/dist/esm/dnn.js +2 -2
  107. package/dist/esm/{index-3e56049b.js → index-b5a28c1d.js} +2 -2
  108. package/dist/esm/index-b5a28c1d.js.map +1 -0
  109. package/dist/esm/{index-212d30ec.js → index-cdbad319.js} +1 -5
  110. package/dist/esm/index-cdbad319.js.map +1 -0
  111. package/dist/esm/loader.js +2 -2
  112. package/dist/esm-es5/dnn-button_16.entry.js +2 -2
  113. package/dist/esm-es5/dnn-button_16.entry.js.map +1 -1
  114. package/dist/esm-es5/dnn.js +1 -1
  115. package/dist/esm-es5/dnn.js.map +1 -1
  116. package/dist/esm-es5/{index-212d30ec.js → index-cdbad319.js} +2 -2
  117. package/dist/esm-es5/index-cdbad319.js.map +1 -0
  118. package/dist/esm-es5/loader.js +1 -1
  119. package/dist/esm-es5/loader.js.map +1 -1
  120. package/dist/types/components/dnn-collapsible/dnn-collapsible.d.ts +7 -11
  121. package/dist/types/components/dnn-treeview-item/dnn-treeview-item.d.ts +10 -2
  122. package/dist/types/components.d.ts +10 -2
  123. package/package.json +1 -1
  124. package/dist/cjs/index-6a6ac523.js.map +0 -1
  125. package/dist/cjs/index-ba8b86b1.js.map +0 -1
  126. package/dist/dnn/index-3e56049b.js.map +0 -1
  127. package/dist/dnn/index-5c2c8f16.system.js +0 -2
  128. package/dist/dnn/index-5c2c8f16.system.js.map +0 -1
  129. package/dist/dnn/p-142c6f85.system.js.map +0 -1
  130. package/dist/dnn/p-24a552b2.system.entry.js.map +0 -1
  131. package/dist/dnn/p-3fbd1ad6.system.js.map +0 -1
  132. package/dist/dnn/p-bdfc3291.entry.js.map +0 -1
  133. package/dist/dnn/p-d10994a3.js.map +0 -1
  134. package/dist/esm/index-212d30ec.js.map +0 -1
  135. package/dist/esm/index-3e56049b.js.map +0 -1
  136. package/dist/esm-es5/index-212d30ec.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-ba8b86b1.js');
5
+ const index = require('./index-aff4d89a.js');
6
6
 
7
7
  const dnnButtonCss = ":host{--background-color:transparent;--color:#333;--border-size:1px;--border-color:var(--backround-color);--border-radius:var(--dnn-controls-radius, 5px);--padding:var(--dnn-controls-padding, 5px);display:inline-block;width:auto}:host(.disabled){pointer-events:none}:host(.primary){--background-color:var(--dnn-color-primary, blue);--color:var(--dnn-color-primary-contrast, white);--focus-color:var(--background-color)}:host(.primary.reversed){--background-color:var(--dnn-color-primary-contrast, white);--color:var(--dnn-color-primary, blue);--border-color:var(--dnn-color-primary, blue);--focus-color:var(--color)}:host(.secondary){--background-color:var(--dnn-color-secondary, green);--color:var(--dnn-color-secondary-contrast, white);--focus-color:var(--background-color)}:host(.secondary.reversed){--background-color:var(--dnn-color-secondary-contrast, white);--color:var(--dnn-color-secondary, blue);--border-color:var(--dnn-color-secondary, blue);--focus-color:var(--color)}:host(.tertiary){--background-color:var(--dnn-color-tertiary, yellow);--color:var(--dnn-color-tertiary-contrast, black);--focus-color:var(--background-color)}:host(.tertiary.reversed){--background-color:var(--dnn-color-tertiary-contrast, white);--color:var(--dnn-color-tertiary, blue);--border-color:var(--dnn-color-tertiary, blue);--focus-color:var(--color)}:host(.hydrated) button{border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);padding:var(--padding) calc(var(--padding) * 2);background-color:transparent;background-color:var(--background-color);color:var(--color);outline:none}:host(.hydrated) button:focus,:host(.hydrated) button:hover{-webkit-box-shadow:0 0 2px 2px var(--focus-color);box-shadow:0 0 2px 2px var(--focus-color)}:host(:disabled,[disabled]) button{pointer-events:none;opacity:0.5}:host(.small) button{padding:calc(var(--padding) / 2) var(--padding);font-size:0.7em}:host(.large) button{padding:calc(var(--padding) * 1.5) calc(var(--padding) * 3);font-size:1.2em}button{height:100%;width:100%;cursor:pointer}";
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-6a6ac523.js');
5
+ const index = require('./index-7505bd72.js');
6
6
  const debounce = require('./debounce-1de79bc7.js');
7
7
 
8
8
  const dnnButtonCss = ":host{--background-color:transparent;--color:#333;--border-size:1px;--border-color:var(--backround-color);--border-radius:var(--dnn-controls-radius, 5px);--padding:var(--dnn-controls-padding, 5px);display:inline-block;width:auto}:host(.disabled){pointer-events:none}:host(.primary){--background-color:var(--dnn-color-primary, blue);--color:var(--dnn-color-primary-contrast, white);--focus-color:var(--background-color)}:host(.primary.reversed){--background-color:var(--dnn-color-primary-contrast, white);--color:var(--dnn-color-primary, blue);--border-color:var(--dnn-color-primary, blue);--focus-color:var(--color)}:host(.secondary){--background-color:var(--dnn-color-secondary, green);--color:var(--dnn-color-secondary-contrast, white);--focus-color:var(--background-color)}:host(.secondary.reversed){--background-color:var(--dnn-color-secondary-contrast, white);--color:var(--dnn-color-secondary, blue);--border-color:var(--dnn-color-secondary, blue);--focus-color:var(--color)}:host(.tertiary){--background-color:var(--dnn-color-tertiary, yellow);--color:var(--dnn-color-tertiary-contrast, black);--focus-color:var(--background-color)}:host(.tertiary.reversed){--background-color:var(--dnn-color-tertiary-contrast, white);--color:var(--dnn-color-tertiary, blue);--border-color:var(--dnn-color-tertiary, blue);--focus-color:var(--color)}:host(.hydrated) button{border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);padding:var(--padding) calc(var(--padding) * 2);background-color:transparent;background-color:var(--background-color);color:var(--color);outline:none}:host(.hydrated) button:focus,:host(.hydrated) button:hover{-webkit-box-shadow:0 0 2px 2px var(--focus-color);box-shadow:0 0 2px 2px var(--focus-color)}:host(:disabled,[disabled]) button{pointer-events:none;opacity:0.5}:host(.small) button{padding:calc(var(--padding) / 2) var(--padding);font-size:0.7em}:host(.large) button{padding:calc(var(--padding) * 1.5) calc(var(--padding) * 3);font-size:1.2em}button{height:100%;width:100%;cursor:pointer}";
@@ -158,18 +158,8 @@ let DnnChevron = class {
158
158
  };
159
159
  DnnChevron.style = dnnChevronCss;
160
160
 
161
- const dnnCollapsibleCss = ":host{display:block}:host #container{height:0;overflow:hidden;-webkit-transition:height 300ms ease-in-out;transition:height 300ms ease-in-out}";
161
+ const dnnCollapsibleCss = ":host{display:block}#container{max-height:0;overflow:hidden;-webkit-transition:max-height 300ms ease-in-out;transition:max-height 300ms ease-in-out}";
162
162
 
163
- var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
164
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
165
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
166
- r = Reflect.decorate(decorators, target, key, desc);
167
- else
168
- for (var i = decorators.length - 1; i >= 0; i--)
169
- if (d = decorators[i])
170
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
171
- return c > 3 && r && Object.defineProperty(target, key, r), r;
172
- };
173
163
  let DnnCollapsible = class {
174
164
  constructor(hostRef) {
175
165
  index.registerInstance(this, hostRef);
@@ -178,86 +168,51 @@ let DnnCollapsible = class {
178
168
  this.expanded = false;
179
169
  /** Defines the transition time in ms, defaults to 100ms */
180
170
  this.transitionDuration = 150;
181
- this.animating = false;
182
171
  }
183
- handleExpandedChanged(newValue) {
184
- this.animating = true;
172
+ handleHeightChanged() {
185
173
  requestAnimationFrame(() => {
186
- const container = this.el.shadowRoot.querySelector("#container");
187
- if (newValue) {
188
- container.style.height = container.scrollHeight + "px";
189
- }
190
- else {
191
- container.style.height = "0px";
192
- }
193
- });
194
- requestAnimationFrame(() => {
195
- this.animating = false;
196
- this.dnnCollapsibleHeightChanged.emit();
174
+ this.updateSize();
197
175
  });
198
176
  }
199
- /** Updates the component height, use to update after a slot content changes. */
177
+ /**
178
+ * Updates the component height, use to update after a slot content changes.
179
+ */
200
180
  async updateSize() {
201
- this.updateComponentSize();
202
- }
203
- updateComponentSize() {
204
181
  if (this.expanded) {
205
- this.animating = true;
206
182
  requestAnimationFrame(() => {
207
- const container = this.el.shadowRoot.querySelector("#container");
208
- let newHeight = 0;
209
- container.querySelector('slot').assignedElements().forEach(node => {
210
- newHeight += node.scrollHeight;
211
- });
212
- container.style.height = newHeight + "px";
183
+ this.container.style.maxHeight = `${this.container.scrollHeight}px`;
213
184
  });
185
+ setTimeout(() => {
186
+ this.container.style.maxHeight = "none";
187
+ }, this.transitionDuration);
214
188
  }
215
189
  }
216
- handleOtherCollapsibleHeightChanged() {
190
+ handledExpandedChanged(expanded) {
191
+ if (expanded) {
192
+ this.updateSize();
193
+ }
194
+ else {
195
+ requestAnimationFrame(() => {
196
+ this.container.style.maxHeight = `${this.container.scrollHeight}px`;
197
+ requestAnimationFrame(() => {
198
+ this.container.style.maxHeight = "0px";
199
+ });
200
+ });
201
+ }
217
202
  setTimeout(() => {
218
- this.updateComponentSize();
219
- }, this.transitionDuration);
220
- }
221
- handleMutation(mutationList) {
222
- mutationList.forEach(mutation => {
223
203
  requestAnimationFrame(() => {
224
- mutation.target.closest('dnn-collapsible').updateSize();
204
+ this.dnnCollapsibleHeightChanged.emit();
225
205
  });
226
- });
227
- }
228
- componentWillLoad() {
229
- this.mutationObserver = new MutationObserver((mutationList) => {
230
- this.handleMutation(mutationList);
231
- });
232
- }
233
- componentDidLoad() {
234
- const container = this.el.shadowRoot.querySelector('#container');
235
- container.style.transitionDuration = this.transitionDuration + 'ms';
236
- // Monitor for content changes and update own height
237
- const childNodes = [this.el];
238
- childNodes.forEach(element => {
239
- this.mutationObserver.observe(element, { attributes: true, characterData: true, childList: true, subtree: true });
240
- });
241
- const slot = this.el.shadowRoot.querySelector('slot');
242
- slot.addEventListener("slotchange", () => {
243
- this.updateSize();
244
- });
245
- }
246
- disconnectedCallback() {
247
- this.mutationObserver.disconnect();
206
+ }, this.transitionDuration);
248
207
  }
249
- /*eslint-enable @stencil/own-methods-must-be-private */
250
208
  render() {
251
- return (index.h(index.Host, null, index.h("div", { id: "container" }, index.h("slot", null))));
209
+ return (index.h(index.Host, null, index.h("div", { id: "container", class: this.expanded && "expanded", ref: el => this.container = el }, index.h("slot", null))));
252
210
  }
253
211
  get el() { return index.getElement(this); }
254
212
  static get watchers() { return {
255
- "expanded": ["handleExpandedChanged"]
213
+ "expanded": ["handledExpandedChanged"]
256
214
  }; }
257
215
  };
258
- __decorate$2([
259
- debounce.Debounce()
260
- ], DnnCollapsible.prototype, "updateSize", null);
261
216
  DnnCollapsible.style = dnnCollapsibleCss;
262
217
 
263
218
  /** Color utility class with hsl and rgb converters
@@ -1528,19 +1483,32 @@ let DnnToggle = class {
1528
1483
  };
1529
1484
  DnnToggle.style = dnnToggleCss;
1530
1485
 
1531
- const dnnTreeviewItemCss = ":host{display:-ms-flexbox;display:flex;overflow:hidden}.expander{width:24px;height:24px}.expander button{-webkit-transition:all 150ms ease-in-out;transition:all 150ms ease-in-out;background-color:transparent;border:none;padding:0;margin:0;outline:none;height:1em;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;cursor:pointer;position:relative;top:2px}.expander button svg :first-child{-webkit-transition:all 150ms ease-in-out;transition:all 150ms ease-in-out;fill:white;stroke:black}.expander.expanded button{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.expander.expanded button svg :first-child{fill:black;stroke:black}div.item .item-slot{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:0.25em}div.item div.children{overflow:hidden;height:0;-webkit-transition:all 150ms ease-in-out;transition:all 150ms ease-in-out}";
1486
+ const dnnTreeviewItemCss = ":host{display:-ms-flexbox;display:flex;overflow:visible}.expander{width:24px;height:24px}.expander button{-webkit-transition:all 150ms ease-in-out;transition:all 150ms ease-in-out;background-color:transparent;border:none;padding:0;margin:0;height:1em;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;cursor:pointer;position:relative;top:2px}.expander button svg :first-child{-webkit-transition:all 150ms ease-in-out;transition:all 150ms ease-in-out;fill:white;stroke:black}.expander.expanded button{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.expander.expanded button svg :first-child{fill:black;stroke:black}div.item .item-slot{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:0.25em;min-height:24px}div.item div.children{overflow:hidden;height:0;-webkit-transition:all 150ms ease-in-out;transition:all 150ms ease-in-out}";
1532
1487
 
1533
1488
  let DnnTreeviewItem = class {
1534
1489
  constructor(hostRef) {
1535
1490
  index.registerInstance(this, hostRef);
1536
- /** Defines if the current node is expanded */
1491
+ this.userExpanded = index.createEvent(this, "userExpanded", 3);
1492
+ this.userCollapsed = index.createEvent(this, "userCollapsed", 3);
1493
+ /** Defines if the current node is expanded. */
1537
1494
  this.expanded = false;
1495
+ /** Manages state for whether or not item has children. */
1538
1496
  this.hasChildren = false;
1539
1497
  }
1498
+ /** Watch expanded Prop */
1499
+ watchExpanded(expanded) {
1500
+ if (expanded) {
1501
+ this.expander.classList.add("expanded");
1502
+ this.collapsible.expanded = true;
1503
+ return;
1504
+ }
1505
+ this.expander.classList.remove("expanded");
1506
+ this.collapsible.expanded = false;
1507
+ }
1540
1508
  componentDidLoad() {
1541
1509
  requestAnimationFrame(() => {
1542
- const children = this.childrenElement.children[0];
1543
- const count = children.assignedElements().length;
1510
+ const child = this.childElement.children[0];
1511
+ const count = child.assignedElements().length;
1544
1512
  if (count > 0) {
1545
1513
  this.hasChildren = true;
1546
1514
  }
@@ -1557,15 +1525,20 @@ let DnnTreeviewItem = class {
1557
1525
  this.expanded = !this.expanded;
1558
1526
  if (this.expanded) {
1559
1527
  this.expander.classList.add("expanded");
1528
+ this.userExpanded.emit();
1560
1529
  return;
1561
1530
  }
1562
1531
  this.expander.classList.remove("expanded");
1532
+ this.userCollapsed.emit();
1563
1533
  }
1564
1534
  render() {
1565
1535
  return (index.h(index.Host, null, index.h("div", { class: "expander", ref: el => this.expander = el }, this.hasChildren &&
1566
- index.h("button", { onClick: () => this.toggleCollapse() }, index.h("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 0 24 24", width: "24px", fill: "#000000" }, index.h("path", { d: "M10 17l5-5-5-5v10z" }), index.h("path", { d: "M0 24V0h24v24H0z", fill: "none" })))), index.h("div", { class: "item" }, index.h("div", { class: "item-slot" }, index.h("slot", null)), index.h("dnn-collapsible", { ref: el => this.collapsible = el, expanded: this.expanded }, index.h("div", { ref: el => this.childrenElement = el }, index.h("slot", { name: "children" }))))));
1536
+ index.h("button", { onClick: () => this.toggleCollapse() }, index.h("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 0 24 24", width: "24px", fill: "#000000" }, index.h("path", { d: "M10 17l5-5-5-5v10z" }), index.h("path", { d: "M0 24V0h24v24H0z", fill: "none" })))), index.h("div", { class: "item" }, index.h("div", { class: "item-slot" }, index.h("slot", null)), index.h("dnn-collapsible", { ref: el => this.collapsible = el, expanded: this.expanded }, index.h("div", { ref: el => this.childElement = el }, index.h("slot", { name: "children" }))))));
1567
1537
  }
1568
1538
  get el() { return index.getElement(this); }
1539
+ static get watchers() { return {
1540
+ "expanded": ["watchExpanded"]
1541
+ }; }
1569
1542
  };
1570
1543
  DnnTreeviewItem.style = dnnTreeviewItemCss;
1571
1544