diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 0999c13..1f5fb72 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,7 +4,13 @@
-
+
+
+
+
+
+
+
@@ -56,7 +62,7 @@
"git-widget-placeholder": "main",
"ignore.virus.scanning.warn.message": "true",
"kotlin-language-version-configured": "true",
- "last_opened_file_path": "C:/Users/HP/IdeaProjects/omni-tools/src/assets",
+ "last_opened_file_path": "C:/Users/HP/IdeaProjects/omni-tools/src/components/options",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
@@ -89,11 +95,11 @@
+
-
@@ -102,7 +108,7 @@
-
+
@@ -158,11 +164,11 @@
+
-
@@ -198,14 +204,7 @@
-
-
-
- 1719171905785
-
-
-
- 1719171905785
+
@@ -591,7 +590,15 @@
1719600693979
-
+
+
+ 1719600739052
+
+
+
+ 1719600739052
+
+
@@ -635,7 +642,6 @@
-
@@ -660,7 +666,8 @@
-
+
+
diff --git a/src/components/options/SelectWithDesc.tsx b/src/components/options/SelectWithDesc.tsx
new file mode 100644
index 0000000..1b219fe
--- /dev/null
+++ b/src/components/options/SelectWithDesc.tsx
@@ -0,0 +1,46 @@
+import React from 'react';
+import {
+ Box,
+ MenuItem,
+ Select,
+ SelectChangeEvent,
+ Typography
+} from '@mui/material';
+
+interface Option {
+ label: string;
+ value: T;
+}
+
+const SelectWithDesc = ({
+ selected,
+ options,
+ onChange,
+ description
+}: {
+ selected: T;
+ options: Option[];
+ onChange: (value: T) => void;
+ description: string;
+}) => {
+ const handleChange = (event: SelectChangeEvent) => {
+ onChange(event.target.value as T);
+ };
+
+ return (
+
+
+
+ {description}
+
+
+ );
+};
+
+export default SelectWithDesc;
diff --git a/src/components/options/ToolOptionGroups.tsx b/src/components/options/ToolOptionGroups.tsx
index 5f1d4a6..3f98bbd 100644
--- a/src/components/options/ToolOptionGroups.tsx
+++ b/src/components/options/ToolOptionGroups.tsx
@@ -15,7 +15,7 @@ export default function ToolOptionGroups({
return (
{groups.map((group) => (
-
+
{group.title}
diff --git a/src/pages/list/index.ts b/src/pages/list/index.ts
index 388e39c..3b54fac 100644
--- a/src/pages/list/index.ts
+++ b/src/pages/list/index.ts
@@ -9,4 +9,15 @@ import { tool as listTruncate } from './truncate/meta';
import { tool as listShuffle } from './shuffle/meta';
import { tool as listSort } from './sort/meta';
-export const listTools = [listSort];
+export const listTools = [
+ listSort,
+ listUnwrap,
+ listReverse,
+ listFindUnique,
+ listFindMostPopular,
+ listGroup,
+ listWrap,
+ listRotate,
+ listShuffle,
+ listTruncate
+];
diff --git a/src/pages/list/sort/index.tsx b/src/pages/list/sort/index.tsx
index 5223a7e..ab1a6d2 100644
--- a/src/pages/list/sort/index.tsx
+++ b/src/pages/list/sort/index.tsx
@@ -8,6 +8,8 @@ import { Sort, SortingMethod, SplitOperatorType } from './service';
import ToolInputAndResult from '../../../components/ToolInputAndResult';
import SimpleRadio from '../../../components/options/SimpleRadio';
import TextFieldWithDesc from '../../../components/options/TextFieldWithDesc';
+import CheckboxWithDesc from '../../../components/options/CheckboxWithDesc';
+import SelectWithDesc from '../../../components/options/SelectWithDesc';
const initialValues = {
splitSeparatorType: 'symbol' as SplitOperatorType,
@@ -105,7 +107,57 @@ export default function SplitText() {
},
{
title: 'Sort method',
- component:
+ component: (
+
+ updateField('sortingMethod', value)}
+ description={'Select a sorting method.'}
+ />
+ updateField('increasing', value)}
+ description={'Select a sorting order.'}
+ />
+ updateField('caseSensitive', val)}
+ />
+
+ )
+ },
+ {
+ title: 'Sorted item properties',
+ component: (
+
+ updateField('joinSeparator', val)}
+ />
+ updateField('removeDuplicated', val)}
+ />
+
+ )
}
]}
initialValues={initialValues}