diff --git a/packages/ilios-common/addon/components/dashboard/navigation.hbs b/packages/ilios-common/addon/components/dashboard/navigation.hbs index 5a89ffe0d6..04e2b44a2c 100644 --- a/packages/ilios-common/addon/components/dashboard/navigation.hbs +++ b/packages/ilios-common/addon/components/dashboard/navigation.hbs @@ -35,5 +35,11 @@ {{t "general.calendar"}} +
  • + +
  • diff --git a/packages/ilios-common/addon/components/dashboard/navigation.js b/packages/ilios-common/addon/components/dashboard/navigation.js new file mode 100644 index 0000000000..f3b3521f21 --- /dev/null +++ b/packages/ilios-common/addon/components/dashboard/navigation.js @@ -0,0 +1,27 @@ +import Component from '@glimmer/component'; +import { service } from '@ember/service'; +import { tracked } from '@glimmer/tracking'; +import { dropTask } from 'ember-concurrency'; + +export default class NavigationComponent extends Component { + @service currentUser; + @service iliosConfig; + + @tracked icsFeedUrl; + @tracked icsInstructions; + + constructor() { + super(...arguments); + this.setup.perform(); + } + + setup = dropTask(async () => { + const user = await this.currentUser.getModel(); + const icsFeedKey = user.icsFeedKey; + const apiHost = this.iliosConfig.apiHost; + const loc = window.location.protocol + '//' + window.location.hostname; + const server = apiHost ? apiHost : loc; + this.icsFeedUrl = server + '/ics/' + icsFeedKey; + this.icsInstructions = 'Copy My ICS Link'; + }); +} diff --git a/packages/ilios-common/addon/components/ics-feed.hbs b/packages/ilios-common/addon/components/ics-feed.hbs index 1168833cfc..243cea3f62 100644 --- a/packages/ilios-common/addon/components/ics-feed.hbs +++ b/packages/ilios-common/addon/components/ics-feed.hbs @@ -3,20 +3,24 @@ data-test-ics-feed ...attributes > -

    - {{@instructions}} -

    -

    - - - - {{t "general.copyIcsFeedUrl"}} - - {{#if this.textCopied.isRunning}} - - {{t "general.copiedSuccessfully"}} - - {{/if}} - -

    + + + + {{#if (and this.copyButton this.showTooltip)}} + + {{t "general.copyIcsFeedUrl"}} + + {{/if}} diff --git a/packages/ilios-common/addon/components/ics-feed.js b/packages/ilios-common/addon/components/ics-feed.js index 3402a2cb99..65eacf3a9a 100644 --- a/packages/ilios-common/addon/components/ics-feed.js +++ b/packages/ilios-common/addon/components/ics-feed.js @@ -1,8 +1,23 @@ import Component from '@glimmer/component'; -import { restartableTask, timeout } from 'ember-concurrency'; +import { restartableTask } from 'ember-concurrency'; +import { service } from '@ember/service'; export default class IcsFeedComponent extends Component { + @service flashMessages; + textCopied = restartableTask(async () => { - await timeout(3000); + this.flashMessages.success('general.copiedIcsFeedUrl'); }); + + popperOptions = { + placement: 'right', + modifiers: [ + { + name: 'flip', + options: { + fallbackPlacements: ['bottom'], + }, + }, + ], + }; } diff --git a/packages/ilios-common/addon/components/ilios-calendar.hbs b/packages/ilios-common/addon/components/ilios-calendar.hbs index 08984c9922..ddedbf527f 100644 --- a/packages/ilios-common/addon/components/ilios-calendar.hbs +++ b/packages/ilios-common/addon/components/ilios-calendar.hbs @@ -1,16 +1,5 @@
    - {{#if this.showIcsFeed}} - - {{/if}} -`); - assert.strictEqual(component.instructions, instructions); - }); - test('copy', async function (assert) { //skip this test if we can't access the clipboard if (!navigator.clipboard) { @@ -31,8 +23,7 @@ module('Integration | Component | ics feed', function (hooks) { }; this.set('url', url); this.set('instructions', instructions); - await render(hbs` -`); + await render(hbs``); await component.copy.click(); // undo writeText overwrite. navigator.clipboard.writeText = writeText; diff --git a/packages/test-app/tests/integration/components/ilios-calendar-test.js b/packages/test-app/tests/integration/components/ilios-calendar-test.js index 74065ff22c..efd3c135b2 100644 --- a/packages/test-app/tests/integration/components/ilios-calendar-test.js +++ b/packages/test-app/tests/integration/components/ilios-calendar-test.js @@ -106,31 +106,4 @@ module('Integration | Component | ilios calendar', function (hooks) { assert.strictEqual(component.goBack.linksTo, '/dashboard/calendar?date=2015-08-30'); assert.strictEqual(component.goForward.linksTo, '/dashboard/calendar?date=2015-10-30'); }); - - test('toggle ics feed visibility', async function (assert) { - const date = DateTime.fromObject({ - year: 2015, - month: 9, - day: 30, - hour: 12, - minute: 0, - second: 0, - }); - this.set('date', date.toJSDate()); - - await render(hbs` -`); - assert.notOk(component.icsFeed.isVisible); - await component.icsFeedToggle.click(); - assert.ok(component.icsFeed.isVisible); - await component.icsFeedToggle.click(); - assert.notOk(component.icsFeed.isVisible); - }); });