From 6fd8d4a1447255ca5d95b27319d092d34d7fbcd7 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Thu, 4 Jun 2020 15:50:21 +0200 Subject: [PATCH] tree fixes --- zero.Core/Api/BackofficeApi.cs | 2 +- zero.Core/Api/BackofficeStore.cs | 8 +- zero.Core/Api/PageTreeApi.cs | 9 +- zero.Web.UI/App/components/tree/tree-item.vue | 219 ++++++++++++++++++ .../App/components/{ => tree}/tree.vue | 170 +------------- 5 files changed, 237 insertions(+), 171 deletions(-) create mode 100644 zero.Web.UI/App/components/tree/tree-item.vue rename zero.Web.UI/App/components/{ => tree}/tree.vue (57%) diff --git a/zero.Core/Api/BackofficeApi.cs b/zero.Core/Api/BackofficeApi.cs index cc782638..af0f2b6c 100644 --- a/zero.Core/Api/BackofficeApi.cs +++ b/zero.Core/Api/BackofficeApi.cs @@ -37,7 +37,7 @@ namespace zero.Core.Api const string NEW_ID = "new:"; - IBackofficeStore Backoffice; + protected IBackofficeStore Backoffice { get; private set; } public BackofficeApi(IBackofficeStore store) diff --git a/zero.Core/Api/BackofficeStore.cs b/zero.Core/Api/BackofficeStore.cs index d609f794..3e62befa 100644 --- a/zero.Core/Api/BackofficeStore.cs +++ b/zero.Core/Api/BackofficeStore.cs @@ -1,4 +1,5 @@ using Raven.Client.Documents; +using zero.Core.Options; namespace zero.Core.Api { @@ -8,11 +9,14 @@ namespace zero.Core.Api public IApplicationContext AppContext { get; private set; } + public IZeroOptions Options { get; private set; } - public BackofficeStore(IDocumentStore raven, IApplicationContext appContext) + + public BackofficeStore(IDocumentStore raven, IApplicationContext appContext, IZeroOptions options) { Raven = raven; AppContext = appContext; + Options = options; } } @@ -22,5 +26,7 @@ namespace zero.Core.Api IDocumentStore Raven { get; } IApplicationContext AppContext { get; } + + IZeroOptions Options { get; } } } \ No newline at end of file diff --git a/zero.Core/Api/PageTreeApi.cs b/zero.Core/Api/PageTreeApi.cs index cd336996..b0492ea0 100644 --- a/zero.Core/Api/PageTreeApi.cs +++ b/zero.Core/Api/PageTreeApi.cs @@ -14,19 +14,14 @@ namespace zero.Core.Api { public class PageTreeApi : AppAwareBackofficeApi, IPageTreeApi where T : IPage { - protected IZeroOptions Options { get; private set; } - - public PageTreeApi(IZeroOptions options, IBackofficeStore store) : base(store) - { - Options = options; - } + public PageTreeApi(IBackofficeStore store) : base(store) { } /// public async Task> GetChildren(string parentId = null, string activeId = null) { IList items = new List(); - IReadOnlyCollection pageTypes = Options.Pages.GetAllItems(); + IReadOnlyCollection pageTypes = Backoffice.Options.Pages.GetAllItems(); string[] openIds = new string[0] { }; using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) diff --git a/zero.Web.UI/App/components/tree/tree-item.vue b/zero.Web.UI/App/components/tree/tree-item.vue new file mode 100644 index 00000000..daf88b2a --- /dev/null +++ b/zero.Web.UI/App/components/tree/tree-item.vue @@ -0,0 +1,219 @@ + + + + + + + \ No newline at end of file diff --git a/zero.Web.UI/App/components/tree.vue b/zero.Web.UI/App/components/tree/tree.vue similarity index 57% rename from zero.Web.UI/App/components/tree.vue rename to zero.Web.UI/App/components/tree/tree.vue index 59373b53..31a18315 100644 --- a/zero.Web.UI/App/components/tree.vue +++ b/zero.Web.UI/App/components/tree/tree.vue @@ -6,19 +6,10 @@ + @@ -122,24 +113,6 @@ this.$emit('onStatusChange', status); }, - - // toggles children of an item - toggle(item) - { - item.isOpen = !item.isOpen; - }, - - - // get all classes for a tree item - getClasses(item) - { - return { - 'has-children': item.hasChildren, - 'is-inactive': item.isInactive, - 'is-open': item.isOpen - }; - }, - // hide actions overlay hideActions() { @@ -149,6 +122,12 @@ } }, + // toggles children of an item + toggle(item) + { + item.isOpen = !item.isOpen; + }, + // right clicked on an item onRightClicked(item, ev) { @@ -227,139 +206,6 @@ margin-top: -18px; } - .ui-tree-item - { - display: grid; - grid-template-columns: 1fr auto; - align-items: center; - font-size: var(--font-size); - padding: 0 var(--padding); - height: 50px; - color: var(--color-fg); - position: relative; - transition: color 0.2s ease; - - &.is-inactive .ui-tree-item-text - //&.is-inactive .ui-tree-item-icon - { - opacity: .5; - } - - .ui-tree-item-arrow - { - transition: transform 0.2s ease; - } - - &:hover > .ui-tree-item-actions - { - transition-delay: 0.2s; - opacity: 1; - } - - - &.is-open > .ui-tree-item-toggle .ui-tree-item-arrow - { - transform: rotate(180deg); - } - } - - .ui-tree-item-link - { - display: grid; - grid-template-columns: 30px 1fr auto; - grid-gap: 6px; - height: 100%; - align-items: center; - position: relative; - color: var(--color-fg); - - &.is-active - { - font-weight: bold; - } - } - - .ui-tree-item-toggle - { - position: absolute; - color: var(--color-fg-mid); - height: 100%; - top: 0; - left: 0; - width: 30px; - text-align: right; - padding-right: 5px; - outline: none !important; - transition: color 0.2s ease; - - &:hover - { - color: var(--color-fg); - } - } - - .ui-tree-item-icon - { - font-size: 18px; - line-height: 1; - font-weight: 400; - position: relative; - top: -2px; - color: var(--color-fg-reverse-mid); - transition: color 0.2s ease; - } - - .ui-tree-item-loading - { - display: block; - overflow: hidden; - position: absolute; - left: 0; - right: 0; - height: 2px; - - i - { - background-color: var(--color-line); - transform: translateX(-100%) scaleX(1); - animation: treeitemloading 1s linear infinite; - width: 100%; - height: 100%; - position: absolute; - left: 0; - top: 0; - } - } - - @keyframes treeitemloading - { - 0% { transform: translateX(-100%); } - 100% { transform: translateX(100%); } - } - - .ui-tree-item-modifier - { - position: absolute; - left: 10px; - bottom: 12px; - background: var(--color-bg-light); - border-radius: 50%; - width: 14px; - height: 14px; - /*color: var(--color-fg-mid);*/ - font-size: 11px; - font-style: normal; - text-align: center; - line-height: 14px; - } - - .ui-tree-item-actions - { - transition: opacity 0.2s ease 0; - opacity: 0; - color: var(--color-fg-mid); - } - .ui-tree-dropdown { position: fixed;