From 13509d36577426d886599c5ffe197a60ad19cda3 Mon Sep 17 00:00:00 2001
From: Pranav C <61551451+pranavxc@users.noreply.github.com>
Date: Wed, 28 Jul 2021 13:26:56 +0530
Subject: [PATCH] fix(gui): URL cell corrections
re #382
Signed-off-by: Pranav C <61551451+pranavxc@users.noreply.github.com>
---
.../project/spreadsheet/components/cell.vue | 4 +-
.../spreadsheet/components/cell/urlCell.vue | 15 ++++++
.../spreadsheet/components/editableCell.vue | 4 ++
.../editableCell/editableUrlCell.vue | 52 +++++++++++++++++++
.../project/spreadsheet/mixins/cell.js | 3 ++
packages/nc-gui/helpers/index.js | 11 ++++
6 files changed, 88 insertions(+), 1 deletion(-)
create mode 100644 packages/nc-gui/components/project/spreadsheet/components/cell/urlCell.vue
create mode 100644 packages/nc-gui/components/project/spreadsheet/components/editableCell/editableUrlCell.vue
diff --git a/packages/nc-gui/components/project/spreadsheet/components/cell.vue b/packages/nc-gui/components/project/spreadsheet/components/cell.vue
index d57de0a6b1..16466db042 100644
--- a/packages/nc-gui/components/project/spreadsheet/components/cell.vue
+++ b/packages/nc-gui/components/project/spreadsheet/components/cell.vue
@@ -10,10 +10,12 @@
+
{{ value }}
+
+
diff --git a/packages/nc-gui/components/project/spreadsheet/components/editableCell.vue b/packages/nc-gui/components/project/spreadsheet/components/editableCell.vue
index bb07b3a5fa..74faf5e1c7 100644
--- a/packages/nc-gui/components/project/spreadsheet/components/editableCell.vue
+++ b/packages/nc-gui/components/project/spreadsheet/components/editableCell.vue
@@ -92,6 +92,8 @@
v-on="parentListeners"
/>
+
+
import DatePickerCell from '@/components/project/spreadsheet/components/editableCell/datePickerCell'
+import EditableUrlCell from '@/components/project/spreadsheet/components/editableCell/editableUrlCell'
import TextCell from '@/components/project/spreadsheet/components/editableCell/textCell'
import DateTimePickerCell from '@/components/project/spreadsheet/components/editableCell/dateTimePickerCell'
import TextAreaCell from '@/components/project/spreadsheet/components/editableCell/textAreaCell'
@@ -128,6 +131,7 @@ import debounce from 'debounce'
export default {
name: 'EditableCell',
components: {
+ EditableUrlCell,
SetListCell,
SetListEditableCell,
EnumCell,
diff --git a/packages/nc-gui/components/project/spreadsheet/components/editableCell/editableUrlCell.vue b/packages/nc-gui/components/project/spreadsheet/components/editableCell/editableUrlCell.vue
new file mode 100644
index 0000000000..1ea92bd269
--- /dev/null
+++ b/packages/nc-gui/components/project/spreadsheet/components/editableCell/editableUrlCell.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/packages/nc-gui/components/project/spreadsheet/mixins/cell.js b/packages/nc-gui/components/project/spreadsheet/mixins/cell.js
index 5aa42921ef..9a0500c1df 100644
--- a/packages/nc-gui/components/project/spreadsheet/mixins/cell.js
+++ b/packages/nc-gui/components/project/spreadsheet/mixins/cell.js
@@ -52,6 +52,9 @@ export default {
isSet() {
return this.column.uidt === 'MultiSelect'
},
+ isURL() {
+ return this.column.uidt === 'URL'
+ },
isAttachment() {
return this.column.uidt === 'Attachment'
}
diff --git a/packages/nc-gui/helpers/index.js b/packages/nc-gui/helpers/index.js
index 8efe8aa410..6f452743a1 100644
--- a/packages/nc-gui/helpers/index.js
+++ b/packages/nc-gui/helpers/index.js
@@ -1,5 +1,16 @@
export const isEmail = v => /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/i.test(v)
+// ref : https://stackoverflow.com/a/5717133
+export const isValidURL = (str) => {
+ const pattern = new RegExp('^(https?:\\/\\/)?' + // protocol
+ '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
+ '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
+ '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
+ '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
+ '(\\#[-a-z\\d_]*)?$', 'i') // fragment locator
+ return !!pattern.test(str)
+}
+
export const parseIfInteger = v => /^\d+$/.test(v) ? +v : v
/**
* @copyright Copyright (c) 2021, Xgene Cloud Ltd