@fieldia/viewer 0.9.2 → 0.11.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 (118) hide show
  1. package/README.md +145 -1
  2. package/bundle/fieldia.ar.js +3 -0
  3. package/bundle/fieldia.ar.js.map +7 -0
  4. package/bundle/fieldia.de.js +3 -0
  5. package/bundle/fieldia.de.js.map +7 -0
  6. package/bundle/fieldia.fr.js +3 -0
  7. package/bundle/fieldia.fr.js.map +7 -0
  8. package/bundle/fieldia.js +4 -4
  9. package/bundle/fieldia.js.map +4 -4
  10. package/package.json +6 -3
  11. package/src/index.d.mts +4 -0
  12. package/src/index.d.ts +4 -0
  13. package/src/index.js +12 -0
  14. package/src/index.js.map +1 -1
  15. package/src/index.mjs +4 -0
  16. package/src/index.mjs.map +1 -1
  17. package/src/lib/add-language.d.mts +20 -0
  18. package/src/lib/add-language.d.ts +20 -0
  19. package/src/lib/add-language.js +19 -0
  20. package/src/lib/add-language.js.map +1 -0
  21. package/src/lib/add-language.mjs +16 -0
  22. package/src/lib/add-language.mjs.map +1 -0
  23. package/src/lib/dialog.d.mts +35 -3
  24. package/src/lib/dialog.d.ts +35 -3
  25. package/src/lib/dialog.js +109 -47
  26. package/src/lib/dialog.js.map +1 -1
  27. package/src/lib/dialog.mjs +107 -47
  28. package/src/lib/dialog.mjs.map +1 -1
  29. package/src/lib/dom.d.mts +10 -0
  30. package/src/lib/dom.d.ts +10 -0
  31. package/src/lib/dom.js +26 -0
  32. package/src/lib/dom.js.map +1 -1
  33. package/src/lib/dom.mjs +23 -1
  34. package/src/lib/dom.mjs.map +1 -1
  35. package/src/lib/focus-trap.d.mts +2 -0
  36. package/src/lib/focus-trap.d.ts +2 -0
  37. package/src/lib/focus-trap.js +7 -0
  38. package/src/lib/focus-trap.js.map +1 -0
  39. package/src/lib/focus-trap.mjs +3 -0
  40. package/src/lib/focus-trap.mjs.map +1 -0
  41. package/src/lib/labels.d.mts +27 -0
  42. package/src/lib/labels.d.ts +27 -0
  43. package/src/lib/labels.js +109 -277
  44. package/src/lib/labels.js.map +1 -1
  45. package/src/lib/labels.mjs +108 -277
  46. package/src/lib/labels.mjs.map +1 -1
  47. package/src/lib/list-styles.d.mts +1 -1
  48. package/src/lib/list-styles.d.ts +1 -1
  49. package/src/lib/list-styles.js +3 -2
  50. package/src/lib/list-styles.js.map +1 -1
  51. package/src/lib/list-styles.mjs +3 -2
  52. package/src/lib/list-styles.mjs.map +1 -1
  53. package/src/lib/list.d.mts +3 -2
  54. package/src/lib/list.d.ts +3 -2
  55. package/src/lib/list.js +5 -5
  56. package/src/lib/list.js.map +1 -1
  57. package/src/lib/list.mjs +5 -5
  58. package/src/lib/list.mjs.map +1 -1
  59. package/src/lib/locales/all.d.mts +8 -0
  60. package/src/lib/locales/all.d.ts +8 -0
  61. package/src/lib/locales/all.js +13 -0
  62. package/src/lib/locales/all.js.map +1 -0
  63. package/src/lib/locales/all.mjs +10 -0
  64. package/src/lib/locales/all.mjs.map +1 -0
  65. package/src/lib/locales/ar.d.mts +3 -0
  66. package/src/lib/locales/ar.d.ts +3 -0
  67. package/src/lib/locales/ar.js +80 -0
  68. package/src/lib/locales/ar.js.map +1 -0
  69. package/src/lib/locales/ar.mjs +77 -0
  70. package/src/lib/locales/ar.mjs.map +1 -0
  71. package/src/lib/locales/de.d.mts +3 -0
  72. package/src/lib/locales/de.d.ts +3 -0
  73. package/src/lib/locales/de.js +80 -0
  74. package/src/lib/locales/de.js.map +1 -0
  75. package/src/lib/locales/de.mjs +77 -0
  76. package/src/lib/locales/de.mjs.map +1 -0
  77. package/src/lib/locales/fr.d.mts +3 -0
  78. package/src/lib/locales/fr.d.ts +3 -0
  79. package/src/lib/locales/fr.js +80 -0
  80. package/src/lib/locales/fr.js.map +1 -0
  81. package/src/lib/locales/fr.mjs +77 -0
  82. package/src/lib/locales/fr.mjs.map +1 -0
  83. package/src/lib/look.d.mts +25 -0
  84. package/src/lib/look.d.ts +25 -0
  85. package/src/lib/look.js +141 -0
  86. package/src/lib/look.js.map +1 -0
  87. package/src/lib/look.mjs +136 -0
  88. package/src/lib/look.mjs.map +1 -0
  89. package/src/lib/open.d.mts +24 -0
  90. package/src/lib/open.d.ts +24 -0
  91. package/src/lib/open.js +81 -0
  92. package/src/lib/open.js.map +1 -0
  93. package/src/lib/open.mjs +78 -0
  94. package/src/lib/open.mjs.map +1 -0
  95. package/src/lib/place.d.mts +35 -0
  96. package/src/lib/place.d.ts +35 -0
  97. package/src/lib/place.js +37 -0
  98. package/src/lib/place.js.map +1 -0
  99. package/src/lib/place.mjs +33 -0
  100. package/src/lib/place.mjs.map +1 -0
  101. package/src/lib/related.d.mts +19 -0
  102. package/src/lib/related.d.ts +19 -0
  103. package/src/lib/related.js +17 -3
  104. package/src/lib/related.js.map +1 -1
  105. package/src/lib/related.mjs +16 -3
  106. package/src/lib/related.mjs.map +1 -1
  107. package/src/lib/say.d.mts +9 -0
  108. package/src/lib/say.d.ts +9 -0
  109. package/src/lib/say.js +45 -0
  110. package/src/lib/say.js.map +1 -0
  111. package/src/lib/say.mjs +42 -0
  112. package/src/lib/say.mjs.map +1 -0
  113. package/src/lib/viewer.d.mts +43 -7
  114. package/src/lib/viewer.d.ts +43 -7
  115. package/src/lib/viewer.js +513 -225
  116. package/src/lib/viewer.js.map +1 -1
  117. package/src/lib/viewer.mjs +516 -228
  118. package/src/lib/viewer.mjs.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fieldia/viewer",
