From e42f4d91646839d16e8007b0057576ccc8ff1425 Mon Sep 17 00:00:00 2001 From: Dusan Vuckovic Date: Fri, 3 May 2024 13:02:57 +0200 Subject: [PATCH] Feature: Desktop - Add form field permissions. --- .../components/CommonSelect/CommonSelect.vue | 59 +-- .../FieldAutoCompleteInput.vue | 4 +- .../FieldPermissionsInput.vue | 218 ++++++++++ .../__tests__/FieldPermissions.spec.ts | 302 +++++++++++++ .../Form/fields/FieldPermissions/index.ts | 26 ++ .../Form/fields/FieldPermissions/types.ts | 22 + .../fields/FieldSelect/FieldSelectInput.vue | 4 +- .../FieldTreeSelect/FieldTreeSelectInput.vue | 4 +- .../FieldTreeSelectInputDropdown.vue | 59 +-- .../NavigationMenu/NavigationMenu.vue | 12 +- .../NavigationMenu/NavigationMenuFilter.vue | 33 +- .../composables/useTransitionCollapse.ts | 51 +++ .../pages/dashboard/views/Playground.vue | 396 +++++++++++++++++- .../apps/desktop/styles/transitions.css | 16 +- i18n/zammad.pot | 4 + 15 files changed, 1063 insertions(+), 147 deletions(-) create mode 100644 app/frontend/apps/desktop/components/Form/fields/FieldPermissions/FieldPermissionsInput.vue create mode 100644 app/frontend/apps/desktop/components/Form/fields/FieldPermissions/__tests__/FieldPermissions.spec.ts create mode 100644 app/frontend/apps/desktop/components/Form/fields/FieldPermissions/index.ts create mode 100644 app/frontend/apps/desktop/components/Form/fields/FieldPermissions/types.ts create mode 100644 app/frontend/apps/desktop/composables/useTransitionCollapse.ts diff --git a/app/frontend/apps/desktop/components/CommonSelect/CommonSelect.vue b/app/frontend/apps/desktop/components/CommonSelect/CommonSelect.vue index b7671990a2c9..52d35eabf85f 100644 --- a/app/frontend/apps/desktop/components/CommonSelect/CommonSelect.vue +++ b/app/frontend/apps/desktop/components/CommonSelect/CommonSelect.vue @@ -29,6 +29,7 @@ import type { AutoCompleteOption } from '#shared/components/Form/fields/FieldAut import testFlags from '#shared/utils/testFlags.ts' import CommonLabel from '#shared/components/CommonLabel/CommonLabel.vue' import { i18n } from '#shared/i18n.ts' +import { useTransitionCollapse } from '#desktop/composables/useTransitionCollapse.ts' import CommonSelectItem from './CommonSelectItem.vue' import { useCommonSelect } from './useCommonSelect.ts' import type { CommonSelectInternalInstance } from './types.ts' @@ -305,7 +306,8 @@ const emptyLabelText = computed(() => { return props.filter ? __('No results found') : __('Start typing to search…') }) -const duration = VITE_TEST_MODE ? undefined : { enter: 300, leave: 200 } +const { collapseDuration, collapseEnter, collapseAfterEnter, collapseLeave } = + useTransitionCollapse() diff --git a/app/frontend/apps/desktop/styles/transitions.css b/app/frontend/apps/desktop/styles/transitions.css index 828afe8e32d2..09c5a9e6c8cb 100644 --- a/app/frontend/apps/desktop/styles/transitions.css +++ b/app/frontend/apps/desktop/styles/transitions.css @@ -28,23 +28,17 @@ } } -.slide { +.collapse { &-enter-active, &-leave-active { transition: - transform 0.2s ease, - max-height 0.2s ease-out; + height 0.2s ease-in-out, + opacity 0.2s ease; + overflow: hidden; } &-enter-from, &-leave-to { - transform: translateY(-5px); - max-height: 0; /* Set start value otherwise transition is not working */ - } - - &-enter-to, - &-leave-from { - transform: translateY(0); - max-height: 100px; /* We need a fix value here to work maybe custom property or via JS */ + opacity: 0; } } diff --git a/i18n/zammad.pot b/i18n/zammad.pot index 3db6fbac2db2..b21afba9f809 100644 --- a/i18n/zammad.pot +++ b/i18n/zammad.pot @@ -14508,6 +14508,10 @@ msgstr "" msgid "Toggle AM/PM mode" msgstr "" +#: app/frontend/apps/desktop/components/Form/fields/FieldPermissions/FieldPermissionsInput.vue +msgid "Toggle Group" +msgstr "" + #: app/assets/javascripts/app/controllers/_plugin/keyboard_shortcuts.coffee msgid "Toggle dark mode" msgstr ""