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