11<script setup lang="ts">
2+
23import { faUpload } from " @fortawesome/free-solid-svg-icons" ;
34import { FontAwesomeIcon } from " @fortawesome/vue-fontawesome" ;
45import { BFormSelect } from " bootstrap-vue" ;
6+ import semver from ' semver' ;
57import { computed , onMounted , ref , watch } from " vue" ;
68
79import { useMarkdown } from " @/composables/markdown" ;
@@ -26,16 +28,29 @@ const emit = defineEmits<{
2628
2729const { renderMarkdown } = useMarkdown ({ openLinksInNewPage: true });
2830
29- const reversedVersions = computed (() => {
30- return [... props .trsTool .versions ].reverse ();
31+ const sortedVersions = computed (() => {
32+ return props .trsTool .versions .slice ().sort ((a , b ) => {
33+ const aSemver = semver .coerce (a .name );
34+ const bSemver = semver .coerce (b .name );
35+
36+ if (aSemver && bSemver ) {
37+ return semver .rcompare (aSemver , bSemver );
38+ } else if (aSemver ) {
39+ return - 1 ;
40+ } else if (bSemver ) {
41+ return 1 ;
42+ } else {
43+ return b .name .localeCompare (a .name );
44+ }
45+ });
3146});
3247
3348const selectedVersion = ref <TrsToolVersion | null >(
34- reversedVersions .value .length > 0 ? (reversedVersions .value [0 ] ?? null ) : null ,
49+ sortedVersions .value .length > 0 ? (sortedVersions .value [0 ] ?? null ) : null ,
3550);
3651
3752const versionOptions = computed (() => {
38- return reversedVersions .value .map ((version ) => ({
53+ return sortedVersions .value .map ((version ) => ({
3954 value: version ,
4055 text: version .name ,
4156 }));
0 commit comments