@react-pakistan/util-functions 1.25.37 → 1.25.38
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.
|
@@ -5,7 +5,15 @@
|
|
|
5
5
|
* Generates tables, forms, drawers, and other common UI patterns.
|
|
6
6
|
*/
|
|
7
7
|
import React, { FC } from 'react';
|
|
8
|
-
|
|
8
|
+
type COMPONENT_TYPE = string;
|
|
9
|
+
interface HeaderAction {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}
|
|
12
|
+
interface TableColumn {
|
|
13
|
+
label: string;
|
|
14
|
+
width?: string | number;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
9
17
|
export declare const DRAWER_TYPES: {
|
|
10
18
|
FORM_DRAWER: string;
|
|
11
19
|
FILTER_DRAWER: string;
|
|
@@ -44,11 +44,36 @@ exports.createGenericModulePage = exports.GenericDrawer = exports.GenericTable =
|
|
|
44
44
|
var react_1 = __importStar(require("react"));
|
|
45
45
|
var general_1 = require("../general");
|
|
46
46
|
var use_rtl_1 = require("../hooks/use-rtl");
|
|
47
|
-
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
// Local constants to avoid static imports from @appcorp/shadcn
|
|
48
|
+
var DRAWER_FOOTER_COMPONENT_TYPE = {
|
|
49
|
+
FORM_DRAWER: 'FORM_DRAWER',
|
|
50
|
+
VIEW_DRAWER: 'VIEW_DRAWER',
|
|
51
|
+
FILTER_DRAWER: 'FILTER_DRAWER',
|
|
52
|
+
MORE_ACTIONS_DRAWER: 'MORE_ACTIONS_DRAWER',
|
|
53
|
+
};
|
|
54
|
+
// Helper to either lazy-load a component/value or require it synchronously in tests
|
|
55
|
+
var isTestEnv = typeof process !== 'undefined' && !!process.env.JEST_WORKER_ID;
|
|
56
|
+
var lazyOrSync = function (path, name, isComponent) {
|
|
57
|
+
if (isComponent === void 0) { isComponent = true; }
|
|
58
|
+
if (isTestEnv) {
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
60
|
+
var mod = require(path);
|
|
61
|
+
return mod[name];
|
|
62
|
+
}
|
|
63
|
+
if (isComponent) {
|
|
64
|
+
return react_1.default.lazy(function () {
|
|
65
|
+
return Promise.resolve("".concat(/* @vite-ignore */ path)).then(function (s) { return __importStar(require(s)); }).then(function (m) { return ({ default: m[name] }); });
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// For non-components (constants, enums), lazy-load the module and return the value
|
|
69
|
+
return Promise.resolve("".concat(/* @vite-ignore */ path)).then(function (s) { return __importStar(require(s)); }).then(function (m) { return m[name]; });
|
|
70
|
+
};
|
|
71
|
+
// Lazy-load components
|
|
72
|
+
var EnhancedTable = lazyOrSync('@appcorp/shadcn/components/enhanced-table', 'EnhancedTable');
|
|
73
|
+
var Toaster = lazyOrSync('@appcorp/shadcn/components/ui/sonner', 'Toaster');
|
|
74
|
+
var DrawerGeneric = lazyOrSync('@appcorp/shadcn/components/drawer-generic', 'DrawerGeneric');
|
|
75
|
+
var EnhancedDrawerHeader = lazyOrSync('@appcorp/shadcn/components/enhanced-drawer-header', 'EnhancedDrawerHeader');
|
|
76
|
+
var EnhancedDrawerFooter = lazyOrSync('@appcorp/shadcn/components/enhanced-drawer-footer', 'EnhancedDrawerFooter');
|
|
52
77
|
// ============================================================================
|
|
53
78
|
// CONSTANTS
|
|
54
79
|
// ============================================================================
|
|
@@ -60,14 +85,14 @@ exports.DRAWER_TYPES = {
|
|
|
60
85
|
};
|
|
61
86
|
var GenericTable = function (_a) {
|
|
62
87
|
var config = _a.config, context = _a.context, tableBodyCols = _a.tableBodyCols, headerActions = _a.headerActions, rowActions = _a.rowActions;
|
|
88
|
+
// get a useTranslations hook if available, otherwise a fallback translator
|
|
63
89
|
var maybeUseTranslations = (function () {
|
|
64
90
|
try {
|
|
65
|
-
// Use runtime require so bundlers don't statically include next-intl when unused
|
|
66
91
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
67
|
-
|
|
92
|
+
var useTranslations = require('next-intl').useTranslations;
|
|
93
|
+
return useTranslations;
|
|
68
94
|
}
|
|
69
95
|
catch (_a) {
|
|
70
|
-
// Fallback: identity translator
|
|
71
96
|
return function (_ns) { return function (key) { return key; }; };
|
|
72
97
|
}
|
|
73
98
|
})();
|
|
@@ -83,9 +108,10 @@ var GenericTable = function (_a) {
|
|
|
83
108
|
// Build header actions from context or props
|
|
84
109
|
var allHeaderActions = (0, react_1.useMemo)(function () { return headerActions || context.headerActions || []; }, [headerActions, context.headerActions]);
|
|
85
110
|
return (react_1.default.createElement("div", { className: "space-y-4 ".concat(isRTL ? 'rtl' : 'ltr'), dir: isRTL ? 'rtl' : 'ltr' },
|
|
86
|
-
react_1.default.createElement(
|
|
87
|
-
|
|
88
|
-
|
|
111
|
+
react_1.default.createElement(react_1.default.Suspense, { fallback: null },
|
|
112
|
+
react_1.default.createElement(EnhancedTable, { currentPage: Number(context.state.currentPage), handleNextOnClick: context.handlePageChange, handleOnSelect: context.handlePageLimitChange, handlePreviousOnClick: function () {
|
|
113
|
+
return context.handlePageChange(context.state.currentPage - 1);
|
|
114
|
+
}, handleSearchInput: context.handleSearch, headerActions: allHeaderActions, isNextDisabled: (0, general_1.isNextButtonDisabled)(context.state.currentPage, totalPages), isPreviousDisabled: (0, general_1.isPreviousButtonDisabled)(context.state.currentPage), listOptions: (0, general_1.getAvailablePageLimits)(context.state.count), loading: context.listLoading, nodeSelectKey: "pageLimit", pageLimit: context.state.pageLimit, rowActions: rowActions || context.rowActions || [], searchDisabled: false, searchEnabled: true, searchId: "".concat(config.moduleName.toLowerCase(), "-search"), searchPlaceholder: t(config.searchPlaceholder), searchValue: context.state.searchQuery, tableBodyCols: tableBodyCols, tableBodyRows: context.state.items, tableDescription: t(config.tableDescription), tableHeadItems: tableHeadItems, tableHeading: t(config.tableTitle), totalPages: Number(totalPages) }))));
|
|
89
115
|
};
|
|
90
116
|
exports.GenericTable = GenericTable;
|
|
91
117
|
var GenericDrawer = function (_a) {
|
|
@@ -94,7 +120,8 @@ var GenericDrawer = function (_a) {
|
|
|
94
120
|
var maybeUseTranslations = (function () {
|
|
95
121
|
try {
|
|
96
122
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
97
|
-
|
|
123
|
+
var useTranslations = require('next-intl').useTranslations;
|
|
124
|
+
return useTranslations;
|
|
98
125
|
}
|
|
99
126
|
catch (_a) {
|
|
100
127
|
return function (_ns) { return function (key) { return key; }; };
|
|
@@ -114,15 +141,16 @@ var GenericDrawer = function (_a) {
|
|
|
114
141
|
? t(config.drawerDescription)
|
|
115
142
|
: '';
|
|
116
143
|
var errors = (_b = context.state.errors) !== null && _b !== void 0 ? _b : {};
|
|
117
|
-
var formHeader = isFormDrawer ? (react_1.default.createElement(
|
|
118
|
-
var viewHeader = isViewDrawer ? (react_1.default.createElement(
|
|
119
|
-
var filterHeader = isFilterDrawer ? (react_1.default.createElement(
|
|
120
|
-
var moreActionsHeader = isMoreActionsDrawer ? (react_1.default.createElement(
|
|
121
|
-
var formFooter = isFormDrawer ? (react_1.default.createElement(
|
|
122
|
-
var viewFooter = isViewDrawer ? (react_1.default.createElement(
|
|
123
|
-
var filterFooter = isFilterDrawer ? (react_1.default.createElement(
|
|
124
|
-
var moreActionsFooter = isMoreActionsDrawer ? (react_1.default.createElement(
|
|
125
|
-
return (react_1.default.createElement(
|
|
144
|
+
var formHeader = isFormDrawer ? (react_1.default.createElement(EnhancedDrawerHeader, { title: drawerTitle, description: drawerDescription })) : null;
|
|
145
|
+
var viewHeader = isViewDrawer ? (react_1.default.createElement(EnhancedDrawerHeader, { title: drawerTitle, description: drawerDescription })) : null;
|
|
146
|
+
var filterHeader = isFilterDrawer ? (react_1.default.createElement(EnhancedDrawerHeader, { title: drawerTitle, description: drawerDescription })) : null;
|
|
147
|
+
var moreActionsHeader = isMoreActionsDrawer ? (react_1.default.createElement(EnhancedDrawerHeader, { title: drawerTitle, description: drawerDescription })) : null;
|
|
148
|
+
var formFooter = isFormDrawer ? (react_1.default.createElement(EnhancedDrawerFooter, { applyFilters: function () { }, clearFilters: function () { }, closeDrawer: closeDrawer, disableSaveButton: disableSaveButton, drawerType: DRAWER_FOOTER_COMPONENT_TYPE.FORM_DRAWER, errors: errors, handleSubmit: context.handleSubmit, updateLoading: (_c = context.updateLoading) !== null && _c !== void 0 ? _c : false })) : null;
|
|
149
|
+
var viewFooter = isViewDrawer ? (react_1.default.createElement(EnhancedDrawerFooter, { applyFilters: function () { }, clearFilters: function () { }, closeDrawer: closeDrawer, disableSaveButton: false, drawerType: DRAWER_FOOTER_COMPONENT_TYPE.VIEW_DRAWER, errors: errors, handleSubmit: function () { }, updateLoading: false })) : null;
|
|
150
|
+
var filterFooter = isFilterDrawer ? (react_1.default.createElement(EnhancedDrawerFooter, { applyFilters: (_d = context.applyFilters) !== null && _d !== void 0 ? _d : (function () { }), clearFilters: (_e = context.clearFilters) !== null && _e !== void 0 ? _e : (function () { }), closeDrawer: closeDrawer, disableSaveButton: false, drawerType: DRAWER_FOOTER_COMPONENT_TYPE.FILTER_DRAWER, errors: errors, handleSubmit: (_f = context.handleSubmit) !== null && _f !== void 0 ? _f : (function () { }), updateLoading: false })) : null;
|
|
151
|
+
var moreActionsFooter = isMoreActionsDrawer ? (react_1.default.createElement(EnhancedDrawerFooter, { applyFilters: function () { }, clearFilters: function () { }, closeDrawer: closeDrawer, disableSaveButton: false, drawerType: DRAWER_FOOTER_COMPONENT_TYPE.MORE_ACTIONS_DRAWER, errors: errors, handleSubmit: function () { }, updateLoading: false })) : null;
|
|
152
|
+
return (react_1.default.createElement(react_1.default.Suspense, { fallback: null },
|
|
153
|
+
react_1.default.createElement(DrawerGeneric, { direction: isRTL ? 'left' : 'right', filterDrawer: isFilterDrawer ? filterContent : null, filterDrawerFooter: filterFooter, filterDrawerHeader: filterHeader, formDrawer: isFormDrawer ? formContent : null, formDrawerFooter: formFooter, formDrawerHeader: formHeader, moreActionsDrawer: isMoreActionsDrawer ? moreActionsContent : null, moreActionsDrawerFooter: moreActionsFooter, moreActionsDrawerHeader: moreActionsHeader, onOpenChange: function (open) { return !open && closeDrawer(); }, open: isOpen, viewDrawer: isViewDrawer ? viewContent : null, viewDrawerFooter: viewFooter, viewDrawerHeader: viewHeader, width: (_g = config.size) !== null && _g !== void 0 ? _g : 'small' })));
|
|
126
154
|
};
|
|
127
155
|
exports.GenericDrawer = GenericDrawer;
|
|
128
156
|
var createGenericModulePage = function (config) {
|
|
@@ -131,7 +159,8 @@ var createGenericModulePage = function (config) {
|
|
|
131
159
|
return (react_1.default.createElement("div", { className: "space-y-6" },
|
|
132
160
|
react_1.default.createElement(exports.GenericTable, { config: config, context: context, tableBodyCols: tableBodyCols, headerActions: headerActions, rowActions: rowActions, iconMap: iconMap }),
|
|
133
161
|
react_1.default.createElement(exports.GenericDrawer, { config: config, context: context, formContent: config.formContent, viewContent: config.viewContent, filterContent: config.filterContent, moreActionsContent: config.moreActionsContent }),
|
|
134
|
-
react_1.default.createElement(
|
|
162
|
+
react_1.default.createElement(react_1.default.Suspense, { fallback: null },
|
|
163
|
+
react_1.default.createElement(Toaster, null))));
|
|
135
164
|
};
|
|
136
165
|
return GenericModulePage;
|
|
137
166
|
};
|