Newer
Older
dmpopidor / app / javascript / views / org_admin / question_options / index.js
export default (context) => {
  $(`#${context} .delete_question_option`).on('click', (e) => {
    e.preventDefault();
    const source = $(e.target).closest('[data-attribute="question_option"]');
    source.find('.destroy-question-option').val(true);
    source.hide();
    // $(source).closest('[data-attribute="question_option"]').remove();
  });
  $(`#${context} .new_question_option`).on('click', (e) => {
    e.preventDefault();
    const source = e.target;
    const last = $(source).closest('[data-attribute="question_options"]').find('[data-attribute="question_option"]').last();
    const cloned = last.clone(true);
    const array = $(cloned).find('[id$="_number"]').prop('id').match(/_[\d]*?_+/);

    if (array) {
      const index = Number(array[0].replace(/_/g, ''));
      // Reset values for the new cloned inputs
      cloned.find('[id$="_number"]').val(index + 2);
      cloned.find('[id$="_text"]').val('');
      cloned.find('[id$="_is_default"]').prop('checked', false);
      cloned.find('[id$="__destroy"]').val(false);
      cloned.find('input').each((i, el) => {
        const target = $(el);
        const id = target.prop('id').replace(/_[\d]+_/g, `_${index + 1}_`);
        const name = target.prop('name').replace(/\[[\d]+\]/g, `[${index + 1}]`);
        target.prop('id', id);
        target.prop('name', name);
      });
      last.after(cloned);
      cloned.show();
    }
  });
};