@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
- import { COMPONENT_TYPE, HeaderAction, TableColumn } from '@appcorp/shadcn/components/enhanced-table';
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
- var enhanced_table_1 = require("@appcorp/shadcn/components/enhanced-table");
48
- var sonner_1 = require("@appcorp/shadcn/components/ui/sonner");
49
- var drawer_generic_1 = require("@appcorp/shadcn/components/drawer-generic");
50
- var enhanced_drawer_header_1 = require("@appcorp/shadcn/components/enhanced-drawer-header");
51
- var enhanced_drawer_footer_1 = require("@appcorp/shadcn/components/enhanced-drawer-footer");
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
- return require('next-intl').useTranslations;
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(enhanced_table_1.EnhancedTable, { currentPage: Number(context.state.currentPage), handleNextOnClick: context.handlePageChange, handleOnSelect: context.handlePageLimitChange, handlePreviousOnClick: function () {
87
- return context.handlePageChange(context.state.currentPage - 1);
88
- }, 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) })));
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
- return require('next-intl').useTranslations;
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(enhanced_drawer_header_1.EnhancedDrawerHeader, { title: drawerTitle, description: drawerDescription })) : null;
118
- var viewHeader = isViewDrawer ? (react_1.default.createElement(enhanced_drawer_header_1.EnhancedDrawerHeader, { title: drawerTitle, description: drawerDescription })) : null;
119
- var filterHeader = isFilterDrawer ? (react_1.default.createElement(enhanced_drawer_header_1.EnhancedDrawerHeader, { title: drawerTitle, description: drawerDescription })) : null;
120
- var moreActionsHeader = isMoreActionsDrawer ? (react_1.default.createElement(enhanced_drawer_header_1.EnhancedDrawerHeader, { title: drawerTitle, description: drawerDescription })) : null;
121
- var formFooter = isFormDrawer ? (react_1.default.createElement(enhanced_drawer_footer_1.EnhancedDrawerFooter, { applyFilters: function () { }, clearFilters: function () { }, closeDrawer: closeDrawer, disableSaveButton: disableSaveButton, drawerType: enhanced_drawer_footer_1.DRAWER_FOOTER_COMPONENT_TYPE.FORM_DRAWER, errors: errors, handleSubmit: context.handleSubmit, updateLoading: (_c = context.updateLoading) !== null && _c !== void 0 ? _c : false })) : null;
122
- var viewFooter = isViewDrawer ? (react_1.default.createElement(enhanced_drawer_footer_1.EnhancedDrawerFooter, { applyFilters: function () { }, clearFilters: function () { }, closeDrawer: closeDrawer, disableSaveButton: false, drawerType: enhanced_drawer_footer_1.DRAWER_FOOTER_COMPONENT_TYPE.VIEW_DRAWER, errors: errors, handleSubmit: function () { }, updateLoading: false })) : null;
123
- var filterFooter = isFilterDrawer ? (react_1.default.createElement(enhanced_drawer_footer_1.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: enhanced_drawer_footer_1.DRAWER_FOOTER_COMPONENT_TYPE.FILTER_DRAWER, errors: errors, handleSubmit: (_f = context.handleSubmit) !== null && _f !== void 0 ? _f : (function () { }), updateLoading: false })) : null;
124
- var moreActionsFooter = isMoreActionsDrawer ? (react_1.default.createElement(enhanced_drawer_footer_1.EnhancedDrawerFooter, { applyFilters: function () { }, clearFilters: function () { }, closeDrawer: closeDrawer, disableSaveButton: false, drawerType: enhanced_drawer_footer_1.DRAWER_FOOTER_COMPONENT_TYPE.MORE_ACTIONS_DRAWER, errors: errors, handleSubmit: function () { }, updateLoading: false })) : null;
125
- return (react_1.default.createElement(drawer_generic_1.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' }));
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(sonner_1.Toaster, null)));
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
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-pakistan/util-functions",
3
- "version": "1.25.37",
3
+ "version": "1.25.38",
4
4
  "description": "A library of all util functions",
5
5
  "main": "index.js",
6
6
  "scripts": {