diff --git a/packages/nc-gui/assets/nc-icons/plus-square.svg b/packages/nc-gui/assets/nc-icons/plus-square.svg new file mode 100644 index 0000000000..d3750d1bb2 --- /dev/null +++ b/packages/nc-gui/assets/nc-icons/plus-square.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/packages/nc-gui/assets/style.scss b/packages/nc-gui/assets/style.scss index c403043701..ace7cb0740 100644 --- a/packages/nc-gui/assets/style.scss +++ b/packages/nc-gui/assets/style.scss @@ -3,8 +3,8 @@ @import '@vue-flow/core/dist/theme-default.css'; :root { - --sidebar-top-height: 9.75rem; --topbar-height: 3.1rem; + --sidebar-bottom-height: 8.5rem; --new-header-height: 3.5rem; --tw-text-opacity: 1; --navbar-bg: #FAFAFA; @@ -90,6 +90,29 @@ main { } } +.nc-scrollbar-sm-dark { + overflow-y: scroll; + overflow-x: hidden; + + &::-webkit-scrollbar { + width: 2px; + height: 2px; + } + &::-webkit-scrollbar-track-piece { + width: 0px; + } + &::-webkit-scrollbar { + @apply bg-transparent; + } + &::-webkit-scrollbar-thumb { + width: 4px; + @apply bg-gray-300 ; + } + &::-webkit-scrollbar-thumb:hover { + @apply bg-gray-400; + } +} + .nc-scrollbar-x-md { overflow-x: scroll; @@ -505,7 +528,7 @@ a { padding: 0 !important; } .ant-popover-inner-content { - @apply !px-1.5 !py-1 text-xs text-white bg-black; + @apply !px-1.5 !py-1 text-xs; } .ant-tooltip-inner { @apply !px-1.5 !py-1 text-xs text-white bg-black; @@ -515,4 +538,8 @@ a { .ant-skeleton-input { @apply !h-full; +} + +.nc-toolbar-dropdown { + @apply !rounded-2xl; } \ No newline at end of file diff --git a/packages/nc-gui/components.d.ts b/packages/nc-gui/components.d.ts index 9b24a0e022..d327aa0029 100644 --- a/packages/nc-gui/components.d.ts +++ b/packages/nc-gui/components.d.ts @@ -50,6 +50,7 @@ declare module '@vue/runtime-core' { AMenuItemGroup: typeof import('ant-design-vue/es')['MenuItemGroup'] AModal: typeof import('ant-design-vue/es')['Modal'] APagination: typeof import('ant-design-vue/es')['Pagination'] + APopover: typeof import('ant-design-vue/es')['Popover'] ARadio: typeof import('ant-design-vue/es')['Radio'] ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup'] ARate: typeof import('ant-design-vue/es')['Rate'] @@ -80,10 +81,12 @@ declare module '@vue/runtime-core' { ClarityColorPickerSolid: typeof import('~icons/clarity/color-picker-solid')['default'] ClaritySuccessLine: typeof import('~icons/clarity/success-line')['default'] IcBaselineMoreVert: typeof import('~icons/ic/baseline-more-vert')['default'] + IcOutlineAccessTime: typeof import('~icons/ic/outline-access-time')['default'] IcOutlineInsertDriveFile: typeof import('~icons/ic/outline-insert-drive-file')['default'] IcRoundEdit: typeof import('~icons/ic/round-edit')['default'] IcRoundKeyboardArrowDown: typeof import('~icons/ic/round-keyboard-arrow-down')['default'] IcRoundSearch: typeof import('~icons/ic/round-search')['default'] + IcRoundStarBorder: typeof import('~icons/ic/round-star-border')['default'] LogosGoogleGmail: typeof import('~icons/logos/google-gmail')['default'] MaterialSymbolsArrowCircleLeftRounded: typeof import('~icons/material-symbols/arrow-circle-left-rounded')['default'] MaterialSymbolsArrowCircleRightRounded: typeof import('~icons/material-symbols/arrow-circle-right-rounded')['default'] @@ -93,6 +96,8 @@ declare module '@vue/runtime-core' { MaterialSymbolsDarkModeOutline: typeof import('~icons/material-symbols/dark-mode-outline')['default'] MaterialSymbolsDeleteOutlineRounded: typeof import('~icons/material-symbols/delete-outline-rounded')['default'] MaterialSymbolsFileCopyOutline: typeof import('~icons/material-symbols/file-copy-outline')['default'] + MaterialSymbolsGroupOutlineRounded: typeof import('~icons/material-symbols/group-outline-rounded')['default'] + MaterialSymbolsInboxOutlineRounded: typeof import('~icons/material-symbols/inbox-outline-rounded')['default'] MaterialSymbolsKeyboardArrowDownRounded: typeof import('~icons/material-symbols/keyboard-arrow-down-rounded')['default'] MaterialSymbolsKeyboardReturn: typeof import('~icons/material-symbols/keyboard-return')['default'] MaterialSymbolsLightModeOutline: typeof import('~icons/material-symbols/light-mode-outline')['default'] @@ -121,15 +126,20 @@ declare module '@vue/runtime-core' { MdiChatProcessingOutline: typeof import('~icons/mdi/chat-processing-outline')['default'] MdiCheck: typeof import('~icons/mdi/check')['default'] MdiChevronDown: typeof import('~icons/mdi/chevron-down')['default'] + MdiChevronLeft: typeof import('~icons/mdi/chevron-left')['default'] MdiChevronRight: typeof import('~icons/mdi/chevron-right')['default'] MdiCircleMedium: typeof import('~icons/mdi/circle-medium')['default'] MdiClose: typeof import('~icons/mdi/close')['default'] + MdiCloseCircleOutline: typeof import('~icons/mdi/close-circle-outline')['default'] MdiCodeTags: typeof import('~icons/mdi/code-tags')['default'] MdiContentCopy: typeof import('~icons/mdi/content-copy')['default'] MdiCurrencyUsd: typeof import('~icons/mdi/currency-usd')['default'] + MdiDatabaseOutline: typeof import('~icons/mdi/database-outline')['default'] + MdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default'] MdiDiscord: typeof import('~icons/mdi/discord')['default'] MdiDotsHorizontal: typeof import('~icons/mdi/dots-horizontal')['default'] MdiDotsVertical: typeof import('~icons/mdi/dots-vertical')['default'] + MdiEditOutline: typeof import('~icons/mdi/edit-outline')['default'] MdiEye: typeof import('~icons/mdi/eye')['default'] MdiFlag: typeof import('~icons/mdi/flag')['default'] MdiFolder: typeof import('~icons/mdi/folder')['default'] @@ -143,6 +153,8 @@ declare module '@vue/runtime-core' { MdiMicrosoftTeams: typeof import('~icons/mdi/microsoft-teams')['default'] MdiMoonFull: typeof import('~icons/mdi/moon-full')['default'] MdiPlus: typeof import('~icons/mdi/plus')['default'] + MdiPlusOutline: typeof import('~icons/mdi/plus-outline')['default'] + MdiRefresh: typeof import('~icons/mdi/refresh')['default'] MdiReload: typeof import('~icons/mdi/reload')['default'] MdiRocketLaunchOutline: typeof import('~icons/mdi/rocket-launch-outline')['default'] MdiScriptTextOutline: typeof import('~icons/mdi/script-text-outline')['default'] diff --git a/packages/nc-gui/components/api-client/Params.vue b/packages/nc-gui/components/api-client/Params.vue index 49e1eaca74..61aa3f1f2c 100644 --- a/packages/nc-gui/components/api-client/Params.vue +++ b/packages/nc-gui/components/api-client/Params.vue @@ -23,7 +23,6 @@ const deleteParamRow = (i: number) => { - @@ -40,11 +39,6 @@ const deleteParamRow = (i: number) => { -
Parameter Name
- - - - diff --git a/packages/nc-gui/components/cell/DateTimePicker.vue b/packages/nc-gui/components/cell/DateTimePicker.vue index 38c0d1417d..a7dc723f14 100644 --- a/packages/nc-gui/components/cell/DateTimePicker.vue +++ b/packages/nc-gui/components/cell/DateTimePicker.vue @@ -1,5 +1,6 @@ @@ -652,7 +662,7 @@ const DlgProjectDuplicateOnOk = async (jobData: { id: string; project_id: string :key="`sortable-${base.id}-${base.id && base.id in keys ? keys[base.id] : '0'}`" :nc-base="base.id" > - + @@ -726,7 +736,7 @@ const DlgProjectDuplicateOnOk = async (jobData: { id: string; project_id: string } :deep(.ant-collapse-header) { - @apply !mx-0 !pl-8.75 !pr-1 !py-0.75 hover:bg-gray-100 !rounded-md; + @apply !mx-0 !pl-8.75 !pr-1 !py-0.75 hover:bg-gray-200 !rounded-md; } :deep(.ant-collapse-header:hover .nc-sidebar-base-node-btns) { diff --git a/packages/nc-gui/components/dashboard/TreeViewNew/ProjectWrapper.vue b/packages/nc-gui/components/dashboard/TreeView/ProjectWrapper.vue similarity index 100% rename from packages/nc-gui/components/dashboard/TreeViewNew/ProjectWrapper.vue rename to packages/nc-gui/components/dashboard/TreeView/ProjectWrapper.vue diff --git a/packages/nc-gui/components/dashboard/TreeViewNew/TableList.vue b/packages/nc-gui/components/dashboard/TreeView/TableList.vue similarity index 100% rename from packages/nc-gui/components/dashboard/TreeViewNew/TableList.vue rename to packages/nc-gui/components/dashboard/TreeView/TableList.vue diff --git a/packages/nc-gui/components/dashboard/TreeViewNew/TableNode.vue b/packages/nc-gui/components/dashboard/TreeView/TableNode.vue similarity index 94% rename from packages/nc-gui/components/dashboard/TreeViewNew/TableNode.vue rename to packages/nc-gui/components/dashboard/TreeView/TableNode.vue index 4a6b9b6ce2..5acaea2887 100644 --- a/packages/nc-gui/components/dashboard/TreeViewNew/TableNode.vue +++ b/packages/nc-gui/components/dashboard/TreeView/TableNode.vue @@ -68,8 +68,11 @@ const setIcon = async (icon: string, table: TableType) => { // Todo: temp const { isSharedBase } = useProject() - // const isMultiBase = computed(() => project.bases && project.bases.length > 1) + +const canUserEditEmote = computed(() => { + return isUIAllowed('tableIconCustomisation', false, projectRole?.value) +})