@fieldia/viewer 0.19.1 → 0.20.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/README.md +18 -0
- package/bundle/fieldia.ar.js +2 -2
- package/bundle/fieldia.ar.js.map +2 -2
- package/bundle/fieldia.choice.js +5 -0
- package/bundle/fieldia.choice.js.map +7 -0
- package/bundle/fieldia.de.js +2 -2
- package/bundle/fieldia.de.js.map +2 -2
- package/bundle/fieldia.filters.js +5 -0
- package/bundle/fieldia.filters.js.map +7 -0
- package/bundle/fieldia.fr.js +2 -2
- package/bundle/fieldia.fr.js.map +2 -2
- package/bundle/fieldia.head.js +5 -0
- package/bundle/fieldia.head.js.map +7 -0
- package/bundle/fieldia.js +44 -44
- package/bundle/fieldia.js.map +4 -4
- package/bundle/fieldia.path.js +5 -0
- package/bundle/fieldia.path.js.map +7 -0
- package/bundle/fieldia.text.js +24 -0
- package/bundle/fieldia.text.js.map +7 -0
- package/package.json +7 -3
- package/src/index.d.mts +2 -1
- package/src/index.d.ts +2 -1
- package/src/index.js +6 -1
- package/src/index.js.map +1 -1
- package/src/index.mjs +1 -0
- package/src/index.mjs.map +1 -1
- package/src/lib/button-parts.d.mts +30 -0
- package/src/lib/button-parts.d.ts +30 -0
- package/src/lib/button-parts.js +24 -0
- package/src/lib/button-parts.js.map +1 -0
- package/src/lib/button-parts.mjs +18 -0
- package/src/lib/button-parts.mjs.map +1 -0
- package/src/lib/dialog-window.d.mts +11 -0
- package/src/lib/dialog-window.d.ts +11 -0
- package/src/lib/dialog-window.js +86 -0
- package/src/lib/dialog-window.js.map +1 -0
- package/src/lib/dialog-window.mjs +82 -0
- package/src/lib/dialog-window.mjs.map +1 -0
- package/src/lib/dialog.d.mts +14 -3
- package/src/lib/dialog.d.ts +14 -3
- package/src/lib/dialog.js +84 -14
- package/src/lib/dialog.js.map +1 -1
- package/src/lib/dialog.mjs +85 -15
- package/src/lib/dialog.mjs.map +1 -1
- package/src/lib/filter-bar.d.mts +39 -0
- package/src/lib/filter-bar.d.ts +39 -0
- package/src/lib/filter-bar.js +290 -0
- package/src/lib/filter-bar.js.map +1 -0
- package/src/lib/filter-bar.mjs +287 -0
- package/src/lib/filter-bar.mjs.map +1 -0
- package/src/lib/filter-styles.d.mts +4 -0
- package/src/lib/filter-styles.d.ts +4 -0
- package/src/lib/filter-styles.js +63 -0
- package/src/lib/filter-styles.js.map +1 -0
- package/src/lib/filter-styles.mjs +59 -0
- package/src/lib/filter-styles.mjs.map +1 -0
- package/src/lib/filters-part.d.mts +8 -0
- package/src/lib/filters-part.d.ts +8 -0
- package/src/lib/filters-part.js +14 -0
- package/src/lib/filters-part.js.map +1 -0
- package/src/lib/filters-part.mjs +9 -0
- package/src/lib/filters-part.mjs.map +1 -0
- package/src/lib/group-styles.d.mts +9 -0
- package/src/lib/group-styles.d.ts +9 -0
- package/src/lib/group-styles.js +64 -0
- package/src/lib/group-styles.js.map +1 -0
- package/src/lib/group-styles.mjs +60 -0
- package/src/lib/group-styles.mjs.map +1 -0
- package/src/lib/head-part.d.mts +15 -0
- package/src/lib/head-part.d.ts +15 -0
- package/src/lib/head-part.js +26 -0
- package/src/lib/head-part.js.map +1 -0
- package/src/lib/head-part.mjs +16 -0
- package/src/lib/head-part.mjs.map +1 -0
- package/src/lib/head-styles.d.mts +28 -0
- package/src/lib/head-styles.d.ts +28 -0
- package/src/lib/head-styles.js +320 -0
- package/src/lib/head-styles.js.map +1 -0
- package/src/lib/head-styles.mjs +316 -0
- package/src/lib/head-styles.mjs.map +1 -0
- package/src/lib/labels.d.mts +29 -0
- package/src/lib/labels.d.ts +29 -0
- package/src/lib/labels.js +16 -0
- package/src/lib/labels.js.map +1 -1
- package/src/lib/labels.mjs +16 -0
- package/src/lib/labels.mjs.map +1 -1
- package/src/lib/list-styles.d.mts +1 -1
- package/src/lib/list-styles.d.ts +1 -1
- package/src/lib/list-styles.js +88 -1
- package/src/lib/list-styles.js.map +1 -1
- package/src/lib/list-styles.mjs +88 -1
- package/src/lib/list-styles.mjs.map +1 -1
- package/src/lib/list.d.mts +16 -1
- package/src/lib/list.d.ts +16 -1
- package/src/lib/list.js +281 -51
- package/src/lib/list.js.map +1 -1
- package/src/lib/list.mjs +282 -52
- package/src/lib/list.mjs.map +1 -1
- package/src/lib/locales/ar.js +16 -0
- package/src/lib/locales/ar.js.map +1 -1
- package/src/lib/locales/ar.mjs +16 -0
- package/src/lib/locales/ar.mjs.map +1 -1
- package/src/lib/locales/de.js +16 -0
- package/src/lib/locales/de.js.map +1 -1
- package/src/lib/locales/de.mjs +16 -0
- package/src/lib/locales/de.mjs.map +1 -1
- package/src/lib/locales/fr.js +16 -0
- package/src/lib/locales/fr.js.map +1 -1
- package/src/lib/locales/fr.mjs +16 -0
- package/src/lib/locales/fr.mjs.map +1 -1
- package/src/lib/look.d.mts +1 -1
- package/src/lib/look.d.ts +1 -1
- package/src/lib/look.js +3 -0
- package/src/lib/look.js.map +1 -1
- package/src/lib/look.mjs +3 -0
- package/src/lib/look.mjs.map +1 -1
- package/src/lib/record-bar.d.mts +10 -1
- package/src/lib/record-bar.d.ts +10 -1
- package/src/lib/record-bar.js +15 -7
- package/src/lib/record-bar.js.map +1 -1
- package/src/lib/record-bar.mjs +14 -7
- package/src/lib/record-bar.mjs.map +1 -1
- package/src/lib/record-head.d.mts +58 -0
- package/src/lib/record-head.d.ts +58 -0
- package/src/lib/record-head.js +245 -0
- package/src/lib/record-head.js.map +1 -0
- package/src/lib/record-head.mjs +240 -0
- package/src/lib/record-head.mjs.map +1 -0
- package/src/lib/rich-button.d.mts +12 -0
- package/src/lib/rich-button.d.ts +12 -0
- package/src/lib/rich-button.js +186 -0
- package/src/lib/rich-button.js.map +1 -0
- package/src/lib/rich-button.mjs +183 -0
- package/src/lib/rich-button.mjs.map +1 -0
- package/src/lib/section-head.d.mts +26 -0
- package/src/lib/section-head.d.ts +26 -0
- package/src/lib/section-head.js +65 -0
- package/src/lib/section-head.js.map +1 -0
- package/src/lib/section-head.mjs +56 -0
- package/src/lib/section-head.mjs.map +1 -0
- package/src/lib/section-tools.d.mts +12 -0
- package/src/lib/section-tools.d.ts +12 -0
- package/src/lib/section-tools.js +124 -0
- package/src/lib/section-tools.js.map +1 -0
- package/src/lib/section-tools.mjs +121 -0
- package/src/lib/section-tools.mjs.map +1 -0
- package/src/lib/viewer-parts.d.mts +33 -0
- package/src/lib/viewer-parts.d.ts +33 -0
- package/src/lib/viewer-parts.js +75 -0
- package/src/lib/viewer-parts.js.map +1 -0
- package/src/lib/viewer-parts.mjs +70 -0
- package/src/lib/viewer-parts.mjs.map +1 -0
- package/src/lib/viewer.d.mts +30 -7
- package/src/lib/viewer.d.ts +30 -7
- package/src/lib/viewer.js +317 -97
- package/src/lib/viewer.js.map +1 -1
- package/src/lib/viewer.mjs +319 -99
- package/src/lib/viewer.mjs.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-bar.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filter-bar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { suggestions } from '@fieldia/core';
|
|
2
|
+
import { drawIcon } from '@fieldia/widgets';
|
|
3
|
+
import { installFilterStyles } from './filter-styles.mjs';
|
|
4
|
+
/** How long typing rests before the keyword is looked for. */
|
|
5
|
+
const KEYWORD_PAUSE = 250;
|
|
6
|
+
/**
|
|
7
|
+
* A list's filter bar (`search: "fields"`), as a work tracker's backlog has
|
|
8
|
+
* it: "Filter by keyword" looks in the list's search fields; each field of
|
|
9
|
+
* `filterFields` has a list of its values to tick, its button in muted words
|
|
10
|
+
* until some are ticked, then the words ticked; × clears every filter; the
|
|
11
|
+
* gear chooses which fields the bar offers, each by its own name where the
|
|
12
|
+
* page gives one (`filterLabels`). A field's values are its
|
|
13
|
+
* choices, yes and no, or those its records hold (a link's, through the data
|
|
14
|
+
* source). Keys: ↓ opens a list, the arrows move, Space ticks, Escape closes.
|
|
15
|
+
*/
|
|
16
|
+
export function filterBar(context) {
|
|
17
|
+
const { page, node, doc, el, labels, fill, uid } = context;
|
|
18
|
+
installFilterStyles(doc);
|
|
19
|
+
const fields = (node.filterFields ?? []).filter((name) => page.fields[name]);
|
|
20
|
+
const icon = (name, className) => {
|
|
21
|
+
const drawn = drawIcon(doc, name, context.icons);
|
|
22
|
+
drawn?.setAttribute('aria-hidden', 'true');
|
|
23
|
+
if (className)
|
|
24
|
+
drawn?.classList.add(className);
|
|
25
|
+
return drawn ? [drawn] : [];
|
|
26
|
+
};
|
|
27
|
+
// ---- what is asked for: a keyword, each field's values ticked, and anything else the list started with ----
|
|
28
|
+
let keyword = '';
|
|
29
|
+
const picks = new Map();
|
|
30
|
+
/** Searches this bar does not draw (the list's default filters, a map's area): they apply until cleared. */
|
|
31
|
+
let others = [];
|
|
32
|
+
for (const facet of context.facets) {
|
|
33
|
+
const own = facet.kind === 'field' && fields.includes(facet.field) && facet.values.every((v) => v.op === '=' || v.op === 'contains');
|
|
34
|
+
if (own)
|
|
35
|
+
picks.set(facet.field, facet.values.map((v) => ({ value: v.value, label: v.label })));
|
|
36
|
+
else
|
|
37
|
+
others.push(facet);
|
|
38
|
+
}
|
|
39
|
+
const opFor = (field) => (page.fields[field]?.type === 'many2many' ? 'contains' : '=');
|
|
40
|
+
/** The keyword in any of the search fields: their words, a choice by its label, a number as it is. */
|
|
41
|
+
const keywordFilter = (text) => {
|
|
42
|
+
const found = suggestions(text, page, node).map((s) => ({ field: s.field, op: s.op, value: s.value }));
|
|
43
|
+
return [{ any: found }];
|
|
44
|
+
};
|
|
45
|
+
const facets = () => [
|
|
46
|
+
...others,
|
|
47
|
+
...fields.flatMap((field) => {
|
|
48
|
+
const ticked = picks.get(field) ?? [];
|
|
49
|
+
return ticked.length ? [{ kind: 'field', field, label: page.fields[field].label, values: ticked.map((p) => ({ op: opFor(field), value: p.value, label: p.label })) }] : [];
|
|
50
|
+
}),
|
|
51
|
+
...(keyword ? [{ kind: 'custom', label: keyword, filter: keywordFilter(keyword) }] : []),
|
|
52
|
+
];
|
|
53
|
+
const changed = () => {
|
|
54
|
+
drawButtons();
|
|
55
|
+
context.onChange(facets());
|
|
56
|
+
};
|
|
57
|
+
// ---- the keyword ----------------------------------------------------------------------------------
|
|
58
|
+
const input = el('input', { type: 'search', class: 'fd-filter-keyword', placeholder: labels.filterByKeyword, 'aria-label': labels.filterByKeyword, autocomplete: 'off', enterkeyhint: 'search' });
|
|
59
|
+
let pause = null;
|
|
60
|
+
const takeKeyword = () => {
|
|
61
|
+
if (pause)
|
|
62
|
+
clearTimeout(pause);
|
|
63
|
+
pause = null;
|
|
64
|
+
const next = input.value.trim();
|
|
65
|
+
if (next === keyword)
|
|
66
|
+
return;
|
|
67
|
+
keyword = next;
|
|
68
|
+
changed();
|
|
69
|
+
};
|
|
70
|
+
input.addEventListener('input', () => {
|
|
71
|
+
if (pause)
|
|
72
|
+
clearTimeout(pause);
|
|
73
|
+
pause = setTimeout(takeKeyword, KEYWORD_PAUSE);
|
|
74
|
+
});
|
|
75
|
+
input.addEventListener('keydown', (event) => {
|
|
76
|
+
if (event.isComposing)
|
|
77
|
+
return;
|
|
78
|
+
if (event.key === 'Enter') {
|
|
79
|
+
// Never the form's Enter: a list has nothing to send.
|
|
80
|
+
event.preventDefault();
|
|
81
|
+
takeKeyword();
|
|
82
|
+
}
|
|
83
|
+
else if (event.key === 'Escape' && input.value) {
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
input.value = '';
|
|
87
|
+
takeKeyword();
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
// ---- a list of values to tick, for each field ---------------------------------------------------------
|
|
91
|
+
/** Which fields the bar offers: all unless the person took some away with the gear. */
|
|
92
|
+
const shownKey = `filters:${page.id}:${node.id}`;
|
|
93
|
+
const hiddenFields = () => {
|
|
94
|
+
const kept = context.preferences.get(shownKey);
|
|
95
|
+
return Array.isArray(kept) ? kept.filter((name) => typeof name === 'string') : [];
|
|
96
|
+
};
|
|
97
|
+
/** A field's values to tick: its choices, yes and no, or those its records hold. */
|
|
98
|
+
async function valuesOf(field) {
|
|
99
|
+
const def = page.fields[field];
|
|
100
|
+
if (def.type === 'selection')
|
|
101
|
+
return def.options.map((option) => ({ value: option.value, label: option.label }));
|
|
102
|
+
if (def.type === 'boolean')
|
|
103
|
+
return [{ value: true, label: labels.yes }, { value: false, label: labels.no }];
|
|
104
|
+
const source = context.dataSource;
|
|
105
|
+
if (def.type === 'many2many') {
|
|
106
|
+
const found = (await source?.search?.({ model: def.relation, query: '', limit: 100 })) ?? [];
|
|
107
|
+
return found.map((record) => ({ value: record.id, label: record.label }));
|
|
108
|
+
}
|
|
109
|
+
const groups = (await source?.groups?.({ model: context.model, field, filter: context.fixedFilter() })) ?? [];
|
|
110
|
+
return groups.filter((group) => group.value !== null && group.label !== '').map((group) => ({ value: group.value, label: group.label || String(group.value) }));
|
|
111
|
+
}
|
|
112
|
+
const same = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
113
|
+
const openMenus = [];
|
|
114
|
+
/** Close every list but `keep`. */
|
|
115
|
+
const closeOthers = (keep) => {
|
|
116
|
+
for (const close of openMenus)
|
|
117
|
+
if (close !== keep)
|
|
118
|
+
close();
|
|
119
|
+
};
|
|
120
|
+
function menuFor(button, menu, load) {
|
|
121
|
+
const items = () => [...menu.querySelectorAll('[role^="menuitem"]')];
|
|
122
|
+
const close = (focusBack = false) => {
|
|
123
|
+
if (menu.hidden)
|
|
124
|
+
return;
|
|
125
|
+
menu.hidden = true;
|
|
126
|
+
button.setAttribute('aria-expanded', 'false');
|
|
127
|
+
if (focusBack)
|
|
128
|
+
button.focus();
|
|
129
|
+
};
|
|
130
|
+
const open = async (at = 'checked') => {
|
|
131
|
+
closeOthers(closer);
|
|
132
|
+
menu.hidden = false;
|
|
133
|
+
button.setAttribute('aria-expanded', 'true');
|
|
134
|
+
await load();
|
|
135
|
+
if (menu.hidden)
|
|
136
|
+
return;
|
|
137
|
+
const all = items();
|
|
138
|
+
const first = at === 'last' ? all[all.length - 1] : at === 'checked' ? (all.find((item) => item.getAttribute('aria-checked') === 'true') ?? all[0]) : all[0];
|
|
139
|
+
first?.focus();
|
|
140
|
+
};
|
|
141
|
+
const closer = () => close();
|
|
142
|
+
openMenus.push(closer);
|
|
143
|
+
button.addEventListener('click', () => (menu.hidden ? void open() : close()));
|
|
144
|
+
button.addEventListener('keydown', (event) => {
|
|
145
|
+
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
|
146
|
+
event.preventDefault();
|
|
147
|
+
void open(event.key === 'ArrowUp' ? 'last' : 'first');
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
menu.addEventListener('keydown', (event) => {
|
|
151
|
+
const all = items();
|
|
152
|
+
const at = all.indexOf(doc.activeElement);
|
|
153
|
+
const to = { ArrowDown: at + 1, ArrowUp: at - 1, Home: 0, End: all.length - 1 }[event.key];
|
|
154
|
+
if (to !== undefined) {
|
|
155
|
+
event.preventDefault();
|
|
156
|
+
all[(to + all.length) % all.length]?.focus();
|
|
157
|
+
}
|
|
158
|
+
else if (event.key === ' ' || event.key === 'Enter') {
|
|
159
|
+
event.preventDefault();
|
|
160
|
+
doc.activeElement?.click();
|
|
161
|
+
}
|
|
162
|
+
else if (event.key === 'Escape') {
|
|
163
|
+
event.preventDefault();
|
|
164
|
+
// Only the list closes: not a dialog the list is in.
|
|
165
|
+
event.stopPropagation();
|
|
166
|
+
close(true);
|
|
167
|
+
}
|
|
168
|
+
else if (event.key === 'Tab')
|
|
169
|
+
close();
|
|
170
|
+
});
|
|
171
|
+
return { close };
|
|
172
|
+
}
|
|
173
|
+
/** A row of the list: a box ticked or not, and the value's words. */
|
|
174
|
+
const tickRow = (text, checked, onClick) => {
|
|
175
|
+
const row = el('div', { role: 'menuitemcheckbox', class: 'fd-filter-option', tabindex: '-1', 'aria-checked': String(checked) }, el('span', { class: 'fd-filter-box', 'aria-hidden': 'true' }, ...icon('check')), el('span', { class: 'fd-filter-option-text' }, text));
|
|
176
|
+
row.addEventListener('click', onClick);
|
|
177
|
+
return row;
|
|
178
|
+
};
|
|
179
|
+
const dropdowns = fields.map((field) => {
|
|
180
|
+
// Its own name where the page gives one ("Iteration" for Iteration Path): on its button, its list and the gear's.
|
|
181
|
+
const def = { ...page.fields[field], label: node.filterLabels?.[field] ?? page.fields[field].label };
|
|
182
|
+
const menuId = uid(`${node.id}-filter-${field}`);
|
|
183
|
+
const words = el('span', { class: 'fd-filter-words' });
|
|
184
|
+
const button = el('button', { type: 'button', class: 'fd-filter-pick', 'data-field': field, 'aria-haspopup': 'menu', 'aria-expanded': 'false', 'aria-controls': menuId }, words, ...icon('chevron-down', 'fd-filter-chevron'));
|
|
185
|
+
const menu = el('div', { class: 'fd-filter-menu', role: 'menu', id: menuId, 'aria-label': fill(labels.filterNamed, { label: def.label }), hidden: '' });
|
|
186
|
+
let known = [];
|
|
187
|
+
const draw = () => {
|
|
188
|
+
const ticked = picks.get(field) ?? [];
|
|
189
|
+
// What is ticked first, though the records no longer hold it; then the rest, in their order.
|
|
190
|
+
const all = [...ticked.filter((p) => !known.some((k) => same(k.value, p.value))), ...known];
|
|
191
|
+
menu.replaceChildren(...all.map((option) => {
|
|
192
|
+
const on = ticked.some((p) => same(p.value, option.value));
|
|
193
|
+
return tickRow(option.label, on, () => {
|
|
194
|
+
const now = picks.get(field) ?? [];
|
|
195
|
+
const next = on ? now.filter((p) => !same(p.value, option.value)) : [...now, option];
|
|
196
|
+
if (next.length)
|
|
197
|
+
picks.set(field, next);
|
|
198
|
+
else
|
|
199
|
+
picks.delete(field);
|
|
200
|
+
const focused = [...menu.children].indexOf(doc.activeElement);
|
|
201
|
+
changed();
|
|
202
|
+
draw();
|
|
203
|
+
menu.children[focused]?.focus();
|
|
204
|
+
});
|
|
205
|
+
}));
|
|
206
|
+
};
|
|
207
|
+
const { close } = menuFor(button, menu, async () => {
|
|
208
|
+
known = await valuesOf(field);
|
|
209
|
+
draw();
|
|
210
|
+
});
|
|
211
|
+
const holder = el('span', { class: 'fd-filter-field', 'data-field': field }, button, menu);
|
|
212
|
+
return { field, def, button, words, holder, close };
|
|
213
|
+
});
|
|
214
|
+
function drawButtons() {
|
|
215
|
+
const hidden = new Set(hiddenFields());
|
|
216
|
+
for (const { field, def, button, words, holder } of dropdowns) {
|
|
217
|
+
holder.hidden = hidden.has(field);
|
|
218
|
+
const ticked = picks.get(field) ?? [];
|
|
219
|
+
button.toggleAttribute('data-picked', ticked.length > 0);
|
|
220
|
+
// The field's name read out before what is ticked, which alone shows: "Work Item Type: Bug".
|
|
221
|
+
words.replaceChildren(...(ticked.length ? [el('span', { class: 'fd-sr-only' }, `${def.label}: `), ticked.map((p) => p.label).join(', ')] : [def.label]));
|
|
222
|
+
}
|
|
223
|
+
clear.hidden = !keyword && !others.length && ![...picks.values()].some((p) => p.length);
|
|
224
|
+
}
|
|
225
|
+
// ---- the gear: which fields the bar offers ------------------------------------------------------------
|
|
226
|
+
const settingsId = uid(`${node.id}-filter-settings`);
|
|
227
|
+
const gear = el('button', { type: 'button', class: 'fd-filter-tool', 'aria-label': labels.filterSettings, title: labels.filterSettings, 'aria-haspopup': 'menu', 'aria-expanded': 'false', 'aria-controls': settingsId }, ...icon('gear'));
|
|
228
|
+
const settings = el('div', { class: 'fd-filter-menu fd-filter-settings', role: 'menu', id: settingsId, 'aria-label': labels.filterSettings, hidden: '' });
|
|
229
|
+
const drawSettings = () => {
|
|
230
|
+
const hidden = new Set(hiddenFields());
|
|
231
|
+
settings.replaceChildren(...dropdowns.map(({ field, def }) => tickRow(def.label, !hidden.has(field), () => {
|
|
232
|
+
const next = hidden.has(field) ? [...hidden].filter((f) => f !== field) : [...hidden, field];
|
|
233
|
+
context.preferences.set(shownKey, next);
|
|
234
|
+
// A field taken away from the bar no longer filters the list.
|
|
235
|
+
if (!hidden.has(field) && picks.delete(field))
|
|
236
|
+
changed();
|
|
237
|
+
else
|
|
238
|
+
drawButtons();
|
|
239
|
+
const focused = [...settings.children].indexOf(doc.activeElement);
|
|
240
|
+
drawSettings();
|
|
241
|
+
settings.children[focused]?.focus();
|
|
242
|
+
})));
|
|
243
|
+
};
|
|
244
|
+
const gearMenu = menuFor(gear, settings, drawSettings);
|
|
245
|
+
const gearHolder = el('span', { class: 'fd-filter-field' }, gear, settings);
|
|
246
|
+
gearHolder.hidden = dropdowns.length === 0;
|
|
247
|
+
// ---- × clears every filter ------------------------------------------------------------------------------
|
|
248
|
+
const clear = el('button', { type: 'button', class: 'fd-filter-tool fd-filter-clear', 'aria-label': labels.clearFilters, title: labels.clearFilters }, ...icon('close'));
|
|
249
|
+
clear.addEventListener('click', () => {
|
|
250
|
+
keyword = '';
|
|
251
|
+
input.value = '';
|
|
252
|
+
picks.clear();
|
|
253
|
+
others = [];
|
|
254
|
+
changed();
|
|
255
|
+
input.focus();
|
|
256
|
+
});
|
|
257
|
+
const element = el('div', { class: 'fd-filter-bar', role: 'search', 'data-node': `${node.id}-filters` }, el('label', { class: 'fd-filter-search' }, ...icon('filter-lines', 'fd-filter-icon'), input), el('div', { class: 'fd-filter-fields' }, ...dropdowns.map((d) => d.holder), gearHolder, clear));
|
|
258
|
+
// A press anywhere else closes an open list.
|
|
259
|
+
const outside = (event) => {
|
|
260
|
+
if (!element.contains(event.target))
|
|
261
|
+
closeOthers();
|
|
262
|
+
};
|
|
263
|
+
doc.addEventListener('pointerdown', outside);
|
|
264
|
+
element.addEventListener('focusout', (event) => {
|
|
265
|
+
if (!element.contains(event.relatedTarget) && event.relatedTarget)
|
|
266
|
+
closeOthers();
|
|
267
|
+
});
|
|
268
|
+
drawButtons();
|
|
269
|
+
return {
|
|
270
|
+
element,
|
|
271
|
+
/** A search put in from outside (a map's "In this area"): it applies with the rest, one with the same words in its place. */
|
|
272
|
+
add(facet) {
|
|
273
|
+
const words = facet.kind === 'custom' ? facet.label : null;
|
|
274
|
+
others = [...others.filter((f) => !(words !== null && f.kind === 'custom' && f.label === words)), facet];
|
|
275
|
+
changed();
|
|
276
|
+
},
|
|
277
|
+
destroy() {
|
|
278
|
+
if (pause)
|
|
279
|
+
clearTimeout(pause);
|
|
280
|
+
doc.removeEventListener('pointerdown', outside);
|
|
281
|
+
gearMenu.close();
|
|
282
|
+
for (const dropdown of dropdowns)
|
|
283
|
+
dropdown.close();
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=filter-bar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-bar.mjs","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filter-bar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** The filter bar (filter-bar.ts): the filters part's sheet, put after the list's own the first time a list draws one. */
|
|
2
|
+
export declare const FILTER_CSS = "\n/* The filter bar (search \"fields\"): a card with a keyword box at its start, each field's list of values at its end, then the gear and \u00D7. */\n.fd-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; flex: 1 1 100%; min-width: 0; min-height: 45px; box-sizing: border-box; padding: 6px 8px 6px 16px; padding-inline: 16px 8px; background: var(--fd-surface); border-radius: var(--fd-radius); box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }\n.fd-filter-search { flex: 1 1 200px; min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--fd-muted); }\n.fd-filter-icon { width: 16px; height: 16px; flex: none; }\n.fd-filter-keyword { flex: 1; min-width: 0; border: 0; outline: none; background: none; font: inherit; font-size: 14px; color: var(--fd-text); padding: 6px 0; }\n.fd-filter-keyword::placeholder { color: var(--fd-muted); opacity: 1; }\n.fd-filter-keyword::-webkit-search-cancel-button { display: none; }\n.fd-filter-search:focus-within { box-shadow: inset 0 -2px 0 var(--fd-focus); }\n.fd-filter-fields { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-inline-start: auto; }\n.fd-filter-field { position: relative; display: inline-flex; }\n.fd-filter-pick { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; max-width: 220px; min-height: 32px; padding-inline: 8px; border-radius: 2px; font-size: 14px; color: var(--fd-muted); }\n.fd-filter-pick[data-picked] { color: var(--fd-text); font-weight: 600; }\n.fd-filter-words { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.fd-filter-chevron { width: 16px; height: 16px; flex: none; color: var(--fd-muted); }\n.fd-filter-tool { all: unset; box-sizing: border-box; cursor: pointer; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 2px; color: var(--fd-muted); }\n.fd-filter-clear { color: var(--fd-text); }\n.fd-filter-tool svg { width: 16px; height: 16px; }\n.fd-filter-pick:hover, .fd-filter-tool:hover, .fd-filter-pick[aria-expanded=\"true\"], .fd-filter-tool[aria-expanded=\"true\"] { background: var(--fd-page); }\n.fd-filter-pick:focus-visible, .fd-filter-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }\n.fd-filter-menu { position: absolute; z-index: 30; inset-inline-end: 0; top: calc(100% + 4px); box-sizing: border-box; min-width: 200px; max-width: min(320px, 90vw); max-height: 320px; overflow: auto; padding-block: 4px; background: var(--fd-surface); border-radius: 4px; box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }\n.fd-filter-option { display: flex; align-items: center; gap: 10px; min-height: 32px; padding-inline: 12px; cursor: pointer; font-size: 14px; color: var(--fd-text); outline: none; }\n.fd-filter-option:hover { background: var(--fd-page); }\n.fd-filter-option:focus-visible, .fd-filter-option:focus { background: var(--fd-page); box-shadow: inset 0 0 0 1px var(--fd-focus); }\n.fd-filter-box { display: grid; place-items: center; width: 16px; height: 16px; flex: none; box-sizing: border-box; border: 1px solid var(--fd-border-strong); border-radius: 2px; color: transparent; }\n.fd-filter-box svg { width: 12px; height: 12px; }\n.fd-filter-option[aria-checked=\"true\"] .fd-filter-box { background: var(--fd-accent); border-color: var(--fd-accent); color: var(--fd-accent-text, #fff); }\n.fd-filter-option-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n/* Fluent's filter bar: a card 50px tall, its words a little above the middle, 16px over the table's card (measured). */\n.fd-form[data-fd-theme=\"fluent\"] .fd-list:has(> .fd-list-bar > .fd-filter-bar) { row-gap: 16px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-bar { min-height: 50px; padding-block: 7px 5px; padding-inline-end: 10px; }\n/* Its fields 28px apart, word to word, each with a chevron 12px by 7 in a one-pixel line a shade lighter than the words,\n a pixel above their middle; the settings' small light cog 24px after the last chevron, the \u00D7 12px wide further on\n (measured on 08_18: the chevrons #8a8a8a, Tags' ending at 1790, the cog at 1815). */\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-fields { gap: 6px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-chevron {\n position: relative; inset-block-start: -1px; width: 22px; height: 22px; margin-inline: -3px -1px; stroke-width: 1.1; color: var(--fd-muted);\n}\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-tool:not(.fd-filter-clear) { margin-inline-start: -5px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-tool:not(.fd-filter-clear) svg { width: 13px; height: 13px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-clear { margin-inline-start: 4px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-clear svg { width: 19px; height: 19px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-list-scroll { border: 0; border-radius: 4px; box-shadow: 0 1.6px 3.6px rgba(0, 0, 0, 0.132), 0 0.3px 0.9px rgba(0, 0, 0, 0.108); }\n";
|
|
3
|
+
/** The sheet in a document, once: after the list's own (list-styles.ts), whose rules it adds to. */
|
|
4
|
+
export declare function installFilterStyles(doc: Document): void;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** The filter bar (filter-bar.ts): the filters part's sheet, put after the list's own the first time a list draws one. */
|
|
2
|
+
export declare const FILTER_CSS = "\n/* The filter bar (search \"fields\"): a card with a keyword box at its start, each field's list of values at its end, then the gear and \u00D7. */\n.fd-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; flex: 1 1 100%; min-width: 0; min-height: 45px; box-sizing: border-box; padding: 6px 8px 6px 16px; padding-inline: 16px 8px; background: var(--fd-surface); border-radius: var(--fd-radius); box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }\n.fd-filter-search { flex: 1 1 200px; min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--fd-muted); }\n.fd-filter-icon { width: 16px; height: 16px; flex: none; }\n.fd-filter-keyword { flex: 1; min-width: 0; border: 0; outline: none; background: none; font: inherit; font-size: 14px; color: var(--fd-text); padding: 6px 0; }\n.fd-filter-keyword::placeholder { color: var(--fd-muted); opacity: 1; }\n.fd-filter-keyword::-webkit-search-cancel-button { display: none; }\n.fd-filter-search:focus-within { box-shadow: inset 0 -2px 0 var(--fd-focus); }\n.fd-filter-fields { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-inline-start: auto; }\n.fd-filter-field { position: relative; display: inline-flex; }\n.fd-filter-pick { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; max-width: 220px; min-height: 32px; padding-inline: 8px; border-radius: 2px; font-size: 14px; color: var(--fd-muted); }\n.fd-filter-pick[data-picked] { color: var(--fd-text); font-weight: 600; }\n.fd-filter-words { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.fd-filter-chevron { width: 16px; height: 16px; flex: none; color: var(--fd-muted); }\n.fd-filter-tool { all: unset; box-sizing: border-box; cursor: pointer; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 2px; color: var(--fd-muted); }\n.fd-filter-clear { color: var(--fd-text); }\n.fd-filter-tool svg { width: 16px; height: 16px; }\n.fd-filter-pick:hover, .fd-filter-tool:hover, .fd-filter-pick[aria-expanded=\"true\"], .fd-filter-tool[aria-expanded=\"true\"] { background: var(--fd-page); }\n.fd-filter-pick:focus-visible, .fd-filter-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }\n.fd-filter-menu { position: absolute; z-index: 30; inset-inline-end: 0; top: calc(100% + 4px); box-sizing: border-box; min-width: 200px; max-width: min(320px, 90vw); max-height: 320px; overflow: auto; padding-block: 4px; background: var(--fd-surface); border-radius: 4px; box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }\n.fd-filter-option { display: flex; align-items: center; gap: 10px; min-height: 32px; padding-inline: 12px; cursor: pointer; font-size: 14px; color: var(--fd-text); outline: none; }\n.fd-filter-option:hover { background: var(--fd-page); }\n.fd-filter-option:focus-visible, .fd-filter-option:focus { background: var(--fd-page); box-shadow: inset 0 0 0 1px var(--fd-focus); }\n.fd-filter-box { display: grid; place-items: center; width: 16px; height: 16px; flex: none; box-sizing: border-box; border: 1px solid var(--fd-border-strong); border-radius: 2px; color: transparent; }\n.fd-filter-box svg { width: 12px; height: 12px; }\n.fd-filter-option[aria-checked=\"true\"] .fd-filter-box { background: var(--fd-accent); border-color: var(--fd-accent); color: var(--fd-accent-text, #fff); }\n.fd-filter-option-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n/* Fluent's filter bar: a card 50px tall, its words a little above the middle, 16px over the table's card (measured). */\n.fd-form[data-fd-theme=\"fluent\"] .fd-list:has(> .fd-list-bar > .fd-filter-bar) { row-gap: 16px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-bar { min-height: 50px; padding-block: 7px 5px; padding-inline-end: 10px; }\n/* Its fields 28px apart, word to word, each with a chevron 12px by 7 in a one-pixel line a shade lighter than the words,\n a pixel above their middle; the settings' small light cog 24px after the last chevron, the \u00D7 12px wide further on\n (measured on 08_18: the chevrons #8a8a8a, Tags' ending at 1790, the cog at 1815). */\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-fields { gap: 6px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-chevron {\n position: relative; inset-block-start: -1px; width: 22px; height: 22px; margin-inline: -3px -1px; stroke-width: 1.1; color: var(--fd-muted);\n}\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-tool:not(.fd-filter-clear) { margin-inline-start: -5px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-tool:not(.fd-filter-clear) svg { width: 13px; height: 13px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-clear { margin-inline-start: 4px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-clear svg { width: 19px; height: 19px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-list-scroll { border: 0; border-radius: 4px; box-shadow: 0 1.6px 3.6px rgba(0, 0, 0, 0.132), 0 0.3px 0.9px rgba(0, 0, 0, 0.108); }\n";
|
|
3
|
+
/** The sheet in a document, once: after the list's own (list-styles.ts), whose rules it adds to. */
|
|
4
|
+
export declare function installFilterStyles(doc: Document): void;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FILTER_CSS = void 0;
|
|
4
|
+
exports.installFilterStyles = installFilterStyles;
|
|
5
|
+
/** The filter bar (filter-bar.ts): the filters part's sheet, put after the list's own the first time a list draws one. */
|
|
6
|
+
exports.FILTER_CSS = `
|
|
7
|
+
/* The filter bar (search "fields"): a card with a keyword box at its start, each field's list of values at its end, then the gear and ×. */
|
|
8
|
+
.fd-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; flex: 1 1 100%; min-width: 0; min-height: 45px; box-sizing: border-box; padding: 6px 8px 6px 16px; padding-inline: 16px 8px; background: var(--fd-surface); border-radius: var(--fd-radius); box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }
|
|
9
|
+
.fd-filter-search { flex: 1 1 200px; min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--fd-muted); }
|
|
10
|
+
.fd-filter-icon { width: 16px; height: 16px; flex: none; }
|
|
11
|
+
.fd-filter-keyword { flex: 1; min-width: 0; border: 0; outline: none; background: none; font: inherit; font-size: 14px; color: var(--fd-text); padding: 6px 0; }
|
|
12
|
+
.fd-filter-keyword::placeholder { color: var(--fd-muted); opacity: 1; }
|
|
13
|
+
.fd-filter-keyword::-webkit-search-cancel-button { display: none; }
|
|
14
|
+
.fd-filter-search:focus-within { box-shadow: inset 0 -2px 0 var(--fd-focus); }
|
|
15
|
+
.fd-filter-fields { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-inline-start: auto; }
|
|
16
|
+
.fd-filter-field { position: relative; display: inline-flex; }
|
|
17
|
+
.fd-filter-pick { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; max-width: 220px; min-height: 32px; padding-inline: 8px; border-radius: 2px; font-size: 14px; color: var(--fd-muted); }
|
|
18
|
+
.fd-filter-pick[data-picked] { color: var(--fd-text); font-weight: 600; }
|
|
19
|
+
.fd-filter-words { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
20
|
+
.fd-filter-chevron { width: 16px; height: 16px; flex: none; color: var(--fd-muted); }
|
|
21
|
+
.fd-filter-tool { all: unset; box-sizing: border-box; cursor: pointer; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 2px; color: var(--fd-muted); }
|
|
22
|
+
.fd-filter-clear { color: var(--fd-text); }
|
|
23
|
+
.fd-filter-tool svg { width: 16px; height: 16px; }
|
|
24
|
+
.fd-filter-pick:hover, .fd-filter-tool:hover, .fd-filter-pick[aria-expanded="true"], .fd-filter-tool[aria-expanded="true"] { background: var(--fd-page); }
|
|
25
|
+
.fd-filter-pick:focus-visible, .fd-filter-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }
|
|
26
|
+
.fd-filter-menu { position: absolute; z-index: 30; inset-inline-end: 0; top: calc(100% + 4px); box-sizing: border-box; min-width: 200px; max-width: min(320px, 90vw); max-height: 320px; overflow: auto; padding-block: 4px; background: var(--fd-surface); border-radius: 4px; box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }
|
|
27
|
+
.fd-filter-option { display: flex; align-items: center; gap: 10px; min-height: 32px; padding-inline: 12px; cursor: pointer; font-size: 14px; color: var(--fd-text); outline: none; }
|
|
28
|
+
.fd-filter-option:hover { background: var(--fd-page); }
|
|
29
|
+
.fd-filter-option:focus-visible, .fd-filter-option:focus { background: var(--fd-page); box-shadow: inset 0 0 0 1px var(--fd-focus); }
|
|
30
|
+
.fd-filter-box { display: grid; place-items: center; width: 16px; height: 16px; flex: none; box-sizing: border-box; border: 1px solid var(--fd-border-strong); border-radius: 2px; color: transparent; }
|
|
31
|
+
.fd-filter-box svg { width: 12px; height: 12px; }
|
|
32
|
+
.fd-filter-option[aria-checked="true"] .fd-filter-box { background: var(--fd-accent); border-color: var(--fd-accent); color: var(--fd-accent-text, #fff); }
|
|
33
|
+
.fd-filter-option-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
34
|
+
/* Fluent's filter bar: a card 50px tall, its words a little above the middle, 16px over the table's card (measured). */
|
|
35
|
+
.fd-form[data-fd-theme="fluent"] .fd-list:has(> .fd-list-bar > .fd-filter-bar) { row-gap: 16px; }
|
|
36
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-bar { min-height: 50px; padding-block: 7px 5px; padding-inline-end: 10px; }
|
|
37
|
+
/* Its fields 28px apart, word to word, each with a chevron 12px by 7 in a one-pixel line a shade lighter than the words,
|
|
38
|
+
a pixel above their middle; the settings' small light cog 24px after the last chevron, the × 12px wide further on
|
|
39
|
+
(measured on 08_18: the chevrons #8a8a8a, Tags' ending at 1790, the cog at 1815). */
|
|
40
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-fields { gap: 6px; }
|
|
41
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-chevron {
|
|
42
|
+
position: relative; inset-block-start: -1px; width: 22px; height: 22px; margin-inline: -3px -1px; stroke-width: 1.1; color: var(--fd-muted);
|
|
43
|
+
}
|
|
44
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-tool:not(.fd-filter-clear) { margin-inline-start: -5px; }
|
|
45
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-tool:not(.fd-filter-clear) svg { width: 13px; height: 13px; }
|
|
46
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-clear { margin-inline-start: 4px; }
|
|
47
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-clear svg { width: 19px; height: 19px; }
|
|
48
|
+
.fd-form[data-fd-theme="fluent"] .fd-list-scroll { border: 0; border-radius: 4px; box-shadow: 0 1.6px 3.6px rgba(0, 0, 0, 0.132), 0 0.3px 0.9px rgba(0, 0, 0, 0.108); }
|
|
49
|
+
`;
|
|
50
|
+
/** The sheet in a document, once: after the list's own (list-styles.ts), whose rules it adds to. */
|
|
51
|
+
function installFilterStyles(doc) {
|
|
52
|
+
if (doc.getElementById('fd-filter-styles'))
|
|
53
|
+
return;
|
|
54
|
+
const style = doc.createElement('style');
|
|
55
|
+
style.id = 'fd-filter-styles';
|
|
56
|
+
style.textContent = exports.FILTER_CSS;
|
|
57
|
+
const list = doc.getElementById('fd-list-styles');
|
|
58
|
+
if (list)
|
|
59
|
+
list.after(style);
|
|
60
|
+
else
|
|
61
|
+
doc.head.append(style);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=filter-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-styles.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filter-styles.ts"],"names":[],"mappings":";;;AA+CA,kDAQC;AAvDD,0HAA0H;AAC7G,QAAA,UAAU,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CnC,CAAC;AAEF,oGAAoG;AACpG,SAAgB,mBAAmB,CAAC,GAAa;IAC/C,IAAI,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC;QAAE,OAAO;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,kBAAkB,CAAC;IAC9B,KAAK,CAAC,WAAW,GAAG,kBAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAClD,IAAI,IAAI;QAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;QACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** The filter bar (filter-bar.ts): the filters part's sheet, put after the list's own the first time a list draws one. */
|
|
2
|
+
export const FILTER_CSS = /* css */ `
|
|
3
|
+
/* The filter bar (search "fields"): a card with a keyword box at its start, each field's list of values at its end, then the gear and ×. */
|
|
4
|
+
.fd-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; flex: 1 1 100%; min-width: 0; min-height: 45px; box-sizing: border-box; padding: 6px 8px 6px 16px; padding-inline: 16px 8px; background: var(--fd-surface); border-radius: var(--fd-radius); box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }
|
|
5
|
+
.fd-filter-search { flex: 1 1 200px; min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--fd-muted); }
|
|
6
|
+
.fd-filter-icon { width: 16px; height: 16px; flex: none; }
|
|
7
|
+
.fd-filter-keyword { flex: 1; min-width: 0; border: 0; outline: none; background: none; font: inherit; font-size: 14px; color: var(--fd-text); padding: 6px 0; }
|
|
8
|
+
.fd-filter-keyword::placeholder { color: var(--fd-muted); opacity: 1; }
|
|
9
|
+
.fd-filter-keyword::-webkit-search-cancel-button { display: none; }
|
|
10
|
+
.fd-filter-search:focus-within { box-shadow: inset 0 -2px 0 var(--fd-focus); }
|
|
11
|
+
.fd-filter-fields { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-inline-start: auto; }
|
|
12
|
+
.fd-filter-field { position: relative; display: inline-flex; }
|
|
13
|
+
.fd-filter-pick { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; max-width: 220px; min-height: 32px; padding-inline: 8px; border-radius: 2px; font-size: 14px; color: var(--fd-muted); }
|
|
14
|
+
.fd-filter-pick[data-picked] { color: var(--fd-text); font-weight: 600; }
|
|
15
|
+
.fd-filter-words { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
16
|
+
.fd-filter-chevron { width: 16px; height: 16px; flex: none; color: var(--fd-muted); }
|
|
17
|
+
.fd-filter-tool { all: unset; box-sizing: border-box; cursor: pointer; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 2px; color: var(--fd-muted); }
|
|
18
|
+
.fd-filter-clear { color: var(--fd-text); }
|
|
19
|
+
.fd-filter-tool svg { width: 16px; height: 16px; }
|
|
20
|
+
.fd-filter-pick:hover, .fd-filter-tool:hover, .fd-filter-pick[aria-expanded="true"], .fd-filter-tool[aria-expanded="true"] { background: var(--fd-page); }
|
|
21
|
+
.fd-filter-pick:focus-visible, .fd-filter-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }
|
|
22
|
+
.fd-filter-menu { position: absolute; z-index: 30; inset-inline-end: 0; top: calc(100% + 4px); box-sizing: border-box; min-width: 200px; max-width: min(320px, 90vw); max-height: 320px; overflow: auto; padding-block: 4px; background: var(--fd-surface); border-radius: 4px; box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }
|
|
23
|
+
.fd-filter-option { display: flex; align-items: center; gap: 10px; min-height: 32px; padding-inline: 12px; cursor: pointer; font-size: 14px; color: var(--fd-text); outline: none; }
|
|
24
|
+
.fd-filter-option:hover { background: var(--fd-page); }
|
|
25
|
+
.fd-filter-option:focus-visible, .fd-filter-option:focus { background: var(--fd-page); box-shadow: inset 0 0 0 1px var(--fd-focus); }
|
|
26
|
+
.fd-filter-box { display: grid; place-items: center; width: 16px; height: 16px; flex: none; box-sizing: border-box; border: 1px solid var(--fd-border-strong); border-radius: 2px; color: transparent; }
|
|
27
|
+
.fd-filter-box svg { width: 12px; height: 12px; }
|
|
28
|
+
.fd-filter-option[aria-checked="true"] .fd-filter-box { background: var(--fd-accent); border-color: var(--fd-accent); color: var(--fd-accent-text, #fff); }
|
|
29
|
+
.fd-filter-option-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
30
|
+
/* Fluent's filter bar: a card 50px tall, its words a little above the middle, 16px over the table's card (measured). */
|
|
31
|
+
.fd-form[data-fd-theme="fluent"] .fd-list:has(> .fd-list-bar > .fd-filter-bar) { row-gap: 16px; }
|
|
32
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-bar { min-height: 50px; padding-block: 7px 5px; padding-inline-end: 10px; }
|
|
33
|
+
/* Its fields 28px apart, word to word, each with a chevron 12px by 7 in a one-pixel line a shade lighter than the words,
|
|
34
|
+
a pixel above their middle; the settings' small light cog 24px after the last chevron, the × 12px wide further on
|
|
35
|
+
(measured on 08_18: the chevrons #8a8a8a, Tags' ending at 1790, the cog at 1815). */
|
|
36
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-fields { gap: 6px; }
|
|
37
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-chevron {
|
|
38
|
+
position: relative; inset-block-start: -1px; width: 22px; height: 22px; margin-inline: -3px -1px; stroke-width: 1.1; color: var(--fd-muted);
|
|
39
|
+
}
|
|
40
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-tool:not(.fd-filter-clear) { margin-inline-start: -5px; }
|
|
41
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-tool:not(.fd-filter-clear) svg { width: 13px; height: 13px; }
|
|
42
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-clear { margin-inline-start: 4px; }
|
|
43
|
+
.fd-form[data-fd-theme="fluent"] .fd-filter-clear svg { width: 19px; height: 19px; }
|
|
44
|
+
.fd-form[data-fd-theme="fluent"] .fd-list-scroll { border: 0; border-radius: 4px; box-shadow: 0 1.6px 3.6px rgba(0, 0, 0, 0.132), 0 0.3px 0.9px rgba(0, 0, 0, 0.108); }
|
|
45
|
+
`;
|
|
46
|
+
/** The sheet in a document, once: after the list's own (list-styles.ts), whose rules it adds to. */
|
|
47
|
+
export function installFilterStyles(doc) {
|
|
48
|
+
if (doc.getElementById('fd-filter-styles'))
|
|
49
|
+
return;
|
|
50
|
+
const style = doc.createElement('style');
|
|
51
|
+
style.id = 'fd-filter-styles';
|
|
52
|
+
style.textContent = FILTER_CSS;
|
|
53
|
+
const list = doc.getElementById('fd-list-styles');
|
|
54
|
+
if (list)
|
|
55
|
+
list.after(style);
|
|
56
|
+
else
|
|
57
|
+
doc.head.append(style);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=filter-styles.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-styles.mjs","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filter-styles.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CnC,CAAC;AAEF,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CAAC,GAAa;IAC/C,IAAI,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC;QAAE,OAAO;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,kBAAkB,CAAC;IAC9B,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAClD,IAAI,IAAI;QAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;QACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The filters part (parts.ts in @fieldia/widgets): a list's filter bar — a
|
|
3
|
+
* keyword, each field's values to tick, the gear choosing the fields, × that
|
|
4
|
+
* clears them — and its stylesheet. Loaded the first time a list draws one,
|
|
5
|
+
* through `filtersPart`; the viewer waits for it before it draws that list.
|
|
6
|
+
*/
|
|
7
|
+
export { filterBar } from './filter-bar.mjs';
|
|
8
|
+
export { installFilterStyles } from './filter-styles.mjs';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The filters part (parts.ts in @fieldia/widgets): a list's filter bar — a
|
|
3
|
+
* keyword, each field's values to tick, the gear choosing the fields, × that
|
|
4
|
+
* clears them — and its stylesheet. Loaded the first time a list draws one,
|
|
5
|
+
* through `filtersPart`; the viewer waits for it before it draws that list.
|
|
6
|
+
*/
|
|
7
|
+
export { filterBar } from './filter-bar';
|
|
8
|
+
export { installFilterStyles } from './filter-styles';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.installFilterStyles = exports.filterBar = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The filters part (parts.ts in @fieldia/widgets): a list's filter bar — a
|
|
6
|
+
* keyword, each field's values to tick, the gear choosing the fields, × that
|
|
7
|
+
* clears them — and its stylesheet. Loaded the first time a list draws one,
|
|
8
|
+
* through `filtersPart`; the viewer waits for it before it draws that list.
|
|
9
|
+
*/
|
|
10
|
+
var filter_bar_1 = require("./filter-bar");
|
|
11
|
+
Object.defineProperty(exports, "filterBar", { enumerable: true, get: function () { return filter_bar_1.filterBar; } });
|
|
12
|
+
var filter_styles_1 = require("./filter-styles");
|
|
13
|
+
Object.defineProperty(exports, "installFilterStyles", { enumerable: true, get: function () { return filter_styles_1.installFilterStyles; } });
|
|
14
|
+
//# sourceMappingURL=filters-part.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters-part.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filters-part.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The filters part (parts.ts in @fieldia/widgets): a list's filter bar — a
|
|
3
|
+
* keyword, each field's values to tick, the gear choosing the fields, × that
|
|
4
|
+
* clears them — and its stylesheet. Loaded the first time a list draws one,
|
|
5
|
+
* through `filtersPart`; the viewer waits for it before it draws that list.
|
|
6
|
+
*/
|
|
7
|
+
export { filterBar } from './filter-bar.mjs';
|
|
8
|
+
export { installFilterStyles } from './filter-styles.mjs';
|
|
9
|
+
//# sourceMappingURL=filters-part.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters-part.mjs","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filters-part.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A group drawn as a work item draws one (section-tools.ts): its heading with
|
|
3
|
+
* its tools at the end — ⤢, ^ and ⌄ — its fields under it, and the group shown
|
|
4
|
+
* alone over the body. The head part's, put in its place among Fieldia's the
|
|
5
|
+
* first time a page draws such a heading (installPartStyles, PART_RANK.groups).
|
|
6
|
+
*/
|
|
7
|
+
export declare const GROUP_CSS = "\n/* ---- a group's heading with tools at its end: 16px words, a rule 50px down ---- */\n.fd-form .fd-section[data-head] { gap: 0; --fd-group-inset: 8px; }\n.fd-form .fd-section[data-head] > .fd-section-title {\n display: flex; align-items: center; float: none; width: 100%; box-sizing: border-box; min-height: 51px; margin: 0; padding: 0;\n border-block-end: 1px solid var(--fd-border); font-size: 16px; font-weight: 600; line-height: 22px; color: var(--fd-heading, var(--fd-text));\n text-transform: none; letter-spacing: 0;\n}\n.fd-form .fd-section[data-head] > .fd-section-title > .fd-section-name { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }\n.fd-form .fd-section[data-head] > .fd-section-title .fd-icon { margin-inline-end: 0.4em; }\n.fd-form .fd-section[data-head] > .fd-grid { padding: 4px var(--fd-group-inset) 0; row-gap: 7px; }\n/* Its fields: a 12px label on a 16px line right over a 32px box, words 7px into it, 55px from one label to the next. */\n.fd-form .fd-section[data-head] { --fd-pad-x: 6px; --fd-control-height: 32px; }\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field { gap: 0; line-height: 20px; }\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field > .fd-label { font-size: 12px; line-height: 16px; font-weight: 400; color: var(--fd-muted); }\n/* A number's box is a compact one, 22px: 45px from its label to the next one, as the tracker's numbers (measured 20.22.23). */\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field:is([data-type=\"integer\"], [data-type=\"float\"]) > input.fd-input { height: 22px; min-height: 22px; padding-block: 0; }\n/* A lock in such a group is drawn in the words' colour, a padlock 12px wide and 13px tall, as the tracker's. */\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field .fd-lock { color: var(--fd-text); }\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field .fd-lock .fd-icon { width: 15px; height: 15px; }\n/* At a value's start, its padlock's edge a pixel past the label's, as the tracker's: the 18px button pulled 2px back and up. */\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field[data-lock-at=\"value\"] > .fd-lock-wrap { margin-inline-start: -2px; inset-block-start: -1.5px; }\n/* Groups with such headings, one under another: 11px from one's last part to the next one's heading. */\n.fd-form .fd-grid:has(> .fd-section[data-head]) { row-gap: 11px; }\n.fd-section-tools { display: flex; align-items: center; gap: 2px; margin-inline-start: auto; flex: none; opacity: 0; transition: opacity 0.1s ease; }\n/* In a work heading its tools sit low, their middle 8px under the title's, as the tracker's do (measured 20.22.23). */\n.fd-form .fd-section[data-head] > .fd-section-title .fd-section-tools { align-self: flex-end; margin-block-end: 1px; margin-inline-end: -2px; }\n/* Pointed at, worked in or folded, a group shows its tools; where nothing can point, always. */\n.fd-form .fd-section[data-head]:is(:hover, :focus-within, .fd-section-folded, [data-maximised]) > .fd-section-title .fd-section-tools { opacity: 1; }\n@media (hover: none) { .fd-section-tools { opacity: 1; } }\n.fd-section-tool {\n display: inline-grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 0; border-radius: 2px;\n background: none; color: var(--fd-text); cursor: pointer; font: inherit;\n}\n.fd-section-tool:hover { background: var(--fd-text-hover); }\n.fd-section-tool:active { background: var(--fd-text-pressed); }\n.fd-section-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }\n/* Their icons 18px in lines one pixel wide, of the words' colour: \u2922 13px across, ^ 9px, \u270E 13px, as the tracker's (measured 20.22.23). */\n.fd-section-tool svg { width: 18px; height: 18px; stroke-width: 1.34; }\n/* In the words' colour too in a heading, whose own icon before its name is muted. */\n.fd-section-title .fd-section-tools .fd-icon { color: inherit; }\n/* Shown alone over the body: the parts round it out of sight, its own heading still there to put it back. */\n.fd-form [data-unshown] { display: none !important; }\n.fd-form .fd-grid[data-maximising] { grid-template-columns: minmax(0, 1fr) !important; }\n.fd-form .fd-grid[data-maximising] > * { grid-column: 1 / -1 !important; }\n.fd-form .fd-section[data-maximised] { min-height: 60vh; }\n\n";
|
|
8
|
+
/** The sheet in a document, once, in its place among Fieldia's. */
|
|
9
|
+
export declare function installGroupStyles(doc: Document): void;
|