@dnncommunity/dnn-elements 0.13.1 → 0.14.0-beta.12

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 (229) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/dnn-button.cjs.entry.js +2 -2
  3. package/dist/cjs/dnn-button.cjs.entry.js.map +1 -1
  4. package/dist/cjs/{dnn-button_14.cjs.entry.js → dnn-button_16.cjs.entry.js} +333 -121
  5. package/dist/cjs/dnn-button_16.cjs.entry.js.map +1 -0
  6. package/dist/cjs/dnn-checkbox.cjs.entry.js +2 -2
  7. package/dist/cjs/dnn-checkbox.cjs.entry.js.map +1 -1
  8. package/dist/cjs/dnn-chevron.cjs.entry.js +2 -2
  9. package/dist/cjs/dnn-chevron.cjs.entry.js.map +1 -1
  10. package/dist/cjs/dnn-collapsible.cjs.entry.js +27 -73
  11. package/dist/cjs/dnn-collapsible.cjs.entry.js.map +1 -1
  12. package/dist/cjs/dnn-color-picker.cjs.entry.js +2 -2
  13. package/dist/cjs/dnn-color-picker.cjs.entry.js.map +1 -1
  14. package/dist/cjs/dnn-dropzone.cjs.entry.js +2 -2
  15. package/dist/cjs/dnn-dropzone.cjs.entry.js.map +1 -1
  16. package/dist/cjs/dnn-image-cropper.cjs.entry.js +8 -24
  17. package/dist/cjs/dnn-image-cropper.cjs.entry.js.map +1 -1
  18. package/dist/cjs/dnn-modal.cjs.entry.js +2 -2
  19. package/dist/cjs/dnn-modal.cjs.entry.js.map +1 -1
  20. package/dist/cjs/dnn-searchbox.cjs.entry.js +2 -2
  21. package/dist/cjs/dnn-searchbox.cjs.entry.js.map +1 -1
  22. package/dist/cjs/dnn-sort-icon.cjs.entry.js +1 -1
  23. package/dist/cjs/dnn-tab.cjs.entry.js +1 -1
  24. package/dist/cjs/dnn-tabs.cjs.entry.js +6 -4
  25. package/dist/cjs/dnn-tabs.cjs.entry.js.map +1 -1
  26. package/dist/cjs/dnn-toggle.cjs.entry.js +2 -2
  27. package/dist/cjs/dnn-toggle.cjs.entry.js.map +1 -1
  28. package/dist/cjs/dnn-treeview-item.cjs.entry.js +35 -15
  29. package/dist/cjs/dnn-treeview-item.cjs.entry.js.map +1 -1
  30. package/dist/cjs/dnn-vertical-overflow-menu.cjs.entry.js +122 -0
  31. package/dist/cjs/dnn-vertical-overflow-menu.cjs.entry.js.map +1 -0
  32. package/dist/cjs/dnn-vertical-splitview.cjs.entry.js +127 -0
  33. package/dist/cjs/dnn-vertical-splitview.cjs.entry.js.map +1 -0
  34. package/dist/cjs/dnn.cjs.js +2 -2
  35. package/dist/cjs/{index-e85ec026.js → index-7505bd72.js} +4 -5
  36. package/dist/cjs/index-7505bd72.js.map +1 -0
  37. package/dist/cjs/{index-eede7745.js → index-aff4d89a.js} +2 -2
  38. package/dist/cjs/{index-eede7745.js.map → index-aff4d89a.js.map} +1 -1
  39. package/dist/cjs/loader.cjs.js +2 -2
  40. package/dist/cjs/mouseUtilities-75be531a.js +25 -0
  41. package/dist/cjs/mouseUtilities-75be531a.js.map +1 -0
  42. package/dist/collection/collection-manifest.json +3 -1
  43. package/dist/collection/components/dnn-collapsible/dnn-collapsible.css +4 -3
  44. package/dist/collection/components/dnn-collapsible/dnn-collapsible.js +27 -72
  45. package/dist/collection/components/dnn-collapsible/dnn-collapsible.js.map +1 -1
  46. package/dist/collection/components/dnn-image-cropper/dnn-image-cropper.js +6 -22
  47. package/dist/collection/components/dnn-image-cropper/dnn-image-cropper.js.map +1 -1
  48. package/dist/collection/components/dnn-tabs/dnn-tabs.js +4 -2
  49. package/dist/collection/components/dnn-tabs/dnn-tabs.js.map +1 -1
  50. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.css +2 -2
  51. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.js +66 -16
  52. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.js.map +1 -1
  53. package/dist/collection/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.css +56 -0
  54. package/dist/collection/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.js +132 -0
  55. package/dist/collection/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.js.map +1 -0
  56. package/dist/collection/components/dnn-vertical-splitview/dnn-vertical-splitview.css +37 -0
  57. package/dist/collection/components/dnn-vertical-splitview/dnn-vertical-splitview.js +228 -0
  58. package/dist/collection/components/dnn-vertical-splitview/dnn-vertical-splitview.js.map +1 -0
  59. package/dist/collection/utilities/mouseUtilities.js +20 -0
  60. package/dist/collection/utilities/mouseUtilities.js.map +1 -0
  61. package/dist/dnn/app-globals-497eb362.system.js +2 -0
  62. package/dist/dnn/app-globals-497eb362.system.js.map +1 -0
  63. package/dist/dnn/css-shim-856c55de.system.js +2 -0
  64. package/dist/dnn/css-shim-856c55de.system.js.map +1 -0
  65. package/dist/dnn/debounce-eef81bf7.system.js +2 -0
  66. package/dist/dnn/debounce-eef81bf7.system.js.map +1 -0
  67. package/dist/dnn/dnn-button.entry.js +2 -2
  68. package/dist/dnn/dnn-button.entry.js.map +1 -1
  69. package/dist/dnn/dnn-button.system.entry.js +2 -0
  70. package/dist/dnn/dnn-button.system.entry.js.map +1 -0
  71. package/dist/dnn/dnn-checkbox.entry.js +2 -2
  72. package/dist/dnn/dnn-checkbox.entry.js.map +1 -1
  73. package/dist/dnn/dnn-checkbox.system.entry.js +2 -0
  74. package/dist/dnn/dnn-checkbox.system.entry.js.map +1 -0
  75. package/dist/dnn/dnn-chevron.entry.js +2 -2
  76. package/dist/dnn/dnn-chevron.entry.js.map +1 -1
  77. package/dist/dnn/dnn-chevron.system.entry.js +2 -0
  78. package/dist/dnn/dnn-chevron.system.entry.js.map +1 -0
  79. package/dist/dnn/dnn-collapsible.entry.js +27 -73
  80. package/dist/dnn/dnn-collapsible.entry.js.map +1 -1
  81. package/dist/dnn/dnn-collapsible.system.entry.js +2 -0
  82. package/dist/dnn/dnn-collapsible.system.entry.js.map +1 -0
  83. package/dist/dnn/dnn-color-picker.entry.js +2 -2
  84. package/dist/dnn/dnn-color-picker.entry.js.map +1 -1
  85. package/dist/dnn/dnn-color-picker.system.entry.js +12 -0
  86. package/dist/dnn/dnn-color-picker.system.entry.js.map +1 -0
  87. package/dist/dnn/dnn-dropzone.entry.js +2 -2
  88. package/dist/dnn/dnn-dropzone.entry.js.map +1 -1
  89. package/dist/dnn/dnn-dropzone.system.entry.js +2 -0
  90. package/dist/dnn/dnn-dropzone.system.entry.js.map +1 -0
  91. package/dist/dnn/dnn-image-cropper.entry.js +8 -24
  92. package/dist/dnn/dnn-image-cropper.entry.js.map +1 -1
  93. package/dist/dnn/dnn-image-cropper.system.entry.js +2 -0
  94. package/dist/dnn/dnn-image-cropper.system.entry.js.map +1 -0
  95. package/dist/dnn/dnn-modal.entry.js +2 -2
  96. package/dist/dnn/dnn-modal.entry.js.map +1 -1
  97. package/dist/dnn/dnn-modal.system.entry.js +2 -0
  98. package/dist/dnn/dnn-modal.system.entry.js.map +1 -0
  99. package/dist/dnn/dnn-searchbox.entry.js +2 -2
  100. package/dist/dnn/dnn-searchbox.entry.js.map +1 -1
  101. package/dist/dnn/dnn-searchbox.system.entry.js +2 -0
  102. package/dist/dnn/dnn-searchbox.system.entry.js.map +1 -0
  103. package/dist/dnn/dnn-sort-icon.entry.js +1 -1
  104. package/dist/dnn/dnn-sort-icon.system.entry.js +2 -0
  105. package/dist/dnn/dnn-sort-icon.system.entry.js.map +1 -0
  106. package/dist/dnn/dnn-tab.entry.js +1 -1
  107. package/dist/dnn/dnn-tab.system.entry.js +2 -0
  108. package/dist/dnn/dnn-tab.system.entry.js.map +1 -0
  109. package/dist/dnn/dnn-tabs.entry.js +6 -4
  110. package/dist/dnn/dnn-tabs.entry.js.map +1 -1
  111. package/dist/dnn/dnn-tabs.system.entry.js +2 -0
  112. package/dist/dnn/dnn-tabs.system.entry.js.map +1 -0
  113. package/dist/dnn/dnn-toggle.entry.js +2 -2
  114. package/dist/dnn/dnn-toggle.entry.js.map +1 -1
  115. package/dist/dnn/dnn-toggle.system.entry.js +2 -0
  116. package/dist/dnn/dnn-toggle.system.entry.js.map +1 -0
  117. package/dist/dnn/dnn-treeview-item.entry.js +35 -15
  118. package/dist/dnn/dnn-treeview-item.entry.js.map +1 -1
  119. package/dist/dnn/dnn-treeview-item.system.entry.js +2 -0
  120. package/dist/dnn/dnn-treeview-item.system.entry.js.map +1 -0
  121. package/dist/dnn/dnn-vertical-overflow-menu.entry.js +118 -0
  122. package/dist/dnn/dnn-vertical-overflow-menu.entry.js.map +1 -0
  123. package/dist/dnn/dnn-vertical-overflow-menu.system.entry.js +2 -0
  124. package/dist/dnn/dnn-vertical-overflow-menu.system.entry.js.map +1 -0
  125. package/dist/dnn/dnn-vertical-splitview.entry.js +123 -0
  126. package/dist/dnn/dnn-vertical-splitview.entry.js.map +1 -0
  127. package/dist/dnn/dnn-vertical-splitview.system.entry.js +2 -0
  128. package/dist/dnn/dnn-vertical-splitview.system.entry.js.map +1 -0
  129. package/dist/dnn/dnn.esm.js +2 -2
  130. package/dist/dnn/dnn.js +130 -0
  131. package/dist/dnn/dnn.system.js +2 -0
  132. package/dist/dnn/dnn.system.js.map +1 -0
  133. package/dist/dnn/dom-938307ec.system.js +22 -0
  134. package/dist/dnn/dom-938307ec.system.js.map +1 -0
  135. package/dist/dnn/index-a3a55419.system.js +2 -0
  136. package/dist/dnn/index-a3a55419.system.js.map +1 -0
  137. package/dist/dnn/{index-6c0764e5.js → index-b5a28c1d.js} +2 -2
  138. package/dist/dnn/{index-6c0764e5.js.map → index-b5a28c1d.js.map} +1 -1
  139. package/dist/dnn/index.system.js +2 -0
  140. package/dist/dnn/index.system.js.map +1 -0
  141. package/dist/dnn/mouseUtilities-817973b4.js +23 -0
  142. package/dist/dnn/mouseUtilities-817973b4.js.map +1 -0
  143. package/dist/dnn/mouseUtilities-e7e4e78f.system.js +2 -0
  144. package/dist/dnn/mouseUtilities-e7e4e78f.system.js.map +1 -0
  145. package/dist/dnn/p-058ba146.system.js +2 -0
  146. package/dist/dnn/p-058ba146.system.js.map +1 -0
  147. package/dist/dnn/p-45ce2139.js +2 -0
  148. package/dist/dnn/p-45ce2139.js.map +1 -0
  149. package/dist/dnn/p-4d2d8419.system.entry.js +11 -0
  150. package/dist/dnn/p-4d2d8419.system.entry.js.map +1 -0
  151. package/dist/dnn/p-646cfb1b.system.js +2 -0
  152. package/dist/dnn/p-646cfb1b.system.js.map +1 -0
  153. package/dist/dnn/p-e4da2e36.entry.js +11 -0
  154. package/dist/dnn/p-e4da2e36.entry.js.map +1 -0
  155. package/dist/dnn/p-f91193e2.system.js +2 -0
  156. package/dist/dnn/p-f91193e2.system.js.map +1 -0
  157. package/dist/dnn/p-fb637662.system.js +2 -0
  158. package/dist/dnn/p-fb637662.system.js.map +1 -0
  159. package/dist/dnn/shadow-css-d573707f.system.js +14 -0
  160. package/dist/dnn/shadow-css-d573707f.system.js.map +1 -0
  161. package/dist/esm/dnn-button.entry.js +2 -2
  162. package/dist/esm/dnn-button.entry.js.map +1 -1
  163. package/dist/esm/{dnn-button_14.entry.js → dnn-button_16.entry.js} +332 -122
  164. package/dist/esm/dnn-button_16.entry.js.map +1 -0
  165. package/dist/esm/dnn-checkbox.entry.js +2 -2
  166. package/dist/esm/dnn-checkbox.entry.js.map +1 -1
  167. package/dist/esm/dnn-chevron.entry.js +2 -2
  168. package/dist/esm/dnn-chevron.entry.js.map +1 -1
  169. package/dist/esm/dnn-collapsible.entry.js +27 -73
  170. package/dist/esm/dnn-collapsible.entry.js.map +1 -1
  171. package/dist/esm/dnn-color-picker.entry.js +2 -2
  172. package/dist/esm/dnn-color-picker.entry.js.map +1 -1
  173. package/dist/esm/dnn-dropzone.entry.js +2 -2
  174. package/dist/esm/dnn-dropzone.entry.js.map +1 -1
  175. package/dist/esm/dnn-image-cropper.entry.js +8 -24
  176. package/dist/esm/dnn-image-cropper.entry.js.map +1 -1
  177. package/dist/esm/dnn-modal.entry.js +2 -2
  178. package/dist/esm/dnn-modal.entry.js.map +1 -1
  179. package/dist/esm/dnn-searchbox.entry.js +2 -2
  180. package/dist/esm/dnn-searchbox.entry.js.map +1 -1
  181. package/dist/esm/dnn-sort-icon.entry.js +1 -1
  182. package/dist/esm/dnn-tab.entry.js +1 -1
  183. package/dist/esm/dnn-tabs.entry.js +6 -4
  184. package/dist/esm/dnn-tabs.entry.js.map +1 -1
  185. package/dist/esm/dnn-toggle.entry.js +2 -2
  186. package/dist/esm/dnn-toggle.entry.js.map +1 -1
  187. package/dist/esm/dnn-treeview-item.entry.js +35 -15
  188. package/dist/esm/dnn-treeview-item.entry.js.map +1 -1
  189. package/dist/esm/dnn-vertical-overflow-menu.entry.js +118 -0
  190. package/dist/esm/dnn-vertical-overflow-menu.entry.js.map +1 -0
  191. package/dist/esm/dnn-vertical-splitview.entry.js +123 -0
  192. package/dist/esm/dnn-vertical-splitview.entry.js.map +1 -0
  193. package/dist/esm/dnn.js +2 -2
  194. package/dist/esm/{index-6c0764e5.js → index-b5a28c1d.js} +2 -2
  195. package/dist/esm/{index-6c0764e5.js.map → index-b5a28c1d.js.map} +1 -1
  196. package/dist/esm/{index-f79d9e82.js → index-cdbad319.js} +4 -5
  197. package/dist/esm/index-cdbad319.js.map +1 -0
  198. package/dist/esm/loader.js +2 -2
  199. package/dist/esm/mouseUtilities-817973b4.js +23 -0
  200. package/dist/esm/mouseUtilities-817973b4.js.map +1 -0
  201. package/dist/esm-es5/debounce-06f55268.js +2 -0
  202. package/dist/esm-es5/debounce-06f55268.js.map +1 -0
  203. package/dist/esm-es5/dnn-button_16.entry.js +11 -0
  204. package/dist/esm-es5/dnn-button_16.entry.js.map +1 -0
  205. package/dist/esm-es5/dnn.js +2 -0
  206. package/dist/esm-es5/dnn.js.map +1 -0
  207. package/dist/esm-es5/index-cdbad319.js +2 -0
  208. package/dist/esm-es5/index-cdbad319.js.map +1 -0
  209. package/dist/esm-es5/index.js +2 -0
  210. package/dist/esm-es5/index.js.map +1 -0
  211. package/dist/esm-es5/loader.js +2 -0
  212. package/dist/esm-es5/loader.js.map +1 -0
  213. package/dist/types/components/dnn-collapsible/dnn-collapsible.d.ts +7 -11
  214. package/dist/types/components/dnn-image-cropper/dnn-image-cropper.d.ts +0 -1
  215. package/dist/types/components/dnn-treeview-item/dnn-treeview-item.d.ts +10 -2
  216. package/dist/types/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.d.ts +16 -0
  217. package/dist/types/components/dnn-vertical-splitview/dnn-vertical-splitview.d.ts +27 -0
  218. package/dist/types/components.d.ts +64 -2
  219. package/dist/types/utilities/mouseUtilities.d.ts +4 -0
  220. package/loader/index.js +1 -1
  221. package/package.json +1 -1
  222. package/dist/cjs/dnn-button_14.cjs.entry.js.map +0 -1
  223. package/dist/cjs/index-e85ec026.js.map +0 -1
  224. package/dist/dnn/p-7acf3104.entry.js +0 -11
  225. package/dist/dnn/p-7acf3104.entry.js.map +0 -1
  226. package/dist/dnn/p-bd3d3361.js +0 -2
  227. package/dist/dnn/p-bd3d3361.js.map +0 -1
  228. package/dist/esm/dnn-button_14.entry.js.map +0 -1
  229. package/dist/esm/index-f79d9e82.js.map +0 -1
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-e85ec026.js');
5
+ const index = require('./index-7505bd72.js');
6
6
  const debounce = require('./debounce-1de79bc7.js');
