From 1896e5afe1c574a629e2de1338cbe41b6352bbb5 Mon Sep 17 00:00:00 2001 From: nivedin Date: Tue, 7 Nov 2023 16:52:00 +0530 Subject: [PATCH] feat: added properties option for root collection --- packages/hoppscotch-common/locales/en.json | 2 + .../hoppscotch-common/src/components.d.ts | 1 + .../src/components/collections/Collection.vue | 17 +++ .../components/collections/MyCollections.vue | 14 ++ .../src/components/collections/Properties.vue | 139 ++++++++++++++++++ .../collections/TeamCollections.vue | 14 ++ .../src/components/collections/index.vue | 26 ++++ .../src/components/http/Authorization.vue | 2 +- .../src/components/http/Headers.vue | 4 +- 9 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 packages/hoppscotch-common/src/components/collections/Properties.vue diff --git a/packages/hoppscotch-common/locales/en.json b/packages/hoppscotch-common/locales/en.json index f1764c887..abb77d8e3 100644 --- a/packages/hoppscotch-common/locales/en.json +++ b/packages/hoppscotch-common/locales/en.json @@ -33,6 +33,7 @@ "open_workspace": "Open workspace", "paste": "Paste", "prettify": "Prettify", + "properties":"Properties", "remove": "Remove", "rename": "Rename", "restore": "Restore", @@ -172,6 +173,7 @@ "name_length_insufficient": "Collection name should be at least 3 characters long", "new": "New Collection", "order_changed": "Collection Order Updated", + "properties":"Colection Properties", "renamed": "Collection renamed", "request_in_use": "Request in use", "save_as": "Save as", diff --git a/packages/hoppscotch-common/src/components.d.ts b/packages/hoppscotch-common/src/components.d.ts index 38218176a..6e714187b 100644 --- a/packages/hoppscotch-common/src/components.d.ts +++ b/packages/hoppscotch-common/src/components.d.ts @@ -56,6 +56,7 @@ declare module 'vue' { CollectionsGraphqlRequest: typeof import('./components/collections/graphql/Request.vue')['default'] CollectionsImportExport: typeof import('./components/collections/ImportExport.vue')['default'] CollectionsMyCollections: typeof import('./components/collections/MyCollections.vue')['default'] + CollectionsProperties: typeof import('./components/collections/Properties.vue')['default'] CollectionsRequest: typeof import('./components/collections/Request.vue')['default'] CollectionsSaveRequest: typeof import('./components/collections/SaveRequest.vue')['default'] CollectionsTeamCollections: typeof import('./components/collections/TeamCollections.vue')['default'] diff --git a/packages/hoppscotch-common/src/components/collections/Collection.vue b/packages/hoppscotch-common/src/components/collections/Collection.vue index e3fd3f458..b5bd7f139 100644 --- a/packages/hoppscotch-common/src/components/collections/Collection.vue +++ b/packages/hoppscotch-common/src/components/collections/Collection.vue @@ -96,6 +96,7 @@ @keyup.e="edit?.$el.click()" @keyup.delete="deleteAction?.$el.click()" @keyup.x="exportAction?.$el.click()" + @keyup.p="propertiesAction?.$el.click()" @keyup.escape="hide()" > + @@ -193,6 +207,7 @@ import IconTrash2 from "~icons/lucide/trash-2" import IconEdit from "~icons/lucide/edit" import IconFolder from "~icons/lucide/folder" import IconFolderOpen from "~icons/lucide/folder-open" +import IconSettings2 from "~icons/lucide/settings-2" import { ref, computed, watch } from "vue" import { HoppCollection, HoppRESTRequest } from "@hoppscotch/data" import { useI18n } from "@composables/i18n" @@ -245,6 +260,7 @@ const emit = defineEmits<{ (event: "add-request"): void (event: "add-folder"): void (event: "edit-collection"): void + (event: "edit-properties"): void (event: "export-data"): void (event: "remove-collection"): void (event: "drop-event", payload: DataTransfer): void @@ -261,6 +277,7 @@ const edit = ref(null) const deleteAction = ref(null) const exportAction = ref(null) const options = ref(null) +const propertiesAction = ref(null) const dragging = ref(false) const ordering = ref(false) diff --git a/packages/hoppscotch-common/src/components/collections/MyCollections.vue b/packages/hoppscotch-common/src/components/collections/MyCollections.vue index 3fbb73b8e..1d92d7e01 100644 --- a/packages/hoppscotch-common/src/components/collections/MyCollections.vue +++ b/packages/hoppscotch-common/src/components/collections/MyCollections.vue @@ -71,6 +71,13 @@ collection: node.data.data.data, }) " + @edit-properties=" + node.data.type === 'collections' && + emit('edit-properties', { + collectionIndex: node.id, + collection: node.data.data.data, + }) + " @export-data=" node.data.type === 'collections' && emit('export-data', node.data.data.data) @@ -436,6 +443,13 @@ const emit = defineEmits<{ folder: HoppCollection } ): void + ( + event: "edit-properties", + payload: { + collectionIndex: string + collection: HoppCollection + } + ): void ( event: "edit-request", payload: { diff --git a/packages/hoppscotch-common/src/components/collections/Properties.vue b/packages/hoppscotch-common/src/components/collections/Properties.vue new file mode 100644 index 000000000..23ab50260 --- /dev/null +++ b/packages/hoppscotch-common/src/components/collections/Properties.vue @@ -0,0 +1,139 @@ + + + diff --git a/packages/hoppscotch-common/src/components/collections/TeamCollections.vue b/packages/hoppscotch-common/src/components/collections/TeamCollections.vue index 4df036a79..ad09b7758 100644 --- a/packages/hoppscotch-common/src/components/collections/TeamCollections.vue +++ b/packages/hoppscotch-common/src/components/collections/TeamCollections.vue @@ -88,6 +88,13 @@ collection: node.data.data.data, }) " + @edit-properties=" + node.data.type === 'collections' && + emit('edit-properties', { + collectionIndex: node.id, + collection: node.data.data.data, + }) + " @export-data=" node.data.type === 'collections' && emit('export-data', node.data.data.data) @@ -452,6 +459,13 @@ const emit = defineEmits<{ folder: TeamCollection } ): void + ( + event: "edit-properties", + payload: { + collectionIndex: string + collection: TeamCollection + } + ): void ( event: "edit-request", payload: { diff --git a/packages/hoppscotch-common/src/components/collections/index.vue b/packages/hoppscotch-common/src/components/collections/index.vue index 7f96c55d0..356a09744 100644 --- a/packages/hoppscotch-common/src/components/collections/index.vue +++ b/packages/hoppscotch-common/src/components/collections/index.vue @@ -38,6 +38,7 @@ @add-request="addRequest" @edit-collection="editCollection" @edit-folder="editFolder" + @edit-properties="editProperties" @export-data="exportData" @remove-collection="removeCollection" @remove-folder="removeFolder" @@ -69,6 +70,7 @@ @add-folder="addFolder" @edit-collection="editCollection" @edit-folder="editFolder" + @edit-properties="editProperties" @export-data="exportData" @remove-collection="removeCollection" @remove-folder="removeFolder" @@ -151,6 +153,10 @@ :show="showTeamModalAdd" @hide-modal="displayTeamModalAdd(false)" /> + @@ -520,6 +526,7 @@ const showModalEditCollection = ref(false) const showModalEditFolder = ref(false) const showModalEditRequest = ref(false) const showModalImportExport = ref(false) +const showModalEditProperties = ref(false) const showConfirmModal = ref(false) const showTeamModalAdd = ref(false) @@ -565,6 +572,12 @@ const displayModalImportExport = (show: boolean) => { if (!show) resetSelectedData() } +const displayModalEditProperties = (show: boolean) => { + showModalEditProperties.value = show + + if (!show) resetSelectedData() +} + const displayConfirmModal = (show: boolean) => { showConfirmModal.value = show @@ -1893,6 +1906,19 @@ const shareRequest = ({ request }: { request: HoppRESTRequest }) => { } } +const editProperties = (payload: { + collectionIndex: string + collection: HoppCollection | TeamCollection +}) => { + const { collection, collectionIndex } = payload + + console.log(collectionIndex, collection) + + editingCollection.value = collection + + displayModalEditProperties(true) +} + const resolveConfirmModal = (title: string | null) => { if (title === `${t("confirm.remove_collection")}`) onRemoveCollection() else if (title === `${t("confirm.remove_request")}`) onRemoveRequest() diff --git a/packages/hoppscotch-common/src/components/http/Authorization.vue b/packages/hoppscotch-common/src/components/http/Authorization.vue index 191d1b7e5..ae970b513 100644 --- a/packages/hoppscotch-common/src/components/http/Authorization.vue +++ b/packages/hoppscotch-common/src/components/http/Authorization.vue @@ -1,7 +1,7 @@