diff --git a/ActionList.ts b/ActionList.ts index 5eded49..6cc7b6d 100644 --- a/ActionList.ts +++ b/ActionList.ts @@ -62,6 +62,10 @@ export class ActionList extends FilterListBase { @property({ type: Array }) items: ActionItem[] = []; + /** Height of each list item */ + @property({ type: Number }) + height: number = 72; + private renderMoreVertItem(item: ActionItem): TemplateResult { item.actions!.shift(); const otherActions = item.actions!; @@ -72,7 +76,6 @@ export class ActionList extends FilterListBase { id="more-vert-anchor" type="button" class="${classMap({ - twoline: !!item.supportingText, hidden: !this.searchRegex.test(term(item)), })}" @click=${(evt: Event) => { @@ -107,9 +110,8 @@ export class ActionList extends FilterListBase { const action = item.actions ? item.actions[index] : null; if (!action) - return html` -
${item.headline}
+
${item.headline}
${item.supportingText - ? html`
${item.supportingText}
` + ? html`
${item.supportingText}
` : html``} ${item.startingIcon ? html`${item.startingIcon}` @@ -194,21 +197,30 @@ export class ActionList extends FilterListBase { } render(): TemplateResult { - return html`
- ${this.renderSearchField()} -
- - ${this.items.map(item => this.renderListItem(item))} - ${this.renderActions()} -
-
`; + return html` +
+ ${this.renderSearchField()} +
+ + ${this.items.map(item => this.renderListItem(item))} + ${this.renderActions()} +
+
`; } static styles = css` section { display: flex; flex-direction: column; + justify-content: space-between; } md-outlined-text-field { @@ -217,8 +229,14 @@ export class ActionList extends FilterListBase { padding: 8px; } - md-list-item.twoline { - height: 72px; + [slot='headline'] { + white-space: pre; + } + + [slot='supporting-text'] { + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; } .listitems { diff --git a/README.md b/README.md index 4fbe28f..b06342d 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ This element was meant to be used only for plugins in this organization. If it s | Name | Privacy | Type | Default | Description | Inherited From | | -------------- | ------- | -------------- | ---------- | ------------------------------------------------------------------------- | -------------- | | `items` | | `ActionItem[]` | `[]` | ListItems and potential | | +| `height` | | `number` | `72` | Height of each list item | | | `filterable` | | `boolean` | `false` | Whether list items can be filtered on \`headline\` and \`supportingText\` | FilterListBase | | `searchhelper` | | `string` | `'search'` | Placeholder for search input field | FilterListBase | diff --git a/action-list.test.ts b/action-list.test.ts index 30c52bc..4108848 100644 --- a/action-list.test.ts +++ b/action-list.test.ts @@ -386,4 +386,59 @@ describe('Custom List component ActionList', () => { await visualDiff(list, `action-list/long headline and supportingText `); }); }); + + describe('for a custom size list item', () => { + let list: ActionList; + + beforeEach(async () => { + list = await fixture( + html` {}, + actions: [ + { icon: 'edit', callback: () => {} }, + { icon: 'delete', callback: () => {} }, + ], + }, + { + headline: 'thiiiiiisisanotherveeeeeeeryloooongtitle', + supportingText: 'thiiiiiiiisisaveeeeeeeerylongsupportingtitle', + }, + { + headline: + 'really long just doing its thing I guess this is how it is', + supportingText: + 'thiiiiiiiisisaveeeeeeeerylongsupportingtitle > MoreStuff > AndStillMoreStuff > It gose on forever until we cannot bear it any moer and eventually we reach our limit and then we truncate it! ', + divider: true, + filtergroup: ['item2', 'item3', 'item4', 'item5'], + primaryAction: () => {}, + actions: [ + { icon: 'edit', callback: () => {} }, + { icon: 'delete', callback: () => {} }, + ], + }, + ]} + >` + ); + list.style.width = '100px'; + document.body.prepend(list); + }); + + afterEach(() => { + if (list) list.remove(); + }); + + it('produces correctly spaced list items', async () => { + await timeout(200); + await visualDiff( + list, + `action-list/long headline and supportingText with custom size` + ); + }); + }); }); diff --git a/list.stories.ts b/list.stories.ts index 63f95c5..cc8e35c 100644 --- a/list.stories.ts +++ b/list.stories.ts @@ -106,6 +106,8 @@ ActionLessList.args = { primaryAction: () => { window.alert('clicked'); }, + supportingText: + 'a veeeeeeeery veeeeeeeery loooooooong suporting text with empty spaces which just gets longer and longer until we cannot bear it and something will break if we do not truncate it!', }, { headline: 'item3', diff --git a/screenshots/Chromium/baseline/action-list/divider .png b/screenshots/Chromium/baseline/action-list/divider .png index 46f649a..27b2cff 100644 Binary files a/screenshots/Chromium/baseline/action-list/divider .png and b/screenshots/Chromium/baseline/action-list/divider .png differ diff --git a/screenshots/Chromium/baseline/action-list/filterable.png b/screenshots/Chromium/baseline/action-list/filterable.png index 270269d..0d0bd2b 100644 Binary files a/screenshots/Chromium/baseline/action-list/filterable.png and b/screenshots/Chromium/baseline/action-list/filterable.png differ diff --git a/screenshots/Chromium/baseline/action-list/filtered.png b/screenshots/Chromium/baseline/action-list/filtered.png index 4274f33..ddba33a 100644 Binary files a/screenshots/Chromium/baseline/action-list/filtered.png and b/screenshots/Chromium/baseline/action-list/filtered.png differ diff --git a/screenshots/Chromium/baseline/action-list/filtergroup.png b/screenshots/Chromium/baseline/action-list/filtergroup.png index 01bdd7e..24c0f81 100644 Binary files a/screenshots/Chromium/baseline/action-list/filtergroup.png and b/screenshots/Chromium/baseline/action-list/filtergroup.png differ diff --git a/screenshots/Chromium/baseline/action-list/long headline and supportingText .png b/screenshots/Chromium/baseline/action-list/long headline and supportingText .png index d18ec6c..df876f7 100644 Binary files a/screenshots/Chromium/baseline/action-list/long headline and supportingText .png and b/screenshots/Chromium/baseline/action-list/long headline and supportingText .png differ diff --git a/screenshots/Chromium/baseline/action-list/long headline and supportingText with custom size.png b/screenshots/Chromium/baseline/action-list/long headline and supportingText with custom size.png new file mode 100644 index 0000000..3b066bd Binary files /dev/null and b/screenshots/Chromium/baseline/action-list/long headline and supportingText with custom size.png differ diff --git a/screenshots/Chromium/baseline/action-list/mixed actions definition.png b/screenshots/Chromium/baseline/action-list/mixed actions definition.png index c15b466..0bafc3e 100644 Binary files a/screenshots/Chromium/baseline/action-list/mixed actions definition.png and b/screenshots/Chromium/baseline/action-list/mixed actions definition.png differ diff --git a/screenshots/Chromium/baseline/action-list/more vert with labels.png b/screenshots/Chromium/baseline/action-list/more vert with labels.png index d709c44..15d7864 100644 Binary files a/screenshots/Chromium/baseline/action-list/more vert with labels.png and b/screenshots/Chromium/baseline/action-list/more vert with labels.png differ diff --git a/screenshots/Chromium/baseline/action-list/more vert without labels.png b/screenshots/Chromium/baseline/action-list/more vert without labels.png index 6fbb0bd..178d4f5 100644 Binary files a/screenshots/Chromium/baseline/action-list/more vert without labels.png and b/screenshots/Chromium/baseline/action-list/more vert without labels.png differ diff --git a/screenshots/Chromium/baseline/action-list/no-actions.png b/screenshots/Chromium/baseline/action-list/no-actions.png index 32fb940..811ec69 100644 Binary files a/screenshots/Chromium/baseline/action-list/no-actions.png and b/screenshots/Chromium/baseline/action-list/no-actions.png differ diff --git a/screenshots/Chromium/baseline/action-list/one additional action.png b/screenshots/Chromium/baseline/action-list/one additional action.png index 634e48a..7f2210a 100644 Binary files a/screenshots/Chromium/baseline/action-list/one additional action.png and b/screenshots/Chromium/baseline/action-list/one additional action.png differ diff --git a/screenshots/Chromium/baseline/action-list/primary-action.png b/screenshots/Chromium/baseline/action-list/primary-action.png index 76a5ffe..d738fd9 100644 Binary files a/screenshots/Chromium/baseline/action-list/primary-action.png and b/screenshots/Chromium/baseline/action-list/primary-action.png differ diff --git a/screenshots/Chromium/baseline/action-list/two additional actions.png b/screenshots/Chromium/baseline/action-list/two additional actions.png index 4b99c60..0997815 100644 Binary files a/screenshots/Chromium/baseline/action-list/two additional actions.png and b/screenshots/Chromium/baseline/action-list/two additional actions.png differ diff --git a/screenshots/Chromium/baseline/selection-list/filterable.png b/screenshots/Chromium/baseline/selection-list/filterable.png index 47b3b05..c45c902 100644 Binary files a/screenshots/Chromium/baseline/selection-list/filterable.png and b/screenshots/Chromium/baseline/selection-list/filterable.png differ diff --git a/screenshots/Chromium/baseline/selection-list/filtered.png b/screenshots/Chromium/baseline/selection-list/filtered.png index 41de3be..3c887f7 100644 Binary files a/screenshots/Chromium/baseline/selection-list/filtered.png and b/screenshots/Chromium/baseline/selection-list/filtered.png differ diff --git a/screenshots/Chromium/baseline/selection-list/pre-selection-list.png b/screenshots/Chromium/baseline/selection-list/pre-selection-list.png index a91a746..1857475 100644 Binary files a/screenshots/Chromium/baseline/selection-list/pre-selection-list.png and b/screenshots/Chromium/baseline/selection-list/pre-selection-list.png differ diff --git a/screenshots/Firefox/baseline/action-list/divider .png b/screenshots/Firefox/baseline/action-list/divider .png index b2757cc..cda86c4 100644 Binary files a/screenshots/Firefox/baseline/action-list/divider .png and b/screenshots/Firefox/baseline/action-list/divider .png differ diff --git a/screenshots/Firefox/baseline/action-list/filterable.png b/screenshots/Firefox/baseline/action-list/filterable.png index 5e6be1b..3804ee2 100644 Binary files a/screenshots/Firefox/baseline/action-list/filterable.png and b/screenshots/Firefox/baseline/action-list/filterable.png differ diff --git a/screenshots/Firefox/baseline/action-list/filtered.png b/screenshots/Firefox/baseline/action-list/filtered.png index f747bde..d418183 100644 Binary files a/screenshots/Firefox/baseline/action-list/filtered.png and b/screenshots/Firefox/baseline/action-list/filtered.png differ diff --git a/screenshots/Firefox/baseline/action-list/filtergroup.png b/screenshots/Firefox/baseline/action-list/filtergroup.png index 968ab77..f460c1c 100644 Binary files a/screenshots/Firefox/baseline/action-list/filtergroup.png and b/screenshots/Firefox/baseline/action-list/filtergroup.png differ diff --git a/screenshots/Firefox/baseline/action-list/long headline and supportingText .png b/screenshots/Firefox/baseline/action-list/long headline and supportingText .png index 11c4ed7..5b57d7b 100644 Binary files a/screenshots/Firefox/baseline/action-list/long headline and supportingText .png and b/screenshots/Firefox/baseline/action-list/long headline and supportingText .png differ diff --git a/screenshots/Firefox/baseline/action-list/long headline and supportingText with custom size.png b/screenshots/Firefox/baseline/action-list/long headline and supportingText with custom size.png new file mode 100644 index 0000000..0d5ae31 Binary files /dev/null and b/screenshots/Firefox/baseline/action-list/long headline and supportingText with custom size.png differ diff --git a/screenshots/Firefox/baseline/action-list/mixed actions definition.png b/screenshots/Firefox/baseline/action-list/mixed actions definition.png index 95b5a66..0f657d0 100644 Binary files a/screenshots/Firefox/baseline/action-list/mixed actions definition.png and b/screenshots/Firefox/baseline/action-list/mixed actions definition.png differ diff --git a/screenshots/Firefox/baseline/action-list/more vert with labels.png b/screenshots/Firefox/baseline/action-list/more vert with labels.png index 2eb4e3a..b567b22 100644 Binary files a/screenshots/Firefox/baseline/action-list/more vert with labels.png and b/screenshots/Firefox/baseline/action-list/more vert with labels.png differ diff --git a/screenshots/Firefox/baseline/action-list/more vert without labels.png b/screenshots/Firefox/baseline/action-list/more vert without labels.png index c4cfdb0..897aef0 100644 Binary files a/screenshots/Firefox/baseline/action-list/more vert without labels.png and b/screenshots/Firefox/baseline/action-list/more vert without labels.png differ diff --git a/screenshots/Firefox/baseline/action-list/no-actions.png b/screenshots/Firefox/baseline/action-list/no-actions.png index e60a56d..2de6444 100644 Binary files a/screenshots/Firefox/baseline/action-list/no-actions.png and b/screenshots/Firefox/baseline/action-list/no-actions.png differ diff --git a/screenshots/Firefox/baseline/action-list/one additional action.png b/screenshots/Firefox/baseline/action-list/one additional action.png index 6e97cda..c0beb49 100644 Binary files a/screenshots/Firefox/baseline/action-list/one additional action.png and b/screenshots/Firefox/baseline/action-list/one additional action.png differ diff --git a/screenshots/Firefox/baseline/action-list/primary-action.png b/screenshots/Firefox/baseline/action-list/primary-action.png index 428e6ff..38809d5 100644 Binary files a/screenshots/Firefox/baseline/action-list/primary-action.png and b/screenshots/Firefox/baseline/action-list/primary-action.png differ diff --git a/screenshots/Firefox/baseline/action-list/two additional actions.png b/screenshots/Firefox/baseline/action-list/two additional actions.png index 24b0799..807e8a7 100644 Binary files a/screenshots/Firefox/baseline/action-list/two additional actions.png and b/screenshots/Firefox/baseline/action-list/two additional actions.png differ diff --git a/screenshots/Firefox/baseline/selection-list/filterable.png b/screenshots/Firefox/baseline/selection-list/filterable.png index 89ce59d..c51df6a 100644 Binary files a/screenshots/Firefox/baseline/selection-list/filterable.png and b/screenshots/Firefox/baseline/selection-list/filterable.png differ diff --git a/screenshots/Firefox/baseline/selection-list/filtered.png b/screenshots/Firefox/baseline/selection-list/filtered.png index 4bf855b..51a173f 100644 Binary files a/screenshots/Firefox/baseline/selection-list/filtered.png and b/screenshots/Firefox/baseline/selection-list/filtered.png differ diff --git a/screenshots/Firefox/baseline/selection-list/pre-selection-list.png b/screenshots/Firefox/baseline/selection-list/pre-selection-list.png index 9ad2f02..31685f9 100644 Binary files a/screenshots/Firefox/baseline/selection-list/pre-selection-list.png and b/screenshots/Firefox/baseline/selection-list/pre-selection-list.png differ