@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
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-f79d9e82.js';
1
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-cdbad319.js';
2
2
  import { D as Debounce } from './debounce-06f55268.js';
3
3
 
4
- 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}";
4
+ 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}";
5
5
 
6
6
  let DnnButton = class {
7
7
  constructor(hostRef) {
@@ -80,7 +80,7 @@ let DnnButton = class {
80
80
  };
81
81
  DnnButton.style = dnnButtonCss;
82
82
 
83
- 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)}";
83
+ 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)}";
84
84
 
85
85
  let DnnCheckbox = class {
86
86
  constructor(hostRef) {
@@ -129,7 +129,7 @@ let DnnCheckbox = class {
129
129
  };
130
130
  DnnCheckbox.style = dnnCheckboxCss;
131
131
 
132
- 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)}";
132
+ 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)}";
133
133
 
134
134
  let DnnChevron = class {
135
135
  constructor(hostRef) {
@@ -154,18 +154,8 @@ let DnnChevron = class {
154
154
  };
155
155
  DnnChevron.style = dnnChevronCss;
156
156
 
157
- const dnnCollapsibleCss = ":host{display:block}:host #container{height:0;overflow:hidden;transition:height 300ms ease-in-out}";
157
+ 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}";
158
158
 
159
- var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
160
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
161
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
162
- r = Reflect.decorate(decorators, target, key, desc);
163
- else
164
- for (var i = decorators.length - 1; i >= 0; i--)
165
- if (d = decorators[i])
166
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
167
- return c > 3 && r && Object.defineProperty(target, key, r), r;
168
- };
169
159
  let DnnCollapsible = class {
170
160
  constructor(hostRef) {
171
161
  registerInstance(this, hostRef);
@@ -174,86 +164,51 @@ let DnnCollapsible = class {
174
164
  this.expanded = false;
175
165
  /** Defines the transition time in ms, defaults to 100ms */
176
166
  this.transitionDuration = 150;
177
- this.animating = false;
178
167
  }
179
- handleExpandedChanged(newValue) {
180
- this.animating = true;
168
+ handleHeightChanged() {
181
169
  requestAnimationFrame(() => {
182
- const container = this.el.shadowRoot.querySelector("#container");
183
- if (newValue) {
184
- container.style.height = container.scrollHeight + "px";
185
- }
186
- else {
187
- container.style.height = "0px";
188
- }
189
- });
190
- requestAnimationFrame(() => {
191
- this.animating = false;
192
- this.dnnCollapsibleHeightChanged.emit();
170
+ this.updateSize();
193
171
  });
194
172
  }
195
- /** Updates the component height, use to update after a slot content changes. */
173
+ /**
174
+ * Updates the component height, use to update after a slot content changes.
175
+ */
196
176
  async updateSize() {
197
- this.updateComponentSize();
198
- }
199
- updateComponentSize() {
200
177
  if (this.expanded) {
201
- this.animating = true;
202
178
  requestAnimationFrame(() => {
203
- const container = this.el.shadowRoot.querySelector("#container");
204
- let newHeight = 0;
205
- container.querySelector('slot').assignedElements().forEach(node => {
206
- newHeight += node.scrollHeight;
207
- });
208
- container.style.height = newHeight + "px";
179
+ this.container.style.maxHeight = `${this.container.scrollHeight}px`;
209
180
  });
181
+ setTimeout(() => {
182
+ this.container.style.maxHeight = "none";
183
+ }, this.transitionDuration);
210
184
  }
211
185
  }
212
- handleOtherCollapsibleHeightChanged() {
186
+ handledExpandedChanged(expanded) {
187
+ if (expanded) {
188
+ this.updateSize();
189
+ }
190
+ else {
191
+ requestAnimationFrame(() => {
192
+ this.container.style.maxHeight = `${this.container.scrollHeight}px`;
193
+ requestAnimationFrame(() => {
194
+ this.container.style.maxHeight = "0px";
195
+ });
196
+ });
197
+ }
213
198
  setTimeout(() => {
214
- this.updateComponentSize();
215
- }, this.transitionDuration);
216
- }
217
- handleMutation(mutationList) {
218
- mutationList.forEach(mutation => {
219
199
  requestAnimationFrame(() => {
220
- mutation.target.closest('dnn-collapsible').updateSize();
200
+ this.dnnCollapsibleHeightChanged.emit();
221
201
  });
222
- });
223
- }
224
- componentWillLoad() {
225
- this.mutationObserver = new MutationObserver((mutationList) => {
226
- this.handleMutation(mutationList);
227
- });
228
- }
229
- componentDidLoad() {
230
- const container = this.el.shadowRoot.querySelector('#container');
231
- container.style.transitionDuration = this.transitionDuration + 'ms';
232
- // Monitor for content changes and update own height
233
- const childNodes = [this.el];
234
- childNodes.forEach(element => {
235
- this.mutationObserver.observe(element, { attributes: true, characterData: true, childList: true, subtree: true });
236
- });
237
- const slot = this.el.shadowRoot.querySelector('slot');
238
- slot.addEventListener("slotchange", () => {
239
- this.updateSize();
240
- });
241
- }
242
- disconnectedCallback() {
243
- this.mutationObserver.disconnect();
202
+ }, this.transitionDuration);
244
203
  }
245
- /*eslint-enable @stencil/own-methods-must-be-private */
246
204
  render() {
247
- return (h(Host, null, h("div", { id: "container" }, h("slot", null))));
205
+ return (h(Host, null, h("div", { id: "container", class: this.expanded && "expanded", ref: el => this.container = el }, h("slot", null))));
248
206
  }
249
207
  get el() { return getElement(this); }
250
208
  static get watchers() { return {
251
- "expanded": ["handleExpandedChanged"]
209
+ "expanded": ["handledExpandedChanged"]
252
210
  }; }
253
211
  };
254
- __decorate$2([
255
- Debounce()
256
- ], DnnCollapsible.prototype, "updateSize", null);
257
212
  DnnCollapsible.style = dnnCollapsibleCss;
258
213
 
259
214
  /** Color utility class with hsl and rgb converters
@@ -447,7 +402,7 @@ class ColorInfo {
447
402
  }
448
403
  }
449
404
 
450
- 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}";
405
+ 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}";
451
406
 
452
407
  /** Reusable DNN UI component to pick a color
453
408
  * @copyright Copyright (c) .NET Foundation. All rights reserved.
@@ -746,7 +701,7 @@ __decorate$1([
746
701
  ], DnnColorPicker.prototype, "colorChangedHandler", null);
747
702
  DnnColorPicker.style = dnnColorPickerCss;
748
703
 
749
- 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}";
704
+ 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}";
750
705
 
751
706
  let DnnDropzone = class {
752
707
  constructor(hostRef) {
@@ -897,7 +852,27 @@ var CornerType;
897
852
  CornerType[CornerType["sw"] = 3] = "sw";
898
853
  })(CornerType || (CornerType = {}));
899
854
 
900
- 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}";
855
+ function getMovementFromEvent(event, previousTouch) {
856
+ let movementX = 0;
857
+ let movementY = 0;
858
+ if (event instanceof MouseEvent) {
859
+ movementX = event.movementX;
860
+ movementY = event.movementY;
861
+ }
862
+ if (typeof TouchEvent !== "undefined") {
863
+ if (event instanceof TouchEvent) {
864
+ let touch = event.touches[0];
865
+ if (previousTouch != undefined) {
866
+ movementX = touch.pageX - this.previousTouch.pageX;
867
+ movementY = touch.pageY - this.previousTouch.pageY;
868
+ }
869
+ previousTouch = touch;
870
+ }
871
+ }
872
+ return { movementX, movementY };
873
+ }
874
+
875
+ 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}";
901
876
 
902
877
  let DnnImageCropper = class {
903
878
  constructor(hostRef) {
@@ -991,7 +966,7 @@ let DnnImageCropper = class {
991
966
  const wantedRatio = this.width / this.height;
992
967
  const cropRect = this.crop.getBoundingClientRect();
993
968
  const imageRect = this.image.getBoundingClientRect();
994
- let { movementX, movementY } = this.getMouvementFromEvent(event);
969
+ let { movementX, movementY } = getMovementFromEvent(event, this.previousTouch);
995
970
  if (Math.abs(movementX) < Math.abs(movementY)) {
996
971
  orientation = "vertical";
997
972
  }
@@ -1095,7 +1070,7 @@ let DnnImageCropper = class {
1095
1070
  if (!this.isMouseStillInTarget(ev)) {
1096
1071
  return;
1097
1072
  }
1098
- let { movementX, movementY } = this.getMouvementFromEvent(ev);
1073
+ let { movementX, movementY } = getMovementFromEvent(ev, this.previousTouch);
1099
1074
  let newLeft = this.crop.offsetLeft + movementX;
1100
1075
  let newTop = this.crop.offsetTop + movementY;
1101
1076
  var imageRect = this.image.getBoundingClientRect();
@@ -1117,7 +1092,9 @@ let DnnImageCropper = class {
1117
1092
  };
1118
1093
  }
1119
1094
  componentDidLoad() {
1120
- this.setView("noPictureView");
1095
+ requestAnimationFrame(() => {
1096
+ this.setView("noPictureView");
1097
+ });
1121
1098
  }
1122
1099
  setView(newView) {
1123
1100
  const views = this.host.shadowRoot.querySelectorAll(".view");
@@ -1222,25 +1199,6 @@ let DnnImageCropper = class {
1222
1199
  }
1223
1200
  return { top, left };
1224
1201
  }
1225
- getMouvementFromEvent(event) {
1226
- let movementX = 0;
1227
- let movementY = 0;
1228
- if (event instanceof MouseEvent) {
1229
- movementX = event.movementX;
1230
- movementY = event.movementY;
1231
- }
1232
- if (typeof TouchEvent !== "undefined") {
1233
- if (event instanceof TouchEvent) {
1234
- let touch = event.touches[0];
1235
- if (this.previousTouch != undefined) {
1236
- movementX = touch.pageX - this.previousTouch.pageX;
1237
- movementY = touch.pageY - this.previousTouch.pageY;
1238
- }
1239
- this.previousTouch = touch;
1240
- }
1241
- }
1242
- return { movementX, movementY };
1243
- }
1244
1202
  isMouseStillInTarget(event) {
1245
1203
  var inside = false;
1246
1204
  let mouseX;
@@ -1287,7 +1245,7 @@ let DnnImageCropper = class {
1287
1245
  };
1288
1246
  DnnImageCropper.style = dnnImageCropperCss;
1289
1247
 
1290
- 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}";
1248
+ 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}";
1291
1249
 
1292
1250
  let DnnModal = class {
1293
1251
  constructor(hostRef) {
@@ -1340,7 +1298,7 @@ let DnnModal = class {
1340
1298
  };
1341
1299
  DnnModal.style = dnnModalCss;
1342
1300
 
1343
- 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)}";
1301
+ 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)}";
1344
1302
 
1345
1303
  var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1346
1304
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1450,7 +1408,7 @@ let DnnTab = class {
1450
1408
  };
1451
1409
  DnnTab.style = dnnTabCss;
1452
1410
 
1453
- 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}";
1411
+ 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}";
1454
1412
 
1455
1413
  let DnnTabs = class {
1456
1414
  constructor(hostRef) {
@@ -1459,8 +1417,10 @@ let DnnTabs = class {
1459
1417
  this.selectedTabTitle = "";
1460
1418
  }
1461
1419
  componentDidLoad() {
1462
- this.updateTitles();
1463
- this.showFirstTab();
1420
+ requestAnimationFrame(() => {
1421
+ this.updateTitles();
1422
+ this.showFirstTab();
1423
+ });
1464
1424
  }
1465
1425
  getTabs() {
1466
1426
  return this.component.shadowRoot.querySelector("slot").assignedElements();
@@ -1491,7 +1451,7 @@ let DnnTabs = class {
1491
1451
  };
1492
1452
  DnnTabs.style = dnnTabsCss;
1493
1453
 
1494
- 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}";
1454
+ 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}";
1495
1455
 
1496
1456
  let DnnToggle = class {
1497
1457
  constructor(hostRef) {
@@ -1519,45 +1479,295 @@ let DnnToggle = class {
1519
1479
  };
1520
1480
  DnnToggle.style = dnnToggleCss;
1521
1481
 
1522
- 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}";
1482
+ 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}";
1523
1483
 
1524
1484
  let DnnTreeviewItem = class {
1525
1485
  constructor(hostRef) {
1526
1486
  registerInstance(this, hostRef);
1527
- /** Defines if the current node is expanded */
1487
+ this.userExpanded = createEvent(this, "userExpanded", 3);
1488
+ this.userCollapsed = createEvent(this, "userCollapsed", 3);
1489
+ /** Defines if the current node is expanded. */
1528
1490
  this.expanded = false;
1491
+ /** Manages state for whether or not item has children. */
1529
1492
  this.hasChildren = false;
1530
1493
  }
1531
- componentDidLoad() {
1532
- const children = this.childrenElement.children[0];
1533
- const count = children.assignedElements().length;
1534
- if (count > 0) {
1535
- this.hasChildren = true;
1536
- }
1537
- if (this.expanded) {
1494
+ /** Watch expanded Prop */
1495
+ watchExpanded(expanded) {
1496
+ if (expanded) {
1538
1497
  this.expander.classList.add("expanded");
1539
- this.collapsible.expanded = false;
1540
- setTimeout(() => {
1541
- this.collapsible.expanded = true;
1542
- }, 300);
1498
+ this.collapsible.expanded = true;
1499
+ return;
1543
1500
  }
1501
+ this.expander.classList.remove("expanded");
1502
+ this.collapsible.expanded = false;
1503
+ }
1504
+ componentDidLoad() {
1505
+ requestAnimationFrame(() => {
1506
+ const child = this.childElement.children[0];
1507
+ const count = child.assignedElements().length;
1508
+ if (count > 0) {
1509
+ this.hasChildren = true;
1510
+ }
1511
+ if (this.expanded) {
1512
+ this.expander.classList.add("expanded");
1513
+ this.collapsible.expanded = false;
1514
+ setTimeout(() => {
1515
+ this.collapsible.expanded = true;
1516
+ }, 300);
1517
+ }
1518
+ });
1544
1519
  }
1545
1520
  toggleCollapse() {
1546
1521
  this.expanded = !this.expanded;
1547
1522
  if (this.expanded) {
1548
1523
  this.expander.classList.add("expanded");
1524
+ this.userExpanded.emit();
1549
1525
  return;
1550
1526
  }
1551
1527
  this.expander.classList.remove("expanded");
1528
+ this.userCollapsed.emit();
1552
1529
  }
1553
1530
  render() {
1554
1531
  return (h(Host, null, h("div", { class: "expander", ref: el => this.expander = el }, this.hasChildren &&
1555
- h("button", { onClick: () => this.toggleCollapse() }, h("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 0 24 24", width: "24px", fill: "#000000" }, h("path", { d: "M10 17l5-5-5-5v10z" }), h("path", { d: "M0 24V0h24v24H0z", fill: "none" })))), h("div", { class: "item" }, h("div", { class: "item-slot" }, h("slot", null)), h("dnn-collapsible", { ref: el => this.collapsible = el, expanded: this.expanded }, h("div", { ref: el => this.childrenElement = el }, h("slot", { name: "children" }))))));
1532
+ h("button", { onClick: () => this.toggleCollapse() }, h("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 0 24 24", width: "24px", fill: "#000000" }, h("path", { d: "M10 17l5-5-5-5v10z" }), h("path", { d: "M0 24V0h24v24H0z", fill: "none" })))), h("div", { class: "item" }, h("div", { class: "item-slot" }, h("slot", null)), h("dnn-collapsible", { ref: el => this.collapsible = el, expanded: this.expanded }, h("div", { ref: el => this.childElement = el }, h("slot", { name: "children" }))))));
1556
1533
  }
