table.js 871 B

123456789101112131415161718192021222324252627282930
  1. export default {
  2. template: `
  3. <q-table v-bind="$attrs" :columns="convertedColumns">
  4. <template v-for="(_, slot) in $slots" v-slot:[slot]="slotProps">
  5. <slot :name="slot" v-bind="slotProps || {}" />
  6. </template>
  7. </q-table>
  8. `,
  9. props: {
  10. columns: Array,
  11. },
  12. computed: {
  13. convertedColumns() {
  14. return this.columns.map((column) => {
  15. const convertedColumn = { ...column };
  16. for (const attr in convertedColumn) {
  17. if (attr.startsWith(":")) {
  18. try {
  19. convertedColumn[attr.slice(1)] = new Function("return " + convertedColumn[attr])();
  20. delete convertedColumn[attr];
  21. } catch (e) {
  22. console.error(`Error while converting ${attr} attribute to function:`, e);
  23. }
  24. }
  25. }
  26. return convertedColumn;
  27. });
  28. },
  29. },
  30. };