react-restyle-components 0.4.50 → 0.4.52
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/lib/src/core-components/src/components/Modal/BasicModal/modal.component.d.ts +4 -102
- package/lib/src/core-components/src/components/Modal/BasicModal/modal.component.js +4 -2
- package/lib/src/core-components/src/components/Modal/BasicModal/types.d.ts +103 -0
- package/lib/src/core-components/src/components/Modal/BasicModal/types.js +1 -0
- package/lib/src/core-components/src/components/Table/Table.js +93 -18
- package/lib/src/core-components/src/components/Table/filters.d.ts +203 -10
- package/lib/src/core-components/src/components/Table/filters.js +319 -203
- package/lib/src/core-components/src/components/Table/index.d.ts +2 -2
- package/lib/src/core-components/src/components/Table/index.js +1 -1
- package/lib/src/core-components/src/components/Table/types.d.ts +10 -3
- package/lib/src/core-components/src/tc.global.css +19 -1
- package/lib/src/core-components/src/tc.module.css +3 -1
- package/package.json +1 -1
|
@@ -61,11 +61,8 @@ export interface NumberFilterOptions {
|
|
|
61
61
|
allowDecimal?: boolean;
|
|
62
62
|
/** Callback to get filter instance for external control */
|
|
63
63
|
getFilter?: (filter: NumberFilterInstance) => void;
|
|
64
|
-
/** Callback when filter value changes */
|
|
65
|
-
onFilter?: (value:
|
|
66
|
-
number: string;
|
|
67
|
-
comparator: string;
|
|
68
|
-
} | null) => void;
|
|
64
|
+
/** Callback when filter value changes - passes string value */
|
|
65
|
+
onFilter?: (value: string | null) => void;
|
|
69
66
|
/** Input ID */
|
|
70
67
|
id?: string;
|
|
71
68
|
/** Disabled state */
|
|
@@ -88,7 +85,7 @@ export interface NumberFilterInstance {
|
|
|
88
85
|
setValue: (value: {
|
|
89
86
|
number: string;
|
|
90
87
|
comparator: string;
|
|
91
|
-
} | null) => void;
|
|
88
|
+
} | string | null) => void;
|
|
92
89
|
/** Clear the filter */
|
|
93
90
|
clear: () => void;
|
|
94
91
|
}
|
|
@@ -193,7 +190,9 @@ export interface DateFilterInstance {
|
|
|
193
190
|
* // As a component (for direct usage)
|
|
194
191
|
* <TextFilter column={column} value={value} onChange={onChange} />
|
|
195
192
|
*/
|
|
196
|
-
export declare function TextFilter(options: TextFilterOptions): React.FC<TableFilterProps
|
|
193
|
+
export declare function TextFilter(options: TextFilterOptions): React.FC<TableFilterProps> & {
|
|
194
|
+
props: TextFilterOptions;
|
|
195
|
+
};
|
|
197
196
|
export declare function TextFilter(props: TableFilterProps): React.ReactElement;
|
|
198
197
|
/**
|
|
199
198
|
* Number filter - can be used as a component or factory function
|
|
@@ -207,7 +206,9 @@ export declare function TextFilter(props: TableFilterProps): React.ReactElement;
|
|
|
207
206
|
* getFilter: (filter) => { myFilterRef = filter; },
|
|
208
207
|
* })
|
|
209
208
|
*/
|
|
210
|
-
export declare function NumberFilter(options: NumberFilterOptions): React.FC<TableFilterProps
|
|
209
|
+
export declare function NumberFilter(options: NumberFilterOptions): React.FC<TableFilterProps> & {
|
|
210
|
+
props: NumberFilterOptions;
|
|
211
|
+
};
|
|
211
212
|
export declare function NumberFilter(props: TableFilterProps): React.ReactElement;
|
|
212
213
|
/**
|
|
213
214
|
* Date filter - can be used as a component or factory function
|
|
@@ -220,7 +221,9 @@ export declare function NumberFilter(props: TableFilterProps): React.ReactElemen
|
|
|
220
221
|
* getFilter: (filter) => { myFilterRef = filter; },
|
|
221
222
|
* })
|
|
222
223
|
*/
|
|
223
|
-
export declare function DateFilter(options: DateFilterOptions): React.FC<TableFilterProps
|
|
224
|
+
export declare function DateFilter(options: DateFilterOptions): React.FC<TableFilterProps> & {
|
|
225
|
+
props: DateFilterOptions;
|
|
226
|
+
};
|
|
224
227
|
export declare function DateFilter(props: TableFilterProps): React.ReactElement;
|
|
225
228
|
/**
|
|
226
229
|
* Select filter - can be used as a component or factory function
|
|
@@ -233,8 +236,198 @@ export declare function DateFilter(props: TableFilterProps): React.ReactElement;
|
|
|
233
236
|
* getFilter: (filter) => { myFilterRef = filter; },
|
|
234
237
|
* })
|
|
235
238
|
*/
|
|
236
|
-
export declare function SelectFilter(options: SelectFilterOptions): React.FC<TableFilterProps
|
|
239
|
+
export declare function SelectFilter(options: SelectFilterOptions): React.FC<TableFilterProps> & {
|
|
240
|
+
props: SelectFilterOptions;
|
|
241
|
+
};
|
|
237
242
|
export declare function SelectFilter(props: TableFilterProps): React.ReactElement;
|
|
243
|
+
/**
|
|
244
|
+
* Custom filter options for factory function pattern
|
|
245
|
+
* Allows rendering any custom filter component while integrating with Table's filter system
|
|
246
|
+
*/
|
|
247
|
+
export interface CustomFilterOptions<T = any> {
|
|
248
|
+
/** Custom render function for the filter UI (optional if using column.filterRenderer) */
|
|
249
|
+
render?: (props: CustomFilterRenderProps<T>) => React.ReactNode;
|
|
250
|
+
/** Placeholder text (passed to render props) */
|
|
251
|
+
placeholder?: string;
|
|
252
|
+
/** CSS class name(s) for the filter */
|
|
253
|
+
className?: string;
|
|
254
|
+
/** Inline style for the filter */
|
|
255
|
+
style?: React.CSSProperties;
|
|
256
|
+
/** Default value for the filter */
|
|
257
|
+
defaultValue?: T;
|
|
258
|
+
/** Debounce delay in milliseconds */
|
|
259
|
+
delay?: number;
|
|
260
|
+
/** Callback to get filter instance for external control */
|
|
261
|
+
getFilter?: (filter: CustomFilterInstance<T>) => void;
|
|
262
|
+
/** Callback when filter value changes */
|
|
263
|
+
onFilter?: (value: T | null) => void;
|
|
264
|
+
/** Custom filter function for data filtering */
|
|
265
|
+
filterFunction?: (cellValue: any, filterValue: T, row: any) => boolean;
|
|
266
|
+
/** Input ID */
|
|
267
|
+
id?: string;
|
|
268
|
+
/** Disabled state */
|
|
269
|
+
disabled?: boolean;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Props passed to custom filter render function
|
|
273
|
+
*/
|
|
274
|
+
export interface CustomFilterRenderProps<T = any> {
|
|
275
|
+
/** Current filter value */
|
|
276
|
+
value: T | null;
|
|
277
|
+
/** Callback to update filter value */
|
|
278
|
+
onChange: (value: T | null) => void;
|
|
279
|
+
/** Column configuration */
|
|
280
|
+
column: any;
|
|
281
|
+
/** Clear the filter */
|
|
282
|
+
clear: () => void;
|
|
283
|
+
/** Placeholder text from options */
|
|
284
|
+
placeholder?: string;
|
|
285
|
+
/** CSS class name from options */
|
|
286
|
+
className?: string;
|
|
287
|
+
/** Style from options */
|
|
288
|
+
style?: React.CSSProperties;
|
|
289
|
+
/** Input ID from options */
|
|
290
|
+
id?: string;
|
|
291
|
+
/** Disabled state from options */
|
|
292
|
+
disabled?: boolean;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Custom filter instance returned by getFilter callback
|
|
296
|
+
*/
|
|
297
|
+
export interface CustomFilterInstance<T = any> {
|
|
298
|
+
/** Current filter value */
|
|
299
|
+
value: T | null;
|
|
300
|
+
/** Set filter value programmatically */
|
|
301
|
+
setValue: (value: T | null) => void;
|
|
302
|
+
/** Clear the filter */
|
|
303
|
+
clear: () => void;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Custom filter - allows rendering any custom filter component
|
|
307
|
+
*
|
|
308
|
+
* @example
|
|
309
|
+
* // Basic custom filter with input
|
|
310
|
+
* filter: CustomFilter({
|
|
311
|
+
* render: ({ value, onChange }) => (
|
|
312
|
+
* <input
|
|
313
|
+
* type="text"
|
|
314
|
+
* value={value || ''}
|
|
315
|
+
* onChange={(e) => onChange(e.target.value || null)}
|
|
316
|
+
* placeholder="Custom filter..."
|
|
317
|
+
* />
|
|
318
|
+
* ),
|
|
319
|
+
* })
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* // Using render props (placeholder, className, etc.)
|
|
323
|
+
* filter: CustomFilter({
|
|
324
|
+
* placeholder: 'Search...',
|
|
325
|
+
* className: 'my-custom-input',
|
|
326
|
+
* render: ({ value, onChange, placeholder, className }) => (
|
|
327
|
+
* <input
|
|
328
|
+
* type="text"
|
|
329
|
+
* value={value || ''}
|
|
330
|
+
* onChange={(e) => onChange(e.target.value || null)}
|
|
331
|
+
* placeholder={placeholder}
|
|
332
|
+
* className={className}
|
|
333
|
+
* />
|
|
334
|
+
* ),
|
|
335
|
+
* })
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* // Using with column.filterRenderer (simple options pattern)
|
|
339
|
+
* // This allows using existing filter components with custom configuration
|
|
340
|
+
* {
|
|
341
|
+
* dataField: 'picture',
|
|
342
|
+
* text: 'Picture',
|
|
343
|
+
* filter: CustomFilter({
|
|
344
|
+
* placeholder: 'Picture',
|
|
345
|
+
* getFilter: (filter) => {
|
|
346
|
+
* pictureFilterRef.current = filter;
|
|
347
|
+
* },
|
|
348
|
+
* }),
|
|
349
|
+
* filterRenderer: (onFilter, column) => (
|
|
350
|
+
* <NumberFilter onFilter={onFilter} column={column} />
|
|
351
|
+
* ),
|
|
352
|
+
* }
|
|
353
|
+
*
|
|
354
|
+
* @example
|
|
355
|
+
* // Custom range filter
|
|
356
|
+
* filter: CustomFilter({
|
|
357
|
+
* render: ({ value, onChange }) => (
|
|
358
|
+
* <div style={{ display: 'flex', gap: 4 }}>
|
|
359
|
+
* <input
|
|
360
|
+
* type="number"
|
|
361
|
+
* placeholder="Min"
|
|
362
|
+
* value={value?.min || ''}
|
|
363
|
+
* onChange={(e) => onChange({ ...value, min: e.target.value })}
|
|
364
|
+
* />
|
|
365
|
+
* <input
|
|
366
|
+
* type="number"
|
|
367
|
+
* placeholder="Max"
|
|
368
|
+
* value={value?.max || ''}
|
|
369
|
+
* onChange={(e) => onChange({ ...value, max: e.target.value })}
|
|
370
|
+
* />
|
|
371
|
+
* </div>
|
|
372
|
+
* ),
|
|
373
|
+
* filterFunction: (cellValue, filterValue) => {
|
|
374
|
+
* if (!filterValue) return true;
|
|
375
|
+
* const { min, max } = filterValue;
|
|
376
|
+
* const num = Number(cellValue);
|
|
377
|
+
* if (min && num < Number(min)) return false;
|
|
378
|
+
* if (max && num > Number(max)) return false;
|
|
379
|
+
* return true;
|
|
380
|
+
* },
|
|
381
|
+
* })
|
|
382
|
+
*
|
|
383
|
+
* @example
|
|
384
|
+
* // Custom multi-select filter with checkboxes
|
|
385
|
+
* filter: CustomFilter({
|
|
386
|
+
* render: ({ value, onChange }) => {
|
|
387
|
+
* const selected = value || [];
|
|
388
|
+
* const options = ['Active', 'Inactive', 'Pending'];
|
|
389
|
+
* return (
|
|
390
|
+
* <div>
|
|
391
|
+
* {options.map(opt => (
|
|
392
|
+
* <label key={opt}>
|
|
393
|
+
* <input
|
|
394
|
+
* type="checkbox"
|
|
395
|
+
* checked={selected.includes(opt)}
|
|
396
|
+
* onChange={(e) => {
|
|
397
|
+
* if (e.target.checked) {
|
|
398
|
+
* onChange([...selected, opt]);
|
|
399
|
+
* } else {
|
|
400
|
+
* onChange(selected.filter(s => s !== opt));
|
|
401
|
+
* }
|
|
402
|
+
* }}
|
|
403
|
+
* />
|
|
404
|
+
* {opt}
|
|
405
|
+
* </label>
|
|
406
|
+
* ))}
|
|
407
|
+
* </div>
|
|
408
|
+
* );
|
|
409
|
+
* },
|
|
410
|
+
* filterFunction: (cellValue, filterValue) => {
|
|
411
|
+
* if (!filterValue?.length) return true;
|
|
412
|
+
* return filterValue.includes(cellValue);
|
|
413
|
+
* },
|
|
414
|
+
* })
|
|
415
|
+
*
|
|
416
|
+
* @example
|
|
417
|
+
* // External control with getFilter
|
|
418
|
+
* filter: CustomFilter({
|
|
419
|
+
* placeholder: 'Custom...',
|
|
420
|
+
* getFilter: (filter) => {
|
|
421
|
+
* customFilterRef.current = filter;
|
|
422
|
+
* // filter.value - get current value
|
|
423
|
+
* // filter.setValue(newValue) - set value programmatically
|
|
424
|
+
* // filter.clear() - clear the filter
|
|
425
|
+
* },
|
|
426
|
+
* })
|
|
427
|
+
*/
|
|
428
|
+
export declare function CustomFilter<T = any>(options: CustomFilterOptions<T>): React.FC<TableFilterProps> & {
|
|
429
|
+
props: CustomFilterOptions<T>;
|
|
430
|
+
};
|
|
238
431
|
/**
|
|
239
432
|
* Get filter component based on type
|
|
240
433
|
*/
|