<template>
    <modal :action="'Ad Editor'" @submit="submit" ref="dialog" @open="load" dialogClass="w-100"
        :buttonText="'Save'">

        <div class="form-group ad-list" v-for="(ad, index) in ads">
            <label :for="'adm-content-' + index" class="control-label">Ad #{{(index + 1)}}
                <a v-if="(index > 0)" @click="moveAdUp(index)" title="Move Up"><i class="fa fa-arrow-up"></i></a>
                <a v-if="(index < ads.length - 1)" @click="moveAdDown(index)" title="Move Down"><i class="fa fa-arrow-down"></i></a>
                <a @click="removeAd(index)" title="Remove Ad"><i class="fas fa-times-circle"></i></a>
            </label>

            <editor :id="'adm-content-' + index" v-model="ad.content" :hasToolbar="true" class="form-control" :maxlength="core.connection.vars.lfrp_max" :disabled="ad.disabled">
            </editor>

            <tagEditor :id="'adm-tags-' + index" v-model="ad.tags" placeholder="Enter one or more tags, e.g. 'romantic'" :add-tag-on-keys="[13, 188, 9, 32]" class="form-control" :disabled="ad.disabled" :add-tag-on-blur="true"></tagEditor>

            <label class="control-label disable" :for="'adm-disabled-' + index">
              <input type="checkbox" :id="'adm-disabled-' + index" v-model='ad.disabled' />
              Disable
            </label>
        </div>

        <button class="btn btn-outline-secondary" @click="addAd()">Add Another</button>

    </modal>
</template>

<script lang="ts">
    import {Component} from '@f-list/vue-ts';
    import CustomDialog from '../../components/custom_dialog';
    import Modal from '../../components/Modal.vue';
    import {Conversation} from '../interfaces';
    import l from '../localize';
    import {Editor} from '../bbcode';
    import core from '../core';
    import { Dialog } from '../../helpers/dialog';
    import InputTag from 'vue-input-tag';
    import { Ad } from './ad-center';
    import _ from 'lodash';

    @Component({
        components: {modal: Modal, editor: Editor, tagEditor: InputTag},
    })
    export default class AdCenterDialog extends CustomDialog {
        l = l;
        setting = Conversation.Setting;
        ads!: Ad[];
        core = core;

        load(): void {
            this.ads = _.cloneDeep(core.adCenter.get());

            if (this.ads.length === 0) {
              this.addAd();
            }
        }

        async submit(): Promise<void> {
          await core.adCenter.set(this.ads);
        }

        addAd(): void {
            this.ads.push({
              content: '',
              disabled: false,
              tags: []
            });
        }

        removeAd(index: number): void {
            // if (confirm('Are you sure you wish to remove this ad?')) {
            if (Dialog.confirmDialog('Are you sure you wish to remove this ad?')) {
                this.ads.splice(index, 1);
            }
        }

        moveAdUp(index: number): void {
            const ad = this.ads.splice(index, 1);

            this.ads.splice(index - 1, 0, ad[0]);
        }


        moveAdDown(index: number): void {
            const ad = this.ads.splice(index, 1);

            this.ads.splice(index + 1, 0, ad[0]);
        }

    }
</script>

<style lang="scss">
  .ad-list .bbcode-toolbar .color-selector {
      left: 58px !important;
  }

  .w-100 {
    min-width: 70%;
  }

  .form-group.ad-list {
    label {
      font-size: 140%;

      a {
        padding-right: 0.3rem;
        opacity:0.3;
        font-size: 70%;

        &:hover {
          opacity:0.6
        }
      }
    }

    .bbcode-preview {
      margin-top: 0;
      border: 1px solid;
      padding: 5px;
      border-radius: 0 5px 5px 5px;
      background: var(--input-bg);
      border-color: var(--secondary);
    }

    .bbcode-editor {
      border: none;
      background: none;
      height: auto;

      textarea {
        width: 100%;
        color: var(--input-color);
        background-color: var(--input-bg);
        border-radius: 0 5px 5px 5px;
      }
    }

    .vue-input-tag-wrapper[disabled=disabled],
    textarea[disabled=disabled],
    div.bbcode-toolbar[disabled=disabled] {
      opacity: 0.5;
      pointer-events: none;
    }

    .vue-input-tag-wrapper {
      margin: 0.375rem 0.75rem;
      width: auto;
      height: auto;
      padding-bottom: 0;

      input {
        width: 260px;
        color: var(--gray-dark);
      }
    }

    label.disable {
      color: var(--gray-dark);
      margin: 0.375rem 0.75rem;
      font-size: 100%;
    }
  }

</style>

