Skip to content

Commit

Permalink
Merge pull request #447 from pixiv/toshusai/fix-dropdown-selector-tex…
Browse files Browse the repository at this point in the history
…t-ellipsis

feat: enable long text in DropdownSelector
  • Loading branch information
toshusai authored Jan 24, 2024
2 parents 7fe45ae + b8d458d commit 72f9445
Show file tree
Hide file tree
Showing 5 changed files with 173 additions and 140 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,7 @@ const StyledSpan = styled.span<{ isSelected?: boolean }>`
font-size: 14px;
line-height: 22px;
color: var(--charcoal-text2);
&::before {
display: block;
width: 0;
height: 0;
content: '';
margin-top: -4px;
}
&::after {
display: block;
width: 0;
height: 0;
content: '';
margin-bottom: -4px;
}
padding: 9px 0;
display: flex;
align-items: center;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ exports[`Storyshots DropdownSelector Basic 1`] = `
box-sizing: border-box;
border: none;
cursor: pointer;
gap: 4px;
padding-right: 8px;
padding-left: 8px;
background-color: var(--charcoal-surface3);
Expand Down Expand Up @@ -64,22 +65,9 @@ exports[`Storyshots DropdownSelector Basic 1`] = `
line-height: 22px;
display: flow-root;
color: var(--charcoal-text2);
}

.c2::before {
display: block;
width: 0;
height: 0;
content: '';
margin-top: -4px;
}

.c2::after {
display: block;
width: 0;
height: 0;
content: '';
margin-bottom: -4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

.c3 {
Expand Down Expand Up @@ -149,6 +137,7 @@ exports[`Storyshots DropdownSelector Custom Children 1`] = `
box-sizing: border-box;
border: none;
cursor: pointer;
gap: 4px;
padding-right: 8px;
padding-left: 8px;
background-color: var(--charcoal-surface3);
Expand Down Expand Up @@ -183,22 +172,9 @@ exports[`Storyshots DropdownSelector Custom Children 1`] = `
line-height: 22px;
display: flow-root;
color: var(--charcoal-text2);
}

.c2::before {
display: block;
width: 0;
height: 0;
content: '';
margin-top: -4px;
}

.c2::after {
display: block;
width: 0;
height: 0;
content: '';
margin-bottom: -4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

.c3 {
Expand Down Expand Up @@ -277,6 +253,7 @@ exports[`Storyshots DropdownSelector In Form Tag 1`] = `
box-sizing: border-box;
border: none;
cursor: pointer;
gap: 4px;
padding-right: 8px;
padding-left: 8px;
background-color: var(--charcoal-surface3);
Expand Down Expand Up @@ -311,22 +288,9 @@ exports[`Storyshots DropdownSelector In Form Tag 1`] = `
line-height: 22px;
display: flow-root;
color: var(--charcoal-text2);
}

.c2::before {
display: block;
width: 0;
height: 0;
content: '';
margin-top: -4px;
}

.c2::after {
display: block;
width: 0;
height: 0;
content: '';
margin-bottom: -4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

.c3 {
Expand Down Expand Up @@ -432,6 +396,7 @@ exports[`Storyshots DropdownSelector In Modal 1`] = `
box-sizing: border-box;
border: none;
cursor: pointer;
gap: 4px;
padding-right: 8px;
padding-left: 8px;
background-color: var(--charcoal-surface3);
Expand Down Expand Up @@ -466,22 +431,9 @@ exports[`Storyshots DropdownSelector In Modal 1`] = `
line-height: 22px;
display: flow-root;
color: var(--charcoal-text2);
}

.c9::before {
display: block;
width: 0;
height: 0;
content: '';
margin-top: -4px;
}

.c9::after {
display: block;
width: 0;
height: 0;
content: '';
margin-bottom: -4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

.c10 {
Expand Down Expand Up @@ -799,6 +751,113 @@ exports[`Storyshots DropdownSelector In Modal 1`] = `
</div>
`;

exports[`Storyshots DropdownSelector Long Names 1`] = `
.c0 {
display: inline-block;
width: 100%;
}

.c0:disabled,
.c0[aria-disabled]:not([aria-disabled=false]) {
cursor: default;
opacity: 0.32;
}

