From 6130b7c538f68edc50e9deeb1c57779db68942ad Mon Sep 17 00:00:00 2001 From: Chris Hills Date: Sun, 12 Mar 2023 05:58:11 -0500 Subject: [PATCH 1/5] text field icon support --- apps/ui/package.json | 2 +- apps/ui/src/index.css | 5 -- apps/ui/src/ui/SearchTable.tsx | 2 + apps/ui/src/ui/form/TextField.css | 17 +++++++ apps/ui/src/ui/form/TextField.tsx | 80 ++++++++++++++++++------------- apps/ui/src/ui/icons.tsx | 6 +++ package-lock.json | 2 +- 7 files changed, 73 insertions(+), 41 deletions(-) create mode 100644 apps/ui/src/ui/form/TextField.css diff --git a/apps/ui/package.json b/apps/ui/package.json index dd76ca3c..f65e7afc 100644 --- a/apps/ui/package.json +++ b/apps/ui/package.json @@ -30,7 +30,7 @@ "react-popper": "^2.3.0", "react-router-dom": "^6.4.2", "react-scripts": "5.0.1", - "reactflow": "^11.3.3", + "reactflow": "11.5.6", "uuid": "^9.0.0", "web-vitals": "^2.1.4" }, diff --git a/apps/ui/src/index.css b/apps/ui/src/index.css index 42f7517b..7b86fa23 100644 --- a/apps/ui/src/index.css +++ b/apps/ui/src/index.css @@ -89,11 +89,6 @@ textarea { input:hover, textarea:hover { border-color: var(--color-grey-hard); - z-index: 2; -} - -input:focus, textarea:focus { - z-index: 2; } form .form-submit { diff --git a/apps/ui/src/ui/SearchTable.tsx b/apps/ui/src/ui/SearchTable.tsx index f8ab8ec4..abc83355 100644 --- a/apps/ui/src/ui/SearchTable.tsx +++ b/apps/ui/src/ui/SearchTable.tsx @@ -6,6 +6,7 @@ import { TagPicker } from '../views/settings/TagPicker' import { DataTable, DataTableProps } from './DataTable' import TextField from './form/TextField' import Heading from './Heading' +import { SearchIcon } from './icons' import Pagination from './Pagination' import Stack from './Stack' @@ -131,6 +132,7 @@ export function SearchTable>({ value={search} placeholder="Search..." onChange={setSearch} + icon={} />, ) } diff --git a/apps/ui/src/ui/form/TextField.css b/apps/ui/src/ui/form/TextField.css new file mode 100644 index 00000000..6cc99cff --- /dev/null +++ b/apps/ui/src/ui/form/TextField.css @@ -0,0 +1,17 @@ +.ui-text-field-icon-wrapper { + position: relative; +} + +.ui-text-field-icon-wrapper input, +.ui-text-field-icon-wrapper textarea { + padding-left: 36px; +} + +.ui-text-field-icon { + position: absolute; + top: 50%; + left: 12px; + height: 16px; + width: 16px; + transform: translate(0, -50%); +} diff --git a/apps/ui/src/ui/form/TextField.tsx b/apps/ui/src/ui/form/TextField.tsx index cf1c051a..a8079045 100644 --- a/apps/ui/src/ui/form/TextField.tsx +++ b/apps/ui/src/ui/form/TextField.tsx @@ -1,8 +1,9 @@ import clsx from 'clsx' -import { useId, Ref } from 'react' +import { useId, Ref, ReactNode } from 'react' import { FieldPath, FieldValues } from 'react-hook-form' import { snakeToTitle } from '../../utils' import { FieldProps } from './Field' +import './TextField.css' export interface TextFieldProps> extends FieldProps { type?: 'text' | 'time' | 'date' | 'datetime-local' | 'number' @@ -16,6 +17,7 @@ export interface TextFieldProps> e inputRef?: Ref min?: number max?: number + icon?: ReactNode } export default function TextField>({ @@ -36,6 +38,7 @@ export default function TextField> onFocus, placeholder, inputRef, + icon, }: TextFieldProps) { const id = useId() const formParams = form?.register(name, { disabled, required }) @@ -52,40 +55,49 @@ export default function TextField> ) } {subtitle && {subtitle}} - { - textarea - ? ( -