719032b19f
Update Schema / Update configuration json schema (push) Has been cancelled
Memory Benchmark / Memory Test (Full Analysis) (push) Has been cancelled
CI Quality / Lint GitHub Actions (actionlint) (push) Has been cancelled
CI Quality / Lint GitHub Actions (zizmor) (push) Has been cancelled
CI Quality / Check typos (push) Has been cancelled
CI / Test coverage (push) Has been cancelled
CI / Test (22.x, windows-latest) (push) Has been cancelled
CI / Test (24.x, macos-latest) (push) Has been cancelled
CI / Test (24.x, ubuntu-latest) (push) Has been cancelled
CI / Test (24.x, windows-latest) (push) Has been cancelled
CI / Test (26.x, macos-latest) (push) Has been cancelled
CI / Test (26.x, ubuntu-latest) (push) Has been cancelled
CI / Test (26.x, windows-latest) (push) Has been cancelled
CI / Test with Bun (latest, macos-latest) (push) Has been cancelled
CI / Test with Bun (latest, ubuntu-latest) (push) Has been cancelled
CI / Test with Bun (latest, windows-latest) (push) Has been cancelled
CI / Build and run (22.x, macos-latest) (push) Has been cancelled
CI / Build and run (22.x, ubuntu-latest) (push) Has been cancelled
CI / Build and run (22.x, windows-latest) (push) Has been cancelled
autofix.ci / autofix (push) Has been cancelled
CI Browser Extension / Lint Browser Extension (push) Has been cancelled
CI Browser Extension / Test Browser Extension (push) Has been cancelled
Memory Benchmark / Memory Test (push) Has been cancelled
CI Website / Lint Website Client (push) Has been cancelled
CI Website / Lint Website Server (push) Has been cancelled
CI Website / Test Website Server (push) Has been cancelled
CI Website / Bundle Website Server (push) Has been cancelled
CI / Lint Biome (push) Has been cancelled
CI / Lint oxlint (push) Has been cancelled
CI / Lint TypeScript (push) Has been cancelled
CI / Lint Secretlint (push) Has been cancelled
CI / Test (22.x, macos-latest) (push) Has been cancelled
CI / Test (22.x, ubuntu-latest) (push) Has been cancelled
CI / Build and run (24.x, macos-latest) (push) Has been cancelled
CI / Build and run (24.x, ubuntu-latest) (push) Has been cancelled
CI / Build and run (24.x, windows-latest) (push) Has been cancelled
CI / Build and run (26.x, macos-latest) (push) Has been cancelled
CI / Build and run (26.x, ubuntu-latest) (push) Has been cancelled
CI / Build and run (26.x, windows-latest) (push) Has been cancelled
CI / Build and run with Bun (latest, macos-latest) (push) Has been cancelled
CI / Build and run with Bun (latest, ubuntu-latest) (push) Has been cancelled
CI / Build and run with Bun (latest, windows-latest) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
Docker / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Docker / build (linux/arm/v7, ubuntu-24.04-arm) (push) Has been cancelled
Docker / build (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Docker / merge (push) Has been cancelled
Pack repository with Repomix / pack-repo (push) Has been cancelled
Performance Benchmark History / Benchmark (macos-latest) (push) Has been cancelled
Performance Benchmark History / Benchmark (ubuntu-latest) (push) Has been cancelled
Performance Benchmark History / Benchmark (windows-latest) (push) Has been cancelled
Performance Benchmark History / Store Results (push) Has been cancelled
Test Repomix Action / Test Node.js 22 (push) Has been cancelled
Test Repomix Action / Test Node.js 24 (push) Has been cancelled
Test Repomix Action / Test Node.js 26 (push) Has been cancelled
103 lines
2.0 KiB
Vue
103 lines
2.0 KiB
Vue
<template>
|
|
<button
|
|
class="pack-button"
|
|
:class="{ 'pack-button--loading': loading }"
|
|
:disabled="!isValid && !loading"
|
|
:aria-label="loading ? 'Cancel processing' : 'Pack repository'"
|
|
:type="loading ? 'button' : 'submit'"
|
|
@click="handleClick"
|
|
>
|
|
<span class="pack-button__text pack-button__text--normal">
|
|
{{ loading ? 'Processing...' : 'Pack' }}
|
|
</span>
|
|
<span class="pack-button__text pack-button__text--hover">
|
|
{{ loading ? 'Cancel' : 'Pack' }}
|
|
</span>
|
|
<PackIcon v-if="!loading" :size="20" />
|
|
</button>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import PackIcon from './PackIcon.vue';
|
|
|
|
const props = defineProps<{
|
|
loading?: boolean;
|
|
isValid?: boolean;
|
|
}>();
|
|
|
|
const emit = defineEmits<(e: 'cancel') => void>();
|
|
|
|
function handleClick(event: MouseEvent) {
|
|
// type=button while loading prevents form submission, so any click
|
|
// (mouse or keyboard) safely signals cancel.
|
|
if (props.loading) {
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
emit('cancel');
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.pack-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
padding: 12px 24px;
|
|
height: 50px;
|
|
width: 100%;
|
|
font-size: 16px;
|
|
font-weight: 500;
|
|
background: var(--vp-c-brand-1);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 8px;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
position: relative;
|
|
}
|
|
|
|
.pack-button:hover:not(:disabled) {
|
|
background: var(--vp-c-brand-2);
|
|
}
|
|
|
|
.pack-button--loading:hover {
|
|
background: var(--vp-c-danger-1);
|
|
}
|
|
|
|
.pack-button:disabled {
|
|
opacity: 0.5;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.pack-button__text {
|
|
transition: opacity 0.2s ease;
|
|
}
|
|
|
|
.pack-button__text--hover {
|
|
position: absolute;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.pack-button--loading:hover .pack-button__text--normal {
|
|
opacity: 0;
|
|
}
|
|
|
|
.pack-button--loading:hover .pack-button__text--hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
.pack-button-icon {
|
|
font-size: 20px;
|
|
line-height: 1;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.pack-button {
|
|
width: 100%;
|
|
}
|
|
}
|
|
</style>
|