Abrir Linha de Opçõoes em Tabela

col0 col1 col2 col3 col4 col5
12 13 14 15 16
22 23 24 25 26
32 33 34 35 36

css

a i {
  transform: rotate(0deg);
  transition: 200ms transform ease;
}

a[data-tem-row="1"] i {
  transform: rotate(180deg);
}

html

<template id="template-file-row-panel">
  <td class="has-background-grey-lighter">
    <span class="button icon">
      <i class="fas fa-car"></i>
    </span>
    <span class="button icon">
      <i class="fas fa-leaf"></i>
    </span>
    <span class="button icon">
      <i class="fas fa-fighter-jet"></i>
    </span>
  </td>
</template>
<table id="tbl-row-panel">
<thead>
  <tr>
    <th>col0</th><th>col1</th><th>col2</th><th>col3</th><th>col4</th><th>col5</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>
      <a href="#" class="button">
        <span class="icon"><i class="fas fa-chevron-down"></i></span>
      </a>
    </td>
    <td>12</td>
    <td>13</td>
    <td>14</td>
    <td>15</td>
    <td>16</td>
  </tr>
  <tr>
    <td>
      <a href="#" class="button">
        <span class="icon"><i class="fas fa-chevron-down"></i></span>
      </a>
    </td>
    <td>22</td>
    <td>23</td>
    <td>24</td>
    <td>25</td>
    <td>26</td>
  </tr>
</tbody>
</table>

Javascript

let openPanelFromTable = (function () {
  let table;

  let btnAddRowOnClick = function () {
    let clone = document.getElementById('template-file-row-panel').content.cloneNode(true);
    let row = clone.querySelector('td');
    let cell = this.parentNode;
    let tr = cell.parentNode;
    let tbody = table.querySelector('tbody');
    let novoTr = tbody.insertRow(tr.rowIndex);
    let tds = tr.querySelectorAll('td');
    row.setAttribute('colspan', tds.length);
    novoTr.appendChild(clone);
    this.dataset.temRow = 1;
  };

  let btnRemoveRowOnClick = function (btnAddRow) {
    let cell = this.parentNode;
    let tr = cell.parentNode;
    table.deleteRow(tr.rowIndex + 1);
    this.dataset.temRow = 0;
  };

  let btnHandleOnClick = function () {
    if (this.dataset.temRow && this.dataset.temRow > 0) {
      btnRemoveRowOnClick.bind(this)();
    } else {
      btnAddRowOnClick.bind(this)();
    }
  };

  let init = function (tableSelector) {
    table = document.querySelector(tableSelector);
    let btns = document.querySelectorAll('.button');
    btns.forEach(function (btn) {
      btn.addEventListener('click', btnHandleOnClick.bind(btn));
    });
  };

  return {init};
})();
openPanelFromTable.init('#tbl-row-panel');