| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | 
							- {{define "dnsModal"}}
 
- <a-modal id="dns-modal" v-model="dnsModal.visible" :title="dnsModal.title" @ok="dnsModal.ok" :closable="true" :mask-closable="false" :ok-text="dnsModal.okText" cancel-text='{{ i18n "close" }}' :class="themeSwitcher.currentTheme">
 
-   <a-form :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }">
 
-     <a-form-item label='{{ i18n "pages.xray.outbound.address" }}'>
 
-       <a-input v-model.trim="dnsModal.dnsServer.address"></a-input>
 
-     </a-form-item>
 
-     <a-form-item label='{{ i18n "pages.xray.dns.domains" }}'>
 
-       <a-button icon="plus" size="small" type="primary" @click="dnsModal.dnsServer.domains.push('')"></a-button>
 
-       <template v-for="(domain, index) in dnsModal.dnsServer.domains">
 
-         <a-input v-model.trim="dnsModal.dnsServer.domains[index]">
 
-           <a-button icon="minus" size="small" slot="addonAfter" @click="dnsModal.dnsServer.domains.splice(index,1)"></a-button>
 
-         </a-input>
 
-       </template>
 
-     </a-form-item>
 
-     <a-form-item label='{{ i18n "pages.xray.dns.strategy" }}' v-if="isAdvanced">
 
-       <a-select v-model="dnsModal.dnsServer.queryStrategy" style="width: 100%" :dropdown-class-name="themeSwitcher.currentTheme">
 
-         <a-select-option :value="l" :label="l" v-for="l in ['UseIP', 'UseIPv4', 'UseIPv6']"> [[ l ]] </a-select-option>
 
-       </a-select>
 
-     </a-form-item>
 
-     <a-form-item label='Skip Fallback' v-if="isAdvanced">
 
-       <a-switch v-model="dnsModal.dnsServer.skipFallback"></a-switch>
 
-     </a-form-item>
 
-   </a-form>
 
- </a-modal>
 
- <script>
 
-   const dnsModal = {
 
-     title: '',
 
-     visible: false,
 
-     okText: '{{ i18n "confirm" }}',
 
-     isEdit: false,
 
-     confirm: null,
 
-     dnsServer: {
 
-       address: "localhost",
 
-       domains: [],
 
-       queryStrategy: 'UseIP',
 
-       skipFallback: true,
 
-     },
 
-     ok() {
 
-       domains = dnsModal.dnsServer.domains.filter(d => d.length > 0);
 
-       dnsModal.dnsServer.domains = domains;
 
-       newDnsServer = domains.length > 0 ? dnsModal.dnsServer : dnsModal.dnsServer.address;
 
-       ObjectUtil.execute(dnsModal.confirm, newDnsServer);
 
-     },
 
-     show({
 
-       title = '',
 
-       okText = '{{ i18n "confirm" }}',
 
-       dnsServer,
 
-       confirm = (dnsServer) => {},
 
-       isEdit = false
 
-     }) {
 
-       this.title = title;
 
-       this.okText = okText;
 
-       this.confirm = confirm;
 
-       this.visible = true;
 
-       if (isEdit) {
 
-         if (typeof dnsServer == 'object') {
 
-           this.dnsServer = dnsServer;
 
-         } else {
 
-           this.dnsServer = {
 
-             address: dnsServer ?? "",
 
-             domains: [],
 
-             queryStrategy: 'UseIP',
 
-             skipFallback: true,
 
-           }
 
-         }
 
-       } else {
 
-         this.dnsServer = {
 
-           address: "localhost",
 
-           domains: [],
 
-           queryStrategy: 'UseIP',
 
-           skipFallback: true,
 
-         }
 
-       }
 
-       this.isEdit = isEdit;
 
-     },
 
-     close() {
 
-       dnsModal.visible = false;
 
-     },
 
-   };
 
-   new Vue({
 
-     delimiters: ['[[', ']]'],
 
-     el: '#dns-modal',
 
-     data: {
 
-       dnsModal: dnsModal,
 
-     },
 
-     computed: {
 
-       isAdvanced: {
 
-         get: function() {
 
-           return dnsModal.dnsServer.domains.length > 0
 
-         }
 
-       }
 
-     }
 
-   });
 
- </script>
 
- {{end}}
 
 
  |