@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,240 @@
|
|
|
1
|
+
import { displayValue, drawIcon } from '@fieldia/widgets';
|
|
2
|
+
import { setAttr, setHidden, setText } from './dom.mjs';
|
|
3
|
+
import { recordMenu } from './record-bar.mjs';
|
|
4
|
+
import { installHeadStyles } from './head-styles.mjs';
|
|
5
|
+
export function recordHead(context) {
|
|
6
|
+
const { el, form, page, sheet, head, labels, doc } = context;
|
|
7
|
+
installHeadStyles(doc);
|
|
8
|
+
const id = context.uid('head');
|
|
9
|
+
const watch = context.watch;
|
|
10
|
+
// ---- the white part: the strip, the badge row, the title line, the row ----
|
|
11
|
+
const strip = el('span', { class: 'fd-head-strip', 'aria-hidden': 'true' });
|
|
12
|
+
const badgeWords = el('bdi', { class: 'fd-head-badge-words' });
|
|
13
|
+
const badgeIcon = el('span', { class: 'fd-head-badge-icon', 'aria-hidden': 'true' });
|
|
14
|
+
const badge = el('span', { class: 'fd-head-badge', id: `${id}-badge`, 'data-head-name': '' }, badgeIcon, badgeWords);
|
|
15
|
+
const windowSlot = el('span', { class: 'fd-head-window' });
|
|
16
|
+
const badgeRow = el('div', { class: 'fd-head-badge-row' }, head.kind ? badge : el('span'), windowSlot);
|
|
17
|
+
const top = el('div', { class: 'fd-head-top' }, strip, badgeRow);
|
|
18
|
+
// The title line: the number and what else stands before it, the title, its Copy button.
|
|
19
|
+
const title = sheet.title;
|
|
20
|
+
if (title) {
|
|
21
|
+
const line = el('div', { class: 'fd-head-title' });
|
|
22
|
+
// The record's number stands as words, as an id does: never grouped, never a box to type in.
|
|
23
|
+
const numberField = head.kind?.numberField;
|
|
24
|
+
const side = (part) => {
|
|
25
|
+
if (part.field === numberField) {
|
|
26
|
+
const words = el('span', { class: 'fd-head-number', 'data-node': part.id });
|
|
27
|
+
watch((state) => {
|
|
28
|
+
setHidden(words, form.node(part.id).invisible);
|
|
29
|
+
setText(words, numberWords(state));
|
|
30
|
+
});
|
|
31
|
+
return words;
|
|
32
|
+
}
|
|
33
|
+
const drawn = context.fieldItem(part, 'hidden');
|
|
34
|
+
drawn.classList.add('fd-title-side');
|
|
35
|
+
return drawn;
|
|
36
|
+
};
|
|
37
|
+
const name = context.fieldItem({ type: 'field', id: '#title', field: title.field, placeholder: title.placeholder, ...(title.placeholderWhen ? { placeholderWhen: title.placeholderWhen } : {}), ...(title.focus ? { focus: true } : {}) }, 'hidden');
|
|
38
|
+
name.classList.add('fd-title-name');
|
|
39
|
+
line.append(...(title.before ?? []).map(side), name);
|
|
40
|
+
// The record's name for a dialog round it: its title's words, kept up to date, out of sight.
|
|
41
|
+
const named = el('span', { class: 'fd-sr-only', id: `${id}-title`, 'data-head-name': '' });
|
|
42
|
+
watch((state) => setText(named, String(state.values[title.field] ?? '')));
|
|
43
|
+
if (head.copyTitle !== false) {
|
|
44
|
+
const copy = el('button', { type: 'button', class: 'fd-head-copy', 'aria-label': labels.copyTitle, title: labels.copyTitle });
|
|
45
|
+
const icon = drawIcon(doc, 'copy', context.icons);
|
|
46
|
+
if (icon)
|
|
47
|
+
copy.append(icon);
|
|
48
|
+
copy.addEventListener('click', () => void copyTitle(String(form.getState().values[title.field] ?? '')));
|
|
49
|
+
line.append(copy);
|
|
50
|
+
}
|
|
51
|
+
line.append(...(title.after ?? []).map(side), named);
|
|
52
|
+
top.append(line);
|
|
53
|
+
}
|
|
54
|
+
const row = el('div', { class: 'fd-head-row' });
|
|
55
|
+
const meta = el('div', { class: 'fd-head-meta' }, ...(head.meta ?? []).map((part) => (part.type === 'link' ? headLink(part) : context.fieldItem(part, 'hidden'))));
|
|
56
|
+
const actions = el('div', { class: 'fd-head-actions' }, ...(head.actions ?? []).map((button) => context.buttonItem(button)));
|
|
57
|
+
// The record's gear menu, as ⋮ at the end.
|
|
58
|
+
const menu = sheet.toolbar?.menu ?? [];
|
|
59
|
+
if (menu.length) {
|
|
60
|
+
const updaters = [];
|
|
61
|
+
actions.append(recordMenu({ doc, el, form, labels, uid: context.uid, withIcon: context.withIcon, press: context.press }, menu, updaters, context.cleanups, 'more'));
|
|
62
|
+
watch(() => updaters.forEach((update) => update()));
|
|
63
|
+
}
|
|
64
|
+
row.append(meta, actions);
|
|
65
|
+
top.append(row);
|
|
66
|
+
// ---- the band: its fields, "Updated by", the tabs ----
|
|
67
|
+
const band = head.band;
|
|
68
|
+
const fields = el('div', { class: 'fd-head-fields' });
|
|
69
|
+
const tracks = band?.tracks ?? ['1fr', '1fr'];
|
|
70
|
+
fields.style.setProperty('--fd-head-tracks', tracks.join(' '));
|
|
71
|
+
if (band?.labelWidth)
|
|
72
|
+
fields.style.setProperty('--fd-head-label', `${band.labelWidth}px`);
|
|
73
|
+
fields.append(...(band?.children ?? []).map((child) => context.item(child, { columns: tracks.length, onPage: false, labels: 'beside', quiet: true })));
|
|
74
|
+
const aside = el('div', { class: 'fd-head-aside' });
|
|
75
|
+
const updated = head.updated ? updatedBy(head.updated) : null;
|
|
76
|
+
if (updated)
|
|
77
|
+
aside.append(updated);
|
|
78
|
+
const tabs = el('div', { class: 'fd-head-tabs' });
|
|
79
|
+
aside.append(tabs);
|
|
80
|
+
const bandBox = el('div', { class: 'fd-head-band' }, fields, aside);
|
|
81
|
+
const element = el('div', { class: 'fd-head', id }, top, bandBox);
|
|
82
|
+
// The kind's look, words and number, kept up to date.
|
|
83
|
+
if (head.kind) {
|
|
84
|
+
let drawnIcon = '';
|
|
85
|
+
watch((state) => {
|
|
86
|
+
const now = kindNow(state);
|
|
87
|
+
// Its kind by the field's value; one kind with a colour of its own is a kind too, its strip shown.
|
|
88
|
+
setAttr(element, 'data-kind', now.key || (now.colour ? '' : null));
|
|
89
|
+
if (now.colour)
|
|
90
|
+
element.style.setProperty('--fd-kind', now.colour);
|
|
91
|
+
else
|
|
92
|
+
element.style.removeProperty('--fd-kind');
|
|
93
|
+
if (now.icon !== drawnIcon) {
|
|
94
|
+
drawnIcon = now.icon ?? '';
|
|
95
|
+
badgeIcon.replaceChildren(...[drawIcon(doc, now.icon, context.icons)].filter((icon) => !!icon));
|
|
96
|
+
}
|
|
97
|
+
setText(badgeWords, now.words);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return { element, tabs, window: windowSlot };
|
|
101
|
+
/** The kind the record is now, as its field holds it, else the one kind the head names. */
|
|
102
|
+
function kindNow(state) {
|
|
103
|
+
const kind = head.kind ?? {};
|
|
104
|
+
const value = kind.field ? state.values[kind.field] : undefined;
|
|
105
|
+
const def = kind.field ? page.fields[kind.field] : undefined;
|
|
106
|
+
const key = value === null || value === undefined ? '' : typeof value === 'object' && !Array.isArray(value) && 'id' in value ? String(value.id) : String(value);
|
|
107
|
+
const look = key ? kind.looks?.[key] : undefined;
|
|
108
|
+
const label = def && key ? displayValue(def, value, state.values, context.locale) : '';
|
|
109
|
+
const words = [(label || kind.label || '').toLocaleUpperCase(context.locale), numberWords(state)].filter(Boolean).join(' ');
|
|
110
|
+
return { key, colour: look?.colour ?? kind.colour ?? null, icon: look?.icon ?? kind.icon, words };
|
|
111
|
+
}
|
|
112
|
+
/** The record's number as an id is written: its field's value as it is, else the record's id; nothing for a new record. */
|
|
113
|
+
function numberWords(state) {
|
|
114
|
+
const field = head.kind?.numberField;
|
|
115
|
+
const value = field ? state.values[field] : state.recordId;
|
|
116
|
+
return value === null || value === undefined || value === '' ? '' : String(value);
|
|
117
|
+
}
|
|
118
|
+
/** "1 Comment": the number, then its words in the plural it needs; a press takes the reader to its part, or runs its steps. */
|
|
119
|
+
function headLink(link) {
|
|
120
|
+
const words = el('span', { class: 'fd-head-link-words' });
|
|
121
|
+
// Going nowhere and doing nothing, it is its words alone, never a button that does nothing.
|
|
122
|
+
const acts = !!link.target || !!link.steps?.length;
|
|
123
|
+
const button = el(acts ? 'button' : 'span', { ...(acts ? { type: 'button' } : {}), class: 'fd-head-link', 'data-node': link.id }, ...[drawIcon(doc, link.icon, context.icons)].filter((icon) => !!icon), words);
|
|
124
|
+
const plural = new Intl.PluralRules(context.locale);
|
|
125
|
+
button.addEventListener('click', () => {
|
|
126
|
+
if (link.steps?.length)
|
|
127
|
+
void context.press(button, () => form.runAction(link.id));
|
|
128
|
+
if (link.target)
|
|
129
|
+
reveal(link.target);
|
|
130
|
+
});
|
|
131
|
+
watch((state) => {
|
|
132
|
+
setHidden(button, form.node(link.id).invisible);
|
|
133
|
+
const raw = state.values[link.field];
|
|
134
|
+
const count = typeof raw === 'number' ? raw : Number(raw ?? 0) || 0;
|
|
135
|
+
const form_ = plural.select(count);
|
|
136
|
+
setText(words, `${count} ${link.words[form_] ?? link.words.other}`);
|
|
137
|
+
});
|
|
138
|
+
return button;
|
|
139
|
+
}
|
|
140
|
+
/** "Updated by Mona Adel: Aug 25", from who changed it and when; a press shows the tab it opens. */
|
|
141
|
+
function updatedBy(updated) {
|
|
142
|
+
const tag = updated.opens ? 'button' : 'span';
|
|
143
|
+
const box = el(tag, { class: 'fd-head-updated', ...(tag === 'button' ? { type: 'button' } : {}) });
|
|
144
|
+
if (updated.opens) {
|
|
145
|
+
const opens = updated.opens;
|
|
146
|
+
box.addEventListener('click', () => {
|
|
147
|
+
if (!context.showTab(opens))
|
|
148
|
+
return;
|
|
149
|
+
context.root().querySelector(`.fd-tab[data-node="${opens}"]`)?.focus();
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
watch((state) => {
|
|
153
|
+
const who = displayValue(page.fields[updated.byField], state.values[updated.byField], state.values, context.locale);
|
|
154
|
+
const at = state.values[updated.atField];
|
|
155
|
+
const when = typeof at === 'string' && at ? shortDate(at, context.locale) : '';
|
|
156
|
+
setHidden(box, !who || !when);
|
|
157
|
+
setText(box, who && when ? context.fill(labels.updatedBy, { name: who, date: when }) : '');
|
|
158
|
+
});
|
|
159
|
+
return box;
|
|
160
|
+
}
|
|
161
|
+
/** Copy the title's words, and say so; where the clipboard is out of reach, by the page's own copy. */
|
|
162
|
+
async function copyTitle(words) {
|
|
163
|
+
const clipboard = doc.defaultView?.navigator.clipboard;
|
|
164
|
+
const done = clipboard ? await clipboard.writeText(words).then(() => true, () => pageCopy(words)) : pageCopy(words);
|
|
165
|
+
if (done)
|
|
166
|
+
context.say(labels.titleCopied, 'info');
|
|
167
|
+
}
|
|
168
|
+
/** The page's own copy, where the clipboard is out of reach: the words selected out of sight, the focus put back. */
|
|
169
|
+
function pageCopy(words) {
|
|
170
|
+
const was = doc.activeElement;
|
|
171
|
+
const box = el('textarea', { class: 'fd-sr-only', 'aria-hidden': 'true', tabindex: '-1' });
|
|
172
|
+
box.value = words;
|
|
173
|
+
doc.body.append(box);
|
|
174
|
+
box.select();
|
|
175
|
+
let done = false;
|
|
176
|
+
try {
|
|
177
|
+
done = doc.execCommand('copy');
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// Not even that: nothing is said.
|
|
181
|
+
}
|
|
182
|
+
box.remove();
|
|
183
|
+
was?.focus();
|
|
184
|
+
return done;
|
|
185
|
+
}
|
|
186
|
+
/** Take the reader to a part: the tabs it is in shown, the groups it is in unfolded, scrolled into view, its first box focused. */
|
|
187
|
+
function reveal(target) {
|
|
188
|
+
for (const tab of tabsAround(page.layout, target))
|
|
189
|
+
context.showTab(tab);
|
|
190
|
+
// An id is letters, digits, dots, dashes and underscores: nothing to escape in a selector's quotes.
|
|
191
|
+
const part = context.root().querySelector(`[data-node="${target}"]`);
|
|
192
|
+
if (!part)
|
|
193
|
+
return;
|
|
194
|
+
context.unfold(part);
|
|
195
|
+
part.scrollIntoView?.({ block: 'nearest', behavior: 'smooth' });
|
|
196
|
+
const first = part.querySelector('input:not([type="hidden"]), textarea, select, [contenteditable="true"], button, [tabindex="0"]');
|
|
197
|
+
(first ?? part).focus?.({ preventScroll: true });
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/** The tabs a part stands in, outermost first, by their ids; none when it stands in no tab. */
|
|
201
|
+
export function tabsAround(root, target) {
|
|
202
|
+
const search = (nodes, around) => {
|
|
203
|
+
for (const node of nodes) {
|
|
204
|
+
if (node.id === target)
|
|
205
|
+
return around;
|
|
206
|
+
if (node.type === 'section') {
|
|
207
|
+
const found = search(node.children, around);
|
|
208
|
+
if (found)
|
|
209
|
+
return found;
|
|
210
|
+
}
|
|
211
|
+
if (node.type === 'tabs') {
|
|
212
|
+
for (const tab of node.children) {
|
|
213
|
+
if (tab.id === target)
|
|
214
|
+
return [...around, tab.id];
|
|
215
|
+
const found = search(tab.children, [...around, tab.id]);
|
|
216
|
+
if (found)
|
|
217
|
+
return found;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return null;
|
|
222
|
+
};
|
|
223
|
+
if (root.type === 'list')
|
|
224
|
+
return [];
|
|
225
|
+
if (root.type === 'tabs')
|
|
226
|
+
return search([root], []) ?? [];
|
|
227
|
+
const nodes = root.type === 'wizard' ? root.children.flatMap((step) => step.children) : root.children;
|
|
228
|
+
return search(nodes, []) ?? [];
|
|
229
|
+
}
|
|
230
|
+
/** A date as a work item's head says it: "Aug 25", with its year when that is not this year's. */
|
|
231
|
+
export function shortDate(iso, locale, now = new Date()) {
|
|
232
|
+
const day = /^\d{4}-\d{2}-\d{2}$/.test(iso) ? new Date(`${iso}T12:00:00`) : new Date(iso);
|
|
233
|
+
if (Number.isNaN(day.getTime()))
|
|
234
|
+
return iso;
|
|
235
|
+
const year = day.getFullYear() !== now.getFullYear();
|
|
236
|
+
// Arabic in Latin digits, as the rest of a record's dates are written.
|
|
237
|
+
const tag = locale === 'ar' ? 'ar-u-nu-latn' : locale;
|
|
238
|
+
return new Intl.DateTimeFormat(tag, { month: 'short', day: 'numeric', ...(year ? { year: 'numeric' } : {}) }).format(day);
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=record-head.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-head.mjs","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/record-head.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ButtonNode } from '@fieldia/core';
|
|
2
|
+
import { type ButtonContext } from './button-parts.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* A button of the record's head, or one anywhere asking for the same: its
|
|
5
|
+
* icon alone (named by its label, which is its tooltip too); a toggle,
|
|
6
|
+
* pressed while its condition holds and showing its pressed words meanwhile;
|
|
7
|
+
* a split button — its press, then a chevron (or its own icon, Follow's gear)
|
|
8
|
+
* opening a menu of more; a menu button when it has nothing of its own to
|
|
9
|
+
* run; the primary look while the record has changes, quiet but usable
|
|
10
|
+
* otherwise — with nothing changed, Save and Close simply closes.
|
|
11
|
+
*/
|
|
12
|
+
export declare function richButton(context: ButtonContext, node: ButtonNode): HTMLElement;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ButtonNode } from '@fieldia/core';
|
|
2
|
+
import { type ButtonContext } from './button-parts';
|
|
3
|
+
/**
|
|
4
|
+
* A button of the record's head, or one anywhere asking for the same: its
|
|
5
|
+
* icon alone (named by its label, which is its tooltip too); a toggle,
|
|
6
|
+
* pressed while its condition holds and showing its pressed words meanwhile;
|
|
7
|
+
* a split button — its press, then a chevron (or its own icon, Follow's gear)
|
|
8
|
+
* opening a menu of more; a menu button when it has nothing of its own to
|
|
9
|
+
* run; the primary look while the record has changes, quiet but usable
|
|
10
|
+
* otherwise — with nothing changed, Save and Close simply closes.
|
|
11
|
+
*/
|
|
12
|
+
export declare function richButton(context: ButtonContext, node: ButtonNode): HTMLElement;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.richButton = richButton;
|
|
4
|
+
const widgets_1 = require("@fieldia/widgets");
|
|
5
|
+
const button_parts_1 = require("./button-parts");
|
|
6
|
+
const dom_1 = require("./dom");
|
|
7
|
+
const head_styles_1 = require("./head-styles");
|
|
8
|
+
const hotkeys_1 = require("./hotkeys");
|
|
9
|
+
/**
|
|
10
|
+
* A button of the record's head, or one anywhere asking for the same: its
|
|
11
|
+
* icon alone (named by its label, which is its tooltip too); a toggle,
|
|
12
|
+
* pressed while its condition holds and showing its pressed words meanwhile;
|
|
13
|
+
* a split button — its press, then a chevron (or its own icon, Follow's gear)
|
|
14
|
+
* opening a menu of more; a menu button when it has nothing of its own to
|
|
15
|
+
* run; the primary look while the record has changes, quiet but usable
|
|
16
|
+
* otherwise — with nothing changed, Save and Close simply closes.
|
|
17
|
+
*/
|
|
18
|
+
function richButton(context, node) {
|
|
19
|
+
const { el, form, labels } = context;
|
|
20
|
+
(0, head_styles_1.installHeadStyles)(context.doc);
|
|
21
|
+
const own = !!node.steps?.length || node.action !== undefined;
|
|
22
|
+
const menu = node.menu?.length ? node.menu : null;
|
|
23
|
+
const look = () => (node.primaryWhenChanged ? (form.getState().dirty.length ? 'primary' : 'subtle') : node.style ?? 'secondary');
|
|
24
|
+
const words = el('bdi', { class: 'fd-button-words' }, node.label);
|
|
25
|
+
const icon = (0, widgets_1.drawIcon)(context.doc, node.icon, context.icons);
|
|
26
|
+
const main = el('button', { type: 'button', class: 'fd-button', 'data-node': menu && own ? undefined : node.id });
|
|
27
|
+
if (icon)
|
|
28
|
+
main.append(icon);
|
|
29
|
+
if (node.iconOnly) {
|
|
30
|
+
main.classList.add('fd-button-icon-only');
|
|
31
|
+
main.setAttribute('aria-label', node.label);
|
|
32
|
+
main.title = node.label;
|
|
33
|
+
}
|
|
34
|
+
else
|
|
35
|
+
main.append(words);
|
|
36
|
+
if (node.hotkey)
|
|
37
|
+
(0, hotkeys_1.hotkeyOn)(main, node.hotkey, node.label);
|
|
38
|
+
/** What a press of the button itself does: its steps and action — Save and Close with nothing to save only closes. */
|
|
39
|
+
const run = () => {
|
|
40
|
+
const state = form.getState();
|
|
41
|
+
if (node.primaryWhenChanged && !state.dirty.length && state.recordId != null && node.steps?.some((step) => step.do === 'save')) {
|
|
42
|
+
const steps = [...(node.steps ?? []).filter((step) => step.do !== 'save'), ...(node.action !== undefined ? [{ do: 'call', action: node.action, ...(node.params ? { params: node.params } : {}) }] : [])];
|
|
43
|
+
return form.run(steps, { id: node.id });
|
|
44
|
+
}
|
|
45
|
+
return form.runAction(node.id);
|
|
46
|
+
};
|
|
47
|
+
if (!menu) {
|
|
48
|
+
main.classList.add(`fd-button-${look()}`);
|
|
49
|
+
main.addEventListener('click', () => {
|
|
50
|
+
if (!(0, button_parts_1.nothingToUndo)(node, form, context.say, labels))
|
|
51
|
+
void context.press(main, run);
|
|
52
|
+
});
|
|
53
|
+
context.watch(() => paint(main));
|
|
54
|
+
return main;
|
|
55
|
+
}
|
|
56
|
+
// ---- a menu beside it, or a menu alone ----
|
|
57
|
+
const id = context.uid(`${node.id}-menu`);
|
|
58
|
+
const chevron = (0, widgets_1.drawIcon)(context.doc, node.menuIcon ?? 'chevron-down', context.icons);
|
|
59
|
+
const opener = own ? el('button', { type: 'button', class: 'fd-button fd-split-more', id: `${id}-button`, 'aria-haspopup': 'menu', 'aria-expanded': 'false', 'aria-controls': id }) : main;
|
|
60
|
+
// Its own name, never the button's: a reader hears two buttons, not one twice.
|
|
61
|
+
const menuName = node.menuLabel ?? labels.optionsFor.replace('{label}', node.label);
|
|
62
|
+
if (own) {
|
|
63
|
+
opener.setAttribute('aria-label', menuName);
|
|
64
|
+
opener.title = menuName;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
opener.id = `${id}-button`;
|
|
68
|
+
for (const [name, value] of Object.entries({ 'aria-haspopup': 'menu', 'aria-expanded': 'false', 'aria-controls': id }))
|
|
69
|
+
opener.setAttribute(name, value);
|
|
70
|
+
}
|
|
71
|
+
if (chevron) {
|
|
72
|
+
chevron.classList.add('fd-split-icon');
|
|
73
|
+
opener.append(chevron);
|
|
74
|
+
}
|
|
75
|
+
const list = el('div', { class: 'fd-record-menu fd-button-menu', role: 'menu', id, 'aria-labelledby': opener.id, hidden: '' });
|
|
76
|
+
const items = menu.map((item) => {
|
|
77
|
+
const button = el('button', { type: 'button', role: 'menuitem', tabindex: '-1', class: 'fd-record-menu-item', 'data-node': item.id }, ...context.withIcon(item.icon, item.label ?? item.id));
|
|
78
|
+
button.addEventListener('click', () => {
|
|
79
|
+
close(true);
|
|
80
|
+
void context.press(opener, () => form.runAction(item.id));
|
|
81
|
+
});
|
|
82
|
+
return { item, button };
|
|
83
|
+
});
|
|
84
|
+
list.append(...items.map((i) => i.button));
|
|
85
|
+
const parts = own ? [main, el('span', { class: 'fd-split-rule', 'aria-hidden': 'true' }), opener] : [main];
|
|
86
|
+
const box = el('div', { class: `fd-split${own ? '' : ' fd-split-alone'}`, 'data-node': node.id, role: own ? 'group' : undefined, 'aria-label': own ? node.label : undefined }, ...parts, list);
|
|
87
|
+
const shown = () => items.filter((i) => !i.button.hidden).map((i) => i.button);
|
|
88
|
+
const outside = (event) => {
|
|
89
|
+
if (!box.contains(event.target))
|
|
90
|
+
close(false);
|
|
91
|
+
};
|
|
92
|
+
function open(at) {
|
|
93
|
+
if (!list.hidden)
|
|
94
|
+
return;
|
|
95
|
+
list.hidden = false;
|
|
96
|
+
// Under the button's start, unless that runs past the window: then from its end.
|
|
97
|
+
list.removeAttribute('data-end');
|
|
98
|
+
const room = list.getBoundingClientRect();
|
|
99
|
+
if (room.right > context.doc.documentElement.clientWidth - 4 || room.left < 4)
|
|
100
|
+
list.setAttribute('data-end', '');
|
|
101
|
+
opener.setAttribute('aria-expanded', 'true');
|
|
102
|
+
context.doc.addEventListener('pointerdown', outside, true);
|
|
103
|
+
const found = shown();
|
|
104
|
+
(at === 'first' ? found[0] : found[found.length - 1])?.focus();
|
|
105
|
+
}
|
|
106
|
+
function close(refocus) {
|
|
107
|
+
if (list.hidden)
|
|
108
|
+
return;
|
|
109
|
+
list.hidden = true;
|
|
110
|
+
opener.setAttribute('aria-expanded', 'false');
|
|
111
|
+
context.doc.removeEventListener('pointerdown', outside, true);
|
|
112
|
+
if (refocus)
|
|
113
|
+
opener.focus();
|
|
114
|
+
}
|
|
115
|
+
context.cleanups.push(() => context.doc.removeEventListener('pointerdown', outside, true));
|
|
116
|
+
opener.addEventListener('click', () => (list.hidden ? open('first') : close(false)));
|
|
117
|
+
opener.addEventListener('keydown', (event) => {
|
|
118
|
+
if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp')
|
|
119
|
+
return;
|
|
120
|
+
event.preventDefault();
|
|
121
|
+
open(event.key === 'ArrowDown' ? 'first' : 'last');
|
|
122
|
+
});
|
|
123
|
+
if (own) {
|
|
124
|
+
main.addEventListener('click', () => {
|
|
125
|
+
if (!(0, button_parts_1.nothingToUndo)(node, form, context.say, labels))
|
|
126
|
+
void context.press(main, run);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
list.addEventListener('keydown', (event) => {
|
|
130
|
+
const found = shown();
|
|
131
|
+
const at = found.indexOf(context.doc.activeElement);
|
|
132
|
+
const to = { ArrowDown: at + 1, ArrowUp: at - 1, Home: 0, End: found.length - 1 }[event.key];
|
|
133
|
+
if (to !== undefined) {
|
|
134
|
+
event.preventDefault();
|
|
135
|
+
found[(to + found.length) % found.length]?.focus();
|
|
136
|
+
}
|
|
137
|
+
else if (event.key === 'Escape') {
|
|
138
|
+
// Escape closes the menu, not the dialog round the form.
|
|
139
|
+
event.preventDefault();
|
|
140
|
+
event.stopPropagation();
|
|
141
|
+
close(true);
|
|
142
|
+
}
|
|
143
|
+
else if (event.key === 'Tab')
|
|
144
|
+
close(false);
|
|
145
|
+
});
|
|
146
|
+
context.watch(() => {
|
|
147
|
+
paint(main);
|
|
148
|
+
if (own)
|
|
149
|
+
paint(opener);
|
|
150
|
+
box.setAttribute('data-look', look());
|
|
151
|
+
for (const { item, button } of items)
|
|
152
|
+
(0, dom_1.setHidden)(button, form.node(item.id).invisible);
|
|
153
|
+
// A menu with nothing in it shows no chevron.
|
|
154
|
+
(0, dom_1.setHidden)(opener, !items.some((i) => !i.button.hidden) && own);
|
|
155
|
+
});
|
|
156
|
+
return box;
|
|
157
|
+
/**
|
|
158
|
+
* Its look and its words now: primary or quiet, pressed or not, hidden by its condition. Undo with nothing changed is
|
|
159
|
+
* drawn idle, its tooltip saying why, and a press says it too: still a button, never greyed out without a reason.
|
|
160
|
+
*/
|
|
161
|
+
function paint(button) {
|
|
162
|
+
const at = form.node(node.id);
|
|
163
|
+
if (button === main || !own)
|
|
164
|
+
(0, dom_1.setHidden)(menu ? box : button, at.invisible);
|
|
165
|
+
for (const one of ['primary', 'secondary', 'subtle', 'danger', 'link'])
|
|
166
|
+
button.classList.toggle(`fd-button-${one}`, one === look());
|
|
167
|
+
if (button === main && (0, button_parts_1.onlyResets)(node.steps, node.action)) {
|
|
168
|
+
const idle = !form.getState().dirty.length;
|
|
169
|
+
(0, dom_1.setAttr)(main, 'data-idle', idle ? '' : null);
|
|
170
|
+
if (node.iconOnly)
|
|
171
|
+
main.title = idle ? `${node.label} — ${labels.nothingChanged}` : node.label;
|
|
172
|
+
}
|
|
173
|
+
if (node.pressed === undefined || button !== main)
|
|
174
|
+
return;
|
|
175
|
+
const pressed = at.pressed === true;
|
|
176
|
+
(0, dom_1.setAttr)(main, 'aria-pressed', String(pressed));
|
|
177
|
+
const said = pressed && node.pressedLabel ? node.pressedLabel : node.label;
|
|
178
|
+
if (node.iconOnly) {
|
|
179
|
+
(0, dom_1.setAttr)(main, 'aria-label', said);
|
|
180
|
+
main.title = said;
|
|
181
|
+
}
|
|
182
|
+
else
|
|
183
|
+
(0, dom_1.setText)(words, said);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=rich-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rich-button.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/rich-button.ts"],"names":[],"mappings":"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"}
|