@vritti/quantum-ui 0.3.11 → 0.3.12
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/dist/lib/components/DataTable/DataTable.d.ts +1 -1
- package/dist/lib/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts +3 -1
- package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts.map +1 -1
- package/dist/lib/components/DataTable/types.d.ts +3 -0
- package/dist/lib/components/DataTable/types.d.ts.map +1 -1
- package/dist/lib/types/catalog-resolver.d.ts +189 -0
- package/dist/lib/types/catalog-resolver.d.ts.map +1 -0
- package/dist/types/api-response.js +2 -0
- package/dist/types/api-response.js.map +1 -0
- package/dist/types/catalog-resolver.js +5 -0
- package/dist/types/catalog-resolver.js.map +1 -0
- package/dist/types/table-filter.js +17 -0
- package/dist/types/table-filter.js.map +1 -0
- package/dist/useDataTable.js +108 -73
- package/dist/useDataTable.js.map +1 -1
- package/package.json +7 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DataTableProps } from './types';
|
|
2
|
-
export declare function DataTable<TData>({ table, searchConfig, selectActions, emptyStateConfig, toolbarActions, filters, isLoading, className, enableViews, importExport, mode, onRowClick, selectedRowId, }: DataTableProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function DataTable<TData>({ table, searchConfig, selectActions, emptyStateConfig, toolbarActions, filters, isLoading, className, enableViews, importExport, mode, onRowClick, selectedRowId, permission, }: DataTableProps<TData>): import("react/jsx-runtime").JSX.Element | null;
|
|
3
3
|
export declare namespace DataTable {
|
|
4
4
|
var displayName: string;
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../lib/components/DataTable/DataTable.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../lib/components/DataTable/DataTable.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAiB,cAAc,EAA4B,MAAM,SAAS,CAAC;AA8BvF,wBAAgB,SAAS,CAAC,KAAK,EAAE,EAC/B,KAAK,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,SAAiB,EACjB,SAAS,EACT,WAAkB,EAClB,YAAY,EACZ,IAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,GACX,EAAE,cAAc,CAAC,KAAK,CAAC,kDA0avB;yBAzbe,SAAS"}
|
|
@@ -5,8 +5,10 @@ interface DataTableSelectionBarProps<TData> {
|
|
|
5
5
|
children?: React.ReactNode;
|
|
6
6
|
className?: string;
|
|
7
7
|
importExport?: ImportExportConfig<TData>;
|
|
8
|
+
exportHidden?: boolean;
|
|
9
|
+
exportLockTip?: string;
|
|
8
10
|
}
|
|
9
|
-
export declare function DataTableSelectionBar<TData>({ table, children, className, importExport, }: DataTableSelectionBarProps<TData>): import("react/jsx-runtime").JSX.Element | null;
|
|
11
|
+
export declare function DataTableSelectionBar<TData>({ table, children, className, importExport, exportHidden, exportLockTip, }: DataTableSelectionBarProps<TData>): import("react/jsx-runtime").JSX.Element | null;
|
|
10
12
|
export declare namespace DataTableSelectionBar {
|
|
11
13
|
var displayName: string;
|
|
12
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableSelectionBar.d.ts","sourceRoot":"","sources":["../../../../../lib/components/DataTable/components/DataTableSelectionBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAKnD,OAAO,KAAK,EAAiB,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGlE,UAAU,0BAA0B,CAAC,KAAK;IACxC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DataTableSelectionBar.d.ts","sourceRoot":"","sources":["../../../../../lib/components/DataTable/components/DataTableSelectionBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAKnD,OAAO,KAAK,EAAiB,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGlE,UAAU,0BAA0B,CAAC,KAAK;IACxC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAGzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAGD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,EAC3C,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,EAAE,0BAA0B,CAAC,KAAK,CAAC,kDA6EnC;yBApFe,qBAAqB"}
|
|
@@ -52,6 +52,8 @@ export interface ImportExportConfig<TData = unknown> {
|
|
|
52
52
|
transformExportRow?: (row: TData) => Record<string, unknown>;
|
|
53
53
|
filename: string;
|
|
54
54
|
onSuccess?: () => void;
|
|
55
|
+
importPermission?: string;
|
|
56
|
+
exportPermission?: string;
|
|
55
57
|
}
|
|
56
58
|
export interface DataTableProps<TData> {
|
|
57
59
|
table: Table<TData>;
|
|
@@ -65,6 +67,7 @@ export interface DataTableProps<TData> {
|
|
|
65
67
|
enableViews?: boolean;
|
|
66
68
|
importExport?: ImportExportConfig<TData>;
|
|
67
69
|
mode?: 'page' | 'tab' | 'compact';
|
|
70
|
+
permission?: string;
|
|
68
71
|
onRowClick?: (row: TData) => void;
|
|
69
72
|
selectedRowId?: string | null;
|
|
70
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../lib/components/DataTable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1G,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIzE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IACjD,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAC1C;AAID,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB,CAAC,KAAK,GAAG,OAAO;IACjD,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../lib/components/DataTable/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
export type PlatformBucket = 'web' | 'mobile';
|
|
2
|
+
export declare const PLATFORMS: PlatformBucket[];
|
|
3
|
+
export interface PlatformCodes {
|
|
4
|
+
web?: string[];
|
|
5
|
+
mobile?: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface PlatformDenyCodes {
|
|
8
|
+
web?: string[] | null;
|
|
9
|
+
mobile?: string[] | null;
|
|
10
|
+
}
|
|
11
|
+
export type FeatureUnlocks = Record<string, PlatformCodes>;
|
|
12
|
+
export type BuFeatureLocks = Record<string, PlatformDenyCodes>;
|
|
13
|
+
export interface SnapshotPermission {
|
|
14
|
+
code: string;
|
|
15
|
+
label: string;
|
|
16
|
+
isGlobal: boolean;
|
|
17
|
+
businesses: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface SnapshotMicrofrontendWeb {
|
|
20
|
+
code: string;
|
|
21
|
+
name: string;
|
|
22
|
+
remoteEntry: string;
|
|
23
|
+
exposedModule: string;
|
|
24
|
+
routePrefix: string;
|
|
25
|
+
}
|
|
26
|
+
export interface SnapshotMicrofrontendMobile {
|
|
27
|
+
code: string;
|
|
28
|
+
name: string;
|
|
29
|
+
remoteEntryAndroid: string;
|
|
30
|
+
remoteEntryIos: string;
|
|
31
|
+
exposedModule: string;
|
|
32
|
+
routePrefix: string;
|
|
33
|
+
}
|
|
34
|
+
export interface SnapshotMicrofrontends {
|
|
35
|
+
web?: SnapshotMicrofrontendWeb;
|
|
36
|
+
mobile?: SnapshotMicrofrontendMobile;
|
|
37
|
+
}
|
|
38
|
+
export interface SnapshotFeature {
|
|
39
|
+
code: string;
|
|
40
|
+
name: string;
|
|
41
|
+
lucideIcon: string;
|
|
42
|
+
sfSymbol: string;
|
|
43
|
+
materialSymbol: string;
|
|
44
|
+
permissions: SnapshotPermission[];
|
|
45
|
+
microfrontends: SnapshotMicrofrontends;
|
|
46
|
+
}
|
|
47
|
+
export interface SnapshotApp {
|
|
48
|
+
code: string;
|
|
49
|
+
name: string;
|
|
50
|
+
icon: string;
|
|
51
|
+
sortOrder: number;
|
|
52
|
+
features: string[];
|
|
53
|
+
}
|
|
54
|
+
export interface SnapshotRoleTemplate {
|
|
55
|
+
name: string;
|
|
56
|
+
code: string;
|
|
57
|
+
features: FeatureUnlocks;
|
|
58
|
+
}
|
|
59
|
+
export interface SnapshotPlan {
|
|
60
|
+
code: string;
|
|
61
|
+
name: string;
|
|
62
|
+
isCustom: boolean;
|
|
63
|
+
maxBusinessUnits: number | null;
|
|
64
|
+
unlockedPermissions: FeatureUnlocks;
|
|
65
|
+
}
|
|
66
|
+
export interface SnapshotBusiness {
|
|
67
|
+
name: string;
|
|
68
|
+
apps: SnapshotApp[];
|
|
69
|
+
roleTemplates: Record<string, SnapshotRoleTemplate>;
|
|
70
|
+
plans: Record<string, SnapshotPlan>;
|
|
71
|
+
}
|
|
72
|
+
export interface VersionSnapshot {
|
|
73
|
+
schemaVersion?: number;
|
|
74
|
+
features: Record<string, SnapshotFeature>;
|
|
75
|
+
businesses: Record<string, SnapshotBusiness>;
|
|
76
|
+
}
|
|
77
|
+
export declare const SNAPSHOT_SCHEMA_VERSION = 1;
|
|
78
|
+
export type LockReason = 'PLAN' | 'BU';
|
|
79
|
+
export interface CatalogPermission {
|
|
80
|
+
code: string;
|
|
81
|
+
locked: boolean;
|
|
82
|
+
lockReason: LockReason | null;
|
|
83
|
+
unlockPlans: string[];
|
|
84
|
+
}
|
|
85
|
+
export interface FeatureCatalogEntry {
|
|
86
|
+
code: string;
|
|
87
|
+
name: string;
|
|
88
|
+
lucideIcon: string | null;
|
|
89
|
+
sfSymbol: string;
|
|
90
|
+
materialSymbol: string;
|
|
91
|
+
web: {
|
|
92
|
+
remoteEntry: string;
|
|
93
|
+
exposedModule: string;
|
|
94
|
+
routePrefix: string;
|
|
95
|
+
} | null;
|
|
96
|
+
mobile: {
|
|
97
|
+
remoteEntryAndroid: string;
|
|
98
|
+
remoteEntryIos: string;
|
|
99
|
+
exposedModule: string;
|
|
100
|
+
routePrefix: string;
|
|
101
|
+
} | null;
|
|
102
|
+
appCode: string;
|
|
103
|
+
appName: string;
|
|
104
|
+
appIcon: string | null;
|
|
105
|
+
appSortOrder: number;
|
|
106
|
+
locked: boolean;
|
|
107
|
+
lockReason: LockReason | null;
|
|
108
|
+
unlockPlans: string[];
|
|
109
|
+
permissions: CatalogPermission[];
|
|
110
|
+
}
|
|
111
|
+
export type RoleItem = SnapshotRoleTemplate;
|
|
112
|
+
export interface BuMatrixCell {
|
|
113
|
+
inPlan: boolean;
|
|
114
|
+
selected: boolean;
|
|
115
|
+
availableIn: string[];
|
|
116
|
+
}
|
|
117
|
+
export interface BuMatrixPermission {
|
|
118
|
+
code: string;
|
|
119
|
+
label: string;
|
|
120
|
+
web: BuMatrixCell | null;
|
|
121
|
+
mobile: BuMatrixCell | null;
|
|
122
|
+
}
|
|
123
|
+
export interface BuMatrixFeature {
|
|
124
|
+
code: string;
|
|
125
|
+
name: string;
|
|
126
|
+
icon: string | null;
|
|
127
|
+
platforms: PlatformBucket[];
|
|
128
|
+
inPlan: boolean;
|
|
129
|
+
availableIn: string[];
|
|
130
|
+
permissions: BuMatrixPermission[];
|
|
131
|
+
}
|
|
132
|
+
export interface BuMatrixApp {
|
|
133
|
+
code: string;
|
|
134
|
+
name: string;
|
|
135
|
+
icon: string | null;
|
|
136
|
+
unlockedCount: number;
|
|
137
|
+
totalCount: number;
|
|
138
|
+
features: BuMatrixFeature[];
|
|
139
|
+
}
|
|
140
|
+
export interface BuMatrix {
|
|
141
|
+
plan: {
|
|
142
|
+
code: string;
|
|
143
|
+
name: string;
|
|
144
|
+
};
|
|
145
|
+
apps: BuMatrixApp[];
|
|
146
|
+
locks: BuFeatureLocks;
|
|
147
|
+
}
|
|
148
|
+
export type RevokedGrants = Record<string, PlatformDenyCodes>;
|
|
149
|
+
export type ClientPlatform = 'web' | 'ios' | 'android';
|
|
150
|
+
export interface LockedPermission {
|
|
151
|
+
code: string;
|
|
152
|
+
reason: LockReason | null;
|
|
153
|
+
unlockPlans: string[];
|
|
154
|
+
}
|
|
155
|
+
export interface PermissionFeature {
|
|
156
|
+
code: string;
|
|
157
|
+
name: string;
|
|
158
|
+
lucideIcon: string | null;
|
|
159
|
+
sfSymbol: string;
|
|
160
|
+
materialSymbol: string;
|
|
161
|
+
permissions: string[];
|
|
162
|
+
locked: boolean;
|
|
163
|
+
lockReason: LockReason | null;
|
|
164
|
+
unlockPlans: string[];
|
|
165
|
+
lockedPermissions: LockedPermission[];
|
|
166
|
+
route: {
|
|
167
|
+
remoteEntry: string;
|
|
168
|
+
exposedModule: string;
|
|
169
|
+
routePrefix: string;
|
|
170
|
+
};
|
|
171
|
+
appCode: string;
|
|
172
|
+
appName: string;
|
|
173
|
+
appIcon: string | null;
|
|
174
|
+
appSortOrder: number;
|
|
175
|
+
}
|
|
176
|
+
export interface ResolveUserFeaturesParams {
|
|
177
|
+
snapshot: VersionSnapshot;
|
|
178
|
+
businessCode: string;
|
|
179
|
+
planCode: string | undefined;
|
|
180
|
+
buLocks: BuFeatureLocks | undefined;
|
|
181
|
+
roleFeatures: FeatureUnlocks;
|
|
182
|
+
platform: ClientPlatform;
|
|
183
|
+
}
|
|
184
|
+
export interface ComposeRoleGrantsParams {
|
|
185
|
+
baseFeatures: FeatureUnlocks | undefined;
|
|
186
|
+
additions: FeatureUnlocks;
|
|
187
|
+
revoked: RevokedGrants | undefined;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=catalog-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-resolver.d.ts","sourceRoot":"","sources":["../../../lib/types/catalog-resolver.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE9C,eAAO,MAAM,SAAS,EAAE,cAAc,EAAsB,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,wBAAwB,CAAC;IAC/B,MAAM,CAAC,EAAE,2BAA2B,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,cAAc,EAAE,sBAAsB,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,cAAc,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACpD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC9C;AAED,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE;QACH,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE;QACN,kBAAkB,EAAE,MAAM,CAAC;QAC3B,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,iBAAiB,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,YAAY,EAAE,cAAc,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,cAAc,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-response.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-resolver.js","sources":["../../lib/types/catalog-resolver.ts"],"sourcesContent":["// Frontend mirror of @vritti/api-sdk/catalog-resolver types — keep field-for-field in sync.\n// Web apps import from HERE (quantum-ui), never from the server SDK.\n\nexport type PlatformBucket = 'web' | 'mobile';\n\nexport const PLATFORMS: PlatformBucket[] = ['web', 'mobile'];\n\nexport interface PlatformCodes {\n web?: string[];\n mobile?: string[];\n}\n\nexport interface PlatformDenyCodes {\n web?: string[] | null;\n mobile?: string[] | null;\n}\n\nexport type FeatureUnlocks = Record<string, PlatformCodes>;\n\nexport type BuFeatureLocks = Record<string, PlatformDenyCodes>;\n\nexport interface SnapshotPermission {\n code: string;\n label: string;\n isGlobal: boolean;\n businesses: string[];\n}\n\nexport interface SnapshotMicrofrontendWeb {\n code: string;\n name: string;\n remoteEntry: string;\n exposedModule: string;\n routePrefix: string;\n}\n\nexport interface SnapshotMicrofrontendMobile {\n code: string;\n name: string;\n remoteEntryAndroid: string;\n remoteEntryIos: string;\n exposedModule: string;\n routePrefix: string;\n}\n\nexport interface SnapshotMicrofrontends {\n web?: SnapshotMicrofrontendWeb;\n mobile?: SnapshotMicrofrontendMobile;\n}\n\nexport interface SnapshotFeature {\n code: string;\n name: string;\n lucideIcon: string;\n sfSymbol: string;\n materialSymbol: string;\n permissions: SnapshotPermission[];\n microfrontends: SnapshotMicrofrontends;\n}\n\nexport interface SnapshotApp {\n code: string;\n name: string;\n icon: string;\n sortOrder: number;\n features: string[];\n}\n\nexport interface SnapshotRoleTemplate {\n name: string;\n code: string;\n features: FeatureUnlocks;\n}\n\nexport interface SnapshotPlan {\n code: string;\n name: string;\n isCustom: boolean;\n maxBusinessUnits: number | null;\n unlockedPermissions: FeatureUnlocks;\n}\n\nexport interface SnapshotBusiness {\n name: string;\n apps: SnapshotApp[];\n roleTemplates: Record<string, SnapshotRoleTemplate>;\n plans: Record<string, SnapshotPlan>;\n}\n\nexport interface VersionSnapshot {\n schemaVersion?: number;\n features: Record<string, SnapshotFeature>;\n businesses: Record<string, SnapshotBusiness>;\n}\n\nexport const SNAPSHOT_SCHEMA_VERSION = 1;\n\nexport type LockReason = 'PLAN' | 'BU';\n\nexport interface CatalogPermission {\n code: string;\n locked: boolean;\n lockReason: LockReason | null;\n unlockPlans: string[];\n}\n\nexport interface FeatureCatalogEntry {\n code: string;\n name: string;\n lucideIcon: string | null;\n sfSymbol: string;\n materialSymbol: string;\n web: {\n remoteEntry: string;\n exposedModule: string;\n routePrefix: string;\n } | null;\n mobile: {\n remoteEntryAndroid: string;\n remoteEntryIos: string;\n exposedModule: string;\n routePrefix: string;\n } | null;\n appCode: string;\n appName: string;\n appIcon: string | null;\n appSortOrder: number;\n locked: boolean;\n lockReason: LockReason | null;\n unlockPlans: string[];\n permissions: CatalogPermission[];\n}\n\nexport type RoleItem = SnapshotRoleTemplate;\n\nexport interface BuMatrixCell {\n inPlan: boolean;\n selected: boolean;\n availableIn: string[];\n}\n\nexport interface BuMatrixPermission {\n code: string;\n label: string;\n web: BuMatrixCell | null;\n mobile: BuMatrixCell | null;\n}\n\nexport interface BuMatrixFeature {\n code: string;\n name: string;\n icon: string | null;\n platforms: PlatformBucket[];\n inPlan: boolean;\n availableIn: string[];\n permissions: BuMatrixPermission[];\n}\n\nexport interface BuMatrixApp {\n code: string;\n name: string;\n icon: string | null;\n unlockedCount: number;\n totalCount: number;\n features: BuMatrixFeature[];\n}\n\nexport interface BuMatrix {\n plan: { code: string; name: string };\n apps: BuMatrixApp[];\n locks: BuFeatureLocks;\n}\n\nexport type RevokedGrants = Record<string, PlatformDenyCodes>;\n\nexport type ClientPlatform = 'web' | 'ios' | 'android';\n\nexport interface LockedPermission {\n code: string;\n reason: LockReason | null;\n unlockPlans: string[];\n}\n\nexport interface PermissionFeature {\n code: string;\n name: string;\n lucideIcon: string | null;\n sfSymbol: string;\n materialSymbol: string;\n permissions: string[];\n locked: boolean;\n lockReason: LockReason | null;\n unlockPlans: string[];\n lockedPermissions: LockedPermission[];\n route: {\n remoteEntry: string;\n exposedModule: string;\n routePrefix: string;\n };\n appCode: string;\n appName: string;\n appIcon: string | null;\n appSortOrder: number;\n}\n\nexport interface ResolveUserFeaturesParams {\n snapshot: VersionSnapshot;\n businessCode: string;\n planCode: string | undefined;\n buLocks: BuFeatureLocks | undefined;\n roleFeatures: FeatureUnlocks;\n platform: ClientPlatform;\n}\n\nexport interface ComposeRoleGrantsParams {\n baseFeatures: FeatureUnlocks | undefined;\n additions: FeatureUnlocks;\n revoked: RevokedGrants | undefined;\n}\n"],"names":[],"mappings":"AAKO,MAAM,SAAA,GAA8B,CAAC,KAAA,EAAO,QAAQ;AA0FpD,MAAM,uBAAA,GAA0B;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const EMPTY_TABLE_STATE = {
|
|
2
|
+
filters: [],
|
|
3
|
+
sort: [],
|
|
4
|
+
columnVisibility: {},
|
|
5
|
+
columnOrder: [],
|
|
6
|
+
columnSizing: {},
|
|
7
|
+
columnPinning: { left: [], right: [] },
|
|
8
|
+
lockedColumnSizing: false,
|
|
9
|
+
density: "normal",
|
|
10
|
+
filterOrder: [],
|
|
11
|
+
filterVisibility: {},
|
|
12
|
+
search: null,
|
|
13
|
+
pagination: { limit: 20, offset: 0 }
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { EMPTY_TABLE_STATE };
|
|
17
|
+
//# sourceMappingURL=table-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-filter.js","sources":["../../lib/types/table-filter.ts"],"sourcesContent":["export type StringOperator = 'equals' | 'notEquals' | 'contains' | 'notContains';\nexport type NumberOperator = 'equals' | 'notEquals' | 'gt' | 'gte' | 'lt' | 'lte';\nexport type SelectOperator = 'equals' | 'notEquals';\nexport type MultiSelectOperator = 'isAnyOf' | 'isNotAnyOf';\nexport type FilterOperator = StringOperator | NumberOperator | SelectOperator | MultiSelectOperator;\n\nexport interface FilterCondition {\n field: string;\n operator: FilterOperator;\n value: string | number | string[];\n}\n\nexport interface SortCondition {\n field: string;\n direction: 'asc' | 'desc';\n}\n\nexport type DensityType = 'compact' | 'normal' | 'comfortable';\n\nexport type SearchState = { columnId: string; value: string } | null;\n\nexport interface TableViewState {\n filters: FilterCondition[];\n sort: SortCondition[];\n columnVisibility: Record<string, boolean>;\n columnOrder: string[];\n columnSizing: Record<string, number>;\n columnPinning: { left: string[]; right: string[] };\n lockedColumnSizing: boolean;\n density: DensityType;\n filterOrder: string[];\n filterVisibility: Record<string, boolean>;\n search: SearchState;\n pagination: { limit: number; offset: number };\n}\n\nexport const EMPTY_TABLE_STATE: TableViewState = {\n filters: [],\n sort: [],\n columnVisibility: {},\n columnOrder: [],\n columnSizing: {},\n columnPinning: { left: [], right: [] },\n lockedColumnSizing: false,\n density: 'normal',\n filterOrder: [],\n filterVisibility: {},\n search: null,\n pagination: { limit: 20, offset: 0 },\n};\n"],"names":[],"mappings":"AAoCO,MAAM,iBAAA,GAAoC;AAAA,EAC/C,SAAS,EAAC;AAAA,EACV,MAAM,EAAC;AAAA,EACP,kBAAkB,EAAC;AAAA,EACnB,aAAa,EAAC;AAAA,EACd,cAAc,EAAC;AAAA,EACf,eAAe,EAAE,IAAA,EAAM,EAAC,EAAG,KAAA,EAAO,EAAC,EAAE;AAAA,EACrC,kBAAA,EAAoB,KAAA;AAAA,EACpB,OAAA,EAAS,QAAA;AAAA,EACT,aAAa,EAAC;AAAA,EACd,kBAAkB,EAAC;AAAA,EACnB,MAAA,EAAQ,IAAA;AAAA,EACR,UAAA,EAAY,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,CAAA;AACnC;;;;"}
|
package/dist/useDataTable.js
CHANGED
|
@@ -6,11 +6,12 @@ import { a as useDialog, u as useConfirm } from './useConfirm.js';
|
|
|
6
6
|
import { B as Button } from './Button.js';
|
|
7
7
|
import { D as Dialog, a as DialogActions } from './Dialog.js';
|
|
8
8
|
import { D as DropdownMenu } from './DropdownMenu.js';
|
|
9
|
-
import { b as usePermissionGate, l as lockedTip } from './PermissionGate.js';
|
|
9
|
+
import { b as usePermissionGate, l as lockedTip, u as usePermission, a as PermissionLockIcon } from './PermissionGate.js';
|
|
10
10
|
import { A as ArrowDown, a as ArrowUp, I as Inbox, S as Settings, C as ChevronsLeft, b as ChevronsRight, c as Columns2, P as Pin, E as EllipsisVertical, F as FileUp, d as FilePlusCorner, R as RefreshCw, e as Equal, f as ArrowLeft, B as BookmarkPlus, L as LayoutList, g as Settings2, h as Funnel, i as ArrowUpFromLine, j as ArrowDownToLine, T as TableProperties } from './table-properties.js';
|
|
11
11
|
import { useMutation, useQueryClient, useQuery } from '@tanstack/react-query';
|
|
12
12
|
import * as React from 'react';
|
|
13
13
|
import React__default, { useRef, Children, isValidElement, cloneElement, useMemo, useState, useEffect, forwardRef, useCallback, useLayoutEffect } from 'react';
|
|
14
|
+
import { EMPTY_TABLE_STATE } from './types/table-filter.js';
|
|
14
15
|
import { axios } from './utils/axios.js';
|
|
15
16
|
import { E as Empty } from './Empty.js';
|
|
16
17
|
import { b as SortableList, a as SortableItem } from './Sortable.js';
|
|
@@ -814,21 +815,6 @@ const createImpl = (createState) => {
|
|
|
814
815
|
};
|
|
815
816
|
const create = ((createState) => createState ? createImpl(createState) : createImpl);
|
|
816
817
|
|
|
817
|
-
const EMPTY_TABLE_STATE = {
|
|
818
|
-
filters: [],
|
|
819
|
-
sort: [],
|
|
820
|
-
columnVisibility: {},
|
|
821
|
-
columnOrder: [],
|
|
822
|
-
columnSizing: {},
|
|
823
|
-
columnPinning: { left: [], right: [] },
|
|
824
|
-
lockedColumnSizing: false,
|
|
825
|
-
density: "normal",
|
|
826
|
-
filterOrder: [],
|
|
827
|
-
filterVisibility: {},
|
|
828
|
-
search: null,
|
|
829
|
-
pagination: { limit: 20, offset: 0 }
|
|
830
|
-
};
|
|
831
|
-
|
|
832
818
|
const MAX_TABLES = 20;
|
|
833
819
|
function viewStatesEqual(a, b) {
|
|
834
820
|
return deepEqual(a, b);
|
|
@@ -17500,7 +17486,9 @@ function DataTableSelectionBar({
|
|
|
17500
17486
|
table,
|
|
17501
17487
|
children,
|
|
17502
17488
|
className,
|
|
17503
|
-
importExport
|
|
17489
|
+
importExport,
|
|
17490
|
+
exportHidden,
|
|
17491
|
+
exportLockTip
|
|
17504
17492
|
}) {
|
|
17505
17493
|
const meta = table.options.meta;
|
|
17506
17494
|
const selectedRows = table.getFilteredSelectedRowModel().rows;
|
|
@@ -17519,7 +17507,18 @@ function DataTableSelectionBar({
|
|
|
17519
17507
|
" selected"
|
|
17520
17508
|
] }),
|
|
17521
17509
|
children,
|
|
17522
|
-
/* @__PURE__ */ jsx("div", { className: "ml-auto flex items-center gap-2", children:
|
|
17510
|
+
/* @__PURE__ */ jsx("div", { className: "ml-auto flex items-center gap-2", children: exportHidden ? null : exportLockTip ? /* @__PURE__ */ jsx(
|
|
17511
|
+
Button,
|
|
17512
|
+
{
|
|
17513
|
+
variant: "outline",
|
|
17514
|
+
size: "sm",
|
|
17515
|
+
className: "h-8 text-sm",
|
|
17516
|
+
disabled: true,
|
|
17517
|
+
disabledTip: exportLockTip,
|
|
17518
|
+
startAdornment: /* @__PURE__ */ jsx(Download, { className: "h-4 w-4" }),
|
|
17519
|
+
children: "Export"
|
|
17520
|
+
}
|
|
17521
|
+
) : importExport ? /* @__PURE__ */ jsx(
|
|
17523
17522
|
DropdownMenu,
|
|
17524
17523
|
{
|
|
17525
17524
|
trigger: { label: "Export", variant: "outline", icon: Download, className: "h-8 text-sm" },
|
|
@@ -21829,10 +21828,14 @@ function DataTable({
|
|
|
21829
21828
|
importExport,
|
|
21830
21829
|
mode = "page",
|
|
21831
21830
|
onRowClick,
|
|
21832
|
-
selectedRowId
|
|
21831
|
+
selectedRowId,
|
|
21832
|
+
permission
|
|
21833
21833
|
}) {
|
|
21834
21834
|
const [filtersOpen, setFiltersOpen] = useState(false);
|
|
21835
21835
|
const importDialog = useDialog();
|
|
21836
|
+
const tableGate = usePermission(permission);
|
|
21837
|
+
const importGate = usePermission(importExport?.importPermission);
|
|
21838
|
+
const exportGate = usePermission(importExport?.exportPermission);
|
|
21836
21839
|
const meta = table.options.meta;
|
|
21837
21840
|
const slug = meta?.slug;
|
|
21838
21841
|
const appliedFilterCount = useDataTableStore((s) => slug ? s.tables[slug]?.activeState?.filters?.length ?? 0 : 0);
|
|
@@ -21841,7 +21844,9 @@ function DataTable({
|
|
|
21841
21844
|
const density = meta?.density ?? "normal";
|
|
21842
21845
|
const columnCount = table.getAllColumns().length;
|
|
21843
21846
|
const visibilityEnabled = table.options.enableHiding !== false;
|
|
21844
|
-
const
|
|
21847
|
+
const showImport = !!importExport && importGate.granted;
|
|
21848
|
+
const showExport = !!importExport && exportGate.granted;
|
|
21849
|
+
const showToolbar = searchConfig || visibilityEnabled || toolbarActions || filters || enableViews && slug || showImport || showExport;
|
|
21845
21850
|
const search = meta?.search ?? null;
|
|
21846
21851
|
const hasActiveView = !!activeViewId;
|
|
21847
21852
|
const hasActiveFilters = hasActiveView ? !!meta?.isFiltersDirty : appliedFilterCount > 0;
|
|
@@ -21864,6 +21869,22 @@ function DataTable({
|
|
|
21864
21869
|
downloadBlob(response.data, `${importExport.filename}.${format}`);
|
|
21865
21870
|
}
|
|
21866
21871
|
});
|
|
21872
|
+
if (!tableGate.granted) {
|
|
21873
|
+
return null;
|
|
21874
|
+
}
|
|
21875
|
+
if (tableGate.locked) {
|
|
21876
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-2", className), children: /* @__PURE__ */ jsxs(
|
|
21877
|
+
"div",
|
|
21878
|
+
{
|
|
21879
|
+
className: "flex flex-col items-center justify-center gap-2 rounded-lg border text-center",
|
|
21880
|
+
style: { height: MODE_HEIGHTS[mode] },
|
|
21881
|
+
children: [
|
|
21882
|
+
/* @__PURE__ */ jsx(PermissionLockIcon, { reason: tableGate.reason, className: "size-6" }),
|
|
21883
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: lockedTip(tableGate) })
|
|
21884
|
+
]
|
|
21885
|
+
}
|
|
21886
|
+
) });
|
|
21887
|
+
}
|
|
21867
21888
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-2", className), children: [
|
|
21868
21889
|
showToolbar && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
21869
21890
|
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1", children: enableViews && slug && /* @__PURE__ */ jsx(DataTableViewTabs, { slug }) }),
|
|
@@ -21894,63 +21915,68 @@ function DataTable({
|
|
|
21894
21915
|
visibilityEnabled && /* @__PURE__ */ jsx(DataTableViewOptions, { table }),
|
|
21895
21916
|
/* @__PURE__ */ jsx(DataTableRowDensity, { table }),
|
|
21896
21917
|
enableViews && slug && /* @__PURE__ */ jsx(DataTableViewsMenu, { slug }),
|
|
21897
|
-
|
|
21918
|
+
(showImport || showExport) && /* @__PURE__ */ jsx(
|
|
21898
21919
|
DropdownMenu,
|
|
21899
21920
|
{
|
|
21900
21921
|
trigger: {
|
|
21901
21922
|
children: /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", className: "h-8 w-8 p-0", "aria-label": "Import / Export", children: /* @__PURE__ */ jsx(TableProperties, { className: "h-4 w-4" }) })
|
|
21902
21923
|
},
|
|
21903
21924
|
items: [
|
|
21904
|
-
|
|
21905
|
-
|
|
21906
|
-
|
|
21907
|
-
|
|
21908
|
-
|
|
21909
|
-
|
|
21910
|
-
|
|
21911
|
-
|
|
21912
|
-
|
|
21913
|
-
|
|
21914
|
-
|
|
21915
|
-
|
|
21916
|
-
|
|
21917
|
-
|
|
21918
|
-
|
|
21919
|
-
|
|
21920
|
-
|
|
21921
|
-
|
|
21922
|
-
|
|
21923
|
-
|
|
21924
|
-
|
|
21925
|
-
|
|
21926
|
-
|
|
21927
|
-
|
|
21928
|
-
|
|
21929
|
-
|
|
21930
|
-
|
|
21931
|
-
|
|
21932
|
-
|
|
21933
|
-
|
|
21934
|
-
|
|
21935
|
-
|
|
21936
|
-
|
|
21937
|
-
|
|
21938
|
-
|
|
21939
|
-
|
|
21940
|
-
|
|
21941
|
-
|
|
21942
|
-
|
|
21943
|
-
|
|
21944
|
-
|
|
21945
|
-
|
|
21946
|
-
|
|
21947
|
-
|
|
21948
|
-
|
|
21949
|
-
|
|
21950
|
-
|
|
21951
|
-
|
|
21952
|
-
|
|
21953
|
-
|
|
21925
|
+
...showImport ? [
|
|
21926
|
+
{
|
|
21927
|
+
type: "item",
|
|
21928
|
+
id: "import",
|
|
21929
|
+
label: "Import",
|
|
21930
|
+
icon: ArrowUpFromLine,
|
|
21931
|
+
disabled: importGate.locked,
|
|
21932
|
+
onClick: importDialog.open
|
|
21933
|
+
}
|
|
21934
|
+
] : [],
|
|
21935
|
+
...showExport ? [
|
|
21936
|
+
{
|
|
21937
|
+
type: "sub",
|
|
21938
|
+
id: "export",
|
|
21939
|
+
label: "Export All",
|
|
21940
|
+
icon: ArrowDownToLine,
|
|
21941
|
+
items: [
|
|
21942
|
+
{
|
|
21943
|
+
type: "item",
|
|
21944
|
+
id: "csv",
|
|
21945
|
+
label: "CSV (.csv)",
|
|
21946
|
+
disabled: exportMutation.isPending || exportGate.locked,
|
|
21947
|
+
onClick: () => exportMutation.mutate("csv")
|
|
21948
|
+
},
|
|
21949
|
+
{
|
|
21950
|
+
type: "item",
|
|
21951
|
+
id: "xlsx",
|
|
21952
|
+
label: "Excel (.xlsx)",
|
|
21953
|
+
disabled: exportMutation.isPending || exportGate.locked,
|
|
21954
|
+
onClick: () => exportMutation.mutate("xlsx")
|
|
21955
|
+
},
|
|
21956
|
+
{
|
|
21957
|
+
type: "item",
|
|
21958
|
+
id: "xls",
|
|
21959
|
+
label: "Excel 97-2004 (.xls)",
|
|
21960
|
+
disabled: exportMutation.isPending || exportGate.locked,
|
|
21961
|
+
onClick: () => exportMutation.mutate("xls")
|
|
21962
|
+
},
|
|
21963
|
+
{
|
|
21964
|
+
type: "item",
|
|
21965
|
+
id: "ods",
|
|
21966
|
+
label: "OpenDocument (.ods)",
|
|
21967
|
+
disabled: exportMutation.isPending || exportGate.locked,
|
|
21968
|
+
onClick: () => exportMutation.mutate("ods")
|
|
21969
|
+
},
|
|
21970
|
+
{
|
|
21971
|
+
type: "item",
|
|
21972
|
+
id: "tsv",
|
|
21973
|
+
label: "TSV (.tsv)",
|
|
21974
|
+
disabled: exportMutation.isPending || exportGate.locked,
|
|
21975
|
+
onClick: () => exportMutation.mutate("tsv")
|
|
21976
|
+
}
|
|
21977
|
+
]
|
|
21978
|
+
}
|
|
21979
|
+
] : []
|
|
21954
21980
|
]
|
|
21955
21981
|
}
|
|
21956
21982
|
),
|
|
@@ -21966,7 +21992,16 @@ function DataTable({
|
|
|
21966
21992
|
animate: { height: "auto", opacity: 1 },
|
|
21967
21993
|
exit: { height: 0, opacity: 0 },
|
|
21968
21994
|
transition: { duration: 0.3, ease: [0.4, 0, 0.2, 1] },
|
|
21969
|
-
children: /* @__PURE__ */ jsx(
|
|
21995
|
+
children: /* @__PURE__ */ jsx(
|
|
21996
|
+
DataTableSelectionBar,
|
|
21997
|
+
{
|
|
21998
|
+
table,
|
|
21999
|
+
importExport,
|
|
22000
|
+
exportHidden: !exportGate.granted,
|
|
22001
|
+
exportLockTip: exportGate.locked ? lockedTip(exportGate) : void 0,
|
|
22002
|
+
children: selectActions?.(table.getFilteredSelectedRowModel().rows)
|
|
22003
|
+
}
|
|
22004
|
+
)
|
|
21970
22005
|
},
|
|
21971
22006
|
"selection"
|
|
21972
22007
|
) : filters && filtersOpen ? /* @__PURE__ */ jsx(
|
|
@@ -22100,7 +22135,7 @@ function DataTable({
|
|
|
22100
22135
|
] })
|
|
22101
22136
|
] }),
|
|
22102
22137
|
(mode !== "compact" || table.getRowCount() > (table.getState().pagination?.pageSize ?? 20)) && /* @__PURE__ */ jsx(DataTablePagination, { table }),
|
|
22103
|
-
importExport && /* @__PURE__ */ jsx(
|
|
22138
|
+
importExport && showImport && /* @__PURE__ */ jsx(
|
|
22104
22139
|
DataTableImportDialog,
|
|
22105
22140
|
{
|
|
22106
22141
|
handle: importDialog,
|