@blb-ventures/react-flat-list
Advanced tools
Comparing version 0.5.1 to 0.5.2
@@ -7,3 +7,3 @@ import { FC, ReactNode } from 'react'; | ||
} | ||
export interface FlatListItemProps { | ||
export type FlatListItemProps = { | ||
title: string | ReactNode; | ||
@@ -31,3 +31,3 @@ url?: string; | ||
LinkComponent?: LinkWrapperProps['LinkComponent']; | ||
} | ||
}; | ||
export declare const FlatListItem: FC<FlatListItemProps>; |
import { FC, ReactElement, ReactNode } from 'react'; | ||
export interface FlatListMapItemProps<DataType extends Record<string, any>, ExtraType = undefined> { | ||
export interface FlatListMapItemProps<DataType extends Record<string, unknown>, ExtraType = undefined> { | ||
data: DataType; | ||
@@ -8,7 +8,10 @@ index: number; | ||
} | ||
export interface BaseFlatListProps<DataType extends Record<string, any>, ExtraType> { | ||
type ObjectKey<O, T> = { | ||
[K in keyof O]: O[K] extends T ? K : never; | ||
}[keyof O & string]; | ||
export interface BaseFlatListProps<DataType extends Record<Key, unknown>, ExtraType, Key extends ObjectKey<DataType, string | number>> { | ||
className?: string; | ||
extraClassName?: string; | ||
data?: DataType[]; | ||
dataKey: string | ((item: DataType) => string); | ||
dataKey: Key | ((item: DataType) => string | number); | ||
HeaderComponent?: ReactNode; | ||
@@ -23,5 +26,6 @@ FooterComponent?: ReactNode; | ||
} | ||
export type FlatListProps<DataType extends Record<string, any>, ExtraType> = ExtraType extends Record<string, any> ? BaseFlatListProps<DataType, ExtraType> : Omit<BaseFlatListProps<DataType, ExtraType>, 'extra'> & { | ||
export type FlatListProps<DataType extends Record<Key, unknown>, ExtraType, Key extends ObjectKey<DataType, string | number>> = ExtraType extends Record<string, unknown> ? BaseFlatListProps<DataType, ExtraType, Key> : Omit<BaseFlatListProps<DataType, ExtraType, Key>, 'extra'> & { | ||
extra?: ExtraType; | ||
}; | ||
export declare const FlatList: <DataType extends Record<string, any>, ExtraType = Record<string, any>>({ className, FooterComponent, HeaderComponent, ListItemComponent, EmptyListComponent, ErrorComponent, data, dataKey, extra, loading, error, }: FlatListProps<DataType, ExtraType>) => JSX.Element; | ||
export declare const FlatList: <DataType extends Record<Key, unknown>, Key extends ObjectKey<DataType, string | number>, ExtraType = Record<string, unknown>>({ className, FooterComponent, HeaderComponent, ListItemComponent, EmptyListComponent, ErrorComponent, data, dataKey, extra, loading, error, }: FlatListProps<DataType, ExtraType, Key>) => JSX.Element; | ||
export {}; |
@@ -6,6 +6,7 @@ "use strict"; | ||
const FlatList = ({ className, FooterComponent, HeaderComponent, ListItemComponent, EmptyListComponent, ErrorComponent, data, dataKey, extra, loading, error, }) => { | ||
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: `flat-list ${className !== null && className !== void 0 ? className : ''} ${loading ? 'flat-list-loading' : ''}` }, { children: [HeaderComponent, data != null && data.length > 0 && !loading ? ((0, jsx_runtime_1.jsx)("ul", { children: data.map((it, idx) => ((0, jsx_runtime_1.jsx)(ListItemComponent | ||
/* eslint-disable @typescript-eslint/no-unnecessary-condition */ | ||
, { collection: data, data: it, extra: extra !== null && extra !== void 0 ? extra : {}, index: idx }, loading ? idx : typeof dataKey === 'string' ? it[dataKey] : dataKey(it)))) })) : ErrorComponent != null && error ? (ErrorComponent) : (EmptyListComponent), FooterComponent] }))); | ||
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: `flat-list ${className !== null && className !== void 0 ? className : ''} ${loading ? 'flat-list-loading' : ''}` }, { children: [HeaderComponent, data != null && data.length > 0 && !loading ? ((0, jsx_runtime_1.jsx)("ul", { children: data.map((it, idx) => { | ||
const key = typeof dataKey === 'string' ? it[dataKey] : dataKey(it); | ||
return ((0, jsx_runtime_1.jsx)(ListItemComponent, { collection: data, data: it, extra: extra !== null && extra !== void 0 ? extra : {}, index: idx }, typeof key === 'string' || typeof key === 'number' ? key : idx)); | ||
}) })) : ErrorComponent != null && error ? (ErrorComponent) : (EmptyListComponent), FooterComponent] }))); | ||
}; | ||
exports.FlatList = FlatList; |
/// <reference types="react" /> | ||
import { FlatListMapItemProps } from './flat-list'; | ||
import { FlatListItemProps } from './flat-list-item'; | ||
export interface BaseObjectFlatListItemData<DataType extends Record<string, unknown>> { | ||
export type BaseObjectFlatListItemData<DataType extends Record<string, unknown>> = { | ||
label: string; | ||
formatter?: (value: unknown) => string | null; | ||
flatListItemProps?: Partial<FlatListItemProps> | ((obj: DataType) => Partial<FlatListItemProps>); | ||
} | ||
export interface KeyBasedObjectFlatListItemData<DataType extends Record<string, unknown>> extends BaseObjectFlatListItemData<DataType> { | ||
}; | ||
export type KeyBasedObjectFlatListItemData<DataType extends Record<string, unknown>> = BaseObjectFlatListItemData<DataType> & { | ||
key: keyof DataType; | ||
} | ||
export interface FnBasedObjectFlatListItemData<DataType extends Record<string, unknown>> extends BaseObjectFlatListItemData<DataType> { | ||
}; | ||
export type FnBasedObjectFlatListItemData<DataType extends Record<string, unknown>> = BaseObjectFlatListItemData<DataType> & { | ||
getValue: (obj: DataType) => unknown; | ||
} | ||
}; | ||
export type ObjectFlatListItemData<DataType extends Record<string, unknown>> = KeyBasedObjectFlatListItemData<DataType> | FnBasedObjectFlatListItemData<DataType>; | ||
@@ -16,0 +16,0 @@ export interface ObjectFlatListItemExtra<DataType extends Record<string, unknown>> { |
@@ -16,8 +16,5 @@ "use strict"; | ||
const value = isKeyData(data) ? extra.obj[data.key] : data.getValue(extra.obj); | ||
if (data.formatter) { | ||
if (data.formatter) | ||
return data.formatter(value); | ||
} | ||
else { | ||
return value != null ? String(value) : null; | ||
} | ||
return value != null ? String(value) : null; | ||
}, [data, extra]); | ||
@@ -24,0 +21,0 @@ return extra.obj == null ? null : ((0, jsx_runtime_1.jsx)(flat_list_item_1.FlatListItem, Object.assign({ subtitleLeft: data.label, title: (_a = formattedValue !== null && formattedValue !== void 0 ? formattedValue : extra.fallbackValue) !== null && _a !== void 0 ? _a : '-' }, extra.flatListItemProps, data.flatListItemProps))); |
{ | ||
"name": "@blb-ventures/react-flat-list", | ||
"version": "0.5.1", | ||
"version": "0.5.2", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "./lib/index.js", |
Sorry, the diff of this file is not supported yet
28471