Files
nimbus/resources/js/components/domain/Client/Request/RequestParameters/RequestParameters.vue
Mazen Touati e1b844cee0 feat(history): add history viewer and rewind (#38)
* feat(ui): add `input group` base component

* feat(history): add history viewer and rewind

* test: update selector snapshot

* test: add PW base page

* style: apply TS style fixes

* chore(history): request history wiki

* chore(history): remove unwanted symbol

* chore: fix type

* style: apply TS style fixes
2026-01-17 20:50:00 +01:00

60 lines
1.8 KiB
Vue

<script setup lang="ts">
import CopyButton from '@/components/common/CopyButton.vue';
import KeyValueParametersBuilder from '@/components/common/KeyValueParameters/KeyValueParameters.vue';
import PanelSubHeader from '@/components/layout/PanelSubHeader/PanelSubHeader.vue';
import { ParameterContract } from '@/interfaces/ui';
import { useRequestStore } from '@/stores';
import { useClipboard } from '@vueuse/core';
import { computed } from 'vue';
/*
* Stores & dependencies.
*/
const requestStore = useRequestStore();
const { copy, copied: previewCopied } = useClipboard();
/*
* Computed.
*/
const pendingRequestData = computed(() => requestStore.pendingRequestData);
const currentRequestQueryParameters = computed<ParameterContract[]>(
() => pendingRequestData.value?.queryParameters ?? [],
);
const handleQueryParametersUpdate = (parameters: ParameterContract[]) => {
requestStore.updateQueryParameters(parameters);
};
const preview = computed(() =>
pendingRequestData.value ? requestStore.getRequestUrl(pendingRequestData.value) : '',
);
/*
* Actions.
*/
const copyPreview = () => copy(preview.value);
</script>
<template>
<PanelSubHeader class="border-b">Query Parameters</PanelSubHeader>
<div class="px-panel bg-subtle-background flex border-b py-2 text-xs">
<div class="flex-1">
<small class="font-medium">URL Preview</small>
<p v-if="preview.length">{{ preview }}</p>
<p v-else class="text-subtle-foreground">Pick an endpoint to start</p>
</div>
<div>
<CopyButton :on-click="copyPreview" :copied="previewCopied" />
</div>
</div>
<KeyValueParametersBuilder
:model-value="currentRequestQueryParameters"
class="flex-1"
@update:parameters="handleQueryParametersUpdate"
/>
</template>