From d8a766e5e447c959eb861d094e2231331c98da59 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Thu, 9 Dec 2021 14:18:38 +0100 Subject: [PATCH] login works + nav bar output --- zero.Backoffice.UI/app/account/account.d.ts | 28 + zero.Backoffice.UI/app/account/api.ts | 13 + .../pages/login => app/account}/login.vue | 64 +- zero.Backoffice.UI/app/account/store.ts | 18 + zero.Backoffice.UI/app/app.vue | 110 +-- zero.Backoffice.UI/app/components/index.ts | 12 +- .../app/components/{ui => }/ui-add-button.vue | 0 .../app/components/ui-dropdown-button.vue | 277 ++++++++ .../app/components/ui-dropdown-separator.vue | 20 + .../app/components/ui-dropdown.vue | 187 +++++ .../app/components/ui-localize.vue | 38 + .../app/components/ui-thumbnail.vue | 30 + zero.Backoffice.UI/app/core/zeroRuntime.ts | 5 +- .../app/directives/v-click-outside.ts | 9 +- zero.Backoffice.UI/app/env.d.ts | 7 + .../app/forms/components/index.ts | 4 +- .../forms/components/ui-property.vue} | 0 .../forms/form-error-view.vue} | 0 zero.Backoffice.UI/app/forms/index.ts | 5 + .../app/forms/{components => }/register.ts | 8 +- .../forms/form.vue => app/forms/ui-form.vue} | 42 +- .../app/modules/applications/api.ts | 16 + .../app/modules/applications/index.ts | 11 + .../app/modules/applications/plugin.ts | 18 + .../app/modules/countries/index.ts | 11 + zero.Backoffice.UI/app/modules/index.ts | 3 + zero.Backoffice.UI/app/services/request.ts | 21 +- zero.Backoffice.UI/app/stores/translations.ts | 8 +- .../app/styles/Canvas/_navigation.scss | 488 ------------- zero.Backoffice.UI/app/styles/styles.ts | 1 - zero.Backoffice.UI/app/ui/api.ts | 13 + zero.Backoffice.UI/app/ui/app-navigation.vue | 666 ++++++++++++++++++ zero.Backoffice.UI/app/ui/store.ts | 27 + zero.Backoffice.UI/app/ui/ui.d.ts | 44 ++ zero.Backoffice.UI/app/utils/arrays.ts | 12 + zero.Backoffice.UI/index.html | 4 - .../old_app/editor/blueprint/property.vue | 322 --------- .../old_app/editor/blueprint/settings.vue | 223 ------ .../old_app/editor/editor-aside.vue | 72 -- .../old_app/editor/editor-component.vue | 192 ----- .../old_app/editor/editor-form.vue | 75 -- .../old_app/editor/editor-header.vue | 222 ------ .../old_app/editor/editor-infos.vue | 47 -- .../old_app/editor/editor-legacy.scss | 156 ---- .../old_app/editor/editor-overlay.vue | 82 --- zero.Backoffice.UI/old_app/editor/editor.scss | 156 ---- zero.Backoffice.UI/old_app/editor/editor.vue | 129 ---- .../old_app/editor/fields/alias.vue | 31 - .../old_app/editor/fields/checklist.vue | 41 -- .../old_app/editor/fields/colorpicker.vue | 19 - .../old_app/editor/fields/countrypicker.vue | 17 - .../old_app/editor/fields/culturepicker.vue | 39 - .../old_app/editor/fields/currency.vue | 23 - .../old_app/editor/fields/datepicker.vue | 45 -- .../old_app/editor/fields/daterangepicker.vue | 57 -- .../old_app/editor/fields/iconPicker.vue | 23 - .../old_app/editor/fields/inputlist.vue | 32 - .../old_app/editor/fields/language.vue | 47 -- .../old_app/editor/fields/link.vue | 43 -- .../old_app/editor/fields/linkpicker.vue | 44 -- .../editor/fields/mailtemplatepicker.vue | 17 - .../old_app/editor/fields/media.vue | 43 -- .../old_app/editor/fields/modules.vue | 23 - .../old_app/editor/fields/nested.vue | 187 ----- .../old_app/editor/fields/number.vue | 30 - .../old_app/editor/fields/output.vue | 20 - .../old_app/editor/fields/pagepicker.vue | 24 - .../old_app/editor/fields/password-hash.vue | 54 -- .../old_app/editor/fields/password.vue | 28 - .../old_app/editor/fields/rte.vue | 32 - .../old_app/editor/fields/select.vue | 82 --- .../old_app/editor/fields/spacepicker.vue | 17 - .../old_app/editor/fields/state.vue | 19 - .../old_app/editor/fields/static/line.vue | 11 - .../old_app/editor/fields/tags.vue | 23 - .../old_app/editor/fields/text.vue | 28 - .../old_app/editor/fields/textarea.vue | 19 - .../old_app/editor/fields/toggle.vue | 16 - .../old_app/editor/fields/video.vue | 28 - zero.Backoffice.UI/package.json | 1 + zero.Backoffice.UI/vite.config.js | 15 +- .../Applications/ApplicationMapperProfile.cs | 19 + .../Applications/ApplicationPresentation.cs | 12 + .../Applications/ApplicationsController.cs | 22 + zero.Backoffice/Endpoints/UI/UIController.cs | 1 - zero.Backoffice/Endpoints/UI/UIViewModel.cs | 2 +- zero.Backoffice/Plugin.cs | 2 + zero.Backoffice/Resources/backoffice.tpl.html | 7 - ...ZeroBackofficeControllerModelConvention.cs | 2 +- 89 files changed, 1652 insertions(+), 3489 deletions(-) create mode 100644 zero.Backoffice.UI/app/account/account.d.ts create mode 100644 zero.Backoffice.UI/app/account/api.ts rename zero.Backoffice.UI/{old_app/pages/login => app/account}/login.vue (73%) create mode 100644 zero.Backoffice.UI/app/account/store.ts rename zero.Backoffice.UI/app/components/{ui => }/ui-add-button.vue (100%) create mode 100644 zero.Backoffice.UI/app/components/ui-dropdown-button.vue create mode 100644 zero.Backoffice.UI/app/components/ui-dropdown-separator.vue create mode 100644 zero.Backoffice.UI/app/components/ui-dropdown.vue create mode 100644 zero.Backoffice.UI/app/components/ui-localize.vue create mode 100644 zero.Backoffice.UI/app/components/ui-thumbnail.vue rename zero.Backoffice.UI/{old_app/components/forms/property.vue => app/forms/components/ui-property.vue} (100%) rename zero.Backoffice.UI/{old_app/components/forms/error-view.vue => app/forms/form-error-view.vue} (100%) create mode 100644 zero.Backoffice.UI/app/forms/index.ts rename zero.Backoffice.UI/app/forms/{components => }/register.ts (57%) rename zero.Backoffice.UI/{old_app/components/forms/form.vue => app/forms/ui-form.vue} (92%) create mode 100644 zero.Backoffice.UI/app/modules/applications/api.ts create mode 100644 zero.Backoffice.UI/app/modules/applications/index.ts create mode 100644 zero.Backoffice.UI/app/modules/applications/plugin.ts create mode 100644 zero.Backoffice.UI/app/modules/countries/index.ts create mode 100644 zero.Backoffice.UI/app/modules/index.ts delete mode 100644 zero.Backoffice.UI/app/styles/Canvas/_navigation.scss create mode 100644 zero.Backoffice.UI/app/ui/api.ts create mode 100644 zero.Backoffice.UI/app/ui/app-navigation.vue create mode 100644 zero.Backoffice.UI/app/ui/store.ts create mode 100644 zero.Backoffice.UI/app/ui/ui.d.ts delete mode 100644 zero.Backoffice.UI/old_app/editor/blueprint/property.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/blueprint/settings.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/editor-aside.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/editor-component.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/editor-form.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/editor-header.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/editor-infos.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/editor-legacy.scss delete mode 100644 zero.Backoffice.UI/old_app/editor/editor-overlay.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/editor.scss delete mode 100644 zero.Backoffice.UI/old_app/editor/editor.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/alias.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/checklist.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/colorpicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/countrypicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/culturepicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/currency.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/datepicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/daterangepicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/iconPicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/inputlist.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/language.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/link.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/linkpicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/mailtemplatepicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/media.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/modules.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/nested.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/number.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/output.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/pagepicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/password-hash.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/password.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/rte.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/select.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/spacepicker.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/state.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/static/line.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/tags.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/text.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/textarea.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/toggle.vue delete mode 100644 zero.Backoffice.UI/old_app/editor/fields/video.vue create mode 100644 zero.Backoffice/Endpoints/Applications/ApplicationMapperProfile.cs create mode 100644 zero.Backoffice/Endpoints/Applications/ApplicationPresentation.cs create mode 100644 zero.Backoffice/Endpoints/Applications/ApplicationsController.cs diff --git a/zero.Backoffice.UI/app/account/account.d.ts b/zero.Backoffice.UI/app/account/account.d.ts new file mode 100644 index 00000000..16c5795d --- /dev/null +++ b/zero.Backoffice.UI/app/account/account.d.ts @@ -0,0 +1,28 @@ + +declare module 'zero/account' +{ + export interface AccountUser + { + id: string; + currentAppId: string; + isSuper: boolean; + avatarId: string; + email: string; + name: string; + isActive: boolean; + createdDate: string; + flavor?: string; + } + + export interface AccountStoreState + { + user?: AccountUser; + } + + export interface AccountLoginModel + { + email: string; + password: string; + isPersistent: boolean; + } +} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/account/api.ts b/zero.Backoffice.UI/app/account/api.ts new file mode 100644 index 00000000..f92b6f61 --- /dev/null +++ b/zero.Backoffice.UI/app/account/api.ts @@ -0,0 +1,13 @@ +import { AccountLoginModel, AccountUser } from 'zero/account'; +import { get, post, ZeroRequestConfig } from '../services/request'; + +export default { + + getUser: async (config?: ZeroRequestConfig): Promise => await get('backoffice/account/user', { ...config }), + + isAuthenticated: async (config?: ZeroRequestConfig) => await get('backoffice/account/loggedin', { ...config }), + + login: async (model: AccountLoginModel, config?: ZeroRequestConfig) => await post('backoffice/account/login', model, { ...config }), + + logout: async (config?: ZeroRequestConfig) => await post('backoffice/account/logout', null, { ...config }) +}; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/login/login.vue b/zero.Backoffice.UI/app/account/login.vue similarity index 73% rename from zero.Backoffice.UI/old_app/pages/login/login.vue rename to zero.Backoffice.UI/app/account/login.vue index 9a0dd303..7a8966f3 100644 --- a/zero.Backoffice.UI/old_app/pages/login/login.vue +++ b/zero.Backoffice.UI/app/account/login.vue @@ -1,8 +1,7 @@  - @@ -97,15 +108,6 @@ }*/ } - .app-auth-font-trigger - { - position: absolute; - pointer-events: none; - opacity: 0.001; - bottom: 0; - right: 0; - } - .app-auth-inner { display: grid; diff --git a/zero.Backoffice.UI/app/account/store.ts b/zero.Backoffice.UI/app/account/store.ts new file mode 100644 index 00000000..266e0769 --- /dev/null +++ b/zero.Backoffice.UI/app/account/store.ts @@ -0,0 +1,18 @@ + +import { defineStore } from 'pinia'; +import { AccountStoreState } from 'zero/account'; + +export type TranslationState = { + culture: string, + translations: Record +}; + +export const useAccountStore = defineStore('zero.account', { + state: () => ({ + user: undefined + } as AccountStoreState), + + getters: { + isAuthenticated: state => state.user != null + } +}); \ No newline at end of file diff --git a/zero.Backoffice.UI/app/app.vue b/zero.Backoffice.UI/app/app.vue index af015311..0e99f4bb 100644 --- a/zero.Backoffice.UI/app/app.vue +++ b/zero.Backoffice.UI/app/app.vue @@ -1,92 +1,52 @@  \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/index.ts b/zero.Backoffice.UI/app/components/index.ts index 0bffd90b..9455f693 100644 --- a/zero.Backoffice.UI/app/components/index.ts +++ b/zero.Backoffice.UI/app/components/index.ts @@ -11,6 +11,11 @@ import uiStateButton from './ui-state-button.vue'; import uiMessage from './ui-message.vue'; import uiPagination from './ui-pagination.vue'; import uiError from './ui-error.vue'; +import uiLocalize from './ui-localize.vue'; +import uiThumbnail from './ui-thumbnail.vue'; +import uiDropdownSeparator from './ui-dropdown-separator.vue'; +import uiDropdownButton from './ui-dropdown-button.vue'; +import uiDropdown from './ui-dropdown.vue'; export { uiIcon, @@ -25,5 +30,10 @@ export { uiStateButton, uiMessage, uiPagination, - uiError + uiError, + uiLocalize, + uiThumbnail, + uiDropdownSeparator, + uiDropdownButton, + uiDropdown }; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui/ui-add-button.vue b/zero.Backoffice.UI/app/components/ui-add-button.vue similarity index 100% rename from zero.Backoffice.UI/app/components/ui/ui-add-button.vue rename to zero.Backoffice.UI/app/components/ui-add-button.vue diff --git a/zero.Backoffice.UI/app/components/ui-dropdown-button.vue b/zero.Backoffice.UI/app/components/ui-dropdown-button.vue new file mode 100644 index 00000000..11b24342 --- /dev/null +++ b/zero.Backoffice.UI/app/components/ui-dropdown-button.vue @@ -0,0 +1,277 @@ + + + + + + + \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-dropdown-separator.vue b/zero.Backoffice.UI/app/components/ui-dropdown-separator.vue new file mode 100644 index 00000000..30af3628 --- /dev/null +++ b/zero.Backoffice.UI/app/components/ui-dropdown-separator.vue @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-dropdown.vue b/zero.Backoffice.UI/app/components/ui-dropdown.vue new file mode 100644 index 00000000..a5435aeb --- /dev/null +++ b/zero.Backoffice.UI/app/components/ui-dropdown.vue @@ -0,0 +1,187 @@ + + + + + + + \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-localize.vue b/zero.Backoffice.UI/app/components/ui-localize.vue new file mode 100644 index 00000000..00163528 --- /dev/null +++ b/zero.Backoffice.UI/app/components/ui-localize.vue @@ -0,0 +1,38 @@ + + + + \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-thumbnail.vue b/zero.Backoffice.UI/app/components/ui-thumbnail.vue new file mode 100644 index 00000000..0d50bf25 --- /dev/null +++ b/zero.Backoffice.UI/app/components/ui-thumbnail.vue @@ -0,0 +1,30 @@ + + + + \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/zeroRuntime.ts b/zero.Backoffice.UI/app/core/zeroRuntime.ts index 404d5341..7dedcc13 100644 --- a/zero.Backoffice.UI/app/core/zeroRuntime.ts +++ b/zero.Backoffice.UI/app/core/zeroRuntime.ts @@ -6,9 +6,9 @@ import { Zero } from './types/zero'; import { createRouter, RouteRecordRaw, RouterOptions } from 'vue-router'; import registerDirectives from '../directives/register'; import registerComponents from '../components/register'; -import registerFormComponents from '../forms/components/register'; +import registerFormComponents from '../forms/register'; import { getRouterConfig, appendRouterGuards } from './router/routerConfig'; -import countryPlugin from '../modules/countries/plugin'; +import { countryPlugin, applicationPlugin } from '../modules'; export class ZeroRuntime implements Zero { @@ -61,6 +61,7 @@ export class ZeroRuntime implements Zero // install all plugins countryPlugin.install(pluginOptions); + applicationPlugin.install(pluginOptions); } diff --git a/zero.Backoffice.UI/app/directives/v-click-outside.ts b/zero.Backoffice.UI/app/directives/v-click-outside.ts index 0b82912e..46dc8efc 100644 --- a/zero.Backoffice.UI/app/directives/v-click-outside.ts +++ b/zero.Backoffice.UI/app/directives/v-click-outside.ts @@ -1,9 +1,4 @@ -const isServer = vNode => -{ - return typeof vNode.componentInstance !== 'undefined' && vNode.componentInstance.$isServer; -}; - const isPopup = (popupItem, elements) => { if (!popupItem || !elements) @@ -79,7 +74,7 @@ export default { setTimeout(() => { - !isServer(vNode) && document.addEventListener('click', handler); + document.addEventListener('click', handler); }, 200); }, @@ -93,7 +88,7 @@ export default { unbind(el, binding, vNode) { - !isServer(vNode) && document.removeEventListener('click', el.__vueClickOutside__.handler); + document.removeEventListener('click', el.__vueClickOutside__.handler); delete el.__vueClickOutside__; } }; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/env.d.ts b/zero.Backoffice.UI/app/env.d.ts index 6abfa2a2..659d7139 100644 --- a/zero.Backoffice.UI/app/env.d.ts +++ b/zero.Backoffice.UI/app/env.d.ts @@ -5,4 +5,11 @@ declare module '*.vue' { // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types const component: DefineComponent<{}, {}, any> export default component +} + +declare module 'vue' { + import { CompatVue } from '@vue/runtime-dom' + const Vue: CompatVue + export default Vue + export * from '@vue/runtime-dom' } \ No newline at end of file diff --git a/zero.Backoffice.UI/app/forms/components/index.ts b/zero.Backoffice.UI/app/forms/components/index.ts index d77304ac..d7cd151d 100644 --- a/zero.Backoffice.UI/app/forms/components/index.ts +++ b/zero.Backoffice.UI/app/forms/components/index.ts @@ -2,10 +2,12 @@ import uiRte from './ui-rte/ui-rte.vue'; import uiCheckList from './ui-check-list.vue'; import uiSearch from './ui-search.vue'; import uiToggle from './ui-toggle.vue'; +import uiProperty from './ui-property.vue'; export { uiRte, uiCheckList, uiSearch, - uiToggle + uiToggle, + uiProperty }; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/components/forms/property.vue b/zero.Backoffice.UI/app/forms/components/ui-property.vue similarity index 100% rename from zero.Backoffice.UI/old_app/components/forms/property.vue rename to zero.Backoffice.UI/app/forms/components/ui-property.vue diff --git a/zero.Backoffice.UI/old_app/components/forms/error-view.vue b/zero.Backoffice.UI/app/forms/form-error-view.vue similarity index 100% rename from zero.Backoffice.UI/old_app/components/forms/error-view.vue rename to zero.Backoffice.UI/app/forms/form-error-view.vue diff --git a/zero.Backoffice.UI/app/forms/index.ts b/zero.Backoffice.UI/app/forms/index.ts new file mode 100644 index 00000000..85188f68 --- /dev/null +++ b/zero.Backoffice.UI/app/forms/index.ts @@ -0,0 +1,5 @@ +import uiForm from './ui-form.vue'; + +export { + uiForm +}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/forms/components/register.ts b/zero.Backoffice.UI/app/forms/register.ts similarity index 57% rename from zero.Backoffice.UI/app/forms/components/register.ts rename to zero.Backoffice.UI/app/forms/register.ts index 8e137b10..1c15ed6f 100644 --- a/zero.Backoffice.UI/app/forms/components/register.ts +++ b/zero.Backoffice.UI/app/forms/register.ts @@ -1,13 +1,19 @@ import { App } from 'vue'; +import * as partials from './components/index'; import * as components from './index'; export default function (app: App) { + for (var key in partials) + { + let component = partials[key]; + app.component(key, component.default || component); + } + for (var key in components) { let component = components[key]; - app.component(key, component.default || component); } }; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/components/forms/form.vue b/zero.Backoffice.UI/app/forms/ui-form.vue similarity index 92% rename from zero.Backoffice.UI/old_app/components/forms/form.vue rename to zero.Backoffice.UI/app/forms/ui-form.vue index c7783ed8..12e26307 100644 --- a/zero.Backoffice.UI/old_app/components/forms/form.vue +++ b/zero.Backoffice.UI/app/forms/ui-form.vue @@ -4,27 +4,31 @@
- + - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/ui/store.ts b/zero.Backoffice.UI/app/ui/store.ts new file mode 100644 index 00000000..f6de43fa --- /dev/null +++ b/zero.Backoffice.UI/app/ui/store.ts @@ -0,0 +1,27 @@ + +import { defineStore } from 'pinia'; +import { UiIconSet, UiSection, UiSettingsGroup, UiStoreState } from 'zero/ui'; +import api from './api'; + +export const useUiStore = defineStore('zero.ui', { + state: () => ({ + sections: [], + settingGroups: [], + iconSets: [] + } as UiStoreState), + + actions: { + async setup() + { + const values = await Promise.all([ + api.getSections(), + api.getSettingGroups(), + api.getIconSets() + ]); + + this.sections = values[0] as UiSection[]; + this.settingGroups = values[1] as UiSettingsGroup[]; + this.iconSets = values[2] as UiIconSet[]; + } + } +}); \ No newline at end of file diff --git a/zero.Backoffice.UI/app/ui/ui.d.ts b/zero.Backoffice.UI/app/ui/ui.d.ts new file mode 100644 index 00000000..3dfeb47f --- /dev/null +++ b/zero.Backoffice.UI/app/ui/ui.d.ts @@ -0,0 +1,44 @@ + +declare module 'zero/ui' +{ + export interface UiStoreState + { + sections: UiSection[]; + settingGroups: UiSettingsGroup[]; + iconSets: UiIconSet[]; + } + + export interface UiSection + { + alias: string; + name: string; + icon: string; + url: string; + isExternal: boolean; + children: UiSection[]; + } + + export interface UiSettingsGroup + { + name: string; + items: UiSettingsItem[]; + } + + export interface UiSettingsItem + { + alias: string; + name: string; + description: string; + icon: string; + url: string; + isPlugin: boolean; + } + + export interface UiIconSet + { + alias: string; + name: string; + prefix: string; + icons: string[]; + } +} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/utils/arrays.ts b/zero.Backoffice.UI/app/utils/arrays.ts index 7cd0c092..06d239ee 100644 --- a/zero.Backoffice.UI/app/utils/arrays.ts +++ b/zero.Backoffice.UI/app/utils/arrays.ts @@ -1,4 +1,6 @@ +import { groupBy as _groupBy } from 'underscore'; + const arrayMoveMutate = (array: any[], from: number, to: number) => { const startIndex = to < 0 ? array.length + to : to; @@ -54,6 +56,16 @@ export function arrayRemove(array: any[], value: any): number } +/** + * Groups an array by a property key + * @returns {any} Array groups + */ +export function arrayGroupBy(array: any[], key: string): any +{ + return _groupBy(array, key); +} + + /** * Converts an object path to an array of path parts * @returns {string[]} Object paths as array diff --git a/zero.Backoffice.UI/index.html b/zero.Backoffice.UI/index.html index 4f4810cc..d0b32514 100644 --- a/zero.Backoffice.UI/index.html +++ b/zero.Backoffice.UI/index.html @@ -17,10 +17,6 @@
- diff --git a/zero.Backoffice.UI/old_app/editor/blueprint/property.vue b/zero.Backoffice.UI/old_app/editor/blueprint/property.vue deleted file mode 100644 index 88b436a6..00000000 --- a/zero.Backoffice.UI/old_app/editor/blueprint/property.vue +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - - diff --git a/zero.Backoffice.UI/old_app/editor/blueprint/settings.vue b/zero.Backoffice.UI/old_app/editor/blueprint/settings.vue deleted file mode 100644 index 63615d91..00000000 --- a/zero.Backoffice.UI/old_app/editor/blueprint/settings.vue +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/editor-aside.vue b/zero.Backoffice.UI/old_app/editor/editor-aside.vue deleted file mode 100644 index ed3f6dc2..00000000 --- a/zero.Backoffice.UI/old_app/editor/editor-aside.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/editor-component.vue b/zero.Backoffice.UI/old_app/editor/editor-component.vue deleted file mode 100644 index a1b2cba4..00000000 --- a/zero.Backoffice.UI/old_app/editor/editor-component.vue +++ /dev/null @@ -1,192 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/editor-form.vue b/zero.Backoffice.UI/old_app/editor/editor-form.vue deleted file mode 100644 index 7057c60f..00000000 --- a/zero.Backoffice.UI/old_app/editor/editor-form.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/editor-header.vue b/zero.Backoffice.UI/old_app/editor/editor-header.vue deleted file mode 100644 index 7c8b19c2..00000000 --- a/zero.Backoffice.UI/old_app/editor/editor-header.vue +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/editor-infos.vue b/zero.Backoffice.UI/old_app/editor/editor-infos.vue deleted file mode 100644 index 80f08ed6..00000000 --- a/zero.Backoffice.UI/old_app/editor/editor-infos.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/editor-legacy.scss b/zero.Backoffice.UI/old_app/editor/editor-legacy.scss deleted file mode 100644 index 28973131..00000000 --- a/zero.Backoffice.UI/old_app/editor/editor-legacy.scss +++ /dev/null @@ -1,156 +0,0 @@ - - -.editor > .ui-view-box -{ - padding-top: 0; -} - -.editor -{ - .ui-tabs-list - { - padding-top: 0; - } - - .ui-tab > h3 - { - border-bottom: 1px solid var(--color-line); - padding-bottom: var(--padding-m); - margin-bottom: var(--padding); - } -} - -.editor-outer -{ - width: 100%; - max-width: 1320px; - margin: 0 auto; - - &.-infos-aside:not(.is-page) - { - display: grid; - //grid-template-columns: 1fr 340px var(--padding); - align-items: flex-start; - } - - &:not(.has-tabs) - { - .ui-tabs-list - { - display: none; - } - - .ui-tab, .editor-infos - { - margin-top: 0; - } - } -} - -.editor-infos -{ - margin: 61px 0 0; - position: sticky; - top: var(--padding); - - .ui-box - { - margin-left: 0; - margin-right: 0; - margin-bottom: 0; - } - - .ui-box:first-child - { - margin-top: 0; - } - - .ui-box + .ui-box - { - margin-top: 16px; - } - - .ui-box + .ui-box.is-light - { - margin-top: 1px; - border-top-left-radius: 0; - border-top-right-radius: 0; - } - - .ui-property + .ui-property - { - margin-top: 15px; - padding-top: 10px; - border-top: none; - } - - .is-toggle - { - align-items: center; - } - - .ui-property-label - { - width: auto; - padding-right: 20px; - } - - .ui-property-content - { - flex: 0 1 auto; - } - - .ui-property - { - display: flex; - justify-content: space-between; - } -} - -.editor-active-toggle -{ - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -/*.editor-active-toggle.is-active -{ - background: var(--color-accent-info-bg); - - .ui-property-label - { - color: var(--color-accent-info); - } -}*/ - -.editor-error -{ - background: transparent; - min-height: calc(100vh - 100px); -} - - -/// tabs as boxes - -.editor-outer.as-boxes -{ - .ui-tabs-list - { - display: none !important; - } - - .ui-tab - { - display: block !important; - } - - .ui-tab:first-child - { - margin-top: 0; - } - - .editor-infos - { - margin-top: 0; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/editor-overlay.vue b/zero.Backoffice.UI/old_app/editor/editor-overlay.vue deleted file mode 100644 index 9e2388e8..00000000 --- a/zero.Backoffice.UI/old_app/editor/editor-overlay.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/editor.scss b/zero.Backoffice.UI/old_app/editor/editor.scss deleted file mode 100644 index 425c22b2..00000000 --- a/zero.Backoffice.UI/old_app/editor/editor.scss +++ /dev/null @@ -1,156 +0,0 @@ - -.editor -{ - width: 100%; - max-width: 960px; - margin: 0 auto; - padding: 0 var(--padding) var(--padding); - - &:not(.display-tabs), &.hide-tabs - { - .ui-tabs-list - { - display: none; - } - - .ui-tab, .editor-infos - { - margin-top: 0; - } - - .editor-aside - { - margin-top: 0; - } - } - - &.has-sidebar - { - max-width: 1580px; - display: grid; - grid-template-columns: minmax(auto, 1fr) 260px; - grid-gap: 0 var(--padding); - } -} - -.editor.has-below .ui-tab.ui-box -{ - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -.editor.display-boxes .ui-tab -{ - display: inherit !important; -} - -.editor.display-boxes .ui-tab + .ui-tab -{ - margin-top: var(--padding-m); -} - -.editor-tab-headline -{ - font-size: var(--font-size-l) !important; - font-weight: 900 !important; - margin-bottom: var(--padding) !important; -} - -.editor-tabs -{ - .ui-tabs-list - { - padding: 0; - margin-bottom: 0; - } - - .ui-tab - { - margin: 0; - } -} - -.editor-aside -{ - margin-top: 58px; -} - -.editor-infos -{ - display: block; - //border-top: 1px solid var(--color-line-onbg); -} - -.theme-dark .editor-infos -{ - border-top: none; -} - -.editor-infos .ui-box -{ - margin: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; - display: flex; - gap: var(--padding-l); -} - -.editor-infos .ui-property -{ - flex-direction: column; - border-top: none; - margin: 0; - padding: 0; - grid-gap: 6px !important; -} - -.editor-infos .ui-property-label -{ - font-size: var(--font-size-s); - font-weight: 400; - color: var(--color-text-dim); - width: 100%; - padding-right: 0; -} - -.editor-infos .ui-property-content -{ - font-size: var(--font-size-s); - font-weight: 400; - color: var(--color-text-dim); -} - -.editor-infos-aside .ui-property + .ui-property -{ - margin-top: 0; - padding-top: 0; - border-top: none; -} - -.editor-aside-links -{ - display: flex; - width: 100%; - margin-bottom: -5px; -} - -.editor-aside-links .ui-link -{ - color: var(--color-text-dim); - font-size: var(--font-size-s); - text-decoration: none !important; - position: relative; -} - -.editor-aside-links .ui-link + .ui-link -{ - margin-left: 20px; -} - -.editor-aside-links .ui-link + .ui-link:before -{ - content: '·'; - position: absolute; - left: -12px; - top: -1px; -} \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/editor.vue b/zero.Backoffice.UI/old_app/editor/editor.vue deleted file mode 100644 index 263dc591..00000000 --- a/zero.Backoffice.UI/old_app/editor/editor.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/alias.vue b/zero.Backoffice.UI/old_app/editor/fields/alias.vue deleted file mode 100644 index 4849bf88..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/alias.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/checklist.vue b/zero.Backoffice.UI/old_app/editor/fields/checklist.vue deleted file mode 100644 index 2ec1e860..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/checklist.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/colorpicker.vue b/zero.Backoffice.UI/old_app/editor/fields/colorpicker.vue deleted file mode 100644 index cc7f0e9b..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/colorpicker.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/countrypicker.vue b/zero.Backoffice.UI/old_app/editor/fields/countrypicker.vue deleted file mode 100644 index ce74b036..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/countrypicker.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/culturepicker.vue b/zero.Backoffice.UI/old_app/editor/fields/culturepicker.vue deleted file mode 100644 index 4065998e..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/culturepicker.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/currency.vue b/zero.Backoffice.UI/old_app/editor/fields/currency.vue deleted file mode 100644 index bc3e906d..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/currency.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/datepicker.vue b/zero.Backoffice.UI/old_app/editor/fields/datepicker.vue deleted file mode 100644 index ba3302cd..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/datepicker.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/daterangepicker.vue b/zero.Backoffice.UI/old_app/editor/fields/daterangepicker.vue deleted file mode 100644 index db16ab65..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/daterangepicker.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/iconPicker.vue b/zero.Backoffice.UI/old_app/editor/fields/iconPicker.vue deleted file mode 100644 index 9e7c0856..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/iconPicker.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/inputlist.vue b/zero.Backoffice.UI/old_app/editor/fields/inputlist.vue deleted file mode 100644 index 7410c2fe..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/inputlist.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/language.vue b/zero.Backoffice.UI/old_app/editor/fields/language.vue deleted file mode 100644 index f6d85432..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/language.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/link.vue b/zero.Backoffice.UI/old_app/editor/fields/link.vue deleted file mode 100644 index 1b885e0a..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/link.vue +++ /dev/null @@ -1,43 +0,0 @@ - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/linkpicker.vue b/zero.Backoffice.UI/old_app/editor/fields/linkpicker.vue deleted file mode 100644 index aef0d4ce..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/linkpicker.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/mailtemplatepicker.vue b/zero.Backoffice.UI/old_app/editor/fields/mailtemplatepicker.vue deleted file mode 100644 index 573beb5b..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/mailtemplatepicker.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/media.vue b/zero.Backoffice.UI/old_app/editor/fields/media.vue deleted file mode 100644 index 18e05821..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/media.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/modules.vue b/zero.Backoffice.UI/old_app/editor/fields/modules.vue deleted file mode 100644 index e4db9789..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/modules.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/nested.vue b/zero.Backoffice.UI/old_app/editor/fields/nested.vue deleted file mode 100644 index 77fb4784..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/nested.vue +++ /dev/null @@ -1,187 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/number.vue b/zero.Backoffice.UI/old_app/editor/fields/number.vue deleted file mode 100644 index d972048f..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/number.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/output.vue b/zero.Backoffice.UI/old_app/editor/fields/output.vue deleted file mode 100644 index 788a2fbc..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/output.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/pagepicker.vue b/zero.Backoffice.UI/old_app/editor/fields/pagepicker.vue deleted file mode 100644 index 54c997a6..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/pagepicker.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/password-hash.vue b/zero.Backoffice.UI/old_app/editor/fields/password-hash.vue deleted file mode 100644 index ef7f9c00..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/password-hash.vue +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/password.vue b/zero.Backoffice.UI/old_app/editor/fields/password.vue deleted file mode 100644 index a2e215c7..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/password.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/rte.vue b/zero.Backoffice.UI/old_app/editor/fields/rte.vue deleted file mode 100644 index 78bb7f01..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/rte.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/select.vue b/zero.Backoffice.UI/old_app/editor/fields/select.vue deleted file mode 100644 index f822af7f..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/select.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/spacepicker.vue b/zero.Backoffice.UI/old_app/editor/fields/spacepicker.vue deleted file mode 100644 index c6726811..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/spacepicker.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/state.vue b/zero.Backoffice.UI/old_app/editor/fields/state.vue deleted file mode 100644 index 97796e51..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/state.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/static/line.vue b/zero.Backoffice.UI/old_app/editor/fields/static/line.vue deleted file mode 100644 index f39baecd..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/static/line.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/tags.vue b/zero.Backoffice.UI/old_app/editor/fields/tags.vue deleted file mode 100644 index 0949a237..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/tags.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/text.vue b/zero.Backoffice.UI/old_app/editor/fields/text.vue deleted file mode 100644 index d5d18e2a..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/text.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/textarea.vue b/zero.Backoffice.UI/old_app/editor/fields/textarea.vue deleted file mode 100644 index ef253571..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/textarea.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/toggle.vue b/zero.Backoffice.UI/old_app/editor/fields/toggle.vue deleted file mode 100644 index 2a2c9a23..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/toggle.vue +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/editor/fields/video.vue b/zero.Backoffice.UI/old_app/editor/fields/video.vue deleted file mode 100644 index 23220763..00000000 --- a/zero.Backoffice.UI/old_app/editor/fields/video.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/package.json b/zero.Backoffice.UI/package.json index aa654b03..e1e188e9 100644 --- a/zero.Backoffice.UI/package.json +++ b/zero.Backoffice.UI/package.json @@ -17,6 +17,7 @@ "underscore": "^1.13.1", "vue": "^3.2.24", "vue-router": "^4.0.12", + "@vue/compat": "^3.2.24", "mitt": "^3.0.0", "pinia": "^2.0.6" }, diff --git a/zero.Backoffice.UI/vite.config.js b/zero.Backoffice.UI/vite.config.js index 8a5f58f3..ca3167fb 100644 --- a/zero.Backoffice.UI/vite.config.js +++ b/zero.Backoffice.UI/vite.config.js @@ -67,7 +67,20 @@ let config = defineConfig({ } } }, - plugins: [vue(), ...zeroPlugins], + resolve: { + alias: { + vue: '@vue/compat' + } + }, + plugins: [vue({ + template: { + compilerOptions: { + compatConfig: { + MODE: 2 + } + } + } + }), ...zeroPlugins], build: { manifest: true, outDir: 'dist/zero', diff --git a/zero.Backoffice/Endpoints/Applications/ApplicationMapperProfile.cs b/zero.Backoffice/Endpoints/Applications/ApplicationMapperProfile.cs new file mode 100644 index 00000000..8e4b1903 --- /dev/null +++ b/zero.Backoffice/Endpoints/Applications/ApplicationMapperProfile.cs @@ -0,0 +1,19 @@ +namespace zero.Backoffice.Endpoints.Applications; + +public class ApplicationMapperProfile : ZeroMapperProfile +{ + public override void Configure(IZeroMapper mapper) + { + mapper.Define((source, ctx) => new(), Map); + } + + + protected virtual void Map(Application source, ApplicationPresentation target, IZeroMapperContext ctx) + { + target.Id = source.Id; + target.Alias = source.Alias; + target.Name = source.Name; + target.ImageId = source.IconId.Or(source.ImageId); + target.IsActive = source.IsActive; + } +} \ No newline at end of file diff --git a/zero.Backoffice/Endpoints/Applications/ApplicationPresentation.cs b/zero.Backoffice/Endpoints/Applications/ApplicationPresentation.cs new file mode 100644 index 00000000..411c7961 --- /dev/null +++ b/zero.Backoffice/Endpoints/Applications/ApplicationPresentation.cs @@ -0,0 +1,12 @@ +namespace zero.Backoffice.Endpoints.Applications; + +public class ApplicationPresentation : ZeroIdEntity +{ + public string Alias { get; set; } + + public string Name { get; set; } + + public bool IsActive { get; set; } + + public string ImageId { get; set; } +} \ No newline at end of file diff --git a/zero.Backoffice/Endpoints/Applications/ApplicationsController.cs b/zero.Backoffice/Endpoints/Applications/ApplicationsController.cs new file mode 100644 index 00000000..7f0ff7f2 --- /dev/null +++ b/zero.Backoffice/Endpoints/Applications/ApplicationsController.cs @@ -0,0 +1,22 @@ +using Microsoft.AspNetCore.Mvc; +using zero.Api.Filters; + +namespace zero.Backoffice.Endpoints.Applications; + +[ZeroSystemApi] +public class ApplicationsController : ZeroBackofficeController +{ + readonly IApplicationStore Store; + + public ApplicationsController(IApplicationStore store) + { + Store = store; + } + + [HttpGet("")] + public virtual async Task> Get() + { + Paged result = await Store.Load(1, 100); + return Mapper.Map(result); + } +} \ No newline at end of file diff --git a/zero.Backoffice/Endpoints/UI/UIController.cs b/zero.Backoffice/Endpoints/UI/UIController.cs index 436229a8..7fce37cd 100644 --- a/zero.Backoffice/Endpoints/UI/UIController.cs +++ b/zero.Backoffice/Endpoints/UI/UIController.cs @@ -1,6 +1,5 @@ using Microsoft.AspNetCore.Mvc; using System.Collections; -using zero.Api.Endpoints.Applications; using zero.Backoffice.Services; namespace zero.Backoffice.Endpoints.UI; diff --git a/zero.Backoffice/Endpoints/UI/UIViewModel.cs b/zero.Backoffice/Endpoints/UI/UIViewModel.cs index 40767418..bf3d0023 100644 --- a/zero.Backoffice/Endpoints/UI/UIViewModel.cs +++ b/zero.Backoffice/Endpoints/UI/UIViewModel.cs @@ -1,4 +1,4 @@ -//using zero.Api.Endpoints.Applications; +//using zero.Backoffice.Endpoints.Applications; //namespace zero.Backoffice.Endpoints.UI; diff --git a/zero.Backoffice/Plugin.cs b/zero.Backoffice/Plugin.cs index 5cbd6c0b..5972fdbf 100644 --- a/zero.Backoffice/Plugin.cs +++ b/zero.Backoffice/Plugin.cs @@ -6,6 +6,7 @@ using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; using System.IO; using zero.Backoffice.Endpoints.Account; +using zero.Backoffice.Endpoints.Applications; using zero.Backoffice.Services; namespace zero.Backoffice; @@ -29,6 +30,7 @@ public class ZeroBackofficePlugin : ZeroPlugin services.AddHostedService(); services.AddTransient(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); diff --git a/zero.Backoffice/Resources/backoffice.tpl.html b/zero.Backoffice/Resources/backoffice.tpl.html index 3401c4e7..4c008e68 100644 --- a/zero.Backoffice/Resources/backoffice.tpl.html +++ b/zero.Backoffice/Resources/backoffice.tpl.html @@ -19,13 +19,6 @@
{svg} - - - - {js} diff --git a/zero.Backoffice/ZeroBackofficeControllerModelConvention.cs b/zero.Backoffice/ZeroBackofficeControllerModelConvention.cs index c0e06d6c..0b22b2fd 100644 --- a/zero.Backoffice/ZeroBackofficeControllerModelConvention.cs +++ b/zero.Backoffice/ZeroBackofficeControllerModelConvention.cs @@ -16,7 +16,7 @@ public class ZeroBackofficeControllerModelConvention : ZeroApiControllerModelCon readonly bool RuntimeIsAppAware = false; - public ZeroBackofficeControllerModelConvention(string zeroPath, string backofficeApiPath = "backoffice", bool isAppAware = false) : base(zeroPath, backofficeApiPath, isAppAware) + public ZeroBackofficeControllerModelConvention(string zeroPath, string backofficeApiPath = "api/backoffice", bool isAppAware = false) : base(zeroPath, backofficeApiPath, isAppAware) { RuntimeIsAppAware = isAppAware; AppAwareRouteModel = BuildRouteModel(zeroPath, backofficeApiPath, true);