dns_presets_modal.html 2.8 KB

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