@fieldia/widgets 0.3.0 → 0.5.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.
Files changed (83) hide show
  1. package/package.json +2 -2
  2. package/src/index.d.mts +6 -0
  3. package/src/index.d.ts +6 -0
  4. package/src/index.js +6 -0
  5. package/src/index.js.map +1 -1
  6. package/src/index.mjs +6 -0
  7. package/src/index.mjs.map +1 -1
  8. package/src/lib/calendar.d.mts +11 -0
  9. package/src/lib/calendar.d.ts +11 -0
  10. package/src/lib/calendar.js +242 -0
  11. package/src/lib/calendar.js.map +1 -0
  12. package/src/lib/calendar.mjs +238 -0
  13. package/src/lib/calendar.mjs.map +1 -0
  14. package/src/lib/display.d.mts +2 -2
  15. package/src/lib/display.d.ts +2 -2
  16. package/src/lib/display.js +5 -4
  17. package/src/lib/display.js.map +1 -1
  18. package/src/lib/display.mjs +5 -4
  19. package/src/lib/display.mjs.map +1 -1
  20. package/src/lib/extras.d.mts +3 -1
  21. package/src/lib/extras.d.ts +3 -1
  22. package/src/lib/extras.js +187 -5
  23. package/src/lib/extras.js.map +1 -1
  24. package/src/lib/extras.mjs +186 -5
  25. package/src/lib/extras.mjs.map +1 -1
  26. package/src/lib/label.d.mts +2 -0
  27. package/src/lib/label.d.ts +2 -0
  28. package/src/lib/label.js +47 -0
  29. package/src/lib/label.js.map +1 -0
  30. package/src/lib/label.mjs +43 -0
  31. package/src/lib/label.mjs.map +1 -0
  32. package/src/lib/labels.d.mts +33 -0
  33. package/src/lib/labels.d.ts +33 -0
  34. package/src/lib/labels.js +108 -0
  35. package/src/lib/labels.js.map +1 -1
  36. package/src/lib/labels.mjs +108 -0
  37. package/src/lib/labels.mjs.map +1 -1
  38. package/src/lib/lines.js +5 -3
  39. package/src/lib/lines.js.map +1 -1
  40. package/src/lib/lines.mjs +5 -3
  41. package/src/lib/lines.mjs.map +1 -1
  42. package/src/lib/numbers.d.mts +8 -0
  43. package/src/lib/numbers.d.ts +8 -0
  44. package/src/lib/numbers.js +47 -0
  45. package/src/lib/numbers.js.map +1 -0
  46. package/src/lib/numbers.mjs +43 -0
  47. package/src/lib/numbers.mjs.map +1 -0
  48. package/src/lib/progress.d.mts +2 -0
  49. package/src/lib/progress.d.ts +2 -0
  50. package/src/lib/progress.js +73 -0
  51. package/src/lib/progress.js.map +1 -0
  52. package/src/lib/progress.mjs +69 -0
  53. package/src/lib/progress.mjs.map +1 -0
  54. package/src/lib/properties.d.mts +2 -0
  55. package/src/lib/properties.d.ts +2 -0
  56. package/src/lib/properties.js +86 -0
  57. package/src/lib/properties.js.map +1 -0
  58. package/src/lib/properties.mjs +82 -0
  59. package/src/lib/properties.mjs.map +1 -0
  60. package/src/lib/relations.d.mts +7 -0
  61. package/src/lib/relations.d.ts +7 -0
  62. package/src/lib/relations.js +199 -26
  63. package/src/lib/relations.js.map +1 -1
  64. package/src/lib/relations.mjs +197 -25
  65. package/src/lib/relations.mjs.map +1 -1
  66. package/src/lib/statusbar.d.mts +2 -0
  67. package/src/lib/statusbar.d.ts +2 -0
  68. package/src/lib/statusbar.js +61 -0
  69. package/src/lib/statusbar.js.map +1 -0
  70. package/src/lib/statusbar.mjs +57 -0
  71. package/src/lib/statusbar.mjs.map +1 -0
  72. package/src/lib/styles.d.mts +1 -1
  73. package/src/lib/styles.d.ts +1 -1
  74. package/src/lib/styles.js +114 -2
  75. package/src/lib/styles.js.map +1 -1
  76. package/src/lib/styles.mjs +114 -2
  77. package/src/lib/styles.mjs.map +1 -1
  78. package/src/lib/widgets.d.mts +35 -1
  79. package/src/lib/widgets.d.ts +35 -1
  80. package/src/lib/widgets.js +57 -12
  81. package/src/lib/widgets.js.map +1 -1
  82. package/src/lib/widgets.mjs +58 -13
  83. package/src/lib/widgets.mjs.map +1 -1
@@ -1,7 +1,8 @@
1
1
  import { WIDGET_LABELS } from './labels.mjs';
