@internetarchive/collection-browser 0.2.4-rc1 → 0.2.6-alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/{tiles/grid → assets/img}/icons/favorite-filled.d.ts +0 -0
- package/dist/src/{tiles/grid → assets/img}/icons/favorite-filled.js +0 -0
- package/dist/src/{tiles/grid → assets/img}/icons/favorite-filled.js.map +1 -1
- package/dist/src/{tiles/grid → assets/img}/icons/reviews.d.ts +0 -0
- package/dist/src/{tiles/grid → assets/img}/icons/reviews.js +0 -0
- package/dist/src/{tiles/grid → assets/img}/icons/reviews.js.map +1 -1
- package/dist/src/{tiles/grid → assets/img}/icons/upload.d.ts +0 -0
- package/dist/src/{tiles/grid → assets/img}/icons/upload.js +0 -0
- package/dist/src/{tiles/grid → assets/img}/icons/upload.js.map +1 -1
- package/dist/src/assets/img/icons/views.d.ts +1 -0
- package/dist/src/{tiles/grid → assets/img}/icons/views.js +1 -1
- package/dist/src/assets/img/icons/views.js.map +1 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.js +1 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/src/tiles/grid/account-tile.d.ts +1 -0
- package/dist/src/tiles/grid/account-tile.js +45 -78
- package/dist/src/tiles/grid/account-tile.js.map +1 -1
- package/dist/src/tiles/grid/item-tile.d.ts +6 -0
- package/dist/src/tiles/grid/item-tile.js +96 -124
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/grid/tile-stats.d.ts +10 -0
- package/dist/src/tiles/grid/tile-stats.js +134 -0
- package/dist/src/tiles/grid/tile-stats.js.map +1 -0
- package/dist/src/tiles/mediatype-icon.js +4 -0
- package/dist/src/tiles/mediatype-icon.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.js +1 -0
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/test/tile-stats.test.d.ts +1 -0
- package/dist/test/tile-stats.test.js +42 -0
- package/dist/test/tile-stats.test.js.map +1 -0
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -0
- package/dist/test/tiles/grid/item-tile.test.js +96 -0
- package/dist/test/tiles/grid/item-tile.test.js.map +1 -0
- package/package.json +1 -1
- package/src/{tiles/grid → assets/img}/icons/favorite-filled.ts +0 -0
- package/src/{tiles/grid → assets/img}/icons/reviews.ts +0 -0
- package/src/{tiles/grid → assets/img}/icons/upload.ts +0 -0
- package/src/{tiles/grid → assets/img}/icons/views.ts +1 -1
- package/src/sort-filter-bar/sort-filter-bar.ts +1 -1
- package/src/tiles/grid/account-tile.ts +44 -77
- package/src/tiles/grid/item-tile.ts +103 -125
- package/src/tiles/grid/tile-stats.ts +132 -0
- package/src/tiles/mediatype-icon.ts +4 -0
- package/src/tiles/tile-dispatcher.ts +1 -0
- package/test/tile-stats.test.ts +57 -0
- package/test/tiles/grid/item-tile.test.ts +116 -0
- package/dist/src/tiles/grid/icons/account.d.ts +0 -1
- package/dist/src/tiles/grid/icons/account.js +0 -12
- package/dist/src/tiles/grid/icons/account.js.map +0 -1
- package/dist/src/tiles/grid/icons/views.d.ts +0 -2
- package/dist/src/tiles/grid/icons/views.js.map +0 -1
- package/src/tiles/grid/icons/account.ts +0 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../../../src/tiles/grid/item-tile';
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/* eslint-disable import/no-duplicates */
|
|
2
|
+
import { expect, fixture } from '@open-wc/testing';
|
|
3
|
+
import { html } from 'lit';
|
|
4
|
+
import '../../../src/tiles/grid/item-tile';
|
|
5
|
+
describe('Item Tile', () => {
|
|
6
|
+
it('should render initial component', async () => {
|
|
7
|
+
var _a, _b, _c;
|
|
8
|
+
const el = await fixture(html `<item-tile></item-tile>`);
|
|
9
|
+
const itemInfo = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-info');
|
|
10
|
+
const itemImage = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('item-image');
|
|
11
|
+
const itemTitle = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#title');
|
|
12
|
+
expect(itemInfo).to.exist;
|
|
13
|
+
expect(itemImage).to.exist;
|
|
14
|
+
expect(itemTitle).to.exist;
|
|
15
|
+
});
|
|
16
|
+
it('should render with created-by element', async () => {
|
|
17
|
+
var _a, _b, _c;
|
|
18
|
+
const el = await fixture(html `<item-tile></item-tile>`);
|
|
19
|
+
const itemInfo = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-info');
|
|
20
|
+
const createdBy = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.created-by');
|
|
21
|
+
const dateSortedBy = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.date-sorted-by');
|
|
22
|
+
expect(itemInfo).to.exist;
|
|
23
|
+
expect(createdBy).to.exist;
|
|
24
|
+
expect(dateSortedBy).to.not.exist;
|
|
25
|
+
});
|
|
26
|
+
it('should not render with created-by but date element', async () => {
|
|
27
|
+
var _a, _b;
|
|
28
|
+
const el = await fixture(html `<item-tile></item-tile>`);
|
|
29
|
+
el.sortParam = {
|
|
30
|
+
field: 'date',
|
|
31
|
+
direction: 'desc',
|
|
32
|
+
};
|
|
33
|
+
await el.updateComplete;
|
|
34
|
+
const createdBy = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.created-by');
|
|
35
|
+
const dateSortedBy = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.date-sorted-by');
|
|
36
|
+
expect(createdBy).to.not.exist;
|
|
37
|
+
expect(dateSortedBy).to.exist;
|
|
38
|
+
});
|
|
39
|
+
it('should not render with created-by but reviewdate element', async () => {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
const el = await fixture(html `<item-tile></item-tile>`);
|
|
42
|
+
el.sortParam = {
|
|
43
|
+
field: 'reviewdate',
|
|
44
|
+
direction: 'desc',
|
|
45
|
+
};
|
|
46
|
+
await el.updateComplete;
|
|
47
|
+
const createdBy = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.created-by');
|
|
48
|
+
const dateSortedBy = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.date-sorted-by');
|
|
49
|
+
expect(createdBy).to.not.exist;
|
|
50
|
+
expect(dateSortedBy).to.exist;
|
|
51
|
+
});
|
|
52
|
+
it('should not render with created-by but publicdate element', async () => {
|
|
53
|
+
var _a, _b;
|
|
54
|
+
const el = await fixture(html `<item-tile></item-tile>`);
|
|
55
|
+
el.sortParam = {
|
|
56
|
+
field: 'publicdate',
|
|
57
|
+
direction: 'desc',
|
|
58
|
+
};
|
|
59
|
+
await el.updateComplete;
|
|
60
|
+
const createdBy = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.created-by');
|
|
61
|
+
const dateSortedBy = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.date-sorted-by');
|
|
62
|
+
expect(createdBy).to.not.exist;
|
|
63
|
+
expect(dateSortedBy).to.exist;
|
|
64
|
+
});
|
|
65
|
+
it('should render with created-by when sorting not related to date', async () => {
|
|
66
|
+
var _a, _b, _c;
|
|
67
|
+
const el = await fixture(html `<item-tile></item-tile>`);
|
|
68
|
+
el.sortParam = {
|
|
69
|
+
field: 'addeddate',
|
|
70
|
+
direction: 'asc',
|
|
71
|
+
};
|
|
72
|
+
await el.updateComplete;
|
|
73
|
+
const itemInfo = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-info');
|
|
74
|
+
const createdBy = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.created-by');
|
|
75
|
+
const dateSortedBy = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.date-sorted-by');
|
|
76
|
+
expect(itemInfo).to.exist;
|
|
77
|
+
expect(createdBy).to.not.exist;
|
|
78
|
+
expect(dateSortedBy).to.exist;
|
|
79
|
+
});
|
|
80
|
+
it('should render with created-by when sort field id not like date', async () => {
|
|
81
|
+
var _a, _b, _c;
|
|
82
|
+
const el = await fixture(html `<item-tile></item-tile>`);
|
|
83
|
+
el.sortParam = {
|
|
84
|
+
field: 'week',
|
|
85
|
+
direction: 'asc',
|
|
86
|
+
};
|
|
87
|
+
await el.updateComplete;
|
|
88
|
+
const itemInfo = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-info');
|
|
89
|
+
const createdBy = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.created-by');
|
|
90
|
+
const dateSortedBy = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.date-sorted-by');
|
|
91
|
+
expect(itemInfo).to.exist;
|
|
92
|
+
expect(dateSortedBy).to.not.exist; // it should be exist because this is not related to date sort
|
|
93
|
+
expect(createdBy).to.exist;
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=item-tile.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-tile.test.js","sourceRoot":"","sources":["../../../../test/tiles/grid/item-tile.test.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,mCAAmC,CAAC;AAE3C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;;QAC/C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAW,IAAI,CAAA,yBAAyB,CAAC,CAAC;QAElE,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEzD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC3B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;;QACrD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAW,IAAI,CAAA,yBAAyB,CAAC,CAAC;QAElE,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAErE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC3B,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;;QAClE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAW,IAAI,CAAA,yBAAyB,CAAC,CAAC;QAElE,EAAE,CAAC,SAAS,GAAG;YACb,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,MAAM;SAClB,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAErE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;;QACxE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAW,IAAI,CAAA,yBAAyB,CAAC,CAAC;QAElE,EAAE,CAAC,SAAS,GAAG;YACb,KAAK,EAAE,YAAY;YACnB,SAAS,EAAE,MAAM;SAClB,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAErE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;;QACxE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAW,IAAI,CAAA,yBAAyB,CAAC,CAAC;QAElE,EAAE,CAAC,SAAS,GAAG;YACb,KAAK,EAAE,YAAY;YACnB,SAAS,EAAE,MAAM;SAClB,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAErE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;;QAC9E,MAAM,EAAE,GAAG,MAAM,OAAO,CAAW,IAAI,CAAA,yBAAyB,CAAC,CAAC;QAElE,EAAE,CAAC,SAAS,GAAG;YACb,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAErE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;;QAC9E,MAAM,EAAE,GAAG,MAAM,OAAO,CAAW,IAAI,CAAA,yBAAyB,CAAC,CAAC;QAElE,EAAE,CAAC,SAAS,GAAG;YACb,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAErE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,8DAA8D;QACjG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport { ItemTile } from '../../../src/tiles/grid/item-tile';\n\nimport '../../../src/tiles/grid/item-tile';\n\ndescribe('Item Tile', () => {\n it('should render initial component', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const itemImage = el.shadowRoot?.querySelector('item-image');\n const itemTitle = el.shadowRoot?.querySelector('#title');\n\n expect(itemInfo).to.exist;\n expect(itemImage).to.exist;\n expect(itemTitle).to.exist;\n });\n\n it('should render with created-by element', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(createdBy).to.exist;\n expect(dateSortedBy).to.not.exist;\n });\n\n it('should not render with created-by but date element', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'date',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render with created-by but reviewdate element', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'reviewdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render with created-by but publicdate element', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'publicdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should render with created-by when sorting not related to date', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'addeddate',\n direction: 'asc',\n };\n await el.updateComplete;\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should render with created-by when sort field id not like date', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'week',\n direction: 'asc',\n };\n await el.updateComplete;\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(dateSortedBy).to.not.exist; // it should be exist because this is not related to date sort\n expect(createdBy).to.exist;\n });\n});\n"]}
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { svg } from 'lit';
|
|
2
2
|
|
|
3
|
-
export
|
|
3
|
+
export const viewsIcon = svg`
|
|
4
4
|
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
|
5
5
|
<path
|
|
6
6
|
d="m98 50.5704143c-.2830293-.471515-.671154-1.1088947-1.1643742-1.9121392s-1.6003642-2.3617474-3.3214321-4.6755089c-1.7210678-2.3137614-3.522258-4.5325939-5.4035703-6.6564975-1.8813124-2.1239037-4.2828993-4.473133-7.2047606-7.0476881-2.9218612-2.5745551-5.8895067-4.7933876-8.9029363-6.6564976-3.0134295-1.86311-6.4628491-3.4330878-10.3482587-4.7099336-3.8854095-1.2768458-7.7822651-1.9142256-11.6905667-1.9121443-3.9083017.0020914-7.8051573.6154781-11.6905668 1.8401652-3.8854096 1.2246871-7.3702078 2.8301329-10.4543947 4.8163375-3.0841869 1.9862045-6.0278997 4.1695691-8.8311384 6.5500937s-5.2048256 4.7652219-7.2047605 7.1540919c-1.99993501 2.38887-3.75430043 4.5722346-5.26309632 6.5500938s-2.63883199 3.583305-3.39010829 4.8163374l-1.13003609 1.8401602c.2830293.4715149.67115403 1.1088946 1.16437421 1.9121391.49322017.8032445 1.5878776 2.3617475 3.28397229 4.6755089s3.47439274 4.521119 5.3348942 6.6220728c1.8605014 2.1009538 4.2506422 4.4387083 7.1704224 7.0132633 2.9197801 2.5745551 5.8874256 4.7819127 8.9029363 6.6220729 3.0155106 1.8401601 6.4774168 3.398663 10.3857184 4.6755088 3.9083017 1.2768458 7.8176438 1.9142256 11.7280266 1.9121443 3.9103827-.0020914 7.7957922-.6154781 11.6562286-1.8401652s7.3337886-2.818658 10.4200566-4.7819127 6.0299808-4.1351444 8.8311384-6.515669 5.2152311-4.7652219 7.2422203-7.1540919 3.8052873-4.5607597 5.3348942-6.515669c1.5296068-1.9549093 2.6721295-3.5488802 3.427568-4.7819127zm-24.5142913 0c0 6.467683-2.3079374 12.0152859-6.9238123 16.6428087s-10.1495139 6.9412843-16.600917 6.9412843c-6.4992683 0-12.0453939-2.3137615-16.6383767-6.9412843s-6.8894742-10.1751257-6.8894742-16.6428087 2.2964914-12.003811 6.8894742-16.608384 10.1391084-6.9068595 16.6383767-6.9068595c6.4534842 0 11.9871232 2.3022865 16.600917 6.9068595s6.9217312 10.140701 6.9238123 16.608384zm-23.5247293-10.552755c2.8261308 0 5.2870289 1.0619518 7.3826944 3.1858555 2.0956655 2.1239036 3.1434982 4.5795368 3.1434982 7.3668995 0 2.8332624-1.0478327 5.2888956-3.1434982 7.3668995-2.0956655 2.078004-4.5565636 3.1170059-7.3826944 3.1170059-2.873996 0-5.3348941-1.0264838-7.3826944-3.0794516-2.0478002-2.0529677-3.0717003-4.5200758-3.0717003-7.4013243 0-2.8332624 1.0239001-5.3003705 3.0717003-7.4013243 2.0478003-2.1009538 4.5086984-3.1514307 7.3826944-3.1514307z"
|
|
@@ -2,10 +2,7 @@ import { css, html, LitElement } from 'lit';
|
|
|
2
2
|
import { customElement, property } from 'lit/decorators.js';
|
|
3
3
|
import { TileModel } from '../../models';
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
import { favoriteFilledIcon } from './icons/favorite-filled';
|
|
7
|
-
import { reviewsIcon } from './icons/reviews';
|
|
8
|
-
import { uploadIcon } from './icons/upload';
|
|
5
|
+
import './tile-stats';
|
|
9
6
|
|
|
10
7
|
@customElement('account-tile')
|
|
11
8
|
export class AccountTile extends LitElement {
|
|
@@ -13,44 +10,32 @@ export class AccountTile extends LitElement {
|
|
|
13
10
|
|
|
14
11
|
render() {
|
|
15
12
|
return html`
|
|
16
|
-
<div class="
|
|
17
|
-
<div
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
30
|
-
<div id="year-holder">
|
|
31
|
-
<div id="archivist-since">
|
|
32
|
-
<h3>Archivist Since</h3>
|
|
33
|
-
</div>
|
|
34
|
-
<div id="year-holder">
|
|
35
|
-
<h3>${this.model?.dateAdded?.getFullYear()}</h3>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
<div id="status-holder">
|
|
39
|
-
<div id="patron-icon">${accountIcon}</div>
|
|
40
|
-
<div class="stat-icon">
|
|
41
|
-
${uploadIcon}
|
|
42
|
-
<h3>${this.model?.itemCount}</h3>
|
|
43
|
-
</div>
|
|
44
|
-
<div class="stat-icon">
|
|
45
|
-
${favoriteFilledIcon}
|
|
46
|
-
<h3>${this.model?.favCount}</h3>
|
|
47
|
-
</div>
|
|
48
|
-
<div class="stat-icon">
|
|
49
|
-
${reviewsIcon}
|
|
50
|
-
<h3>${this.model?.commentCount}</h3>
|
|
51
|
-
</div>
|
|
13
|
+
<div class="account-tile-main">
|
|
14
|
+
<div id="title">
|
|
15
|
+
<h1 class="truncated">${this.model?.identifier}</h1>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="account-info">
|
|
19
|
+
<div id="avatar-info">
|
|
20
|
+
<img
|
|
21
|
+
id="avatar"
|
|
22
|
+
alt="patron-avatar"
|
|
23
|
+
src="https://archive.org/services/img/${this.model?.identifier}"
|
|
24
|
+
/>
|
|
52
25
|
</div>
|
|
26
|
+
|
|
27
|
+
<span id="archivist-since">
|
|
28
|
+
Archivist since ${this.model?.dateAdded?.getFullYear()}
|
|
29
|
+
</span>
|
|
53
30
|
</div>
|
|
31
|
+
|
|
32
|
+
<tile-stats
|
|
33
|
+
.mediatype=${this.model?.mediatype}
|
|
34
|
+
.itemCount=${this.model?.itemCount}
|
|
35
|
+
.favCount=${this.model?.favCount}
|
|
36
|
+
.commentCount=${this.model?.commentCount}
|
|
37
|
+
>
|
|
38
|
+
</tile-stats>
|
|
54
39
|
</div>
|
|
55
40
|
`;
|
|
56
41
|
}
|
|
@@ -63,41 +48,45 @@ export class AccountTile extends LitElement {
|
|
|
63
48
|
margin: 0;
|
|
64
49
|
}
|
|
65
50
|
|
|
66
|
-
|
|
51
|
+
span {
|
|
67
52
|
font-size: 14px;
|
|
68
|
-
font-weight: bold;
|
|
69
53
|
color: #2c2c2c;
|
|
70
54
|
margin: 0px;
|
|
71
55
|
}
|
|
72
56
|
|
|
73
|
-
.
|
|
57
|
+
.account-tile-main {
|
|
74
58
|
background-color: #fcf5e6;
|
|
75
59
|
border: 1px #2c2c2c;
|
|
76
60
|
border-radius: 4px;
|
|
77
61
|
box-shadow: 1px 1px 2px 0px;
|
|
78
62
|
height: 100%;
|
|
79
63
|
display: flex;
|
|
64
|
+
flex-direction: column;
|
|
80
65
|
text-align: center;
|
|
81
66
|
width: 100%;
|
|
82
67
|
}
|
|
83
68
|
|
|
84
|
-
.
|
|
85
|
-
|
|
86
|
-
width: 100%;
|
|
87
|
-
display: flex;
|
|
88
|
-
flex-direction: column;
|
|
69
|
+
.account-info {
|
|
70
|
+
flex-grow: 1;
|
|
89
71
|
}
|
|
90
72
|
|
|
91
|
-
#
|
|
92
|
-
|
|
73
|
+
#title {
|
|
74
|
+
padding: 5px 5px 0px 5px;
|
|
75
|
+
flex-shrink: 0;
|
|
76
|
+
height: 40px;
|
|
93
77
|
}
|
|
94
78
|
|
|
95
|
-
#title
|
|
96
|
-
|
|
97
|
-
|
|
79
|
+
.account-tile-main:hover > #title > .truncated {
|
|
80
|
+
text-decoration: underline;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** this is a workaround for Safari 15 where the hover effects are not working */
|
|
84
|
+
#title:hover > .truncated {
|
|
85
|
+
text-decoration: underline;
|
|
98
86
|
}
|
|
99
87
|
|
|
100
|
-
#avatar-
|
|
88
|
+
#avatar-info {
|
|
89
|
+
margin-top: 5px;
|
|
101
90
|
margin-bottom: 5px;
|
|
102
91
|
display: flex;
|
|
103
92
|
align-items: center;
|
|
@@ -112,27 +101,11 @@ export class AccountTile extends LitElement {
|
|
|
112
101
|
box-shadow: 1px 1px 2px #888888;
|
|
113
102
|
}
|
|
114
103
|
|
|
115
|
-
#
|
|
104
|
+
#archivist-since {
|
|
116
105
|
margin-bottom: 5px;
|
|
117
106
|
height: 40px;
|
|
118
107
|
}
|
|
119
108
|
|
|
120
|
-
#year-holder {
|
|
121
|
-
margin: 0px;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
#status-holder {
|
|
125
|
-
height: 25px;
|
|
126
|
-
display: flex;
|
|
127
|
-
justify-content: space-evenly;
|
|
128
|
-
line-height: initial;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
#patron-icon {
|
|
132
|
-
height: 25px;
|
|
133
|
-
width: 25px;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
109
|
.truncated {
|
|
137
110
|
flex: 1;
|
|
138
111
|
min-width: 0; /* Important for long words! */
|
|
@@ -142,15 +115,9 @@ export class AccountTile extends LitElement {
|
|
|
142
115
|
display: -webkit-box;
|
|
143
116
|
-webkit-box-orient: vertical;
|
|
144
117
|
word-wrap: break-word;
|
|
145
|
-
word-break: break-all;
|
|
146
118
|
line-height: 2rem;
|
|
147
119
|
text-align: center;
|
|
148
120
|
}
|
|
149
|
-
|
|
150
|
-
.stat-icon {
|
|
151
|
-
height: 10px;
|
|
152
|
-
width: 10px;
|
|
153
|
-
}
|
|
154
121
|
`;
|
|
155
122
|
}
|
|
156
123
|
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/* eslint-disable import/no-duplicates */
|
|
2
2
|
import { css, CSSResultGroup, html, LitElement, nothing } from 'lit';
|
|
3
3
|
import { customElement, property } from 'lit/decorators.js';
|
|
4
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
5
|
+
import { SortParam } from '@internetarchive/search-service';
|
|
4
6
|
|
|
7
|
+
import { formatDate } from '../../utils/format-date';
|
|
5
8
|
import { TileModel } from '../../models';
|
|
6
|
-
import { formatCount } from '../../utils/format-count';
|
|
7
|
-
|
|
8
|
-
import { favoriteFilledIcon } from './icons/favorite-filled';
|
|
9
|
-
import { reviewsIcon } from './icons/reviews';
|
|
10
|
-
import viewsIcon from './icons/views';
|
|
11
9
|
|
|
12
10
|
import '../mediatype-icon';
|
|
13
11
|
import '../item-image';
|
|
12
|
+
import './tile-stats';
|
|
14
13
|
|
|
15
14
|
@customElement('item-tile')
|
|
16
15
|
export class ItemTile extends LitElement {
|
|
@@ -18,183 +17,162 @@ export class ItemTile extends LitElement {
|
|
|
18
17
|
|
|
19
18
|
@property({ type: String }) baseImageUrl?: string;
|
|
20
19
|
|
|
20
|
+
@property({ type: Object }) sortParam?: SortParam;
|
|
21
|
+
|
|
21
22
|
render() {
|
|
22
|
-
const itemTitle = this.model?.title
|
|
23
|
-
const itemCreator = this.model?.creator;
|
|
23
|
+
const itemTitle = this.model?.title;
|
|
24
24
|
return html`
|
|
25
|
-
<div
|
|
26
|
-
<div
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
</
|
|
25
|
+
<div class="container">
|
|
26
|
+
<div class="item-info">
|
|
27
|
+
<div id="title">
|
|
28
|
+
<h1 class="truncated" title=${ifDefined(
|
|
29
|
+
itemTitle
|
|
30
|
+
)}>${itemTitle}</h1>
|
|
31
31
|
</div>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
</
|
|
32
|
+
|
|
33
|
+
<div id="image">
|
|
34
|
+
<item-image
|
|
35
|
+
.model=${this.model}
|
|
36
|
+
.baseImageUrl=${this.baseImageUrl}>
|
|
37
|
+
</item-image>
|
|
38
38
|
</div>
|
|
39
|
+
${
|
|
40
|
+
this.doesSortedByDate
|
|
41
|
+
? this.sortedDateInfoTemplate
|
|
42
|
+
: this.creatorTemplate
|
|
43
|
+
}
|
|
39
44
|
</div>
|
|
40
45
|
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
.mediatype=${this.model?.mediatype}
|
|
48
|
-
.collection=${this.model?.collections}
|
|
49
|
-
style="--iconHeight:25px; --iconWidth:25px;"
|
|
50
|
-
>
|
|
51
|
-
</mediatype-icon>
|
|
52
|
-
</div>
|
|
53
|
-
<div class="col">
|
|
54
|
-
${viewsIcon}
|
|
55
|
-
<p class="status-text">
|
|
56
|
-
${formatCount(this.model?.viewCount, 'short', 'short')}
|
|
57
|
-
</p>
|
|
58
|
-
</div>
|
|
59
|
-
<div class="col">
|
|
60
|
-
${favoriteFilledIcon}
|
|
61
|
-
<p class="status-text">
|
|
62
|
-
${formatCount(this.model?.itemCount, 'short', 'short')}
|
|
63
|
-
</p>
|
|
64
|
-
</div>
|
|
65
|
-
<div class="col">
|
|
66
|
-
${reviewsIcon}
|
|
67
|
-
<p class="status-text">
|
|
68
|
-
${formatCount(this.model?.favCount, 'short', 'short')}
|
|
69
|
-
</p>
|
|
70
|
-
</div>
|
|
71
|
-
</div>
|
|
46
|
+
<tile-stats
|
|
47
|
+
.mediatype=${this.model?.mediatype}
|
|
48
|
+
.viewCount=${this.model?.viewCount}
|
|
49
|
+
.favCount=${this.model?.favCount}
|
|
50
|
+
.commentCount=${this.model?.commentCount}>
|
|
51
|
+
</tile-stats>
|
|
72
52
|
</div>
|
|
73
53
|
</div>
|
|
74
54
|
`;
|
|
75
55
|
}
|
|
76
56
|
|
|
77
|
-
|
|
78
|
-
|
|
57
|
+
private get doesSortedByDate() {
|
|
58
|
+
return ['date', 'reviewdate', 'addeddate', 'publicdate'].includes(
|
|
59
|
+
this.sortParam?.field as string
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private get sortedDateInfoTemplate() {
|
|
64
|
+
let sortedValue;
|
|
65
|
+
|
|
66
|
+
switch (this.sortParam?.field) {
|
|
67
|
+
case 'date':
|
|
68
|
+
sortedValue = { field: 'published', value: this.model?.datePublished };
|
|
69
|
+
break;
|
|
70
|
+
case 'reviewdate':
|
|
71
|
+
sortedValue = { field: 'reviewed', value: this.model?.dateReviewed };
|
|
72
|
+
break;
|
|
73
|
+
case 'addeddate':
|
|
74
|
+
sortedValue = { field: 'added', value: this.model?.dateAdded };
|
|
75
|
+
break;
|
|
76
|
+
case 'publicdate':
|
|
77
|
+
sortedValue = { field: 'archived', value: this.model?.dateArchived };
|
|
78
|
+
break;
|
|
79
|
+
default:
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return html`
|
|
84
|
+
<div class="date-sorted-by truncated">
|
|
85
|
+
<span>
|
|
86
|
+
${sortedValue?.field} ${formatDate(sortedValue?.value, 'long')}
|
|
87
|
+
</span>
|
|
88
|
+
</div>
|
|
89
|
+
`;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private get creatorTemplate() {
|
|
93
|
+
return html`
|
|
94
|
+
<div class="created-by truncated">
|
|
95
|
+
${this.model?.creator
|
|
96
|
+
? html`<span>by ${this.model?.creator}</span>`
|
|
97
|
+
: nothing}
|
|
98
|
+
</div>
|
|
99
|
+
`;
|
|
100
|
+
}
|
|
79
101
|
|
|
102
|
+
static get styles(): CSSResultGroup {
|
|
80
103
|
return css`
|
|
81
|
-
|
|
104
|
+
.container {
|
|
82
105
|
background-color: #ffffff;
|
|
83
|
-
border-radius:
|
|
106
|
+
border-radius: var(--collectionTileCornerRadius, 4px);
|
|
84
107
|
box-shadow: 1px 1px 2px 0px;
|
|
85
108
|
display: flex;
|
|
86
109
|
flex-direction: column;
|
|
87
110
|
height: 100%;
|
|
88
|
-
position: relative;
|
|
89
111
|
}
|
|
90
112
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
flex: 1;
|
|
94
|
-
flex-direction: column;
|
|
95
|
-
padding: 0.5rem 0.5rem 0 0.5rem;
|
|
113
|
+
.item-info {
|
|
114
|
+
padding: 5px 5px 0 5px;
|
|
115
|
+
flex-grow: 1;
|
|
96
116
|
}
|
|
97
117
|
|
|
98
|
-
#
|
|
99
|
-
|
|
100
|
-
font-size: 1.6rem;
|
|
101
|
-
text-align: center;
|
|
102
|
-
margin-top: 0rem;
|
|
103
|
-
margin-bottom: 0.5rem;
|
|
104
|
-
overflow: hidden;
|
|
105
|
-
text-overflow: ellipsis;
|
|
106
|
-
display: -webkit-box;
|
|
107
|
-
-webkit-line-clamp: 2;
|
|
108
|
-
-webkit-box-orient: vertical;
|
|
109
|
-
line-height: 2rem;
|
|
110
|
-
height: 4rem;
|
|
118
|
+
#title {
|
|
119
|
+
flex-shrink: 0;
|
|
111
120
|
}
|
|
112
121
|
|
|
113
|
-
#
|
|
122
|
+
#image {
|
|
114
123
|
display: flex;
|
|
115
124
|
justify-content: center;
|
|
116
125
|
flex: 1;
|
|
126
|
+
height: 16rem;
|
|
117
127
|
}
|
|
118
128
|
|
|
119
129
|
.hidden {
|
|
120
130
|
display: none;
|
|
121
131
|
}
|
|
122
132
|
|
|
123
|
-
|
|
133
|
+
.container:hover > .item-info > #title > .truncated {
|
|
124
134
|
text-decoration: underline;
|
|
125
135
|
}
|
|
126
136
|
|
|
127
137
|
/** this is a workaround for Safari 15 where the hover effects are not working */
|
|
128
|
-
#title
|
|
138
|
+
#title:hover > .truncated {
|
|
129
139
|
text-decoration: underline;
|
|
130
140
|
}
|
|
131
141
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.item-creator {
|
|
142
|
+
.created-by,
|
|
143
|
+
.date-sorted-by {
|
|
137
144
|
display: flex;
|
|
138
145
|
justify-content: center;
|
|
139
146
|
align-items: flex-end; /* Important to start text from bottom */
|
|
140
147
|
height: 3rem;
|
|
141
148
|
padding-top: 1rem;
|
|
149
|
+
margin-top: 5px;
|
|
142
150
|
}
|
|
143
151
|
|
|
144
152
|
.truncated {
|
|
145
153
|
flex: 1;
|
|
146
|
-
min-width: 0; /* Important for long words! */
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
.truncated span {
|
|
150
|
-
font-size: 1.4rem;
|
|
151
154
|
color: #2c2c2c;
|
|
152
|
-
-
|
|
155
|
+
min-width: 0; /* Important for long words! */
|
|
156
|
+
text-align: center;
|
|
157
|
+
line-height: 2rem;
|
|
153
158
|
text-overflow: ellipsis;
|
|
154
159
|
overflow: hidden;
|
|
155
|
-
display: -webkit-box;
|
|
156
|
-
-webkit-box-orient: vertical;
|
|
157
160
|
word-wrap: break-word;
|
|
158
|
-
line-
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
.hr {
|
|
163
|
-
border: 0.5px solid #ccc;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
#item-stats-container {
|
|
167
|
-
align-items: center;
|
|
168
|
-
display: flex;
|
|
169
|
-
height: 5.5rem;
|
|
170
|
-
padding-left: 1rem;
|
|
171
|
-
padding-right: 0.5rem;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
#stats-holder {
|
|
175
|
-
align-items: center;
|
|
176
|
-
display: flex;
|
|
177
|
-
flex: 1;
|
|
178
|
-
justify-content: space-evenly;
|
|
179
|
-
text-align: center;
|
|
180
|
-
width: 100%;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
svg {
|
|
184
|
-
height: 10px;
|
|
185
|
-
width: 10px;
|
|
161
|
+
-webkit-line-clamp: 2;
|
|
162
|
+
-webkit-box-orient: vertical;
|
|
186
163
|
}
|
|
187
164
|
|
|
188
|
-
.
|
|
189
|
-
font-size:
|
|
190
|
-
|
|
191
|
-
margin: auto;
|
|
192
|
-
display: block;
|
|
193
|
-
text-align: center;
|
|
165
|
+
.truncated span {
|
|
166
|
+
font-size: 1.4rem;
|
|
167
|
+
display: -webkit-box;
|
|
194
168
|
}
|
|
195
169
|
|
|
196
|
-
.
|
|
197
|
-
|
|
170
|
+
h1.truncated {
|
|
171
|
+
margin-top: 0rem;
|
|
172
|
+
margin-bottom: 0.5rem;
|
|
173
|
+
font-size: 1.6rem;
|
|
174
|
+
height: 4rem;
|
|
175
|
+
display: -webkit-box;
|
|
198
176
|
}
|
|
199
177
|
`;
|
|
200
178
|
}
|