From c9481101536725bff568d7bd8c465863e44c76da Mon Sep 17 00:00:00 2001 From: jialin Date: Fri, 17 May 2024 17:12:17 +0800 Subject: [PATCH] chore: common components --- .../seal-form/components/wrapper.less | 110 ++++++++- .../seal-form/components/wrapper.tsx | 16 +- src/components/seal-form/input-number.tsx | 68 ++++++ src/components/seal-form/input-search.tsx | 77 +++++++ src/components/seal-form/password.tsx | 61 +++++ src/components/seal-form/seal-input.tsx | 102 +++++++-- src/components/seal-form/seal-select.tsx | 71 ++++++ src/global.less | 42 ++++ .../playground/components/params-settings.tsx | 211 +++++++++++------- src/pages/playground/index.tsx | 25 ++- src/utils/index.ts | 6 + 11 files changed, 681 insertions(+), 108 deletions(-) create mode 100644 src/components/seal-form/input-number.tsx create mode 100644 src/components/seal-form/input-search.tsx create mode 100644 src/components/seal-form/password.tsx create mode 100644 src/components/seal-form/seal-select.tsx create mode 100644 src/utils/index.ts diff --git a/src/components/seal-form/components/wrapper.less b/src/components/seal-form/components/wrapper.less index 2d1d98ef..f8f2d7b1 100644 --- a/src/components/seal-form/components/wrapper.less +++ b/src/components/seal-form/components/wrapper.less @@ -1,4 +1,6 @@ :local(.wrapper) { + @wrapheight: 54px; + @inputheight: 32px; position: relative; display: flex; flex-direction: column; @@ -10,6 +12,31 @@ border-radius: 28px; padding-inline: 12px; padding-block: 20px 0; + + &.seal-input-wrapper-disabled { + background-color: var(--ant-color-bg-container-disabled); + cursor: not-allowed; + &:hover { + border-color: var(--ant-color-border); + } + } + + &.seal-textarea-wrapper { + height: auto; + padding-bottom: 10px; + padding-right: 10px; + } + &.validate-status-error { + border-width: var(--ant-line-width); + border-style: var(--ant-line-type); + border-color: var(--ant-color-error); + &:hover { + border-color: var(--ant-color-error-border-hover); + } + &:focus-within { + border-color: var(--ant-color-error); + } + } &:hover { border-color: var(--ant-input-hover-border-color); transition: all 0.2s ease; @@ -37,13 +64,92 @@ transition: all 0.2s var(--seal-transition-func); } } - :global(.ant-input) { + // ==================== select ================== + :global(.ant-select) { + display: flex; + align-items: center; + border: none; + box-shadow: none; + height: @inputheight; + } + :global(.ant-select-selector) { + border: none !important; + padding-block: 5px; + padding-inline: 12px; + box-shadow: none !important; + } + :global(.ant-select-selection-item) { + height: @inputheight; + } + :global( + .ant-select-outlined.ant-select-disabled:not(.ant-select-customize-input) + .ant-select-selector + ) { + background-color: transparent; + } + // ==================== input ==================== + :global(.ant-input), + :global(.ant-input-password) { display: flex; align-items: center; border: none; box-shadow: none; padding-block: 5px; padding-inline: 12px; - height: 32px; + height: @inputheight; + } + :global(.ant-input-number) { + display: flex; + align-items: center; + border: none; + box-shadow: none; + padding: 0; + height: @inputheight; + } + :global(.ant-input-outlined) { + &.seal-textarea { + min-height: 100px !important; + } + } + :global(.ant-input.ant-input-disabled) { + background-color: transparent; + } + :global(input.ant-input-number-input) { + height: @inputheight; + padding-block: 5px; + padding-inline: 12px; + } + :global(.ant-input-group) { + position: static; + } + :global(.ant-input-group-addon) { + inset-inline-start: unset !important; + border-radius: 0 28px 28px 0; + width: 30px; + background-color: transparent; + } + :global(.ant-input-group-addon:hover) { + background-color: transparent !important; + } + :global(.ant-input-group-wrapper-disabled .ant-input-group-addon) { + background-color: transparent; + } + :global(.ant-input-group-wrapper-disabled .ant-input-group-addon:hover) { + background-color: transparent !important; + } + :global(.ant-input-search-button) { + position: absolute; + top: -20px; + right: -11px; + border-radius: 0 28px 28px 0 !important; + overflow: hidden; + border: none; + height: 52px; + border-left: var(--ant-line-width) var(--ant-line-type) + var(--ant-color-border); + } + :global(.ant-input-number-handler-wrap) { + top: -20px; + height: @wrapheight - 2px; } } diff --git a/src/components/seal-form/components/wrapper.tsx b/src/components/seal-form/components/wrapper.tsx index 75d4098e..aae7d699 100644 --- a/src/components/seal-form/components/wrapper.tsx +++ b/src/components/seal-form/components/wrapper.tsx @@ -4,6 +4,9 @@ interface WrapperProps { children: React.ReactNode; label: string; isFocus: boolean; + status?: string; + className?: string; + disabled?: boolean; onClick?: () => void; } @@ -11,10 +14,21 @@ const Wrapper: React.FC = ({ children, label, isFocus, + status, + className, + disabled, onClick }) => { return ( -
+