@xcpcio/board-app 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/about.html +2 -2
  2. package/dist/assets/{DataSourceInput.vue_vue_type_script_setup_true_lang-7dd754fb.js → DataSourceInput.vue_vue_type_script_setup_true_lang-b63d8c0a.js} +1 -1
  3. package/dist/assets/{TheInput.vue_vue_type_script_setup_true_lang-bd7b9fe6.js → TheInput.vue_vue_type_script_setup_true_lang-01db0210.js} +1 -1
  4. package/dist/assets/_...all_-ccdf65e0.js +3 -0
  5. package/dist/assets/{_...all_-16dbd7b8.css → _...all_-f6dd53aa.css} +1 -1
  6. package/dist/assets/{_name_-94d749aa.js → _name_-41975e46.js} +1 -1
  7. package/dist/assets/{about-f01d587e.js → about-ed4e51a8.js} +1 -1
  8. package/dist/assets/{app-b6bf8dd1.js → app-229ad629.js} +3 -3
  9. package/dist/assets/{board-layout-52e96f00.js → board-layout-22e4dc7d.js} +1 -1
  10. package/dist/assets/{headless-e8cc73cd.js → headless-254ddfda.js} +1 -1
  11. package/dist/assets/{home-334a9895.js → home-ff1bf49b.js} +1 -1
  12. package/dist/assets/{index-7f7e6de0.css → index-00889800.css} +1 -1
  13. package/dist/assets/{index-43dadeef.js → index-4ec61f53.js} +1 -1
  14. package/dist/assets/{index-layout-ad419356.js → index-layout-d88ea34a.js} +1 -1
  15. package/dist/assets/{test-27f85731.js → test-0bd7427d.js} +1 -1
  16. package/dist/assets/{user-b8ba5adf.js → user-b4f3ed5d.js} +1 -1
  17. package/dist/assets/{virtual_pwa-register-698ae235.js → virtual_pwa-register-123217d5.js} +1 -1
  18. package/dist/balloon.html +1 -1
  19. package/dist/index.html +1 -1
  20. package/dist/sitemap.xml +1 -1
  21. package/dist/ssr-manifest.json +400 -128
  22. package/dist/sw.js +1 -1
  23. package/dist/test.html +1 -1
  24. package/package.json +3 -3
  25. package/src/components/board/Board.vue +2 -2
  26. package/src/components/board/BoardTab.vue +133 -15
  27. package/dist/assets/_...all_-d6af1410.js +0 -3
