xref: /openbmc/webui-vue/src/views/Settings/Network/ModalMacAddress.vue (revision 4626aec43da32b56b7c1e87e5dc831398e39416c)
112dc20c3SDixsie Wolmers<template>
212dc20c3SDixsie Wolmers  <b-modal
312dc20c3SDixsie Wolmers    id="modal-mac-address"
412dc20c3SDixsie Wolmers    ref="modal"
512dc20c3SDixsie Wolmers    :title="$t('pageNetwork.modal.editMacAddressTitle')"
612dc20c3SDixsie Wolmers    @hidden="resetForm"
712dc20c3SDixsie Wolmers  >
812dc20c3SDixsie Wolmers    <b-form id="mac-settings" @submit.prevent="handleSubmit">
912dc20c3SDixsie Wolmers      <b-row>
1012dc20c3SDixsie Wolmers        <b-col sm="6">
1112dc20c3SDixsie Wolmers          <b-form-group
1212dc20c3SDixsie Wolmers            :label="$t('pageNetwork.macAddress')"
1312dc20c3SDixsie Wolmers            label-for="macAddress"
1412dc20c3SDixsie Wolmers          >
1512dc20c3SDixsie Wolmers            <b-form-input
1612dc20c3SDixsie Wolmers              id="mac-address"
1712dc20c3SDixsie Wolmers              v-model.trim="form.macAddress"
1812dc20c3SDixsie Wolmers              data-test-id="network-input-macAddress"
1912dc20c3SDixsie Wolmers              type="text"
20de23ea23SSurya V              :state="getValidationState(v$.form.macAddress)"
21de23ea23SSurya V              @change="v$.form.macAddress.$touch()"
2212dc20c3SDixsie Wolmers            />
2312dc20c3SDixsie Wolmers            <b-form-invalid-feedback role="alert">
24*4626aec4SSurya Venkatesan              <div v-if="v$.form.macAddress.required.$invalid">
2512dc20c3SDixsie Wolmers                {{ $t('global.form.fieldRequired') }}
2612dc20c3SDixsie Wolmers              </div>
27*4626aec4SSurya Venkatesan              <div v-if="v$.form.macAddress.macAddress.$invalid">
2812dc20c3SDixsie Wolmers                {{ $t('global.form.invalidFormat') }}
2912dc20c3SDixsie Wolmers              </div>
3012dc20c3SDixsie Wolmers            </b-form-invalid-feedback>
3112dc20c3SDixsie Wolmers          </b-form-group>
3212dc20c3SDixsie Wolmers        </b-col>
3312dc20c3SDixsie Wolmers      </b-row>
3412dc20c3SDixsie Wolmers    </b-form>
3512dc20c3SDixsie Wolmers    <template #modal-footer="{ cancel }">
3612dc20c3SDixsie Wolmers      <b-button variant="secondary" @click="cancel()">
3712dc20c3SDixsie Wolmers        {{ $t('global.action.cancel') }}
3812dc20c3SDixsie Wolmers      </b-button>
3912dc20c3SDixsie Wolmers      <b-button
4012dc20c3SDixsie Wolmers        form="mac-settings"
4112dc20c3SDixsie Wolmers        type="submit"
4212dc20c3SDixsie Wolmers        variant="primary"
4312dc20c3SDixsie Wolmers        @click="onOk"
4412dc20c3SDixsie Wolmers      >
4512dc20c3SDixsie Wolmers        {{ $t('global.action.add') }}
4612dc20c3SDixsie Wolmers      </b-button>
4712dc20c3SDixsie Wolmers    </template>
4812dc20c3SDixsie Wolmers  </b-modal>
4912dc20c3SDixsie Wolmers</template>
5012dc20c3SDixsie Wolmers
5112dc20c3SDixsie Wolmers<script>
5212dc20c3SDixsie Wolmersimport VuelidateMixin from '@/components/Mixins/VuelidateMixin.js';
537d6b44cbSEd Tanousimport { useVuelidate } from '@vuelidate/core';
54*4626aec4SSurya Venkatesanimport { required } from '@vuelidate/validators';
55*4626aec4SSurya Venkatesanimport { macAddress } from 'vuelidate/lib/validators';
56de23ea23SSurya Vimport { useI18n } from 'vue-i18n';
5712dc20c3SDixsie Wolmers
5812dc20c3SDixsie Wolmersexport default {
5912dc20c3SDixsie Wolmers  mixins: [VuelidateMixin],
6012dc20c3SDixsie Wolmers  props: {
6112dc20c3SDixsie Wolmers    macAddress: {
6212dc20c3SDixsie Wolmers      type: String,
6312dc20c3SDixsie Wolmers      default: '',
6412dc20c3SDixsie Wolmers    },
6512dc20c3SDixsie Wolmers  },
667d6b44cbSEd Tanous  setup() {
677d6b44cbSEd Tanous    return {
687d6b44cbSEd Tanous      v$: useVuelidate(),
697d6b44cbSEd Tanous    };
707d6b44cbSEd Tanous  },
7112dc20c3SDixsie Wolmers  data() {
7212dc20c3SDixsie Wolmers    return {
73de23ea23SSurya V      $t: useI18n().t,
7412dc20c3SDixsie Wolmers      form: {
7512dc20c3SDixsie Wolmers        macAddress: '',
7612dc20c3SDixsie Wolmers      },
7712dc20c3SDixsie Wolmers    };
7812dc20c3SDixsie Wolmers  },
7912dc20c3SDixsie Wolmers  watch: {
8012dc20c3SDixsie Wolmers    macAddress() {
8112dc20c3SDixsie Wolmers      this.form.macAddress = this.macAddress;
8212dc20c3SDixsie Wolmers    },
8312dc20c3SDixsie Wolmers  },
8412dc20c3SDixsie Wolmers  validations() {
8512dc20c3SDixsie Wolmers    return {
8612dc20c3SDixsie Wolmers      form: {
8712dc20c3SDixsie Wolmers        macAddress: {
8812dc20c3SDixsie Wolmers          required,
8912dc20c3SDixsie Wolmers          macAddress: macAddress(),
9012dc20c3SDixsie Wolmers        },
9112dc20c3SDixsie Wolmers      },
9212dc20c3SDixsie Wolmers    };
9312dc20c3SDixsie Wolmers  },
9412dc20c3SDixsie Wolmers  methods: {
9512dc20c3SDixsie Wolmers    handleSubmit() {
96de23ea23SSurya V      this.v$.$touch();
97de23ea23SSurya V      if (this.v$.$invalid) return;
9812dc20c3SDixsie Wolmers      this.$emit('ok', { MACAddress: this.form.macAddress });
9912dc20c3SDixsie Wolmers      this.closeModal();
10012dc20c3SDixsie Wolmers    },
10112dc20c3SDixsie Wolmers    closeModal() {
10212dc20c3SDixsie Wolmers      this.$nextTick(() => {
10312dc20c3SDixsie Wolmers        this.$refs.modal.hide();
10412dc20c3SDixsie Wolmers      });
10512dc20c3SDixsie Wolmers    },
10612dc20c3SDixsie Wolmers    resetForm() {
10712dc20c3SDixsie Wolmers      this.form.macAddress = this.macAddress;
108de23ea23SSurya V      this.v$.$reset();
10912dc20c3SDixsie Wolmers      this.$emit('hidden');
11012dc20c3SDixsie Wolmers    },
11112dc20c3SDixsie Wolmers    onOk(bvModalEvt) {
11212dc20c3SDixsie Wolmers      // prevent modal close
11312dc20c3SDixsie Wolmers      bvModalEvt.preventDefault();
11412dc20c3SDixsie Wolmers      this.handleSubmit();
11512dc20c3SDixsie Wolmers    },
11612dc20c3SDixsie Wolmers  },
11712dc20c3SDixsie Wolmers};
11812dc20c3SDixsie Wolmers</script>
119