PromucFlow_constructor/app/client/src/utils/URLUtils.ts
albinAppsmith a1b3109449
fix: Overflow list new UI restore (#34658)
## Description

Overflow list view changes was reverted because of Anvil failures in EE.
This PR add the changes back.


Fixes #33432 

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]
> 🔴 🔴 🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9802067318>
> Commit: 18b7a5780abca4e5813d9089c31a01a31f1d348a
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9802067318&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank">Cypress dashboard</a>.
> Tags: @tag.All
> The following are new failures, please fix them before merging the PR:
<ol>
>
<li>cypress/e2e/Regression/ClientSide/PartialImportExport/PartialExport_spec.ts</ol>
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">List of identified flaky tests</a>.
> <hr>Fri, 05 Jul 2024 03:11:20 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 several new React components (`FileTab`, `AddTab`, `List`,
`ScreenModeToggle`, `EditorTabs`) to enhance the IDE tab management and
user interaction.

- **Bug Fixes**
- Improved drag-and-drop (DnD) simulation logic by using `realMouseMove`
method.

- **Refactor**
- Simplified and refactored the `FileTabs` component, improving its
encapsulation and rendering logic.
- Enhanced state and props handling across various tab components and
hooks.

- **Tests**
- Updated test IDs and test logic to ensure consistency and correctness
for tab interactions and states.
  
- **Style**
- Updated styled components, replacing tab-related styles with
list-related styles to improve UI consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-07-05 11:55:29 +05:30

46 lines
1.3 KiB
TypeScript

import _ from "lodash";
export function getQueryParams() {
const urlParams = new URLSearchParams(window.location.search);
const keys = urlParams.keys();
let key = keys.next().value;
const queryParams: Record<string, string> = {};
while (key) {
queryParams[key] = urlParams.get(key) as string;
key = keys.next().value;
}
return queryParams;
}
export function convertObjectToQueryParams(object: any): string {
if (!_.isNil(object)) {
const paramArray: string[] = _.map(_.keys(object), (key) => {
return encodeURIComponent(key) + "=" + encodeURIComponent(object[key]);
});
return "?" + _.join(paramArray, "&");
} else {
return "";
}
}
export function isValidURL(url: string): boolean {
try {
new URL(url);
return true;
} catch (e) {
return false;
}
}
export function matchesURLPattern(url: string) {
return (
url.match(
/\(?(?:(http|https|ftp|mailto|tel):\/\/)?(?:((?:[^\W\s]|\.|-|[:]{1})+)@{1})?((?:www.)?(?:[^\W\s]|\.|-)+[\.][^\W\s]{2,4}|localhost(?=\/)|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::(\d*))?([\/]?[^\s\?]*[\/]{1})*(?:\/?([^\s\n\?\[\]\{\}\#]*(?:(?=\.)){1}|[^\s\n\?\[\]\{\}\.\#]*)?([\.]{1}[^\s\?\#]*)?)?(?:\?{1}([^\s\n\#\[\]]*))?([\#][^\s\n]*)?\)?/g,
) !== null
);
}
export const sanitizeString = (str: string): string => {
return str.toLowerCase().replace(/[^a-z0-9]/g, "_");
};