7
7
 
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{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
+ 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}";
9
9
 
10
10
  let DnnButton = class {
11
11
  constructor(hostRef) {
@@ -84,7 +84,7 @@ let DnnButton = class {
84
84
  };
85
85
  DnnButton.style = dnnButtonCss;
86
86
 
87
- const dnnCheckboxCss = ":host{--focus-color:var(--dnn-color-primary, #3792ED);display:inline-flex;align-items:center;gap:0.25rem;margin:3px}button{background-color:transparent;border:0;padding:0;margin:0;outline:none;display:flex;justify-content:center;align-items:center}button svg.undefined{opacity:0.45}button:focus{box-shadow:0 0 2px 2px var(--focus-color)}";
87
+ const dnnCheckboxCss = ":host{--focus-color:var(--dnn-color-primary, #3792ED);display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;gap:0.25rem;margin:3px}button{background-color:transparent;border:0;padding:0;margin:0;outline:none;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}button svg.undefined{opacity:0.45}button:focus{-webkit-box-shadow:0 0 2px 2px var(--focus-color);box-shadow:0 0 2px 2px var(--focus-color)}";
88
88
 
89
89
  let DnnCheckbox = class {
90
90
  constructor(hostRef) {
@@ -133,7 +133,7 @@ let DnnCheckbox = class {
133
133
  };
134
134
  DnnCheckbox.style = dnnCheckboxCss;
135
135
 
136
- const dnnChevronCss = ":host{display:inline-block}button{border:none;padding:0px;margin:0px;min-width:15px;min-height:15px;display:flex;justify-content:center;align-items:center;background-color:transparent;outline:none}svg{height:2em;width:2em;transition:all 300ms ease-in-out}button:focus svg,button:hover svg{color:var(--dnn-color-primary)}:host([expanded]) svg{transform:rotate(90deg)}";
136
+ const dnnChevronCss = ":host{display:inline-block}button{border:none;padding:0px;margin:0px;min-width:15px;min-height:15px;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;background-color:transparent;outline:none}svg{height:2em;width:2em;-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out}button:focus svg,button:hover svg{color:var(--dnn-color-primary)}:host([expanded]) svg{-webkit-transform:rotate(90deg);transform:rotate(90deg)}";
137
137
 
138
138
  let DnnChevron = class {
139
139
  constructor(hostRef) {
@@ -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;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
@@ -451,7 +406,7 @@ class ColorInfo {
451
406
  }
452
407
  }
453
408
 
454
- const dnnColorPickerCss = ".dnn-color-picker{padding:15px;max-width:400px}.dnn-color-picker .dnn-color-sliders{display:flex;flex-direction:column;min-width:200px}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b{border:1px solid #ccc;padding-bottom:var(--color-box-height, 50%);position:relative;background-color:red}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:linear-gradient(to right, white, red);mix-blend-mode:saturation}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;background:linear-gradient(to bottom, white, black);mix-blend-mode:luminosity}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b button{position:absolute;bottom:calc(50% - 4px);left:calc(50% - 4px);width:8px;height:8px;z-index:3;display:block;background:none;border:none;margin-left:-4px;margin-bottom:-4px;padding:7px;background-color:#fff;border-radius:50%}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b button:before{content:\"\";position:absolute;top:-1px;left:-1px;border-radius:50%}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b button:after{content:\"\";position:absolute;top:0px;left:0px;border-radius:50%;width:10px;height:10px;border:2px solid #ccc}.dnn-color-picker .dnn-color-sliders .dnn-color-bar{display:flex;align-items:center;margin-top:15px}.dnn-color-picker .dnn-color-sliders .dnn-color-bar .dnn-color-result{flex-direction:column;width:50px;height:50px;border-radius:50%;background:red}.dnn-color-picker .dnn-color-sliders .dnn-color-bar .dnn-color-hue{flex:auto;margin-left:10px;height:16px;border:1px solid #ccc;position:relative;background:linear-gradient(to right, #f00 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 84%, #f00 100%)}.dnn-color-picker .dnn-color-sliders .dnn-color-bar .dnn-color-hue button{width:10px;height:20px;position:absolute;top:-2px;left:calc(50% - 4px);border:0;padding:0;background-color:transparent;padding-left:-8px}.dnn-color-picker .dnn-color-sliders .dnn-color-bar .dnn-color-hue button:before{content:\"\";position:absolute;top:-2px;left:0px;border-radius:3px;width:100%;height:100%;border:1px solid #ccc;background-color:#fff}.dnn-color-picker .dnn-color-fields{display:flex;flex-direction:column;justify-content:space-between}.dnn-color-picker .dnn-color-fields .dnn-color-mode-switch{display:flex;align-items:flex-end;padding:0.5em}.dnn-color-picker .dnn-color-fields .dnn-color-mode-switch button{background-color:transparent;border:none}.dnn-color-picker .dnn-color-fields .dnn-color-mode-switch button svg{width:3em;height:3em;pointer-events:none;outline:none}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields{display:flex;justify-content:space-evenly}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field{display:flex;flex-direction:column;flex:auto;text-align:center;padding:0.5em}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field label{padding-bottom:0.25em}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field input{border-radius:var(--dnn-button-radius, 3px);border:1px solid #ccc;padding:0.5em;padding-left:1.3em;text-align:center}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field input.red{border-color:red}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field input.green{border-color:green}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field input.blue{border-color:blue}.dnn-color-picker .dnn-color-fields .dnn-hsl-color-fields{display:flex;justify-content:space-evenly}.dnn-color-picker .dnn-color-fields .dnn-hsl-color-fields .dnn-hsl-color-field{display:flex;flex-direction:column;flex:auto;text-align:center;padding:0.5em}.dnn-color-picker .dnn-color-fields .dnn-hsl-color-fields .dnn-hsl-color-field label{padding-bottom:0.25em}.dnn-color-picker .dnn-color-fields .dnn-hsl-color-fields .dnn-hsl-color-field input{border-radius:var(--dnn-button-radius, 3px);border:1px solid #ccc;padding:0.5em;padding-left:1.3em;text-align:center}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields{display:flex;justify-content:space-evenly}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field{display:flex;flex-direction:column;flex:auto;text-align:center;padding:0.5em}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field label{padding-bottom:0.25em}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field .hex-input{position:relative;border-radius:var(--dnn-button-radius, 3px);border:1px solid #ccc;padding:0.323em;text-align:center}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field .hex-input input{border:0;padding:0;margin:0;width:100%;height:100%;text-align:center}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field .hex-input button{position:absolute;height:100%;top:0;right:1em;background-color:transparent;border:0;padding:0;margin:0}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field .hex-input button svg{min-width:1em}";
409
+ const dnnColorPickerCss = ".dnn-color-picker{padding:15px;max-width:400px}.dnn-color-picker .dnn-color-sliders{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:200px}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b{border:1px solid #ccc;padding-bottom:var(--color-box-height, 50%);position:relative;background-color:red}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:-webkit-gradient(linear, left top, right top, from(white), to(red));background:linear-gradient(to right, white, red);mix-blend-mode:saturation}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;background:-webkit-gradient(linear, left top, left bottom, from(white), to(black));background:linear-gradient(to bottom, white, black);mix-blend-mode:luminosity}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b button{position:absolute;bottom:calc(50% - 4px);left:calc(50% - 4px);width:8px;height:8px;z-index:3;display:block;background:none;border:none;margin-left:-4px;margin-bottom:-4px;padding:7px;background-color:#fff;border-radius:50%}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b button:before{content:\"\";position:absolute;top:-1px;left:-1px;border-radius:50%}.dnn-color-picker .dnn-color-sliders .dnn-color-s-b button:after{content:\"\";position:absolute;top:0px;left:0px;border-radius:50%;width:10px;height:10px;border:2px solid #ccc}.dnn-color-picker .dnn-color-sliders .dnn-color-bar{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-top:15px}.dnn-color-picker .dnn-color-sliders .dnn-color-bar .dnn-color-result{-ms-flex-direction:column;flex-direction:column;width:50px;height:50px;border-radius:50%;background:red}.dnn-color-picker .dnn-color-sliders .dnn-color-bar .dnn-color-hue{-ms-flex:auto;flex:auto;margin-left:10px;height:16px;border:1px solid #ccc;position:relative;background:-webkit-gradient(linear, left top, right top, color-stop(0, #f00), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(84%, #f0f), to(#f00));background:linear-gradient(to right, #f00 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 84%, #f00 100%)}.dnn-color-picker .dnn-color-sliders .dnn-color-bar .dnn-color-hue button{width:10px;height:20px;position:absolute;top:-2px;left:calc(50% - 4px);border:0;padding:0;background-color:transparent;padding-left:-8px}.dnn-color-picker .dnn-color-sliders .dnn-color-bar .dnn-color-hue button:before{content:\"\";position:absolute;top:-2px;left:0px;border-radius:3px;width:100%;height:100%;border:1px solid #ccc;background-color:#fff}.dnn-color-picker .dnn-color-fields{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between}.dnn-color-picker .dnn-color-fields .dnn-color-mode-switch{display:-ms-flexbox;display:flex;-ms-flex-align:end;align-items:flex-end;padding:0.5em}.dnn-color-picker .dnn-color-fields .dnn-color-mode-switch button{background-color:transparent;border:none}.dnn-color-picker .dnn-color-fields .dnn-color-mode-switch button svg{width:3em;height:3em;pointer-events:none;outline:none}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields{display:-ms-flexbox;display:flex;-ms-flex-pack:space-evenly;justify-content:space-evenly}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:auto;flex:auto;text-align:center;padding:0.5em}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field label{padding-bottom:0.25em}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field input{border-radius:var(--dnn-button-radius, 3px);border:1px solid #ccc;padding:0.5em;padding-left:1.3em;text-align:center}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field input.red{border-color:red}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field input.green{border-color:green}.dnn-color-picker .dnn-color-fields .dnn-rgb-color-fields .dnn-rgb-color-field input.blue{border-color:blue}.dnn-color-picker .dnn-color-fields .dnn-hsl-color-fields{display:-ms-flexbox;display:flex;-ms-flex-pack:space-evenly;justify-content:space-evenly}.dnn-color-picker .dnn-color-fields .dnn-hsl-color-fields .dnn-hsl-color-field{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:auto;flex:auto;text-align:center;padding:0.5em}.dnn-color-picker .dnn-color-fields .dnn-hsl-color-fields .dnn-hsl-color-field label{padding-bottom:0.25em}.dnn-color-picker .dnn-color-fields .dnn-hsl-color-fields .dnn-hsl-color-field input{border-radius:var(--dnn-button-radius, 3px);border:1px solid #ccc;padding:0.5em;padding-left:1.3em;text-align:center}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields{display:-ms-flexbox;display:flex;-ms-flex-pack:space-evenly;justify-content:space-evenly}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:auto;flex:auto;text-align:center;padding:0.5em}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field label{padding-bottom:0.25em}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field .hex-input{position:relative;border-radius:var(--dnn-button-radius, 3px);border:1px solid #ccc;padding:0.323em;text-align:center}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field .hex-input input{border:0;padding:0;margin:0;width:100%;height:100%;text-align:center}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field .hex-input button{position:absolute;height:100%;top:0;right:1em;background-color:transparent;border:0;padding:0;margin:0}.dnn-color-picker .dnn-color-fields .dnn-hex-color-fields .dnn-hex-color-field .hex-input button svg{min-width:1em}";
455
410
 
456
411
  /** Reusable DNN UI component to pick a color
457
412
  * @copyright Copyright (c) .NET Foundation. All rights reserved.
@@ -750,7 +705,7 @@ __decorate$1([
750
705
  ], DnnColorPicker.prototype, "colorChangedHandler", null);
751
706
  DnnColorPicker.style = dnnColorPickerCss;
752
707
 
753
- const dnnDropzoneCss = ":host{--border-color:var(--dnn-color-tertiary-contrast, lightgray);--border-radius:var(--dnn-controls-radius, 5px);--drop-background-color:var(--dnn-color-tertiary, lightblue);display:flex;flex-direction:column;gap:1rem;text-align:center;border:2px dashed var(--border-color);border-radius:var(--border-radius);padding:1rem;transition:all 300ms ease-in-out}:host(.dropping){background-color:var(--drop-background-color)}p{margin:0;padding:0}button{display:flex;justify-content:center;align-items:center;border:0px;margin:0;padding:0;background-color:transparent}button:hover{cursor:pointer}button svg{margin-right:0.5rem}label.upload-file{display:flex;justify-content:center;align-items:center;cursor:pointer}label.upload-file input{display:none}.video-preview{display:flex;flex-direction:column;align-items:center}.video-preview button{margin:1rem}";
708
+ const dnnDropzoneCss = ":host{--border-color:var(--dnn-color-tertiary-contrast, lightgray);--border-radius:var(--dnn-controls-radius, 5px);--drop-background-color:var(--dnn-color-tertiary, lightblue);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:1rem;text-align:center;border:2px dashed var(--border-color);border-radius:var(--border-radius);padding:1rem;-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out}:host(.dropping){background-color:var(--drop-background-color)}p{margin:0;padding:0}button{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;border:0px;margin:0;padding:0;background-color:transparent}button:hover{cursor:pointer}button svg{margin-right:0.5rem}label.upload-file{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;cursor:pointer}label.upload-file input{display:none}.video-preview{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.video-preview button{margin:1rem}";
754
709
 
755
710
  let DnnDropzone = class {
756
711
  constructor(hostRef) {
@@ -901,7 +856,27 @@ var CornerType;
901
856
  CornerType[CornerType["sw"] = 3] = "sw";
902
857
  })(CornerType || (CornerType = {}));
903
858
 
904
- const dnnImageCropperCss = ":host{display:block}canvas{display:none}.view{visibility:hidden;opacity:0;height:0;overflow:hidden;transition:all 300ms ease-in-out}.view.visible{visibility:visible;opacity:1;height:initial;overflow:visible}.view .cropper{position:relative;width:100%}.view .cropper img{width:100%;display:block;margin:0 auto}.view .cropper .backdrop{backdrop-filter:saturate(0.5);backdrop-filter:brightness(0.5);position:absolute;left:0;top:0;width:100%;height:100%}.view .cropper .crop{position:absolute;top:0;left:0;width:100%;height:100%;outline:2px dashed white;box-shadow:black 0 0 0px 2px;backdrop-filter:saturate(2);backdrop-filter:brightness(2);cursor:move}.view .cropper .crop>div{width:20px;height:20px;background-color:white;border:2px solid rgba(0, 0, 0, 0.5);position:absolute}.view .cropper .crop>div.nw,.view .cropper .crop>div.ne{top:-17px}.view .cropper .crop>div.ne,.view .cropper .crop>div.se{right:-17px}.view .cropper .crop>div.se,.view .cropper .crop>div.sw{bottom:-17px}.view .cropper .crop>div.sw,.view .cropper .crop>div.nw{left:-17px}.view .cropper .crop>div.nw,.view .cropper .crop>div.se{cursor:nwse-resize}.view .cropper .crop>div.ne,.view .cropper .crop>div.sw{cursor:nesw-resize}dnn-modal{--max-width:512px}";
859
+ function getMovementFromEvent(event, previousTouch) {
860
+ let movementX = 0;
861
+ let movementY = 0;
862
+ if (event instanceof MouseEvent) {
863
+ movementX = event.movementX;
864
+ movementY = event.movementY;
865
+ }
866
+ if (typeof TouchEvent !== "undefined") {
867
+ if (event instanceof TouchEvent) {
868
+ let touch = event.touches[0];
869
+ if (previousTouch != undefined) {
870
+ movementX = touch.pageX - this.previousTouch.pageX;
871
+ movementY = touch.pageY - this.previousTouch.pageY;
872
+ }
873
+ previousTouch = touch;
874
+ }
875
+ }
876
+ return { movementX, movementY };
877
+ }
878
+
879
+ const dnnImageCropperCss = ":host{display:block}canvas{display:none}.view{visibility:hidden;opacity:0;height:0;overflow:hidden;-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out}.view.visible{visibility:visible;opacity:1;height:initial;overflow:visible}.view .cropper{position:relative;width:100%}.view .cropper img{width:100%;display:block;margin:0 auto}.view .cropper .backdrop{-webkit-backdrop-filter:saturate(0.5);backdrop-filter:saturate(0.5);-webkit-backdrop-filter:brightness(0.5);backdrop-filter:brightness(0.5);position:absolute;left:0;top:0;width:100%;height:100%}.view .cropper .crop{position:absolute;top:0;left:0;width:100%;height:100%;outline:2px dashed white;-webkit-box-shadow:black 0 0 0px 2px;box-shadow:black 0 0 0px 2px;-webkit-backdrop-filter:saturate(2);backdrop-filter:saturate(2);-webkit-backdrop-filter:brightness(2);backdrop-filter:brightness(2);cursor:move}.view .cropper .crop>div{width:20px;height:20px;background-color:white;border:2px solid rgba(0, 0, 0, 0.5);position:absolute}.view .cropper .crop>div.nw,.view .cropper .crop>div.ne{top:-17px}.view .cropper .crop>div.ne,.view .cropper .crop>div.se{right:-17px}.view .cropper .crop>div.se,.view .cropper .crop>div.sw{bottom:-17px}.view .cropper .crop>div.sw,.view .cropper .crop>div.nw{left:-17px}.view .cropper .crop>div.nw,.view .cropper .crop>div.se{cursor:nwse-resize}.view .cropper .crop>div.ne,.view .cropper .crop>div.sw{cursor:nesw-resize}dnn-modal{--max-width:512px}";
905
880
 
906
881
  let DnnImageCropper = class {
907
882
  constructor(hostRef) {
@@ -995,7 +970,7 @@ let DnnImageCropper = class {
995
970
  const wantedRatio = this.width / this.height;
996
971
  const cropRect = this.crop.getBoundingClientRect();
997
972
  const imageRect = this.image.getBoundingClientRect();
998
- let { movementX, movementY } = this.getMouvementFromEvent(event);
973
+ let { movementX, movementY } = getMovementFromEvent(event, this.previousTouch);
999
974
  if (Math.abs(movementX) < Math.abs(movementY)) {
1000
975
  orientation = "vertical";
1001
976
  }
@@ -1099,7 +1074,7 @@ let DnnImageCropper = class {
1099
1074
  if (!this.isMouseStillInTarget(ev)) {
1100
1075
  return;
1101
1076
  }
1102
- let { movementX, movementY } = this.getMouvementFromEvent(ev);
1077
+ let { movementX, movementY } = getMovementFromEvent(ev, this.previousTouch);
1103
1078
  let newLeft = this.crop.offsetLeft + movementX;
1104
1079
  let newTop = this.crop.offsetTop + movementY;
1105
1080
  var imageRect = this.image.getBoundingClientRect();
@@ -1121,7 +1096,9 @@ let DnnImageCropper = class {
1121
1096
  };
1122
1097
  }
1123
1098
  componentDidLoad() {
1124
- this.setView("noPictureView");
1099
+ requestAnimationFrame(() => {
1100
+ this.setView("noPictureView");
1101
+ });
1125
1102
  }
1126
1103
  setView(newView) {
1127
1104
  const views = this.host.shadowRoot.querySelectorAll(".view");
@@ -1226,25 +1203,6 @@ let DnnImageCropper = class {
1226
1203
  }
1227
1204
  return { top, left };
1228
1205
  }
1229
- getMouvementFromEvent(event) {
1230
- let movementX = 0;
1231
- let movementY = 0;
1232
- if (event instanceof MouseEvent) {
1233
- movementX = event.movementX;
1234
- movementY = event.movementY;
1235
- }
1236
- if (typeof TouchEvent !== "undefined") {
1237
- if (event instanceof TouchEvent) {
1238
- let touch = event.touches[0];
1239
- if (this.previousTouch != undefined) {
1240
- movementX = touch.pageX - this.previousTouch.pageX;
1241
- movementY = touch.pageY - this.previousTouch.pageY;
1242
- }
1243
- this.previousTouch = touch;
1244
- }
1245
- }
1246
- return { movementX, movementY };
1247
- }
1248
1206
  isMouseStillInTarget(event) {
1249
1207
  var inside = false;
1250
1208
  let mouseX;
@@ -1291,7 +1249,7 @@ let DnnImageCropper = class {
1291
1249
  };
1292
1250
  DnnImageCropper.style = dnnImageCropperCss;
1293
1251
 
1294
- const dnnModalCss = ":host{display:block}:host .overlay{background-color:rgba(0, 0, 0, 0.5);position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(2px);transition:all 300ms ease-in-out;visibility:hidden;opacity:0}:host .overlay .modal{max-width:var(--max-width, 1200px);background-color:white;padding:30px;transform:scale(2);transition:all 300ms ease-in-out;z-index:2;position:relative;margin:10%;max-height:80%;border-radius:var(--dnn-controls-radius, 5px);box-shadow:10px 10px 20px 0 rgba(0, 0, 0, 0.5);display:block}:host .overlay .modal .close{position:absolute;background-color:white;border:2px solid white;border-radius:50%;padding:0;margin:0;top:-12px;right:-12px;outline:none;display:flex;justify-content:center;align-items:center}:host .overlay .modal .close:focus,:host .overlay .modal .close:hover{box-shadow:0 0 2px 2px var(--dnn-color-primary, blue)}:host .overlay .modal .close svg{width:24px;height:24px;color:grey}:host .overlay.visible{visibility:visible;opacity:1}:host .overlay.visible .modal{transform:scale(1);box-shadow:4px 4px 10px 0px rgba(0, 0, 0, 0.5);display:block}";
1252
+ const dnnModalCss = ":host{display:block}:host .overlay{background-color:rgba(0, 0, 0, 0.5);position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out;visibility:hidden;opacity:0}:host .overlay .modal{max-width:var(--max-width, 1200px);background-color:white;padding:30px;-webkit-transform:scale(2);transform:scale(2);-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out;z-index:2;position:relative;margin:10%;max-height:80%;border-radius:var(--dnn-controls-radius, 5px);-webkit-box-shadow:10px 10px 20px 0 rgba(0, 0, 0, 0.5);box-shadow:10px 10px 20px 0 rgba(0, 0, 0, 0.5);display:block}:host .overlay .modal .close{position:absolute;background-color:white;border:2px solid white;border-radius:50%;padding:0;margin:0;top:-12px;right:-12px;outline:none;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}:host .overlay .modal .close:focus,:host .overlay .modal .close:hover{-webkit-box-shadow:0 0 2px 2px var(--dnn-color-primary, blue);box-shadow:0 0 2px 2px var(--dnn-color-primary, blue)}:host .overlay .modal .close svg{width:24px;height:24px;color:grey}:host .overlay.visible{visibility:visible;opacity:1}:host .overlay.visible .modal{-webkit-transform:scale(1);transform:scale(1);-webkit-box-shadow:4px 4px 10px 0px rgba(0, 0, 0, 0.5);box-shadow:4px 4px 10px 0px rgba(0, 0, 0, 0.5);display:block}";
1295
1253
 
1296
1254
  let DnnModal = class {
1297
1255
  constructor(hostRef) {
@@ -1344,7 +1302,7 @@ let DnnModal = class {
1344
1302
  };
1345
1303
  DnnModal.style = dnnModalCss;
1346
1304
 
1347
- const dnnSearchboxCss = ":host{position:relative;display:flex;justify-content:space-between;--background-color:transparent;--color:#333;--border-size:1px;--border-color:grey;--border-active-color:black;--border-radius:var(--dnn-controls-radius, 5px);--padding:var(--dnn-controls-padding, 5px);--focus-color:var(--dnn-color-primary, blue)}:host input{width:100%;border:var(--border-size) solid var(--border-color);outline:none;border-radius:var(--border-radius);padding:var(--padding);padding-right:32px;transition:all 300ms ease-in-out}:host input:focus,:host input:hover{outline:none;box-shadow:0 0 2px 2px var(--focus-color)}:host svg{position:absolute;top:0;right:0;height:100%;transform:scale(0.7);fill:var(--color);outline:var(--color);color:var(--color);transition:all 300ms ease-in-out}:host button{background:transparent;border:0;margin:0;padding:0}:host button:focus svg,:host button:hover svg{fill:var(--focus-color);outline:var(--focus-color);color:var(--focus-color)}";
1305
+ const dnnSearchboxCss = ":host{position:relative;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;--background-color:transparent;--color:#333;--border-size:1px;--border-color:grey;--border-active-color:black;--border-radius:var(--dnn-controls-radius, 5px);--padding:var(--dnn-controls-padding, 5px);--focus-color:var(--dnn-color-primary, blue)}:host input{width:100%;border:var(--border-size) solid var(--border-color);outline:none;border-radius:var(--border-radius);padding:var(--padding);padding-right:32px;-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out}:host input:focus,:host input:hover{outline:none;-webkit-box-shadow:0 0 2px 2px var(--focus-color);box-shadow:0 0 2px 2px var(--focus-color)}:host svg{position:absolute;top:0;right:0;height:100%;-webkit-transform:scale(0.7);transform:scale(0.7);fill:var(--color);outline:var(--color);color:var(--color);-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out}:host button{background:transparent;border:0;margin:0;padding:0}:host button:focus svg,:host button:hover svg{fill:var(--focus-color);outline:var(--focus-color);color:var(--focus-color)}";
1348
1306
 
1349
1307
  var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1350
1308
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1454,7 +1412,7 @@ let DnnTab = class {
1454
1412
  };
1455
1413
  DnnTab.style = dnnTabCss;
1456
1414
 
1457
- const dnnTabsCss = ":host{display:block;--color-background:var(--dnn-color-secondary-dark, lightgray);--color-text:var(--dnn-color-secondary-contrast, #333);--color-visible:var(--dnn-color-primary, #3792ED);--color-visible-text:var(--dnn-color-primary-contrast, #FFF);--color-focus:var(--dnn-color-primary, #3792ed)}.tabTitles{display:flex;background-color:var(--color-background);color:var(--color-text)}.tabTitles button{padding:0.5rem 1rem;border:0;margin:0;background-color:transparent}.tabTitles button.visible{background-color:var(--color-visible);color:var(--color-bisible-text)}.tabTitles button:focus,.tabTitles button:hover{outline:none;box-shadow:0 0 2px 2px var(--color-focus)}.currentTab{border:1px solid var(--color-background);padding:1rem}";
1415
+ const dnnTabsCss = ":host{display:block;--color-background:var(--dnn-color-secondary-dark, lightgray);--color-text:var(--dnn-color-secondary-contrast, #333);--color-visible:var(--dnn-color-primary, #3792ED);--color-visible-text:var(--dnn-color-primary-contrast, #FFF);--color-focus:var(--dnn-color-primary, #3792ed)}.tabTitles{display:-ms-flexbox;display:flex;background-color:var(--color-background);color:var(--color-text)}.tabTitles button{padding:0.5rem 1rem;border:0;margin:0;background-color:transparent}.tabTitles button.visible{background-color:var(--color-visible);color:var(--color-bisible-text)}.tabTitles button:focus,.tabTitles button:hover{outline:none;-webkit-box-shadow:0 0 2px 2px var(--color-focus);box-shadow:0 0 2px 2px var(--color-focus)}.currentTab{border:1px solid var(--color-background);padding:1rem}";
1458
1416
 
1459
1417
  let DnnTabs = class {
1460
1418
  constructor(hostRef) {
@@ -1463,8 +1421,10 @@ let DnnTabs = class {
1463
1421
  this.selectedTabTitle = "";
1464
1422
  }
1465
1423
  componentDidLoad() {
1466
- this.updateTitles();
1467
- this.showFirstTab();
1424
+ requestAnimationFrame(() => {
1425
+ this.updateTitles();
1426
+ this.showFirstTab();
1427
+ });
1468
1428
  }
1469
1429
  getTabs() {
1470
1430
  return this.component.shadowRoot.querySelector("slot").assignedElements();
@@ -1495,7 +1455,7 @@ let DnnTabs = class {
1495
1455
  };
1496
1456
  DnnTabs.style = dnnTabsCss;
1497
1457
 
1498
- const dnnToggleCss = ":host{display:inline-block;outline:none;cursor:pointer}button{height:1.5em;width:2.5em;outline:none;background-color:var(--background, #888);border:0;border-radius:var(--border-radius, var(--dnn-controls-radius, 0.75em));padding:0.1em;position:relative;margin:0;transition:background-color 300ms ease-in-out;position:relative;cursor:pointer}button:hover,button:focus{box-shadow:0 0 2px 2px var(--dnn-color-primary)}button.checked{background-color:var(--background-checked, var(--dnn-color-primary, blue))}button.checked .handle{left:calc(1em + 4px)}button:disabled{opacity:0.5;cursor:not-allowed;box-shadow:none}button .handle{transition:all 300ms ease-in-out;background-color:white;width:1em;height:1em;border-radius:var(--dnn-controls-radius, 50%);position:absolute;top:calc(50% - 0.5em);left:2px}";
1458
+ const dnnToggleCss = ":host{display:inline-block;outline:none;cursor:pointer}button{height:1.5em;width:2.5em;outline:none;background-color:var(--background, #888);border:0;border-radius:var(--border-radius, var(--dnn-controls-radius, 0.75em));padding:0.1em;position:relative;margin:0;-webkit-transition:background-color 300ms ease-in-out;transition:background-color 300ms ease-in-out;position:relative;cursor:pointer}button:hover,button:focus{-webkit-box-shadow:0 0 2px 2px var(--dnn-color-primary);box-shadow:0 0 2px 2px var(--dnn-color-primary)}button.checked{background-color:var(--background-checked, var(--dnn-color-primary, blue))}button.checked .handle{left:calc(1em + 4px)}button:disabled{opacity:0.5;cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}button .handle{-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out;background-color:white;width:1em;height:1em;border-radius:var(--dnn-controls-radius, 50%);position:absolute;top:calc(50% - 0.5em);left:2px}";
1499
1459
 
1500
1460
  let DnnToggle = class {
1501
1461
  constructor(hostRef) {
@@ -1523,45 +1483,295 @@ let DnnToggle = class {
1523
1483
  };
1524
1484
  DnnToggle.style = dnnToggleCss;
1525
1485
 
1526
- const dnnTreeviewItemCss = ":host{display:flex;overflow:hidden}.expander{width:24px;height:24px}.expander button{transition:all 150ms ease-in-out;background-color:transparent;border:none;padding:0;margin:0;outline:none;height:1em;display:flex;justify-content:center;align-items:center;cursor:pointer;position:relative;top:2px}.expander button svg :first-child{transition:all 150ms ease-in-out;fill:white;stroke:black}.expander.expanded button{transform:rotate(45deg)}.expander.expanded button svg :first-child{fill:black;stroke:black}div.item .item-slot{display:flex;align-items:center;gap:0.25em}div.item div.children{overflow:hidden;height:0;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}";
1527
1487
 
1528
1488
  let DnnTreeviewItem = class {
1529
1489
  constructor(hostRef) {
1530
1490
  index.registerInstance(this, hostRef);
1531
- /** 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. */
1532
1494
  this.expanded = false;
1495
+ /** Manages state for whether or not item has children. */
1533
1496
  this.hasChildren = false;
1534
1497
  }
1535
- componentDidLoad() {
1536
- const children = this.childrenElement.children[0];
1537
- const count = children.assignedElements().length;
1538
- if (count > 0) {
1539
- this.hasChildren = true;
1540
- }
1541
- if (this.expanded) {
1498
+ /** Watch expanded Prop */
1499
+ watchExpanded(expanded) {
1500
+ if (expanded) {
1542
1501
  this.expander.classList.add("expanded");
1543
- this.collapsible.expanded = false;
1544
- setTimeout(() => {
1545
- this.collapsible.expanded = true;
1546
- }, 300);
1502
+ this.collapsible.expanded = true;
1503
+ return;
1547
1504
  }
1505
+ this.expander.classList.remove("expanded");
1506
+ this.collapsible.expanded = false;
1507
+ }
1508
+ componentDidLoad() {
1509
+ requestAnimationFrame(() => {
1510
+ const child = this.childElement.children[0];
1511
+ const count = child.assignedElements().length;
1512
+ if (count > 0) {
1513
+ this.hasChildren = true;
1514
+ }
1515
+ if (this.expanded) {
1516
+ this.expander.classList.add("expanded");
1517
+ this.collapsible.expanded = false;
1518
+ setTimeout(() => {
1519
+ this.collapsible.expanded = true;
1520
+ }, 300);
1521
+ }
1522
+ });
1548
1523
  }
1549
1524
  toggleCollapse() {
1550
1525
  this.expanded = !this.expanded;
1551
1526
  if (this.expanded) {
1552
1527
  this.expander.classList.add("expanded");
1528
+ this.userExpanded.emit();
1553
1529
  return;
1554
1530
  }
1555
1531
  this.expander.classList.remove("expanded");
1532
+ this.userCollapsed.emit();
1556
1533
  }
1557
1534
  render() {
1558
1535
  return (index.h(index.Host, null, index.h("div", { class: "expander", ref: el => this.expander = el }, this.hasChildren &&
1559
- 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" }))))));
1560
1537
  }
1561
1538
  get el() { return index.getElement(this); }
1539
+ static get watchers() { return {
1540
+ "expanded": ["watchExpanded"]
1541
+ }; }
1562
1542
  };
1563
1543
  DnnTreeviewItem.style = dnnTreeviewItemCss;
1564
1544
 
1545
+ const dnnVerticalOverflowMenuCss = ":host{display:block;--background-color:var(--dnn-color-primary-contrast, white);--foreground-color:var(--dnn-color-primary, blue);--text-color:#222}.menu-container{display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:center;align-items:center;background-color:var(--background-color);color:var(--text-color)}.menu-container .menu{margin:0.5em;display:-ms-flexbox;display:flex;gap:1em;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:center;align-items:center;white-space:nowrap;width:100%}.menu-container .overflow{margin-left:auto;position:relative}.menu-container .overflow button{cursor:pointer;padding:0;margin:0;background-color:transparent;border:none}.menu-container .overflow button svg{fill:var(--foreground-color)}.menu-container .overflow .dropdown{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;white-space:nowrap;right:0;-webkit-transition:100ms ease-in-out;transition:100ms ease-in-out;height:0;overflow:hidden}.menu-container .overflow .dropdown.visible{padding:1em;gap:0.5em;background-color:var(--background-color);-webkit-box-shadow:2px 2px 4px rgba(0, 0, 0, 0.7);box-shadow:2px 2px 4px rgba(0, 0, 0, 0.7)}";
1546
+
1547
+ let DnnVerticalOverflowMenu = class {
1548
+ constructor(hostRef) {
1549
+ index.registerInstance(this, hostRef);
1550
+ this.showDropdownButton = false;
1551
+ this.showDropdownMenu = false;
1552
+ this.previousMenuWidth = 0;
1553
+ }
1554
+ componentDidRender() {
1555
+ requestAnimationFrame(() => {
1556
+ this.moveItemsToDropDownIfNecessery();
1557
+ this.resizeObserver = new ResizeObserver(entries => {
1558
+ for (let entry of entries) {
1559
+ if (entry.contentRect.width < this.previousMenuWidth) {
1560
+ this.moveItemsToDropDownIfNecessery();
1561
+ }
1562
+ if (this.previousMenuWidth > 0 && entry.contentRect.width > this.previousMenuWidth) {
1563
+ this.moveItemsToMenuIfPossible();
1564
+ }
1565
+ this.previousMenuWidth = entry.contentRect.width;
1566
+ }
1567
+ });
1568
+ this.resizeObserver.observe(this.element);
1569
+ });
1570
+ }
1571
+ moveItemsToDropDownIfNecessery() {
1572
+ const menuItems = Array.from(this.menu.querySelector("slot").assignedElements());
1573
+ const availableWidth = this.menu.getBoundingClientRect().width;
1574
+ let neededWidth = parseFloat(getComputedStyle(this.element).fontSize) * 2;
1575
+ menuItems.forEach(item => neededWidth += this.getFullWidth(item));
1576
+ neededWidth += (menuItems.length - 1) * parseFloat(getComputedStyle(this.element).fontSize);
1577
+ if (neededWidth > availableWidth) {
1578
+ this.showDropdownButton = true;
1579
+ var lastItem = menuItems[menuItems.length - 1];
1580
+ if (this.dropdown == undefined) {
1581
+ return;
1582
+ }
1583
+ lastItem.slot = "dropdown";
1584
+ this.moveItemsToDropDownIfNecessery();
1585
+ }
1586
+ }
1587
+ moveItemsToMenuIfPossible() {
1588
+ if (this.dropdown == undefined || !this.dropdown.hasChildNodes()) {
1589
+ return;
1590
+ }
1591
+ const menuItems = Array.from(this.menu.querySelector("slot").assignedElements());
1592
+ const availableWidth = this.menu.getBoundingClientRect().width;
1593
+ let neededWidth = parseFloat(getComputedStyle(this.element).fontSize) * 2;
1594
+ neededWidth += (menuItems.length - 1) * parseFloat(getComputedStyle(this.element).fontSize);
1595
+ menuItems.forEach(item => neededWidth += this.getFullWidth(item));
1596
+ const firstItem = this.dropdown.querySelector("slot").assignedElements()[0];
1597
+ if (firstItem != undefined) {
1598
+ neededWidth += this.getFullWidth(firstItem);
1599
+ }
1600
+ if (neededWidth < availableWidth) {
1601
+ if (firstItem != undefined) {
1602
+ firstItem.slot = "";
1603
+ }
1604
+ if (firstItem == undefined) {
1605
+ this.dropdown.classList.remove("visible");
1606
+ this.showDropdownMenu = false;
1607
+ this.showDropdownButton = false;
1608
+ }
1609
+ }
1610
+ }
1611
+ getFullWidth(item) {
1612
+ var width = item.getBoundingClientRect().width;
1613
+ var styles = getComputedStyle(item);
1614
+ width += parseFloat(styles.marginLeft);
1615
+ width += parseFloat(styles.marginRight);
1616
+ width += parseFloat(styles.paddingLeft);
1617
+ width += parseFloat(styles.paddingRight);
1618
+ return width;
1619
+ }
1620
+ toggleOverflowMenu() {
1621
+ this.showDropdownMenu = !this.showDropdownMenu;
1622
+ if (this.showDropdownMenu) {
1623
+ this.dropdown.classList.add("visible");
1624
+ let contentHeight = 0;
1625
+ const items = Array.from(this.dropdown.querySelector("slot").assignedElements());
1626
+ items.forEach(item => contentHeight += item.getBoundingClientRect().height);
1627
+ var emHeight = parseFloat(getComputedStyle(this.dropdown).fontSize) * 0.5;
1628
+ var additionalHeight = emHeight * (this.dropdown.children.length - 1);
1629
+ contentHeight += additionalHeight;
1630
+ this.dropdown.style.height = `${contentHeight}px`;
1631
+ const dismissMenu = (e) => {
1632
+ const buttonRect = this.button.getBoundingClientRect();
1633
+ if (e.clientX < buttonRect.left ||
1634
+ e.clientX > buttonRect.right ||
1635
+ e.clientY < buttonRect.top ||
1636
+ e.clientY > buttonRect.bottom) {
1637
+ this.toggleOverflowMenu();
1638
+ }
1639
+ document.removeEventListener("click", dismissMenu);
1640
+ };
1641
+ setTimeout(() => {
1642
+ document.addEventListener("click", dismissMenu, false);
1643
+ }, 100);
1644
+ }
1645
+ else {
1646
+ this.dropdown.classList.remove("visible");
1647
+ this.dropdown.style.height = "0px";
1648
+ }
1649
+ }
1650
+ render() {
1651
+ return (index.h(index.Host, null, index.h("div", { class: "menu-container" }, index.h("div", { class: "menu", ref: el => this.menu = el }, index.h("slot", null)), this.showDropdownButton &&
1652
+ index.h("div", { class: "overflow" }, index.h("button", { ref: el => this.button = el, class: "icon", onClick: () => this.toggleOverflowMenu() }, 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: "M0 0h24v24H0z", fill: "none" }), index.h("path", { d: "M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }))), index.h("div", { class: "dropdown", ref: el => this.dropdown = el }, index.h("slot", { name: "dropdown" }))))));
1653
+ }
1654
+ get element() { return index.getElement(this); }
1655
+ };
1656
+ DnnVerticalOverflowMenu.style = dnnVerticalOverflowMenuCss;
1657
+
1658
+ const dnnVerticalSplitviewCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;margin:0 auto;position:relative;--left-pane-background-color:transparent;--right-pane-background-color:transparent}button{border:none;margin:0;padding:0;cursor:ew-resize;position:absolute;height:100%;background-color:transparent}button.transition{-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out}.pane{overflow-y:auto}.pane.transition{-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out}.pane.left{background-color:var(--left-pane-background-color)}.pane.right{background-color:var(--right-pane-background-color);-ms-flex-positive:1;flex-grow:1}";
1659
+
1660
+ let DnnVerticalSplitview = class {
1661
+ constructor(hostRef) {
1662
+ index.registerInstance(this, hostRef);
1663
+ this.widthChanged = index.createEvent(this, "widthChanged", 7);
1664
+ /** The width of the splitter area. */
1665
+ this.splitterWidth = 16;
1666
+ /** The percentage position of the splitter in the container. */
1667
+ this.splitWidthPercentage = 30;
1668
+ this.leftWidth = 0;
1669
+ this.rightWidth = 0;
1670
+ }
1671
+ /** Sets the width percentage of the divider */
1672
+ async setSplitWidthPercentage(newWidth) {
1673
+ const panes = this.element.shadowRoot.querySelectorAll(".pane");
1674
+ requestAnimationFrame(() => {
1675
+ panes.forEach(pane => pane.classList.add("transition"));
1676
+ this.splitter.classList.add("transition");
1677
+ requestAnimationFrame(() => {
1678
+ const fullWidth = this.element.getBoundingClientRect().width;
1679
+ let newLeft = fullWidth * newWidth / 100;
1680
+ if (newLeft < 0) {
1681
+ newLeft = 0;
1682
+ }
1683
+ if (newLeft > fullWidth) {
1684
+ newLeft = fullWidth;
1685
+ }
1686
+ this.leftWidth = newLeft;
1687
+ this.rightWidth = fullWidth - newLeft;
1688
+ setTimeout(() => {
1689
+ panes.forEach(pane => pane.classList.remove("transition"));
1690
+ this.splitter.classList.remove("transition");
1691
+ }, 300);
1692
+ });
1693
+ });
1694
+ }
1695
+ /** Gets the current divider position percentage. */
1696
+ async getSplitWidthPercentage() {
1697
+ const fullWidth = this.element.getBoundingClientRect().width;
1698
+ return this.leftWidth / fullWidth;
1699
+ }
1700
+ componentDidLoad() {
1701
+ requestAnimationFrame(() => {
1702
+ const fullWidth = this.element.getBoundingClientRect().width;
1703
+ this.leftWidth = fullWidth * this.splitWidthPercentage / 100;
1704
+ this.rightWidth = fullWidth - this.leftWidth;
1705
+ this.widthChanged.emit(this.splitWidthPercentage);
1706
+ });
1707
+ }
1708
+ handleMouseDown(event) {
1709
+ event.preventDefault();
1710
+ const handleDrag = (ev) => {
1711
+ let { movementX } = getMovementFromEvent(ev, this.previousTouch);
1712
+ let fullWidth = this.element.getBoundingClientRect().width;
1713
+ let newLeft = this.leftWidth + movementX;
1714
+ if (newLeft < 0) {
1715
+ newLeft = 0;
1716
+ }
1717
+ if (newLeft > fullWidth) {
1718
+ newLeft = fullWidth;
1719
+ }
1720
+ this.leftWidth = newLeft;
1721
+ this.rightWidth = fullWidth - newLeft;
1722
+ };
1723
+ const handleDragFinished = () => {
1724
+ document.removeEventListener("mousemove", handleDrag);
1725
+ document.removeEventListener("touchmove", handleDrag);
1726
+ const fullWidth = this.element.getBoundingClientRect().width;
1727
+ const newPercentage = this.leftWidth / fullWidth * 100;
1728
+ this.widthChanged.emit(newPercentage);
1729
+ };
1730
+ document.addEventListener("mouseup", handleDragFinished);
1731
+ document.addEventListener("touchend", handleDragFinished);
1732
+ document.addEventListener("mousemove", handleDrag);
1733
+ document.addEventListener("touchmove", handleDrag);
1734
+ }
1735
+ handleKeyDown(e) {
1736
+ let movementX = 0;
1737
+ switch (e.key) {
1738
+ case "ArrowLeft":
1739
+ movementX = -10;
1740
+ break;
1741
+ case "ArrowRight":
1742
+ movementX = 10;
1743
+ break;
1744
+ default:
1745
+ return;
1746
+ }
1747
+ if (e.shiftKey) {
1748
+ movementX = movementX * 10;
1749
+ }
1750
+ const fullWidth = this.element.getBoundingClientRect().width;
1751
+ let newLeft = this.leftWidth + movementX;
1752
+ if (newLeft < 0) {
1753
+ newLeft = 0;
1754
+ }
1755
+ if (newLeft > fullWidth) {
1756
+ newLeft = fullWidth;
1757
+ }
1758
+ this.leftWidth = newLeft;
1759
+ this.rightWidth = fullWidth - this.leftWidth;
1760
+ }
1761
+ render() {
1762
+ return (index.h(index.Host, null, index.h("div", { class: "left pane", style: {
1763
+ width: `${this.leftWidth}px`,
1764
+ } }, index.h("slot", { name: "left" })), index.h("button", { onMouseDown: e => this.handleMouseDown(e), onTouchStart: e => this.handleMouseDown(e), onKeyDown: e => this.handleKeyDown(e), ref: el => this.splitter = el, style: {
1765
+ minWidth: `${this.splitterWidth.toString()}px`,
1766
+ left: `${this.leftWidth - 2}px`,
1767
+ } }, index.h("slot", null)), index.h("div", { class: "right pane", style: {
1768
+ width: `${this.rightWidth}px`,
1769
+ } }, index.h("slot", { name: "right" }))));
1770
+ }
1771
+ get element() { return index.getElement(this); }
1772
+ };
1773
+ DnnVerticalSplitview.style = dnnVerticalSplitviewCss;
1774
+
1565
1775
  exports.dnn_button = DnnButton;
1566
1776
  exports.dnn_checkbox = DnnCheckbox;
1567
1777
  exports.dnn_chevron = DnnChevron;
@@ -1576,5 +1786,7 @@ exports.dnn_tab = DnnTab;
1576
1786
  exports.dnn_tabs = DnnTabs;
1577
1787
  exports.dnn_toggle = DnnToggle;
1578
1788
  exports.dnn_treeview_item = DnnTreeviewItem;
1789
+ exports.dnn_vertical_overflow_menu = DnnVerticalOverflowMenu;
1790
+ exports.dnn_vertical_splitview = DnnVerticalSplitview;
1579
1791
 
1580
- //# sourceMappingURL=dnn-button_14.cjs.entry.js.map
1792
+ //# sourceMappingURL=dnn-button_16.cjs.entry.js.map