.c1 {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
justify-content: space-between;
-webkit-align-items: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 40px;
width: 100%;
box-sizing: border-box;
border: none;
cursor: pointer;
gap: 4px;
padding-right: 8px;
padding-left: 8px;
background-color: var(--charcoal-surface3);
border-radius: 4px;
-webkit-transition: 0.2s box-shadow,0.2s background-color;
transition: 0.2s box-shadow,0.2s background-color;
}

.c1:disabled,
.c1[aria-disabled]:not([aria-disabled=false]) {
cursor: default;
}

.c1:not(:disabled):not([aria-disabled]):focus,
.c1[aria-disabled='false']:focus,
.c1:not(:disabled):not([aria-disabled]):active,
.c1[aria-disabled='false']:active,
.c1:not(:disabled):not([aria-disabled]):focus-visible,
.c1[aria-disabled='false']:focus-visible {
outline: none;
box-shadow: 0 0 0 4px rgba(0,150,250,0.32);
}

.c1:not(:disabled):not([aria-disabled]):hover,
.c1[aria-disabled='false']:hover {
background-color: var(--charcoal-surface3-hover);
}

.c2 {
text-align: left;
font-size: 14px;
line-height: 22px;
display: flow-root;
color: var(--charcoal-text2);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

.c3 {
color: var(--charcoal-text2);
}

<div
data-dark={false}
>
<div
style={
Object {
"width": 288,
}
}
>
<div
className="c0"
>
<button
className="c1"
onClick={[Function]}
type="button"
>
<span
className="c2"
>
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
</span>
<pixiv-icon
class="c3"
name="16/Menu"
/>
</button>
</div>
</div>
</div>
`;

exports[`Storyshots DropdownSelector Playground 1`] = `
.c0 {
cursor: pointer;
Expand Down Expand Up @@ -926,6 +985,7 @@ exports[`Storyshots DropdownSelector Playground 1`] = `
box-sizing: border-box;
border: none;
cursor: pointer;
gap: 4px;
padding-right: 8px;
padding-left: 8px;
background-color: var(--charcoal-surface3);
Expand Down Expand Up @@ -960,22 +1020,9 @@ exports[`Storyshots DropdownSelector Playground 1`] = `
line-height: 22px;
display: flow-root;
color: var(--charcoal-text2);
}

.c4::before {
display: block;
width: 0;
height: 0;
content: '';
margin-top: -4px;
}

.c4::after {
display: block;
width: 0;
height: 0;
content: '';
margin-bottom: -4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

.c5 {
Expand Down Expand Up @@ -1049,6 +1096,7 @@ exports[`Storyshots DropdownSelector Section List 1`] = `
box-sizing: border-box;
border: none;
cursor: pointer;
gap: 4px;
padding-right: 8px;
padding-left: 8px;
background-color: var(--charcoal-surface3);
Expand Down Expand Up @@ -1083,22 +1131,9 @@ exports[`Storyshots DropdownSelector Section List 1`] = `
line-height: 22px;
display: flow-root;
color: var(--charcoal-text2);
}

.c2::before {
display: block;
width: 0;
height: 0;
content: '';
margin-top: -4px;
}

.c2::after {
display: block;
width: 0;
height: 0;
content: '';
margin-bottom: -4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

.c3 {
Expand Down
33 changes: 33 additions & 0 deletions packages/react/src/components/DropdownSelector/index.story.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,39 @@ export const Basic: Story<DropdownSelectorProps> = (

Basic.args = { ...baseProps }

export const LongNames: Story<DropdownSelectorProps> = (
props: DropdownSelectorProps
) => {
const [selected, setSelected] = useState('10')
return (
<div
style={{
width: 288,
}}
>
<DropdownSelector
{...props}
onChange={(value) => {
setSelected(value)
}}
value={selected}
label="label"
>
<DropdownMenuItem value={'10'}>
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
</DropdownMenuItem>
<DropdownMenuItem value={'20'}>
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</DropdownMenuItem>
<DropdownMenuItem value={'30'}>
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
</DropdownMenuItem>
</DropdownSelector>
</div>
)
}

function PlaygroundDropdownSelector(props: Partial<DropdownSelectorProps>) {
const [selected, setSelected] = useState('10')
return (
Expand Down
Loading

0 comments on commit 72f9445

Please sign in to comment.