Skip to content

Commit 3b5082b

Browse files
authored
Merge pull request #797 from topcoder-platform/TAL-27_add-more-text
TAL-27 - add more skills placeholder -> dev
2 parents d1bda88 + d10ef10 commit 3b5082b

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

src/libs/shared/lib/components/input-skill-selector/InputSkillSelector.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ interface InputSkillSelectorProps {
3737
readonly theme?: InputMultiselectThemes
3838
readonly useWrapper?: boolean
3939
readonly dropdownIcon?: ReactNode
40+
readonly additionalPlaceholder?: string
4041
}
4142

4243
const InputSkillSelector: FC<InputSkillSelectorProps> = props => (
@@ -52,6 +53,7 @@ const InputSkillSelector: FC<InputSkillSelectorProps> = props => (
5253
theme={props.theme}
5354
useWrapper={props.useWrapper}
5455
dropdownIcon={props.dropdownIcon}
56+
additionalPlaceholder={props.additionalPlaceholder}
5557
/>
5658
)
5759

src/libs/ui/lib/components/form/form-groups/form-input/input-multiselect/InputMultiselect.module.scss

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@
2424
}
2525
}
2626

27+
.additionalPlaceholder {
28+
color: $black-60;
29+
width: 0;
30+
pointer-events: none;
31+
white-space: nowrap;
32+
}
33+
2734
.multiselect .ms {
2835
display: block;
2936

@@ -77,6 +84,7 @@
7784
grid-template-columns: 0 min-content;
7885
padding: 0;
7986
visibility: visible;
87+
order: 999;
8088
}
8189

8290
&:global(__multi-value) {
@@ -164,6 +172,9 @@
164172
color: $tc-white;
165173
}
166174
}
175+
&:global(__control--is-focused) .additionalPlaceholder {
176+
display: none;
177+
}
167178
}
168179

169180
.theme-clear.multiselect .ms {

src/libs/ui/lib/components/form/form-groups/form-input/input-multiselect/InputMultiselect.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export interface InputMultiselectProps {
3636
readonly onFetchOptions?: (query: string) => Promise<InputMultiselectOption[]>
3737
readonly options?: ReadonlyArray<InputMultiselectOption>
3838
readonly placeholder?: string
39+
readonly additionalPlaceholder?: string
3940
readonly tabIndex?: number
4041
readonly theme?: InputMultiselectThemes
4142
readonly useWrapper?: boolean
@@ -61,6 +62,18 @@ const dropdownIndicator = (dropdownIcon: ReactNode): FC => (props: any) => (
6162
</components.DropdownIndicator>
6263
)
6364

65+
// eslint-disable-next-line react/function-component-definition
66+
const valueContainer = (additionalPlaceholder: string): FC => (props: any) => (
67+
<components.ValueContainer {...props}>
68+
{props.children}
69+
{props.hasValue && additionalPlaceholder && (
70+
<span className={classNames('body-small', styles.additionalPlaceholder)}>
71+
{additionalPlaceholder}
72+
</span>
73+
)}
74+
</components.ValueContainer>
75+
)
76+
6477
const InputMultiselect: FC<InputMultiselectProps> = (props: InputMultiselectProps) => {
6578

6679
function handleOnChange(options: readonly InputMultiselectOption[]): void {
@@ -97,7 +110,11 @@ const InputMultiselect: FC<InputMultiselectProps> = (props: InputMultiselectProp
97110
isLoading={props.loading}
98111
isOptionDisabled={isOptionDisabled}
99112
isSearchable={!isOptionDisabled()}
100-
components={{ DropdownIndicator: dropdownIndicator(props.dropdownIcon), MultiValueRemove }}
113+
components={{
114+
DropdownIndicator: dropdownIndicator(props.dropdownIcon),
115+
MultiValueRemove,
116+
ValueContainer: valueContainer(props.additionalPlaceholder ?? 'Add more...'),
117+
}}
101118
value={props.value}
102119
openMenuOnClick={false}
103120
/>

0 commit comments

Comments
 (0)