3
- "version": "0.9.2",
3
+ "version": "0.11.0",
4
4
  "description": "Mount a Fieldia page in any web page: plain DOM, no framework.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://fieldia.dev",
@@ -21,11 +21,14 @@
21
21
  "default": "./src/index.js"
22
22
  },
23
23
  "./bundle/fieldia.js": "./bundle/fieldia.js",
24
+ "./bundle/fieldia.ar.js": "./bundle/fieldia.ar.js",
25
+ "./bundle/fieldia.de.js": "./bundle/fieldia.de.js",
26
+ "./bundle/fieldia.fr.js": "./bundle/fieldia.fr.js",
24
27
  "./package.json": "./package.json"
25
28
  },
26
29
  "dependencies": {
27
- "@fieldia/core": "0.9.2",
28
- "@fieldia/widgets": "0.9.2",
30
+ "@fieldia/core": "0.11.0",
31
+ "@fieldia/widgets": "0.11.0",
29
32
  "tslib": "^2.8.1"
30
33
  },
31
34
  "sideEffects": false,
package/src/index.d.mts CHANGED
@@ -1,2 +1,6 @@
1
1
  export * from './lib/viewer.mjs';
2
2
  export * from './lib/dialog.mjs';
3
+ export { addLanguage, type LanguageWords } from './lib/add-language.mjs';
4
+ export { installListStyles } from './lib/list-styles.mjs';
5
+ export { accentShades, applyLook, contrast, type AccentShades } from './lib/look.mjs';
6
+ export { labelPlace, planSection, type Place, type SectionPlan } from './lib/place.mjs';
package/src/index.d.ts CHANGED
@@ -1,2 +1,6 @@
1
1
  export * from './lib/viewer';
2
2
  export * from './lib/dialog';
3
+ export { addLanguage, type LanguageWords } from './lib/add-language';
4
+ export { installListStyles } from './lib/list-styles';
5
+ export { accentShades, applyLook, contrast, type AccentShades } from './lib/look';
6
+ export { labelPlace, planSection, type Place, type SectionPlan } from './lib/place';
package/src/index.js CHANGED
@@ -1,6 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.planSection = exports.labelPlace = exports.contrast = exports.applyLook = exports.accentShades = exports.installListStyles = exports.addLanguage = void 0;
3
4
  const tslib_1 = require("tslib");
4
5
  tslib_1.__exportStar(require("./lib/viewer"), exports);
5
6
  tslib_1.__exportStar(require("./lib/dialog"), exports);
