diff --git a/packages/nc-gui/assets/nc-icons/check.svg b/packages/nc-gui/assets/nc-icons/check.svg index 314287cb8e..21d49df996 100644 --- a/packages/nc-gui/assets/nc-icons/check.svg +++ b/packages/nc-gui/assets/nc-icons/check.svg @@ -1,5 +1,5 @@ - + diff --git a/packages/nc-gui/assets/nc-icons/lock.svg b/packages/nc-gui/assets/nc-icons/lock.svg index 45946a1cf5..05f258b22a 100644 --- a/packages/nc-gui/assets/nc-icons/lock.svg +++ b/packages/nc-gui/assets/nc-icons/lock.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/nc-gui/assets/nc-icons/sort.svg b/packages/nc-gui/assets/nc-icons/sort.svg index 9acb6113c7..513c55c68b 100644 --- a/packages/nc-gui/assets/nc-icons/sort.svg +++ b/packages/nc-gui/assets/nc-icons/sort.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/nc-gui/assets/style.scss b/packages/nc-gui/assets/style.scss index fd9aae2ee8..7d9c703132 100644 --- a/packages/nc-gui/assets/style.scss +++ b/packages/nc-gui/assets/style.scss @@ -236,7 +236,7 @@ a { } .nc-base-menu-item { - @apply cursor-pointer flex items-center gap-2 py-2 after:(content-[''] absolute top-0 left-0 bottom-0 right-0 w-full h-full bg-current opacity-0 transition transition-opacity duration-100) hover:(after:(opacity-5)); + @apply cursor-pointer flex items-center gap-2 py-2; // &:hover { // .nc-icon { @@ -479,6 +479,9 @@ a { .nc-toolbar-btn { @apply !shadow-none rounded hover:(ring-1 ring-gray-200 ring-opacity-100 bg-gray-100 !text-gray-800) focus:(ring-1 ring-gray-300 ring-opacity-100 !text-gray-800 bg-gray-100) text-gray-600 text-xs font-medium px-2 border-0; } +.nc-toolbar-btn[disabled] { + @apply !text-gray-400 !cursor-not-allowed !hover:ring-0; +} .nc-warning-info { @apply !shadow-none rounded ring-1 ring-red-600; @@ -675,3 +678,7 @@ input[type='number'] { @apply xs:(visible opacity-100 !text-gray-500) } } + +.ant-message-notice-content { + @apply !rounded-md; +} \ No newline at end of file diff --git a/packages/nc-gui/components/account/License.vue b/packages/nc-gui/components/account/License.vue index e4d780bc17..cfd1f684b4 100644 --- a/packages/nc-gui/components/account/License.vue +++ b/packages/nc-gui/components/account/License.vue @@ -1,5 +1,5 @@ diff --git a/packages/nc-gui/components/cell/MultiSelect.vue b/packages/nc-gui/components/cell/MultiSelect.vue index 7a64c35a1a..d8fe577a99 100644 --- a/packages/nc-gui/components/cell/MultiSelect.vue +++ b/packages/nc-gui/components/cell/MultiSelect.vue @@ -144,14 +144,14 @@ const selectedTitles = computed(() => } return 0 }) - : modelValue.split(',').map((el) => el.trim()) - : modelValue.map((el) => el.trim()) + : modelValue.split(',') + : modelValue : [], ) onMounted(() => { selectedIds.value = selectedTitles.value.flatMap((el) => { - const item = options.value.find((op) => op.title === el) + const item = options.value.find((op) => op.title === el || op.title === el?.trim()) const itemIdOrTitle = item?.id || item?.title if (itemIdOrTitle) { return [itemIdOrTitle] @@ -165,7 +165,7 @@ watch( () => modelValue, () => { selectedIds.value = selectedTitles.value.flatMap((el) => { - const item = options.value.find((op) => op.title === el) + const item = options.value.find((op) => op.title === el || op.title === el?.trim()) if (item && (item.id || item.title)) { return [(item.id || item.title)!] } diff --git a/packages/nc-gui/components/cell/PhoneNumber.vue b/packages/nc-gui/components/cell/PhoneNumber.vue index 3e9b425c51..6a74c90caa 100644 --- a/packages/nc-gui/components/cell/PhoneNumber.vue +++ b/packages/nc-gui/components/cell/PhoneNumber.vue @@ -76,7 +76,13 @@ watch( {{ $t('general.null') }} - + diff --git a/packages/nc-gui/components/cell/SingleSelect.vue b/packages/nc-gui/components/cell/SingleSelect.vue index 6d132cf0b0..0afc0e4c4b 100644 --- a/packages/nc-gui/components/cell/SingleSelect.vue +++ b/packages/nc-gui/components/cell/SingleSelect.vue @@ -104,7 +104,7 @@ const hasEditRoles = computed(() => isUIAllowed('dataEdit')) const editAllowed = computed(() => (hasEditRoles.value || isForm.value) && active.value) const vModel = computed({ - get: () => tempSelectedOptState.value ?? modelValue?.trim(), + get: () => tempSelectedOptState.value ?? modelValue, set: (val) => { if (val && isNewOptionCreateEnabled.value && (options.value ?? []).every((op) => op.title !== val)) { tempSelectedOptState.value = val @@ -259,7 +259,7 @@ const handleClose = (e: MouseEvent) => { useEventListener(document, 'click', handleClose, true) const selectedOpt = computed(() => { - return options.value.find((o) => o.value === vModel.value) + return options.value.find((o) => o.value === vModel.value || o.value === vModel.value?.trim()) }) diff --git a/packages/nc-gui/components/cell/TextArea.vue b/packages/nc-gui/components/cell/TextArea.vue index 36dc1a4797..826e76a7a1 100644 --- a/packages/nc-gui/components/cell/TextArea.vue +++ b/packages/nc-gui/components/cell/TextArea.vue @@ -106,7 +106,15 @@ onClickOutside(inputWrapperRef, (e) => { {{ $t('general.null') }} - + {{ vModel }} diff --git a/packages/nc-gui/components/cell/TimePicker.vue b/packages/nc-gui/components/cell/TimePicker.vue index 257d1d7cf1..89a076541f 100644 --- a/packages/nc-gui/components/cell/TimePicker.vue +++ b/packages/nc-gui/components/cell/TimePicker.vue @@ -101,6 +101,12 @@ const placeholder = computed(() => { } }) +const isOpen = computed(() => { + if (readOnly.value) return false + + return (readOnly.value || (localState.value && isPk)) && !active.value && !editable.value ? false : open.value +}) + useSelectedCellKeyupListener(active, (e: KeyboardEvent) => { switch (e.key) { case 'Enter': @@ -129,7 +135,7 @@ useSelectedCellKeyupListener(active, (e: KeyboardEvent) => { :placeholder="placeholder" :allow-clear="!readOnly && !localState && !isPk" :input-read-only="true" - :open="(readOnly || (localState && isPk)) && !active && !editable ? false : open" + :open="isOpen" :popup-class-name="`${randomClass} nc-picker-time ${open ? 'active' : ''}`" @click="open = (active || editable) && !open" @ok="open = !open" diff --git a/packages/nc-gui/components/cell/YearPicker.vue b/packages/nc-gui/components/cell/YearPicker.vue index b2204fff9f..f5c5c80709 100644 --- a/packages/nc-gui/components/cell/YearPicker.vue +++ b/packages/nc-gui/components/cell/YearPicker.vue @@ -88,6 +88,12 @@ const placeholder = computed(() => { } }) +const isOpen = computed(() => { + if (readOnly.value) return false + + return (readOnly.value || (localState.value && isPk)) && !active.value && !editable.value ? false : open.value +}) + useSelectedCellKeyupListener(active, (e: KeyboardEvent) => { switch (e.key) { case 'Enter': @@ -114,7 +120,7 @@ useSelectedCellKeyupListener(active, (e: KeyboardEvent) => { :placeholder="placeholder" :allow-clear="(!readOnly && !localState && !isPk) || isEditColumn" :input-read-only="true" - :open="(readOnly || (localState && isPk)) && !active && !editable ? false : open" + :open="isOpen" :dropdown-class-name="`${randomClass} nc-picker-year ${open ? 'active' : ''}`" @click="open = (active || editable) && !open" @change="open = (active || editable) && !open" diff --git a/packages/nc-gui/components/dashboard/Sidebar/UserInfo.vue b/packages/nc-gui/components/dashboard/Sidebar/UserInfo.vue index 3c02238bf1..5fd1422e1c 100644 --- a/packages/nc-gui/components/dashboard/Sidebar/UserInfo.vue +++ b/packages/nc-gui/components/dashboard/Sidebar/UserInfo.vue @@ -107,13 +107,25 @@ onMounted(() => { - + - +