Skip to content

Commit 4e6f3f6

Browse files
committed
2 parents 9bd3076 + 05010fc commit 4e6f3f6

File tree

9 files changed

+30
-34
lines changed

9 files changed

+30
-34
lines changed

src/Umbraco.Web.UI.Client/devops/eslint/rules/enforce-umb-prefix-on-element-name.cjs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,14 @@ module.exports = {
2323
if (isCustomElementDecorator) {
2424
const elementName = node.arguments[0].value;
2525

26-
// check if the element name starts with 'umb-', or 'test-', to be allow tests to have custom elements:
27-
const isElementNameValid = elementName.startsWith('umb-') ? true : elementName.startsWith('test-');
26+
// check if the element name starts with 'umb-', 'ufm-', or 'test-', to be allow tests to have custom elements:
27+
const prefixes = ['umb-', 'ufm-', 'test-'];
28+
const isElementNameValid = prefixes.some((prefix) => elementName.startsWith(prefix));
2829

2930
if (!isElementNameValid) {
3031
context.report({
3132
node,
32-
message: 'Custom Element name should start with "umb-".',
33+
message: 'Custom Element name should start with "umb-" or "ufm-".',
3334
// There is no fixer on purpose because it's not safe to automatically rename the element name.
3435
// Renaming should be done manually with consideration of potential impacts.
3536
});

src/Umbraco.Web.UI.Client/examples/ufm-custom-component/custom-ufm-component.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export class UmbCustomUfmComponent extends UmbUfmComponentBase {
1111
}
1212
}
1313

14-
// eslint-disable-next-line local-rules/enforce-umb-prefix-on-element-name
1514
@customElement('ufm-custom-component')
1615
export class UmbCustomUfmComponentElement extends UmbLitElement {
1716
@property()

src/Umbraco.Web.UI.Client/src/packages/ufm/components/content-name/content-name.element.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ import { UmbId } from '@umbraco-cms/backoffice/id';
66
import { UmbMediaItemRepository, UMB_MEDIA_ENTITY_TYPE } from '@umbraco-cms/backoffice/media';
77
import { UmbMemberItemRepository, UMB_MEMBER_ENTITY_TYPE } from '@umbraco-cms/backoffice/member';
88

9-
const elementName = 'ufm-content-name';
10-
11-
@customElement(elementName)
9+
@customElement('ufm-content-name')
1210
export class UmbUfmContentNameElement extends UmbUfmElementBase {
1311
@property()
1412
alias?: string;
@@ -95,6 +93,6 @@ export { UmbUfmContentNameElement as element };
9593

9694
declare global {
9795
interface HTMLElementTagNameMap {
98-
[elementName]: UmbUfmContentNameElement;
96+
'ufm-content-name': UmbUfmContentNameElement;
9997
}
10098
}

src/Umbraco.Web.UI.Client/src/packages/ufm/components/label-value/label-value.element.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ import { UMB_UFM_RENDER_CONTEXT } from '../ufm-render/ufm-render.context.js';
22
import { UmbUfmElementBase } from '../ufm-element-base.js';
33
import { customElement, property } from '@umbraco-cms/backoffice/external/lit';
44

5-
const elementName = 'ufm-label-value';
6-
7-
@customElement(elementName)
5+
@customElement('ufm-label-value')
86
export class UmbUfmLabelValueElement extends UmbUfmElementBase {
97
@property()
108
alias?: string;
@@ -32,6 +30,6 @@ export { UmbUfmLabelValueElement as element };
3230

3331
declare global {
3432
interface HTMLElementTagNameMap {
35-
[elementName]: UmbUfmLabelValueElement;
33+
'ufm-label-value': UmbUfmLabelValueElement;
3634
}
3735
}

src/Umbraco.Web.UI.Client/src/packages/ufm/components/link/link.element.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ import { UmbDocumentItemRepository, UMB_DOCUMENT_ENTITY_TYPE } from '@umbraco-cm
55
import { UmbMediaItemRepository, UMB_MEDIA_ENTITY_TYPE } from '@umbraco-cms/backoffice/media';
66
import type { UmbLinkPickerLink } from '@umbraco-cms/backoffice/multi-url-picker';
77

8-
const elementName = 'ufm-link';
9-
10-
@customElement(elementName)
8+
@customElement('ufm-link')
119
export class UmbUfmLinkElement extends UmbUfmElementBase {
1210
@property()
1311
alias?: string;
@@ -79,6 +77,6 @@ export { UmbUfmLinkElement as element };
7977

8078
declare global {
8179
interface HTMLElementTagNameMap {
82-
[elementName]: UmbUfmLinkElement;
80+
'ufm-link': UmbUfmLinkElement;
8381
}
8482
}

src/Umbraco.Web.UI.Client/src/packages/ufm/components/localize/localize.element.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import { UmbUfmElementBase } from '../ufm-element-base.js';
22
import { customElement, property } from '@umbraco-cms/backoffice/external/lit';
33

4-
const elementName = 'ufm-localize';
5-
6-
@customElement(elementName)
4+
@customElement('ufm-localize')
75
export class UmbUfmLocalizeElement extends UmbUfmElementBase {
86
@property()
97
public set alias(value: string | undefined) {
@@ -21,6 +19,6 @@ export { UmbUfmLocalizeElement as element };
2119

2220
declare global {
2321
interface HTMLElementTagNameMap {
24-
[elementName]: UmbUfmLocalizeElement;
22+
'ufm-localize': UmbUfmLocalizeElement;
2523
}
2624
}

src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-element-base.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { UMB_UFM_CONTEXT } from '../contexts/ufm.context.js';
2-
import { nothing, property, state } from '@umbraco-cms/backoffice/external/lit';
2+
import { property, state } from '@umbraco-cms/backoffice/external/lit';
33
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
44

55
export abstract class UmbUfmElementBase extends UmbLitElement {
66
#filterFuncArgs?: Array<{ alias: string; args: Array<string> }>;
77

8+
#ufmContext?: typeof UMB_UFM_CONTEXT.TYPE;
9+
810
@property()
911
public set filters(value: string | undefined) {
1012
this.#filters = value;
@@ -25,8 +27,6 @@ export abstract class UmbUfmElementBase extends UmbLitElement {
2527
@state()
2628
value?: unknown;
2729

28-
#ufmContext?: typeof UMB_UFM_CONTEXT.TYPE;
29-
3030
constructor() {
3131
super();
3232

@@ -36,16 +36,23 @@ export abstract class UmbUfmElementBase extends UmbLitElement {
3636
}
3737

3838
override render() {
39-
if (!this.#ufmContext) return nothing;
40-
4139
let values = Array.isArray(this.value) ? this.value : [this.value];
40+
4241
if (this.#filterFuncArgs) {
42+
const missing = new Set<string>();
43+
4344
for (const item of this.#filterFuncArgs) {
44-
const filter = this.#ufmContext.getFilterByAlias(item.alias);
45+
const filter = this.#ufmContext?.getFilterByAlias(item.alias);
4546
if (filter) {
4647
values = values.map((value) => filter(value, ...item.args));
48+
} else {
49+
missing.add(item.alias);
4750
}
4851
}
52+
53+
if (missing.size > 0) {
54+
console.warn(`UFM filters with aliases "${Array.from(missing).join('", "')}" were not found.`);
55+
}
4956
}
5057

5158
return values.join(', ');

src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-render/ufm-render.element.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import { css, customElement, nothing, property, unsafeHTML, until } from '@umbra
44
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
55
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
66

7-
const elementName = 'umb-ufm-render';
8-
9-
@customElement(elementName)
7+
@customElement('umb-ufm-render')
108
export class UmbUfmRenderElement extends UmbLitElement {
119
#context = new UmbUfmRenderContext(this);
1210

@@ -16,7 +14,8 @@ export class UmbUfmRenderElement extends UmbLitElement {
1614
@property()
1715
markdown?: string;
1816

19-
// No reactive property declaration cause its causing a re-render that is not needed. This just works as a shortcut to set the values on the context. [NL]
17+
// No reactive property declaration because it's causing a re-render that is not needed.
18+
// This just works as a shortcut to set the values on the context. [NL]
2019
public set value(value: string | unknown | undefined) {
2120
this.#context.setValue(value);
2221
}
@@ -75,6 +74,6 @@ export { UmbUfmRenderElement as element };
7574

7675
declare global {
7776
interface HTMLElementTagNameMap {
78-
[elementName]: UmbUfmRenderElement;
77+
'umb-ufm-render': UmbUfmRenderElement;
7978
}
8079
}

src/Umbraco.Web.UI.Client/src/packages/ufm/contexts/ufm.context.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ export const UmbMarked = new Marked({
3232
gfm: true,
3333
breaks: true,
3434
hooks: {
35-
postprocess: (markup) => {
36-
return UmbDomPurify.sanitize(markup, UmbDomPurifyConfig) as string;
37-
},
35+
postprocess: (markup) => UmbDomPurify.sanitize(markup, UmbDomPurifyConfig),
3836
},
3937
});
4038

0 commit comments

Comments
 (0)