| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- {{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 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 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>
 
- </a-modal>
 
- <script>
 
-     const dnsModal = {
 
-         title: '',
 
-         visible: false,
 
-         okText: '{{ i18n "confirm" }}',
 
-         isEdit: false,
 
-         confirm: null,
 
-         dnsServer: {
 
-           address: "localhost",
 
-           domains: [],
 
-           queryStrategy: 'UseIP',
 
-         },
 
-         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?? '';
 
-               }
 
-             } else {
 
-               this.dnsServer = {
 
-                 address: "localhost",
 
-                 domains: [],
 
-                 queryStrategy: 'UseIP',
 
-               }
 
-             }
 
-             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}}
 
 
  |