Skip to content

Commit 649561a

Browse files
author
Hector Arce De Las Heras
committed
Improve input mixin for icons
1 parent 31ff0c8 commit 649561a

File tree

1 file changed

+46
-4
lines changed

1 file changed

+46
-4
lines changed

src/styles/mixins/input.mixin.ts

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import { CSSProp, css } from 'styled-components';
22

3-
import { InputBasicStateProps, InputState, LABEL_TYPE } from '@/components/input/types';
3+
import {
4+
InputBasicStateProps,
5+
InputIconPosition,
6+
InputState,
7+
LABEL_TYPE,
8+
} from '@/components/input/types';
49
import { InputStyledProps, LabelStyledProps } from '@/components/input/types/inputStyledPropsType';
510
import { getTypographyStyles } from '@/utils';
611
import { pxToRem } from '@/utils/pxToRem/pxToRem';
@@ -129,6 +134,7 @@ export const mapLabelTypeStyles = (props: LabelStyledProps): CSSProp => {
129134
display: flex;
130135
align-items: center;
131136
flex-wrap: wrap;
137+
justify-content: ${props.styles?.labelContainer?.justify_content};
132138
133139
label {
134140
${labelStandardMixin()}
@@ -164,13 +170,49 @@ export const mapBaseStyles = ({
164170
opacity: ${styles?.[state]?.inputContainer?.opacity};
165171
`;
166172

167-
export const getPaddingRight = (styles?: InputBasicStateProps): CSSProp => {
168-
const paddingRight = styles?.inputContainer?.padding?.split(' ')[1] || null;
173+
// deprecated - remove this `getIconPaddingDeprecated` function when icon prop is removed
174+
export const getIconPaddingDeprecated = (
175+
position?: InputIconPosition,
176+
styles?: InputBasicStateProps
177+
): CSSProp => {
178+
const padding = styles?.inputContainer?.padding?.split(' ')[1] || null;
179+
const iconWidth = styles?.inputIcon?.width;
180+
181+
if (position === InputIconPosition.RIGHT) {
182+
return css`
183+
padding-right: calc(${padding} + ${iconWidth});
184+
`;
185+
}
169186
return css`
170-
padding-right: calc(${paddingRight} + ${styles?.inputIcon?.width});
187+
padding-left: calc(${padding} + ${iconWidth});
171188
`;
172189
};
173190

191+
export const getIconPadding = (
192+
leftIcon?: boolean,
193+
rightIcon?: boolean,
194+
styles?: InputBasicStateProps
195+
): CSSProp | undefined => {
196+
const padding = styles?.inputContainer?.padding?.split(' ')[1] || null;
197+
const iconWidth = styles?.inputIcon?.width;
198+
199+
if (leftIcon && rightIcon) {
200+
return css`
201+
padding-left: calc(${padding} + ${iconWidth});
202+
padding-right: calc(${padding} + ${iconWidth});
203+
`;
204+
} else if (leftIcon) {
205+
return css`
206+
padding-left: calc(${padding} + ${iconWidth});
207+
`;
208+
} else if (rightIcon) {
209+
return css`
210+
padding-right: calc(${padding} + ${iconWidth});
211+
`;
212+
}
213+
return undefined;
214+
};
215+
174216
export const mapVariableStyles = (styles?: InputBasicStateProps): CSSProp => css`
175217
${getTypographyStyles(styles?.input)};
176218
background-color: ${styles?.inputContainer?.background_color};

0 commit comments

Comments
 (0)