7
+ var add_language_1 = require("./lib/add-language");
8
+ Object.defineProperty(exports, "addLanguage", { enumerable: true, get: function () { return add_language_1.addLanguage; } });
9
+ var list_styles_1 = require("./lib/list-styles");
10
+ Object.defineProperty(exports, "installListStyles", { enumerable: true, get: function () { return list_styles_1.installListStyles; } });
11
+ var look_1 = require("./lib/look");
12
+ Object.defineProperty(exports, "accentShades", { enumerable: true, get: function () { return look_1.accentShades; } });
13
+ Object.defineProperty(exports, "applyLook", { enumerable: true, get: function () { return look_1.applyLook; } });
14
+ Object.defineProperty(exports, "contrast", { enumerable: true, get: function () { return look_1.contrast; } });
15
+ var place_1 = require("./lib/place");
16
+ Object.defineProperty(exports, "labelPlace", { enumerable: true, get: function () { return place_1.labelPlace; } });
17
+ Object.defineProperty(exports, "planSection", { enumerable: true, get: function () { return place_1.planSection; } });
6
18
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/viewer/src/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,uDAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/viewer/src/index.ts"],"names":[],"mappings":";;;;AAAA,uDAA6B;AAC7B,uDAA6B;AAC7B,mDAAqE;AAA5D,2GAAA,WAAW,OAAA;AACpB,iDAAsD;AAA7C,gHAAA,iBAAiB,OAAA;AAC1B,mCAAkF;AAAzE,oGAAA,YAAY,OAAA;AAAE,iGAAA,SAAS,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAC1C,qCAAoF;AAA3E,mGAAA,UAAU,OAAA;AAAE,oGAAA,WAAW,OAAA"}
package/src/index.mjs CHANGED
@@ -1,3 +1,7 @@
1
1
  export * from './lib/viewer.mjs';
2
2
  export * from './lib/dialog.mjs';
3
+ export { addLanguage } from './lib/add-language.mjs';
4
+ export { installListStyles } from './lib/list-styles.mjs';
5
+ export { accentShades, applyLook, contrast } from './lib/look.mjs';
6
+ export { labelPlace, planSection } from './lib/place.mjs';
3
7
  //# sourceMappingURL=index.mjs.map
package/src/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../../libs/viewer/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../../libs/viewer/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAsB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAqB,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAgC,MAAM,aAAa,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type Locale, type Messages } from '@fieldia/core';
2
+ import { type WidgetLabels } from '@fieldia/widgets';
3
+ import { type ViewerLabels } from './labels.mjs';
4
+ /** A language's own words, in the three places Fieldia keeps them. A word left out shows in English. */
5
+ export interface LanguageWords {
6
+ /** The validation messages (`MESSAGES`). */
7
+ messages?: Partial<Messages>;
8
+ /** The widgets' own words (`WIDGET_LABELS`). */
9
+ widgets?: Partial<WidgetLabels>;
10
+ /** The viewer's own words (`VIEWER_LABELS`). */
11
+ viewer?: Partial<ViewerLabels>;
12
+ }
13
+ /**
14
+ * Give Fieldia a language's own words, for every page shown in it from then
15
+ * on. The packages have English, Arabic, German and French already; the
16
+ * one-tag script has English alone, and its add-on scripts — `fieldia.ar.js`,
17
+ * `fieldia.de.js`, `fieldia.fr.js` — call this with theirs. A language given
18
+ * again takes the new words.
19
+ */
20
+ export declare function addLanguage(locale: Locale, words: LanguageWords): void;
@@ -0,0 +1,20 @@
1
+ import { type Locale, type Messages } from '@fieldia/core';
2
+ import { type WidgetLabels } from '@fieldia/widgets';
3
+ import { type ViewerLabels } from './labels';
4
+ /** A language's own words, in the three places Fieldia keeps them. A word left out shows in English. */
5
+ export interface LanguageWords {
6
+ /** The validation messages (`MESSAGES`). */
7
+ messages?: Partial<Messages>;
8
+ /** The widgets' own words (`WIDGET_LABELS`). */
9
+ widgets?: Partial<WidgetLabels>;
10
+ /** The viewer's own words (`VIEWER_LABELS`). */
11
+ viewer?: Partial<ViewerLabels>;
12
+ }
13
+ /**
14
+ * Give Fieldia a language's own words, for every page shown in it from then
15
+ * on. The packages have English, Arabic, German and French already; the
16
+ * one-tag script has English alone, and its add-on scripts — `fieldia.ar.js`,
17
+ * `fieldia.de.js`, `fieldia.fr.js` — call this with theirs. A language given
18
+ * again takes the new words.
19
+ */
20
+ export declare function addLanguage(locale: Locale, words: LanguageWords): void;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addLanguage = addLanguage;
4
+ const core_1 = require("@fieldia/core");
5
+ const widgets_1 = require("@fieldia/widgets");
6
+ const labels_1 = require("./labels");
7
+ /**
8
+ * Give Fieldia a language's own words, for every page shown in it from then
9
+ * on. The packages have English, Arabic, German and French already; the
10
+ * one-tag script has English alone, and its add-on scripts — `fieldia.ar.js`,
11
+ * `fieldia.de.js`, `fieldia.fr.js` — call this with theirs. A language given
12
+ * again takes the new words.
13
+ */
14
+ function addLanguage(locale, words) {
15
+ core_1.MESSAGES[locale] = { ...core_1.MESSAGES.en, ...words.messages };
16
+ widgets_1.WIDGET_LABELS[locale] = { ...widgets_1.WIDGET_LABELS.en, ...words.widgets };
17
+ labels_1.VIEWER_LABELS[locale] = { ...labels_1.VIEWER_LABELS.en, ...words.viewer };
18
+ }
19
+ //# sourceMappingURL=add-language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-language.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/add-language.ts"],"names":[],"mappings":";;AAqBA,kCAIC;AAzBD,wCAAqE;AACrE,8CAAoE;AACpE,qCAA4D;AAY5D;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,MAAc,EAAE,KAAoB;IAC9D,eAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,eAAQ,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzD,uBAAa,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,uBAAa,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAClE,sBAAa,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,sBAAa,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AACnE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { MESSAGES } from '@fieldia/core';
2
+ import { WIDGET_LABELS } from '@fieldia/widgets';
3
+ import { VIEWER_LABELS } from './labels.mjs';
4
+ /**
5
+ * Give Fieldia a language's own words, for every page shown in it from then
6
+ * on. The packages have English, Arabic, German and French already; the
7
+ * one-tag script has English alone, and its add-on scripts — `fieldia.ar.js`,
8
+ * `fieldia.de.js`, `fieldia.fr.js` — call this with theirs. A language given
9
+ * again takes the new words.
10
+ */
11
+ export function addLanguage(locale, words) {
12
+ MESSAGES[locale] = { ...MESSAGES.en, ...words.messages };
13
+ WIDGET_LABELS[locale] = { ...WIDGET_LABELS.en, ...words.widgets };
14
+ VIEWER_LABELS[locale] = { ...VIEWER_LABELS.en, ...words.viewer };
15
+ }
16
+ //# sourceMappingURL=add-language.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-language.mjs","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/add-language.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA8B,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,aAAa,EAAqB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAY5D;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAoB;IAC9D,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzD,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAClE,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AACnE,CAAC"}
@@ -1,10 +1,11 @@
1
- import type { Locale, RecordId, RelatedRecord, Values } from '@fieldia/core';
1
+ import type { PageLook, PanelSide, RecordId, RelatedRecord, Values } from '@fieldia/core';
2
2
  import { type Skin, type ViewerOptions } from './viewer.mjs';
