@leavittsoftware/web 2.16.1 → 2.17.0
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leavittsoftware/web",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.17.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"files": [
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"url": "https://github.com/LeavittSoftware/titanium-elements/issues"
|
|
41
41
|
},
|
|
42
42
|
"homepage": "https://github.com/LeavittSoftware/titanium-elements/#readme",
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "c58d1e3fef8c8d44458755ee3b6586f045fd5a91"
|
|
44
44
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { PropertyValues } from 'lit';
|
|
1
2
|
import { TitaniumSingleSelectBase } from '../../titanium/single-select-base/single-select-base';
|
|
2
3
|
export type MaterialIconDatabaseEntry = {
|
|
3
4
|
Id: number;
|
|
4
5
|
keywords: string;
|
|
5
6
|
icon: string;
|
|
7
|
+
favorite?: boolean;
|
|
6
8
|
};
|
|
7
9
|
/**
|
|
8
10
|
* Titanium icon picker - a picker for material icons
|
|
@@ -15,9 +17,19 @@ export declare class TitaniumIconPicker extends TitaniumSingleSelectBase<Materia
|
|
|
15
17
|
accessor label: string;
|
|
16
18
|
accessor placeholder: string;
|
|
17
19
|
accessor pathToSelectedText: string;
|
|
20
|
+
/**
|
|
21
|
+
* Optional: A string list of icons names that are presented at the top of the suggestion list.
|
|
22
|
+
*/
|
|
23
|
+
accessor favorites: string | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Optional: A string list of icons names to make available to user. If non provided, all icons will be available
|
|
26
|
+
*/
|
|
27
|
+
accessor whitelist: string | undefined;
|
|
18
28
|
firstUpdated(): Promise<void>;
|
|
29
|
+
update(changed: PropertyValues<this>): void;
|
|
19
30
|
protected onInputChanged(searchTerm: string): void;
|
|
20
31
|
protected renderSelectedLeadingInputSlot(entity: MaterialIconDatabaseEntry): import("lit-html").TemplateResult<1>;
|
|
32
|
+
static styles: import("lit").CSSResult[];
|
|
21
33
|
protected renderSuggestion(entity: MaterialIconDatabaseEntry): import("lit-html").TemplateResult<1>;
|
|
22
34
|
}
|
|
23
35
|
//# sourceMappingURL=icon-picker.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html } from 'lit';
|
|
2
|
+
import { css, html } from 'lit';
|
|
3
3
|
import { property, customElement } from 'lit/decorators.js';
|
|
4
4
|
import Fuse from 'fuse.js';
|
|
5
5
|
import { TitaniumSingleSelectBase } from '../../titanium/single-select-base/single-select-base';
|
|
@@ -21,14 +21,44 @@ let TitaniumIconPicker = class TitaniumIconPicker extends TitaniumSingleSelectBa
|
|
|
21
21
|
#pathToSelectedText_accessor_storage = 'icon';
|
|
22
22
|
get pathToSelectedText() { return this.#pathToSelectedText_accessor_storage; }
|
|
23
23
|
set pathToSelectedText(value) { this.#pathToSelectedText_accessor_storage = value; }
|
|
24
|
-
#
|
|
24
|
+
#favorites_accessor_storage;
|
|
25
|
+
/**
|
|
26
|
+
* Optional: A string list of icons names that are presented at the top of the suggestion list.
|
|
27
|
+
*/
|
|
28
|
+
get favorites() { return this.#favorites_accessor_storage; }
|
|
29
|
+
set favorites(value) { this.#favorites_accessor_storage = value; }
|
|
30
|
+
#whitelist_accessor_storage;
|
|
31
|
+
/**
|
|
32
|
+
* Optional: A string list of icons names to make available to user. If non provided, all icons will be available
|
|
33
|
+
*/
|
|
34
|
+
get whitelist() { return this.#whitelist_accessor_storage; }
|
|
35
|
+
set whitelist(value) { this.#whitelist_accessor_storage = value; }
|
|
36
|
+
#iconDatabase = [];
|
|
25
37
|
async firstUpdated() {
|
|
26
|
-
this.#iconDatabase =
|
|
38
|
+
this.#iconDatabase = this.#generateDatabase();
|
|
39
|
+
this.defaultSuggestions = this.#generateSuggestions();
|
|
40
|
+
}
|
|
41
|
+
update(changed) {
|
|
42
|
+
if (changed.has('favorites') || changed.has('whitelist')) {
|
|
43
|
+
this.#iconDatabase = this.#generateDatabase();
|
|
44
|
+
this.defaultSuggestions = this.#generateSuggestions();
|
|
45
|
+
}
|
|
46
|
+
super.update(changed);
|
|
47
|
+
}
|
|
48
|
+
#generateDatabase() {
|
|
49
|
+
const whitelist = this.whitelist?.split(',');
|
|
50
|
+
const favoriteIcons = this.favorites?.split(',');
|
|
51
|
+
return MaterialSymbols.filter((icon) => whitelist?.some((w) => icon === w) ?? true)
|
|
52
|
+
.map((icon, i) => ({
|
|
27
53
|
Id: i + 1,
|
|
28
54
|
icon: icon,
|
|
29
55
|
keywords: icon,
|
|
30
|
-
|
|
31
|
-
|
|
56
|
+
favorite: favoriteIcons?.some((o) => o === icon),
|
|
57
|
+
}))
|
|
58
|
+
.sort((a, b) => (b.favorite ? 1 : 0) - (a.favorite ? 1 : 0) || a.icon.localeCompare(b.icon));
|
|
59
|
+
}
|
|
60
|
+
#generateSuggestions() {
|
|
61
|
+
return this.#iconDatabase?.slice(0, 50);
|
|
32
62
|
}
|
|
33
63
|
#doSearchDebouncer = new Debouncer((searchTerm) => this.#doSearch(searchTerm));
|
|
34
64
|
#abortController = new AbortController();
|
|
@@ -55,12 +85,45 @@ let TitaniumIconPicker = class TitaniumIconPicker extends TitaniumSingleSelectBa
|
|
|
55
85
|
renderSelectedLeadingInputSlot(entity) {
|
|
56
86
|
return html ` <md-icon slot="leading-icon">${entity.icon}</md-icon> `;
|
|
57
87
|
}
|
|
88
|
+
static { this.styles = [
|
|
89
|
+
...TitaniumSingleSelectBase.styles,
|
|
90
|
+
css `
|
|
91
|
+
md-menu-item[inert] {
|
|
92
|
+
--md-menu-item-bottom-space: 4px;
|
|
93
|
+
--md-menu-item-top-space: 4px;
|
|
94
|
+
--md-menu-item-two-line-container-height: 50px;
|
|
95
|
+
background-color: var(--md-sys-color-surface-container-high);
|
|
96
|
+
--md-menu-item-supporting-text-size: 12px;
|
|
97
|
+
}
|
|
98
|
+
`,
|
|
99
|
+
]; }
|
|
58
100
|
renderSuggestion(entity) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
101
|
+
const favorites = this.defaultSuggestions.filter((o) => o.favorite);
|
|
102
|
+
const nonFavorites = this.defaultSuggestions.filter((o) => !o.favorite);
|
|
103
|
+
return html `
|
|
104
|
+
${!this.searchTerm && favorites?.length && favorites.at(0) === entity
|
|
105
|
+
? html `<md-menu-item inert>
|
|
106
|
+
<md-icon slot="end">favorite</md-icon>
|
|
107
|
+
<div slot="headline">Favorite icon${favorites.length === 1 ? '' : 's'}</div>
|
|
108
|
+
<div slot="supporting-text">${favorites.length} most commonly used icon${favorites.length === 1 ? '' : 's'}</div>
|
|
109
|
+
</md-menu-item>`
|
|
110
|
+
: ''}
|
|
111
|
+
${!this.searchTerm && nonFavorites.at(0) === entity
|
|
112
|
+
? html `
|
|
113
|
+
<md-menu-item inert>
|
|
114
|
+
<md-icon slot="end">sort_by_alpha</md-icon>
|
|
115
|
+
<div slot="headline">All icons</div>
|
|
116
|
+
<div slot="supporting-text">Showing ${nonFavorites.length} of ${this.#iconDatabase.length - favorites.length}</div>
|
|
117
|
+
</md-menu-item>
|
|
118
|
+
`
|
|
119
|
+
: ''}
|
|
120
|
+
|
|
121
|
+
<md-menu-item .item=${entity} ?selected=${this.selected?.Id === entity.Id}>
|
|
122
|
+
<slot name="trailing-icon" slot="trailing-icon"></slot>
|
|
123
|
+
<span slot="headline">${entity.icon}</span>
|
|
124
|
+
<md-icon slot="start">${entity.icon}</md-icon>
|
|
125
|
+
</md-menu-item>
|
|
126
|
+
`;
|
|
64
127
|
}
|
|
65
128
|
};
|
|
66
129
|
__decorate([
|
|
@@ -72,6 +135,12 @@ __decorate([
|
|
|
72
135
|
__decorate([
|
|
73
136
|
property({ type: String })
|
|
74
137
|
], TitaniumIconPicker.prototype, "pathToSelectedText", null);
|
|
138
|
+
__decorate([
|
|
139
|
+
property({ type: String })
|
|
140
|
+
], TitaniumIconPicker.prototype, "favorites", null);
|
|
141
|
+
__decorate([
|
|
142
|
+
property({ type: String })
|
|
143
|
+
], TitaniumIconPicker.prototype, "whitelist", null);
|
|
75
144
|
TitaniumIconPicker = __decorate([
|
|
76
145
|
customElement('titanium-icon-picker')
|
|
77
146
|
], TitaniumIconPicker);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-picker.js","sourceRoot":"","sources":["icon-picker.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"icon-picker.js","sourceRoot":"","sources":["icon-picker.ts"],"names":[],"mappings":"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"}
|