forked from treehouse/mastodon
Change glitch-soc composer classes to match upstream
parent
c199387558
commit
0be6da42d3
|
@ -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>
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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={{
|
||||||
|
|
|
@ -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 ? [
|
||||||
|
|
|
@ -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>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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 && (
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -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} />
|
||||||
))}
|
))}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue