{"version":3,"file":"VDataTableRow.mjs","names":["VBtn","VCheckboxBtn","useExpanded","useHeaders","useSelection","VDataTableColumn","defineComponent","useRender","VDataTableRow","name","props","item","Object","setup","slots","isSelected","toggleSelect","isExpanded","toggleExpand","columns","value","length","map","column","i","align","fixed","fixedOffset","lastFixed","key","width","default","slotName","slotProps"],"sources":["../../../src/labs/VDataTable/VDataTableRow.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { VDataTableColumn } from './VDataTableColumn'\n\n// Utilities\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DataTableItem } from './types'\n\nexport const VDataTableRow = defineComponent({\n  name: 'VDataTableRow',\n\n  props: {\n    item: Object as PropType<DataTableItem>,\n  },\n\n  setup (props, { slots }) {\n    const { isSelected, toggleSelect } = useSelection()\n    const { isExpanded, toggleExpand } = useExpanded()\n    const { columns } = useHeaders()\n\n    useRender(() => (\n      <tr\n        class={[\n          'v-data-table__tr',\n        ]}\n      >\n        { !columns.value.length && (\n          <VDataTableColumn\n            key=\"no-data\"\n            v-slots={ slots }\n          />\n        ) }\n\n        { props.item && columns.value.map((column, i) => (\n          <VDataTableColumn\n            align={ column.align }\n            fixed={ column.fixed }\n            fixedOffset={ column.fixedOffset }\n            lastFixed={ column.lastFixed }\n            noPadding={ column.key === 'data-table-select' || column.key === 'data-table-expand' }\n            width={ column.width }\n          >\n            {{\n              default: () => {\n                const item = props.item!\n                const slotName = `item.${column.key}`\n                const slotProps = {\n                  item: props.item,\n                  columns: columns.value,\n                  isSelected,\n                  toggleSelect,\n                  isExpanded,\n                  toggleExpand,\n                }\n\n                if (slots[slotName]) return slots[slotName]!(slotProps)\n\n                if (column.key === 'data-table-select') {\n                  return slots['item.data-table-select']?.(slotProps) ?? (\n                    <VCheckboxBtn\n                      modelValue={ isSelected([item]) }\n                      onClick={ () => toggleSelect(item) }\n                    />\n                  )\n                }\n\n                if (column.key === 'data-table-expand') {\n                  return slots['item.data-table-expand']?.(slotProps) ?? (\n                    <VBtn\n                      icon={isExpanded(item) ? '$collapse' : '$expand' }\n                      size=\"small\"\n                      variant=\"text\"\n                      onClick={ () => toggleExpand(item) }\n                    />\n                  )\n                }\n\n                return item.columns[column.key]\n              },\n            }}\n          </VDataTableColumn>\n        )) }\n      </tr>\n    ))\n  },\n})\n\nexport type VDataTableRow = InstanceType<typeof VDataTableRow>\n"],"mappings":";AAAA;AAAA,SACSA,IAAI;AAAA,SACJC,YAAY,gDAErB;AAAA,SACSC,WAAW;AAAA,SACXC,UAAU;AAAA,SACVC,YAAY;AAAA,SACZC,gBAAgB,kCAEzB;AAAA,SACSC,eAAe,EAAEC,SAAS,gCAEnC;AAIA,OAAO,MAAMC,aAAa,GAAGF,eAAe,CAAC;EAC3CG,IAAI,EAAE,eAAe;EAErBC,KAAK,EAAE;IACLC,IAAI,EAAEC;EACR,CAAC;EAEDC,KAAK,CAAEH,KAAK,QAAa;IAAA,IAAX;MAAEI;IAAM,CAAC;IACrB,MAAM;MAAEC,UAAU;MAAEC;IAAa,CAAC,GAAGZ,YAAY,EAAE;IACnD,MAAM;MAAEa,UAAU;MAAEC;IAAa,CAAC,GAAGhB,WAAW,EAAE;IAClD,MAAM;MAAEiB;IAAQ,CAAC,GAAGhB,UAAU,EAAE;IAEhCI,SAAS,CAAC;MAAA,SAEC,CACL,kBAAkB;IACnB,IAEC,CAACY,OAAO,CAACC,KAAK,CAACC,MAAM;MAAA,OAEf;IAAS,GACHP,KAAK,CAElB,EAECJ,KAAK,CAACC,IAAI,IAAIQ,OAAO,CAACC,KAAK,CAACE,GAAG,CAAC,CAACC,MAAM,EAAEC,CAAC;MAAA,SAEhCD,MAAM,CAACE,KAAK;MAAA,SACZF,MAAM,CAACG,KAAK;MAAA,eACNH,MAAM,CAACI,WAAW;MAAA,aACpBJ,MAAM,CAACK,SAAS;MAAA,aAChBL,MAAM,CAACM,GAAG,KAAK,mBAAmB,IAAIN,MAAM,CAACM,GAAG,KAAK,mBAAmB;MAAA,SAC5EN,MAAM,CAACO;IAAK;MAGlBC,OAAO,EAAE,MAAM;QACb,MAAMpB,IAAI,GAAGD,KAAK,CAACC,IAAK;QACxB,MAAMqB,QAAQ,GAAI,QAAOT,MAAM,CAACM,GAAI,EAAC;QACrC,MAAMI,SAAS,GAAG;UAChBtB,IAAI,EAAED,KAAK,CAACC,IAAI;UAChBQ,OAAO,EAAEA,OAAO,CAACC,KAAK;UACtBL,UAAU;UACVC,YAAY;UACZC,UAAU;UACVC;QACF,CAAC;QAED,IAAIJ,KAAK,CAACkB,QAAQ,CAAC,EAAE,OAAOlB,KAAK,CAACkB,QAAQ,CAAC,CAAEC,SAAS,CAAC;QAEvD,IAAIV,MAAM,CAACM,GAAG,KAAK,mBAAmB,EAAE;UACtC,OAAOf,KAAK,CAAC,wBAAwB,CAAC,GAAGmB,SAAS,CAAC;YAAA,cAElClB,UAAU,CAAC,CAACJ,IAAI,CAAC,CAAC;YAAA,WACrB,MAAMK,YAAY,CAACL,IAAI;UAAC,QAErC;QACH;QAEA,IAAIY,MAAM,CAACM,GAAG,KAAK,mBAAmB,EAAE;UACtC,OAAOf,KAAK,CAAC,wBAAwB,CAAC,GAAGmB,SAAS,CAAC;YAAA,QAEzChB,UAAU,CAACN,IAAI,CAAC,GAAG,WAAW,GAAG,SAAS;YAAA,QAC3C,OAAO;YAAA,WACJ,MAAM;YAAA,WACJ,MAAMO,YAAY,CAACP,IAAI;UAAC,QAErC;QACH;QAEA,OAAOA,IAAI,CAACQ,OAAO,CAACI,MAAM,CAACM,GAAG,CAAC;MACjC;IAAC,EAGN,CAAC,EAEL,CAAC;EACJ;AACF,CAAC,CAAC"}