Skip to content

Commit 770dff1

Browse files
authored
Merge pull request #8684 from jrjohnson/a11y-publish
Swap Buttons for Links
2 parents a7676e0 + 4a4b67e commit 770dff1

File tree

2 files changed

+37
-59
lines changed

2 files changed

+37
-59
lines changed

packages/ilios-common/addon/components/publish-all-sessions.gjs

Lines changed: 30 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,13 @@ import not from 'ember-truth-helpers/helpers/not';
1212
import t from 'ember-intl/helpers/t';
1313
import FaIcon from 'ilios-common/components/fa-icon';
1414
import { LinkTo } from '@ember/routing';
15-
import { fn } from '@ember/helper';
15+
import { fn, hash } from '@ember/helper';
1616
import includes from 'ilios-common/helpers/includes';
1717
import mapBy from 'ilios-common/helpers/map-by';
1818
import SaveButton from 'ilios-common/components/save-button';
1919
import perform from 'ember-concurrency/helpers/perform';
2020

2121
export default class PublishAllSessionsComponent extends Component {
22-
@service router;
2322
@service store;
2423
@service flashMessages;
2524

@@ -200,22 +199,6 @@ export default class PublishAllSessionsComponent extends Component {
200199
this.args.saved();
201200
});
202201

203-
@action
204-
async transitionToCourse() {
205-
const queryParams = { courseObjectiveDetails: true, details: true };
206-
this.router.transitionTo('course', this.args.course, { queryParams });
207-
}
208-
209-
@action
210-
async transitionToVisualizeObjectives() {
211-
this.router.transitionTo('course-visualize-objectives', this.args.course);
212-
}
213-
214-
@action
215-
transitionToSession(session) {
216-
const queryParams = { sessionObjectiveDetails: true };
217-
this.router.transitionTo('session', session, { queryParams });
218-
}
219202
<template>
220203
<div class="publish-all-sessions" data-test-publish-all-sessions>
221204
<section class="publish-all-sessions-unpublishable" data-test-unpublishable>
@@ -288,14 +271,15 @@ export default class PublishAllSessionsComponent extends Component {
288271
{{t "general.yes"}}
289272
({{session.sessionObjectives.length}})
290273
{{#if session.showUnlinkIcon}}
291-
<button
292-
class="link-button"
293-
type="button"
294-
{{on "click" (fn this.transitionToSession session)}}
274+
<LinkTo
275+
@route="session"
276+
@model={{session}}
277+
@query={{hash sessionObjectiveDetails=true}}
278+
aria-label={{t "general.backToTitle" title=session.title}}
295279
data-test-session-link
296280
>
297281
<FaIcon @icon="link-slash" />
298-
</button>
282+
</LinkTo>
299283
{{/if}}
300284
</td>
301285
{{else}}
@@ -390,14 +374,15 @@ export default class PublishAllSessionsComponent extends Component {
390374
{{t "general.yes"}}
391375
({{session.sessionObjectives.length}})
392376
{{#if session.showUnlinkIcon}}
393-
<button
394-
class="link-button"
395-
type="button"
396-
{{on "click" (fn this.transitionToSession session)}}
377+
<LinkTo
378+
@route="session"
379+
@model={{session}}
380+
@query={{hash sessionObjectiveDetails=true}}
381+
aria-label={{t "general.backToTitle" title=session.title}}
397382
data-test-session-link
398383
>
399384
<FaIcon @icon="link-slash" />
400-
</button>
385+
</LinkTo>
401386
{{/if}}
402387
</td>
403388
{{else}}
@@ -527,14 +512,15 @@ export default class PublishAllSessionsComponent extends Component {
527512
{{t "general.yes"}}
528513
({{session.sessionObjectives.length}})
529514
{{#if session.showUnlinkIcon}}
530-
<button
531-
class="link-button"
532-
type="button"
533-
{{on "click" (fn this.transitionToSession session)}}
515+
<LinkTo
516+
@route="session"
517+
@model={{session}}
518+
@query={{hash sessionObjectiveDetails=true}}
519+
aria-label={{t "general.backToTitle" title=session.title}}
534520
data-test-session-link
535521
>
536522
<FaIcon @icon="link-slash" />
537-
</button>
523+
</LinkTo>
538524
{{/if}}
539525
</td>
540526
{{else}}
@@ -564,22 +550,23 @@ export default class PublishAllSessionsComponent extends Component {
564550
<span class="unlinked-warning" data-test-unlinked-warning>
565551
{{t "general.unlinkedObjectives"}}
566552
</span>
567-
<button
568-
class="link-button"
569-
type="button"
570-
{{on "click" this.transitionToCourse}}
553+
<LinkTo
554+
@route="course"
555+
@model={{@course}}
556+
@query={{hash details=true courseObjectiveDetails=true}}
557+
title={{t "general.backToTitle" title=@course.title}}
571558
data-test-course-link
572559
>
573560
<FaIcon @icon="link-slash" />
574-
</button>
575-
<button
576-
class="link-button"
577-
type="button"
578-
{{on "click" this.transitionToVisualizeObjectives}}
561+
</LinkTo>
562+
<LinkTo
563+
@route="course-visualize-objectives"
564+
@model={{@course}}
565+
title={{t "general.courseVisualizations"}}
579566
data-test-visualize
580567
>
581568
<FaIcon @icon="chart-column" />
582-
</button>
569+
</LinkTo>
583570
{{/if}}
584571
<p data-test-confirmation>
585572
{{t

packages/ilios-common/addon/components/session-publicationcheck.gjs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
import Component from '@glimmer/component';
2-
import { service } from '@ember/service';
3-
import { action } from '@ember/object';
42
import { TrackedAsyncData } from 'ember-async-data';
53
import { cached } from '@glimmer/tracking';
64
import Overview from 'ilios-common/components/session/overview';
75
import { LinkTo } from '@ember/routing';
8-
import { array } from '@ember/helper';
6+
import { array, hash } from '@ember/helper';
97
import FaIcon from 'ilios-common/components/fa-icon';
108
import t from 'ember-intl/helpers/t';
119
import scrollIntoView from 'ilios-common/modifiers/scroll-into-view';
1210
import hasManyLength from 'ilios-common/helpers/has-many-length';
13-
import { on } from '@ember/modifier';
1411

1512
export default class SessionPublicationCheckComponent extends Component {
16-
@service router;
17-
1813
@cached
1914
get courseData() {
2015
return new TrackedAsyncData(this.args.session.course);
@@ -59,11 +54,6 @@ export default class SessionPublicationCheckComponent extends Component {
5954
return objectivesWithoutParents.length > 0;
6055
}
6156

62-
@action
63-
transitionToSession() {
64-
const queryParams = { sessionObjectiveDetails: true };
65-
this.router.transitionTo('session', this.args.session, { queryParams });
66-
}
6757
<template>
6858
<div class="session-publicationcheck" data-test-session-publicationcheck>
6959
<Overview @session={{@session}} @hideCheckLink={{true}} @sessionTypes={{this.sessionTypes}} />
@@ -133,14 +123,15 @@ export default class SessionPublicationCheckComponent extends Component {
133123
{{t "general.yes"}}
134124
({{hasManyLength @session "sessionObjectives"}})
135125
{{#if this.showUnlinkIcon}}
136-
<button
137-
class="link-button"
138-
type="button"
139-
{{on "click" this.transitionToSession}}
126+
<LinkTo
127+
@route="session"
128+
@model={{@session}}
129+
@query={{hash sessionObjectiveDetails=true}}
130+
aria-label={{t "general.backToTitle" title=@session.title}}
140131
data-test-unlink
141132
>
142133
<FaIcon @icon="link-slash" />
143-
</button>
134+
</LinkTo>
144135
{{/if}}
145136
</td>
146137
{{else}}

0 commit comments

Comments
 (0)