chromium/tools/android/dependency_analysis/js/src/vue_components/class_graph_hull_settings.vue

<!-- Copyright 2020 The Chromium Authors
     Use of this source code is governed by a BSD-style license that can be
     found in the LICENSE file. -->

<template>
  <div id="hull-settings">
    <label>Group nodes by:</label>
    <div
        v-for="hullDisplay in HullDisplay"
        :key="hullDisplay"
        @change="displayOptionChanged">
      <MdRadio
          :id="hullDisplay"
          v-model="internalSelectedHullDisplay"
          class="md-primary hull-settings-option"
          type="radio"
          name="hullDisplayRadioButtons"
          :value="hullDisplay">
        {{ hullDisplay }}
      </MdRadio>
    </div>
  </div>
</template>

<script>
import {CUSTOM_EVENTS} from '../vue_custom_events.js';
import {HullDisplay} from '../class_view_consts.js';

// @vue/component
const ClassGraphHullSettings = {
  props: {
    selectedHullDisplay: String,
  },
  computed: {
    HullDisplay: () => HullDisplay,
    internalSelectedHullDisplay: {
      get: function() {
        return this.selectedHullDisplay;
      },
      set: function(newValue) {
        this.$emit('update:selectedHullDisplay', newValue);
      },
    },
  },
  methods: {
    displayOptionChanged: function() {
      this.$emit(CUSTOM_EVENTS.DISPLAY_OPTION_CHANGED);
    },
  },
};

export default ClassGraphHullSettings;
</script>

<style scoped>
#hull-settings {
  display: flex;
  flex-direction: column;
  margin-bottom: 10px;
  padding-top: 10px;
}

.hull-settings-option {
  margin: 0;
}
</style>