dns_presets_modal.html 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. {{define "modals/dnsPresetsModal"}}
  2. <a-modal id="dnsPresets-modal" v-model="dnsPresetsModal.visible" :title="dnsPresetsModal.title" :closable="true"
  3. :mask-closable="false" :footer="null" :class="themeSwitcher.currentTheme">
  4. <a-list class="ant-dns-presets-list" bordered :style="{ width: '100%' }">
  5. <a-list-item v-for="dns in dnsPresetsDatabase" :style="{ padding: '12px 16px' }">
  6. <div class="ant-dns-presets-line">
  7. <a-space direction="horizontal" size="small" align="center">
  8. <a-tag :color="dns.family ? 'purple' : 'green'">[[ dns.family ? '{{ i18n "pages.xray.dns.dnsPresetFamily" }}' : 'DNS' ]]</a-tag>
  9. <span class="ant-dns-presets-list-name">[[ dns.name ]]</span>
  10. </a-space>
  11. <a-button class="ant-dns-presets-install" type="primary" @click="dnsPresetsModal.install(dns.data)">{{ i18n "install" }}</a-button>
  12. </div>
  13. </a-list-item>
  14. </a-list>
  15. </a-modal>
  16. <style>
  17. .ant-dns-presets-line {
  18. display: flex;
  19. align-items: center;
  20. gap: 8px;
  21. width: 100%;
  22. }
  23. .ant-dns-presets-install {
  24. margin-left: auto;
  25. }
  26. .dark .ant-dns-presets-list {
  27. border-color: var(--dark-color-stroke)
  28. }
  29. .dark .ant-dns-presets-list-name {
  30. color: var(--dark-color-text-primary);
  31. }
  32. </style>
  33. <script>
  34. const dnsPresetsDatabase = [
  35. {
  36. name: 'Google DNS',
  37. family: false,
  38. data: [
  39. "8.8.8.8",
  40. "8.8.4.4",
  41. "2001:4860:4860::8888",
  42. "2001:4860:4860::8844"
  43. ]
  44. },
  45. {
  46. name: 'Cloudflare DNS',
  47. family: false,
  48. data: [
  49. "1.1.1.1",
  50. "1.0.0.1",
  51. "2606:4700:4700::1111",
  52. "2606:4700:4700::1001"
  53. ]
  54. },
  55. {
  56. name: 'Adguard DNS',
  57. family: false,
  58. data: [
  59. "94.140.14.14",
  60. "94.140.15.15",
  61. "2a10:50c0::ad1:ff",
  62. "2a10:50c0::ad2:ff"
  63. ]
  64. },
  65. {
  66. name: 'Adguard Family DNS',
  67. family: true,
  68. data: [
  69. "94.140.14.14",
  70. "94.140.15.15",
  71. "2a10:50c0::ad1:ff",
  72. "2a10:50c0::ad2:ff"
  73. ]
  74. },
  75. {
  76. name: 'Cloudflare Family DNS',
  77. family: true,
  78. data: [
  79. "1.1.1.3",
  80. "1.0.0.3",
  81. "2606:4700:4700::1113",
  82. "2606:4700:4700::1003"
  83. ]
  84. }
  85. ]
  86. const dnsPresetsModal = {
  87. title: '',
  88. visible: false,
  89. selected: null,
  90. install(selectedPreset) {
  91. return ObjectUtil.execute(dnsPresetsModal.selected, selectedPreset);
  92. },
  93. show({ title = '', selected = (selectedPreset) => { }, isEdit = false }) {
  94. this.title = title;
  95. this.selected = selected;
  96. this.visible = true;
  97. },
  98. close() {
  99. dnsPresetsModal.visible = false;
  100. },
  101. };
  102. new Vue({
  103. delimiters: ['[[', ']]'],
  104. el: '#dnsPresets-modal',
  105. data: {
  106. dnsPresetsModal: dnsPresetsModal,
  107. }
  108. });
  109. </script>
  110. {{end}}