Change glitch-soc composer classes to match upstream

pull/6/head
Claire 2022-11-06 13:30:37 +01:00
parent c199387558
commit 0be6da42d3
18 changed files with 272 additions and 274 deletions

View File

@ -305,12 +305,12 @@ class ComposeForm extends ImmutablePureComponent {
const countText = this.getFulltextForCharacterCounting(); const countText = this.getFulltextForCharacterCounting();
return ( return (
<div className='composer'> <div className='compose-form'>
<WarningContainer /> <WarningContainer />
<ReplyIndicatorContainer /> <ReplyIndicatorContainer />
<div className={`composer--spoiler ${spoiler ? 'composer--spoiler--visible' : ''}`} ref={this.setRef}> <div className={`spoiler-input ${spoiler ? 'spoiler-input--visible' : ''}`} ref={this.setRef}>
<AutosuggestInput <AutosuggestInput
placeholder={intl.formatMessage(messages.spoiler_placeholder)} placeholder={intl.formatMessage(messages.spoiler_placeholder)}
value={spoilerText} value={spoilerText}
@ -352,7 +352,7 @@ class ComposeForm extends ImmutablePureComponent {
</div> </div>
</AutosuggestTextarea> </AutosuggestTextarea>
<div className='composer--options-wrapper'> <div className='compose-form__buttons-wrapper'>
<OptionsContainer <OptionsContainer
advancedOptions={advancedOptions} advancedOptions={advancedOptions}
disabled={isSubmitting} disabled={isSubmitting}
@ -364,7 +364,7 @@ class ComposeForm extends ImmutablePureComponent {
sensitive={sensitive || (spoilersAlwaysOn && spoilerText && spoilerText.length > 0)} sensitive={sensitive || (spoilersAlwaysOn && spoilerText && spoilerText.length > 0)}
spoiler={spoilersAlwaysOn ? (spoilerText && spoilerText.length > 0) : spoiler} spoiler={spoilersAlwaysOn ? (spoilerText && spoilerText.length > 0) : spoiler}
/> />
<div className='compose--counter-wrapper'> <div className='character-counter__wrapper'>
<CharacterCounter text={countText} max={maxChars} /> <CharacterCounter text={countText} max={maxChars} />
</div> </div>
</div> </div>

View File

@ -16,7 +16,6 @@ import { assignHandlers } from 'flavours/glitch/utils/react_helpers';
export default class ComposerOptionsDropdown extends React.PureComponent { export default class ComposerOptionsDropdown extends React.PureComponent {
static propTypes = { static propTypes = {
active: PropTypes.bool,
disabled: PropTypes.bool, disabled: PropTypes.bool,
icon: PropTypes.string, icon: PropTypes.string,
items: PropTypes.arrayOf(PropTypes.shape({ items: PropTypes.arrayOf(PropTypes.shape({
@ -162,7 +161,6 @@ export default class ComposerOptionsDropdown extends React.PureComponent {
// Rendering. // Rendering.
render () { render () {
const { const {
active,
disabled, disabled,
title, title,
icon, icon,
@ -174,35 +172,34 @@ export default class ComposerOptionsDropdown extends React.PureComponent {
closeOnChange, closeOnChange,
} = this.props; } = this.props;
const { open, placement } = this.state; const { open, placement } = this.state;
const computedClass = classNames('composer--options--dropdown', {
active,
open,
top: placement === 'top',
});
// The result. const active = value && items.findIndex(({ name }) => name === value) === (placement === 'bottom' ? 0 : (items.length - 1));
return ( return (
<div <div
className={computedClass} className={classNames('privacy-dropdown', placement, { active: open })}
onKeyDown={this.handleKeyDown} onKeyDown={this.handleKeyDown}
> >
<IconButton <div className={classNames('privacy-dropdown__value', { active })}>
active={open || active} <IconButton
className='value' active={open}
disabled={disabled} className='privacy-dropdown__value-icon'
icon={icon} disabled={disabled}
inverted icon={icon}
onClick={this.handleToggle} inverted
onMouseDown={this.handleMouseDown} onClick={this.handleToggle}
onKeyDown={this.handleButtonKeyDown} onMouseDown={this.handleMouseDown}
onKeyPress={this.handleKeyPress} onKeyDown={this.handleButtonKeyDown}
size={18} onKeyPress={this.handleKeyPress}
style={{ size={18}
height: null, style={{
lineHeight: '27px', height: null,
}} lineHeight: '27px',
title={title} }}
/> title={title}
/>
</div>
<Overlay <Overlay
containerPadding={20} containerPadding={20}
placement={placement} placement={placement}

View File

@ -156,7 +156,7 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent
const active = (name === (this.props.value || this.state.value)); const active = (name === (this.props.value || this.state.value));
const computedClass = classNames('composer--options--dropdown--content--item', { active }); const computedClass = classNames('privacy-dropdown__option', { active });
let contents = this.props.renderItemContents && this.props.renderItemContents(item, i); let contents = this.props.renderItemContents && this.props.renderItemContents(item, i);
@ -165,7 +165,7 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent
<React.Fragment> <React.Fragment>
{icon && <Icon className='icon' fixedWidth id={icon} />} {icon && <Icon className='icon' fixedWidth id={icon} />}
<div className='content'> <div className='privacy-dropdown__option__content'>
<strong>{text}</strong> <strong>{text}</strong>
{meta} {meta}
</div> </div>
@ -218,7 +218,7 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent
// size will be used to determine the coordinate of the menu by // size will be used to determine the coordinate of the menu by
// react-overlays // react-overlays
<div <div
className='composer--options--dropdown--content' className='privacy-dropdown__dropdown'
ref={this.handleRef} ref={this.handleRef}
role='listbox' role='listbox'
style={{ style={{

View File

@ -228,7 +228,7 @@ class ComposerOptions extends ImmutablePureComponent {
// The result. // The result.
return ( return (
<div className='composer--options'> <div className='compose-form__buttons'>
<input <input
accept={acceptContentTypes} accept={acceptContentTypes}
disabled={disabled || !allowMedia} disabled={disabled || !allowMedia}
@ -309,7 +309,6 @@ class ComposerOptions extends ImmutablePureComponent {
)} )}
<LanguageDropdown /> <LanguageDropdown />
<Dropdown <Dropdown
active={advancedOptions && advancedOptions.some(value => !!value)}
disabled={disabled || isEditing} disabled={disabled || isEditing}
icon='ellipsis-h' icon='ellipsis-h'
items={advancedOptions ? [ items={advancedOptions ? [

View File

@ -48,7 +48,7 @@ class Publisher extends ImmutablePureComponent {
const { countText, disabled, intl, onSecondarySubmit, privacy, sideArm, isEditing } = this.props; const { countText, disabled, intl, onSecondarySubmit, privacy, sideArm, isEditing } = this.props;
const diff = maxChars - length(countText || ''); const diff = maxChars - length(countText || '');
const computedClass = classNames('composer--publisher', { const computedClass = classNames('compose-form__publish', {
disabled: disabled, disabled: disabled,
over: diff < 0, over: diff < 0,
}); });
@ -72,22 +72,26 @@ class Publisher extends ImmutablePureComponent {
return ( return (
<div className={computedClass}> <div className={computedClass}>
{sideArm && !isEditing && sideArm !== 'none' ? ( {sideArm && !isEditing && sideArm !== 'none' ? (
<Button <div className='compose-form__publish-button-wrapper'>
className='side_arm' <Button
disabled={disabled} className='side_arm'
onClick={onSecondarySubmit} disabled={disabled}
style={{ padding: null }} onClick={onSecondarySubmit}
text={<Icon id={privacyIcons[sideArm]} />} style={{ padding: null }}
title={`${intl.formatMessage(messages.publish)}: ${intl.formatMessage({ id: `privacy.${sideArm}.short` })}`} text={<Icon id={privacyIcons[sideArm]} />}
/> title={`${intl.formatMessage(messages.publish)}: ${intl.formatMessage({ id: `privacy.${sideArm}.short` })}`}
/>
</div>
) : null} ) : null}
<Button <div className='compose-form__publish-button-wrapper'>
className='primary' <Button
text={publishText} className='primary'
title={`${intl.formatMessage(messages.publish)}: ${intl.formatMessage({ id: `privacy.${privacy}.short` })}`} text={publishText}
onClick={this.handleSubmit} title={`${intl.formatMessage(messages.publish)}: ${intl.formatMessage({ id: `privacy.${privacy}.short` })}`}
disabled={disabled} onClick={this.handleSubmit}
/> disabled={disabled}
/>
</div>
</div> </div>
); );
}; };

View File

@ -49,10 +49,10 @@ class ReplyIndicator extends ImmutablePureComponent {
// The result. // The result.
return ( return (
<article className='composer--reply'> <article className='reply-indicator'>
<header> <header className='reply-indicator__header'>
<IconButton <IconButton
className='cancel' className='reply-indicator__cancel'
icon='times' icon='times'
onClick={this.handleClick} onClick={this.handleClick}
title={intl.formatMessage(messages.cancel)} title={intl.formatMessage(messages.cancel)}
@ -66,7 +66,7 @@ class ReplyIndicator extends ImmutablePureComponent {
)} )}
</header> </header>
<div <div
className='content translate' className='reply-indicator__content translate'
dangerouslySetInnerHTML={{ __html: content || '' }} dangerouslySetInnerHTML={{ __html: content || '' }}
/> />
{attachments.size > 0 && ( {attachments.size > 0 && (

View File

@ -38,7 +38,7 @@ class TextareaIcons extends ImmutablePureComponent {
render () { render () {
const { advancedOptions, intl } = this.props; const { advancedOptions, intl } = this.props;
return ( return (
<div className='composer--textarea--icons'> <div className='compose-form__textarea-icons'>
{advancedOptions ? iconMap.map( {advancedOptions ? iconMap.map(
([key, icon, message]) => advancedOptions.get(key) ? ( ([key, icon, message]) => advancedOptions.get(key) ? (
<span <span

View File

@ -39,17 +39,17 @@ export default class Upload extends ImmutablePureComponent {
const y = ((focusY / -2) + .5) * 100; const y = ((focusY / -2) + .5) * 100;
return ( return (
<div className='composer--upload_form--item' tabIndex='0' role='button'> <div className='compose-form__upload' tabIndex='0' role='button'>
<Motion defaultStyle={{ scale: 0.8 }} style={{ scale: spring(1, { stiffness: 180, damping: 12, }) }}> <Motion defaultStyle={{ scale: 0.8 }} style={{ scale: spring(1, { stiffness: 180, damping: 12, }) }}>
{({ scale }) => ( {({ scale }) => (
<div style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get('preview_url')})`, backgroundPosition: `${x}% ${y}%` }}> <div className='compose-form__upload-thumbnail' style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get('preview_url')})`, backgroundPosition: `${x}% ${y}%` }}>
<div className='composer--upload_form--actions'> <div className='compose-form__upload__actions'>
<button className='icon-button' onClick={this.handleUndoClick}><Icon id='times' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button> <button className='icon-button' onClick={this.handleUndoClick}><Icon id='times' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button>
{!isEditingStatus && (<button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button>)} {!isEditingStatus && (<button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button>)}
</div> </div>
{(media.get('description') || '').length === 0 && ( {(media.get('description') || '').length === 0 && (
<div className='composer--upload_form--item__warning'> <div className='compose-form__upload__warning'>
<button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='info-circle' /> <FormattedMessage id='upload_form.description_missing' defaultMessage='No description added' /></button> <button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='info-circle' /> <FormattedMessage id='upload_form.description_missing' defaultMessage='No description added' /></button>
</div> </div>
)} )}

View File

@ -14,11 +14,11 @@ export default class UploadForm extends ImmutablePureComponent {
const { mediaIds } = this.props; const { mediaIds } = this.props;
return ( return (
<div className='composer--upload_form'> <div className='compose-form__upload-wrapper'>
<UploadProgressContainer /> <UploadProgressContainer />
{mediaIds.size > 0 && ( {mediaIds.size > 0 && (
<div className='content'> <div className='compose-form__uploads-wrapper'>
{mediaIds.map(id => ( {mediaIds.map(id => (
<UploadContainer id={id} key={id} /> <UploadContainer id={id} key={id} />
))} ))}

View File

@ -29,17 +29,18 @@ export default class UploadProgress extends React.PureComponent {
} }
return ( return (
<div className='composer--upload_form--progress'> <div className='upload-progress'>
<Icon id='upload' /> <div className='upload-progress__icon'>
<Icon id='upload' />
</div>
<div className='message'> <div className='upload-progress__message'>
{message} {message}
<div className='backdrop'> <div className='upload-progress__backdrop'>
<Motion defaultStyle={{ width: 0 }} style={{ width: spring(progress) }}> <Motion defaultStyle={{ width: 0 }} style={{ width: spring(progress) }}>
{({ width }) => {({ width }) =>
(<div className='tracker' style={{ width: `${width}%` }} <div className='upload-progress__tracker' style={{ width: `${width}%` }} />
/>)
} }
</Motion> </Motion>
</div> </div>

View File

@ -15,7 +15,7 @@ export default class Warning extends React.PureComponent {
return ( return (
<Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}> <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>
{({ opacity, scaleX, scaleY }) => ( {({ opacity, scaleX, scaleY }) => (
<div className='composer--warning' style={{ opacity: opacity, transform: `scale(${scaleX}, ${scaleY})` }}> <div className='compose-form__warning' style={{ opacity: opacity, transform: `scale(${scaleX}, ${scaleY})` }}>
{message} {message}
</div> </div>
)} )}

View File

@ -29,22 +29,22 @@ $emojis-requiring-inversion: 'back' 'copyright' 'curly_loop' 'currency_exchange'
.hicolor-privacy-icons { .hicolor-privacy-icons {
.status__visibility-icon.fa-globe, .status__visibility-icon.fa-globe,
.composer--options--dropdown--content--item .fa-globe { .privacy-dropdown__option .fa-globe {
color: #1976d2; color: #1976d2;
} }
.status__visibility-icon.fa-unlock, .status__visibility-icon.fa-unlock,
.composer--options--dropdown--content--item .fa-unlock { .privacy-dropdown__option .fa-unlock {
color: #388e3c; color: #388e3c;
} }
.status__visibility-icon.fa-lock, .status__visibility-icon.fa-lock,
.composer--options--dropdown--content--item .fa-lock { .privacy-dropdown__option .fa-lock {
color: #ffa000; color: #ffa000;
} }
.status__visibility-icon.fa-envelope, .status__visibility-icon.fa-envelope,
.composer--options--dropdown--content--item .fa-envelope { .privacy-dropdown__option .fa-envelope {
color: #d32f2f; color: #d32f2f;
} }
} }

View File

@ -1,4 +1,4 @@
.composer { .compose-form {
padding: 10px; padding: 10px;
.emoji-picker-dropdown { .emoji-picker-dropdown {
@ -25,16 +25,16 @@
} }
} }
.no-reduce-motion .composer--spoiler { .no-reduce-motion .spoiler-input {
transition: height 0.4s ease, opacity 0.4s ease; transition: height 0.4s ease, opacity 0.4s ease;
} }
.composer--spoiler { .spoiler-input {
height: 0; height: 0;
transform-origin: bottom; transform-origin: bottom;
opacity: 0.0; opacity: 0.0;
&.composer--spoiler--visible { &.spoiler-input--visible {
height: 36px; height: 36px;
margin-bottom: 11px; margin-bottom: 11px;
opacity: 1.0; opacity: 1.0;
@ -64,7 +64,7 @@
} }
} }
.composer--warning { .compose-form__warning {
color: $inverted-text-color; color: $inverted-text-color;
margin-bottom: 15px; margin-bottom: 15px;
background: $ui-primary-color; background: $ui-primary-color;
@ -123,7 +123,7 @@
} }
} }
.composer--reply { .reply-indicator {
margin: 0 0 10px; margin: 0 0 10px;
border-radius: 4px; border-radius: 4px;
padding: 10px; padding: 10px;
@ -131,117 +131,117 @@
min-height: 23px; min-height: 23px;
overflow-y: auto; overflow-y: auto;
flex: 0 2 auto; flex: 0 2 auto;
}
& > header { .reply-indicator__header {
margin-bottom: 5px; margin-bottom: 5px;
overflow: hidden; overflow: hidden;
& > .account.small { color: $inverted-text-color; } & > .account.small { color: $inverted-text-color; }
}
& > .cancel { .reply-indicator__cancel {
float: right; float: right;
line-height: 24px; line-height: 24px;
}
.reply-indicator__content {
position: relative;
margin: 10px 0;
padding: 0 12px;
font-size: 14px;
line-height: 20px;
color: $inverted-text-color;
word-wrap: break-word;
font-weight: 400;
overflow: visible;
white-space: pre-wrap;
padding-top: 5px;
overflow: hidden;
p, pre, blockquote {
margin-bottom: 20px;
white-space: pre-wrap;
&:last-child {
margin-bottom: 0;
} }
} }
& > .content { h1, h2, h3, h4, h5 {
position: relative; margin-top: 20px;
margin: 10px 0; margin-bottom: 20px;
padding: 0 12px; }
font-size: 14px;
line-height: 20px; h1, h2 {
font-weight: 700;
font-size: 18px;
}
h2 {
font-size: 16px;
}
h3, h4, h5 {
font-weight: 500;
}
blockquote {
padding-left: 10px;
border-left: 3px solid $inverted-text-color;
color: $inverted-text-color; color: $inverted-text-color;
word-wrap: break-word; white-space: normal;
font-weight: 400;
overflow: visible;
white-space: pre-wrap;
padding-top: 5px;
overflow: hidden;
p, pre, blockquote { p:last-child {
margin-bottom: 20px; margin-bottom: 0;
white-space: pre-wrap;
&:last-child {
margin-bottom: 0;
}
} }
}
h1, h2, h3, h4, h5 { b, strong {
margin-top: 20px; font-weight: 700;
margin-bottom: 20px; }
em, i {
font-style: italic;
}
sub {
font-size: smaller;
vertical-align: sub;
}
sup {
font-size: smaller;
vertical-align: super;
}
ul, ol {
margin-left: 1em;
p {
margin: 0;
} }
}
h1, h2 { ul {
font-weight: 700; list-style-type: disc;
font-size: 18px; }
}
h2 { ol {
font-size: 16px; list-style-type: decimal;
} }
h3, h4, h5 { a {
font-weight: 500; color: $lighter-text-color;
} text-decoration: none;
blockquote { &:hover { text-decoration: underline }
padding-left: 10px;
border-left: 3px solid $inverted-text-color;
color: $inverted-text-color;
white-space: normal;
p:last-child { &.mention {
margin-bottom: 0; &:hover {
} text-decoration: none;
}
b, strong { span { text-decoration: underline }
font-weight: 700;
}
em, i {
font-style: italic;
}
sub {
font-size: smaller;
vertical-align: sub;
}
sup {
font-size: smaller;
vertical-align: super;
}
ul, ol {
margin-left: 1em;
p {
margin: 0;
}
}
ul {
list-style-type: disc;
}
ol {
list-style-type: decimal;
}
a {
color: $lighter-text-color;
text-decoration: none;
&:hover { text-decoration: underline }
&.mention {
&:hover {
text-decoration: none;
span { text-decoration: underline }
}
} }
} }
} }
@ -253,8 +253,12 @@
} }
} }
.compose-form__autosuggest-wrapper, .compose-form .compose-form__autosuggest-wrapper {
.autosuggest-input { position: relative;
}
.compose-form .autosuggest-textarea,
.compose-form .autosuggest-input {
position: relative; position: relative;
width: 100%; width: 100%;
@ -284,10 +288,6 @@
all: unset; all: unset;
} }
&:disabled {
background: $ui-secondary-color;
}
&:focus { &:focus {
outline: 0; outline: 0;
} }
@ -304,7 +304,7 @@
} }
} }
.composer--textarea--icons { .compose-form__textarea-icons {
display: block; display: block;
position: absolute; position: absolute;
top: 29px; top: 29px;
@ -401,25 +401,25 @@
} }
} }
.composer--upload_form { .compose-form__upload-wrapper {
overflow: hidden; overflow: hidden;
& > .content {
display: flex;
flex-direction: row;
flex-wrap: wrap;
font-family: inherit;
padding: 5px;
overflow: hidden;
}
} }
.composer--upload_form--item { .compose-form__uploads-wrapper {
display: flex;
flex-direction: row;
flex-wrap: wrap;
font-family: inherit;
padding: 5px;
overflow: hidden;
}
.compose-form__upload {
flex: 1 1 0; flex: 1 1 0;
margin: 5px; margin: 5px;
min-width: 40%; min-width: 40%;
& > div { .compose-form__upload-thumbnail {
position: relative; position: relative;
border-radius: 4px; border-radius: 4px;
height: 140px; height: 140px;
@ -459,54 +459,54 @@
} }
} }
.composer--upload_form--actions { .compose-form__upload__actions {
background: linear-gradient(180deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent); background: linear-gradient(180deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent);
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
justify-content: space-between; justify-content: space-between;
} }
.composer--upload_form--progress { .upload-progress {
display: flex; display: flex;
padding: 10px; padding: 10px;
color: $darker-text-color; color: $darker-text-color;
overflow: hidden; overflow: hidden;
& > .fa { .fa {
font-size: 34px; font-size: 34px;
margin-right: 10px; margin-right: 10px;
} }
& > .message { span {
flex: 1 1 auto; display: block;
font-size: 12px;
& > span { font-weight: 500;
display: block; text-transform: uppercase;
font-size: 12px;
font-weight: 500;
text-transform: uppercase;
}
& > .backdrop {
position: relative;
margin-top: 5px;
border-radius: 6px;
width: 100%;
height: 6px;
background: $ui-base-lighter-color;
& > .tracker {
position: absolute;
top: 0;
left: 0;
height: 6px;
border-radius: 6px;
background: $ui-highlight-color;
}
}
} }
} }
.upload-progress__message {
flex: 1 1 auto;
}
.upload-progress__backdrop {
position: relative;
margin-top: 5px;
border-radius: 6px;
width: 100%;
height: 6px;
background: $ui-base-lighter-color;
}
.upload-progress__tracker {
position: absolute;
top: 0;
left: 0;
height: 6px;
border-radius: 6px;
background: $ui-highlight-color;
}
.compose-form__modifiers { .compose-form__modifiers {
color: $inverted-text-color; color: $inverted-text-color;
font-family: inherit; font-family: inherit;
@ -514,7 +514,7 @@
background: $simple-background-color; background: $simple-background-color;
} }
.composer--options-wrapper { .compose-form__buttons-wrapper {
padding: 10px; padding: 10px;
background: darken($simple-background-color, 8%); background: darken($simple-background-color, 8%);
border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px;
@ -524,7 +524,7 @@
flex: 0 0 auto; flex: 0 0 auto;
} }
.composer--options { .compose-form__buttons {
display: flex; display: flex;
flex: 0 0 auto; flex: 0 0 auto;
@ -551,30 +551,41 @@
} }
} }
.compose--counter-wrapper { .character-counter__wrapper {
align-self: center; align-self: center;
margin-right: 4px; margin-right: 4px;
} }
.composer--options--dropdown { .privacy-dropdown.active {
&.open { .privacy-dropdown__value {
& > .value { background: $simple-background-color;
border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0;
box-shadow: 0 -4px 4px rgba($base-shadow-color, 0.1); box-shadow: 0 -4px 4px rgba($base-shadow-color, 0.1);
color: $primary-text-color;
background: $ui-highlight-color; .icon-button {
transition: none; transition: none;
} }
&.top {
& > .value { &.active {
border-radius: 0 0 4px 4px; background: $ui-highlight-color;
box-shadow: 0 4px 4px rgba($base-shadow-color, 0.1);
.icon-button {
color: $primary-text-color;
} }
} }
} }
&.top .privacy-dropdown__value {
border-radius: 0 0 4px 4px;
}
.privacy-dropdown__dropdown {
display: block;
box-shadow: 2px 4px 6px rgba($base-shadow-color, 0.1);
}
} }
.composer--options--dropdown--content { .privacy-dropdown__dropdown {
position: absolute; position: absolute;
border-radius: 4px; border-radius: 4px;
box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4);
@ -583,14 +594,14 @@
transform-origin: 50% 0; transform-origin: 50% 0;
} }
.composer--options--dropdown--content--item { .privacy-dropdown__option {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 10px; padding: 10px;
color: $inverted-text-color; color: $inverted-text-color;
cursor: pointer; cursor: pointer;
& > .content { .privacy-dropdown__option__content {
flex: 1 1 auto; flex: 1 1 auto;
color: $lighter-text-color; color: $lighter-text-color;
@ -608,7 +619,7 @@
background: $ui-highlight-color; background: $ui-highlight-color;
color: $primary-text-color; color: $primary-text-color;
& > .content { .privacy-dropdown__option__content {
color: $primary-text-color; color: $primary-text-color;
strong { color: $primary-text-color } strong { color: $primary-text-color }
@ -618,31 +629,25 @@
&.active:hover { background: lighten($ui-highlight-color, 4%) } &.active:hover { background: lighten($ui-highlight-color, 4%) }
} }
.composer--publisher { .compose-form__publish {
padding-top: 10px; display: flex;
text-align: right;
white-space: nowrap;
overflow: hidden;
justify-content: flex-end; justify-content: flex-end;
min-width: 0;
flex: 0 0 auto; flex: 0 0 auto;
column-gap: 5px;
& > .primary { .compose-form__publish-button-wrapper {
display: inline-block; overflow: hidden;
margin: 0; padding-top: 10px;
padding: 7px 10px;
text-align: center;
}
& > .side_arm { button {
display: inline-block; padding: 7px 10px;
margin: 0 5px; text-align: center;
padding: 7px 0; }
width: 36px;
text-align: center;
}
&.over { & > .side_arm {
& > .count { color: $warning-red } width: 36px;
}
} }
} }

View File

@ -1738,7 +1738,7 @@ noscript {
@import 'domains'; @import 'domains';
@import 'status'; @import 'status';
@import 'modal'; @import 'modal';
@import 'composer'; @import 'compose_form';
@import 'columns'; @import 'columns';
@import 'regeneration_indicator'; @import 'regeneration_indicator';
@import 'directory'; @import 'directory';

View File

@ -1290,11 +1290,11 @@
} }
} }
.modal-root__container .composer--options--dropdown { .modal-root__container .privacy-dropdown {
flex-grow: 0; flex-grow: 0;
} }
.modal-root__container .composer--options--dropdown--content { .modal-root__container .privacy-dropdown__dropdown {
pointer-events: auto; pointer-events: auto;
z-index: 9999; z-index: 9999;
} }

View File

@ -41,7 +41,7 @@
flex: 0 1 48px; flex: 0 1 48px;
} }
.composer { .compose-form {
flex: 1; flex: 1;
overflow-y: hidden; overflow-y: hidden;
display: flex; display: flex;
@ -59,10 +59,6 @@
.autosuggest-textarea__textarea { .autosuggest-textarea__textarea {
overflow-y: hidden; overflow-y: hidden;
} }
.compose-form__upload-thumbnail {
height: 80px;
}
} }
.navigation-panel { .navigation-panel {

View File

@ -37,7 +37,7 @@
} }
.compose-standalone { .compose-standalone {
.composer { .compose-form {
width: 400px; width: 400px;
margin: 0 auto; margin: 0 auto;
padding: 20px 0; padding: 20px 0;

View File

@ -36,15 +36,11 @@ body.rtl {
margin-left: 5px; margin-left: 5px;
} }
.composer .compose--counter-wrapper { .compose-form .character-counter__wrapper {
margin-right: 0; margin-right: 0;
margin-left: 4px; margin-left: 4px;
} }
.composer--publisher {
text-align: left;
}
.boost-modal__status-time, .boost-modal__status-time,
.favourite-modal__status-time { .favourite-modal__status-time {
float: left; float: left;