+
@@ -151,7 +134,7 @@ export default {
diff --git a/app/javascript/dashboard/components/widgets/conversation/linear/index.vue b/app/javascript/dashboard/components/widgets/conversation/linear/index.vue
index 012e43a67..f4fe672ba 100644
--- a/app/javascript/dashboard/components/widgets/conversation/linear/index.vue
+++ b/app/javascript/dashboard/components/widgets/conversation/linear/index.vue
@@ -16,6 +16,10 @@ const props = defineProps({
type: [Number, String],
required: true,
},
+ parentWidth: {
+ type: Number,
+ default: 10000,
+ },
});
defineOptions({
@@ -73,6 +77,14 @@ const unlinkIssue = async linkId => {
}
};
+const shouldShowIssueIdentifier = computed(() => {
+ if (!linkedIssue.value) {
+ return false;
+ }
+
+ return props.parentWidth > 600;
+});
+
const openIssue = () => {
if (!linkedIssue.value) shouldShowPopup.value = true;
shouldShow.value = true;
@@ -119,7 +131,10 @@ onMounted(() => {
class="text-[#5E6AD2] flex-shrink-0"
view-box="0 0 19 19"
/>
-
+
{{ linkedIssue.issue.identifier }}
@@ -127,7 +142,7 @@ onMounted(() => {
v-if="linkedIssue"
:issue="linkedIssue.issue"
:link-id="linkedIssue.id"
- class="absolute right-0 top-[36px] invisible group-hover:visible"
+ class="absolute rtl:left-0 ltr:right-0 top-9 invisible group-hover:visible"
@unlink-issue="unlinkIssue"
/>
({
- emitter: {
- emit: vi.fn(),
- on: vi.fn(),
- off: vi.fn(),
- },
-}));
-
-const mockDirective = {
- mounted: () => {},
-};
-
-import { emitter } from 'shared/helpers/mitt';
-
-describe('MoveActions', () => {
- let currentChat = { id: 8, muted: false };
- let store = null;
- let muteConversation = null;
- let unmuteConversation = null;
-
- beforeEach(() => {
- muteConversation = vi.fn(() => Promise.resolve());
- unmuteConversation = vi.fn(() => Promise.resolve());
-
- store = createStore({
- state: {
- authenticated: true,
- currentChat,
- },
- getters: {
- getSelectedChat: () => currentChat,
- },
- modules: {
- conversations: {
- namespaced: false,
- actions: { muteConversation, unmuteConversation },
- },
- },
- });
- });
-
- const createWrapper = () =>
- mount(MoreActions, {
- global: {
- plugins: [store],
- components: {
- 'fluent-icon': FluentIcon,
- },
- directives: {
- 'on-clickaway': mockDirective,
- },
- },
- });
-
- describe('muting discussion', () => {
- it('triggers "muteConversation"', async () => {
- const wrapper = createWrapper();
- await wrapper.find('button:first-child').trigger('click');
-
- expect(muteConversation).toHaveBeenCalledTimes(1);
- expect(muteConversation).toHaveBeenCalledWith(
- expect.any(Object), // First argument is the Vuex context object
- currentChat.id // Second argument is the ID of the conversation
- );
- });
-
- it('shows alert', async () => {
- const wrapper = createWrapper();
- await wrapper.find('button:first-child').trigger('click');
-
- expect(emitter.emit).toBeCalledWith('newToastMessage', {
- message:
- 'This contact is blocked successfully. You will not be notified of any future conversations.',
- action: null,
- });
- });
- });
-
- describe('unmuting discussion', () => {
- beforeEach(() => {
- currentChat.muted = true;
- });
-
- it('triggers "unmuteConversation"', async () => {
- const wrapper = createWrapper();
- await wrapper.find('button:first-child').trigger('click');
-
- expect(unmuteConversation).toHaveBeenCalledTimes(1);
- expect(unmuteConversation).toHaveBeenCalledWith(
- expect.any(Object), // First argument is the Vuex context object
- currentChat.id // Second argument is the ID of the conversation
- );
- });
-
- it('shows alert', async () => {
- const wrapper = createWrapper();
- await wrapper.find('button:first-child').trigger('click');
-
- expect(emitter.emit).toBeCalledWith('newToastMessage', {
- message: 'This contact is unblocked successfully.',
- action: null,
- });
- });
- });
-});
diff --git a/app/javascript/dashboard/composables/spec/useFontSize.spec.js b/app/javascript/dashboard/composables/spec/useFontSize.spec.js
index 9253a3988..52d22478f 100644
--- a/app/javascript/dashboard/composables/spec/useFontSize.spec.js
+++ b/app/javascript/dashboard/composables/spec/useFontSize.spec.js
@@ -43,7 +43,7 @@ describe('useFontSize', () => {
it('returns fontSizeOptions with correct structure', () => {
const { fontSizeOptions } = useFontSize();
- expect(fontSizeOptions).toHaveLength(6);
+ expect(fontSizeOptions).toHaveLength(5);
expect(fontSizeOptions[0]).toHaveProperty('value');
expect(fontSizeOptions[0]).toHaveProperty('label');
@@ -59,12 +59,6 @@ describe('useFontSize', () => {
label:
'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.SMALLER',
});
-
- expect(fontSizeOptions.find(option => option.value === '22px')).toEqual({
- value: '22px',
- label:
- 'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.EXTRA_LARGE',
- });
});
it('returns currentFontSize from UI settings', () => {
@@ -84,9 +78,6 @@ describe('useFontSize', () => {
applyFontSize('14px');
expect(document.documentElement.style.fontSize).toBe('14px');
- applyFontSize('22px');
- expect(document.documentElement.style.fontSize).toBe('22px');
-
applyFontSize('16px');
expect(document.documentElement.style.fontSize).toBe('16px');
});
@@ -145,8 +136,6 @@ describe('useFontSize', () => {
'Smaller',
'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.DEFAULT':
'Default',
- 'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.EXTRA_LARGE':
- 'Extra Large',
};
return translations[key] || key;
});
@@ -160,9 +149,6 @@ describe('useFontSize', () => {
expect(fontSizeOptions.find(option => option.value === '16px').label).toBe(
'Default'
);
- expect(fontSizeOptions.find(option => option.value === '22px').label).toBe(
- 'Extra Large'
- );
// Verify translation function was called with correct keys
expect(mockTranslate).toHaveBeenCalledWith(
diff --git a/app/javascript/dashboard/composables/useFontSize.js b/app/javascript/dashboard/composables/useFontSize.js
index 9bb8d4841..d7177a5fb 100644
--- a/app/javascript/dashboard/composables/useFontSize.js
+++ b/app/javascript/dashboard/composables/useFontSize.js
@@ -19,7 +19,6 @@ const FONT_SIZE_OPTIONS = {
DEFAULT: '16px',
LARGE: '18px',
LARGER: '20px',
- EXTRA_LARGE: '22px',
};
/**
diff --git a/app/javascript/dashboard/i18n/locale/en/conversation.json b/app/javascript/dashboard/i18n/locale/en/conversation.json
index da2f64b01..26ec6dc16 100644
--- a/app/javascript/dashboard/i18n/locale/en/conversation.json
+++ b/app/javascript/dashboard/i18n/locale/en/conversation.json
@@ -70,6 +70,7 @@
"RESOLVE_ACTION": "Resolve",
"REOPEN_ACTION": "Reopen",
"OPEN_ACTION": "Open",
+ "MORE_ACTIONS": "More actions",
"OPEN": "More",
"CLOSE": "Close",
"DETAILS": "details",
diff --git a/app/javascript/dashboard/routes/dashboard/settings/profile/Index.vue b/app/javascript/dashboard/routes/dashboard/settings/profile/Index.vue
index eedcd21f1..097e0589a 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/profile/Index.vue
+++ b/app/javascript/dashboard/routes/dashboard/settings/profile/Index.vue
@@ -245,7 +245,12 @@ export default {