Compare commits

..

No commits in common. "83e3a6c62835f5e33f7cf887d71e3ee124888201" and "4dbb275c48d35eaa69f8724a13711deb354744e7" have entirely different histories.

24 changed files with 462 additions and 470 deletions

View file

@ -53,8 +53,7 @@ Object.keys(proxyTable).forEach(function (context) {
if (typeof options === 'string') {
options = { target: options }
}
options.pathFilter = context
app.use(proxyMiddleware.createProxyMiddleware(options))
app.use(proxyMiddleware.createProxyMiddleware(context, options))
})
// handle fallback for HTML5 history API

View file

@ -51,10 +51,10 @@
"vuex": "4.1.0"
},
"devDependencies": {
"@babel/core": "7.26.8",
"@babel/eslint-parser": "7.26.8",
"@babel/plugin-transform-runtime": "7.26.8",
"@babel/preset-env": "7.26.8",
"@babel/core": "7.26.7",
"@babel/eslint-parser": "7.26.5",
"@babel/plugin-transform-runtime": "7.25.9",
"@babel/preset-env": "7.26.7",
"@babel/register": "7.25.9",
"@intlify/vue-i18n-loader": "5.0.1",
"@ungap/event-target": "0.2.4",
@ -78,7 +78,7 @@
"eslint-config-standard": "17.1.0",
"eslint-formatter-friendly": "7.0.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-n": "17.15.1",
"eslint-plugin-n": "15.7.0",
"eslint-plugin-promise": "7.2.1",
"eslint-plugin-vue": "9.32.0",
"eslint-webpack-plugin": "4.2.0",
@ -86,7 +86,7 @@
"express": "4.21.2",
"function-bind": "1.1.2",
"html-webpack-plugin": "5.6.3",
"http-proxy-middleware": "3.0.3",
"http-proxy-middleware": "2.0.7",
"iso-639-1": "3.1.5",
"json-loader": "0.5.7",
"karma": "6.4.4",
@ -104,7 +104,7 @@
"nightwatch": "2.6.25",
"opn": "5.5.0",
"ora": "0.4.1",
"postcss": "8.5.2",
"postcss": "8.5.1",
"postcss-html": "^1.5.0",
"postcss-loader": "7.3.4",
"postcss-scss": "^4.0.6",

View file

@ -1,6 +1,6 @@
// stylelint-disable rscss/class-format
/* stylelint-disable no-descending-specificity */
@use "panel";
@import "./panel";
:root {
--status-margin: 0.75em;

View file

@ -4,7 +4,7 @@ export default {
notEditable: true,
validInnerComponents: [
'Border',
'Button',
'ButtonUnstyled',
'Input'
],
defaultRules: [
@ -14,7 +14,7 @@ export default {
}
},
{
component: 'Button',
component: 'ButtonUnstyled',
parent: { component: 'Attachment' },
directives: {
background: '#FFFFFF',

View file

@ -1,7 +1,7 @@
<template>
<button
v-if="usePlaceholder"
class="Attachment -placeholder button-default"
class="Attachment -placeholder button-unstyled"
:class="classNames"
@click="openModal"
>
@ -23,7 +23,7 @@
>
<button
v-if="remove"
class="button-default attachment-button"
class="button-unstyled attachment-button"
@click.prevent="onRemove"
>
<FAIcon icon="trash-alt" />
@ -81,7 +81,7 @@
>
<button
v-if="type === 'flash' && flashLoaded"
class="button-default attachment-button"
class="button-unstyled attachment-button"
:title="$t('status.attachment_stop_flash')"
@click.prevent="stopFlash"
>
@ -89,7 +89,7 @@
</button>
<button
v-if="attachment.description && size !== 'small' && !edit && type !== 'unknown'"
class="button-default attachment-button"
class="button-unstyled attachment-button"
:title="$t('status.show_attachment_description')"
@click.prevent="toggleDescription"
>
@ -97,7 +97,7 @@
</button>
<button
v-if="!useModal && type !== 'unknown'"
class="button-default attachment-button"
class="button-unstyled attachment-button"
:title="$t('status.show_attachment_in_modal')"
@click.prevent="openModalForce"
>
@ -105,7 +105,7 @@
</button>
<button
v-if="nsfw && hideNsfwLocal"
class="button-default attachment-button"
class="button-unstyled attachment-button"
:title="$t('status.hide_attachment')"
@click.prevent="toggleHidden"
>
@ -113,7 +113,7 @@
</button>
<button
v-if="shiftUp"
class="button-default attachment-button"
class="button-unstyled attachment-button"
:title="$t('status.move_up')"
@click.prevent="onShiftUp"
>
@ -121,7 +121,7 @@
</button>
<button
v-if="shiftDn"
class="button-default attachment-button"
class="button-unstyled attachment-button"
:title="$t('status.move_down')"
@click.prevent="onShiftDn"
>
@ -129,7 +129,7 @@
</button>
<button
v-if="remove"
class="button-default attachment-button"
class="button-unstyled attachment-button"
:title="$t('status.remove_attachment')"
@click.prevent="onRemove"
>

View file

@ -95,4 +95,6 @@
</template>
<script src="./chat.js"></script>
<style src="./chat.scss" lang="scss" />
<style lang="scss">
@import "./chat";
</style>

View file

@ -47,4 +47,6 @@
<script src="./chat_list_item.js"></script>
<style src="./chat_list_item.scss" lang="scss" />
<style lang="scss">
@import "./chat_list_item";
</style>

View file

@ -98,5 +98,7 @@
</template>
<script src="./chat_message.js"></script>
<style lang="scss">
@import "./chat_message";
<style src="./chat_message.scss" lang="scss" />
</style>

View file

@ -47,5 +47,6 @@
</template>
<script src="./chat_new.js"></script>
<style src="./chat_new.scss" lang="scss" />
<style lang="scss">
@import "./chat_new";
</style>

View file

@ -63,6 +63,8 @@ export default {
</script>
<style lang="scss">
@import "../../mixins";
.checkbox {
position: relative;
display: inline-block;

View file

@ -1,121 +0,0 @@
@use "../../mixins";
.EmojiReactions {
display: flex;
margin-top: 0.25em;
flex-wrap: wrap;
--emoji-size: calc(var(--emojiSize, 1.25em) * var(--emojiReactionsScale, 1));
.emoji-reaction-container {
display: flex;
align-items: stretch;
margin-top: 0.5em;
margin-right: 0.5em;
.emoji-reaction-popover {
padding: 0;
.emoji-reaction-count-button {
margin: 0;
height: 100%;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
box-sizing: border-box;
min-width: 2em;
display: inline-flex;
justify-content: center;
align-items: center;
}
}
}
.emoji-reaction {
padding-left: 0.5em;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
margin: 0;
.reaction-emoji {
width: var(--emoji-size);
height: var(--emoji-size);
margin-right: 0.25em;
line-height: var(--emoji-size);
display: flex;
justify-content: center;
align-items: center;
--_still_image-label-scale: 0.3;
}
.reaction-emoji-content {
max-width: 100%;
max-height: 100%;
width: var(--emoji-size);
height: var(--emoji-size);
line-height: inherit;
overflow: hidden;
font-size: calc(var(--emoji-size) * 0.8);
margin: 0;
img {
object-fit: contain;
}
}
&:focus {
outline: none;
}
.svg-inline--fa {
color: var(--text);
}
&.-picked-reaction {
.svg-inline--fa {
color: var(--accent);
}
}
@include mixins.unfocused-style {
.focus-marker {
visibility: hidden;
}
.active-marker {
visibility: visible;
}
}
@include mixins.focused-style {
.svg-inline--fa {
color: var(--accent);
}
.focus-marker {
visibility: visible;
}
.active-marker {
visibility: hidden;
}
}
}
.emoji-reaction-expand {
padding: 0 0.5em;
margin-right: 0.5em;
margin-top: 0.5em;
display: flex;
align-items: center;
justify-content: center;
&:hover {
text-decoration: underline;
}
}
}

View file

@ -70,5 +70,126 @@
</template>
<script src="./emoji_reactions.js"></script>
<style lang="scss">
@import "../../mixins";
<style src="./emoji_reactions.scss" lang="scss" />
.EmojiReactions {
display: flex;
margin-top: 0.25em;
flex-wrap: wrap;
--emoji-size: calc(var(--emojiSize, 1.25em) * var(--emojiReactionsScale, 1));
.emoji-reaction-container {
display: flex;
align-items: stretch;
margin-top: 0.5em;
margin-right: 0.5em;
.emoji-reaction-popover {
padding: 0;
.emoji-reaction-count-button {
margin: 0;
height: 100%;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
box-sizing: border-box;
min-width: 2em;
display: inline-flex;
justify-content: center;
align-items: center;
}
}
}
.emoji-reaction {
padding-left: 0.5em;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
margin: 0;
.reaction-emoji {
width: var(--emoji-size);
height: var(--emoji-size);
margin-right: 0.25em;
line-height: var(--emoji-size);
display: flex;
justify-content: center;
align-items: center;
--_still_image-label-scale: 0.3;
}
.reaction-emoji-content {
max-width: 100%;
max-height: 100%;
width: var(--emoji-size);
height: var(--emoji-size);
line-height: inherit;
overflow: hidden;
font-size: calc(var(--emoji-size) * 0.8);
margin: 0;
img {
object-fit: contain;
}
}
&:focus {
outline: none;
}
.svg-inline--fa {
color: var(--text);
}
&.-picked-reaction {
.svg-inline--fa {
color: var(--accent);
}
}
@include unfocused-style {
.focus-marker {
visibility: hidden;
}
.active-marker {
visibility: visible;
}
}
@include focused-style {
.svg-inline--fa {
color: var(--accent);
}
.focus-marker {
visibility: visible;
}
.active-marker {
visibility: hidden;
}
}
}
.emoji-reaction-expand {
padding: 0 0.5em;
margin-right: 0.5em;
margin-top: 0.5em;
display: flex;
align-items: center;
justify-content: center;
&:hover {
text-decoration: underline;
}
}
}
</style>

View file

@ -117,6 +117,9 @@ const MentionLink = {
this.highlightType
]
},
useAtIcon () {
return this.mergedConfig.useAtIcon
},
isRemote () {
return this.userName !== this.userNameFull
},

View file

@ -34,7 +34,12 @@
:user="user"
/><span
class="shortName"
>@<span
><FAIcon
v-if="useAtIcon"
size="sm"
icon="at"
class="at"
/>{{ !useAtIcon ? '@' : '' }}<span
class="userName"
v-html="userName"
/><span

View file

@ -238,4 +238,6 @@
<script src="./mrf_transparency_panel.js"></script>
<style src="./mrf_transparency_panel.scss" lang="scss"/>
<style lang="scss">
@import "./mrf_transparency_panel";
</style>

View file

@ -365,6 +365,14 @@
{{ $t('settings.mention_link_use_tooltip') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting
path="useAtIcon"
expert="1"
>
{{ $t('settings.use_at_icon') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="mentionLinkShowAvatar">
{{ $t('settings.mention_link_show_avatar') }}

View file

@ -1,4 +1,4 @@
@use "../../mixins";
@import "../../mixins";
/* stylelint-disable declaration-no-important */
.quick-action {
@ -52,7 +52,7 @@
grid-auto-columns: max-content;
align-items: center;
@include mixins.unfocused-style {
@include unfocused-style {
.focus-marker {
visibility: hidden;
}
@ -62,7 +62,7 @@
}
}
@include mixins.focused-style {
@include focused-style {
.focus-marker {
visibility: visible;
}

View file

@ -112,9 +112,9 @@ export const BUTTONS = [{
},
action ({ status, dispatch }) {
if (status.pinned) {
return dispatch('unpinStatus', status.id)
return dispatch('unpinStatus', { id: status.id })
} else {
return dispatch('pinStatus', status.id)
return dispatch('pinStatus', { id: status.id })
}
}
}, {

View file

@ -1,4 +1,4 @@
@use "../../mixins";
@import "../../mixins";
.StatusActionButtons {
.quick-action-buttons {

View file

@ -129,6 +129,7 @@ export const defaultState = {
forcedRoundness: undefined, // instance default
navbarColumnStretch: false,
greentext: undefined, // instance default
useAtIcon: undefined, // instance default
mentionLinkDisplay: undefined, // instance default
mentionLinkShowTooltip: undefined, // instance default
mentionLinkShowAvatar: undefined, // instance default

View file

@ -57,6 +57,7 @@ const defaultState = {
embeddedToS: true,
collapseMessageWithSubject: false,
greentext: false,
useAtIcon: false,
mentionLinkDisplay: 'short',
mentionLinkShowTooltip: true,
mentionLinkShowAvatar: false,

View file

@ -33,11 +33,9 @@ const components = {
Icon: null,
Border: null,
PanelHeader: null,
Attachment: null,
Panel: null,
Chat: null,
ChatMessage: null,
Button: null
ChatMessage: null
}
export const findShadow = (shadows, { dynamicVars, staticVars }) => {
@ -154,13 +152,13 @@ componentsContext.keys().forEach(key => {
}
components[component.name] = component
})
Object.keys(components).forEach(key => {
if (key === 'Root') return
components.Root.validInnerComponents = components.Root.validInnerComponents || []
components.Root.validInnerComponents.push(key)
})
Object.keys(components).forEach(key => {
const component = components[key]
const { validInnerComponents = [] } = component
@ -571,7 +569,6 @@ export const init = ({
}
if (
!liteMode &&
parent?.component !== 'Root' &&
!virtualComponents.has(component.name) &&
!transparentComponents.has(component.name) &&

View file

@ -1,3 +1,4 @@
// import { topoSort } from 'src/services/theme_data/theme_data.service.js'
import {
getAllPossibleCombinations
} from 'src/services/theme_data/iss_utils.js'
@ -119,7 +120,6 @@ describe('Theme Data 3', () => {
opacity: 0.5
}
}],
onlyNormalState: true,
ultimateBackgroundColor: '#DEADAF'
})
@ -142,9 +142,9 @@ describe('Theme Data 3', () => {
*/
expect(panelRule).to.have.nested.deep.property('dynamicVars.stacked.r').that.is.closeTo(111, 0.01)
expect(panelRule).to.have.nested.deep.property('dynamicVars.stacked.g').that.is.closeTo(150.5, 0.01)
expect(panelRule).to.have.nested.deep.property('dynamicVars.stacked.b').that.is.closeTo(151.5, 0.01)
expect(panelRule).to.have.nested.deep.property('dynamicVars.stacked.r').that.is.closeTo(88.8, 0.01)
expect(panelRule).to.have.nested.deep.property('dynamicVars.stacked.g').that.is.closeTo(133.2, 0.01)
expect(panelRule).to.have.nested.deep.property('dynamicVars.stacked.b').that.is.closeTo(134, 0.01)
})
})
})

577
yarn.lock

File diff suppressed because it is too large Load diff