Skip to content

Commit 90de93c

Browse files
committed
feat: Add exclude property to MyFeedElement (#64)
1 parent 02c4280 commit 90de93c

3 files changed

Lines changed: 31 additions & 8 deletions

File tree

demo/index.html

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
<!doctype html><html lang="en" style="opacity:0"><title> My Elements </title>
1+
<!doctype html><html lang="en"><title> My Elements </title>
22

33
<!-- <meta name="robots" content="noindex"> -->
44
<meta name="viewport" content="width=device-width,initial-scale=1">
55

6-
<link rel="stylesheet" href="style/app.css" />
6+
<link rel="stylesheet" href="style/app.v2.css" />
77

88
<my-page>
99

1010
<h2> Demo Index </h2>
1111

1212
<p> A collection of reusable custom elements (Web Components). </p>
1313

14-
<my-feed href="../src/feed.json" details="true" class="element-list" >
14+
<my-feed href="../src/feed.json" details="true" class="element-list"
15+
exclude="legacy, experiment" XX_include="my blog">
1516

1617
<ol>
1718
<li><a href="my-analytics.html" >my-analytics</a>
@@ -30,6 +31,16 @@ <h2> Demo Index </h2>
3031

3132
</my-page>
3233

34+
<script type="importmap">
35+
{
36+
"myElements": { "use": [ "my-feed" ] }
37+
}
38+
</script>
39+
40+
<script type="module" src="../i.js"></script>
41+
42+
<!--
3343
<script type="module" src="../my.js?use=my-feed,my-page"></script>
44+
-->
3445

3546
</html>

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@
4141
"start": "npm run build:feed && npx servor --reload",
4242
"inner:grep": "grep -rn '\\.innerHTML' src",
4343
"inner:count": "grep -r '\\.innerHTML =' src | wc -l",
44-
"myelem:count": "grep -r 'extends MyElement' src | wc -l",
44+
"count:myelem": "grep -r 'extends MyElement' src | wc -l",
45+
"grep:animate": "grep -rn -E '(transition|animation)' src/components",
4546
"fix": "npx eslint --fix",
4647
"lint": "npx eslint --fix",
4748
"test": "npm run lint && npm run inner:count"

src/components/MyFeedElement.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { appendTemplate, safeUrl, strip } from '../util/attachTemplate.js';
22
import MyTrustedTypes from '../util/MyTrustedTypes.js';
3-
// Was: import MyElement from '../MyElement.js';
43

54
const { fetch, HTMLElement, Request, location } = window;
65

@@ -27,6 +26,7 @@ export class MyFeedElement extends HTMLElement {
2726
}
2827

2928
get include () { return this.getAttribute('include'); }
29+
get exclude () { return this.getAttribute('exclude'); }
3030

3131
get isOpen () { return this.getAttribute('details') === 'open'; }
3232

@@ -74,22 +74,33 @@ export class MyFeedElement extends HTMLElement {
7474
return INCLUDE ? new RegExp(`(${INCLUDE.join('|')})`, 'i') : null;
7575
}
7676

77+
get #excludeRegex () {
78+
const EXCLUDE = this.exclude ? this.exclude.split(/,[ ]*/) : null;
79+
return EXCLUDE ? new RegExp(`(${EXCLUDE.join('|')})`, 'i') : null;
80+
}
81+
7782
#filterItems (items) {
7883
const filtered = this.include
7984
? items.filter(it => {
8085
return it && it.tags && it.tags.some(tag => this.#includeRegex.test(tag));
8186
})
8287
: items;
8388

84-
console.debug('my-feed ~ Filtered:', this.include, filtered);
89+
const filterExclude = this.exclude
90+
? filtered.filter(it => {
91+
return it && it.tags && !it.tags.some(tag => this.#excludeRegex.test(tag));
92+
})
93+
: filtered;
94+
95+
console.debug('my-feed ~ Filtered:', this.include, this.#excludeRegex, filterExclude);
8596

86-
return filtered;
97+
return filterExclude;
8798
}
8899

89100
get #policyId () { return 'allowAnchorListPlus'; }
90101

91102
#makeListItem (item, open) {
92-
const createHTML = (s) => this.#trustedTypes.createHTML(this.#policyId , s);
103+
const createHTML = (s) => this.#trustedTypes.createHTML(this.#policyId, s);
93104
const { skip, guid, link, pubDate, title, url, time, tags, content, content_html } = item; /* eslint-disable-line camelcase */
94105

95106
if (skip) return '<template><!-- skip --></template>';

0 commit comments

Comments
 (0)