Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ export class UmbIconPickerModalElement extends UmbModalBaseElement<UmbIconPicker
this.consumeContext(UMB_ICON_REGISTRY_CONTEXT, (context) => {
this.observe(context?.approvedIcons, (icons) => {
this.#icons = icons;
if (this.data?.filter) {
this.#icons = this.#icons.filter((icon) => {
if (Array.isArray(this.data.filter)) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @bjarnef

Great to see you taking action on this one.

I will have to say, from a Seperation Of Concerns perspective, I would like the Icon Picker Modal to be as little knowledgeable of the implementation as posible.

So ideally, to align with other Pickers, the filter going into the modal would be a method that takes the whole model for Icons. So defined like this:

filter?: (item: UmbIconDefinition) => boolean;.

In this way the Icon Picker implementation can run the logic of its choice.
— Like I dream that we one day have keywords as part of the Icon model, and categories, and this filtering methods could be used for that as well. :-) I hope that makes sense, thanks

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nielslyngsoe great suggestion and I was looking with a possible type for regex, there's a RegExp, but no type for pattern although there are suggestions here: microsoft/TypeScript#41160

In custom code of we can control filter for the modal and possible later passed in as config to property editor #20632

But in core icon picker, I think we should consider this as well. In this case I don't want my custom registered icons to show up in icon picker for content types and some may register icons used for custom features in e.g. a dashboard, while it may not make sense this appear in icon picker.

return this.data.filter.some((f) => icon.name.toLowerCase().startsWith(f.toLowerCase()));
}
return icon.name.match(new RegExp(this.data.filter, "i"));
});
}
this.#filterIcons();
});
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { UmbModalToken } from '@umbraco-cms/backoffice/modal';

export interface UmbIconPickerModalData {
filter?: string[] | string;
placeholder?: string;
showEmptyOption?: boolean;
}
Expand Down
Loading