Skip to content

Commit

Permalink
feat(addon/components/paper-card-actions): migrates to tagless native…
Browse files Browse the repository at this point in the history
… class.
  • Loading branch information
matthewhartstonge committed Oct 18, 2024
1 parent 5f42b93 commit 798d619
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 17 deletions.
8 changes: 5 additions & 3 deletions addon/components/paper-card-actions.hbs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
{{yield (hash
icons=(component "paper-card-icon-actions")
)}}
<md-card-actions class={{this.classes}} ...attributes>
{{yield (hash
icons=(component "paper-card-icon-actions")
)}}
</md-card-actions>
19 changes: 9 additions & 10 deletions addon/components/paper-card-actions.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* eslint-disable ember/no-classic-components, ember/no-component-lifecycle-hooks, ember/require-tagless-components */
/* eslint-disable ember/no-classic-components */
/**
* @module ember-paper
*/
Expand All @@ -8,19 +8,18 @@ import Component from '@ember/component';
* @class PaperCardActions
* @extends Ember.Component
*/
export default Component.extend({
tagName: 'md-card-actions',
classNameBindings: ['defaultClasses'],

didReceiveAttrs() {
this._super(...arguments);
export default class PaperCardActions extends Component {
tagName = '';

get classes() {
// if the consumer didn't set layout classes, we should set them
// to the default (layout = row, layout align = end center)
let providedClasses = this['class'];

if (!providedClasses || providedClasses.indexOf('layout-') === -1) {
this.set('defaultClasses', 'layout-row layout-align-end-center');
return `layout-row layout-align-end-center ${providedClasses}`.trimEnd();
}
},
});

return providedClasses;
}
}
55 changes: 51 additions & 4 deletions tests/integration/components/paper-card-test.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
/* eslint-disable prettier/prettier */
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';

module('Integration | Component | paper-card', function(hooks) {
module('Integration | Component | paper-card', function (hooks) {
setupRenderingTest(hooks);

test('blockless media renders image', async function(assert) {
test('blockless media renders image', async function (assert) {
assert.expect(5);

await render(hbs`
Expand Down Expand Up @@ -36,7 +35,7 @@ module('Integration | Component | paper-card', function(hooks) {
assert.dom('img').hasClass('md-media-xl');
});

test('block media renders div with correct class', async function(assert) {
test('block media renders div with correct class', async function (assert) {
assert.expect(1);

await render(hbs`
Expand All @@ -62,4 +61,52 @@ module('Integration | Component | paper-card', function(hooks) {

assert.dom('div.md-media-xl').exists({ count: 1 });
});

test('block actions renders tag with default layout classes', async function (assert) {
assert.expect(3);

await render(hbs`
{{#paper-card as |card|}}
{{#card.actions}}
{{#paper-button iconButton=true}}{{paper-icon "favorite"}}{{/paper-button}}
{{/card.actions}}
{{/paper-card}}
`);

assert.dom('md-card-actions').exists({ count: 1 });
assert.dom('md-card-actions').hasClass('layout-row');
assert.dom('md-card-actions').hasClass('layout-align-end-center');
});

test('block actions renders tag with passed through layout classes', async function (assert) {
assert.expect(2);

await render(hbs`
{{#paper-card as |card|}}
{{#card.actions class="layout-column"}}
{{#paper-button iconButton=true}}{{paper-icon "favorite"}}{{/paper-button}}
{{/card.actions}}
{{/paper-card}}
`);

assert.dom('md-card-actions').exists({ count: 1 });
assert.dom('md-card-actions').hasClass('layout-column');
});

test('block actions renders tag with passed through non-layout classes', async function (assert) {
assert.expect(4);

await render(hbs`
{{#paper-card as |card|}}
{{#card.actions class="call-to-action"}}
{{#paper-button iconButton=true}}{{paper-icon "favorite"}}{{/paper-button}}
{{/card.actions}}
{{/paper-card}}
`);

assert.dom('md-card-actions').exists({ count: 1 });
assert.dom('md-card-actions').hasClass('layout-row');
assert.dom('md-card-actions').hasClass('layout-align-end-center');
assert.dom('md-card-actions').hasClass('call-to-action');
});
});

0 comments on commit 798d619

Please sign in to comment.