PromucFlow_constructor/app/client/src/widgets/TableWidgetV2/constants.ts

250 lines
6.1 KiB
TypeScript
Raw Normal View History

chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> ## Description This PR upgrades Prettier to v2 + enforces TypeScript’s [`import type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) syntax where applicable. It’s submitted as a separate PR so we can merge it easily. As a part of this PR, we reformat the codebase heavily: - add `import type` everywhere where it’s required, and - re-format the code to account for Prettier 2’s breaking changes: https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes This PR is submitted against `release` to make sure all new code by team members will adhere to new formatting standards, and we’ll have fewer conflicts when merging `bundle-optimizations` into `release`. (I’ll merge `release` back into `bundle-optimizations` once this PR is merged.) ### Why is this needed? This PR is needed because, for the Lodash optimization from https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3, we need to use `import type`. Otherwise, `babel-plugin-lodash` complains that `LoDashStatic` is not a lodash function. However, just using `import type` in the current codebase will give you this: <img width="962" alt="Screenshot 2023-03-08 at 17 45 59" src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png"> That’s because Prettier 1 can’t parse `import type` at all. To parse it, we need to upgrade to Prettier 2. ### Why enforce `import type`? Apart from just enabling `import type` support, this PR enforces specifying `import type` everywhere it’s needed. (Developers will get immediate TypeScript and ESLint errors when they forget to do so.) I’m doing this because I believe `import type` improves DX and makes refactorings easier. Let’s say you had a few imports like below. Can you tell which of these imports will increase the bundle size? (Tip: it’s not all of them!) ```ts // app/client/src/workers/Linting/utils.ts import { Position } from "codemirror"; import { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` It’s pretty hard, right? What about now? ```ts // app/client/src/workers/Linting/utils.ts import type { Position } from "codemirror"; import type { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` Now, it’s clear that only `lodash` will be bundled. This helps developers to see which imports are problematic, but it _also_ helps with refactorings. Now, if you want to see where `codemirror` is bundled, you can just grep for `import \{.*\} from "codemirror"` – and you won’t get any type-only imports. This also helps (some) bundlers. Upon transpiling, TypeScript erases type-only imports completely. In some environment (not ours), this makes the bundle smaller, as the bundler doesn’t need to bundle type-only imports anymore. ## Type of change - Chore (housekeeping or task changes that don't impact user perception) ## How Has This Been Tested? This was tested to not break the build. ### Test Plan > Add Testsmith test cases links that relate to this PR ### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) ## Checklist: ### Dev activity - [x] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag ### QA activity: - [ ] Test plan has been approved by relevant developers - [ ] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test --------- Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 11:41:47 +00:00
import type {
ColumnProperties,
CompactMode,
ReactTableFilter,
TableStyles,
SortOrderTypes,
} from "./component/Constants";
chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> ## Description This PR upgrades Prettier to v2 + enforces TypeScript’s [`import type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) syntax where applicable. It’s submitted as a separate PR so we can merge it easily. As a part of this PR, we reformat the codebase heavily: - add `import type` everywhere where it’s required, and - re-format the code to account for Prettier 2’s breaking changes: https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes This PR is submitted against `release` to make sure all new code by team members will adhere to new formatting standards, and we’ll have fewer conflicts when merging `bundle-optimizations` into `release`. (I’ll merge `release` back into `bundle-optimizations` once this PR is merged.) ### Why is this needed? This PR is needed because, for the Lodash optimization from https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3, we need to use `import type`. Otherwise, `babel-plugin-lodash` complains that `LoDashStatic` is not a lodash function. However, just using `import type` in the current codebase will give you this: <img width="962" alt="Screenshot 2023-03-08 at 17 45 59" src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png"> That’s because Prettier 1 can’t parse `import type` at all. To parse it, we need to upgrade to Prettier 2. ### Why enforce `import type`? Apart from just enabling `import type` support, this PR enforces specifying `import type` everywhere it’s needed. (Developers will get immediate TypeScript and ESLint errors when they forget to do so.) I’m doing this because I believe `import type` improves DX and makes refactorings easier. Let’s say you had a few imports like below. Can you tell which of these imports will increase the bundle size? (Tip: it’s not all of them!) ```ts // app/client/src/workers/Linting/utils.ts import { Position } from "codemirror"; import { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` It’s pretty hard, right? What about now? ```ts // app/client/src/workers/Linting/utils.ts import type { Position } from "codemirror"; import type { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` Now, it’s clear that only `lodash` will be bundled. This helps developers to see which imports are problematic, but it _also_ helps with refactorings. Now, if you want to see where `codemirror` is bundled, you can just grep for `import \{.*\} from "codemirror"` – and you won’t get any type-only imports. This also helps (some) bundlers. Upon transpiling, TypeScript erases type-only imports completely. In some environment (not ours), this makes the bundle smaller, as the bundler doesn’t need to bundle type-only imports anymore. ## Type of change - Chore (housekeeping or task changes that don't impact user perception) ## How Has This Been Tested? This was tested to not break the build. ### Test Plan > Add Testsmith test cases links that relate to this PR ### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) ## Checklist: ### Dev activity - [x] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag ### QA activity: - [ ] Test plan has been approved by relevant developers - [ ] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test --------- Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 11:41:47 +00:00
import type { WidgetProps } from "widgets/BaseWidget";
import type { WithMeta } from "widgets/MetaHOC";
import type { EventType } from "constants/AppsmithActionConstants/ActionConstants";
import { IconNames } from "@blueprintjs/icons";
chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> ## Description This PR upgrades Prettier to v2 + enforces TypeScript’s [`import type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) syntax where applicable. It’s submitted as a separate PR so we can merge it easily. As a part of this PR, we reformat the codebase heavily: - add `import type` everywhere where it’s required, and - re-format the code to account for Prettier 2’s breaking changes: https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes This PR is submitted against `release` to make sure all new code by team members will adhere to new formatting standards, and we’ll have fewer conflicts when merging `bundle-optimizations` into `release`. (I’ll merge `release` back into `bundle-optimizations` once this PR is merged.) ### Why is this needed? This PR is needed because, for the Lodash optimization from https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3, we need to use `import type`. Otherwise, `babel-plugin-lodash` complains that `LoDashStatic` is not a lodash function. However, just using `import type` in the current codebase will give you this: <img width="962" alt="Screenshot 2023-03-08 at 17 45 59" src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png"> That’s because Prettier 1 can’t parse `import type` at all. To parse it, we need to upgrade to Prettier 2. ### Why enforce `import type`? Apart from just enabling `import type` support, this PR enforces specifying `import type` everywhere it’s needed. (Developers will get immediate TypeScript and ESLint errors when they forget to do so.) I’m doing this because I believe `import type` improves DX and makes refactorings easier. Let’s say you had a few imports like below. Can you tell which of these imports will increase the bundle size? (Tip: it’s not all of them!) ```ts // app/client/src/workers/Linting/utils.ts import { Position } from "codemirror"; import { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` It’s pretty hard, right? What about now? ```ts // app/client/src/workers/Linting/utils.ts import type { Position } from "codemirror"; import type { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` Now, it’s clear that only `lodash` will be bundled. This helps developers to see which imports are problematic, but it _also_ helps with refactorings. Now, if you want to see where `codemirror` is bundled, you can just grep for `import \{.*\} from "codemirror"` – and you won’t get any type-only imports. This also helps (some) bundlers. Upon transpiling, TypeScript erases type-only imports completely. In some environment (not ours), this makes the bundle smaller, as the bundler doesn’t need to bundle type-only imports anymore. ## Type of change - Chore (housekeeping or task changes that don't impact user perception) ## How Has This Been Tested? This was tested to not break the build. ### Test Plan > Add Testsmith test cases links that relate to this PR ### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) ## Checklist: ### Dev activity - [x] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag ### QA activity: - [ ] Test plan has been approved by relevant developers - [ ] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test --------- Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 11:41:47 +00:00
import type { ColumnAction } from "components/propertyControls/ColumnActionSelectorControl";
import type { Alignment } from "@blueprintjs/core";
import type { IconName } from "@blueprintjs/icons";
import type { ButtonVariant } from "components/constants";
import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
export interface EditableCell {
column: string;
index: number;
value: string | number | null;
initialValue: string;
inputValue: string;
fix: Fixes currentRow calculation logic in table(property pane) (#35390) ## Description <ins>Problem</ins> `currentRow` variable which is availabe in property pane of col settings - is not getting correct value during runtime if the table is sorted or filtered. <ins>Root cause</ins> * We are considering `processedTableData` to get the `currentRow`. * This property is not updated during filtering and sorting, another property `filteredTableData` is updated instead. * We CANNOT use `filteredTableData` as it depends on `primaryColumns` property which we intend to update as well - this is leading to cyclic dependency during evaluations. <ins>Solution</ins> Since the problem is related to edit cases and given the constraints around using `filteredTableData` directly, we fixed the problem by adding a new property to `editableCellValue` object called `__originalIndex__`. * This property stores the index of the row being edited in `processedTableData` * On top of this change, the PR adds a migration for updating the current row binding in TableWidgetV2, ensuring accurate current row calculation and improving the functionality of the widget. * We also added unit test for migration changes. * Additionally, This pull request refactors the DSLs for TableWidgetV2 migration test cases to update the DSLs to separate folder, drastically reducing the file size to its core logic, improving the readability of the code. * We also updated relevant test cases to account for this change. [Testing plan](https://www.notion.so/appsmith/Issue-34346-currentRow-doesn-t-work-correctly-when-the-table-is-filtered-449225ae822c485493036599c2b19487) [Counter part EE pr](https://github.com/appsmithorg/appsmith-ee/pull/4879) Fixes #34346 _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/10451549845> > Commit: d1d65c6898c223bf3f6dfbfe93b8e8de214fcc7d > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10451549845&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.All` > Spec: > <hr>Mon, 19 Aug 2024 11:15:04 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [x] Yes - [ ] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **New Features** - Updated DSL migration process to support version 90, enhancing compatibility and robustness. - Introduced new migration logic for table widget data bindings, improving inline editing capabilities. - Enhanced validation logic for editable cells in table widgets, allowing for more dynamic data handling. - Added a method to discard edits in specific table cells, improving user interaction. - Introduced a new message constant for required fields, enhancing user feedback. - **Bug Fixes** - Improved validation checks for table cells based on updated indices and values. - **Tests** - Added comprehensive tests to validate migration functions related to Table Widget, ensuring all aspects function correctly post-update. - Enhanced test specifications for improved validation logic and coverage in table widget functionalities. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: sneha122 <sneha@appsmith.com>
2024-08-20 08:01:45 +00:00
[ORIGINAL_INDEX_KEY]: number;
}
export enum PaginationDirection {
INITIAL = "INITIAL",
PREVIOUS_PAGE = "PREVIOUS_PAGE",
NEXT_PAGE = "NEXT_PAGE",
}
export enum EditableCellActions {
SAVE = "SAVE",
DISCARD = "DISCARD",
}
export enum InlineEditingSaveOptions {
ROW_LEVEL = "ROW_LEVEL",
TABLE_LEVEL = "TABLE_LEVEL",
CUSTOM = "CUSTOM",
}
interface AddNewRowProps {
isAddRowInProgress: boolean;
allowAddNewRow: boolean;
onAddNewRowSave: string;
onAddNewRowDiscard: string;
defaultNewRow: Record<string, unknown>;
}
export interface TableWidgetProps
extends WidgetProps,
WithMeta,
TableStyles,
AddNewRowProps {
feat: Table one click binding for MongoDB and Postgres (#23629) > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > if no issue exists, please create an issue and ask the maintainers about this first > > #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change > Please delete options that are not relevant. - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (fix or feature that would cause existing functionality to not work as expected) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] Cypress > > #### Test Plan > One Click Binding - https://github.com/appsmithorg/TestSmith/issues/2390 > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: Vemparala Surya Vamsi <vamsi@appsmith.com>
2023-06-01 17:26:05 +00:00
pristine: boolean;
nextPageKey?: string;
prevPageKey?: string;
label: string;
searchText: string;
defaultSearchText: string;
defaultSelectedRowIndex?: number | string;
defaultSelectedRowIndices?: number[] | string;
tableData: Array<Record<string, unknown>>;
onPageChange?: string;
pageSize: number;
onRowSelected?: string;
onSearchTextChanged: string;
onSort: string;
selectedRowIndex?: number;
selectedRowIndices: number[];
serverSidePaginationEnabled?: boolean;
multiRowSelection?: boolean;
enableClientSideSearch?: boolean;
hiddenColumns?: string[];
columnOrder?: string[];
feat: added column freeze and unfreeze functionality to table widget (#18757) **PRD**: https://www.notion.so/appsmith/Ability-to-freeze-columns-dd118f7ed2e14e008ee305056b79874a?d=300f4968889244da9f737e1bfd8c06dc#2ddaf28e10a0475cb69f1af77b938d0b This PR adds the following features to the table widget: - Freeze the columns to the left or right of the table.(Both canvas and page view mode). - Unfreeze the frozen columns. (Both canvas and page view mode). - Columns that are left frozen, will get unfrozen at a position after the last left frozen column. (Both canvas and page view mode). - Columns that are right frozen, will get unfrozen at a position before the first right frozen column. (Both canvas and page view mode). - Column order can be persisted in the Page view mode. - Users can also unfreeze the columns that are frozen by the developers. - Columns that are frozen cannot be reordered(Both canvas and page view mode) - **Property pane changes (Columns property)**: - If the column is frozen to the left then that column should appear at top of the list. - If the column is frozen to the right then that column should appear at the bottom of the list. - The columns that are frozen cannot be moved or re-ordered in the list. They remain fixed in their position. - In-Page mode, If there is a change in frozen or unfrozen columns in multiple tables then the order of columns and frozen and unfrozen columns should get persisted on refresh i.e. changes should get persisted across refreshes.
2023-02-15 11:42:46 +00:00
frozenColumnIndices: Record<string, number>;
canFreezeColumn?: boolean;
columnNameMap?: { [key: string]: string };
columnTypeMap?: {
[key: string]: { type: string; format: string; inputFormat?: string };
};
columnWidthMap?: { [key: string]: number };
filters?: ReactTableFilter[];
compactMode?: CompactMode;
isSortable?: boolean;
primaryColumnId?: string;
primaryColumns: Record<string, ColumnProperties>;
derivedColumns: Record<string, ColumnProperties>;
sortOrder: {
column: string;
order: SortOrderTypes | null;
};
totalRecordsCount?: number;
transientTableData: {
[key: string]: Record<string, string>;
};
editableCell?: EditableCell;
primaryColor: string;
borderRadius: string;
boxShadow?: string;
inlineEditingSaveOption?: InlineEditingSaveOptions;
showInlineEditingOptionDropdown?: boolean;
variant?: TableVariant;
isEditableCellsValid: Record<string, boolean>;
selectColumnFilterText?: Record<string, string>;
isAddRowInProgress: boolean;
newRow: Record<string, unknown>;
firstEditableColumnIdByOrder: string;
feat: enabled server side filtering for table widget (#25732) ## Description This PR enables server side filtering for the table widget. #### PR fixes following issue(s) Fixes #25529 #### Type of change - New feature (non-breaking change which adds functionality) ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - should test that the filter apply button text color should be clear and visible - should test that the value property of `table.filters` is number when number is provided inside the filter. - should test that client side filtering is disabled when server side filtering is enabled - should test that `filters` property appears as an autocomplete. - All the cases mentioned in this [test plan](https://docs.google.com/spreadsheets/d/1TgKPH5XPzIuaHAPooYr5o5jrhpjxFhBTq_Q6wv5rnVk/edit#gid=1701564241) - [ ] Jest - [ ] Cypress - should test that server side filtering properties exists in the property pane - should test that select query gets executed on filter change and no data is filtered from client-side when serverside filtering is turned on - should test that removing the table filter executes the query - should test that data is filtered client-side when serverside filtering is turned off > > #### Test Plan > Add Testsmith test cases links that relate to this PR > > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [x] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-08-22 11:27:02 +00:00
enableServerSideFiltering: boolean;
onTableFilterUpdate: string;
feat: Update TableWidgetV2 to include customIsLoading property (#36857) ## Description <ins>Problem</ins> There are many problems with table loader logic, for which many users try to implement a modal for loader. These problems stem from dependency and delay on eval, discussed comprehensively in #12308 <ins>Solution</ins> This PR updates the TableWidgetV2 component to include a new property called `customIsLoading`. This property controls the loading state of the widget and is added to the TableWidgetProps interface. Additionally, the component's state is updated to include the `customIsLoading` property. The `contentConfig` file for the TableWidgetV2 is also modified to include the `customIsLoading` property with its corresponding label, control type, help text, and validation. These changes improve the flexibility and customization options of the TableWidgetV2 component. Fixes #12308 _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.Table" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/11456273525> > Commit: 1c6f4f9caabc3aa45ec3916e5ccb465d946ab0a1 > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=11456273525&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.Table` > Spec: > <hr>Tue, 22 Oct 2024 09:17:37 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [x] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced a new feature flag for custom loading states in the table widget. - Added properties for managing custom loading behavior in the `TableWidgetV2`. - **Bug Fixes** - Enhanced loading state management to ensure accurate representation based on new properties. - **Tests** - Added unit tests for loading behavior in the `TableWidgetV2` component, covering default and custom loading scenarios. - **Documentation** - Updated help text for properties related to loading states to improve clarity. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-10-22 09:21:45 +00:00
customIsLoading: boolean;
customIsLoadingValue: boolean;
feat: Introduce infinite scroll feature behind feature flag. (#39207) ## Description - Adding `infiniteScrollEnabled` prop to TableWidgetProps - Added feature flag: `release_tablev2_infinitescroll_enabled` to control this. Fixes #39079 _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.Table, @tag.Sanity" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/13305863325> > Commit: 182c03d37644cc0b7f5563ed5c9e59c4c06667b6 > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=13305863325&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.Table, @tag.Sanity` > Spec: > <hr>Thu, 13 Feb 2025 11:35:05 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced an option to enable infinite scrolling in table views. When activated, tables automatically adjust scrolling behavior and pagination controls, enhancing data browsing. - **Tests** - Updated test cases to verify the new infinite scrolling functionality, ensuring it is disabled by default. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-14 09:39:24 +00:00
infiniteScrollEnabled: boolean;
}
export enum TableVariantTypes {
DEFAULT = "DEFAULT",
VARIANT2 = "VARIANT2",
VARIANT3 = "VARIANT3",
}
export type TableVariant = keyof typeof TableVariantTypes;
export const ORIGINAL_INDEX_KEY = "__originalIndex__";
export const PRIMARY_COLUMN_KEY_VALUE = "__primaryKey__";
export const DEFAULT_COLUMN_WIDTH = 150;
export const COLUMN_MIN_WIDTH = 60;
feat: added column freeze and unfreeze functionality to table widget (#18757) **PRD**: https://www.notion.so/appsmith/Ability-to-freeze-columns-dd118f7ed2e14e008ee305056b79874a?d=300f4968889244da9f737e1bfd8c06dc#2ddaf28e10a0475cb69f1af77b938d0b This PR adds the following features to the table widget: - Freeze the columns to the left or right of the table.(Both canvas and page view mode). - Unfreeze the frozen columns. (Both canvas and page view mode). - Columns that are left frozen, will get unfrozen at a position after the last left frozen column. (Both canvas and page view mode). - Columns that are right frozen, will get unfrozen at a position before the first right frozen column. (Both canvas and page view mode). - Column order can be persisted in the Page view mode. - Users can also unfreeze the columns that are frozen by the developers. - Columns that are frozen cannot be reordered(Both canvas and page view mode) - **Property pane changes (Columns property)**: - If the column is frozen to the left then that column should appear at top of the list. - If the column is frozen to the right then that column should appear at the bottom of the list. - The columns that are frozen cannot be moved or re-ordered in the list. They remain fixed in their position. - In-Page mode, If there is a change in frozen or unfrozen columns in multiple tables then the order of columns and frozen and unfrozen columns should get persisted on refresh i.e. changes should get persisted across refreshes.
2023-02-15 11:42:46 +00:00
export const TABLE_COLUMN_ORDER_KEY = "tableWidgetColumnOrder";
export enum ColumnTypes {
TEXT = "text",
URL = "url",
NUMBER = "number",
IMAGE = "image",
VIDEO = "video",
DATE = "date",
BUTTON = "button",
ICON_BUTTON = "iconButton",
MENU_BUTTON = "menuButton",
SELECT = "select",
EDIT_ACTIONS = "editActions",
CHECKBOX = "checkbox",
SWITCH = "switch",
feat: Table widget currency column (#27819) ## Description Adds a new currency column type on the table widget. #### PR fixes following issue(s) Fixes #5632 > if no issue exists, please create an issue and ask the maintainers about this first > > #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change - New feature (non-breaking change which adds functionality) > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [ ] JUnit - [ ] Jest - [x] Cypress > > #### Test Plan > https://github.com/appsmithorg/TestSmith/issues/2447 > > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-11-06 05:35:26 +00:00
CURRENCY = "currency",
HTML = "html",
}
export enum ReadOnlyColumnTypes {
TEXT = "text",
URL = "url",
NUMBER = "number",
IMAGE = "image",
VIDEO = "video",
DATE = "date",
CHECKBOX = "checkbox",
SWITCH = "switch",
SELECT = "select",
HTML = "html",
}
export const ActionColumnTypes = [
ColumnTypes.BUTTON,
ColumnTypes.ICON_BUTTON,
ColumnTypes.MENU_BUTTON,
ColumnTypes.EDIT_ACTIONS,
ColumnTypes.HTML,
];
export const FilterableColumnTypes = [
ColumnTypes.TEXT,
ColumnTypes.URL,
ColumnTypes.NUMBER,
ColumnTypes.DATE,
ColumnTypes.SELECT,
ColumnTypes.CHECKBOX,
ColumnTypes.SWITCH,
ColumnTypes.HTML,
];
export const DEFAULT_BUTTON_COLOR = "rgb(3, 179, 101)";
export const DEFAULT_BUTTON_LABEL = "Action";
export const DEFAULT_MENU_VARIANT = "PRIMARY";
export const DEFAULT_MENU_BUTTON_LABEL = "Open menu";
export interface TransientDataPayload {
[key: string]: string | number | boolean;
__originalIndex__: number;
}
export interface OnColumnEventArgs {
rowIndex: number;
action: string;
onComplete?: () => void;
triggerPropertyName: string;
eventType: EventType;
row?: Record<string, unknown>;
additionalData?: Record<string, unknown>;
}
export const ICON_NAMES = Object.keys(IconNames).map(
(name: string) => IconNames[name as keyof typeof IconNames],
);
export type ButtonColumnActions = ColumnAction & {
eventType: EventType;
iconName?: IconName;
variant: ButtonVariant;
backgroundColor?: string;
iconAlign?: Alignment;
borderRadius?: string;
isVisible?: boolean;
isDisabled?: boolean;
boxShadow?: string;
};
export enum DateInputFormat {
EPOCH = "Epoch",
MILLISECONDS = "Milliseconds",
}
fix: Invalid Date Display in Table Widget's Date Column When Using Unix Timestamp (ms) (#36455) ## Description **Problem** When populating a table widget with data that includes dates in Unix timestamp (milliseconds) format, setting the column type to "Date," the input format to "Unix timestamp (ms)," and selecting a display format leads to an issue during inline editing. While the date picker behaves correctly, selecting a new date results in the table cell showing an "Invalid Date" error. **Root Cause** The platform currently uses DateInputFormat.MILLISECONDS for Unix timestamp (ms) formatting. However, this value is not a valid option for the moment.format() function, which expects the input format to be 'x' for Unix timestamps in milliseconds. This mismatch leads to the "Invalid Date" error. **Solution** Modify the logic to map DateInputFormat.MILLISECONDS to the correct moment format string 'x'. Adjust the table's transformDataPureFn to correctly process and display dates in Unix timestamp (ms) format after inline edits, ensuring the moment library can handle the input properly. **Outcome** This fix ensures that when a user selects a date via the date picker in inline editing mode, the selected date is displayed correctly in the table without any errors. Fixes #35631, #25081 ## Automation /ok-to-test tags="@tag.Sanity, @tag.Binding, @tag.Table, @tag.Datepicker" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/11101758400> > Commit: 6a3cae774f3824bd2ee126b501bfa4b6d71ae0c8 > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=11101758400&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.Sanity, @tag.Binding, @tag.Table, @tag.Datepicker` > Spec: > <hr>Mon, 30 Sep 2024 08:54:58 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **New Features** - Enhanced date column editing in table widgets to accept Unix timestamps in milliseconds without errors. - Introduced a new enumeration for improved date formatting options. - Added mock data structures for testing various date formats and transformations in the table widget. - New method for generating formatted date strings for tomorrow in both verbose and ISO formats. - **Bug Fixes** - Improved validation logic for date inputs in the table, ensuring proper handling of different date formats. - **Tests** - Added new test cases to validate date handling and input formats in the table widget. - Introduced a new test suite for transforming table data based on specified column metadata. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-09-30 09:02:42 +00:00
export enum MomentDateInputFormat {
MILLISECONDS = "x",
SECONDS = "X",
}
fix: Fixes currentRow calculation logic in table(property pane) (#35390) ## Description <ins>Problem</ins> `currentRow` variable which is availabe in property pane of col settings - is not getting correct value during runtime if the table is sorted or filtered. <ins>Root cause</ins> * We are considering `processedTableData` to get the `currentRow`. * This property is not updated during filtering and sorting, another property `filteredTableData` is updated instead. * We CANNOT use `filteredTableData` as it depends on `primaryColumns` property which we intend to update as well - this is leading to cyclic dependency during evaluations. <ins>Solution</ins> Since the problem is related to edit cases and given the constraints around using `filteredTableData` directly, we fixed the problem by adding a new property to `editableCellValue` object called `__originalIndex__`. * This property stores the index of the row being edited in `processedTableData` * On top of this change, the PR adds a migration for updating the current row binding in TableWidgetV2, ensuring accurate current row calculation and improving the functionality of the widget. * We also added unit test for migration changes. * Additionally, This pull request refactors the DSLs for TableWidgetV2 migration test cases to update the DSLs to separate folder, drastically reducing the file size to its core logic, improving the readability of the code. * We also updated relevant test cases to account for this change. [Testing plan](https://www.notion.so/appsmith/Issue-34346-currentRow-doesn-t-work-correctly-when-the-table-is-filtered-449225ae822c485493036599c2b19487) [Counter part EE pr](https://github.com/appsmithorg/appsmith-ee/pull/4879) Fixes #34346 _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/10451549845> > Commit: d1d65c6898c223bf3f6dfbfe93b8e8de214fcc7d > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10451549845&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.All` > Spec: > <hr>Mon, 19 Aug 2024 11:15:04 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [x] Yes - [ ] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **New Features** - Updated DSL migration process to support version 90, enhancing compatibility and robustness. - Introduced new migration logic for table widget data bindings, improving inline editing capabilities. - Enhanced validation logic for editable cells in table widgets, allowing for more dynamic data handling. - Added a method to discard edits in specific table cells, improving user interaction. - Introduced a new message constant for required fields, enhancing user feedback. - **Bug Fixes** - Improved validation checks for table cells based on updated indices and values. - **Tests** - Added comprehensive tests to validate migration functions related to Table Widget, ensuring all aspects function correctly post-update. - Enhanced test specifications for improved validation logic and coverage in table widget functionalities. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: sneha122 <sneha@appsmith.com>
2024-08-20 08:01:45 +00:00
export const defaultEditableCell: EditableCell = {
column: "",
index: -1,
inputValue: "",
value: "",
initialValue: "",
fix: Fixes currentRow calculation logic in table(property pane) (#35390) ## Description <ins>Problem</ins> `currentRow` variable which is availabe in property pane of col settings - is not getting correct value during runtime if the table is sorted or filtered. <ins>Root cause</ins> * We are considering `processedTableData` to get the `currentRow`. * This property is not updated during filtering and sorting, another property `filteredTableData` is updated instead. * We CANNOT use `filteredTableData` as it depends on `primaryColumns` property which we intend to update as well - this is leading to cyclic dependency during evaluations. <ins>Solution</ins> Since the problem is related to edit cases and given the constraints around using `filteredTableData` directly, we fixed the problem by adding a new property to `editableCellValue` object called `__originalIndex__`. * This property stores the index of the row being edited in `processedTableData` * On top of this change, the PR adds a migration for updating the current row binding in TableWidgetV2, ensuring accurate current row calculation and improving the functionality of the widget. * We also added unit test for migration changes. * Additionally, This pull request refactors the DSLs for TableWidgetV2 migration test cases to update the DSLs to separate folder, drastically reducing the file size to its core logic, improving the readability of the code. * We also updated relevant test cases to account for this change. [Testing plan](https://www.notion.so/appsmith/Issue-34346-currentRow-doesn-t-work-correctly-when-the-table-is-filtered-449225ae822c485493036599c2b19487) [Counter part EE pr](https://github.com/appsmithorg/appsmith-ee/pull/4879) Fixes #34346 _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/10451549845> > Commit: d1d65c6898c223bf3f6dfbfe93b8e8de214fcc7d > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10451549845&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.All` > Spec: > <hr>Mon, 19 Aug 2024 11:15:04 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [x] Yes - [ ] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **New Features** - Updated DSL migration process to support version 90, enhancing compatibility and robustness. - Introduced new migration logic for table widget data bindings, improving inline editing capabilities. - Enhanced validation logic for editable cells in table widgets, allowing for more dynamic data handling. - Added a method to discard edits in specific table cells, improving user interaction. - Introduced a new message constant for required fields, enhancing user feedback. - **Bug Fixes** - Improved validation checks for table cells based on updated indices and values. - **Tests** - Added comprehensive tests to validate migration functions related to Table Widget, ensuring all aspects function correctly post-update. - Enhanced test specifications for improved validation logic and coverage in table widget functionalities. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: sneha122 <sneha@appsmith.com>
2024-08-20 08:01:45 +00:00
[ORIGINAL_INDEX_KEY]: -1,
};
fix: Table breaks on adding binding to column name (#20686) ## Description When user adds any sort of binding to the column name of a table from property pane Columns section, the table breaks. This was happening because of the column label getting stored as undefined or as an object that the binding evaluates to. Only string values are expected in column label. Hence the table was breaking for non string values of column label. This PR fixes this issue by replacing the column name with a default text "customColumn" whenever the column label is not of type string https://www.loom.com/share/1c5feab1aafa43abaac757d853a02770 Fixes #20663 ## Type of change - Bug fix (non-breaking change which fixes an issue) ## How Has This Been Tested? - Cypress ### Test Plan > https://github.com/appsmithorg/TestSmith/issues/2188 ### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) ## Checklist: ### Dev activity - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag ### QA activity: - [x] Test plan has been approved by relevant developers - [x] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test
2023-02-22 15:32:05 +00:00
export const DEFAULT_COLUMN_NAME = "Table Column";
revert: "chore: Remove server side filtering flag (#27663)" (#27927) This reverts commit eb567c0af5c80711821630c11aa749d9bd1d7856. ## Description This PR moves the server-side filtering feature back to under a feature flag by reverting #27663. We feel that we are not ready to release this feature to the public yet. #### PR fixes following issue(s) Fixes # (issue number) > if no issue exists, please create an issue and ask the maintainers about this first > > #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change > Please delete options that are not relevant. - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (fix or feature that would cause existing functionality to not work as expected) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [ ] Manual - [ ] JUnit - [ ] Jest - [ ] Cypress > > #### Test Plan > Add Testsmith test cases links that relate to this PR > > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-10-12 08:24:03 +00:00
export const ALLOW_TABLE_WIDGET_SERVER_SIDE_FILTERING =
FEATURE_FLAG["release_table_serverside_filtering_enabled"];
feat: Introduce infinite scroll feature behind feature flag. (#39207) ## Description - Adding `infiniteScrollEnabled` prop to TableWidgetProps - Added feature flag: `release_tablev2_infinitescroll_enabled` to control this. Fixes #39079 _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.Table, @tag.Sanity" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/13305863325> > Commit: 182c03d37644cc0b7f5563ed5c9e59c4c06667b6 > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=13305863325&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.Table, @tag.Sanity` > Spec: > <hr>Thu, 13 Feb 2025 11:35:05 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced an option to enable infinite scrolling in table views. When activated, tables automatically adjust scrolling behavior and pagination controls, enhancing data browsing. - **Tests** - Updated test cases to verify the new infinite scrolling functionality, ensuring it is disabled by default. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-14 09:39:24 +00:00
export const INFINITE_SCROLL_ENABLED =
FEATURE_FLAG["release_tablev2_infinitescroll_enabled"];