@@ -6,8 +6,8 @@ import docs from "../../assets/docs/docs.json";
66const latest = docs .skriptVersion .match (/ \d + \. (\d + )/ )!! ;
77const latestMinor = parseInt (latest [1 ], 10 )!! - 1 ;
88
9- let versions = [latest [ 0 ] + " (New) " ];
10- for (let i = latestMinor ; i > latestMinor - 4 ; i -- ) {
9+ const versions = [];
10+ for (let i = latestMinor + 1 ; i > latestMinor - 4 ; i -- ) {
1111 versions .push (` 2.${i } ` );
1212}
1313
@@ -48,17 +48,22 @@ for (let i = latestMinor; i > latestMinor - 4; i--) {
4848
4949 export interface Filter {
5050 types: string[];
51- versions : string[] ;
51+ version : string;
5252 }
5353
54- let filter: Filter = {types: [], versions: []}
54+ let filter: Filter = {types: [], version: ""};
5555
5656 function handleClick(button: HTMLButtonElement) {
57+ const text = button.textContent!!.trim();
5758 const isType = button.getAttribute("data-type") === "type";
5859 if (isType) {
59- toggle(filter.types, button.textContent!!.trim() );
60+ toggle(filter.types, text );
6061 } else {
61- toggle(filter.versions, button.textContent!!.trim());
62+ if (text === filter.version) {
63+ filter.version = "";
64+ } else {
65+ filter.version = text;
66+ }
6267 }
6368
6469 // update rest of buttons
@@ -68,7 +73,7 @@ for (let i = latestMinor; i > latestMinor - 4; i--) {
6873 if (button.getAttribute("data-type") === "type") {
6974 match = filter.types.includes(button.textContent!!.trim());
7075 } else {
71- match = filter.versions.includes( button.textContent!!.trim() );
76+ match = filter.version === button.textContent!!.trim();
7277 }
7378
7479 if (match) {
@@ -102,24 +107,31 @@ for (let i = latestMinor; i > latestMinor - 4; i--) {
102107
103108 element.classList.add("hidden-by-type");
104109 } else {
105- if (filter.versions.length === 0 ) {
110+ if (filter.version === "" ) {
106111 element.classList.remove("hidden-by-version");
107112 return;
108113 }
109114
110- if (filter.versions.find(it => it. includes("New") ) && element.getAttribute("data-new") === "true") {
115+ if (filter.version. includes("New") && element.getAttribute("data-new") === "true") {
111116 element.classList.remove("hidden-by-version");
112117 return;
113118 }
114119
115- for (const v of filter.versions) {
116- if (element.getAttribute("data-since")?.includes(v)) {
117- element.classList.remove("hidden-by-version");
118- return;
119- }
120+ const since = element.getAttribute("data-since");
121+ if (since === null) {
122+ element.classList.remove("hidden-by-version");
123+ return;
120124 }
121125
122- element.classList.add("hidden-by-version");
126+ const minor = parseInt(filter.version.match(/\d+\.(\d+)/)!![1], 10);
127+ since.matchAll(/\d+\.(\d+)/g).forEach((match) => {
128+ const otherMinor = parseInt(match[1], 10);
129+
130+ if (otherMinor > minor) {
131+ element.classList.add("hidden-by-version");
132+ return;
133+ }
134+ });
123135 }
124136 });
125137 }
@@ -169,7 +181,6 @@ for (let i = latestMinor; i > latestMinor - 4; i--) {
169181 filters.style.top = `${document.getElementById("nav")!!.offsetHeight}px`;
170182 }
171183
172-
173184 updatePosition();
174185 window.addEventListener("DOMContentLoaded", () => {
175186 updatePosition();
@@ -214,9 +225,14 @@ for (let i = latestMinor; i > latestMinor - 4; i--) {
214225 )}
215226 </div >
216227
217- <h3 >Version </h3 >
228+ <h3 >Supported in </h3 >
218229 <div class =" flex flex-wrap gap-2" >
219- { versions .map (x =>
230+ <button data-type =" version" class =" filter-button p-2 rounded-md text-center
231+ bg-skript text-white font-bold
232+ hover:cursor-pointer hover:opacity-80 transition" >
233+ { versions [0 ]}
234+ </button >
235+ { versions .slice (1 ).map (x =>
220236 <button data-type = " version" class = " filter-button p-2 rounded-md text-center
221237 bg-l-bg-secondary dark:bg-d-bg-secondary
222238 hover:cursor-pointer hover:opacity-80 transition" >
0 commit comments