Skip to content

Commit 7eac2cf

Browse files
feat: New DataView
1 parent a45ba01 commit 7eac2cf

13 files changed

Lines changed: 205 additions & 0 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import type { useDataViewProps } from '@primereact/types/shared/dataview';
2+
3+
export const defaultProps: useDataViewProps = {};

packages/headless/src/dataview/useDataView.test.ts

Whitespace-only changes.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { withHeadless } from '@primereact/core/headless';
2+
import { localeComparator, resolveFieldData } from '@primeuix/utils/object';
3+
import { defaultProps } from './useDataView.props';
4+
5+
export const useDataView = withHeadless({
6+
name: 'useDataView',
7+
defaultProps,
8+
setup: () => {
9+
const sort = (value: unknown[] | null, sortField: string, sortOrder: number) => {
10+
if (value) {
11+
const _value = [...value];
12+
const comparer = localeComparator();
13+
14+
_value.sort((data1, data2) => {
15+
const value1 = resolveFieldData(data1, sortField);
16+
const value2 = resolveFieldData(data2, sortField);
17+
const cmp = comparer ? comparer(value1, value2) : value1 > value2 ? 1 : value1 < value2 ? -1 : 0;
18+
19+
return cmp * sortOrder;
20+
});
21+
22+
return _value;
23+
}
24+
25+
return null;
26+
};
27+
28+
return {
29+
// methods
30+
sort
31+
};
32+
}
33+
});
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { createOptionalContext } from '@primereact/core/utils';
2+
import type { DataViewInstance } from '@primereact/types/shared/dataview';
3+
4+
export const [DataViewProvider, useDataViewContext] = createOptionalContext<DataViewInstance>();
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import * as HeadlessDataView from '@primereact/headless/dataview';
2+
import type { DataViewProps } from '@primereact/types/shared/dataview';
3+
4+
export const defaultProps: DataViewProps = {
5+
...HeadlessDataView.defaultProps,
6+
as: 'div'
7+
};

packages/primereact/src/dataview/DataView.test.ts

Whitespace-only changes.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
'use client';
2+
import { Component } from '@primereact/core/component';
3+
import { useDataView } from '@primereact/headless/dataview';
4+
import { styles } from '@primereact/styles/dataview';
5+
import { mergeProps } from '@primeuix/utils';
6+
import { withComponent } from 'primereact/base';
7+
import * as React from 'react';
8+
import { DataViewProvider } from './DataView.context';
9+
import { defaultProps } from './DataView.props';
10+
11+
export const DataView = withComponent({
12+
name: 'DataView',
13+
defaultProps,
14+
styles,
15+
setup(instance) {
16+
const dataview = useDataView(instance.inProps);
17+
18+
return dataview;
19+
},
20+
render(instance) {
21+
const { id, props, ptmi, cx } = instance;
22+
23+
const rootProps = mergeProps(
24+
{
25+
id,
26+
className: cx('root')
27+
},
28+
ptmi('root')
29+
);
30+
31+
return (
32+
<DataViewProvider value={instance}>
33+
<Component instance={instance} attrs={rootProps} children={props.children} />
34+
</DataViewProvider>
35+
);
36+
}
37+
});
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
'use client';
2+
export * from './DataView';
3+
export * from './DataView.context';
4+
export * from './DataView.props';
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { createStyles } from '@primereact/styles/utils';
2+
import type { DataViewInstance } from '@primereact/types/shared/dataview';
3+
4+
export const styles = createStyles<DataViewInstance>({
5+
name: 'dataview',
6+
classes: {
7+
root: 'p-dataview p-component'
8+
}
9+
});
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './DataView.style';

0 commit comments

Comments
 (0)