@blokkli/editor 2.0.0-alpha.23 → 2.0.0-alpha.25

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 (259) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +252 -92
  3. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue.d.ts +38 -0
  4. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +1 -1
  5. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue.d.ts +15 -0
  6. package/dist/runtime/blokkliPlugins/DebugOverlay/index.vue.d.ts +6 -0
  7. package/dist/runtime/blokkliPlugins/ItemAction/index.vue.d.ts +28 -3
  8. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +6 -4
  9. package/dist/runtime/blokkliPlugins/Sidebar/index.vue +11 -3
  10. package/dist/runtime/blokkliPlugins/Sidebar/index.vue.d.ts +138 -3
  11. package/dist/runtime/blokkliPlugins/ToolbarButton/index.vue +5 -1
  12. package/dist/runtime/blokkliPlugins/ToolbarButton/index.vue.d.ts +116 -0
  13. package/dist/runtime/blokkliPlugins/TourItem/index.vue +22 -13
  14. package/dist/runtime/blokkliPlugins/TourItem/index.vue.d.ts +22 -0
  15. package/dist/runtime/blokkliPlugins/ViewOption/index.vue.d.ts +98 -0
  16. package/dist/runtime/blokkliPlugins/index.d.ts +1 -3
  17. package/dist/runtime/blokkliPlugins/index.js +0 -4
  18. package/dist/runtime/components/Blocks/NotImplemented/index.vue +24 -0
  19. package/dist/runtime/components/Blocks/NotImplemented/index.vue.d.ts +6 -0
  20. package/dist/runtime/components/BlokkliEditable.vue.d.ts +11 -0
  21. package/dist/runtime/components/BlokkliItem.vue +16 -3
  22. package/dist/runtime/components/BlokkliItem.vue.d.ts +2 -0
  23. package/dist/runtime/components/BlokkliProvider.vue.d.ts +1 -1
  24. package/dist/runtime/components/Edit/Actions/ItemDropdown.vue +1 -1
  25. package/dist/runtime/components/Edit/Actions/index.vue +78 -73
  26. package/dist/runtime/components/Edit/AddListItem/index.vue +9 -35
  27. package/dist/runtime/components/Edit/AddListItem/index.vue.d.ts +6 -15
  28. package/dist/runtime/components/Edit/AppMenu/MenuButton.vue +39 -0
  29. package/dist/runtime/{blokkliPlugins/MenuButton/index.vue.d.ts → components/Edit/AppMenu/MenuButton.vue.d.ts} +0 -4
  30. package/dist/runtime/components/Edit/AppMenu/index.vue +62 -40
  31. package/dist/runtime/components/Edit/ArtboardTooltip/index.vue +6 -0
  32. package/dist/runtime/components/Edit/BlockProxy/index.vue +2 -2
  33. package/dist/runtime/components/Edit/BlokkliErrorBoundary.vue +3 -0
  34. package/dist/runtime/components/Edit/BlokkliRootErrorBoundary.vue +4 -1
  35. package/dist/runtime/components/Edit/Dialog/index.vue +33 -47
  36. package/dist/runtime/components/Edit/Dialog/index.vue.d.ts +2 -0
  37. package/dist/runtime/components/Edit/DraggableList.vue +12 -9
  38. package/dist/runtime/components/Edit/EditIndicator.vue +11 -4
  39. package/dist/runtime/components/Edit/EditProvider.vue +75 -55
  40. package/dist/runtime/components/Edit/EditProvider.vue.d.ts +1 -1
  41. package/dist/runtime/components/Edit/Features/AddList/Actions/Action.vue +53 -0
  42. package/dist/runtime/components/Edit/Features/AddList/Actions/Action.vue.d.ts +7 -0
  43. package/dist/runtime/components/Edit/Features/AddList/Actions/index.vue +41 -0
  44. package/dist/runtime/components/Edit/Features/AddList/Actions/index.vue.d.ts +5 -0
  45. package/dist/runtime/components/Edit/Features/AddList/Blocks/index.vue +13 -50
  46. package/dist/runtime/components/Edit/Features/AddList/Blocks/index.vue.d.ts +5 -0
  47. package/dist/runtime/components/Edit/Features/AddList/index.vue +76 -119
  48. package/dist/runtime/components/Edit/Features/Analyze/Icon.vue +85 -0
  49. package/dist/runtime/components/Edit/Features/Analyze/Icon.vue.d.ts +5 -0
  50. package/dist/runtime/components/Edit/Features/Analyze/Main.vue +288 -59
  51. package/dist/runtime/components/Edit/Features/Analyze/Main.vue.d.ts +8 -1
  52. package/dist/runtime/components/Edit/Features/Analyze/Renderer/fragment.glsl +25 -13
  53. package/dist/runtime/components/Edit/Features/Analyze/Renderer/index.vue +114 -52
  54. package/dist/runtime/components/Edit/Features/Analyze/Renderer/index.vue.d.ts +16 -2
  55. package/dist/runtime/components/Edit/Features/Analyze/Renderer/vertex.glsl +31 -11
  56. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue +2 -0
  57. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue.d.ts +8 -1
  58. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue +4 -4
  59. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue.d.ts +20 -2
  60. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue +11 -18
  61. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue.d.ts +10 -3
  62. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue +46 -40
  63. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue.d.ts +10 -4
  64. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue +8 -4
  65. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.js +1 -0
  66. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.d.ts +4 -3
  67. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.js +2 -1
  68. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.js +61 -20
  69. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.d.ts +15 -1
  70. package/dist/runtime/components/Edit/Features/Analyze/index.vue +23 -2
  71. package/dist/runtime/components/Edit/Features/Artboard/Overview/index.vue +22 -8
  72. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue +42 -21
  73. package/dist/runtime/components/Edit/Features/Artboard/Scrollbar/index.vue +10 -4
  74. package/dist/runtime/components/Edit/Features/Assistant/Overlay/index.vue +2 -28
  75. package/dist/runtime/components/Edit/Features/Assistant/index.vue +18 -14
  76. package/dist/runtime/components/Edit/Features/BlockScheduler/Dialog/index.vue +11 -1
  77. package/dist/runtime/components/Edit/Features/BlockScheduler/index.vue +2 -2
  78. package/dist/runtime/components/Edit/Features/Clipboard/List/index.vue +1 -1
  79. package/dist/runtime/components/Edit/Features/Clipboard/index.vue +52 -18
  80. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Item/index.vue +0 -2
  81. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Item/index.vue.d.ts +6 -4
  82. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +77 -27
  83. package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +7 -4
  84. package/dist/runtime/components/Edit/Features/Comments/index.vue +2 -2
  85. package/dist/runtime/components/Edit/Features/Debug/Main.vue.d.ts +1 -1
  86. package/dist/runtime/components/Edit/Features/Debug/Rects/index.vue +2 -2
  87. package/dist/runtime/components/Edit/Features/Debug/Section/Logging.vue.d.ts +1 -1
  88. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/DragItem.vue +113 -0
  89. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/DragItem.vue.d.ts +25 -0
  90. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +8 -97
  91. package/dist/runtime/components/Edit/Features/DraggingOverlay/Renderer/fragment.glsl +2 -5
  92. package/dist/runtime/components/Edit/Features/DraggingOverlay/Renderer/index.vue +38 -5
  93. package/dist/runtime/components/Edit/Features/DraggingOverlay/Renderer/vertex.glsl +10 -1
  94. package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +1 -2
  95. package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +8 -2
  96. package/dist/runtime/components/Edit/Features/EditForm/index.vue +3 -9
  97. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Plaintext/index.vue +1 -1
  98. package/dist/runtime/components/Edit/Features/EditableField/Overlay/index.vue +4 -3
  99. package/dist/runtime/components/Edit/Features/EditableField/index.vue +2 -2
  100. package/dist/runtime/components/Edit/Features/EditableMask/index.vue +1 -1
  101. package/dist/runtime/components/Edit/Features/EntityTitle/index.vue +7 -2
  102. package/dist/runtime/components/Edit/Features/Exit/index.vue +12 -9
  103. package/dist/runtime/components/Edit/Features/Fragments/index.vue +27 -31
  104. package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +1 -0
  105. package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +25 -24
  106. package/dist/runtime/components/Edit/Features/Library/EditReusable/index.vue +4 -4
  107. package/dist/runtime/components/Edit/Features/Library/LibraryDialog/index.vue +9 -2
  108. package/dist/runtime/components/Edit/Features/Library/ReusableDialog/index.vue +13 -3
  109. package/dist/runtime/components/Edit/Features/Library/index.vue +26 -24
  110. package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +3 -2
  111. package/dist/runtime/components/Edit/Features/MultiSelect/Renderer/index.vue +1 -3
  112. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue.d.ts +1 -1
  113. package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +3 -1
  114. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue +10 -0
  115. package/dist/runtime/components/Edit/Features/Publish/index.vue +17 -15
  116. package/dist/runtime/components/Edit/Features/ResponsivePreview/Frame/index.vue +3 -2
  117. package/dist/runtime/components/Edit/Features/ResponsivePreview/index.vue +3 -2
  118. package/dist/runtime/components/Edit/Features/Revert/index.vue +24 -18
  119. package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Content/index.vue +8 -2
  120. package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Page/index.vue +12 -2
  121. package/dist/runtime/components/Edit/Features/Search/Overlay/index.vue +11 -3
  122. package/dist/runtime/components/Edit/Features/Search/index.vue +1 -1
  123. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue +128 -31
  124. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue.d.ts +6 -6
  125. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue +3 -6
  126. package/dist/runtime/components/Edit/Features/Selection/Renderer/index.vue +1 -1
  127. package/dist/runtime/components/Edit/Features/Settings/Dialog/index.vue +1 -0
  128. package/dist/runtime/components/Edit/Features/Settings/index.vue +26 -18
  129. package/dist/runtime/components/Edit/Features/Structure/List/Field/index.vue +3 -3
  130. package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +2 -2
  131. package/dist/runtime/components/Edit/Features/Tour/Overlay/index.vue +3 -3
  132. package/dist/runtime/components/Edit/Features/Tour/Popup/index.vue +2 -2
  133. package/dist/runtime/components/Edit/Features/Tour/index.vue +12 -10
  134. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue +7 -1
  135. package/dist/runtime/components/Edit/Features/Transform/index.vue +1 -1
  136. package/dist/runtime/components/Edit/Features/Translations/index.vue +18 -17
  137. package/dist/runtime/components/Edit/Form/Textarea/index.vue +1 -1
  138. package/dist/runtime/components/Edit/FormOverlay/index.vue +13 -4
  139. package/dist/runtime/components/Edit/Indicators/index.vue +1 -1
  140. package/dist/runtime/components/Edit/InfoBox/index.vue +3 -2
  141. package/dist/runtime/components/Edit/InfoBox/index.vue.d.ts +6 -1
  142. package/dist/runtime/components/Edit/ItemIconBox/index.vue +41 -0
  143. package/dist/runtime/components/Edit/{AddListItemIcon → ItemIconBox}/index.vue.d.ts +5 -5
  144. package/dist/runtime/components/Edit/Konami/Game/index.vue +0 -1
  145. package/dist/runtime/components/Edit/Konami/index.vue +3 -5
  146. package/dist/runtime/components/Edit/Messages/Item/index.vue +11 -2
  147. package/dist/runtime/components/Edit/Messages/index.vue +6 -1
  148. package/dist/runtime/components/Edit/Overlay/index.vue +70 -0
  149. package/dist/runtime/components/Edit/Overlay/index.vue.d.ts +2 -0
  150. package/dist/runtime/components/Edit/PreviewProvider.vue +3 -3
  151. package/dist/runtime/components/Edit/ScaleToFit/index.vue +4 -4
  152. package/dist/runtime/components/Edit/SystemRequirements/index.vue +36 -36
  153. package/dist/runtime/components/Edit/Toolbar/index.vue +47 -48
  154. package/dist/runtime/components/Edit/index.d.ts +2 -2
  155. package/dist/runtime/components/Edit/index.js +2 -2
  156. package/dist/runtime/composables/defineBlokkliFeature.d.ts +1 -1
  157. package/dist/runtime/composables/useBlokkli.d.ts +6 -1
  158. package/dist/runtime/composables/useBlokkli.js +4 -1
  159. package/dist/runtime/css/output.css +1 -1
  160. package/dist/runtime/helpers/composables/defineAddAction.d.ts +2 -0
  161. package/dist/runtime/helpers/composables/defineAddAction.js +10 -0
  162. package/dist/runtime/helpers/composables/defineElementStyle.d.ts +2 -0
  163. package/dist/runtime/helpers/composables/defineElementStyle.js +33 -0
  164. package/dist/runtime/helpers/composables/defineItemDropdownAction.d.ts +1 -1
  165. package/dist/runtime/helpers/composables/defineItemDropdownAction.js +2 -2
  166. package/dist/runtime/helpers/composables/defineMenuButton.d.ts +2 -0
  167. package/dist/runtime/helpers/composables/defineMenuButton.js +10 -0
  168. package/dist/runtime/helpers/composables/defineRenderer.d.ts +1 -1
  169. package/dist/runtime/helpers/composables/onBroadcastEvent.d.ts +1 -1
  170. package/dist/runtime/helpers/composables/useBlockRegistration.d.ts +1 -1
  171. package/dist/runtime/helpers/composables/useBlockRegistration.js +12 -1
  172. package/dist/runtime/helpers/composables/useDebugLogger.d.ts +1 -1
  173. package/dist/runtime/helpers/composables/useDialog.d.ts +3 -0
  174. package/dist/runtime/helpers/composables/useDialog.js +16 -0
  175. package/dist/runtime/helpers/composables/useFocusTrap.d.ts +52 -0
  176. package/dist/runtime/helpers/composables/useFocusTrap.js +59 -0
  177. package/dist/runtime/helpers/composables/useGlobalBlokkliObject.d.ts +1 -1
  178. package/dist/runtime/helpers/{useTransitionedValue.js → composables/useTransitionedValue.js} +1 -1
  179. package/dist/runtime/helpers/dropTargets/index.d.ts +1 -1
  180. package/dist/runtime/helpers/dropTargets/index.js +17 -3
  181. package/dist/runtime/helpers/imports/index.d.ts +2 -1
  182. package/dist/runtime/helpers/imports/index.js +10 -1
  183. package/dist/runtime/helpers/{animationProvider.d.ts → providers/animation.d.ts} +100 -7
  184. package/dist/runtime/helpers/{animationProvider.js → providers/animation.js} +21 -11
  185. package/dist/runtime/helpers/providers/blocks.d.ts +25 -3
  186. package/dist/runtime/helpers/providers/blocks.js +19 -0
  187. package/dist/runtime/helpers/providers/commands.d.ts +41 -0
  188. package/dist/runtime/helpers/{commandsProvider.js → providers/commands.js} +1 -1
  189. package/dist/runtime/helpers/providers/debug.d.ts +125 -0
  190. package/dist/runtime/helpers/{debugProvider.js → providers/debug.js} +2 -2
  191. package/dist/runtime/helpers/providers/definition.d.ts +87 -0
  192. package/dist/runtime/helpers/providers/directive.d.ts +88 -2
  193. package/dist/runtime/helpers/providers/directive.js +18 -2
  194. package/dist/runtime/helpers/providers/dom.d.ts +225 -0
  195. package/dist/runtime/helpers/{domProvider.js → providers/dom.js} +34 -76
  196. package/dist/runtime/helpers/providers/dropArea.d.ts +47 -0
  197. package/dist/runtime/helpers/{dropAreaProvider.js → providers/dropArea.js} +1 -1
  198. package/dist/runtime/helpers/providers/element.d.ts +58 -1
  199. package/dist/runtime/helpers/providers/features.d.ts +56 -0
  200. package/dist/runtime/helpers/{featuresProvider.js → providers/features.js} +1 -1
  201. package/dist/runtime/helpers/providers/fields.d.ts +19 -4
  202. package/dist/runtime/helpers/providers/fields.js +1 -1
  203. package/dist/runtime/helpers/providers/indicators.d.ts +44 -0
  204. package/dist/runtime/helpers/providers/keyboard.d.ts +76 -0
  205. package/dist/runtime/helpers/{keyboardProvider.js → providers/keyboard.js} +1 -8
  206. package/dist/runtime/helpers/providers/plugin.d.ts +81 -0
  207. package/dist/runtime/helpers/providers/plugin.js +64 -0
  208. package/dist/runtime/helpers/{selectionProvider.d.ts → providers/selection.d.ts} +4 -1
  209. package/dist/runtime/helpers/{selectionProvider.js → providers/selection.js} +1 -1
  210. package/dist/runtime/helpers/providers/state.d.ts +227 -0
  211. package/dist/runtime/helpers/{stateProvider.js → providers/state.js} +3 -3
  212. package/dist/runtime/helpers/providers/storage.d.ts +64 -0
  213. package/dist/runtime/helpers/{textProvider.d.ts → providers/texts.d.ts} +1 -1
  214. package/dist/runtime/helpers/providers/theme.d.ts +119 -0
  215. package/dist/runtime/helpers/{themeProvider.js → providers/theme.js} +3 -3
  216. package/dist/runtime/helpers/providers/tour.d.ts +49 -0
  217. package/dist/runtime/helpers/{tourProvider.js → providers/tour.js} +1 -1
  218. package/dist/runtime/helpers/providers/types.d.ts +170 -0
  219. package/dist/runtime/helpers/{typesProvider.js → providers/types.js} +45 -1
  220. package/dist/runtime/helpers/providers/ui.d.ts +339 -0
  221. package/dist/runtime/helpers/{uiProvider.js → providers/ui.js} +94 -86
  222. package/dist/runtime/helpers/runtimeHelpers/index.d.ts +1 -1
  223. package/dist/runtime/helpers/symbols.d.ts +1 -0
  224. package/dist/runtime/helpers/symbols.js +3 -0
  225. package/dist/runtime/icons/click.svg +1 -0
  226. package/dist/runtime/types/blockOptions.d.ts +349 -0
  227. package/dist/runtime/types/index.d.ts +34 -31
  228. package/package.json +2 -2
  229. package/dist/runtime/blokkliPlugins/AddAction/index.vue +0 -96
  230. package/dist/runtime/blokkliPlugins/AddAction/index.vue.d.ts +0 -26
  231. package/dist/runtime/blokkliPlugins/MenuButton/index.vue +0 -68
  232. package/dist/runtime/components/Edit/AddListItemIcon/index.vue +0 -19
  233. package/dist/runtime/helpers/commandsProvider.d.ts +0 -9
  234. package/dist/runtime/helpers/debugProvider.d.ts +0 -33
  235. package/dist/runtime/helpers/definitionProvider.d.ts +0 -19
  236. package/dist/runtime/helpers/domProvider.d.ts +0 -90
  237. package/dist/runtime/helpers/dropAreaProvider.d.ts +0 -9
  238. package/dist/runtime/helpers/featuresProvider.d.ts +0 -17
  239. package/dist/runtime/helpers/indicatorsProvider.d.ts +0 -10
  240. package/dist/runtime/helpers/keyboardProvider.d.ts +0 -20
  241. package/dist/runtime/helpers/pluginProvider.d.ts +0 -26
  242. package/dist/runtime/helpers/pluginProvider.js +0 -62
  243. package/dist/runtime/helpers/stateProvider.d.ts +0 -47
  244. package/dist/runtime/helpers/storageProvider.d.ts +0 -17
  245. package/dist/runtime/helpers/themeProvider.d.ts +0 -30
  246. package/dist/runtime/helpers/tourProvider.d.ts +0 -11
  247. package/dist/runtime/helpers/typesProvider.d.ts +0 -36
  248. package/dist/runtime/helpers/uiProvider.d.ts +0 -60
  249. package/dist/runtime/types/blokkOptions.d.ts +0 -100
  250. /package/dist/runtime/helpers/{addElementClasses.d.ts → composables/addElementClasses.d.ts} +0 -0
  251. /package/dist/runtime/helpers/{addElementClasses.js → composables/addElementClasses.js} +0 -0
  252. /package/dist/runtime/helpers/{useTransitionedValue.d.ts → composables/useTransitionedValue.d.ts} +0 -0
  253. /package/dist/runtime/helpers/{broadcastProvider.d.ts → providers/broadcast.d.ts} +0 -0
  254. /package/dist/runtime/helpers/{broadcastProvider.js → providers/broadcast.js} +0 -0
  255. /package/dist/runtime/helpers/{definitionProvider.js → providers/definition.js} +0 -0
  256. /package/dist/runtime/helpers/{indicatorsProvider.js → providers/indicators.js} +0 -0
  257. /package/dist/runtime/helpers/{storageProvider.js → providers/storage.js} +0 -0
  258. /package/dist/runtime/helpers/{textProvider.js → providers/texts.js} +0 -0
  259. /package/dist/runtime/types/{blokkOptions.js → blockOptions.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <Teleport to="body">
2
+ <Teleport :to="ui.mainLayoutElement.value">
3
3
  <Loading v-if="isLoading" />
4
4
  <Transition name="bk-library-edit-header">
5
5
  <header v-show="isLoaded" class="bk bk-library-edit-overlay-header">
@@ -38,7 +38,7 @@
38
38
 
39
39
  <script setup>
40
40
  import onBroadcastEvent from "#blokkli/helpers/composables/onBroadcastEvent";
41
- import { ref, useBlokkli } from "#imports";
41
+ import { ref, useBlokkli, useTemplateRef } from "#imports";
42
42
  import { Icon } from "#blokkli/components";
43
43
  import Loading from "./../../../Loading/index.vue";
44
44
  const props = defineProps({
@@ -46,7 +46,7 @@ const props = defineProps({
46
46
  uuid: { type: String, required: true },
47
47
  label: { type: String, required: false }
48
48
  });
49
- const { $t, element } = useBlokkli();
49
+ const { $t, element, ui } = useBlokkli();
50
50
  const DURATION = 530;
51
51
  const emit = defineEmits(["submit", "close"]);
52
52
  function getOriginatingElement() {
@@ -124,7 +124,7 @@ function onAfterLeave(el) {
124
124
  emit("close");
125
125
  }
126
126
  }
127
- const iframe = ref(null);
127
+ const iframe = useTemplateRef("iframe");
128
128
  const isLoaded = ref(false);
129
129
  const isLoading = ref(true);
130
130
  const hasPublished = ref(false);
@@ -79,7 +79,14 @@ import {
79
79
  FormSelect
80
80
  } from "#blokkli/components";
81
81
  import Loading from "./../../../Loading/index.vue";
82
- import { ref, useBlokkli, useAsyncData, computed, watch } from "#imports";
82
+ import {
83
+ ref,
84
+ useBlokkli,
85
+ useAsyncData,
86
+ computed,
87
+ watch,
88
+ useTemplateRef
89
+ } from "#imports";
83
90
  import LibraryListItem from "./Item/index.vue";
84
91
  const props = defineProps({
85
92
  field: { type: Object, required: true }
@@ -88,7 +95,7 @@ const { $t, adapter, types } = useBlokkli();
88
95
  const emit = defineEmits(["close", "submit"]);
89
96
  const searchText = ref("");
90
97
  const selectedBundle = ref("all");
91
- const listEl = ref(null);
98
+ const listEl = useTemplateRef("listEl");
92
99
  const selectedItem = ref("");
93
100
  const page = ref(0);
94
101
  const allowedBundles = computed(() => {
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <DialogModal
3
+ id="library-reusable"
3
4
  :title="$t('libraryDialogTitle', 'Add to library')"
4
5
  :lead="
5
6
  $t(
@@ -55,19 +56,28 @@
55
56
  </template>
56
57
 
57
58
  <script setup>
58
- import { ref, useBlokkli, onMounted } from "#imports";
59
+ import { ref, useBlokkli, onMounted, useTemplateRef, watch } from "#imports";
59
60
  import { DialogModal, InfoBox, FormText, FormItem } from "#blokkli/components";
60
61
  import { realBackgroundColor } from "#blokkli/helpers";
61
62
  defineEmits(["confirm", "cancel"]);
62
- const { dom, $t, blocks } = useBlokkli();
63
+ const { dom, $t, blocks, ui } = useBlokkli();
63
64
  const props = defineProps({
64
65
  uuid: { type: String, required: true },
65
66
  backgroundClass: { type: String, required: false }
66
67
  });
67
68
  const label = ref("");
68
69
  const width = ref(450);
69
- const previewEl = ref(null);
70
+ const previewEl = useTemplateRef("previewEl");
70
71
  const backgroundColor = ref("");
72
+ watch(
73
+ label,
74
+ () => {
75
+ ui.requireDialogCloseConfirm();
76
+ },
77
+ {
78
+ once: true
79
+ }
80
+ );
71
81
  onMounted(() => {
72
82
  if (previewEl.value) {
73
83
  const item = blocks.getBlock(props.uuid);
@@ -20,26 +20,7 @@
20
20
  @click="showReusableDialog = true"
21
21
  />
22
22
 
23
- <PluginAddAction
24
- v-if="
25
- adapter.addLibraryItem && adapter.getLibraryItems && isSupportedOnEntity
26
- "
27
- type="library"
28
- :title="$t('libraryAddFromLibrary', 'Add from library')"
29
- :description="
30
- $t(
31
- 'libraryAddDescription',
32
- 'Add a reusable block from the block library.'
33
- )
34
- "
35
- icon="reusable"
36
- color="lime"
37
- :item-bundle="BUNDLE_FROM_LIBRARY"
38
- :disabled="!fromLibraryAllowedInList"
39
- @placed="placedAction = $event"
40
- />
41
-
42
- <Teleport to="body">
23
+ <Teleport :to="ui.mainLayoutElement.value">
43
24
  <BlokkliTransition name="slide-up">
44
25
  <ReusableDialog
45
26
  v-if="showReusableDialog && selection.item.value"
@@ -51,7 +32,7 @@
51
32
  </BlokkliTransition>
52
33
  </Teleport>
53
34
 
54
- <Teleport to="body">
35
+ <Teleport :to="ui.mainLayoutElement.value">
55
36
  <BlokkliTransition name="slide-in">
56
37
  <LibraryDialog
57
38
  v-if="placedAction && adapter.getLibraryItems"
@@ -71,12 +52,14 @@
71
52
 
72
53
  <script setup>
73
54
  import { ref, computed, useBlokkli, defineBlokkliFeature } from "#imports";
74
- import { PluginItemAction, PluginAddAction } from "#blokkli/plugins";
55
+ import { PluginItemAction } from "#blokkli/plugins";
75
56
  import ReusableDialog from "./ReusableDialog/index.vue";
76
57
  import LibraryDialog from "./LibraryDialog/index.vue";
77
58
  import EditReusable from "./EditReusable/index.vue";
78
59
  import { BlokkliTransition } from "#blokkli/components";
79
60
  import onBlokkliEvent from "#blokkli/helpers/composables/onBlokkliEvent";
61
+ import defineAddAction from "#blokkli/helpers/composables/defineAddAction";
62
+ import { useDialog } from "#blokkli/helpers/composables/useDialog";
80
63
  import { BUNDLE_FROM_LIBRARY } from "#blokkli/constants";
81
64
  const { adapter } = defineBlokkliFeature({
82
65
  id: "library",
@@ -86,8 +69,8 @@ const { adapter } = defineBlokkliFeature({
86
69
  requiredAdapterMethods: ["makeBlockReusable", "detachReusableBlock"],
87
70
  dependencies: ["add-list"]
88
71
  });
89
- const { selection, state, types, $t, eventBus, definitions } = useBlokkli();
90
- const showReusableDialog = ref(false);
72
+ const { selection, state, types, $t, eventBus, definitions, ui } = useBlokkli();
73
+ const showReusableDialog = useDialog("library-reusable", "center");
91
74
  async function selectNewlyAdded(cb) {
92
75
  const uuidsBefore = state.getAllUuids();
93
76
  await cb();
@@ -186,6 +169,25 @@ function onSubmitLibraryItem() {
186
169
  eventBus.emit("reloadState");
187
170
  cancelLibraryItemEdit();
188
171
  }
172
+ defineAddAction(() => {
173
+ if (!adapter.addLibraryItem || !adapter.getLibraryItems || !isSupportedOnEntity.value) {
174
+ return;
175
+ }
176
+ return {
177
+ id: "library",
178
+ title: $t("libraryAddFromLibrary", "Add from library"),
179
+ description: $t(
180
+ "libraryAddDescription",
181
+ "Add a reusable block from the block library."
182
+ ),
183
+ icon: "reusable",
184
+ color: "lime",
185
+ itemBundle: BUNDLE_FROM_LIBRARY,
186
+ callback: (data) => {
187
+ placedAction.value = data;
188
+ }
189
+ };
190
+ });
189
191
  </script>
190
192
 
191
193
  <script>
@@ -75,7 +75,8 @@ import {
75
75
  useLazyAsyncData,
76
76
  useBlokkli,
77
77
  watch,
78
- nextTick
78
+ nextTick,
79
+ useTemplateRef
79
80
  } from "#imports";
80
81
  import { Sortli, Icon, Pagination, FormToggle } from "#blokkli/components";
81
82
  import Item from "./Item.vue";
@@ -86,7 +87,7 @@ defineProps({
86
87
  });
87
88
  const { adapter, storage, $t, element } = useBlokkli();
88
89
  const selected = ref([]);
89
- const listEl = ref(null);
90
+ const listEl = useTemplateRef("listEl");
90
91
  const page = ref(0);
91
92
  const key = computed(() => Object.values(filterValues.value).join(","));
92
93
  function getDragItems(activeItem) {
@@ -1,7 +1,5 @@
1
1
  <template>
2
- <Teleport to="body">
3
- <div />
4
- </Teleport>
2
+ <div />
5
3
  </template>
6
4
 
7
5
  <script setup>
@@ -1,4 +1,4 @@
1
- import type { BlockOptionDefinition } from '#blokkli/types/blokkOptions';
1
+ import type { BlockOptionDefinition } from '#blokkli/types/blockOptions';
2
2
  type __VLS_Props = {
3
3
  option: BlockOptionDefinition;
4
4
  property: string;
@@ -4,6 +4,7 @@
4
4
  id="preview_with_smartphone"
5
5
  :title="$t('previewWithSmartphone', 'Preview (with smartphone)')"
6
6
  :disabled="!state.canEdit.value"
7
+ weight="20"
7
8
  :tour-text="
8
9
  $t(
9
10
  'previewWithSmartphoneTourText',
@@ -15,10 +16,11 @@
15
16
  @click="qrCodeVisible = true"
16
17
  />
17
18
 
18
- <Teleport to="body">
19
+ <Teleport :to="ui.mainLayoutElement.value">
19
20
  <BlokkliTransition name="slide-up">
20
21
  <DialogModal
21
22
  v-if="qrCodeVisible"
23
+ id="preview-grant"
22
24
  :title="$t('previewDialogTitle', 'Preview with smartphone')"
23
25
  :lead="
24
26
  $t(
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <DialogModal
3
+ id="publish"
3
4
  :title="$t('publishDialogTitle', 'Publish changes')"
4
5
  :width="900"
5
6
  :submit-label
@@ -564,4 +565,13 @@ async function onSubmit() {
564
565
  emit("submit");
565
566
  }
566
567
  }
568
+ watch(
569
+ () => [revisionMessage.value, publishMode.value, isMutating.value],
570
+ () => {
571
+ ui.requireDialogCloseConfirm();
572
+ },
573
+ {
574
+ once: true
575
+ }
576
+ );
567
577
  </script>
@@ -1,15 +1,5 @@
1
1
  <template>
2
- <PluginMenuButton
3
- id="publish"
4
- :title="publishLabel"
5
- :description="publishDescription"
6
- :disabled="!mutations.length || !canEdit"
7
- :type="isScheduled ? 'yellow' : 'success'"
8
- :weight="0"
9
- :icon="icon"
10
- @click="onMenuClick"
11
- />
12
- <Teleport to="body">
2
+ <Teleport :to="ui.mainLayoutElement.value">
13
3
  <BlokkliTransition name="slide-up">
14
4
  <PublishDialog v-if="showDialog" @close="onClose" @submit="onSubmit" />
15
5
  </BlokkliTransition>
@@ -22,13 +12,13 @@ import {
22
12
  defineBlokkliFeature,
23
13
  computed,
24
14
  useRoute,
25
- ref,
26
15
  nextTick
27
16
  } from "#imports";
28
- import { PluginMenuButton } from "#blokkli/plugins";
29
17
  import { BlokkliTransition } from "#blokkli/components";
30
18
  import PublishDialog from "./Dialog/index.vue";
31
19
  import onBlokkliEvent from "#blokkli/helpers/composables/onBlokkliEvent";
20
+ import defineMenuButton from "#blokkli/helpers/composables/defineMenuButton";
21
+ import { useDialog } from "#blokkli/helpers/composables/useDialog";
32
22
  const { adapter, settings } = defineBlokkliFeature({
33
23
  id: "publish",
34
24
  icon: "publish",
@@ -46,14 +36,14 @@ const { adapter, settings } = defineBlokkliFeature({
46
36
  }
47
37
  });
48
38
  const route = useRoute();
49
- const { state, $t, broadcast, context, eventBus } = useBlokkli();
39
+ const { state, $t, broadcast, context, eventBus, ui } = useBlokkli();
50
40
  const { mutations, canEdit, mutateWithLoadingState } = state;
51
41
  const hasPublishOptions = !!adapter.getPublishOptions;
52
42
  const isPublished = computed(() => !!state.entity.value.status);
53
43
  const isScheduled = computed(
54
44
  () => !!state.publishOptions.value.publishOn
55
45
  );
56
- const showDialog = ref(false);
46
+ const showDialog = useDialog("publish", "center");
57
47
  const publishLabel = computed(() => {
58
48
  const suffix = hasPublishOptions ? "..." : "";
59
49
  if (isScheduled.value) {
@@ -122,6 +112,18 @@ async function onClose() {
122
112
  onBlokkliEvent("publish:show-dialog", () => {
123
113
  showDialog.value = true;
124
114
  });
115
+ defineMenuButton(() => {
116
+ return {
117
+ id: "publish",
118
+ title: publishLabel.value,
119
+ description: publishDescription.value,
120
+ icon: icon.value,
121
+ type: isScheduled.value ? "yellow" : "success",
122
+ disabled: !mutations.value.length || !canEdit.value,
123
+ weight: 0,
124
+ callback: onMenuClick
125
+ };
126
+ });
125
127
  </script>
126
128
 
127
129
  <script>
@@ -25,7 +25,8 @@ import {
25
25
  onMounted,
26
26
  onBeforeUnmount,
27
27
  useRoute,
28
- watch
28
+ watch,
29
+ useTemplateRef
29
30
  } from "#imports";
30
31
  import { Icon } from "#blokkli/components";
31
32
  import { frameEventBus } from "./../../../../../helpers/frameEventBus";
@@ -40,7 +41,7 @@ watch(selection.uuids, (selectedUuids) => {
40
41
  frameEventBus.emit("selectItems", selectedUuids);
41
42
  });
42
43
  const isLoading = ref(true);
43
- const iframe = ref(null);
44
+ const iframe = useTemplateRef("iframe");
44
45
  const src = computed(
45
46
  () => route.fullPath.replace("blokkliEditing", "blokkliPreview")
46
47
  );
@@ -3,11 +3,12 @@
3
3
  id="mobile-preview"
4
4
  v-slot="{ width, height, isDetached, isResizing }"
5
5
  :title="$t('responsivePreviewTitle', 'Responsive Preview')"
6
- :tour-text="tourText"
6
+ :tour-text
7
+ weight="10"
7
8
  :disabled="!state.canEdit.value"
8
9
  :min-width="375"
9
10
  :min-height="375"
10
- :size="size"
11
+ :size
11
12
  icon="preview"
12
13
  region="left"
13
14
  >
@@ -1,21 +1,9 @@
1
1
  <template>
2
- <PluginMenuButton
3
- id="revert"
4
- :title="$t('revertMenuTitle', 'Discard...')"
5
- :description="
6
- $t('revertMenuDescription', 'Restore currently published state')
7
- "
8
- icon="revert"
9
- type="danger"
10
- :disabled="!mutations.length || !canEdit"
11
- :weight="10"
12
- @click="showConfirm = true"
13
- />
14
-
15
- <Teleport to="body">
2
+ <Teleport :to="ui.mainLayoutElement.value">
16
3
  <BlokkliTransition name="slide-up">
17
4
  <DialogModal
18
5
  v-if="showConfirm"
6
+ id="revert"
19
7
  :title="$t('revertDialogTitle', 'Irrevocably discard changes')"
20
8
  :lead="
21
9
  $t(
@@ -33,9 +21,10 @@
33
21
  </template>
34
22
 
35
23
  <script setup>
36
- import { useBlokkli, ref, defineBlokkliFeature } from "#imports";
37
- import { PluginMenuButton } from "#blokkli/plugins";
24
+ import { useBlokkli, defineBlokkliFeature } from "#imports";
38
25
  import { DialogModal, BlokkliTransition } from "#blokkli/components";
26
+ import defineMenuButton from "#blokkli/helpers/composables/defineMenuButton";
27
+ import { useDialog } from "#blokkli/helpers/composables/useDialog";
39
28
  const { adapter } = defineBlokkliFeature({
40
29
  id: "revert",
41
30
  icon: "revert",
@@ -43,9 +32,9 @@ const { adapter } = defineBlokkliFeature({
43
32
  requiredAdapterMethods: ["revertAllChanges"],
44
33
  description: "Provides a menu button to revert all changes done on the current entity."
45
34
  });
46
- const { state, $t } = useBlokkli();
35
+ const { state, $t, ui } = useBlokkli();
47
36
  const { mutations, canEdit, mutateWithLoadingState } = state;
48
- const showConfirm = ref(false);
37
+ const showConfirm = useDialog("revert", "center");
49
38
  async function onSubmit() {
50
39
  await mutateWithLoadingState(
51
40
  () => adapter.revertAllChanges(),
@@ -54,6 +43,23 @@ async function onSubmit() {
54
43
  );
55
44
  showConfirm.value = false;
56
45
  }
46
+ defineMenuButton(() => {
47
+ return {
48
+ id: "revert",
49
+ title: $t("revertMenuTitle", "Discard..."),
50
+ description: $t(
51
+ "revertMenuDescription",
52
+ "Restore currently published state"
53
+ ),
54
+ icon: "revert",
55
+ type: "danger",
56
+ disabled: !mutations.value.length || !canEdit.value,
57
+ weight: 10,
58
+ callback: () => {
59
+ showConfirm.value = true;
60
+ }
61
+ };
62
+ });
57
63
  </script>
58
64
 
59
65
  <script>
@@ -52,10 +52,10 @@
52
52
  </template>
53
53
 
54
54
  <script setup>
55
- import { watch, ref, useBlokkli, onMounted } from "#imports";
55
+ import { ref, watch, useBlokkli, onMounted, useTemplateRef } from "#imports";
56
56
  import { ItemIcon, Icon, Sortli } from "#blokkli/components";
57
57
  import { modulo } from "#blokkli/helpers";
58
- const listItems = ref([]);
58
+ const listItems = useTemplateRef("listItems");
59
59
  const props = defineProps({
60
60
  visible: { type: Boolean, required: true },
61
61
  search: { type: String, required: true },
@@ -123,6 +123,9 @@ const setIndex = (newIndex) => {
123
123
  scrollItemIntoView();
124
124
  };
125
125
  const clickItem = () => {
126
+ if (!listItems.value) {
127
+ return;
128
+ }
126
129
  const element = listItems.value[index.value];
127
130
  if (!element) {
128
131
  return;
@@ -143,6 +146,9 @@ const clickItem = () => {
143
146
  emit("close");
144
147
  };
145
148
  const scrollItemIntoView = () => {
149
+ if (!listItems.value) {
150
+ return;
151
+ }
146
152
  const item = listItems.value[index.value];
147
153
  if (item) {
148
154
  item.scrollIntoView({ block: "nearest", inline: "nearest" });
@@ -38,10 +38,17 @@
38
38
  </template>
39
39
 
40
40
  <script setup>
41
- import { ref, computed, useBlokkli, onMounted, watch } from "#imports";
41
+ import {
42
+ ref,
43
+ computed,
44
+ useBlokkli,
45
+ onMounted,
46
+ watch,
47
+ useTemplateRef
48
+ } from "#imports";
42
49
  import { ItemIcon, Highlight } from "#blokkli/components";
43
50
  import { falsy, modulo } from "#blokkli/helpers";
44
- const listItems = ref([]);
51
+ const listItems = useTemplateRef("listItems");
45
52
  const emit = defineEmits(["close"]);
46
53
  const props = defineProps({
47
54
  visible: { type: Boolean, required: true },
@@ -86,6 +93,9 @@ const clickItem = () => {
86
93
  emit("close");
87
94
  };
88
95
  const scrollItemIntoView = () => {
96
+ if (!listItems.value) {
97
+ return;
98
+ }
89
99
  const item = listItems.value[index.value];
90
100
  if (item) {
91
101
  item.scrollIntoView({ block: "nearest", inline: "nearest" });
@@ -66,7 +66,15 @@
66
66
  </template>
67
67
 
68
68
  <script setup>
69
- import { watch, ref, computed, useBlokkli, onMounted, nextTick } from "#imports";
69
+ import {
70
+ watch,
71
+ ref,
72
+ computed,
73
+ useBlokkli,
74
+ onMounted,
75
+ nextTick,
76
+ useTemplateRef
77
+ } from "#imports";
70
78
  import { Icon, ScrollBoundary } from "#blokkli/components";
71
79
  import { modulo } from "#blokkli/helpers";
72
80
  import ResultsPage from "./Results/Page/index.vue";
@@ -105,8 +113,8 @@ const tabs = computed(() => Object.keys(tabsMap.value));
105
113
  const tabIndex = ref(0);
106
114
  const tab = computed(() => tabs.value[tabIndex.value]);
107
115
  const search = ref("");
108
- const input = ref(null);
109
- const resultsEl = ref(null);
116
+ const input = useTemplateRef("input");
117
+ const resultsEl = useTemplateRef("resultsEl");
110
118
  watch(search, () => {
111
119
  const component = getResultsComponent();
112
120
  if (component) {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <Teleport to="body">
2
+ <Teleport :to="ui.mainLayoutElement.value" defer>
3
3
  <BlokkliTransition name="search">
4
4
  <div
5
5
  v-if="isRendered"