diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/dashboard/widgets/FilterAndColumnsSetupData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/dashboard/widgets/FilterAndColumnsSetupData.java
new file mode 100644
index 00000000..10a562a0
--- /dev/null
+++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/dashboard/widgets/FilterAndColumnsSetupData.java
@@ -0,0 +1,196 @@
+/*
+ * QQQ - Low-code Application Framework for Engineers.
+ * Copyright (C) 2021-2022. Kingsrook, LLC
+ * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
+ * contact@kingsrook.com
+ * https://github.com/Kingsrook/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package com.kingsrook.qqq.backend.core.model.dashboard.widgets;
+
+
+import java.util.List;
+
+
+/*******************************************************************************
+ ** Model containing datastructure expected by frontend filter and columns setup widget
+ **
+ *******************************************************************************/
+public class FilterAndColumnsSetupData extends QWidgetData
+{
+ private String tableName;
+ private Boolean allowVariables = false;
+ private Boolean hideColumns = false;
+ private List filterDefaultFieldNames;
+
+
+
+ /*******************************************************************************
+ **
+ *******************************************************************************/
+ public FilterAndColumnsSetupData()
+ {
+ }
+
+
+
+ /*******************************************************************************
+ **
+ *******************************************************************************/
+ public FilterAndColumnsSetupData(String tableName, Boolean allowVariables, Boolean hideColumns, List filterDefaultFieldNames)
+ {
+ this.tableName = tableName;
+ this.allowVariables = allowVariables;
+ this.hideColumns = hideColumns;
+ this.filterDefaultFieldNames = filterDefaultFieldNames;
+ }
+
+
+
+ /*******************************************************************************
+ ** Getter for type
+ **
+ *******************************************************************************/
+ public String getType()
+ {
+ return WidgetType.FILTER_AND_COLUMNS_SETUP.getType();
+ }
+
+
+
+ /*******************************************************************************
+ ** Getter for tableName
+ *******************************************************************************/
+ public String getTableName()
+ {
+ return (this.tableName);
+ }
+
+
+
+ /*******************************************************************************
+ ** Setter for tableName
+ *******************************************************************************/
+ public void setTableName(String tableName)
+ {
+ this.tableName = tableName;
+ }
+
+
+
+ /*******************************************************************************
+ ** Fluent setter for tableName
+ *******************************************************************************/
+ public FilterAndColumnsSetupData withTableName(String tableName)
+ {
+ this.tableName = tableName;
+ return (this);
+ }
+
+
+
+ /*******************************************************************************
+ ** Getter for hideColumns
+ *******************************************************************************/
+ public Boolean getHideColumns()
+ {
+ return (this.hideColumns);
+ }
+
+
+
+ /*******************************************************************************
+ ** Setter for hideColumns
+ *******************************************************************************/
+ public void setHideColumns(Boolean hideColumns)
+ {
+ this.hideColumns = hideColumns;
+ }
+
+
+
+ /*******************************************************************************
+ ** Fluent setter for hideColumns
+ *******************************************************************************/
+ public FilterAndColumnsSetupData withHideColumns(Boolean hideColumns)
+ {
+ this.hideColumns = hideColumns;
+ return (this);
+ }
+
+
+
+ /*******************************************************************************
+ ** Getter for filterDefaultFieldNames
+ *******************************************************************************/
+ public List getFilterDefaultFieldNames()
+ {
+ return (this.filterDefaultFieldNames);
+ }
+
+
+
+ /*******************************************************************************
+ ** Setter for filterDefaultFieldNames
+ *******************************************************************************/
+ public void setFilterDefaultFieldNames(List filterDefaultFieldNames)
+ {
+ this.filterDefaultFieldNames = filterDefaultFieldNames;
+ }
+
+
+
+ /*******************************************************************************
+ ** Fluent setter for filterDefaultFieldNames
+ *******************************************************************************/
+ public FilterAndColumnsSetupData withFilterDefaultFieldNames(List filterDefaultFieldNames)
+ {
+ this.filterDefaultFieldNames = filterDefaultFieldNames;
+ return (this);
+ }
+
+
+
+ /*******************************************************************************
+ ** Getter for allowVariables
+ *******************************************************************************/
+ public Boolean getAllowVariables()
+ {
+ return (this.allowVariables);
+ }
+
+
+
+ /*******************************************************************************
+ ** Setter for allowVariables
+ *******************************************************************************/
+ public void setAllowVariables(Boolean allowVariables)
+ {
+ this.allowVariables = allowVariables;
+ }
+
+
+
+ /*******************************************************************************
+ ** Fluent setter for allowVariables
+ *******************************************************************************/
+ public FilterAndColumnsSetupData withAllowVariables(Boolean allowVariables)
+ {
+ this.allowVariables = allowVariables;
+ return (this);
+ }
+
+}
diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/SavedReportsFilterAndColumnsSetupRenderer.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/SavedReportsFilterAndColumnsSetupRenderer.java
new file mode 100644
index 00000000..d7b359f3
--- /dev/null
+++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/SavedReportsFilterAndColumnsSetupRenderer.java
@@ -0,0 +1,45 @@
+/*
+ * QQQ - Low-code Application Framework for Engineers.
+ * Copyright (C) 2021-2024. Kingsrook, LLC
+ * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
+ * contact@kingsrook.com
+ * https://github.com/Kingsrook/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package com.kingsrook.qqq.backend.core.model.savedreports;
+
+
+import com.kingsrook.qqq.backend.core.actions.dashboard.widgets.AbstractWidgetRenderer;
+import com.kingsrook.qqq.backend.core.exceptions.QException;
+import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput;
+import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetOutput;
+import com.kingsrook.qqq.backend.core.model.dashboard.widgets.FilterAndColumnsSetupData;
+
+
+/*******************************************************************************
+ **
+ *******************************************************************************/
+public class SavedReportsFilterAndColumnsSetupRenderer extends AbstractWidgetRenderer
+{
+ /*******************************************************************************
+ **
+ *******************************************************************************/
+ @Override
+ public RenderWidgetOutput render(RenderWidgetInput input) throws QException
+ {
+ return (new RenderWidgetOutput(new FilterAndColumnsSetupData(null, true, false, null)));
+ }
+}
diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/SavedReportsMetaDataProvider.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/SavedReportsMetaDataProvider.java
index 5b4132c4..2b40bd86 100644
--- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/SavedReportsMetaDataProvider.java
+++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/SavedReportsMetaDataProvider.java
@@ -236,7 +236,7 @@ public class SavedReportsMetaDataProvider
.withLabel("Filters and Columns")
.withIsCard(true)
.withType(WidgetType.FILTER_AND_COLUMNS_SETUP.getType())
- .withCodeReference(new QCodeReference(DefaultWidgetRenderer.class));
+ .withCodeReference(new QCodeReference(SavedReportsFilterAndColumnsSetupRenderer.class));
}
diff --git a/qqq-dev-tools/MODULE_LIST b/qqq-dev-tools/MODULE_LIST
index cf9a6d91..156e3e08 100644
--- a/qqq-dev-tools/MODULE_LIST
+++ b/qqq-dev-tools/MODULE_LIST
@@ -9,3 +9,4 @@ qqq-middleware-picocli
qqq-middleware-slack
qqq-middleware-api
qqq-frontend-material-dashboard
+qqq-bom-pom