2
2
  /**
3
- * Formatted text and JSON. Formatted text is edited in place (the browser's
4
- * own shortcuts give bold, italic and underline) and every value — typed,
3
+ * Formatted text and JSON. Formatted text is edited in place, with a toolbar
4
+ * (bold, italic, underline, headings, lists, alignment, links) that drives the
5
+ * browser's own editing, so no editor library is loaded. Every value — typed,
5
6
  * pasted or loaded — passes through `sanitizeHtml`, so stored markup can never
6
7
  * run script in the page.
7
8
  */
@@ -10,7 +11,10 @@ const ALLOWED = new Set([
10
11
  'BLOCKQUOTE', 'CODE', 'PRE', 'SPAN', 'DIV',
11
12
  ]);
12
13
  const DROPPED_WITH_CONTENT = new Set(['SCRIPT', 'STYLE', 'IFRAME', 'OBJECT', 'EMBED', 'TEMPLATE', 'NOSCRIPT', 'SVG', 'MATH']);
13
- /** Keep text structure and http(s)/mailto links; drop every other element and attribute. */
14
+ /** Blocks that may keep their alignment, the one style the toolbar sets. */
15
+ const ALIGNABLE = new Set(['P', 'DIV', 'H1', 'H2', 'H3', 'H4', 'LI', 'BLOCKQUOTE', 'PRE']);
16
+ const ALIGNMENTS = new Set(['left', 'center', 'right', 'justify', 'start', 'end']);
17
+ /** Keep text structure, block alignment and http(s)/mailto links; drop every other element and attribute. */
14
18
  export function sanitizeHtml(html, document = globalThis.document) {
15
19
  const box = document.createElement('template');
16
20
  box.innerHTML = html;
@@ -33,10 +37,13 @@ export function sanitizeHtml(html, document = globalThis.document) {
33
37
  continue;
34
38
  }
35
39
  const href = element.tagName === 'A' ? element.getAttribute('href') : null;
40
+ const align = ALIGNABLE.has(element.tagName) ? element.style?.textAlign?.trim().toLowerCase() : '';
36
41
  for (const attribute of [...element.attributes])
37
42
  element.removeAttribute(attribute.name);
38
43
  if (href && /^(https?:|mailto:)/i.test(href.trim()))
39
44
  element.setAttribute('href', href.trim());
45
+ if (align && ALIGNMENTS.has(align))
46
+ element.setAttribute('style', `text-align: ${align};`);
40
47
  }
41
48
  };
42
49
  clean(box.content);
@@ -44,13 +51,37 @@ export function sanitizeHtml(html, document = globalThis.document) {
44
51
  out.append(box.content);
45
52
  return out.innerHTML;
46
53
  }
