{"version":3,"file":"VDataTableRow.mjs","names":["VBtn","VCheckboxBtn","useExpanded","useHeaders","useSelection","VDataTableColumn","withModifiers","defineComponent","getPropertyFromItem","propsFactory","useRender","makeVDataTableRowProps","index","Number","item","Object","onClick","Function","VDataTableRow","name","props","setup","_ref","slots","isSelected","toggleSelect","isExpanded","toggleExpand","columns","_createVNode","value","map","column","i","align","fixed","fixedOffset","lastFixed","key","width","default","slotName","slotProps","selectable"],"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 { withModifiers } from 'vue'\nimport { defineComponent, getPropertyFromItem, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DataTableItem } from './types'\n\nexport const makeVDataTableRowProps = propsFactory({\n  index: Number as PropType<Number>,\n  item: Object as PropType<DataTableItem>,\n  onClick: Function as PropType<(e: MouseEvent) => void>,\n}, 'VDataTableRow')\n\nexport const VDataTableRow = defineComponent({\n  name: 'VDataTableRow',\n\n  props: makeVDataTableRowProps(),\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            'v-data-table__tr--clickable': !!props.onClick,\n          },\n        ]}\n        onClick={ props.onClick }\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                  index: props.index,\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                      disabled={ !item.selectable }\n                      modelValue={ isSelected([item]) }\n                      onClick={ withModifiers(() => toggleSelect(item), ['stop']) }\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={ withModifiers(() => toggleExpand(item), ['stop']) }\n                    />\n                  )\n                }\n\n                return getPropertyFromItem(item.columns, column.key)\n              },\n            }}\n          </VDataTableColumn>\n        ))}\n      </tr>\n    ))\n  },\n})\n\nexport type VDataTableRow = InstanceType<typeof VDataTableRow>\n"],"mappings":"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"}