package/dist/sw.js CHANGED
@@ -1 +1 @@
1
- if(!self.define){let e,s={};const l=(l,i)=>(l=new URL(l+".js",i).href,s[l]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=l,e.onload=s,document.head.appendChild(e)}else e=l,importScripts(l),s()})).then((()=>{let e=s[l];if(!e)throw new Error(`Module ${l} didn’t register its module`);return e})));self.define=(i,n)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let u={};const a=e=>l(e,r),t={module:{uri:r},exports:u,require:a};s[r]=Promise.all(i.map((e=>t[e]||a(e)))).then((e=>(n(...e),u)))}}define(["./workbox-b8d87ee1"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"about.html",revision:"ac1edbb8d4845af454c44ff1b8361017"},{url:"assets/_...all_-16dbd7b8.css",revision:null},{url:"assets/_...all_-d6af1410.js",revision:null},{url:"assets/_name_-94d749aa.js",revision:null},{url:"assets/about-f01d587e.js",revision:null},{url:"assets/app-b6bf8dd1.js",revision:null},{url:"assets/board-layout-52e96f00.js",revision:null},{url:"assets/DataSourceInput.vue_vue_type_script_setup_true_lang-7dd754fb.js",revision:null},{url:"assets/en-644e039f.js",revision:null},{url:"assets/headless-e8cc73cd.js",revision:null},{url:"assets/home-334a9895.js",revision:null},{url:"assets/index-43dadeef.js",revision:null},{url:"assets/index-7f7e6de0.css",revision:null},{url:"assets/index-layout-ad419356.js",revision:null},{url:"assets/test-27f85731.js",revision:null},{url:"assets/TheInput.vue_vue_type_script_setup_true_lang-bd7b9fe6.js",revision:null},{url:"assets/user-b8ba5adf.js",revision:null},{url:"assets/virtual_pwa-register-698ae235.js",revision:null},{url:"assets/workbox-window.prod.es5-a7b12eab.js",revision:null},{url:"assets/zh-CN-44b801f0.js",revision:null},{url:"balloon.html",revision:"ef356a5b7124adfced941b6fb6b56fa3"},{url:"index.html",revision:"0617687e4a69acdeef5b77522c057320"},{url:"test.html",revision:"bab1e42378ed19eca4e88c119cd76d72"},{url:"favicon.svg",revision:"5a744f4ccbb122d4a0575be779ddcd43"},{url:"safari-pinned-tab.svg",revision:"5eaf74d1c43d30e0af743b68a3f48504"},{url:"balloon2-192x192.png",revision:"c857ae6d9dfae118ab4397d4358422bd"},{url:"balloon2-512x512.png",revision:"065594f4f743fe3884793c03d3fe7d9e"},{url:"manifest.webmanifest",revision:"3082e8d8ebc9619c6c1055ff243a02a8"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
1
+ if(!self.define){let e,s={};const l=(l,i)=>(l=new URL(l+".js",i).href,s[l]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=l,e.onload=s,document.head.appendChild(e)}else e=l,importScripts(l),s()})).then((()=>{let e=s[l];if(!e)throw new Error(`Module ${l} didn’t register its module`);return e})));self.define=(i,n)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let u={};const t=e=>l(e,r),a={module:{uri:r},exports:u,require:t};s[r]=Promise.all(i.map((e=>a[e]||t(e)))).then((e=>(n(...e),u)))}}define(["./workbox-b8d87ee1"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"about.html",revision:"d485ee3168acf5e6186b8b63a81da132"},{url:"assets/_...all_-ccdf65e0.js",revision:null},{url:"assets/_...all_-f6dd53aa.css",revision:null},{url:"assets/_name_-41975e46.js",revision:null},{url:"assets/about-ed4e51a8.js",revision:null},{url:"assets/app-229ad629.js",revision:null},{url:"assets/board-layout-22e4dc7d.js",revision:null},{url:"assets/DataSourceInput.vue_vue_type_script_setup_true_lang-b63d8c0a.js",revision:null},{url:"assets/en-644e039f.js",revision:null},{url:"assets/headless-254ddfda.js",revision:null},{url:"assets/home-ff1bf49b.js",revision:null},{url:"assets/index-00889800.css",revision:null},{url:"assets/index-4ec61f53.js",revision:null},{url:"assets/index-layout-d88ea34a.js",revision:null},{url:"assets/test-0bd7427d.js",revision:null},{url:"assets/TheInput.vue_vue_type_script_setup_true_lang-01db0210.js",revision:null},{url:"assets/user-b4f3ed5d.js",revision:null},{url:"assets/virtual_pwa-register-123217d5.js",revision:null},{url:"assets/workbox-window.prod.es5-a7b12eab.js",revision:null},{url:"assets/zh-CN-44b801f0.js",revision:null},{url:"balloon.html",revision:"6905add912497b05896d4c794bd4bead"},{url:"index.html",revision:"d29bab4c1a83515d7987ec2469c63312"},{url:"test.html",revision:"30f873fefdfe20ee8827d817d7ef703b"},{url:"favicon.svg",revision:"5a744f4ccbb122d4a0575be779ddcd43"},{url:"safari-pinned-tab.svg",revision:"5eaf74d1c43d30e0af743b68a3f48504"},{url:"balloon2-192x192.png",revision:"c857ae6d9dfae118ab4397d4358422bd"},{url:"balloon2-512x512.png",revision:"065594f4f743fe3884793c03d3fe7d9e"},{url:"manifest.webmanifest",revision:"3082e8d8ebc9619c6c1055ff243a02a8"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
package/dist/test.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" data-critters-container><head><meta charset="UTF-8"><!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> --><link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.25.0/dist/balloon-192x192.png"><link rel="mask-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.25.0/dist/balloon-512x512.svg" color="#00aba9"><meta name="msapplication-TileColor" content="#00aba9"><script>function normalizePath(_){for(;_.endsWith("/");)_=_.slice(0,-1);return _+"/"}{let _="__CDN_HOST__";_=normalizePath(_),window.CDN_HOST=_}try{let _=__DATA_HOST__;_=normalizePath(_),window.DATA_HOST=_}catch(_){window.DATA_HOST="/data/"}try{let _=__DATA_REGION__;window.DATA_REGION=_}catch(_){window.DATA_REGION="CN"}</script><script>!function(){var e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,t=localStorage.getItem("vueuse-color-scheme")||"auto";("dark"===t||e&&"light"!==t)&&document.documentElement.classList.toggle("dark",!0)}()</script><script type="module" async crossorigin src="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.25.0/dist/assets/app-b6bf8dd1.js"></script><link rel="manifest" href="/manifest.webmanifest"><style></style><link rel="modulepreload" crossorigin href="/assets/home-334a9895.js"><link rel="modulepreload" crossorigin href="/assets/test-27f85731.js"><title>Board - XCPCIO</title><meta name="description" content="XCPCIO-Board 主要收录 *CPC 系列竞赛的榜单。"><meta name="keywords" content="icpc, ccpc, rank, board, standings"><meta name="theme-color" content="#ffffff"><link rel="icon" type="image/svg+xml" href="/favicon.svg"></head><body class="font-sans"><div id="app" data-server-rendered="true"><main px-4 py-10 text="center gray-700 dark:gray-200"><div flex flex-col justify-center items-center><div text-4xl><div i-carbon-campsite></div></div><p><a rel="noreferrer" href="https://github.com/antfu/vitesse" target="_blank">Vitesse</a></p><p><em text-sm opacity-75>Opinionated Vite Starter Template</em></p><div py-4></div><div w-48><input id="input" value type="text" placeholder="What's your name?" autocomplete="false" p="x-4 y-2" w-full text="center" bg="transparent" border="~ rounded gray-200 dark:gray-700" outline="none active:none"><label class="hidden" for="input">What's your name?</label></div><div><button m-3 text-sm btn disabled="disabled">GO</button></div></div><footer mt-8 py-4 md:py-8 lg:py-10 w-full flex justify-center items-center><div text-center w-full><a href="/" class flex items-center justify-center text-2xl font-semibold text-gray-900 dark:text-white><div i-ion-balloon-sharp mr-4 h-8></div>Get more balloons</a><p my-6 text-gray-500 dark:text-gray-400 w-full flex justify-center>Open-source project of ICPC/CCPC Standings.</p><ul mb-6 w-full flex flex-wrap items-center justify-center text-gray-900 dark:text-white><li><a href="/" class mr-4 md:mr-6 hover:underline>Home</a></li><li><div class="v-popper v-popper--theme-tooltip" w-inherit><!--[--><!--[--><a href="https://github.com/xcpcio/xcpcio" class="mr-4 md:mr-6 hover:underline" rel="noreferrer" target="_blank" title="GitHub">GitHub</a><!--]--><div id="popper_x6c9fo2f_299hnp" class="v-popper__popper v-popper--theme-tooltip v-popper__popper--hidden v-popper__popper--hide-to" style="position:absolute;transform:translate3d(0,0,0)" aria-hidden="true" data-popper-placement><div class="v-popper__backdrop"></div><div class="v-popper__wrapper" style><div class="v-popper__inner"><!----></div><div class="v-popper__arrow-container" style="left:0;top:0"><div class="v-popper__arrow-outer"></div><div class="v-popper__arrow-inner"></div></div></div></div><!--]--></div></li><li><div class="v-popper v-popper--theme-tooltip" w-inherit><!--[--><!--[--><a href="mailto:hi@dup4.com" mr-4 md:mr-6 hover:underline>Contact</a><!--]--><div id="popper_47gvscdy_299hnp" class="v-popper__popper v-popper--theme-tooltip v-popper__popper--hidden v-popper__popper--hide-to" style="position:absolute;transform:translate3d(0,0,0)" aria-hidden="true" data-popper-placement><div class="v-popper__backdrop"></div><div class="v-popper__wrapper" style><div class="v-popper__inner"><!----></div><div class="v-popper__arrow-container" style="left:0;top:0"><div class="v-popper__arrow-outer"></div><div class="v-popper__arrow-inner"></div></div></div></div><!--]--></div></li></ul><span text-sm text-gray-500 sm:text-center dark:text-gray-400 w-full>© 2020-PRESENT <a href="/" class hover:underline>XCPCIO™</a>. All Rights Reserved.</span></div></footer><div mx-auto mt-5 text-center text-sm opacity-50>[Home Layout]</div></main></div><script>window.__INITIAL_STATE__='{"pinia":{"user":{"savedName":""}}}'</script><noscript>This website requires JavaScript to function properly. Please enable JavaScript to continue.</noscript><script>try{var umamiJSUrl=__UMAMI_JS_URL__,umamiWebsiteId=__UMAMI_WEBSITE_ID__;!function(){var e=document.createElement("script"),t=(e.src=umamiJSUrl,e.defer=!0,e.setAttribute("data-website-id",umamiWebsiteId),document.getElementsByTagName("script")[0]);t.parentNode.insertBefore(e,t)}()}catch(e){}try{var plausibleJSUrl=__PLAUSIBLE_JS_URL__,plausibleDataDomain=__PLAUSIBLE_DATA_DOMAIN__;!function(){var e=document.createElement("script"),t=(e.src=plausibleJSUrl,e.defer=!0,e.setAttribute("data-domain",plausibleDataDomain),document.getElementsByTagName("script")[0]);t.parentNode.insertBefore(e,t)}()}catch(e){}try{var baiduAnalyticsId=__BAIDU_ANALYTICS_ID__,_hmt=_hmt||[];!function(){var e=document.createElement("script"),t=(e.src="https://hm.baidu.com/hm.js?"+baiduAnalyticsId,document.getElementsByTagName("script")[0]);t.parentNode.insertBefore(e,t)}()}catch(e){}try{var googleAnalyticsId=__GOOGLE_ANALYTICS_ID__;!function(){var e,t,a,r;location.port||(e=window,r=document,t="script",a="ga",e.GoogleAnalyticsObject=a,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=+new Date,a=r.createElement(t),r=r.getElementsByTagName(t)[0],a.async=1,a.src="//www.google-analytics.com/analytics.js",r.parentNode.insertBefore(a,r),ga("create",""+googleAnalyticsId,"auto"),ga("send","pageview"))}()}catch(e){}</script></body></html>
1
+ <!DOCTYPE html><html lang="en" data-critters-container><head><meta charset="UTF-8"><!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> --><link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.26.0/dist/balloon-192x192.png"><link rel="mask-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.26.0/dist/balloon-512x512.svg" color="#00aba9"><meta name="msapplication-TileColor" content="#00aba9"><script>function normalizePath(_){for(;_.endsWith("/");)_=_.slice(0,-1);return _+"/"}{let _="__CDN_HOST__";_=normalizePath(_),window.CDN_HOST=_}try{let _=__DATA_HOST__;_=normalizePath(_),window.DATA_HOST=_}catch(_){window.DATA_HOST="/data/"}try{let _=__DATA_REGION__;window.DATA_REGION=_}catch(_){window.DATA_REGION="CN"}</script><script>!function(){var e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,t=localStorage.getItem("vueuse-color-scheme")||"auto";("dark"===t||e&&"light"!==t)&&document.documentElement.classList.toggle("dark",!0)}()</script><script type="module" async crossorigin src="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.26.0/dist/assets/app-229ad629.js"></script><link rel="manifest" href="/manifest.webmanifest"><style></style><link rel="modulepreload" crossorigin href="/assets/home-ff1bf49b.js"><link rel="modulepreload" crossorigin href="/assets/test-0bd7427d.js"><title>Board - XCPCIO</title><meta name="description" content="XCPCIO-Board 主要收录 *CPC 系列竞赛的榜单。"><meta name="keywords" content="icpc, ccpc, rank, board, standings"><meta name="theme-color" content="#ffffff"><link rel="icon" type="image/svg+xml" href="/favicon.svg"></head><body class="font-sans"><div id="app" data-server-rendered="true"><main px-4 py-10 text="center gray-700 dark:gray-200"><div flex flex-col justify-center items-center><div text-4xl><div i-carbon-campsite></div></div><p><a rel="noreferrer" href="https://github.com/antfu/vitesse" target="_blank">Vitesse</a></p><p><em text-sm opacity-75>Opinionated Vite Starter Template</em></p><div py-4></div><div w-48><input id="input" value type="text" placeholder="What's your name?" autocomplete="false" p="x-4 y-2" w-full text="center" bg="transparent" border="~ rounded gray-200 dark:gray-700" outline="none active:none"><label class="hidden" for="input">What's your name?</label></div><div><button m-3 text-sm btn disabled="disabled">GO</button></div></div><footer mt-8 py-4 md:py-8 lg:py-10 w-full flex justify-center items-center><div text-center w-full><a href="/" class flex items-center justify-center text-2xl font-semibold text-gray-900 dark:text-white><div i-ion-balloon-sharp mr-4 h-8></div>Get more balloons</a><p my-6 text-gray-500 dark:text-gray-400 w-full flex justify-center>Open-source project of ICPC/CCPC Standings.</p><ul mb-6 w-full flex flex-wrap items-center justify-center text-gray-900 dark:text-white><li><a href="/" class mr-4 md:mr-6 hover:underline>Home</a></li><li><div class="v-popper v-popper--theme-tooltip" w-inherit><!--[--><!--[--><a href="https://github.com/xcpcio/xcpcio" class="mr-4 md:mr-6 hover:underline" rel="noreferrer" target="_blank" title="GitHub">GitHub</a><!--]--><div id="popper_rxbafghz_7vyb8a" class="v-popper__popper v-popper--theme-tooltip v-popper__popper--hidden v-popper__popper--hide-to" style="position:absolute;transform:translate3d(0,0,0)" aria-hidden="true" data-popper-placement><div class="v-popper__backdrop"></div><div class="v-popper__wrapper" style><div class="v-popper__inner"><!----></div><div class="v-popper__arrow-container" style="left:0;top:0"><div class="v-popper__arrow-outer"></div><div class="v-popper__arrow-inner"></div></div></div></div><!--]--></div></li><li><div class="v-popper v-popper--theme-tooltip" w-inherit><!--[--><!--[--><a href="mailto:hi@dup4.com" mr-4 md:mr-6 hover:underline>Contact</a><!--]--><div id="popper_ky093qny_7vyb8b" class="v-popper__popper v-popper--theme-tooltip v-popper__popper--hidden v-popper__popper--hide-to" style="position:absolute;transform:translate3d(0,0,0)" aria-hidden="true" data-popper-placement><div class="v-popper__backdrop"></div><div class="v-popper__wrapper" style><div class="v-popper__inner"><!----></div><div class="v-popper__arrow-container" style="left:0;top:0"><div class="v-popper__arrow-outer"></div><div class="v-popper__arrow-inner"></div></div></div></div><!--]--></div></li></ul><span text-sm text-gray-500 sm:text-center dark:text-gray-400 w-full>© 2020-PRESENT <a href="/" class hover:underline>XCPCIO™</a>. All Rights Reserved.</span></div></footer><div mx-auto mt-5 text-center text-sm opacity-50>[Home Layout]</div></main></div><script>window.__INITIAL_STATE__='{"pinia":{"user":{"savedName":""}}}'</script><noscript>This website requires JavaScript to function properly. Please enable JavaScript to continue.</noscript><script>try{var umamiJSUrl=__UMAMI_JS_URL__,umamiWebsiteId=__UMAMI_WEBSITE_ID__;!function(){var e=document.createElement("script"),t=(e.src=umamiJSUrl,e.defer=!0,e.setAttribute("data-website-id",umamiWebsiteId),document.getElementsByTagName("script")[0]);t.parentNode.insertBefore(e,t)}()}catch(e){}try{var plausibleJSUrl=__PLAUSIBLE_JS_URL__,plausibleDataDomain=__PLAUSIBLE_DATA_DOMAIN__;!function(){var e=document.createElement("script"),t=(e.src=plausibleJSUrl,e.defer=!0,e.setAttribute("data-domain",plausibleDataDomain),document.getElementsByTagName("script")[0]);t.parentNode.insertBefore(e,t)}()}catch(e){}try{var baiduAnalyticsId=__BAIDU_ANALYTICS_ID__,_hmt=_hmt||[];!function(){var e=document.createElement("script"),t=(e.src="https://hm.baidu.com/hm.js?"+baiduAnalyticsId,document.getElementsByTagName("script")[0]);t.parentNode.insertBefore(e,t)}()}catch(e){}try{var googleAnalyticsId=__GOOGLE_ANALYTICS_ID__;!function(){var e,t,a,r;location.port||(e=window,r=document,t="script",a="ga",e.GoogleAnalyticsObject=a,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=+new Date,a=r.createElement(t),r=r.getElementsByTagName(t)[0],a.async=1,a.src="//www.google-analytics.com/analytics.js",r.parentNode.insertBefore(a,r),ga("create",""+googleAnalyticsId,"auto"),ga("send","pageview"))}()}catch(e){}</script></body></html>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xcpcio/board-app",
3
3
  "type": "module",
4
- "version": "0.25.0",
4
+ "version": "0.26.0",
5
5
  "description": "XCPCIO Board App",
6
6
  "author": "Dup4 <lyuzhi.pan@gmail.com>",
7
7
  "license": "MIT",
@@ -53,8 +53,8 @@
53
53
  "vue-router": "^4.2.4",
54
54
  "vue-search-select": "^3.1.2",
55
55
  "vue-toast-notification": "^3",
56
- "@xcpcio/core": "0.25.0",
57
- "@xcpcio/types": "0.25.0"
56
+ "@xcpcio/core": "0.26.0",
57
+ "@xcpcio/types": "0.26.0"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@antfu/eslint-config": "^0.39.8",
@@ -325,7 +325,7 @@ const widthClass = "sm:w-[1260px] xl:w-screen";
325
325
  </div>
326
326
  </div>
327
327
 
328
- <div mt-1>
328
+ <div mt-2>
329
329
  <BoardTab
330
330
  :rank="rank"
331
331
  />
@@ -333,7 +333,7 @@ const widthClass = "sm:w-[1260px] xl:w-screen";
333
333
 
334
334
  <div
335
335
  :class="[widthClass]"
336
- mt-1
336
+ mt-2
337
337
  flex flex-row justify-center
338
338
  >
339
339
  <div class="w-[92%]">
@@ -1,6 +1,10 @@
1
1
  <script setup lang="ts">
2
2
  import type { Rank } from "@xcpcio/core";
3
3
 
4
+ import type { DropdownOptions } from "flowbite";
5
+ import { Dropdown } from "flowbite";
6
+ import { useToast } from "vue-toast-notification";
7
+
4
8
  const props = defineProps<{
5
9
  rank: Rank,
6
10
  }>();
@@ -8,28 +12,142 @@ const props = defineProps<{
8
12
  const rank = computed(() => props.rank);
9
13
 
10
14
  const { t } = useI18n();
15
+ const $toast = useToast();
16
+ const { copy, isSupported } = useClipboard();
17
+
18
+ let dropdown: Dropdown | null = null;
19
+ const dropdownTargetEl = ref(null);
20
+ const dropdownTriggerEl = ref(null);
21
+
22
+ function preCheck() {
23
+ if (!window) {
24
+ return false;
25
+ }
26
+
27
+ if (!isSupported.value) {
28
+ $toast.warning("clipboard is not supported");
29
+ dropdown?.hide();
30
+ return false;
31
+ }
32
+
33
+ return true;
34
+ }
35
+
36
+ function postCall() {
37
+ $toast.success("copy success");
38
+ dropdown?.hide();
39
+ }
40
+
41
+ function copyLink() {
42
+ if (!preCheck()) {
43
+ return;
44
+ }
45
+
46
+ copy(window.location.href);
47
+ postCall();
48
+ }
49
+
50
+ function copyCode() {
51
+ if (!preCheck()) {
52
+ return;
53
+ }
54
+
55
+ const code = `<iframe src="${window.location.href}" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="width: 100%; height: 720px"></iframe>`;
56
+ copy(code);
57
+ postCall();
58
+ }
59
+
60
+ onMounted(() => {
61
+ {
62
+ if (dropdownTargetEl.value && dropdownTriggerEl.value) {
63
+ const options: DropdownOptions = {
64
+ placement: "right",
65
+ triggerType: "click",
66
+ offsetSkidding: 32,
67
+ offsetDistance: 5,
68
+ delay: 300,
69
+ };
70
+
71
+ dropdown = new Dropdown(dropdownTargetEl.value, dropdownTriggerEl.value, options);
72
+ }
73
+ }
74
+ });
11
75
  </script>
12
76
 
13
77
  <template>
14
- <div>
15
- <VTooltip
16
- w-inherit
78
+ <div
79
+ flex
80
+ >
81
+ <div>
82
+ <VTooltip
83
+ w-inherit
84
+ >
85
+ <div>
86
+ <div
87
+ i-material-symbols-info-outline
88
+ text-lg
89
+ />
90
+ </div>
91
+
92
+ <template #popper>
93
+ <div
94
+ flex
95
+ >
96
+ <div>
97
+ {{ t("standings.options.calculation_of_penalty") }}: {{ t(`standings.options.${rank.contest.options?.calculationOfPenalty}`) }}
98
+ </div>
99
+ </div>
100
+ </template>
101
+ </VTooltip>
102
+ </div>
103
+
104
+ <div
105
+ class="border-l-[1px] border-r-[1px]"
106
+ mx-2
107
+ h-6
108
+ border-color-black
109
+ dark:border-color-white
110
+ />
111
+
112
+ <div
113
+ flex
17
114
  >
18
115
  <div
116
+ ref="dropdownTriggerEl"
117
+ i-material-symbols-share
19
118
  text-lg
20
- >
21
- <div i-material-symbols-info-outline text-lg />
22
- </div>
119
+ cursor-pointer
120
+ />
23
121
 
24
- <template #popper>
25
- <div
26
- flex
122
+ <div
123
+ ref="dropdownTargetEl"
124
+ class="z-9999 hidden divide-y divide-gray-100 rounded shadow w-36"
125
+ bg-white
126
+ dark:bg-gray-700
127
+ >
128
+ <ul
129
+ class="py-2 text-sm text-gray-700 dark:text-gray-200"
27
130
  >
28
- <div>
29
- {{ t("standings.options.calculation_of_penalty") }}: {{ t(`standings.options.${rank.contest.options?.calculationOfPenalty}`) }}
30
- </div>
31
- </div>
32
- </template>
33
- </VTooltip>
131
+ <li>
132
+ <div
133
+ class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white"
134
+ cursor-pointer
135
+ @click="copyLink"
136
+ >
137
+ Copy Page Link
138
+ </div>
139
+ </li>
140
+ <li>
141
+ <div
142
+ class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white"
143
+ cursor-pointer
144
+ @click="copyCode"
145
+ >
146
+ Copy Page Code
147
+ </div>
148
+ </li>
149
+ </ul>
150
+ </div>
151
+ </div>
34
152
  </div>
35
153
  </template>