import "./index.less";
import ThemeColor from "./ThemeColor";
import BlockChecbox from "./BlockChecbox";
import Vue from 'vue';
import { Drawer, Modal, Divider, Switch, Radio, message } from "ant-design-vue";
import { mapGetters } from "vuex";

const Body = {
  props: ["title"],
  render: function render() {
    var h = arguments[0];
    const { $slots, title } = this;
    return h("div", { style: { marginBottom: 24 } }, [
      h("h3", { class: "title" }, title),
      $slots["default"],
    ]);
  },
};

Vue.use(Drawer)
Vue.use(Modal)
Vue.use(Switch)
Vue.use(Radio)

const SettingDrawer = {
  // data: () => ({
  //     primaryColor: "#42b983",
  //     blockChecbox: "sidemenu"
  // }),
  props: ["collapse"],
  computed: {
    ...mapGetters({
      settings: "global/settings",
    }),
  },
  methods: {
    changeSetting(key, value) {
      const nextState = this.settings;
      nextState[key] = value;

      if (key === "layout") {
        nextState.contentWidth = value === "topmenu" ? "Fixed" : "Fluid";
      }
      else if (key === 'fixedHeader' && !value) {
        nextState.autoHideHeader = false;
      }
      // console.log(this.settings);
      // console.log(nextState);

      nextState.config = true;
      this.$store.commit('global/UpdateDefaultSettings', this.settings);
      this.$store.commit('global/UpdateDefaultSettings', nextState);
      message.loading("正在编译主题!", 1.5);
      this.$store.dispatch("global/defaultSettings", true);

    },
    onChange(checked) {
      console.log(`a-switch to ${checked}`);
    },
    togglerContent() {
      this.$parent.collapse = !this.collapse;
    },
  },
  render() {
    const { collapse } = this;
    const { primaryColor, layout, navTheme, contentWidth, fixedHeader, fixSiderbar, autoHideHeader } = this.settings;

    return (
      <Drawer
        title="界面设置"
        placement="right"
        closable={false}
        onClose={this.togglerContent}
        visible={collapse}
        width={300}
      >
        <div class="setting-drawer content">
          <Body title={this.$t("app.setting.pagestyle")}>
            <BlockChecbox
              list={[
                {
                  key: "dark",
                  url:
                    "https://gw.alipayobjects.com/zos/rmsportal/LCkqqYNmvBEbokSDscrm.svg",
                  title: this.$t("app.setting.pagestyle.dark"),
                },
                {
                  key: "light",
                  url:
                    "https://gw.alipayobjects.com/zos/rmsportal/jpRkZQMyYRryryPNtyIC.svg",
                  title: this.$t("app.setting.pagestyle.light"),
                },
              ]}
              value={navTheme}
              onChange={(e) => {
                this.changeSetting("navTheme", e);
              }}
            />
          </Body>
          <Divider />
          <ThemeColor
            title={this.$t("app.setting.themecolor")}
            value={primaryColor}
            onChange={(e) => {
              this.changeSetting("primaryColor", e);
            }}
          />

          <Divider />

          <Body title={this.$t("app.setting.navigationmode")}>
            <BlockChecbox
              list={[
                {
                  key: "sidemenu",
                  url:
                    "https://gw.alipayobjects.com/zos/rmsportal/JopDzEhOqwOjeNTXkoje.svg",
                  title: this.$t("app.setting.sidemenu"),
                },
                {
                  key: "topmenu",
                  url:
                    "https://gw.alipayobjects.com/zos/rmsportal/KDNDBbriJhLwuqMoxcAr.svg",
                  title: this.$t("app.setting.topmenu"),
                  style: { paddingLeft: "18px" },
                },
              ]}
              value={layout}
              onChange={(e) => {
                this.changeSetting("layout", e);
              }}
            />
          </Body>

          <Divider />
          <h3 class="setting-title">其它设置</h3>
          <div class="setting-item">
            <p>内容区域宽度</p>
            <a-radio-group value={contentWidth} size="small" default-value="Fluid" button-style="solid" onChange={(e) => {
              this.changeSetting("contentWidth", e.target.value);
            }}>
              <a-radio-button value="Fluid">
                流式
              </a-radio-button>
              <a-radio-button value="Fixed">
                固定
              </a-radio-button>
            </a-radio-group>
          </div>
          <div class="setting-item">
            <p>固定HEADER</p>
            <a-switch checked={fixedHeader} size="small" onChange={(e) => {
                this.changeSetting("fixedHeader", e);
              }} />
          </div>
          <div class="setting-item">
            <p>自动隐藏HEADER</p>
            <a-switch checked={autoHideHeader} size="small" onChange={(e) => {
                this.changeSetting("autoHideHeader", e);
              }} />
          </div>
          <div class="setting-item">
            <p>固定侧边栏</p>
            <a-switch checked={fixSiderbar} size="small" onChange={(e) => {
                this.changeSetting("fixSiderbar", e);
              }} />
          </div>
        </div>
      </Drawer>
    );
  },
};
export default SettingDrawer;