@object-ui/plugin-list 3.0.3 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +12 -0
- package/dist/index.js +26993 -24232
- package/dist/index.umd.cjs +36 -34
- package/dist/plugin-list.css +1 -1
- package/dist/src/ListView.d.ts +20 -0
- package/dist/src/ListView.d.ts.map +1 -1
- package/dist/src/ObjectGallery.d.ts +7 -1
- package/dist/src/ObjectGallery.d.ts.map +1 -1
- package/dist/src/UserFilters.d.ts +23 -0
- package/dist/src/UserFilters.d.ts.map +1 -0
- package/dist/src/components/TabBar.d.ts +32 -0
- package/dist/src/components/TabBar.d.ts.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -1
- package/package.json +9 -8
- package/src/ListView.tsx +1216 -161
- package/src/ObjectGallery.tsx +191 -63
- package/src/UserFilters.tsx +453 -0
- package/src/__tests__/ConditionalFormatting.test.ts +285 -0
- package/src/__tests__/DataFetch.test.tsx +224 -0
- package/src/__tests__/Export.test.tsx +175 -0
- package/src/__tests__/FilterNormalization.test.ts +162 -0
- package/src/__tests__/GalleryGrouping.test.tsx +237 -0
- package/src/__tests__/GalleryTimelineSpecConfig.test.tsx +203 -0
- package/src/__tests__/ListView.test.tsx +1946 -19
- package/src/__tests__/ListViewGroupingPropagation.test.tsx +250 -0
- package/src/__tests__/ObjectGallery.test.tsx +208 -0
- package/src/__tests__/TabBar.test.tsx +199 -0
- package/src/__tests__/UserFilters.test.tsx +486 -0
- package/src/components/TabBar.tsx +120 -0
- package/src/index.tsx +13 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { GalleryConfig } from '../../types/src';
|
|
2
|
+
import { GalleryConfig, ViewNavigationConfig, GroupingConfig } from '../../types/src';
|
|
3
3
|
export interface ObjectGalleryProps {
|
|
4
4
|
schema: {
|
|
5
5
|
objectName?: string;
|
|
@@ -8,6 +8,10 @@ export interface ObjectGalleryProps {
|
|
|
8
8
|
data?: Record<string, unknown>[];
|
|
9
9
|
className?: string;
|
|
10
10
|
gallery?: GalleryConfig;
|
|
11
|
+
/** Navigation config for item click behavior */
|
|
12
|
+
navigation?: ViewNavigationConfig;
|
|
13
|
+
/** Grouping configuration for sectioned display */
|
|
14
|
+
grouping?: GroupingConfig;
|
|
11
15
|
/** @deprecated Use gallery.coverField instead */
|
|
12
16
|
imageField?: string;
|
|
13
17
|
/** @deprecated Use gallery.titleField instead */
|
|
@@ -19,6 +23,8 @@ export interface ObjectGalleryProps {
|
|
|
19
23
|
find: (name: string, query: unknown) => Promise<unknown>;
|
|
20
24
|
};
|
|
21
25
|
onCardClick?: (record: Record<string, unknown>) => void;
|
|
26
|
+
/** Callback when a row/item is clicked (overrides NavigationConfig) */
|
|
27
|
+
onRowClick?: (record: Record<string, unknown>) => void;
|
|
22
28
|
}
|
|
23
29
|
export declare const ObjectGallery: React.FC<ObjectGalleryProps>;
|
|
24
30
|
//# sourceMappingURL=ObjectGallery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectGallery.d.ts","sourceRoot":"","sources":["../../src/ObjectGallery.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"ObjectGallery.d.ts","sourceRoot":"","sources":["../../src/ObjectGallery.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAgE,MAAM,OAAO,CAAC;AAIrF,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG5F,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,aAAa,CAAC;QACxB,gDAAgD;QAChD,UAAU,CAAC,EAAE,oBAAoB,CAAC;QAClC,mDAAmD;QACnD,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,iDAAiD;QACjD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iDAAiD;QACjD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAC1E,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACxD,uEAAuE;IACvE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC1D;AAcD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAyPtD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ListViewSchema } from '../../types/src';
|
|
2
|
+
export interface UserFiltersProps {
|
|
3
|
+
config: NonNullable<ListViewSchema['userFilters']>;
|
|
4
|
+
/** Object definition for auto-deriving field options */
|
|
5
|
+
objectDef?: any;
|
|
6
|
+
/** Current data for computing counts */
|
|
7
|
+
data?: any[];
|
|
8
|
+
/** Callback when filter state changes */
|
|
9
|
+
onFilterChange: (filters: any[]) => void;
|
|
10
|
+
/** Maximum visible filter badges before collapsing into "More" dropdown (dropdown mode only) */
|
|
11
|
+
maxVisible?: number;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* UserFilters — Airtable Interfaces-style filter bar.
|
|
16
|
+
*
|
|
17
|
+
* Renders one of three modes based on `config.element`:
|
|
18
|
+
* - **dropdown**: field-level dropdown selector badges
|
|
19
|
+
* - **tabs**: named filter preset tab bar
|
|
20
|
+
* - **toggle**: on/off toggle buttons per field
|
|
21
|
+
*/
|
|
22
|
+
export declare function UserFilters({ config, objectDef, data, onFilterChange, maxVisible, className, }: UserFiltersProps): import("react/jsx-runtime").JSX.Element | null;
|
|
23
|
+
//# sourceMappingURL=UserFilters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserFilters.d.ts","sourceRoot":"","sources":["../../src/UserFilters.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAoBvD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IACnD,wDAAwD;IACxD,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,wCAAwC;IACxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,yCAAyC;IACzC,cAAc,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzC,gGAAgG;IAChG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,SAAS,EACT,IAAS,EACT,cAAc,EACd,UAAU,EACV,SAAS,GACV,EAAE,gBAAgB,kDAkClB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
export interface ViewTab {
|
|
10
|
+
name: string;
|
|
11
|
+
label: string;
|
|
12
|
+
icon?: string;
|
|
13
|
+
view?: string;
|
|
14
|
+
filter?: any;
|
|
15
|
+
order?: number;
|
|
16
|
+
pinned?: boolean;
|
|
17
|
+
isDefault?: boolean;
|
|
18
|
+
visible?: string | boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface TabBarProps {
|
|
21
|
+
tabs: ViewTab[];
|
|
22
|
+
activeTab?: string;
|
|
23
|
+
onTabChange?: (tab: ViewTab) => void;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* TabBar renders a row of view tabs above the ListView toolbar.
|
|
28
|
+
* Supports icons (resolved via Lucide), pinned tabs, isDefault selection,
|
|
29
|
+
* and emits tab changes with filter/sort configuration.
|
|
30
|
+
*/
|
|
31
|
+
export declare const TabBar: React.FC<TabBarProps>;
|
|
32
|
+
//# sourceMappingURL=TabBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../src/components/TabBar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyBD;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA4DxC,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ import { ListView } from './ListView';
|
|
|
2
2
|
import { ViewSwitcher } from './ViewSwitcher';
|
|
3
3
|
import { ObjectGallery } from './ObjectGallery';
|
|
4
4
|
export { ListView, ViewSwitcher, ObjectGallery };
|
|
5
|
+
export { TabBar } from './components/TabBar';
|
|
6
|
+
export type { TabBarProps, ViewTab } from './components/TabBar';
|
|
7
|
+
export { UserFilters } from './UserFilters';
|
|
8
|
+
export type { UserFiltersProps } from './UserFilters';
|
|
9
|
+
export { evaluateConditionalFormatting, normalizeFilterCondition, normalizeFilters } from './ListView';
|
|
5
10
|
export type { ListViewProps } from './ListView';
|
|
6
11
|
export type { ObjectGalleryProps } from './ObjectGallery';
|
|
7
12
|
export type { ViewSwitcherProps, ViewType } from './ViewSwitcher';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACvG,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@object-ui/plugin-list",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "ListView plugin for Object UI - unified view component with view type switching",
|
|
@@ -24,19 +24,20 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"lucide-react": "^0.
|
|
28
|
-
"@object-ui/components": "3.
|
|
29
|
-
"@object-ui/core": "3.
|
|
30
|
-
"@object-ui/
|
|
31
|
-
"@object-ui/
|
|
32
|
-
"@object-ui/
|
|
27
|
+
"lucide-react": "^0.576.0",
|
|
28
|
+
"@object-ui/components": "3.1.1",
|
|
29
|
+
"@object-ui/core": "3.1.1",
|
|
30
|
+
"@object-ui/i18n": "3.1.1",
|
|
31
|
+
"@object-ui/mobile": "3.1.1",
|
|
32
|
+
"@object-ui/react": "3.1.1",
|
|
33
|
+
"@object-ui/types": "3.1.1"
|
|
33
34
|
},
|
|
34
35
|
"peerDependencies": {
|
|
35
36
|
"react": "^18.0.0 || ^19.0.0",
|
|
36
37
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
37
38
|
},
|
|
38
39
|
"devDependencies": {
|
|
39
|
-
"@types/react": "19.2.
|
|
40
|
+
"@types/react": "19.2.14",
|
|
40
41
|
"@types/react-dom": "19.2.3",
|
|
41
42
|
"@vitejs/plugin-react": "^5.1.4",
|
|
42
43
|
"typescript": "^5.9.3",
|