{"version":3,"file":"VDataTableRows.mjs","names":["VDataTableGroupHeaderRow","VDataTableRow","useLocale","useExpanded","useHeaders","useSelection","useGroupBy","genericComponent","useRender","VDataTableRows","name","props","loading","Boolean","String","loadingText","type","default","hideNoData","items","Array","noDataText","rowHeight","Number","emits","event","value","setup","emit","slots","columns","expandOnClick","toggleExpand","isExpanded","isSelected","toggleSelect","toggleGroup","isGroupOpen","t","undefined","length","map","item","index","id","slotProps"],"sources":["../../../src/labs/VDataTable/VDataTableRows.tsx"],"sourcesContent":["// Components\nimport { VDataTableGroupHeaderRow } from './VDataTableGroupHeaderRow'\nimport { VDataTableRow } from './VDataTableRow'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useGroupBy } from './composables/group'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem, GroupHeaderItem, InternalDataTableHeader, InternalDataTableItem } from './types'\nimport type { PropType } from 'vue'\n\ntype GroupHeaderSlot = {\n  index: number\n  item: GroupHeaderItem\n  columns: InternalDataTableHeader[]\n  isExpanded: (item: DataTableItem) => boolean\n  toggleExpand: (item: DataTableItem) => void\n  isSelected: (items: DataTableItem[]) => boolean\n  toggleSelect: (item: DataTableItem) => void\n  toggleGroup: (group: GroupHeaderItem) => void\n  isGroupOpen: (group: GroupHeaderItem) => boolean\n}\n\ntype ItemSlot = {\n  index: number\n  item: InternalDataTableItem\n  columns: InternalDataTableHeader[]\n  isExpanded: (item: DataTableItem) => boolean\n  toggleExpand: (item: DataTableItem) => void\n  isSelected: (items: DataTableItem[]) => boolean\n  toggleSelect: (item: DataTableItem) => void\n}\n\nexport type VDataTableRowsSlots = {\n  default: []\n  item: [ItemSlot]\n  loading: []\n  'group-header': [GroupHeaderSlot]\n  'no-data': []\n  'expanded-row': [ItemSlot]\n  'item.data-table-select': [ItemSlot]\n  'item.data-table-expand': [ItemSlot]\n} & { [key: `item.${string}`]: [ItemSlot] }\n\nexport const VDataTableRows = genericComponent<VDataTableRowsSlots>()({\n  name: 'VDataTableRows',\n\n  props: {\n    loading: [Boolean, String],\n    loadingText: {\n      type: String,\n      default: '$vuetify.dataIterator.loadingText',\n    },\n    hideNoData: Boolean,\n    items: {\n      type: Array as PropType<InternalDataTableItem[]>,\n      default: () => ([]),\n    },\n    noDataText: {\n      type: String,\n      default: '$vuetify.noDataText',\n    },\n    rowHeight: Number,\n  },\n\n  emits: {\n    'click:row': (event: Event, value: { item: DataTableItem }) => true,\n  },\n\n  setup (props, { emit, slots }) {\n    const { columns } = useHeaders()\n    const { expandOnClick, toggleExpand, isExpanded } = useExpanded()\n    const { isSelected, toggleSelect } = useSelection()\n    const { toggleGroup, isGroupOpen } = useGroupBy()\n    const { t } = useLocale()\n\n    useRender(() => (\n      <>\n        { props.loading ? slots.loading?.() ?? (\n          <VDataTableRow\n            class=\"v-data-table-rows-no-data\"\n            key=\"loading\"\n          >\n            { t(props.loadingText) }\n          </VDataTableRow>\n        ) : undefined }\n\n        { !props.loading && !props.items.length && !props.hideNoData && (slots['no-data']?.() ?? (\n          <VDataTableRow\n            class=\"v-data-table-rows-no-data\"\n            key=\"no-data\"\n          >\n            { t(props.noDataText) }\n          </VDataTableRow>\n        )) }\n\n        { props.items.map((item, index) => {\n          if (item.type === 'group-header') {\n            return slots['group-header'] ? slots['group-header']({\n              index,\n              item,\n              columns: columns.value,\n              isExpanded,\n              toggleExpand,\n              isSelected,\n              toggleSelect,\n              toggleGroup,\n              isGroupOpen,\n            } as GroupHeaderSlot) : (\n              <VDataTableGroupHeaderRow\n                key={ `group-header_${item.id}` }\n                item={ item }\n                v-slots={ slots }\n              />\n            )\n          }\n\n          const slotProps = {\n            index,\n            item,\n            columns: columns.value,\n            isExpanded,\n            toggleExpand,\n            isSelected,\n            toggleSelect,\n          } as ItemSlot\n\n          return (\n            <>\n              { slots.item ? slots.item(slotProps) : (\n                <VDataTableRow\n                  key={ `item_${item.value}` }\n                  onClick={ (event: Event) => {\n                    if (expandOnClick.value) {\n                      toggleExpand(item.value)\n                    }\n\n                    emit('click:row', event, { item })\n                  } }\n                  item={ item }\n                  v-slots={ slots }\n                />\n              ) }\n\n              { isExpanded(item) && slots['expanded-row']?.(slotProps) }\n            </>\n          )\n        }) }\n      </>\n    ))\n\n    return {}\n  },\n})\n\nexport type VDataTableRows = InstanceType<typeof VDataTableRows>\n"],"mappings":";AAAA;AAAA,SACSA,wBAAwB;AAAA,SACxBC,aAAa,+BAEtB;AAAA,SACSC,SAAS;AAAA,SACTC,WAAW;AAAA,SACXC,UAAU;AAAA,SACVC,YAAY;AAAA,SACZC,UAAU,mCAEnB;AAAA,SACSC,gBAAgB,EAAEC,SAAS,gCAEpC;AAqCA,OAAO,MAAMC,cAAc,GAAGF,gBAAgB,EAAuB,CAAC;EACpEG,IAAI,EAAE,gBAAgB;EAEtBC,KAAK,EAAE;IACLC,OAAO,EAAE,CAACC,OAAO,EAAEC,MAAM,CAAC;IAC1BC,WAAW,EAAE;MACXC,IAAI,EAAEF,MAAM;MACZG,OAAO,EAAE;IACX,CAAC;IACDC,UAAU,EAAEL,OAAO;IACnBM,KAAK,EAAE;MACLH,IAAI,EAAEI,KAA0C;MAChDH,OAAO,EAAE,MAAO;IAClB,CAAC;IACDI,UAAU,EAAE;MACVL,IAAI,EAAEF,MAAM;MACZG,OAAO,EAAE;IACX,CAAC;IACDK,SAAS,EAAEC;EACb,CAAC;EAEDC,KAAK,EAAE;IACL,WAAW,EAAE,CAACC,KAAY,EAAEC,KAA8B,KAAK;EACjE,CAAC;EAEDC,KAAK,CAAEhB,KAAK,QAAmB;IAAA,IAAjB;MAAEiB,IAAI;MAAEC;IAAM,CAAC;IAC3B,MAAM;MAAEC;IAAQ,CAAC,GAAG1B,UAAU,EAAE;IAChC,MAAM;MAAE2B,aAAa;MAAEC,YAAY;MAAEC;IAAW,CAAC,GAAG9B,WAAW,EAAE;IACjE,MAAM;MAAE+B,UAAU;MAAEC;IAAa,CAAC,GAAG9B,YAAY,EAAE;IACnD,MAAM;MAAE+B,WAAW;MAAEC;IAAY,CAAC,GAAG/B,UAAU,EAAE;IACjD,MAAM;MAAEgC;IAAE,CAAC,GAAGpC,SAAS,EAAE;IAEzBM,SAAS,CAAC,qCAEJG,KAAK,CAACC,OAAO,GAAGiB,KAAK,CAACjB,OAAO,IAAI;MAAA,SAEzB,2BAA2B;MAAA,OAC7B;IAAS;MAAA,gBAEX0B,CAAC,CAAC3B,KAAK,CAACI,WAAW,CAAC;IAAA,EAEzB,GAAGwB,SAAS,EAEX,CAAC5B,KAAK,CAACC,OAAO,IAAI,CAACD,KAAK,CAACQ,KAAK,CAACqB,MAAM,IAAI,CAAC7B,KAAK,CAACO,UAAU,KAAKW,KAAK,CAAC,SAAS,CAAC,IAAI;MAAA,SAE3E,2BAA2B;MAAA,OAC7B;IAAS;MAAA,gBAEXS,CAAC,CAAC3B,KAAK,CAACU,UAAU,CAAC;IAAA,EAExB,CAAC,EAEAV,KAAK,CAACQ,KAAK,CAACsB,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;MACjC,IAAID,IAAI,CAAC1B,IAAI,KAAK,cAAc,EAAE;QAChC,OAAOa,KAAK,CAAC,cAAc,CAAC,GAAGA,KAAK,CAAC,cAAc,CAAC,CAAC;UACnDc,KAAK;UACLD,IAAI;UACJZ,OAAO,EAAEA,OAAO,CAACJ,KAAK;UACtBO,UAAU;UACVD,YAAY;UACZE,UAAU;UACVC,YAAY;UACZC,WAAW;UACXC;QACF,CAAC,CAAoB;UAAA,OAEV,gBAAeK,IAAI,CAACE,EAAG,EAAC;UAAA,QACxBF;QAAI,GACDb,KAAK,CAElB;MACH;MAEA,MAAMgB,SAAS,GAAG;QAChBF,KAAK;QACLD,IAAI;QACJZ,OAAO,EAAEA,OAAO,CAACJ,KAAK;QACtBO,UAAU;QACVD,YAAY;QACZE,UAAU;QACVC;MACF,CAAa;MAEb,sCAEMN,KAAK,CAACa,IAAI,GAAGb,KAAK,CAACa,IAAI,CAACG,SAAS,CAAC;QAAA,OAEzB,QAAOH,IAAI,CAAChB,KAAM,EAAC;QAAA,WACfD,KAAY,IAAK;UAC1B,IAAIM,aAAa,CAACL,KAAK,EAAE;YACvBM,YAAY,CAACU,IAAI,CAAChB,KAAK,CAAC;UAC1B;UAEAE,IAAI,CAAC,WAAW,EAAEH,KAAK,EAAE;YAAEiB;UAAK,CAAC,CAAC;QACpC,CAAC;QAAA,QACMA;MAAI,GACDb,KAAK,CAElB,EAECI,UAAU,CAACS,IAAI,CAAC,IAAIb,KAAK,CAAC,cAAc,CAAC,GAAGgB,SAAS,CAAC;IAG9D,CAAC,CAAC,EAEL,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}