1557
1534
  get el() { return getElement(this); }
1535
+ static get watchers() { return {
1536
+ "expanded": ["watchExpanded"]
1537
+ }; }
1558
1538
  };
1559
1539
  DnnTreeviewItem.style = dnnTreeviewItemCss;
1560
1540
 
1561
- export { DnnButton as dnn_button, DnnCheckbox as dnn_checkbox, DnnChevron as dnn_chevron, DnnCollapsible as dnn_collapsible, DnnColorPicker as dnn_color_picker, DnnDropzone as dnn_dropzone, DnnImageCropper as dnn_image_cropper, DnnModal as dnn_modal, DnnSearchbox as dnn_searchbox, DnnSortIcon as dnn_sort_icon, DnnTab as dnn_tab, DnnTabs as dnn_tabs, DnnToggle as dnn_toggle, DnnTreeviewItem as dnn_treeview_item };
1541
+ 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)}";
1542
+
1543
+ let DnnVerticalOverflowMenu = class {
1544
+ constructor(hostRef) {
1545
+ registerInstance(this, hostRef);
1546
+ this.showDropdownButton = false;
1547
+ this.showDropdownMenu = false;
1548
+ this.previousMenuWidth = 0;
1549
+ }
1550
+ componentDidRender() {
1551
+ requestAnimationFrame(() => {
1552
+ this.moveItemsToDropDownIfNecessery();
1553
+ this.resizeObserver = new ResizeObserver(entries => {
1554
+ for (let entry of entries) {
1555
+ if (entry.contentRect.width < this.previousMenuWidth) {
1556
+ this.moveItemsToDropDownIfNecessery();
1557
+ }
1558
+ if (this.previousMenuWidth > 0 && entry.contentRect.width > this.previousMenuWidth) {
1559
+ this.moveItemsToMenuIfPossible();
1560
+ }
1561
+ this.previousMenuWidth = entry.contentRect.width;
1562
+ }
1563
+ });
1564
+ this.resizeObserver.observe(this.element);
1565
+ });
1566
+ }
1567
+ moveItemsToDropDownIfNecessery() {
1568
+ const menuItems = Array.from(this.menu.querySelector("slot").assignedElements());
1569
+ const availableWidth = this.menu.getBoundingClientRect().width;
1570
+ let neededWidth = parseFloat(getComputedStyle(this.element).fontSize) * 2;
1571
+ menuItems.forEach(item => neededWidth += this.getFullWidth(item));
1572
+ neededWidth += (menuItems.length - 1) * parseFloat(getComputedStyle(this.element).fontSize);
1573
+ if (neededWidth > availableWidth) {
1574
+ this.showDropdownButton = true;
1575
+ var lastItem = menuItems[menuItems.length - 1];
1576
+ if (this.dropdown == undefined) {
1577
+ return;
1578
+ }
1579
+ lastItem.slot = "dropdown";
1580
+ this.moveItemsToDropDownIfNecessery();
1581
+ }
1582
+ }
1583
+ moveItemsToMenuIfPossible() {
1584
+ if (this.dropdown == undefined || !this.dropdown.hasChildNodes()) {
1585
+ return;
1586
+ }
1587
+ const menuItems = Array.from(this.menu.querySelector("slot").assignedElements());
1588
+ const availableWidth = this.menu.getBoundingClientRect().width;
1589
+ let neededWidth = parseFloat(getComputedStyle(this.element).fontSize) * 2;
1590
+ neededWidth += (menuItems.length - 1) * parseFloat(getComputedStyle(this.element).fontSize);
1591
+ menuItems.forEach(item => neededWidth += this.getFullWidth(item));
1592
+ const firstItem = this.dropdown.querySelector("slot").assignedElements()[0];
1593
+ if (firstItem != undefined) {
1594
+ neededWidth += this.getFullWidth(firstItem);
1595
+ }
1596
+ if (neededWidth < availableWidth) {
1597
+ if (firstItem != undefined) {
1598
+ firstItem.slot = "";
1599
+ }
1600
+ if (firstItem == undefined) {
1601
+ this.dropdown.classList.remove("visible");
1602
+ this.showDropdownMenu = false;
1603
+ this.showDropdownButton = false;
1604
+ }
1605
+ }
1606
+ }
1607
+ getFullWidth(item) {
1608
+ var width = item.getBoundingClientRect().width;
1609
+ var styles = getComputedStyle(item);
1610
+ width += parseFloat(styles.marginLeft);
1611
+ width += parseFloat(styles.marginRight);
1612
+ width += parseFloat(styles.paddingLeft);
1613
+ width += parseFloat(styles.paddingRight);
1614
+ return width;
1615
+ }
1616
+ toggleOverflowMenu() {
1617
+ this.showDropdownMenu = !this.showDropdownMenu;
1618
+ if (this.showDropdownMenu) {
1619
+ this.dropdown.classList.add("visible");
1620
+ let contentHeight = 0;
1621
+ const items = Array.from(this.dropdown.querySelector("slot").assignedElements());
1622
+ items.forEach(item => contentHeight += item.getBoundingClientRect().height);
1623
+ var emHeight = parseFloat(getComputedStyle(this.dropdown).fontSize) * 0.5;
1624
+ var additionalHeight = emHeight * (this.dropdown.children.length - 1);
1625
+ contentHeight += additionalHeight;
1626
+ this.dropdown.style.height = `${contentHeight}px`;
1627
+ const dismissMenu = (e) => {
1628
+ const buttonRect = this.button.getBoundingClientRect();
1629
+ if (e.clientX < buttonRect.left ||
1630
+ e.clientX > buttonRect.right ||
1631
+ e.clientY < buttonRect.top ||
1632
+ e.clientY > buttonRect.bottom) {
1633
+ this.toggleOverflowMenu();
1634
+ }
1635
+ document.removeEventListener("click", dismissMenu);
1636
+ };
1637
+ setTimeout(() => {
1638
+ document.addEventListener("click", dismissMenu, false);
1639
+ }, 100);
1640
+ }
1641
+ else {
1642
+ this.dropdown.classList.remove("visible");
1643
+ this.dropdown.style.height = "0px";
1644
+ }
1645
+ }
1646
+ render() {
1647
+ return (h(Host, null, h("div", { class: "menu-container" }, h("div", { class: "menu", ref: el => this.menu = el }, h("slot", null)), this.showDropdownButton &&
1648
+ h("div", { class: "overflow" }, h("button", { ref: el => this.button = el, class: "icon", onClick: () => this.toggleOverflowMenu() }, h("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 0 24 24", width: "24px", fill: "#000000" }, h("path", { d: "M0 0h24v24H0z", fill: "none" }), 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" }))), h("div", { class: "dropdown", ref: el => this.dropdown = el }, h("slot", { name: "dropdown" }))))));
1649
+ }
1650
+ get element() { return getElement(this); }
1651
+ };
1652
+ DnnVerticalOverflowMenu.style = dnnVerticalOverflowMenuCss;
1653
+
1654
+ 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}";
1655
+
1656
+ let DnnVerticalSplitview = class {
1657
+ constructor(hostRef) {
1658
+ registerInstance(this, hostRef);
1659
+ this.widthChanged = createEvent(this, "widthChanged", 7);
1660
+ /** The width of the splitter area. */
1661
+ this.splitterWidth = 16;
1662
+ /** The percentage position of the splitter in the container. */
1663
+ this.splitWidthPercentage = 30;
1664
+ this.leftWidth = 0;
1665
+ this.rightWidth = 0;
1666
+ }
1667
+ /** Sets the width percentage of the divider */
1668
+ async setSplitWidthPercentage(newWidth) {
1669
+ const panes = this.element.shadowRoot.querySelectorAll(".pane");
1670
+ requestAnimationFrame(() => {
1671
+ panes.forEach(pane => pane.classList.add("transition"));
1672
+ this.splitter.classList.add("transition");
1673
+ requestAnimationFrame(() => {
1674
+ const fullWidth = this.element.getBoundingClientRect().width;
1675
+ let newLeft = fullWidth * newWidth / 100;
1676
+ if (newLeft < 0) {
1677
+ newLeft = 0;
1678
+ }
1679
+ if (newLeft > fullWidth) {
1680
+ newLeft = fullWidth;
1681
+ }
1682
+ this.leftWidth = newLeft;
1683
+ this.rightWidth = fullWidth - newLeft;
1684
+ setTimeout(() => {
1685
+ panes.forEach(pane => pane.classList.remove("transition"));
1686
+ this.splitter.classList.remove("transition");
1687
+ }, 300);
1688
+ });
1689
+ });
1690
+ }
1691
+ /** Gets the current divider position percentage. */
1692
+ async getSplitWidthPercentage() {
1693
+ const fullWidth = this.element.getBoundingClientRect().width;
1694
+ return this.leftWidth / fullWidth;
1695
+ }
1696
+ componentDidLoad() {
1697
+ requestAnimationFrame(() => {
1698
+ const fullWidth = this.element.getBoundingClientRect().width;
1699
+ this.leftWidth = fullWidth * this.splitWidthPercentage / 100;
1700
+ this.rightWidth = fullWidth - this.leftWidth;
1701
+ this.widthChanged.emit(this.splitWidthPercentage);
1702
+ });
1703
+ }
1704
+ handleMouseDown(event) {
1705
+ event.preventDefault();
1706
+ const handleDrag = (ev) => {
1707
+ let { movementX } = getMovementFromEvent(ev, this.previousTouch);
1708
+ let fullWidth = this.element.getBoundingClientRect().width;
1709
+ let newLeft = this.leftWidth + movementX;
1710
+ if (newLeft < 0) {
1711
+ newLeft = 0;
1712
+ }
1713
+ if (newLeft > fullWidth) {
1714
+ newLeft = fullWidth;
1715
+ }
1716
+ this.leftWidth = newLeft;
1717
+ this.rightWidth = fullWidth - newLeft;
1718
+ };
1719
+ const handleDragFinished = () => {
1720
+ document.removeEventListener("mousemove", handleDrag);
1721
+ document.removeEventListener("touchmove", handleDrag);
1722
+ const fullWidth = this.element.getBoundingClientRect().width;
1723
+ const newPercentage = this.leftWidth / fullWidth * 100;
1724
+ this.widthChanged.emit(newPercentage);
1725
+ };
1726
+ document.addEventListener("mouseup", handleDragFinished);
1727
+ document.addEventListener("touchend", handleDragFinished);
1728
+ document.addEventListener("mousemove", handleDrag);
1729
+ document.addEventListener("touchmove", handleDrag);
1730
+ }
1731
+ handleKeyDown(e) {
1732
+ let movementX = 0;
1733
+ switch (e.key) {
1734
+ case "ArrowLeft":
1735
+ movementX = -10;
1736
+ break;
1737
+ case "ArrowRight":
1738
+ movementX = 10;
1739
+ break;
1740
+ default:
1741
+ return;
1742
+ }
1743
+ if (e.shiftKey) {
1744
+ movementX = movementX * 10;
1745
+ }
1746
+ const fullWidth = this.element.getBoundingClientRect().width;
1747
+ let newLeft = this.leftWidth + movementX;
1748
+ if (newLeft < 0) {
1749
+ newLeft = 0;
1750
+ }
1751
+ if (newLeft > fullWidth) {
1752
+ newLeft = fullWidth;
1753
+ }
1754
+ this.leftWidth = newLeft;
1755
+ this.rightWidth = fullWidth - this.leftWidth;
1756
+ }
1757
+ render() {
1758
+ return (h(Host, null, h("div", { class: "left pane", style: {
1759
+ width: `${this.leftWidth}px`,
1760
+ } }, h("slot", { name: "left" })), h("button", { onMouseDown: e => this.handleMouseDown(e), onTouchStart: e => this.handleMouseDown(e), onKeyDown: e => this.handleKeyDown(e), ref: el => this.splitter = el, style: {
1761
+ minWidth: `${this.splitterWidth.toString()}px`,
1762
+ left: `${this.leftWidth - 2}px`,
1763
+ } }, h("slot", null)), h("div", { class: "right pane", style: {
1764
+ width: `${this.rightWidth}px`,
1765
+ } }, h("slot", { name: "right" }))));
1766
+ }
1767
+ get element() { return getElement(this); }
1768
+ };
1769
+ DnnVerticalSplitview.style = dnnVerticalSplitviewCss;
1770
+
1771
+ export { DnnButton as dnn_button, DnnCheckbox as dnn_checkbox, DnnChevron as dnn_chevron, DnnCollapsible as dnn_collapsible, DnnColorPicker as dnn_color_picker, DnnDropzone as dnn_dropzone, DnnImageCropper as dnn_image_cropper, DnnModal as dnn_modal, DnnSearchbox as dnn_searchbox, DnnSortIcon as dnn_sort_icon, DnnTab as dnn_tab, DnnTabs as dnn_tabs, DnnToggle as dnn_toggle, DnnTreeviewItem as dnn_treeview_item, DnnVerticalOverflowMenu as dnn_vertical_overflow_menu, DnnVerticalSplitview as dnn_vertical_splitview };
1562
1772
 
1563
- //# sourceMappingURL=dnn-button_14.entry.js.map
1773
+ //# sourceMappingURL=dnn-button_16.entry.js.map