diff --git a/addon-test-support/index.ts b/addon-test-support/index.ts
index 049a04b6..b9d73511 100644
--- a/addon-test-support/index.ts
+++ b/addon-test-support/index.ts
@@ -1,4 +1,5 @@
import TableManager from './table-manager';
import RowsFetcher, { AllRowsFetcher } from './rows-fetcher';
+import { setupTable } from './setup-table';
-export { TableManager, RowsFetcher, AllRowsFetcher };
+export { TableManager, RowsFetcher, AllRowsFetcher, setupTable };
diff --git a/addon-test-support/setup-table.ts b/addon-test-support/setup-table.ts
new file mode 100644
index 00000000..3642d8e3
--- /dev/null
+++ b/addon-test-support/setup-table.ts
@@ -0,0 +1,23 @@
+import { type TestContext } from '@ember/test-helpers';
+
+import TableHandler from '@upfluence/hypertable/core/handler';
+import { TableManager, RowsFetcher } from '@upfluence/hypertable/test-support';
+import sinon from 'sinon';
+
+export function setupTable(hooks: NestedHooks): void {
+ hooks.beforeEach(function (this: TestContext) {
+ this.tableManager = new TableManager();
+ this.tableRowsFetcher = new RowsFetcher();
+ this.tableHandler = new TableHandler(this, this.tableManager, this.tableRowsFetcher);
+ this.tableRows = [];
+
+ sinon.stub(this.tableRowsFetcher, 'fetch').callsFake(() => {
+ return Promise.resolve({
+ rows: this.tableRows,
+ meta: {
+ total: this.tableRows.length
+ }
+ });
+ });
+ });
+}
diff --git a/addon/components/hyper-table-v2/column.hbs b/addon/components/hyper-table-v2/column.hbs
index cfea1017..099a6812 100644
--- a/addon/components/hyper-table-v2/column.hbs
+++ b/addon/components/hyper-table-v2/column.hbs
@@ -1,6 +1,10 @@
{{yield}}
diff --git a/addon/components/hyper-table-v2/column.ts b/addon/components/hyper-table-v2/column.ts
index 29fcc940..6e8350ab 100644
--- a/addon/components/hyper-table-v2/column.ts
+++ b/addon/components/hyper-table-v2/column.ts
@@ -9,6 +9,7 @@ import { Column, FieldSize, ResolvedRenderingComponent } from '@upfluence/hypert
interface HyperTableV2ColumnArgs {
handler: TableHandler;
column: Column;
+ delegatedFiltering?: boolean;
}
export default class HyperTableV2Column extends Component
{
diff --git a/addon/components/hyper-table-v2/filtering-renderers/common/facets-loader.hbs b/addon/components/hyper-table-v2/filtering-renderers/common/facets-loader.hbs
index c1669ab7..14965a08 100644
--- a/addon/components/hyper-table-v2/filtering-renderers/common/facets-loader.hbs
+++ b/addon/components/hyper-table-v2/filtering-renderers/common/facets-loader.hbs
@@ -1,7 +1,9 @@
{{#if this.searchEnabled}}
-
+ {{#if this.displaySearchLabel}}
+
+ {{/if}}
-
diff --git a/addon/components/hyper-table-v2/filtering-renderers/common/facets-loader.ts b/addon/components/hyper-table-v2/filtering-renderers/common/facets-loader.ts
index 8d489a77..55845cbc 100644
--- a/addon/components/hyper-table-v2/filtering-renderers/common/facets-loader.ts
+++ b/addon/components/hyper-table-v2/filtering-renderers/common/facets-loader.ts
@@ -16,6 +16,7 @@ interface FacetsLoaderArgs {
facettingKey: string;
searchEnabled: boolean;
searchPlaceholder?: string;
+ displaySearchLabel?: boolean;
sortCompareFn?(a: Facet, b: Facet): number;
}
@@ -50,6 +51,10 @@ export default class HyperTableV2FacetsLoader extends Component {
- this.facets = facets.sort(this.facetsSorter);
+ this.facets = (facets ?? []).sort(this.facetsSorter);
this.filteringKey = filtering_key;
const filterForKey = this.args.column.filters.find((v) => v.key === this.filteringKey);
diff --git a/addon/components/hyper-table-v2/index.hbs b/addon/components/hyper-table-v2/index.hbs
index a1db5506..51e7ea1b 100644
--- a/addon/components/hyper-table-v2/index.hbs
+++ b/addon/components/hyper-table-v2/index.hbs
@@ -1,51 +1,57 @@
-