47
- export const htmlWidget = ({ form, name, id, document }) => {
54
+ /** A typed address as a link target: web and mail addresses only, "https://" added to a bare domain. */
55
+ export function linkAddress(typed) {
56
+ const text = typed.trim();
57
+ if (/^(https?:\/\/|mailto:)\S+$/i.test(text))
58
+ return text;
59
+ if (/^[^\s@:/]+@[^\s@:/]+\.[^\s@:/]+$/.test(text))
60
+ return `mailto:${text}`;
61
+ if (/^[\w-]+(\.[\w-]+)+([/?#]\S*)?$/.test(text))
62
+ return `https://${text}`;
63
+ return null;
64
+ }
65
+ /** The toolbar's buttons: [label key, editing command, drawn icon]. */
66
+ const TOOLS = [
67
+ ['bold', 'bold', '<b>B</b>'],
68
+ ['italic', 'italic', '<i>I</i>'],
69
+ ['underline', 'underline', '<u>U</u>'],
70
+ ['bulletList', 'insertUnorderedList', '<svg viewBox="0 0 16 16"><circle cx="3" cy="4" r="1.2"/><circle cx="3" cy="8" r="1.2"/><circle cx="3" cy="12" r="1.2"/><path d="M6 4h8M6 8h8M6 12h8"/></svg>'],
71
+ ['numberList', 'insertOrderedList', '<svg viewBox="0 0 16 16"><path d="M2.5 3h1v3M2 10.5c.5-.8 2-.8 2 .2 0 .8-2 1.3-2 2.3h2M6 4h8M6 8h8M6 12h8"/></svg>'],
72
+ ['alignLeft', 'justifyLeft', '<svg viewBox="0 0 16 16"><path d="M2 3.5h12M2 6.5h8M2 9.5h12M2 12.5h8"/></svg>'],
73
+ ['alignCenter', 'justifyCenter', '<svg viewBox="0 0 16 16"><path d="M2 3.5h12M4 6.5h8M2 9.5h12M4 12.5h8"/></svg>'],
74
+ ['alignRight', 'justifyRight', '<svg viewBox="0 0 16 16"><path d="M2 3.5h12M6 6.5h8M2 9.5h12M6 12.5h8"/></svg>'],
75
+ ['link', 'createLink', '<svg viewBox="0 0 16 16"><path d="M7 9a3 3 0 0 0 4.2 0l2.3-2.3a3 3 0 0 0-4.2-4.2L8.2 3.6M9 7a3 3 0 0 0-4.2 0L2.5 9.3a3 3 0 0 0 4.2 4.2l1.1-1.1"/></svg>'],
76
+ ];
77
+ export const htmlWidget = ({ form, name, node, id, document, labels = WIDGET_LABELS.en }) => {
48
78
  const area = document.createElement('div');
49
79
  area.id = id;
50
80
  area.className = 'fd-input fd-richtext';
51
81
  area.setAttribute('role', 'textbox');
52
82
  area.setAttribute('aria-multiline', 'true');
53
83
  area.setAttribute('contenteditable', 'true');
84
+ const withToolbar = node.options?.['toolbar'] !== false;
54
85
  let last = '';
55
86
  area.addEventListener('input', () => {
56
87
  const clean = sanitizeHtml(area.innerHTML, document);
@@ -62,10 +93,26 @@ export const htmlWidget = ({ form, name, id, document }) => {
62
93
  if (area.innerHTML !== last)
63
94
  area.innerHTML = last;
64
95
  });
96
+ const toolbar = withToolbar ? formattingToolbar(area, document, labels) : null;
97
+ let element = area;
98
+ if (toolbar) {
99
+ // The box is labelled by the field's label; the text inside it says so too.
100
+ element = document.createElement('div');
101
+ element.className = 'fd-richtext-box';
102
+ element.setAttribute('role', 'group');
103
+ area.setAttribute('aria-labelledby', `${id}-label`);
104
+ element.append(toolbar.bar, toolbar.linkRow, area);
105
+ }
65
106
  return {
66
- element: area,
107
+ element,
67
108
  focus: () => area.focus(),
109
+ destroy: () => toolbar?.destroy(),
68
110
  update(state) {
111
+ if (toolbar) {
112
+ toolbar.bar.hidden = state.readonly;
113
+ if (state.readonly)
114
+ toolbar.linkRow.hidden = true;
115
+ }
69
116
  const clean = sanitizeHtml(typeof state.value === 'string' ? state.value : '', document);
70
117
  if (clean !== last || document.activeElement !== area) {
71
118
  if (area.innerHTML !== clean)
@@ -80,6 +127,140 @@ export const htmlWidget = ({ form, name, id, document }) => {
80
127
  },
81
128
  };
82
129
  };
130
+ /**
131
+ * The toolbar of a formatted text: buttons that keep the text's selection
132
+ * (they act on mousedown's behalf), a text-style choice, and a row for a link's
133
+ * address. One button takes Tab; the arrow keys move along the bar.
134
+ */
135
+ function formattingToolbar(area, doc, labels) {
136
+ const bar = doc.createElement('div');
137
+ bar.className = 'fd-richtext-bar';
138
+ bar.setAttribute('role', 'toolbar');
139
+ bar.setAttribute('aria-label', labels.formatting);
140
+ // The last selection made in the text: the style box and the address box take
141
+ // the focus, and a command must act where the person had selected.
142
+ let lastRange = null;
143
+ const restore = () => {
144
+ area.focus();
145
+ const selection = doc.getSelection();
146
+ if (lastRange && selection) {
147
+ selection.removeAllRanges();
148
+ selection.addRange(lastRange);
149
+ }
150
+ };
151
+ const run = (command, value) => {
152
+ restore();
153
+ doc.execCommand?.(command, false, value);
154
+ };
155
+ const style = doc.createElement('select');
156
+ style.className = 'fd-richtext-style';
157
+ style.setAttribute('aria-label', labels.textStyle);
158
+ for (const [value, key] of [['p', 'paragraph'], ['h2', 'heading'], ['h3', 'subheading']]) {
159
+ const option = doc.createElement('option');
160
+ option.value = value;
161
+ option.textContent = labels[key];
162
+ style.append(option);
163
+ }
164
+ style.addEventListener('change', () => run('formatBlock', `<${style.value}>`));
165
+ const linkRow = doc.createElement('div');
166
+ linkRow.className = 'fd-link-row';
167
+ linkRow.hidden = true;
168
+ const address = doc.createElement('input');
169
+ address.className = 'fd-input';
170
+ address.type = 'url';
171
+ address.placeholder = 'https://';
172
+ address.setAttribute('aria-label', labels.linkAddress);
173
+ const apply = doc.createElement('button');
174
+ apply.type = 'button';
175
+ apply.className = 'fd-button fd-link-apply';
176
+ apply.textContent = labels.applyLink;
177
+ const unlink = doc.createElement('button');
178
+ unlink.type = 'button';
179
+ unlink.className = 'fd-button fd-button-link fd-link-remove';
180
+ unlink.textContent = labels.removeLink;
181
+ linkRow.append(address, apply, unlink);
182
+ apply.addEventListener('click', () => {
183
+ const url = linkAddress(address.value);
184
+ if (!url) {
185
+ address.setAttribute('aria-invalid', 'true');
186
+ return;
187
+ }
188
+ address.setAttribute('aria-invalid', 'false');
189
+ restore();
190
+ doc.execCommand?.('createLink', false, url);
191
+ linkRow.hidden = true;
192
+ });
193
+ unlink.addEventListener('click', () => {
194
+ restore();
195
+ doc.execCommand?.('unlink', false);
196
+ linkRow.hidden = true;
197
+ });
198
+ address.addEventListener('keydown', (event) => {
199
+ if (event.key === 'Enter') {
200
+ event.preventDefault();
201
+ apply.click();
202
+ }
203
+ else if (event.key === 'Escape') {
204
+ event.preventDefault();
205
+ linkRow.hidden = true;
206
+ restore();
207
+ }
208
+ });
209
+ const buttons = TOOLS.map(([key, command, icon]) => {
210
+ const button = doc.createElement('button');
211
+ button.type = 'button';
212
+ button.className = 'fd-richtext-tool';
213
+ button.setAttribute('aria-label', labels[key]);
214
+ button.title = labels[key];
215
+ button.innerHTML = icon;
216
+ button.querySelector('svg')?.setAttribute('aria-hidden', 'true');
217
+ if (['bold', 'italic', 'underline'].includes(command))
218
+ button.setAttribute('aria-pressed', 'false');
219
+ // Keep the text's selection when the button is pressed.
220
+ button.addEventListener('mousedown', (event) => event.preventDefault());
221
+ button.addEventListener('click', () => {
222
+ if (command !== 'createLink')
223
+ return run(command);
224
+ linkRow.hidden = false;
225
+ address.value = '';
226
+ address.focus();
227
+ });
228
+ return button;
229
+ });
230
+ bar.append(style, ...buttons);
231
+ // One stop on Tab; the arrow keys move along the bar.
232
+ const stops = [style, ...buttons];
233
+ stops.forEach((stop, i) => (stop.tabIndex = i === 0 ? 0 : -1));
234
+ bar.addEventListener('keydown', (event) => {
235
+ if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft')
236
+ return;
237
+ const at = stops.indexOf(doc.activeElement);
238
+ if (at < 0)
239
+ return;
240
+ const rtl = getComputedStyle(bar).direction === 'rtl';
241
+ const step = (event.key === 'ArrowRight') !== rtl ? 1 : -1;
242
+ const next = stops[(at + step + stops.length) % stops.length];
243
+ event.preventDefault();
244
+ stops.forEach((stop) => (stop.tabIndex = stop === next ? 0 : -1));
245
+ next.focus();
246
+ });
247
+ // Show which formats the selection already has.
248
+ const reflect = () => {
249
+ const selection = doc.getSelection();
250
+ if (!selection || !selection.rangeCount || !area.contains(selection.anchorNode))
251
+ return;
252
+ lastRange = selection.getRangeAt(0).cloneRange();
253
+ for (const button of buttons) {
254
+ const command = TOOLS[buttons.indexOf(button)][1];
255
+ if (button.hasAttribute('aria-pressed'))
256
+ button.setAttribute('aria-pressed', String(doc.queryCommandState?.(command) ?? false));
257
+ }
258
+ const block = String(doc.queryCommandValue?.('formatBlock') ?? '').toLowerCase().replace(/[<>]/g, '');
259
+ style.value = block === 'h2' || block === 'h3' ? block : 'p';
260
+ };
261
+ doc.addEventListener('selectionchange', reflect);
262
+ return { bar, linkRow, destroy: () => doc.removeEventListener('selectionchange', reflect) };
263
+ }
83
264
  export const jsonWidget = ({ form, name, id, document, labels = WIDGET_LABELS.en }) => {
84
265
  const element = document.createElement('div');
85
266
  element.className = 'fd-json';
@@ -1 +1 @@
1
- {"version":3,"file":"extras.mjs","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/extras.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extras.mjs","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/extras.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { type WidgetFactory } from './widgets.mjs';
2
+ export declare const labelWidget: WidgetFactory;
@@ -0,0 +1,2 @@
1
+ import { type WidgetFactory } from './widgets';
2
+ export declare const labelWidget: WidgetFactory;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.labelWidget = void 0;
4
+ const numbers_1 = require("./numbers");
5
+ const widgets_1 = require("./widgets");
6
+ /**
7
+ * A value shown as text between a prefix and a suffix: "24 months",
8
+ * "240.0 m". Never edited. Options:
9
+ *
10
+ * prefix, suffix words around the value
11
+ * prefixField, suffixField a field whose value is the prefix or suffix instead
12
+ */
13
+ /** Another field's value as words: a link's label, or the value itself. */
14
+ function words(value) {
15
+ if (value === null || value === undefined)
16
+ return '';
17
+ if (typeof value === 'object' && 'label' in value)
18
+ return value.label;
19
+ return String(value);
20
+ }
21
+ const labelWidget = ({ field, node, id, document, locale = 'en' }) => {
22
+ const options = node.options ?? {};
23
+ const text = (key) => (typeof options[key] === 'string' ? options[key] : '');
24
+ const from = (key) => (typeof options[key] === 'string' ? options[key] : null);
25
+ const decimals = field.type === 'integer' ? 0 : field.type === 'float' || field.type === 'monetary' ? (field.digits?.[1] ?? 2) : null;
26
+ const output = document.createElement('output');
27
+ output.id = id;
28
+ output.className = 'fd-value-text';
29
+ return {
30
+ element: output,
31
+ focus: () => undefined,
32
+ update({ value, values }) {
33
+ if (value === null || value === undefined || value === '') {
34
+ output.textContent = '';
35
+ return;
36
+ }
37
+ const shown = decimals !== null && typeof value === 'number' ? (0, numbers_1.formatNumber)(value, decimals, locale) : (0, widgets_1.summary)(value, field);
38
+ const prefixField = from('prefixField');
39
+ const suffixField = from('suffixField');
40
+ const prefix = prefixField ? words(values[prefixField]) : text('prefix');
41
+ const suffix = suffixField ? words(values[suffixField]) : text('suffix');
42
+ output.textContent = [prefix, shown, suffix].filter((part) => part !== '').join(' ');
43
+ },
44
+ };
45
+ };
46
+ exports.labelWidget = labelWidget;
47
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/label.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { formatNumber } from './numbers.mjs';
2
+ import { summary } from './widgets.mjs';
3
+ /**
4
+ * A value shown as text between a prefix and a suffix: "24 months",
5
+ * "240.0 m". Never edited. Options:
6
+ *
7
+ * prefix, suffix words around the value
8
+ * prefixField, suffixField a field whose value is the prefix or suffix instead
9
+ */
10
+ /** Another field's value as words: a link's label, or the value itself. */
11
+ function words(value) {
12
+ if (value === null || value === undefined)
13
+ return '';
14
+ if (typeof value === 'object' && 'label' in value)
15
+ return value.label;
16
+ return String(value);
17
+ }
18
+ export const labelWidget = ({ field, node, id, document, locale = 'en' }) => {
19
+ const options = node.options ?? {};
20
+ const text = (key) => (typeof options[key] === 'string' ? options[key] : '');
21
+ const from = (key) => (typeof options[key] === 'string' ? options[key] : null);
22
+ const decimals = field.type === 'integer' ? 0 : field.type === 'float' || field.type === 'monetary' ? (field.digits?.[1] ?? 2) : null;
23
+ const output = document.createElement('output');
24
+ output.id = id;
25
+ output.className = 'fd-value-text';
26
+ return {
27
+ element: output,
28
+ focus: () => undefined,
29
+ update({ value, values }) {
30
+ if (value === null || value === undefined || value === '') {
31
+ output.textContent = '';
32
+ return;
33
+ }
34
+ const shown = decimals !== null && typeof value === 'number' ? formatNumber(value, decimals, locale) : summary(value, field);
35
+ const prefixField = from('prefixField');
36
+ const suffixField = from('suffixField');
37
+ const prefix = prefixField ? words(values[prefixField]) : text('prefix');
38
+ const suffix = suffixField ? words(values[suffixField]) : text('suffix');
39
+ output.textContent = [prefix, shown, suffix].filter((part) => part !== '').join(' ');
40
+ },
41
+ };
42
+ };
43
+ //# sourceMappingURL=label.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.mjs","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/label.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,41 @@ export interface WidgetLabels {
15
15
  lineProblem: string;
16
16
  /** Problems beyond the first few. */
17
17
  moreProblems: string;
18
+ /** The choice that makes a new record from what was typed. `{name}` is filled in. */
19
+ createNamed: string;
20
+ /** Choices at the end of a link's list, and the button that opens the linked record (`{name}`). */
21
+ createAndEdit: string;
22
+ searchMore: string;
23
+ openNamed: string;
24
+ /** The button that opens a line of a table in a dialog. */
25
+ openLine: string;
18
26
  /** The button that lets a person hide or show a table's optional columns. */
19
27
  chooseColumns: string;
28
+ /** The button beside a date that opens its calendar. */
29
+ chooseDate: string;
30
+ previousMonth: string;
31
+ nextMonth: string;
32
+ /** Heads the column of week numbers: short, and in full. */
33
+ weekShort: string;
34
+ week: string;
35
+ /** The formatted-text toolbar and its buttons. */
36
+ formatting: string;
37
+ bold: string;
38
+ italic: string;
39
+ underline: string;
40
+ textStyle: string;
41
+ paragraph: string;
42
+ heading: string;
43
+ subheading: string;
44
+ bulletList: string;
45
+ numberList: string;
46
+ alignLeft: string;
47
+ alignCenter: string;
48
+ alignRight: string;
49
+ link: string;
50
+ linkAddress: string;
51
+ applyLink: string;
52
+ removeLink: string;
20
53
  upload: string;
21
54
  uploadImage: string;
22
55
  replace: string;
@@ -15,8 +15,41 @@ export interface WidgetLabels {
15
15
  lineProblem: string;
16
16
  /** Problems beyond the first few. */
17
17
  moreProblems: string;
18
+ /** The choice that makes a new record from what was typed. `{name}` is filled in. */
19
+ createNamed: string;
20
+ /** Choices at the end of a link's list, and the button that opens the linked record (`{name}`). */
21
+ createAndEdit: string;
22
+ searchMore: string;
23
+ openNamed: string;
24
+ /** The button that opens a line of a table in a dialog. */
25
+ openLine: string;
18
26
  /** The button that lets a person hide or show a table's optional columns. */
19
27
  chooseColumns: string;
28
+ /** The button beside a date that opens its calendar. */
29
+ chooseDate: string;
30
+ previousMonth: string;
31
+ nextMonth: string;
32
+ /** Heads the column of week numbers: short, and in full. */
33
+ weekShort: string;
34
+ week: string;
35
+ /** The formatted-text toolbar and its buttons. */
36
+ formatting: string;
37
+ bold: string;
38
+ italic: string;
39
+ underline: string;
40
+ textStyle: string;
41
+ paragraph: string;
42
+ heading: string;
43
+ subheading: string;
44
+ bulletList: string;
45
+ numberList: string;
46
+ alignLeft: string;
47
+ alignCenter: string;
48
+ alignRight: string;
49
+ link: string;
50
+ linkAddress: string;
51
+ applyLink: string;
52
+ removeLink: string;
20
53
  upload: string;
21
54
  uploadImage: string;
22
55
  replace: string;
package/src/lib/labels.js CHANGED
@@ -15,6 +15,33 @@ exports.WIDGET_LABELS = {
15
15
  lineProblem: 'Line {n}: {message}',
16
16
  moreProblems: 'and {n} more',
17
17
  chooseColumns: 'Choose columns',
18
+ createNamed: 'Create “{name}”',
19
+ createAndEdit: 'Create and edit…',
20
+ searchMore: 'Search more…',
21
+ openNamed: 'Open {name}',
22
+ openLine: 'Open line',
23
+ chooseDate: 'Choose a date',
24
+ previousMonth: 'Previous month',
25
+ nextMonth: 'Next month',
26
+ weekShort: 'Wk',
27
+ week: 'Week',
28
+ formatting: 'Formatting',
29
+ bold: 'Bold',
30
+ italic: 'Italic',
31
+ underline: 'Underline',
32
+ textStyle: 'Text style',
33
+ paragraph: 'Paragraph',
34
+ heading: 'Heading',
35
+ subheading: 'Subheading',
36
+ bulletList: 'Bulleted list',
37
+ numberList: 'Numbered list',
38
+ alignLeft: 'Align left',
39
+ alignCenter: 'Align centre',
40
+ alignRight: 'Align right',
41
+ link: 'Link',
42
+ linkAddress: 'Link address',
43
+ applyLink: 'Apply',
44
+ removeLink: 'Remove link',
18
45
  upload: 'Upload a file',
19
46
  uploadImage: 'Add a photo',
20
47
  replace: 'Replace',
@@ -35,6 +62,33 @@ exports.WIDGET_LABELS = {
35
62
  lineProblem: 'السطر {n}: {message}',
36
63
  moreProblems: 'و{n} أخرى',
37
64
  chooseColumns: 'اختيار الأعمدة',
65
+ createNamed: 'إنشاء «{name}»',
66
+ createAndEdit: 'إنشاء وتعديل…',
67
+ searchMore: 'بحث موسّع…',
68
+ openNamed: 'فتح {name}',
69
+ openLine: 'فتح السطر',
70
+ chooseDate: 'اختيار تاريخ',
71
+ previousMonth: 'الشهر السابق',
72
+ nextMonth: 'الشهر التالي',
73
+ weekShort: 'أسبوع',
74
+ week: 'الأسبوع',
75
+ formatting: 'التنسيق',
76
+ bold: 'غامق',
77
+ italic: 'مائل',
78
+ underline: 'تسطير',
79
+ textStyle: 'نمط النص',
80
+ paragraph: 'فقرة',
81
+ heading: 'عنوان',
82
+ subheading: 'عنوان فرعي',
83
+ bulletList: 'قائمة نقطية',
84
+ numberList: 'قائمة مرقمة',
85
+ alignLeft: 'محاذاة لليسار',
86
+ alignCenter: 'توسيط',
87
+ alignRight: 'محاذاة لليمين',
88
+ link: 'رابط',
89
+ linkAddress: 'عنوان الرابط',
90
+ applyLink: 'تطبيق',
91
+ removeLink: 'إزالة الرابط',
38
92
  upload: 'رفع ملف',
39
93
  uploadImage: 'إضافة صورة',
40
94
  replace: 'استبدال',
@@ -55,6 +109,33 @@ exports.WIDGET_LABELS = {
55
109
  lineProblem: 'Zeile {n}: {message}',
56
110
  moreProblems: 'und {n} weitere',
57
111
  chooseColumns: 'Spalten auswählen',
112
+ createNamed: '„{name}“ anlegen',
113
+ createAndEdit: 'Anlegen und bearbeiten…',
114
+ searchMore: 'Weitere suchen…',
115
+ openNamed: '{name} öffnen',
116
+ openLine: 'Zeile öffnen',
117
+ chooseDate: 'Datum auswählen',
118
+ previousMonth: 'Vorheriger Monat',
119
+ nextMonth: 'Nächster Monat',
120
+ weekShort: 'KW',
121
+ week: 'Kalenderwoche',
122
+ formatting: 'Formatierung',
123
+ bold: 'Fett',
124
+ italic: 'Kursiv',
125
+ underline: 'Unterstrichen',
126
+ textStyle: 'Textstil',
127
+ paragraph: 'Absatz',
128
+ heading: 'Überschrift',
129
+ subheading: 'Unterüberschrift',
130
+ bulletList: 'Aufzählung',
131
+ numberList: 'Nummerierte Liste',
132
+ alignLeft: 'Linksbündig',
133
+ alignCenter: 'Zentriert',
134
+ alignRight: 'Rechtsbündig',
135
+ link: 'Link',
136
+ linkAddress: 'Linkadresse',
137
+ applyLink: 'Übernehmen',
138
+ removeLink: 'Link entfernen',
58
139
  upload: 'Datei hochladen',
59
140
  uploadImage: 'Foto hinzufügen',
60
141
  replace: 'Ersetzen',
@@ -75,6 +156,33 @@ exports.WIDGET_LABELS = {
75
156
  lineProblem: 'Ligne {n} : {message}',
76
157
  moreProblems: 'et {n} de plus',
77
158
  chooseColumns: 'Choisir les colonnes',
159
+ createNamed: 'Créer « {name} »',
160
+ createAndEdit: 'Créer et modifier…',
161
+ searchMore: 'Rechercher plus…',
162
+ openNamed: 'Ouvrir {name}',
163
+ openLine: 'Ouvrir la ligne',
164
+ chooseDate: 'Choisir une date',
165
+ previousMonth: 'Mois précédent',
166
+ nextMonth: 'Mois suivant',
167
+ weekShort: 'Sem.',
168
+ week: 'Semaine',
169
+ formatting: 'Mise en forme',
170
+ bold: 'Gras',
171
+ italic: 'Italique',
172
+ underline: 'Souligné',
173
+ textStyle: 'Style du texte',
174
+ paragraph: 'Paragraphe',
175
+ heading: 'Titre',
176
+ subheading: 'Sous-titre',
177
+ bulletList: 'Liste à puces',
178
+ numberList: 'Liste numérotée',
179
+ alignLeft: 'Aligner à gauche',
180
+ alignCenter: 'Centrer',
181
+ alignRight: 'Aligner à droite',
182
+ link: 'Lien',
183
+ linkAddress: 'Adresse du lien',
184
+ applyLink: 'Appliquer',
185
+ removeLink: 'Supprimer le lien',
78
186
  upload: 'Téléverser un fichier',
79
187
  uploadImage: 'Ajouter une photo',
80
188
  replace: 'Remplacer',
@@ -1 +1 @@
1
- {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/labels.ts"],"names":[],"mappings":";;;AA4Ba,QAAA,aAAa,GAAiC;IACzD,EAAE,EAAE;QACF,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,eAAe;QAC3B,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,aAAa;QACzB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,qBAAqB;QAClC,YAAY,EAAE,cAAc;QAC5B,aAAa,EAAE,gBAAgB;QAC/B,MAAM,EAAE,eAAe;QACvB,WAAW,EAAE,aAAa;QAC1B,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,WAAW;QACvB,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,WAAW;QACvB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,sBAAsB;QACnC,YAAY,EAAE,WAAW;QACzB,aAAa,EAAE,gBAAgB;QAC/B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,OAAO;QACnB,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,iBAAiB;KAC/B;IACD,EAAE,EAAE;QACF,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,kBAAkB;QAC7B,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE,sBAAsB;QAClC,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE,eAAe;QAC3B,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,sBAAsB;QACnC,YAAY,EAAE,iBAAiB;QAC/B,aAAa,EAAE,mBAAmB;QAClC,MAAM,EAAE,iBAAiB;QACzB,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,oBAAoB;KAClC;IACD,EAAE,EAAE;QACF,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,gBAAgB;QAC3B,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,mBAAmB;QAC5B,UAAU,EAAE,qBAAqB;QACjC,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE,oBAAoB;QAChC,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,uBAAuB;QACpC,YAAY,EAAE,gBAAgB;QAC9B,aAAa,EAAE,sBAAsB;QACrC,MAAM,EAAE,uBAAuB;QAC/B,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,eAAe;KAC7B;CACF,CAAC"}
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/labels.ts"],"names":[],"mappings":";;;AA6Da,QAAA,aAAa,GAAiC;IACzD,EAAE,EAAE;QACF,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,eAAe;QAC3B,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,aAAa;QACzB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,qBAAqB;QAClC,YAAY,EAAE,cAAc;QAC5B,aAAa,EAAE,gBAAgB;QAC/B,WAAW,EAAE,iBAAiB;QAC9B,aAAa,EAAE,kBAAkB;QACjC,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE,aAAa;QACxB,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,gBAAgB;QAC/B,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,eAAe;QAC3B,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,YAAY;QACvB,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,aAAa;QACzB,MAAM,EAAE,eAAe;QACvB,WAAW,EAAE,aAAa;QAC1B,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,WAAW;QACvB,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,WAAW;QACvB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,sBAAsB;QACnC,YAAY,EAAE,WAAW;QACzB,aAAa,EAAE,gBAAgB;QAC/B,WAAW,EAAE,gBAAgB;QAC7B,aAAa,EAAE,eAAe;QAC9B,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,YAAY;QACvB,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,cAAc;QAC1B,aAAa,EAAE,cAAc;QAC7B,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,OAAO;QAClB,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,OAAO;QAClB,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,eAAe;QAC1B,WAAW,EAAE,OAAO;QACpB,UAAU,EAAE,eAAe;QAC3B,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,OAAO;QACnB,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,iBAAiB;KAC/B;IACD,EAAE,EAAE;QACF,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,kBAAkB;QAC7B,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE,sBAAsB;QAClC,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE,eAAe;QAC3B,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,sBAAsB;QACnC,YAAY,EAAE,iBAAiB;QAC/B,aAAa,EAAE,mBAAmB;QAClC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,yBAAyB;QACxC,UAAU,EAAE,iBAAiB;QAC7B,SAAS,EAAE,eAAe;QAC1B,QAAQ,EAAE,cAAc;QACxB,UAAU,EAAE,iBAAiB;QAC7B,aAAa,EAAE,kBAAkB;QACjC,SAAS,EAAE,gBAAgB;QAC3B,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,cAAc;QAC1B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,eAAe;QAC1B,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,kBAAkB;QAC9B,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,mBAAmB;QAC/B,SAAS,EAAE,aAAa;QACxB,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,cAAc;QAC1B,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,aAAa;QAC1B,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,gBAAgB;QAC5B,MAAM,EAAE,iBAAiB;QACzB,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,oBAAoB;KAClC;IACD,EAAE,EAAE;QACF,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,gBAAgB;QAC3B,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,mBAAmB;QAC5B,UAAU,EAAE,qBAAqB;QACjC,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE,oBAAoB;QAChC,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,uBAAuB;QACpC,YAAY,EAAE,gBAAgB;QAC9B,aAAa,EAAE,sBAAsB;QACrC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,oBAAoB;QACnC,UAAU,EAAE,kBAAkB;QAC9B,SAAS,EAAE,eAAe;QAC1B,QAAQ,EAAE,iBAAiB;QAC3B,UAAU,EAAE,kBAAkB;QAC9B,aAAa,EAAE,gBAAgB;QAC/B,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,eAAe;QAC3B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,gBAAgB;QAC3B,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,eAAe;QAC3B,UAAU,EAAE,iBAAiB;QAC7B,SAAS,EAAE,kBAAkB;QAC7B,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,kBAAkB;QAC9B,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,WAAW;QACtB,UAAU,EAAE,mBAAmB;QAC/B,MAAM,EAAE,uBAAuB;QAC/B,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,eAAe;KAC7B;CACF,CAAC"}