robobyte-front-builder 1.0.19 → 1.0.23
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/INTEGRATION.md +1586 -0
- package/README.md +928 -0
- package/RoboByteBuilder_User_Manual.docx +0 -0
- package/next.config.js +19 -48
- package/package.json +42 -86
- package/src/context/BuilderContext.jsx +191 -7
- package/src/context/SystemContext.js +2 -2
- package/src/hooks/useGlobalStore.js +36 -0
- package/src/hooks/useTimerEngine.js +54 -0
- package/src/lib/index.js +11 -3
- package/src/lib/layouts/BlankLayout.jsx +13 -0
- package/src/lib/providers/RoboByteFrontBuilderProvider.jsx +61 -7
- package/src/lib/themes/builderTheme.js +41 -0
- package/src/pages/_app.js +32 -134
- package/src/pages/api/ai.js +107 -0
- package/src/pages/builders/report/index.js +1 -0
- package/src/pages/builders/report/list/index.js +1 -0
- package/src/pages/builders/report/viewer/index.js +1 -0
- package/src/pages/index.js +88 -37
- package/src/pages/printBuilder/index.jsx +263 -0
- package/src/pages/printBuilder/layouts/index.jsx +298 -0
- package/src/pages/reportModule/reportBuilder/index.js +8 -6
- package/src/pages/reportModule/reportBuilder/reportViewer/index.js +92 -25
- package/src/pages/reportModule/reportBuilder/reports/index.js +3 -5
- package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +2 -3
- package/src/pages/viewBuilder/index.jsx +117 -32
- package/src/pages/viewBuilder/views/index.js +3 -3
- package/src/pages/viewer/[id]/index.js +2 -1
- package/src/services/DeleteService.js +31 -60
- package/src/services/Endpoints/PrintLayoutEndpoints.js +42 -0
- package/src/services/Endpoints/ReportBuilderEndpoints.js +7 -7
- package/src/services/Endpoints.js +2 -0
- package/src/services/GetService.js +33 -54
- package/src/services/PatchService.js +38 -65
- package/src/services/PostService.js +37 -63
- package/src/services/UpdateService.js +39 -65
- package/src/services/builderHelper/actionExecutor.js +141 -25
- package/src/services/builderHelper/builderHelper.js +92 -0
- package/src/services/builderHelper/colorSchema.js +95 -0
- package/src/services/builderHelper/iconResolver.js +50 -0
- package/src/services/builderHelper/jsExecutor.js +212 -46
- package/src/services/builderHelper/nodeFactory.js +32 -15
- package/src/services/builderHelper/numberFormat.js +123 -0
- package/src/services/builderHelper/resolveProps.js +73 -4
- package/src/services/builderHelper/thresholdEngine.js +77 -0
- package/src/services/builderHelper/tree.js +31 -0
- package/src/services/components/agGridAutoComplete.js +5 -9
- package/src/services/config.js +9 -1
- package/src/services/globalStore.js +80 -0
- package/src/services/helper/multiSelectEditor.js +5 -9
- package/src/services/helper/multiSelectEditorByBuilder.js +5 -9
- package/src/services/reportData/fetchReportData.js +69 -28
- package/src/services/routerRef.js +35 -0
- package/src/services/sessionLog.js +171 -0
- package/src/views/ConfirmDialog.js +2 -2
- package/src/views/builder/JSEditor.js +105 -107
- package/src/views/builder/SessionLogDialog.jsx +350 -0
- package/src/views/builder/UnsavedChangesGuard.jsx +103 -0
- package/src/views/builder/inspector/Inspector.jsx +6 -9
- package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
- package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
- package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
- package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
- package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
- package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
- package/src/views/builder/inspector/definitions/banner/main.js +22 -0
- package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
- package/src/views/builder/inspector/definitions/banner/style.js +1 -0
- package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
- package/src/views/builder/inspector/definitions/button/main.js +11 -12
- package/src/views/builder/inspector/definitions/button/style.js +18 -30
- package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
- package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
- package/src/views/builder/inspector/definitions/common/main.js +13 -2
- package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
- package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
- package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
- package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
- package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
- package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
- package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
- package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
- package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
- package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
- package/src/views/builder/inspector/definitions/header/main.js +10 -1
- package/src/views/builder/inspector/definitions/index.js +106 -19
- package/src/views/builder/inspector/definitions/input/actions.js +4 -1
- package/src/views/builder/inspector/definitions/input/main.js +20 -11
- package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
- package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
- package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
- package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
- package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
- package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
- package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
- package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
- package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
- package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
- package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
- package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
- package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
- package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
- package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
- package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
- package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
- package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
- package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
- package/src/views/builder/inspector/definitions/label/main.js +10 -1
- package/src/views/builder/inspector/definitions/layout/main.js +27 -3
- package/src/views/builder/inspector/definitions/number/main.js +6 -14
- package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
- package/src/views/builder/inspector/definitions/popover/main.js +71 -0
- package/src/views/builder/inspector/definitions/radio/main.js +5 -8
- package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
- package/src/views/builder/inspector/definitions/reportViewer/main.js +28 -1
- package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
- package/src/views/builder/inspector/definitions/signature/main.js +4 -1
- package/src/views/builder/inspector/definitions/tag/main.js +5 -8
- package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
- package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
- package/src/views/builder/inspector/definitions/time/main.js +5 -8
- package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
- package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
- package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
- package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
- package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
- package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
- package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
- package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
- package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
- package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
- package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
- package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
- package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
- package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
- package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
- package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
- package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
- package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
- package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
- package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
- package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
- package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
- package/src/views/builder/sidebar/Sidebar.jsx +4 -2
- package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
- package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
- package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
- package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +53 -0
- package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
- package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +167 -0
- package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
- package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
- package/src/views/builder/sidebar/tabs/AiTab/trainingExport.js +131 -0
- package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
- package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
- package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
- package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
- package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
- package/src/views/builder/sidebar/tabs/ViewTab.jsx +173 -13
- package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
- package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
- package/src/views/builder/viewer/DialogsZone.jsx +259 -0
- package/src/views/builder/viewer/FieldLabel.jsx +106 -0
- package/src/views/builder/viewer/PrintDialog.jsx +481 -0
- package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
- package/src/views/builder/viewer/Viewer.jsx +106 -8
- package/src/views/builder/viewer/ViewerComponentWrapper.jsx +70 -9
- package/src/views/builder/viewer/ViewerToolbar.jsx +285 -56
- package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
- package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
- package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
- package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
- package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
- package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
- package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
- package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
- package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
- package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
- package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
- package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
- package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
- package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
- package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
- package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
- package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
- package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
- package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
- package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
- package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
- package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
- package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
- package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
- package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
- package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
- package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
- package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
- package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
- package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
- package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
- package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
- package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
- package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
- package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
- package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
- package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
- package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
- package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +263 -5
- package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
- package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
- package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
- package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
- package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
- package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
- package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
- package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
- package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
- package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
- package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
- package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
- package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
- package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
- package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
- package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
- package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
- package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
- package/src/views/customFilter/CustomFilterDialog.js +1023 -660
- package/src/views/customFilter/FixedFilterDialog.js +649 -0
- package/src/views/customFilter/SearchFilterDialog.js +248 -0
- package/src/views/genericTable/BuilderExpressionParams.js +3 -3
- package/src/views/genericTable/ColumnConfiguratorDialog.js +33 -24
- package/src/views/genericTable/FixedFilterDialog.js +3 -2
- package/src/views/genericTable/FormattingSettingsDialog.js +8 -3
- package/src/views/genericTable/SGrid.js +821 -448
- package/src/views/genericTable/SearchFilterDialog.js +3 -2
- package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
- package/src/views/genericTable/convertStringFunctions.js +274 -138
- package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
- package/src/views/genericTable/updateRefHelpers.js +9 -6
- package/src/views/printBuilder/PrintBuilderViewer.jsx +627 -0
- package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
- package/src/views/rolePermissions/UpdateReportPermissionDialog.js +3 -2
- package/src/@core/components/auth/AclGuard.js +0 -55
- package/src/@core/components/auth/AuthGuard.js +0 -40
- package/src/@core/components/auth/GuestGuard.js +0 -30
- package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
- package/src/@core/components/custom-inputs/Image.jsx +0 -78
- package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
- package/src/@core/components/customizer/index.jsx +0 -470
- package/src/@core/components/customizer/styles.module.css +0 -169
- package/src/@core/components/mui/Avatar.jsx +0 -41
- package/src/@core/components/mui/Badge.jsx +0 -20
- package/src/@core/components/mui/IconButton.jsx +0 -74
- package/src/@core/components/mui/TabList.jsx +0 -60
- package/src/@core/components/option-menu/index.jsx +0 -137
- package/src/@core/components/scroll-to-top/index.jsx +0 -43
- package/src/@core/components/spinner/index.js +0 -26
- package/src/@core/components/window-wrapper/index.js +0 -27
- package/src/@core/contexts/settingsContext.jsx +0 -98
- package/src/@core/hooks/useBgColor.js +0 -63
- package/src/@core/hooks/useImageVariant.js +0 -27
- package/src/@core/hooks/useLayoutInit.js +0 -37
- package/src/@core/hooks/useObjectCookie.js +0 -18
- package/src/@core/hooks/useSettings.jsx +0 -15
- package/src/@core/layouts/BlankLayout.js +0 -37
- package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
- package/src/@core/layouts/HorizontalLayout.jsx +0 -151
- package/src/@core/layouts/Layout.js +0 -39
- package/src/@core/layouts/VerticalLayout.jsx +0 -124
- package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
- package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
- package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
- package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
- package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
- package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
- package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
- package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
- package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
- package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
- package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
- package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
- package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
- package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
- package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
- package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
- package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
- package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
- package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
- package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
- package/src/@core/layouts/utils.js +0 -69
- package/src/@core/styles/Table.module.css +0 -93
- package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
- package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
- package/src/@core/styles/libs/fullcalendar/index.js +0 -461
- package/src/@core/styles/libs/keen-slider/index.js +0 -111
- package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
- package/src/@core/styles/libs/react-cleave/index.js +0 -33
- package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
- package/src/@core/styles/libs/react-datepicker/index.js +0 -388
- package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
- package/src/@core/styles/libs/react-dropzone/index.js +0 -76
- package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
- package/src/@core/styles/libs/recharts/index.js +0 -47
- package/src/@core/styles/stepper.js +0 -103
- package/src/@core/styles/vertical/menuItemStyles.js +0 -138
- package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
- package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
- package/src/@core/svg/ContentCompact.jsx +0 -17
- package/src/@core/svg/ContentWide.jsx +0 -17
- package/src/@core/svg/DirectionLtr.jsx +0 -93
- package/src/@core/svg/DirectionRtl.jsx +0 -93
- package/src/@core/svg/LayoutCollapsed.jsx +0 -59
- package/src/@core/svg/LayoutHorizontal.jsx +0 -42
- package/src/@core/svg/LayoutVertical.jsx +0 -59
- package/src/@core/svg/Logo.jsx +0 -76
- package/src/@core/svg/SkinBordered.jsx +0 -54
- package/src/@core/svg/SkinDefault.jsx +0 -59
- package/src/@core/tailwind/plugin.js +0 -78
- package/src/@core/theme/ThemeComponent.js +0 -63
- package/src/@core/theme/ThemeOptions.js +0 -71
- package/src/@core/theme/breakpoints/index.js +0 -11
- package/src/@core/theme/colorSchemes.js +0 -326
- package/src/@core/theme/customShadows.js +0 -11
- package/src/@core/theme/globalStyles.js +0 -81
- package/src/@core/theme/index.js +0 -42
- package/src/@core/theme/overrides/accordion.js +0 -51
- package/src/@core/theme/overrides/accordion.jsx +0 -85
- package/src/@core/theme/overrides/alerts.js +0 -110
- package/src/@core/theme/overrides/alerts.jsx +0 -180
- package/src/@core/theme/overrides/autocomplete.js +0 -14
- package/src/@core/theme/overrides/autocomplete.jsx +0 -68
- package/src/@core/theme/overrides/avatar.js +0 -38
- package/src/@core/theme/overrides/avatars.js +0 -27
- package/src/@core/theme/overrides/backdrop.js +0 -22
- package/src/@core/theme/overrides/badges.js +0 -16
- package/src/@core/theme/overrides/breadcrumbs.js +0 -11
- package/src/@core/theme/overrides/button-group.js +0 -84
- package/src/@core/theme/overrides/button.js +0 -93
- package/src/@core/theme/overrides/buttonGroup.js +0 -9
- package/src/@core/theme/overrides/card.js +0 -83
- package/src/@core/theme/overrides/checkbox.jsx +0 -95
- package/src/@core/theme/overrides/chip.js +0 -72
- package/src/@core/theme/overrides/dataGrid.js +0 -114
- package/src/@core/theme/overrides/dateTimePicker.js +0 -65
- package/src/@core/theme/overrides/dialog.js +0 -120
- package/src/@core/theme/overrides/divider.js +0 -13
- package/src/@core/theme/overrides/drawer.js +0 -20
- package/src/@core/theme/overrides/fab.js +0 -13
- package/src/@core/theme/overrides/form-control-label.js +0 -19
- package/src/@core/theme/overrides/icon-button.js +0 -145
- package/src/@core/theme/overrides/index.js +0 -103
- package/src/@core/theme/overrides/input.js +0 -72
- package/src/@core/theme/overrides/link.js +0 -9
- package/src/@core/theme/overrides/list.js +0 -44
- package/src/@core/theme/overrides/menu.js +0 -25
- package/src/@core/theme/overrides/pagination.js +0 -41
- package/src/@core/theme/overrides/paper.js +0 -9
- package/src/@core/theme/overrides/popover.js +0 -16
- package/src/@core/theme/overrides/progress.js +0 -38
- package/src/@core/theme/overrides/radio.jsx +0 -80
- package/src/@core/theme/overrides/rating.js +0 -16
- package/src/@core/theme/overrides/rating.jsx +0 -32
- package/src/@core/theme/overrides/select.js +0 -19
- package/src/@core/theme/overrides/select.jsx +0 -52
- package/src/@core/theme/overrides/slider.js +0 -97
- package/src/@core/theme/overrides/snackbar.js +0 -19
- package/src/@core/theme/overrides/switch.js +0 -73
- package/src/@core/theme/overrides/switches.js +0 -25
- package/src/@core/theme/overrides/table-pagination.js +0 -39
- package/src/@core/theme/overrides/table.js +0 -81
- package/src/@core/theme/overrides/tabs.js +0 -30
- package/src/@core/theme/overrides/timeline.js +0 -80
- package/src/@core/theme/overrides/toggle-button.js +0 -33
- package/src/@core/theme/overrides/toggleButton.js +0 -16
- package/src/@core/theme/overrides/tooltip.js +0 -21
- package/src/@core/theme/overrides/typography.js +0 -13
- package/src/@core/theme/palette/index.js +0 -107
- package/src/@core/theme/shadows/index.js +0 -61
- package/src/@core/theme/shadows.js +0 -12
- package/src/@core/theme/spacing/index.js +0 -3
- package/src/@core/theme/spacing.js +0 -5
- package/src/@core/theme/typography/index.js +0 -65
- package/src/@core/theme/typography.js +0 -84
- package/src/@core/utils/create-emotion-cache.js +0 -5
- package/src/@core/utils/hex-to-rgba.js +0 -11
- package/src/@core/utils/serverHelpers.js +0 -45
- package/src/@menu/components/RouterLink.jsx +0 -18
- package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
- package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
- package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
- package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
- package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
- package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
- package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
- package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
- package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
- package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
- package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
- package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
- package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
- package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
- package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
- package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
- package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
- package/src/@menu/contexts/verticalNavContext.jsx +0 -65
- package/src/@menu/defaultConfigs.js +0 -12
- package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
- package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
- package/src/@menu/hooks/useMediaQuery.jsx +0 -29
- package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
- package/src/@menu/hooks/useVerticalNav.jsx +0 -19
- package/src/@menu/horizontal-menu/index.jsx +0 -8
- package/src/@menu/styles/StyledBackdrop.jsx +0 -15
- package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
- package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
- package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
- package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
- package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
- package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
- package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
- package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
- package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
- package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
- package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
- package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
- package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
- package/src/@menu/styles/styles.module.css +0 -5
- package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
- package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
- package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
- package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
- package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
- package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
- package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
- package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
- package/src/@menu/svg/ChevronRight.jsx +0 -9
- package/src/@menu/svg/Close.jsx +0 -12
- package/src/@menu/svg/RadioCircle.jsx +0 -12
- package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
- package/src/@menu/utils/menuClasses.js +0 -44
- package/src/@menu/utils/menuUtils.jsx +0 -145
- package/src/@menu/vertical-menu/index.jsx +0 -11
- package/src/configs/acl.js +0 -115
- package/src/configs/auth.js +0 -5
- package/src/configs/aws-exports.js +0 -30
- package/src/configs/firebase.js +0 -25
- package/src/configs/i18n.js +0 -34
- package/src/configs/primaryColorConfig.js +0 -35
- package/src/configs/themeConfig.js +0 -44
- package/src/layouts/UserLayout.js +0 -94
- package/src/layouts/UserThemeOptions.js +0 -191
- package/src/layouts/components/Direction.js +0 -30
- package/src/layouts/components/HtmlTooltip.js +0 -15
- package/src/layouts/components/Translations.js +0 -11
- package/src/layouts/components/UserDropdown.js +0 -217
- package/src/layouts/components/UserIcon.js +0 -40
- package/src/layouts/components/acl/Can.js +0 -6
- package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
- package/src/layouts/components/acl/CanViewNavLink.js +0 -17
- package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
- package/src/layouts/components/horizontal/AppBarContent.js +0 -39
- package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
- package/src/layouts/components/mui/StepperComps.js +0 -55
- package/src/layouts/components/vertical/AppBarContent.js +0 -35
- package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
- package/src/libs/ApexCharts.jsx +0 -5
- package/src/libs/ReactPlayer.jsx +0 -5
- package/src/libs/Recharts.jsx +0 -4
- package/src/libs/auth.js +0 -124
- package/src/libs/styles/AppFullCalendar.js +0 -505
- package/src/libs/styles/AppKeenSlider.js +0 -116
- package/src/libs/styles/AppReactApexCharts.jsx +0 -110
- package/src/libs/styles/AppReactDatepicker.jsx +0 -470
- package/src/libs/styles/AppReactDropzone.js +0 -76
- package/src/libs/styles/AppReactToastify.jsx +0 -108
- package/src/libs/styles/AppRecharts.js +0 -55
- package/src/libs/styles/inputOtp.module.css +0 -39
- package/src/libs/styles/tiptapEditor.css +0 -72
- package/src/navigation/horizontal/index.js +0 -246
- package/src/navigation/vertical/index.js +0 -253
- package/src/pages/401.js +0 -70
- package/src/pages/404.js +0 -67
- package/src/pages/500.js +0 -68
- package/src/pages/[slug].js +0 -115
- package/src/pages/_document.js +0 -72
- package/src/pages/api/navigation/regenerate-registry.js +0 -116
- package/src/pages/api/navigation/save.js +0 -218
- package/src/pages/authModule/acl/index.js +0 -48
- package/src/pages/authModule/forgot-password/index.js +0 -228
- package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
- package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
- package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
- package/src/pages/authModule/privacy/index.js +0 -721
- package/src/pages/authModule/users/index.js +0 -210
- package/src/pages/login/index.js +0 -328
- package/src/pages/mainHome/index.js +0 -181
- package/src/views/builder/inspector/definitions/cell/main.js +0 -4
- package/src/views/builder/inspector/definitions/column/main.js +0 -9
- package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
- package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
- package/src/views/builder/inspector/definitions/table/main.js +0 -9
- package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
- package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
- package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
- package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
- package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
- package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
- package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
- package/src/views/pages/misc/FooterIllustrations.js +0 -47
- package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
- package/src/views/pages/users/UserManageDialog.js +0 -283
- package/src/views/pages/users/UserViewPage.js +0 -199
- package/src/views/users/AddUserNameDialog.js +0 -162
- package/src/views/users/ContactManage.js +0 -449
- package/src/views/users/ResetPasswordDialog.js +0 -242
|
@@ -13,7 +13,8 @@ import {
|
|
|
13
13
|
TextField,
|
|
14
14
|
Typography
|
|
15
15
|
} from '@mui/material'
|
|
16
|
-
import {ArrowLeft, Close,
|
|
16
|
+
import {ArrowLeft, Close, FilterPlus} from 'mdi-material-ui'
|
|
17
|
+
import {DeleteOutlined} from '@mui/icons-material'
|
|
17
18
|
import Autocomplete from '@mui/material/Autocomplete'
|
|
18
19
|
import {Endpoints, Services} from 'src/services/Endpoints'
|
|
19
20
|
|
|
@@ -231,7 +232,7 @@ export default function SearchFilterDialog({
|
|
|
231
232
|
key={s.fullPath+idx}
|
|
232
233
|
label={`${s.path}`}
|
|
233
234
|
onDelete={()=> removeItem(idx)}
|
|
234
|
-
deleteIcon={<
|
|
235
|
+
deleteIcon={<DeleteOutlined/>}
|
|
235
236
|
variant='outlined'
|
|
236
237
|
/>
|
|
237
238
|
))}
|
|
@@ -3,12 +3,12 @@ import Autocomplete from '@mui/material/Autocomplete';
|
|
|
3
3
|
import TextField from '@mui/material/TextField';
|
|
4
4
|
import Chip from '@mui/material/Chip';
|
|
5
5
|
import {createRoot} from 'react-dom/client';
|
|
6
|
-
import
|
|
6
|
+
import { ThemeProvider, createTheme, darken, lighten, styled } from "@mui/material/styles";
|
|
7
7
|
import moment from 'moment';
|
|
8
8
|
import Typography from "@mui/material/Typography";
|
|
9
|
-
import {darken, lighten, styled} from "@mui/material/styles";
|
|
10
9
|
import izColors from "src/configs/izColors.json"
|
|
11
|
-
|
|
10
|
+
|
|
11
|
+
const defaultTheme = createTheme();
|
|
12
12
|
|
|
13
13
|
const AutocompleteEditor = React.memo(
|
|
14
14
|
forwardRef((props, ref) => {
|
|
@@ -124,9 +124,7 @@ const AutocompleteEditor = React.memo(
|
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
return (
|
|
127
|
-
<
|
|
128
|
-
{({settings}) => (
|
|
129
|
-
<ThemeComponent settings={settings}>
|
|
127
|
+
<ThemeProvider theme={defaultTheme}>
|
|
130
128
|
<Autocomplete
|
|
131
129
|
multiple={!props.isSingle === true}
|
|
132
130
|
size="small"
|
|
@@ -179,9 +177,7 @@ const AutocompleteEditor = React.memo(
|
|
|
179
177
|
))
|
|
180
178
|
}
|
|
181
179
|
/>
|
|
182
|
-
|
|
183
|
-
)}
|
|
184
|
-
</SettingsConsumer>
|
|
180
|
+
</ThemeProvider>
|
|
185
181
|
);
|
|
186
182
|
})
|
|
187
183
|
);
|
|
@@ -1,9 +1,89 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Convert string-based functions to executable functions
|
|
3
|
-
* Used for extraCols and columnsConfig that come from JSON configuration
|
|
3
|
+
* Used for extraCols and columnsConfig that come from JSON configuration.
|
|
4
|
+
*
|
|
5
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
6
|
+
* INJECTED VARIABLES (available inside every column function)
|
|
7
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
8
|
+
*
|
|
9
|
+
* rowData {object} — The current row's data object (params.data). Injected
|
|
10
|
+
* per-call into the second-argument scope so column functions
|
|
11
|
+
* can destructure it directly:
|
|
12
|
+
* (params, { rowData }) => rowData.Status === 'Active'
|
|
13
|
+
*
|
|
14
|
+
* nodeName {string} — The builder node ID of the ReportViewer that owns this
|
|
15
|
+
* table. Use it to target this table's ref from outside,
|
|
16
|
+
* or pass it to node-aware helpers below.
|
|
17
|
+
*
|
|
18
|
+
* reportRefs {object} — The live registry of all ReportViewer refs on the page.
|
|
19
|
+
* Shape: { [nodeId]: React.MutableRefObject<updateRow[]> }
|
|
20
|
+
* Access any table's ref: reportRefs.current['someNodeId']
|
|
21
|
+
*
|
|
22
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
* HELPER FUNCTIONS (also injected — no imports needed)
|
|
24
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
25
|
+
*
|
|
26
|
+
* All original helpers from updateRefHelpers are available:
|
|
27
|
+
* setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue,
|
|
28
|
+
* removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef,
|
|
29
|
+
* cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal
|
|
30
|
+
*
|
|
31
|
+
* PLUS node-aware wrappers — these accept an optional last `node` argument:
|
|
32
|
+
* - If node is omitted → uses params.context.updateRef (direct, backward compat)
|
|
33
|
+
* - If node is a string → uses reportRefs.current[node] (targets another table)
|
|
34
|
+
* - Pass the special constant `THIS_NODE` to target THIS table by nodeName
|
|
35
|
+
*
|
|
36
|
+
* setRefValue(updateRef, rowData, rowUniqueId, fieldPath, newValue, node?)
|
|
37
|
+
* setRefRow(updateRef, rowData, rowUniqueId, updates, node?)
|
|
38
|
+
* getRefValue(updateRef, rowData, rowUniqueId, fieldPath, node?)
|
|
39
|
+
* hasRefValue(updateRef, rowData, rowUniqueId, fieldPath, node?)
|
|
40
|
+
* clearRefRow(updateRef, rowData, rowUniqueId, node?)
|
|
41
|
+
* clearAllRef(updateRef, node?)
|
|
42
|
+
*
|
|
43
|
+
* Convenience: resolve a ref without specifying updateRef at all
|
|
44
|
+
* getNodeRef(nodeId?) — returns the updateRef for nodeId (or nodeName if omitted)
|
|
45
|
+
*
|
|
46
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
47
|
+
* USAGE EXAMPLES
|
|
48
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
49
|
+
*
|
|
50
|
+
* // valueSetter — using rowData from the second-argument scope:
|
|
51
|
+
* (params, { rowData, setRefValue, getNodeRef }) => {
|
|
52
|
+
* const { newValue } = params
|
|
53
|
+
* rowData.IsPublic = newValue
|
|
54
|
+
* setRefValue(params.context.updateRef, rowData, 'Id', 'IsPublic', newValue)
|
|
55
|
+
* return true
|
|
56
|
+
* }
|
|
57
|
+
*
|
|
58
|
+
* // valueSetter — same table, using getNodeRef shortcut:
|
|
59
|
+
* (params, { rowData }) => {
|
|
60
|
+
* const { newValue } = params
|
|
61
|
+
* rowData.IsPublic = newValue
|
|
62
|
+
* setUpdateRefValue(getNodeRef(), rowData, 'Id', 'IsPublic', newValue)
|
|
63
|
+
* return true
|
|
64
|
+
* }
|
|
65
|
+
*
|
|
66
|
+
* // valueSetter — update a DIFFERENT table's ref by its builder node ID:
|
|
67
|
+
* (params) => {
|
|
68
|
+
* const { newValue, data, context } = params
|
|
69
|
+
* data.Amount = newValue
|
|
70
|
+
* setRefValue(context.updateRef, data, 'Id', 'Amount', newValue, 'report-node-abc')
|
|
71
|
+
* return true
|
|
72
|
+
* }
|
|
73
|
+
*
|
|
74
|
+
* // valueGetter — read from ref, fall back to raw data:
|
|
75
|
+
* (params) => {
|
|
76
|
+
* return getRefValue(params.context.updateRef, params.data, 'Id', 'IsPublic')
|
|
77
|
+
* ?? params.data?.IsPublic
|
|
78
|
+
* }
|
|
79
|
+
*
|
|
80
|
+
* // Directly access any report's ref (e.g. from a button action):
|
|
81
|
+
* const ref = reportRefs.current['some-node-id']
|
|
82
|
+
* const changes = ref?.current ?? []
|
|
83
|
+
*
|
|
84
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
4
85
|
*/
|
|
5
86
|
|
|
6
|
-
// Import helper functions that need to be available in the converted functions
|
|
7
87
|
import {
|
|
8
88
|
setUpdateRefValue,
|
|
9
89
|
setUpdateRefRow,
|
|
@@ -13,188 +93,244 @@ import {
|
|
|
13
93
|
clearUpdateRefRow,
|
|
14
94
|
clearAllUpdateRef,
|
|
15
95
|
cloneUpdateRefToOriginal,
|
|
16
|
-
restoreUpdateRefFromOriginal
|
|
96
|
+
restoreUpdateRefFromOriginal,
|
|
17
97
|
} from './updateRefHelpers'
|
|
98
|
+
import fetchReportDataByPageId from 'services/reportData/fetchReportData'
|
|
99
|
+
|
|
100
|
+
// ─── Sentinel constant ────────────────────────────────────────────────────────
|
|
101
|
+
// Pass THIS_NODE as the `node` arg to target the current table's nodeName.
|
|
102
|
+
export const THIS_NODE = '__THIS__'
|
|
103
|
+
|
|
104
|
+
// ─── Helper factory ───────────────────────────────────────────────────────────
|
|
18
105
|
|
|
19
106
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
107
|
+
* Resolve the effective updateRef for a given node identifier.
|
|
108
|
+
* - node === undefined/null → use the passed directRef (backward compat)
|
|
109
|
+
* - node === THIS_NODE → use reportRefs.current[nodeName]
|
|
110
|
+
* - node === string → use reportRefs.current[node]
|
|
111
|
+
*
|
|
112
|
+
* Exported so other execution contexts (e.g. RowActionsCell) can reuse it.
|
|
24
113
|
*/
|
|
25
|
-
export
|
|
26
|
-
|
|
27
|
-
return
|
|
114
|
+
export function makeNodeAwareHelpers(reportRefs, nodeName) {
|
|
115
|
+
function resolveRef(directRef, node) {
|
|
116
|
+
if (!node) return directRef
|
|
117
|
+
const id = node === THIS_NODE ? nodeName : node
|
|
118
|
+
return (reportRefs?.current?.[id]) ?? directRef
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return {
|
|
122
|
+
/** Resolve a ref without needing directRef — returns the updateRef for nodeId (or nodeName) */
|
|
123
|
+
getNodeRef: (nodeId) => {
|
|
124
|
+
const id = nodeId ?? nodeName
|
|
125
|
+
return reportRefs?.current?.[id] ?? null
|
|
126
|
+
},
|
|
127
|
+
|
|
128
|
+
setRefValue: (directRef, rowData, rowUniqueId, fieldPath, newValue, node) =>
|
|
129
|
+
setUpdateRefValue(resolveRef(directRef, node), rowData, rowUniqueId, fieldPath, newValue),
|
|
130
|
+
|
|
131
|
+
setRefRow: (directRef, rowData, rowUniqueId, updates, node) =>
|
|
132
|
+
setUpdateRefRow(resolveRef(directRef, node), rowData, rowUniqueId, updates),
|
|
133
|
+
|
|
134
|
+
getRefValue: (directRef, rowData, rowUniqueId, fieldPath, node) =>
|
|
135
|
+
getUpdateRefValue(resolveRef(directRef, node), rowData, rowUniqueId, fieldPath),
|
|
136
|
+
|
|
137
|
+
hasRefValue: (directRef, rowData, rowUniqueId, fieldPath, node) =>
|
|
138
|
+
hasUpdateRefValue(resolveRef(directRef, node), rowData, rowUniqueId, fieldPath),
|
|
139
|
+
|
|
140
|
+
clearRefRow: (directRef, rowData, rowUniqueId, node) =>
|
|
141
|
+
clearUpdateRefRow(resolveRef(directRef, node), rowData, rowUniqueId),
|
|
142
|
+
|
|
143
|
+
clearAllRef: (directRef, node) =>
|
|
144
|
+
clearAllUpdateRef(resolveRef(directRef, node)),
|
|
28
145
|
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// ─── Core converter ───────────────────────────────────────────────────────────
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Convert a string function to an executable function.
|
|
152
|
+
* Injects updateRef helpers + node-aware utilities into scope.
|
|
153
|
+
*
|
|
154
|
+
* @param {string} funcString - The function as a string
|
|
155
|
+
* @param {object} [ctx] - Optional context for node-aware helpers
|
|
156
|
+
* @param {object} [ctx.reportRefs] - The live reportRefs registry (useRef)
|
|
157
|
+
* @param {string} [ctx.nodeName] - The builder node ID for this table
|
|
158
|
+
* @returns {Function|string}
|
|
159
|
+
*/
|
|
160
|
+
export const convertStringToFunction = (funcString, ctx = {}) => {
|
|
161
|
+
if (typeof funcString !== 'string' || !funcString.trim()) return funcString
|
|
162
|
+
|
|
163
|
+
const { reportRefs = null, nodeName = '', data = {}, dataRef = {}, setData = null, openDialog = null, closeDialog = null } = ctx
|
|
164
|
+
const nodeHelpers = makeNodeAwareHelpers(reportRefs, nodeName)
|
|
165
|
+
|
|
166
|
+
// ── Scope object ─────────────────────────────────────────────────────────────
|
|
167
|
+
// Passed explicitly as the second argument: (params, { data, setData, ... }) => {}
|
|
168
|
+
// Also injected into the lexical scope via new Function for backward compatibility
|
|
169
|
+
// with old single-argument functions that reference helpers directly by name.
|
|
170
|
+
const scope = {
|
|
171
|
+
// Viewer state
|
|
172
|
+
data,
|
|
173
|
+
setData: setData ?? (() => {}),
|
|
174
|
+
dataRef,
|
|
175
|
+
fetchReportData: fetchReportDataByPageId,
|
|
176
|
+
openDialog: openDialog ?? (() => {}),
|
|
177
|
+
closeDialog: closeDialog ?? (() => {}),
|
|
178
|
+
// Node-aware ref wrappers
|
|
179
|
+
setRefValue: nodeHelpers.setRefValue,
|
|
180
|
+
setRefRow: nodeHelpers.setRefRow,
|
|
181
|
+
getRefValue: nodeHelpers.getRefValue,
|
|
182
|
+
hasRefValue: nodeHelpers.hasRefValue,
|
|
183
|
+
clearRefRow: nodeHelpers.clearRefRow,
|
|
184
|
+
clearAllRef: nodeHelpers.clearAllRef,
|
|
185
|
+
getNodeRef: nodeHelpers.getNodeRef,
|
|
186
|
+
// Low-level ref helpers
|
|
187
|
+
setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue,
|
|
188
|
+
removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef,
|
|
189
|
+
cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal,
|
|
190
|
+
// Context constants
|
|
191
|
+
reportRefs, nodeName, THIS_NODE,
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
const scopeNames = Object.keys(scope)
|
|
195
|
+
const scopeValues = Object.values(scope)
|
|
29
196
|
|
|
30
197
|
try {
|
|
31
|
-
// Check if it looks like a function
|
|
32
198
|
const trimmed = funcString.trim()
|
|
33
199
|
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const wrapper = new Function(
|
|
40
|
-
'setUpdateRefValue',
|
|
41
|
-
'setUpdateRefRow',
|
|
42
|
-
'getUpdateRefValue',
|
|
43
|
-
'hasUpdateRefValue',
|
|
44
|
-
'removeUpdateRefByRowId',
|
|
45
|
-
'clearUpdateRefRow',
|
|
46
|
-
'clearAllUpdateRef',
|
|
47
|
-
'cloneUpdateRefToOriginal',
|
|
48
|
-
'restoreUpdateRefFromOriginal',
|
|
49
|
-
`"use strict";
|
|
50
|
-
const userFunc = ${trimmed};
|
|
51
|
-
return userFunc;`
|
|
52
|
-
)
|
|
53
|
-
return wrapper(setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue, removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef, cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal)
|
|
54
|
-
}
|
|
200
|
+
// Strip leading block comments (/** ... */ or /* ... */) and line comments (// ...)
|
|
201
|
+
// so the pattern check below works even when the user writes JSDoc above the function.
|
|
202
|
+
const stripped = trimmed
|
|
203
|
+
.replace(/^(\s*(\/\*[\s\S]*?\*\/|\/\/[^\n]*)\s*)+/, '')
|
|
204
|
+
.trim()
|
|
55
205
|
|
|
56
|
-
|
|
57
|
-
if (trimmed.startsWith('function')) {
|
|
58
|
-
// Create a wrapper that provides helper functions in scope
|
|
59
|
-
// eslint-disable-next-line no-new-func
|
|
60
|
-
const wrapper = new Function(
|
|
61
|
-
'setUpdateRefValue',
|
|
62
|
-
'setUpdateRefRow',
|
|
63
|
-
'getUpdateRefValue',
|
|
64
|
-
'hasUpdateRefValue',
|
|
65
|
-
'removeUpdateRefByRowId',
|
|
66
|
-
'clearUpdateRefRow',
|
|
67
|
-
'clearAllUpdateRef',
|
|
68
|
-
'cloneUpdateRefToOriginal',
|
|
69
|
-
'restoreUpdateRefFromOriginal',
|
|
70
|
-
`"use strict";
|
|
71
|
-
const userFunc = ${trimmed};
|
|
72
|
-
return userFunc;`
|
|
73
|
-
)
|
|
74
|
-
return wrapper(setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue, removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef, cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal)
|
|
75
|
-
}
|
|
206
|
+
let bodyTemplate
|
|
76
207
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
'clearUpdateRefRow',
|
|
88
|
-
'clearAllUpdateRef',
|
|
89
|
-
'cloneUpdateRefToOriginal',
|
|
90
|
-
'restoreUpdateRefFromOriginal',
|
|
91
|
-
`"use strict";
|
|
92
|
-
return function(params) {
|
|
93
|
-
${trimmed}
|
|
94
|
-
};`
|
|
95
|
-
)
|
|
96
|
-
return wrapper(setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue, removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef, cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal)
|
|
208
|
+
if (stripped.startsWith('(') && trimmed.includes('=>')) {
|
|
209
|
+
bodyTemplate = `"use strict"; const userFunc = ${trimmed}; return userFunc;`
|
|
210
|
+
} else if (stripped.startsWith('function') || stripped.startsWith('async function')) {
|
|
211
|
+
bodyTemplate = `"use strict"; const userFunc = ${trimmed}; return userFunc;`
|
|
212
|
+
} else if (stripped.startsWith('async (') || stripped.startsWith('async(')) {
|
|
213
|
+
bodyTemplate = `"use strict"; const userFunc = ${trimmed}; return userFunc;`
|
|
214
|
+
} else if (stripped.startsWith('return ')) {
|
|
215
|
+
bodyTemplate = `"use strict"; return function(params) { ${trimmed} };`
|
|
216
|
+
} else {
|
|
217
|
+
return funcString
|
|
97
218
|
}
|
|
98
219
|
|
|
99
|
-
//
|
|
100
|
-
|
|
220
|
+
// eslint-disable-next-line no-new-func
|
|
221
|
+
const userFunc = new Function(...scopeNames, bodyTemplate)(...scopeValues)
|
|
222
|
+
|
|
223
|
+
// Return an AG Grid-compatible 1-arg wrapper that passes `scope` as the
|
|
224
|
+
// explicit second argument — (params, { data, setData, rowData, ... }) => {}
|
|
225
|
+
// rowData is the current row's data object (agParams.data), injected per-call
|
|
226
|
+
// so column functions can destructure it directly without going through params.
|
|
227
|
+
return (agParams) => userFunc(agParams, { ...scope, rowData: agParams?.data })
|
|
101
228
|
} catch (e) {
|
|
102
229
|
console.error('Failed to convert string to function:', e)
|
|
103
230
|
console.error('Function string:', funcString)
|
|
104
|
-
console.error('Stack:', e.stack)
|
|
105
231
|
return funcString
|
|
106
232
|
}
|
|
107
233
|
}
|
|
108
234
|
|
|
235
|
+
// ─── Column definition processors ────────────────────────────────────────────
|
|
236
|
+
|
|
237
|
+
const FUNCTION_PROPERTIES = [
|
|
238
|
+
'valueSetter', 'valueGetter', 'valueFormatter', 'valueParser',
|
|
239
|
+
'cellRenderer', 'cellEditor', 'cellClass', 'cellStyle', 'editable',
|
|
240
|
+
'comparator', 'equals', 'keyCreator', 'filterValueGetter', 'filterParams',
|
|
241
|
+
'cellEditorParams', 'cellRendererParams', 'headerValueGetter',
|
|
242
|
+
'tooltipValueGetter', 'aggFunc', 'getQuickFilterText',
|
|
243
|
+
'suppressKeyboardEvent', 'suppressPaste', 'cellClassRules',
|
|
244
|
+
]
|
|
245
|
+
|
|
109
246
|
/**
|
|
110
|
-
* Process a column definition
|
|
111
|
-
*
|
|
112
|
-
* @
|
|
247
|
+
* Process a single column definition — convert all string functions.
|
|
248
|
+
*
|
|
249
|
+
* @param {object} colDef
|
|
250
|
+
* @param {object} [ctx] - { reportRefs, nodeName }
|
|
251
|
+
* @returns {object}
|
|
113
252
|
*/
|
|
114
|
-
export const processColumnDefinition = (colDef) => {
|
|
115
|
-
if (!colDef || typeof colDef !== 'object')
|
|
116
|
-
return colDef
|
|
117
|
-
}
|
|
253
|
+
export const processColumnDefinition = (colDef, ctx = {}) => {
|
|
254
|
+
if (!colDef || typeof colDef !== 'object') return colDef
|
|
118
255
|
|
|
119
|
-
const processed = {...colDef}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const functionProperties = [
|
|
123
|
-
'valueSetter',
|
|
124
|
-
'valueGetter',
|
|
125
|
-
'valueFormatter',
|
|
126
|
-
'valueParser',
|
|
127
|
-
'cellRenderer',
|
|
128
|
-
'cellEditor',
|
|
129
|
-
'cellClass',
|
|
130
|
-
'cellStyle',
|
|
131
|
-
'editable',
|
|
132
|
-
'comparator',
|
|
133
|
-
'equals',
|
|
134
|
-
'keyCreator',
|
|
135
|
-
'filterValueGetter',
|
|
136
|
-
'filterParams',
|
|
137
|
-
'cellEditorParams',
|
|
138
|
-
'cellRendererParams',
|
|
139
|
-
'headerValueGetter',
|
|
140
|
-
'tooltipValueGetter',
|
|
141
|
-
'aggFunc',
|
|
142
|
-
'getQuickFilterText',
|
|
143
|
-
'suppressKeyboardEvent',
|
|
144
|
-
'suppressPaste',
|
|
145
|
-
'cellClassRules'
|
|
146
|
-
]
|
|
147
|
-
|
|
148
|
-
functionProperties.forEach(prop => {
|
|
256
|
+
const processed = { ...colDef }
|
|
257
|
+
|
|
258
|
+
FUNCTION_PROPERTIES.forEach(prop => {
|
|
149
259
|
if (prop in processed && typeof processed[prop] === 'string') {
|
|
150
|
-
const converted = convertStringToFunction(processed[prop])
|
|
260
|
+
const converted = convertStringToFunction(processed[prop], ctx)
|
|
151
261
|
if (converted !== processed[prop]) {
|
|
262
|
+
if (prop === 'valueSetter' || prop === 'valueGetter') {
|
|
263
|
+
console.log(`[processColumnDef] ✅ "${prop}" on field "${processed.field}" converted to function`)
|
|
264
|
+
}
|
|
152
265
|
processed[prop] = converted
|
|
266
|
+
} else {
|
|
267
|
+
if (prop === 'valueSetter' || prop === 'valueGetter') {
|
|
268
|
+
console.warn(`[processColumnDef] ⚠️ "${prop}" on field "${processed.field}" was NOT converted — string returned as-is:`, processed[prop])
|
|
269
|
+
}
|
|
153
270
|
}
|
|
154
271
|
}
|
|
155
272
|
})
|
|
156
273
|
|
|
157
|
-
// Special handling for cellEditorParams
|
|
158
|
-
if ('cellEditorParams' in processed) {
|
|
159
|
-
|
|
160
|
-
|
|
274
|
+
// Special handling for cellEditorParams — can be a function string or plain JSON object.
|
|
275
|
+
if ('cellEditorParams' in processed && typeof processed.cellEditorParams === 'string') {
|
|
276
|
+
const converted = convertStringToFunction(processed.cellEditorParams, ctx)
|
|
277
|
+
if (converted !== processed.cellEditorParams) {
|
|
278
|
+
// Was recognised as a function string → use the converted function
|
|
279
|
+
console.log(`[processColumnDef] ✅ cellEditorParams on field "${processed.field}" converted to function`)
|
|
280
|
+
processed.cellEditorParams = converted
|
|
281
|
+
} else {
|
|
282
|
+
// Not a function — try JSON.parse so editors receive a plain object, not a string
|
|
283
|
+
try {
|
|
284
|
+
processed.cellEditorParams = JSON.parse(processed.cellEditorParams)
|
|
285
|
+
console.log(`[processColumnDef] ✅ cellEditorParams on field "${processed.field}" parsed as JSON object`)
|
|
286
|
+
} catch { /* leave as-is */ }
|
|
161
287
|
}
|
|
288
|
+
} else if ('cellEditorParams' in processed) {
|
|
289
|
+
console.log(`[processColumnDef] ℹ️ cellEditorParams on field "${processed.field}" is already type "${typeof processed.cellEditorParams}" — skipped conversion`)
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Ensure MultiSelectEditor always runs as a popup — required for AG Grid v33+.
|
|
293
|
+
// cellEditorPopup on the colDef is the authoritative way; isPopup() on the
|
|
294
|
+
// component instance alone is not reliable in modern AG Grid React.
|
|
295
|
+
if (processed.cellEditor === 'MultiSelectEditor') {
|
|
296
|
+
processed.cellEditorPopup = true
|
|
297
|
+
console.log(`[processColumnDef] ✅ cellEditorPopup=true injected for field "${processed.field}"`, {
|
|
298
|
+
cellEditorParamsType: typeof processed.cellEditorParams,
|
|
299
|
+
hasValueSetter: typeof processed.valueSetter === 'function',
|
|
300
|
+
hasValueGetter: typeof processed.valueGetter === 'function',
|
|
301
|
+
})
|
|
162
302
|
}
|
|
163
303
|
|
|
164
304
|
return processed
|
|
165
305
|
}
|
|
166
306
|
|
|
167
307
|
/**
|
|
168
|
-
* Process an array of column definitions
|
|
169
|
-
*
|
|
170
|
-
* @
|
|
308
|
+
* Process an array of column definitions.
|
|
309
|
+
*
|
|
310
|
+
* @param {Array} colDefs
|
|
311
|
+
* @param {object} [ctx] - { reportRefs, nodeName }
|
|
312
|
+
* @returns {Array}
|
|
171
313
|
*/
|
|
172
|
-
export const processColumnDefinitions = (colDefs) => {
|
|
173
|
-
if (!Array.isArray(colDefs))
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
return colDefs.map(colDef => processColumnDefinition(colDef))
|
|
314
|
+
export const processColumnDefinitions = (colDefs, ctx = {}) => {
|
|
315
|
+
if (!Array.isArray(colDefs)) return colDefs
|
|
316
|
+
return colDefs.map(colDef => processColumnDefinition(colDef, ctx))
|
|
178
317
|
}
|
|
179
318
|
|
|
180
319
|
/**
|
|
181
|
-
* Process columnsConfig array
|
|
182
|
-
*
|
|
183
|
-
* @
|
|
320
|
+
* Process columnsConfig array — [{ field, config }] format.
|
|
321
|
+
*
|
|
322
|
+
* @param {Array} columnsConfig
|
|
323
|
+
* @param {object} [ctx] - { reportRefs, nodeName }
|
|
324
|
+
* @returns {Array}
|
|
184
325
|
*/
|
|
185
|
-
export const processColumnsConfig = (columnsConfig) => {
|
|
186
|
-
if (!Array.isArray(columnsConfig))
|
|
187
|
-
return columnsConfig
|
|
188
|
-
}
|
|
326
|
+
export const processColumnsConfig = (columnsConfig, ctx = {}) => {
|
|
327
|
+
if (!Array.isArray(columnsConfig)) return columnsConfig
|
|
189
328
|
|
|
190
329
|
return columnsConfig.map(item => {
|
|
191
|
-
if (!item || !item.config)
|
|
192
|
-
return item
|
|
193
|
-
}
|
|
194
|
-
|
|
330
|
+
if (!item || !item.config) return item
|
|
195
331
|
return {
|
|
196
332
|
...item,
|
|
197
|
-
config: processColumnDefinition(item.config)
|
|
333
|
+
config: processColumnDefinition(item.config, ctx),
|
|
198
334
|
}
|
|
199
335
|
})
|
|
200
336
|
}
|
|
@@ -10,7 +10,9 @@ const CustomStatusBar = ({ api }) => {
|
|
|
10
10
|
|
|
11
11
|
const updateStatus = () => {
|
|
12
12
|
setTotalRows(api.getDisplayedRowCount());
|
|
13
|
-
|
|
13
|
+
// getSelectedRows() can return undefined when row selection is not configured
|
|
14
|
+
const selected = api.getSelectedRows?.() ?? []
|
|
15
|
+
setSelectedRows(Array.isArray(selected) ? selected.length : 0);
|
|
14
16
|
};
|
|
15
17
|
|
|
16
18
|
// Listen to row changes
|
|
@@ -105,18 +105,21 @@ const compareRowIds = (rowId1, rowId2) => {
|
|
|
105
105
|
* @returns {string} Composite key string
|
|
106
106
|
*/
|
|
107
107
|
export const getRowId = (rowData, rowUniqueId) => {
|
|
108
|
-
if (!rowData || !rowUniqueId
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
if (!rowData || !rowUniqueId) return null
|
|
109
|
+
|
|
110
|
+
// Accept both a plain string ('Id') and an array (['Id', 'SubId'])
|
|
111
|
+
const ids = Array.isArray(rowUniqueId) ? rowUniqueId : [rowUniqueId]
|
|
112
|
+
|
|
113
|
+
if (ids.length === 0) return null
|
|
111
114
|
|
|
112
115
|
// If single field, return its value directly as string
|
|
113
|
-
if (
|
|
114
|
-
const value = getNestedValue(rowData,
|
|
116
|
+
if (ids.length === 1) {
|
|
117
|
+
const value = getNestedValue(rowData, ids[0])
|
|
115
118
|
return value != null ? String(value) : null
|
|
116
119
|
}
|
|
117
120
|
|
|
118
121
|
// If multiple fields, create composite key
|
|
119
|
-
const keyParts =
|
|
122
|
+
const keyParts = ids.map(fieldPath => {
|
|
120
123
|
const value = getNestedValue(rowData, fieldPath)
|
|
121
124
|
return value != null ? String(value) : ''
|
|
122
125
|
})
|