3
3
  /**
4
4
  * A page in a dialog: a new related record, a line to edit, a quick task. The
5
5
  * dialog saves (Save & Close) or closes without saving (Discard, ×, Escape);
6
6
  * the page's own Save and Discard stay hidden. The focus moves into the dialog,
7
7
  * Tab stays inside it, and the focus goes back where it was when it closes.
8
+ * A side panel (`openFormPanel`) is the same box at the edge of the screen.
8
9
  */
9
10
  export interface FormDialogOptions extends ViewerOptions {
10
11
  title: string;
@@ -22,23 +23,54 @@ export interface FormDialogOptions extends ViewerOptions {
22
23
  recompute?: (values: Values) => Promise<Values>;
23
24
  /** Where the dialog goes: the document's body by default. */
24
25
  container?: HTMLElement;
26
+ /** The look of the page that opened it, worn by the dialog and the page in it, unless that page has a look of its own. */
27
+ look?: PageLook;
25
28
  }
26
29
  export interface FormDialogResult {
27
- /** True when Save & Close was pressed and the form accepted. */
30
+ /** True when Save & Close (Done, in a panel in "values" mode) was pressed and the form accepted. */
28
31
  saved: boolean;
29
32
  recordId: RecordId | null;
30
33
  values: Values;
31
34
  }
35
+ /** A page in a side panel: the dialog's options, with the edge it comes from and its depth in place of a size. */
36
+ export interface FormPanelOptions extends Omit<FormDialogOptions, 'size'> {
37
+ /**
38
+ * The edge it comes from: `end` (the default: the end of the line, the right,
39
+ * or the left right to left) or `start`, as the page reads; or `left`,
40
+ * `right`, `top` or `bottom` of the screen, whatever the page's direction.
41
+ */
42
+ side?: PanelSide;
43
+ /** A panel at the end, start, left or right: about 420, 560 (the default) or 720 pixels wide on a wide screen; the whole screen on a phone. */
44
+ width?: 'narrow' | 'medium' | 'wide';
45
+ /** A panel at the top or bottom, the whole width: about 40, 60 (the default) or 85 in a hundred of the screen's height; the whole screen on a phone. */
46
+ height?: 'short' | 'medium' | 'tall';
47
+ }
48
+ /** The first box to type or choose in, where a page opened takes the focus. */
49
+ export declare const FIRST_FIELD = "input:not([type=\"hidden\"]), select, textarea, [contenteditable=\"true\"]";
32
50
  export declare function openFormDialog(options: FormDialogOptions): Promise<FormDialogResult>;
51
+ /**
52
+ * A page in a side panel: the dialog's twin, at full height along the
53
+ * inline-end edge (the left, right to left) unless it names another `side` —
54
+ * the whole width along the top or the bottom — the page behind dimmed but in
55
+ * sight; a full-screen sheet on a phone, from above for the top, from below
56
+ * for the rest. It saves, or in "values" mode hands back its values with
57
+ * Done, as the dialog does; Escape and × ask first when there are changes to
58
+ * lose. A dialog opened from it sits above it, and a panel opened from it
59
+ * stacks over it, this one stepped back from its own edge.
60
+ */
61
+ export declare function openFormPanel(options: FormPanelOptions): Promise<FormDialogResult>;
33
62
  export interface SearchDialogOptions {
34
63
  title: string;
35
64
  /** Finds records for what is typed: the field's own search, filter and all. */
36
65
  search(query: string, limit: number): Promise<RelatedRecord[]>;
37
- locale?: Locale;
66
+ /** A language tag; the dialog's words are in it when Fieldia has them, English otherwise. */
67
+ locale?: string;
38
68
  skin?: Skin;
39
69
  dir?: 'ltr' | 'rtl';
40
70
  /** Where the dialog goes: the document's body by default. */
41
71
  container?: HTMLElement;
72
+ /** The look of the page that opened it: its accent, scheme, font, room and corners. */
73
+ look?: PageLook;
42
74
  }
43
75
  /**
44
76
  * A searchable list in a dialog, for "Search more…": every record the field may
@@ -1,10 +1,11 @@
1
- import type { Locale, RecordId, RelatedRecord, Values } from '@fieldia/core';
1
+ import type { PageLook, PanelSide, RecordId, RelatedRecord, Values } from '@fieldia/core';
2
2
  import { type Skin, type ViewerOptions } from './viewer';
3
3
  /**
4
4
  * A page in a dialog: a new related record, a line to edit, a quick task. The
5
5
  * dialog saves (Save & Close) or closes without saving (Discard, ×, Escape);
6
6
  * the page's own Save and Discard stay hidden. The focus moves into the dialog,
7
7
  * Tab stays inside it, and the focus goes back where it was when it closes.
8
+ * A side panel (`openFormPanel`) is the same box at the edge of the screen.
8
9
  */
9
10
  export interface FormDialogOptions extends ViewerOptions {
10
11
  title: string;
@@ -22,23 +23,54 @@ export interface FormDialogOptions extends ViewerOptions {
22
23
  recompute?: (values: Values) => Promise<Values>;
23
24
  /** Where the dialog goes: the document's body by default. */
24
25
  container?: HTMLElement;
26
+ /** The look of the page that opened it, worn by the dialog and the page in it, unless that page has a look of its own. */
27
+ look?: PageLook;
25
28
  }
26
29
  export interface FormDialogResult {
27
- /** True when Save & Close was pressed and the form accepted. */
30
+ /** True when Save & Close (Done, in a panel in "values" mode) was pressed and the form accepted. */
28
31
  saved: boolean;
29
32
  recordId: RecordId | null;
30
33
  values: Values;
31
34
  }
35
+ /** A page in a side panel: the dialog's options, with the edge it comes from and its depth in place of a size. */
36
+ export interface FormPanelOptions extends Omit<FormDialogOptions, 'size'> {
37
+ /**
38
+ * The edge it comes from: `end` (the default: the end of the line, the right,
39
+ * or the left right to left) or `start`, as the page reads; or `left`,
40
+ * `right`, `top` or `bottom` of the screen, whatever the page's direction.
41
+ */
42
+ side?: PanelSide;
43
+ /** A panel at the end, start, left or right: about 420, 560 (the default) or 720 pixels wide on a wide screen; the whole screen on a phone. */
44
+ width?: 'narrow' | 'medium' | 'wide';
45
+ /** A panel at the top or bottom, the whole width: about 40, 60 (the default) or 85 in a hundred of the screen's height; the whole screen on a phone. */
46
+ height?: 'short' | 'medium' | 'tall';
47
+ }
48
+ /** The first box to type or choose in, where a page opened takes the focus. */
49
+ export declare const FIRST_FIELD = "input:not([type=\"hidden\"]), select, textarea, [contenteditable=\"true\"]";
32
50
  export declare function openFormDialog(options: FormDialogOptions): Promise<FormDialogResult>;
51
+ /**
52
+ * A page in a side panel: the dialog's twin, at full height along the
53
+ * inline-end edge (the left, right to left) unless it names another `side` —
54
+ * the whole width along the top or the bottom — the page behind dimmed but in
55
+ * sight; a full-screen sheet on a phone, from above for the top, from below
56
+ * for the rest. It saves, or in "values" mode hands back its values with
57
+ * Done, as the dialog does; Escape and × ask first when there are changes to
58
+ * lose. A dialog opened from it sits above it, and a panel opened from it
59
+ * stacks over it, this one stepped back from its own edge.
60
+ */
61
+ export declare function openFormPanel(options: FormPanelOptions): Promise<FormDialogResult>;
33
62
  export interface SearchDialogOptions {
34
63
  title: string;
35
64
  /** Finds records for what is typed: the field's own search, filter and all. */
36
65
  search(query: string, limit: number): Promise<RelatedRecord[]>;
37
- locale?: Locale;
66
+ /** A language tag; the dialog's words are in it when Fieldia has them, English otherwise. */
67
+ locale?: string;
38
68
  skin?: Skin;
39
69
  dir?: 'ltr' | 'rtl';
40
70
  /** Where the dialog goes: the document's body by default. */
41
71
  container?: HTMLElement;
72
+ /** The look of the page that opened it: its accent, scheme, font, room and corners. */
73
+ look?: PageLook;
42
74
  }
43
75
  /**
44
76
  * A searchable list in a dialog, for "Search more…": every record the field may
package/src/lib/dialog.js CHANGED
@@ -1,54 +1,97 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FIRST_FIELD = void 0;
3
4
  exports.openFormDialog = openFormDialog;
5
+ exports.openFormPanel = openFormPanel;
4
6
  exports.openSearchDialog = openSearchDialog;
5
7
  const widgets_1 = require("@fieldia/widgets");
8
+ const labels_1 = require("./labels");
9
+ const focus_trap_1 = require("./focus-trap");
10
+ const look_1 = require("./look");
6
11
  const viewer_1 = require("./viewer");
7
12
  let dialogs = 0;
8
- const FOCUSABLE = 'button, [href], input, select, textarea, [contenteditable="true"], [tabindex]:not([tabindex="-1"])';
13
+ /** The first box to type or choose in, where a page opened takes the focus. */
14
+ exports.FIRST_FIELD = 'input:not([type="hidden"]), select, textarea, [contenteditable="true"]';
15
+ /** The dialogs' way to make an element of a document: a tag, its attributes, and its words. */
16
+ const maker = (doc) => (tag, attrs = {}, text) => {
17
+ const element = doc.createElement(tag);
18
+ for (const [name, value] of Object.entries(attrs))
19
+ element.setAttribute(name, value);
20
+ if (text !== undefined)
21
+ element.textContent = text;
22
+ return element;
23
+ };
9
24
  function openFormDialog(options) {
25
+ return openForm(options, `fd-size-${options.size ?? 'medium'}`);
26
+ }
27
+ /**
28
+ * A page in a side panel: the dialog's twin, at full height along the
29
+ * inline-end edge (the left, right to left) unless it names another `side` —
30
+ * the whole width along the top or the bottom — the page behind dimmed but in
31
+ * sight; a full-screen sheet on a phone, from above for the top, from below
32
+ * for the rest. It saves, or in "values" mode hands back its values with
33
+ * Done, as the dialog does; Escape and × ask first when there are changes to
34
+ * lose. A dialog opened from it sits above it, and a panel opened from it
35
+ * stacks over it, this one stepped back from its own edge.
36
+ */
37
+ function openFormPanel(options) {
38
+ const side = options.side ?? 'end';
39
+ return openForm(options, `fd-form-panel ${side === 'top' || side === 'bottom' ? `fd-height-${options.height ?? 'medium'}` : `fd-width-${options.width ?? 'medium'}`}`, side);
40
+ }
41
+ /** A dialog or a panel (from its side): a page in a box with a head, a body that scrolls and a foot; `shape` is the box's own classes. */
42
+ function openForm(options, shape, side) {
43
+ const panel = !!side;
10
44
  const doc = options.container?.ownerDocument ?? document;
11
45
  const container = options.container ?? doc.body;
12
46
  const opener = doc.activeElement instanceof doc.defaultView.HTMLElement ? doc.activeElement : null;
13
- const labels = { ...viewer_1.VIEWER_LABELS[options.locale ?? 'en'], ...options.labels };
47
+ const labels = { ...viewer_1.VIEWER_LABELS[(0, labels_1.ownLocale)(options.locale)], ...options.labels };
14
48
  const id = `fd-dialog-${++dialogs}`;
15
- const make = (tag, attrs = {}, text) => {
16
- const element = doc.createElement(tag);
17
- for (const [name, value] of Object.entries(attrs))
18
- element.setAttribute(name, value);
19
- if (text !== undefined)
20
- element.textContent = text;
21
- return element;
22
- };
49
+ const make = maker(doc);
23
50
  const title = make('h2', { id: `${id}-title`, class: 'fd-form-dialog-title' }, options.title);
24
51
  const closeButton = make('button', { type: 'button', class: 'fd-dialog-close', 'aria-label': labels.close }, '×');
25
52
  const body = make('div', { class: 'fd-form-dialog-body' });
26
53
  const discard = make('button', { type: 'button', class: 'fd-button' }, labels.discard);
27
- const saveClose = make('button', { type: 'button', class: 'fd-button fd-button-primary' }, labels.saveClose);
54
+ const saveClose = make('button', { type: 'button', class: 'fd-button fd-button-primary' }, panel && options.mode === 'values' ? labels.done : labels.saveClose);
28
55
  const box = make('div', {
29
56
  // Its own tokens and skin: the dialog sits outside the page that opened it.
30
- class: `fd-theme fd-form-dialog fd-size-${options.size ?? 'medium'}`,
57
+ class: `fd-theme fd-form-dialog ${shape}`,
31
58
  'data-fd-skin': options.skin ?? 'underline',
32
59
  role: 'dialog',
33
60
  'aria-modal': 'true',
34
61
  'aria-labelledby': title.id,
35
62
  tabindex: '-1',
36
63
  });
64
+ if (side)
65
+ box.setAttribute('data-side', side);
37
66
  if (options.dir)
38
67
  box.setAttribute('dir', options.dir);
68
+ // One look for the box and the page in it: the page's own, else the opener's.
69
+ const look = options.page.look ?? options.look;
70
+ (0, look_1.applyLook)(box, look);
39
71
  box.append(make('div', { class: 'fd-form-dialog-head' }), body, make('div', { class: 'fd-actions fd-actions-end fd-form-dialog-foot' }));
40
72
  box.firstElementChild?.append(title, closeButton);
41
73
  box.lastElementChild?.append(discard, saveClose);
42
- const backdrop = make('div', { class: 'fd-dialog-backdrop fd-form-dialog-backdrop' });
74
+ const backdrop = make('div', { class: `fd-dialog-backdrop fd-form-dialog-backdrop${panel ? ' fd-form-panel-backdrop' : ''}` });
43
75
  backdrop.append(box);
76
+ // The panel this one opens over steps back while it is open.
77
+ const under = panel ? [...doc.querySelectorAll('.fd-form-panel')].pop() : undefined;
78
+ under?.setAttribute('data-behind', '');
44
79
  container.append(backdrop);
45
- const handle = (0, viewer_1.mountViewer)(body, { ...options, showActions: false });
80
+ // A host of its own, so its steps run here too: a `close` step closes it unsaved.
81
+ const handle = (0, viewer_1.mountViewer)(body, {
82
+ ...options,
83
+ page: look && !options.page.look ? { ...options.page, look } : options.page,
84
+ showActions: false,
85
+ host: { ...options.host, close: () => discard.click() },
86
+ });
87
+ // A panel runs the way its page does, its language's way unless told: the inline end it sits at is the left, right to left.
88
+ if (panel && handle.element.dir)
89
+ backdrop.dir = handle.element.dir;
46
90
  let done = false;
47
91
  if (options.recompute)
48
92
  recalculate(handle.form, options.page.fields, options.recompute, () => done);
49
- const focusables = () => [...box.querySelectorAll(FOCUSABLE)].filter((element) => !element.closest('[hidden], [inert]') && !element.disabled);
50
93
  // Into the dialog: its first field, once the record is in, or the dialog itself meanwhile.
51
- const firstField = () => body.querySelector('input:not([type="hidden"]), select, textarea, [contenteditable="true"]');
94
+ const firstField = () => body.querySelector(exports.FIRST_FIELD);
52
95
  (firstField() ?? box).focus();
53
96
  void handle.form.settled().then(() => {
54
97
  if (doc.activeElement === box || !box.contains(doc.activeElement))
@@ -64,9 +107,44 @@ function openFormDialog(options) {
64
107
  const result = { saved, recordId: state.recordId ?? null, values: state.values };
65
108
  handle.destroy();
66
109
  backdrop.remove();
110
+ under?.removeAttribute('data-behind');
67
111
  opener?.focus();
68
112
  resolve(result);
69
113
  };
114
+ /** "Discard your changes?" over the panel, the focus on Cancel; true for Discard. Its keys are its own. */
115
+ const ask = () => new Promise((answer) => {
116
+ const was = doc.activeElement;
117
+ const text = make('p', { id: `${id}-ask` }, labels.discardChanges);
118
+ const no = make('button', { type: 'button', class: 'fd-button' }, labels.cancel);
119
+ const yes = make('button', { type: 'button', class: 'fd-button fd-button-primary' }, labels.discard);
120
+ const buttons = make('div', { class: 'fd-actions fd-actions-end' });
121
+ const question = make('div', { class: 'fd-dialog', role: 'alertdialog', 'aria-modal': 'true', 'aria-labelledby': text.id });
122
+ const shade = make('div', { class: 'fd-dialog-backdrop' });
123
+ buttons.append(no, yes);
124
+ question.append(text, buttons);
125
+ shade.append(question);
126
+ const end = (discarding) => {
127
+ shade.remove();
128
+ was?.focus();
129
+ answer(discarding);
130
+ };
131
+ no.addEventListener('click', () => end(false));
132
+ yes.addEventListener('click', () => end(true));
133
+ shade.addEventListener('keydown', (event) => {
134
+ event.stopPropagation();
135
+ if (event.key === 'Escape')
136
+ end(false);
137
+ else
138
+ (0, focus_trap_1.keepTabIn)(question, event);
139
+ });
140
+ box.append(shade);
141
+ no.focus();
142
+ });
143
+ /** Escape and ×: a panel with changes in it asks first; a dialog closes at once, as it always has. */
144
+ const leave = async () => {
145
+ if (!panel || !handle.form.getState().dirty.length || (await ask()))
146
+ close(false);
147
+ };
70
148
  saveClose.addEventListener('click', async () => {
71
149
  saveClose.disabled = true;
72
150
  const accepted = options.mode === 'values' ? handle.check() : await handle.save();
@@ -75,7 +153,7 @@ function openFormDialog(options) {
75
153
  close(true);
76
154
  });
77
155
  discard.addEventListener('click', () => close(false));
78
- closeButton.addEventListener('click', () => close(false));
156
+ closeButton.addEventListener('click', leave);
79
157
  box.addEventListener('keydown', (event) => {
80
158
  // Ctrl+Enter is Save & Close from wherever the cursor is, even after a field used the Enter
81
159
  // (a tag box adding its tag), taking what is still being typed. The grid keeps its own keys.
@@ -92,23 +170,10 @@ function openFormDialog(options) {
92
170
  return;
93
171
  if (event.key === 'Escape') {
94
172
  event.preventDefault();
95
- close(false);
96
- }
97
- else if (event.key === 'Tab') {
98
- const all = focusables();
99
- if (!all.length)
100
- return;
101
- const first = all[0];
102
- const last = all[all.length - 1];
103
- if (event.shiftKey && doc.activeElement === first) {
104
- event.preventDefault();
105
- last.focus();
106
- }
107
- else if (!event.shiftKey && doc.activeElement === last) {
108
- event.preventDefault();
109
- first.focus();
110
- }
173
+ void leave();
111
174
  }
175
+ else
176
+ (0, focus_trap_1.keepTabIn)(box, event);
112
177
  });
113
178
  });
114
179
  }
@@ -126,10 +191,10 @@ function recalculate(form, fields, recompute, closed) {
126
191
  if (closed() || JSON.stringify(form.getState().values) !== now)
127
192
  return; // a newer answer is on its way
128
193
  writing = true;
129
- for (const [name, value] of Object.entries(next)) {
130
- if (name in fields && JSON.stringify(values[name] ?? null) !== JSON.stringify(value ?? null))
131
- form.setValue(name, value);
132
- }
194
+ // The answer is the app's change, not a person's: the page's change steps do not run for it.
195
+ const changed = Object.fromEntries(Object.entries(next).filter(([name, value]) => name in fields && JSON.stringify(values[name] ?? null) !== JSON.stringify(value ?? null)));
196
+ if (Object.keys(changed).length)
197
+ form.setValues(changed);
133
198
  writing = false;
134
199
  seen = JSON.stringify(form.getState().values);
135
200
  }, () => undefined);
@@ -144,17 +209,11 @@ function openSearchDialog(options) {
144
209
  const doc = options.container?.ownerDocument ?? document;
145
210
  const container = options.container ?? doc.body;
146
211
  const opener = doc.activeElement instanceof doc.defaultView.HTMLElement ? doc.activeElement : null;
147
- const labels = viewer_1.VIEWER_LABELS[options.locale ?? 'en'];
148
- const words = widgets_1.WIDGET_LABELS[options.locale ?? 'en'];
212
+ const locale = (0, labels_1.ownLocale)(options.locale);
213
+ const labels = viewer_1.VIEWER_LABELS[locale];
214
+ const words = widgets_1.WIDGET_LABELS[locale];
149
215
  const id = `fd-dialog-${++dialogs}`;
150
- const make = (tag, attrs = {}, text) => {
151
- const element = doc.createElement(tag);
152
- for (const [name, value] of Object.entries(attrs))
153
- element.setAttribute(name, value);
154
- if (text !== undefined)
155
- element.textContent = text;
156
- return element;
157
- };
216
+ const make = maker(doc);
158
217
  const title = make('h2', { id: `${id}-title`, class: 'fd-form-dialog-title' }, options.title);
159
218
  const closeButton = make('button', { type: 'button', class: 'fd-dialog-close', 'aria-label': labels.close }, '×');
160
219
  const query = make('input', { type: 'search', class: 'fd-input', 'aria-label': words.search, placeholder: words.search, 'aria-controls': `${id}-list`, autocomplete: 'off' });
@@ -169,6 +228,7 @@ function openSearchDialog(options) {
169
228
  });
170
229
  if (options.dir)
171
230
  box.setAttribute('dir', options.dir);
231
+ (0, look_1.applyLook)(box, options.look);
172
232
  const head = make('div', { class: 'fd-form-dialog-head' });
173
233
  head.append(title, closeButton);
174
234
  const body = make('div', { class: 'fd-form-dialog-body fd-search-body' });
@@ -239,6 +299,8 @@ function openSearchDialog(options) {
239
299
  event.preventDefault();
240
300
  close(null);
241
301
  }
302
+ else
303
+ (0, focus_trap_1.keepTabIn)(box, event);
242
304
  });
243
305
  look();
244
306
  });
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/dialog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/dialog.ts"],"names":[],"mappings":"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"}