@icure/form 3.0.39 → 3.0.42

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 (114) hide show
  1. package/.yarn/cache/{@babel-runtime-npm-7.26.10-d01a90d446-22d2e0abb8.zip → @babel-runtime-npm-7.28.4-31bc1b0001-934b0a0460.zip} +0 -0
  2. package/.yarn/cache/{@icure-motss-app-datepicker-npm-6.0.0-rc.39-d00d21c35a-eefaed31a8.zip → @icure-motss-app-datepicker-npm-6.0.0-rc.40-ca1da7abbb-9bbe2bed34.zip} +0 -0
  3. package/.yarn/cache/@lit-labs-ssr-dom-shim-npm-1.4.0-e5ef5fbeba-e267c25576.zip +0 -0
  4. package/.yarn/cache/{@lit-reactive-element-npm-2.1.0-77512b732b-fb36e9f64b.zip → @lit-reactive-element-npm-2.1.1-3875228c32-b9bbc9c089.zip} +0 -0
  5. package/.yarn/cache/{@lit-task-npm-1.0.2-01d3dd32e9-22e1265a62.zip → @lit-task-npm-1.0.3-48f265b3e9-790b6a2603.zip} +0 -0
  6. package/.yarn/cache/{lit-element-npm-4.1.1-bb20932b82-74d0f2d6fb.zip → lit-element-npm-4.2.1-b5bc114ced-5925326176.zip} +0 -0
  7. package/.yarn/cache/{lit-html-npm-3.2.1-1662fc597d-1bacd9f8b2.zip → lit-html-npm-3.3.1-e3722d4f4a-de07c66945.zip} +0 -0
  8. package/.yarn/cache/{lit-npm-3.2.1-27cb5b7782-ee22bbc53d.zip → lit-npm-3.3.1-8f683c51f1-fb88f1ff80.zip} +0 -0
  9. package/.yarn/cache/{prosemirror-commands-npm-1.7.0-212f35173c-a39225d534.zip → prosemirror-commands-npm-1.7.1-5b2afb6640-2316c40ea2.zip} +0 -0
  10. package/.yarn/cache/prosemirror-history-npm-1.5.0-e639d02880-6afb0e1d17.zip +0 -0
  11. package/.yarn/cache/prosemirror-keymap-npm-1.2.3-0e7e0c8195-0a2eed2771.zip +0 -0
  12. package/.yarn/cache/prosemirror-model-npm-1.25.4-e7ee2df3df-ab5aa609df.zip +0 -0
  13. package/.yarn/cache/prosemirror-state-npm-1.4.4-8b7e3a396c-1b5dba46c2.zip +0 -0
  14. package/.yarn/cache/prosemirror-transform-npm-1.10.5-5b3b4f5f61-6f5921e53a.zip +0 -0
  15. package/.yarn/cache/prosemirror-view-npm-1.41.4-cf361fd330-b663b8c6ce.zip +0 -0
  16. package/.yarn/install-state.gz +0 -0
  17. package/components/common/field.d.ts +0 -1
  18. package/components/common/field.js +0 -5
  19. package/components/common/field.js.map +1 -1
  20. package/components/common/metadata-buttons-bar.d.ts +1 -1
  21. package/components/common/metadata-buttons-bar.js +2 -6
  22. package/components/common/metadata-buttons-bar.js.map +1 -1
  23. package/components/icure-button/index.js +0 -4
  24. package/components/icure-button/index.js.map +1 -1
  25. package/components/icure-button-group/index.js +0 -4
  26. package/components/icure-button-group/index.js.map +1 -1
  27. package/components/icure-date-picker/index.d.ts +1 -1
  28. package/components/icure-date-picker/index.js +2 -6
  29. package/components/icure-date-picker/index.js.map +1 -1
  30. package/components/icure-dropdown-field/index.js +0 -4
  31. package/components/icure-dropdown-field/index.js.map +1 -1
  32. package/components/icure-form/fields/button-group/checkbox.d.ts +0 -1
  33. package/components/icure-form/fields/button-group/checkbox.js +2 -39
  34. package/components/icure-form/fields/button-group/checkbox.js.map +1 -1
  35. package/components/icure-form/fields/button-group/radio-button.d.ts +0 -1
  36. package/components/icure-form/fields/button-group/radio-button.js +2 -39
  37. package/components/icure-form/fields/button-group/radio-button.js.map +1 -1
  38. package/components/icure-form/fields/date-picker/date-picker.d.ts +0 -1
  39. package/components/icure-form/fields/date-picker/date-picker.js +17 -54
  40. package/components/icure-form/fields/date-picker/date-picker.js.map +1 -1
  41. package/components/icure-form/fields/date-picker/date-time-picker.d.ts +0 -1
  42. package/components/icure-form/fields/date-picker/date-time-picker.js +17 -54
  43. package/components/icure-form/fields/date-picker/date-time-picker.js.map +1 -1
  44. package/components/icure-form/fields/date-picker/time-picker.d.ts +0 -1
  45. package/components/icure-form/fields/date-picker/time-picker.js +17 -54
  46. package/components/icure-form/fields/date-picker/time-picker.js.map +1 -1
  47. package/components/icure-form/fields/dropdown/dropdown-field.d.ts +0 -1
  48. package/components/icure-form/fields/dropdown/dropdown-field.js +2 -39
  49. package/components/icure-form/fields/dropdown/dropdown-field.js.map +1 -1
  50. package/components/icure-form/fields/items-list-field/items-list-field.d.ts +0 -1
  51. package/components/icure-form/fields/items-list-field/items-list-field.js +17 -55
  52. package/components/icure-form/fields/items-list-field/items-list-field.js.map +1 -1
  53. package/components/icure-form/fields/measure-field/measure-field.d.ts +0 -1
  54. package/components/icure-form/fields/measure-field/measure-field.js +2 -39
  55. package/components/icure-form/fields/measure-field/measure-field.js.map +1 -1
  56. package/components/icure-form/fields/number-field/number-field.d.ts +0 -1
  57. package/components/icure-form/fields/number-field/number-field.js +18 -55
  58. package/components/icure-form/fields/number-field/number-field.js.map +1 -1
  59. package/components/icure-form/fields/text-field/text-field.d.ts +0 -1
  60. package/components/icure-form/fields/text-field/text-field.js +28 -65
  61. package/components/icure-form/fields/text-field/text-field.js.map +1 -1
  62. package/components/icure-form/fields/token-field/token-field.d.ts +0 -1
  63. package/components/icure-form/fields/token-field/token-field.js +17 -55
  64. package/components/icure-form/fields/token-field/token-field.js.map +1 -1
  65. package/components/icure-form/fields/utils/index.d.ts +0 -1
  66. package/components/icure-form/fields/utils/index.js +0 -2
  67. package/components/icure-form/fields/utils/index.js.map +1 -1
  68. package/components/icure-form/index.d.ts +1 -1
  69. package/components/icure-form/index.js +5 -26
  70. package/components/icure-form/index.js.map +1 -1
  71. package/components/icure-form/renderer/form/form-selection-button.js +0 -4
  72. package/components/icure-form/renderer/form/form-selection-button.js.map +1 -1
  73. package/components/icure-form/renderer/form/form.d.ts +2 -7
  74. package/components/icure-form/renderer/form/form.js +454 -618
  75. package/components/icure-form/renderer/form/form.js.map +1 -1
  76. package/components/icure-form/renderer/index.d.ts +1 -1
  77. package/components/icure-form/renderer/index.js.map +1 -1
  78. package/components/icure-label/index.js +0 -4
  79. package/components/icure-label/index.js.map +1 -1
  80. package/components/icure-text-field/index.js +11 -10
  81. package/components/icure-text-field/index.js.map +1 -1
  82. package/components/model/index.d.ts +1 -15
  83. package/components/model/index.js +2 -13
  84. package/components/model/index.js.map +1 -1
  85. package/generic/model.d.ts +6 -6
  86. package/generic/model.js.map +1 -1
  87. package/icure/form-values-container.d.ts +42 -63
  88. package/icure/form-values-container.js +151 -192
  89. package/icure/form-values-container.js.map +1 -1
  90. package/icure/icure-utils.js +12 -30
  91. package/icure/icure-utils.js.map +1 -1
  92. package/icure/model.d.ts +2 -9
  93. package/icure/model.js +1 -7
  94. package/icure/model.js.map +1 -1
  95. package/package.json +1 -2
  96. package/utils/code-utils.d.ts +2 -3
  97. package/utils/code-utils.js +6 -5
  98. package/utils/code-utils.js.map +1 -1
  99. package/.yarn/cache/@icure-cardinal-sdk-npm-1.3.0-ts-2-d77151b3e6-86e1497829.zip +0 -0
  100. package/.yarn/cache/@js-joda-core-npm-3.2.0-d2526290e9-64625c2f22.zip +0 -0
  101. package/.yarn/cache/@lit-labs-ssr-dom-shim-npm-1.3.0-6bfa115c08-c2003e8bb6.zip +0 -0
  102. package/.yarn/cache/@lit-reactive-element-npm-2.0.4-4836436301-368d788d9e.zip +0 -0
  103. package/.yarn/cache/format-util-npm-1.0.5-a524ca953a-0c8622e54a.zip +0 -0
  104. package/.yarn/cache/prosemirror-history-npm-1.4.1-ad68c86bb7-90f9bf59bc.zip +0 -0
  105. package/.yarn/cache/prosemirror-keymap-npm-1.2.2-efb8276b00-85fe4fc303.zip +0 -0
  106. package/.yarn/cache/prosemirror-model-npm-1.25.0-0870b04e23-e311e1e36c.zip +0 -0
  107. package/.yarn/cache/prosemirror-state-npm-1.4.3-d6540e44ad-28857d935c.zip +0 -0
  108. package/.yarn/cache/prosemirror-transform-npm-1.10.3-fb23bef7a8-8cbe29501e.zip +0 -0
  109. package/.yarn/cache/prosemirror-view-npm-1.38.1-8cfb4ec84f-12f7f4d27f.zip +0 -0
  110. package/.yarn/cache/regenerator-runtime-npm-0.14.1-a6c97c609a-9f57c93277.zip +0 -0
  111. package/.yarn/cache/ws-npm-8.18.0-56f68bc4d6-91d4d35bc9.zip +0 -0
  112. package/utils/form-value-container.d.ts +0 -3
  113. package/utils/form-value-container.js +0 -30
  114. package/utils/form-value-container.js.map +0 -1
@@ -7,31 +7,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
11
- var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
12
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
13
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
14
- return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
15
- function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
16
- function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
17
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
18
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
19
- function fulfill(value) { resume("next", value); }
20
- function reject(value) { resume("throw", value); }
21
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
22
- };
23
- var __asyncValues = (this && this.__asyncValues) || function (o) {
24
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
25
- var m = o[Symbol.asyncIterator], i;
26
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
27
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
28
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
29
- };
30
- var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {
31
- var i, p;
32
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
33
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
34
- };
35
10
  import { html, nothing } from 'lit';
36
11
  import { fieldValuesProvider, getValidationErrorProvider, handleMetadataChangedProvider, handleValueChangedProvider } from '../../../../utils/fields-values-provider';
37
12
  import { defaultTranslationProvider } from '../../../../utils/languages';
@@ -39,604 +14,465 @@ import { getLabels } from '../../../common/utils';
39
14
  import { filterAndSortOptionsFromFieldDefinition, sortSuggestions } from '../../../../utils/code-utils';
40
15
  import './form-selection-button';
41
16
  import { currentDate, currentDateTime, currentTime } from '../../../../utils/dates';
42
- function allNext(subGenerators, cache) {
43
- return __awaiter(this, void 0, void 0, function* () {
44
- let done = true;
45
- const subElements = yield Promise.all(subGenerators.map((sg, idx) => __awaiter(this, void 0, void 0, function* () {
46
- if (!sg) {
47
- return nothing;
48
- }
49
- if (cache[idx]) {
50
- return cache[idx];
17
+ export const render = (form_1, props_1, formsValueContainer_1, translationProvider_1, ...args_1) => __awaiter(void 0, [form_1, props_1, formsValueContainer_1, translationProvider_1, ...args_1], void 0, function* (form, props, formsValueContainer, translationProvider, ownersProvider = () => __awaiter(void 0, void 0, void 0, function* () { return []; }), optionsProvider, actionListener = () => undefined, languages, readonly, displayMetadata, sectionWrapper) {
18
+ const composedOptionsProvider = optionsProvider && form.codifications
19
+ ? (language, codifications, terms, sortOptions) => __awaiter(void 0, void 0, void 0, function* () {
20
+ var _a, _b, _c;
21
+ const originalOptions = optionsProvider ? yield optionsProvider(language, codifications, terms) : [];
22
+ return sortSuggestions(originalOptions.concat((_c = (_b = (_a = form.codifications) === null || _a === void 0 ? void 0 : _a.filter((c) => codifications.includes(c.type))) === null || _b === void 0 ? void 0 : _b.flatMap((c) => c.codes
23
+ .filter((c) => (terms !== null && terms !== void 0 ? terms : []).map((st) => st.toLowerCase()).every((st) => c.label[language].toLowerCase().includes(st)))
24
+ .map((c) => ({ id: c.id, label: c.label, text: c.label[language], terms: terms !== null && terms !== void 0 ? terms : [] })))) !== null && _c !== void 0 ? _c : []), language, sortOptions);
25
+ })
26
+ : optionsProvider
27
+ ? (language, codifications, terms, sortOptions) => {
28
+ var _a;
29
+ return (_a = optionsProvider === null || optionsProvider === void 0 ? void 0 : optionsProvider(language, codifications, terms).then((codes) => sortSuggestions(codes, language, sortOptions))) !== null && _a !== void 0 ? _a : Promise.resolve([]);
51
30
  }
52
- const itv = yield sg.next();
53
- if (itv.value) {
54
- const [value, isStale] = itv.value;
55
- if (isStale) {
56
- cache[idx] = value;
31
+ : undefined;
32
+ const h = function (level, className = '', content) {
33
+ return level === 1
34
+ ? html `<h1 class="${className}">${content}</h1>`
35
+ : level === 2
36
+ ? html `<h2 class="${className}">${content}</h2>`
37
+ : level === 3
38
+ ? html `<h3 class="${className}">${content}</h3>`
39
+ : level === 4
40
+ ? html `<h4 class="${className}">${content}</h4>`
41
+ : level === 5
42
+ ? html `<h5 class="${className}">${content}</h5>`
43
+ : html `<h6 class="${className}">${content}</h6>`;
44
+ };
45
+ function renderGroup(fg, fgSpan, level) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ var _a;
48
+ const subElements = (yield Promise.all(((_a = fg.fields) !== null && _a !== void 0 ? _a : []).map((fieldOrGroup) => renderFieldGroupOrSubform(fieldOrGroup, level + 1)))).filter((x) => !!x && x !== nothing);
49
+ return subElements.length
50
+ ? html `<div class="${['group', fg.borderless ? undefined : 'bordered'].filter((x) => !!x).join(' ')}" style="${calculateFieldOrGroupSize(fgSpan, 1)}">
51
+ ${fg.borderless ? nothing : html `<div>${h(level, '', html `${fg.group}`)}</div>`}
52
+ <div class="icure-form">${subElements}</div>
53
+ </div>`
54
+ : nothing;
55
+ });
56
+ }
57
+ function renderSubform(fg, fgSpan, level) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ var _a, _b, _c;
60
+ const children = (_a = (yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.getChildren()))) === null || _a === void 0 ? void 0 : _a.filter((c) => c.getLabel() === fg.id);
61
+ const tp = translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations));
62
+ return html `<div class="subform" style="${calculateFieldOrGroupSize(fgSpan, 1)}">
63
+ <div class="subform__heading">
64
+ ${h(level, 'subform__heading__title', html `${(_b = (props.language && fg.shortLabel ? tp === null || tp === void 0 ? void 0 : tp(props.language, fg.shortLabel) : fg.shortLabel)) !== null && _b !== void 0 ? _b : ''}`)}
65
+ ${readonly
66
+ ? nothing
67
+ : html `<form-selection-button
68
+ .label="${(_c = fg.labels.add) !== null && _c !== void 0 ? _c : 'Add subform'}"
69
+ .forms="${Object.entries(fg.forms)}"
70
+ .formAdded="${(title, form) => {
71
+ var _a;
72
+ form.id && (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.addChild(fg.id, form.id, (_a = fg.shortLabel) !== null && _a !== void 0 ? _a : ''));
73
+ }}"
74
+ .translationProvider="${tp}"
75
+ .language="${props.language}"
76
+ ></form-selection-button>`}
77
+ </div>
78
+ ${yield (children === null || children === void 0 ? void 0 : children.reduce((templatesPromise, child) => __awaiter(this, void 0, void 0, function* () {
79
+ var _a, _b, _c;
80
+ const templates = yield templatesPromise;
81
+ const childForm = Object.values(fg.forms).find((f) => f.id === child.getFormId());
82
+ const title = (_a = childForm === null || childForm === void 0 ? void 0 : childForm.form) !== null && _a !== void 0 ? _a : childForm === null || childForm === void 0 ? void 0 : childForm.description;
83
+ const localisedTitle = (_b = (title && tp && props.language ? tp === null || tp === void 0 ? void 0 : tp(props.language, title) : title)) !== null && _b !== void 0 ? _b : '';
84
+ const localisedRemove = (_c = (fg.labels.remove && tp && props.language ? tp === null || tp === void 0 ? void 0 : tp(props.language, fg.labels.remove) : fg.labels.remove)) !== null && _c !== void 0 ? _c : 'Remove';
85
+ if (childForm) {
86
+ templates.push(html `
87
+ <div class="subform__child">
88
+ <h3 class="subform__child__title">${localisedTitle}</h3>
89
+ ${yield render(childForm, props, child, translationProvider, ownersProvider, optionsProvider, actionListener, languages, readonly, displayMetadata)}
90
+ ${readonly ? nothing : html ` <button class="subform__removeBtn" @click="${() => { var _a; return (_a = formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.removeChild) === null || _a === void 0 ? void 0 : _a.call(formsValueContainer, child); }}">${localisedRemove}</button>`}
91
+ </div>
92
+ `);
57
93
  }
58
- done = done && isStale;
59
- return value;
94
+ return templates;
95
+ }), Promise.resolve([])))}
96
+ </div>`;
97
+ });
98
+ }
99
+ function renderTextField(fgSpan, fgRowSpan, fg) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ var _a, _b, _c, _d, _e, _f, _g, _h;
102
+ return html `<icure-form-text-field
103
+ class="icure-form-field"
104
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan, (_a = fg.styleOptions) === null || _a === void 0 ? void 0 : _a.width)}"
105
+ label="${fg.field}"
106
+ value="${fg.value}"
107
+ .displayedLabels="${getLabels(fg)}"
108
+ .displayMetadata="${displayMetadata}"
109
+ .multiline="${fg.multiline || false}"
110
+ .lines=${fgRowSpan}
111
+ .defaultLanguage="${props.language}"
112
+ .languages="${languages}"
113
+ .linksProvider=${(_b = fg.options) === null || _b === void 0 ? void 0 : _b.linksProvider}
114
+ .suggestionProvider=${(_c = fg.options) === null || _c === void 0 ? void 0 : _c.suggestionProvider}
115
+ .ownersProvider=${ownersProvider}
116
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
117
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
118
+ .codeColorProvider=${(_d = fg.options) === null || _d === void 0 ? void 0 : _d.codeColorProvider}
119
+ .linkColorProvider=${(_e = fg.options) === null || _e === void 0 ? void 0 : _e.linkColorProvider}
120
+ .codeContentProvider=${(_f = fg.options) === null || _f === void 0 ? void 0 : _f.codeContentProvider}
121
+ .defaultValueProvider=${() => formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.getDefaultValue(fg.field)}
122
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
123
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
124
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
125
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
126
+ .styleOptions="${fg.styleOptions}"
127
+ .readonly="${readonly || fg.readonly || (((_g = fg.computedProperties) === null || _g === void 0 ? void 0 : _g.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_h = fg.computedProperties) === null || _h === void 0 ? void 0 : _h.readonly))) : false)}"
128
+ ></icure-form-text-field>`;
129
+ });
130
+ }
131
+ function renderTokenField(fgSpan, fgRowSpan, fg) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ var _a, _b, _c, _d;
134
+ return html `<icure-form-token-field
135
+ class="icure-form-field"
136
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan, (_a = fg.styleOptions) === null || _a === void 0 ? void 0 : _a.width)}"
137
+ label="${fg.field}"
138
+ value="${fg.value}"
139
+ .displayedLabels="${getLabels(fg)}"
140
+ .displayMetadata="${displayMetadata}"
141
+ .multiline="${fg.multiline || false}"
142
+ .lines=${fgRowSpan}
143
+ .defaultLanguage="${props.language}"
144
+ .suggestionProvider=${(_b = fg.options) === null || _b === void 0 ? void 0 : _b.suggestionProvider}
145
+ .ownersProvider=${ownersProvider}
146
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
147
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
148
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
149
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
150
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
151
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
152
+ .styleOptions="${fg.styleOptions}"
153
+ .readonly="${readonly || fg.readonly || (((_c = fg.computedProperties) === null || _c === void 0 ? void 0 : _c.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_d = fg.computedProperties) === null || _d === void 0 ? void 0 : _d.readonly))) : false)}"
154
+ ></icure-form-token-field>`;
155
+ });
156
+ }
157
+ function renderItemsListField(fgSpan, fgRowSpan, fg) {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ var _a, _b, _c, _d;
160
+ return html `<icure-form-items-list-field
161
+ class="icure-form-field"
162
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan, (_a = fg.styleOptions) === null || _a === void 0 ? void 0 : _a.width)}"
163
+ label="${fg.field}"
164
+ value="${fg.value}"
165
+ .displayedLabels="${getLabels(fg)}"
166
+ .displayMetadata="${displayMetadata}"
167
+ .multiline="${fg.multiline || false}"
168
+ .lines=${fgRowSpan}
169
+ .defaultLanguage="${props.language}"
170
+ .suggestionProvider=${(_b = fg.options) === null || _b === void 0 ? void 0 : _b.suggestionProvider}
171
+ .ownersProvider=${ownersProvider}
172
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
173
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
174
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
175
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
176
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
177
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
178
+ .styleOptions="${fg.styleOptions}"
179
+ .readonly="${readonly || fg.readonly || (((_c = fg.computedProperties) === null || _c === void 0 ? void 0 : _c.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_d = fg.computedProperties) === null || _d === void 0 ? void 0 : _d.readonly))) : false)}"
180
+ ></icure-form-items-list-field>`;
181
+ });
182
+ }
183
+ function renderMeasureField(fgSpan, fgRowSpan, fg) {
184
+ return __awaiter(this, void 0, void 0, function* () {
185
+ var _a, _b;
186
+ return html `<icure-form-measure-field
187
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
188
+ class="icure-form-field"
189
+ label="${fg.field}"
190
+ .displayedLabels="${getLabels(fg)}"
191
+ .displayMetadata="${displayMetadata}"
192
+ value="${fg.value}"
193
+ unit="${fg.unit}"
194
+ .defaultLanguage="${props.language}"
195
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
196
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
197
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
198
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
199
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
200
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
201
+ .styleOptions="${fg.styleOptions}"
202
+ .readonly="${readonly || fg.readonly || (((_a = fg.computedProperties) === null || _a === void 0 ? void 0 : _a.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.readonly))) : false)}"
203
+ ></icure-form-measure-field>`;
204
+ });
205
+ }
206
+ function renderNumberField(fgSpan, fgRowSpan, fg) {
207
+ return __awaiter(this, void 0, void 0, function* () {
208
+ var _a, _b;
209
+ return html `<icure-form-number-field
210
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
211
+ class="icure-form-field"
212
+ label="${fg.field}"
213
+ .displayedLabels="${getLabels(fg)}"
214
+ .displayMetadata="${displayMetadata}"
215
+ value="${fg.value}"
216
+ .defaultLanguage="${props.language}"
217
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
218
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
219
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
220
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
221
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
222
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
223
+ .styleOptions="${fg.styleOptions}"
224
+ .readonly="${readonly || fg.readonly || (((_a = fg.computedProperties) === null || _a === void 0 ? void 0 : _a.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.readonly))) : false)}"
225
+ ></icure-form-number-field>`;
226
+ });
227
+ }
228
+ function renderDatePicker(fgSpan, fgRowSpan, fg) {
229
+ return __awaiter(this, void 0, void 0, function* () {
230
+ var _a, _b;
231
+ return html `<icure-form-date-picker
232
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
233
+ class="icure-form-field"
234
+ label="${fg.field}"
235
+ .displayedLabels="${getLabels(fg)}"
236
+ .displayMetadata="${displayMetadata}"
237
+ value="${fg.now ? currentDate() : fg.value}"
238
+ .defaultLanguage="${props.language}"
239
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
240
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
241
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
242
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
243
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
244
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
245
+ .styleOptions="${fg.styleOptions}"
246
+ .readonly="${readonly || fg.readonly || (((_a = fg.computedProperties) === null || _a === void 0 ? void 0 : _a.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.readonly))) : false)}"
247
+ ></icure-form-date-picker>`;
248
+ });
249
+ }
250
+ function renderTimePicker(fgSpan, fgRowSpan, fg) {
251
+ return __awaiter(this, void 0, void 0, function* () {
252
+ var _a, _b;
253
+ return html `<icure-form-time-picker
254
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
255
+ class="icure-form-field"
256
+ label="${fg.field}"
257
+ .displayedLabels="${getLabels(fg)}"
258
+ .displayMetadata="${displayMetadata}"
259
+ value="${fg.now ? currentTime() : fg.value}"
260
+ .defaultLanguage="${props.language}"
261
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
262
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
263
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
264
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
265
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
266
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
267
+ .styleOptions="${fg.styleOptions}"
268
+ .readonly="${readonly || fg.readonly || (((_a = fg.computedProperties) === null || _a === void 0 ? void 0 : _a.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.readonly))) : false)}"
269
+ ></icure-form-time-picker>`;
270
+ });
271
+ }
272
+ function renderDateTimePicker(fgSpan, fgRowSpan, fg) {
273
+ return __awaiter(this, void 0, void 0, function* () {
274
+ var _a, _b;
275
+ return html `<icure-form-date-time-picker
276
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
277
+ class="icure-form-field"
278
+ label="${fg.field}"
279
+ .displayedLabels="${getLabels(fg)}"
280
+ .displayMetadata="${displayMetadata}"
281
+ value="${fg.now ? currentDateTime() : fg.value}"
282
+ .defaultLanguage="${props.language}"
283
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
284
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
285
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
286
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
287
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
288
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
289
+ .styleOptions="${fg.styleOptions}"
290
+ .readonly="${readonly || fg.readonly || (((_a = fg.computedProperties) === null || _a === void 0 ? void 0 : _a.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.readonly))) : false)}"
291
+ ></icure-form-date-time-picker>`;
292
+ });
293
+ }
294
+ function renderDropdownField(fgSpan, fgRowSpan, fg) {
295
+ return __awaiter(this, void 0, void 0, function* () {
296
+ var _a, _b, _c;
297
+ return html `<icure-form-dropdown-field
298
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
299
+ class="icure-form-field"
300
+ .label=${fg.field}
301
+ .displayedLabels=${getLabels(fg)}
302
+ .defaultLanguage="${props.language}"
303
+ .translate="${fg.translate}"
304
+ .sortOptions="${fg.sortOptions}"
305
+ value="${fg.value}"
306
+ .codifications="${fg.codifications}"
307
+ .optionsProvider="${composedOptionsProvider && ((_a = fg.codifications) === null || _a === void 0 ? void 0 : _a.length)
308
+ ? (language, terms) => { var _a; return composedOptionsProvider(language, (_a = fg.codifications) !== null && _a !== void 0 ? _a : [], terms, fg.sortOptions); }
309
+ : (language, terms) => filterAndSortOptionsFromFieldDefinition(language, fg, translationProvider, terms)}"
310
+ .ownersProvider=${ownersProvider}
311
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
312
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
313
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
314
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
315
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
316
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
317
+ .styleOptions="${fg.styleOptions}"
318
+ .readonly="${readonly || fg.readonly || (((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_c = fg.computedProperties) === null || _c === void 0 ? void 0 : _c.readonly))) : false)}"
319
+ ></icure-form-dropdown-field>`;
320
+ });
321
+ }
322
+ function renderRadioButtons(fgSpan, fgRowSpan, fg) {
323
+ return __awaiter(this, void 0, void 0, function* () {
324
+ var _a, _b, _c;
325
+ return html `<icure-form-radio-button
326
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
327
+ class="icure-form-field"
328
+ .label="${fg.field}"
329
+ .displayedLabels="${getLabels(fg)}"
330
+ .displayMetadata="${displayMetadata}"
331
+ .defaultLanguage="${props.language}"
332
+ .translate="${fg.translate}"
333
+ .sortOptions="${fg.sortOptions}"
334
+ .codifications="${fg.codifications}"
335
+ .optionsProvider="${composedOptionsProvider && ((_a = fg.codifications) === null || _a === void 0 ? void 0 : _a.length)
336
+ ? (language, terms) => { var _a; return composedOptionsProvider(language, (_a = fg.codifications) !== null && _a !== void 0 ? _a : [], terms, fg.sortOptions); }
337
+ : (language, terms) => filterAndSortOptionsFromFieldDefinition(language, fg, translationProvider, terms)}"
338
+ .ownersProvider=${ownersProvider}
339
+ .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
340
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
341
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
342
+ .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
343
+ .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
344
+ .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
345
+ .styleOptions="${fg.styleOptions}"
346
+ .readonly="${readonly || fg.readonly || (((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_c = fg.computedProperties) === null || _c === void 0 ? void 0 : _c.readonly))) : false)}"
347
+ ></icure-form-radio-button>`;
348
+ });
349
+ }
350
+ function renderCheckboxes(fgSpan, fgRowSpan, fg) {
351
+ return __awaiter(this, void 0, void 0, function* () {
352
+ var _a, _b, _c;
353
+ return html ` <icure-form-checkbox
354
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
355
+ class="icure-form-field"
356
+ .label="${fg.field}"
357
+ .displayedLabels="${getLabels(fg)}"
358
+ .displayMetadata="${displayMetadata}"
359
+ .defaultLanguage="${props.language}"
360
+ .translate="${fg.translate}"
361
+ .sortOptions="${fg.sortOptions}"
362
+ value="${fg.value}"
363
+ .codifications="${fg.codifications}"
364
+ .optionsProvider="${composedOptionsProvider && ((_a = fg.codifications) === null || _a === void 0 ? void 0 : _a.length)
365
+ ? (language, terms) => { var _a; return composedOptionsProvider(language, (_a = fg.codifications) !== null && _a !== void 0 ? _a : [], terms, fg.sortOptions); }
366
+ : (language, terms) => filterAndSortOptionsFromFieldDefinition(language, fg, translationProvider, terms)}"
367
+ .ownersProvider="${ownersProvider}"
368
+ .translationProvider="${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}"
369
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
370
+ .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
371
+ .metadataProvider="${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}"
372
+ .handleValueChanged="${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}"
373
+ .handleMetadataChanged="${handleMetadataChangedProvider(formsValueContainer)}"
374
+ .styleOptions="${fg.styleOptions}"
375
+ .readonly="${readonly || fg.readonly || (((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_c = fg.computedProperties) === null || _c === void 0 ? void 0 : _c.readonly))) : false)}"
376
+ ></icure-form-checkbox>`;
377
+ });
378
+ }
379
+ function renderButton(fgSpan, fgRowSpan, fg) {
380
+ return __awaiter(this, void 0, void 0, function* () {
381
+ var _a, _b, _c, _d, _e;
382
+ return html `<icure-form-button
383
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
384
+ class="icure-form-button"
385
+ label="${(_a = fg.shortLabel) !== null && _a !== void 0 ? _a : fg.field}"
386
+ .defaultLanguage="${props.language}"
387
+ .translationProvider="${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}"
388
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
389
+ .actionListener="${actionListener}"
390
+ .event="${fg.event !== undefined ? fg.event : ((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.event) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_c = fg.computedProperties) === null || _c === void 0 ? void 0 : _c.event))) : 'submit'}"
391
+ .payload="${fg.payload !== undefined ? fg.payload : ((_d = fg.computedProperties) === null || _d === void 0 ? void 0 : _d.payload) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_e = fg.computedProperties) === null || _e === void 0 ? void 0 : _e.payload))) : undefined}"
392
+ .styleOptions="${fg.styleOptions}"
393
+ ></icure-form-button>`;
394
+ });
395
+ }
396
+ function renderLabel(fgSpan, fgRowSpan, fg) {
397
+ return __awaiter(this, void 0, void 0, function* () {
398
+ var _a, _b, _c;
399
+ return html `<icure-form-label
400
+ style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
401
+ class="icure-form-field"
402
+ .defaultLanguage="${props.language}"
403
+ labelPosition=${props.labelPosition}
404
+ label="${(_a = fg.shortLabel) !== null && _a !== void 0 ? _a : fg.field}"
405
+ .translationProvider="${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}"
406
+ .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
407
+ .styleOptions="${fg.styleOptions}"
408
+ .readonly="${readonly || fg.readonly || (((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.readonly) ? !(yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_c = fg.computedProperties) === null || _c === void 0 ? void 0 : _c.readonly))) : false)}"
409
+ ></icure-form-label>`;
410
+ });
411
+ }
412
+ const renderFieldGroupOrSubform = function (fg, level) {
413
+ return __awaiter(this, void 0, void 0, function* () {
414
+ var _a, _b, _c, _d, _e, _f;
415
+ if (!fg) {
416
+ return nothing;
60
417
  }
61
- else {
418
+ const computedProperties = (yield Object.keys((_a = fg.computedProperties) !== null && _a !== void 0 ? _a : {})
419
+ .filter((k) => k !== 'value' && k !== 'defaultValue')
420
+ .reduce((acc, k) => __awaiter(this, void 0, void 0, function* () { var _a; return (Object.assign(Object.assign({}, (yield acc)), { [k]: ((_a = fg.computedProperties) === null || _a === void 0 ? void 0 : _a[k]) && (yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute(fg.computedProperties[k]))) })); }), Promise.resolve({})));
421
+ if (computedProperties['hidden']) {
62
422
  return nothing;
63
423
  }
424
+ const fgSpan = ((_c = (_b = computedProperties['span']) !== null && _b !== void 0 ? _b : fg.span) !== null && _c !== void 0 ? _c : 6);
425
+ const fgRowSpan = ((_e = (_d = computedProperties['rowSpan']) !== null && _d !== void 0 ? _d : fg.rowSpan) !== null && _e !== void 0 ? _e : 1);
426
+ if (fg.clazz === 'group' && ((_f = fg.fields) === null || _f === void 0 ? void 0 : _f.length)) {
427
+ return yield renderGroup(fg.copy(Object.assign({}, computedProperties)), fgSpan, level);
428
+ }
429
+ else if (fg.clazz === 'subform' && (fg.id || computedProperties['title'])) {
430
+ return yield renderSubform(fg.copy(Object.assign({}, computedProperties)), fgSpan, level);
431
+ }
432
+ else if (fg.clazz === 'field') {
433
+ const field = fg.copy(Object.assign({}, computedProperties));
434
+ return html `${fg.type === 'text-field'
435
+ ? yield renderTextField(fgSpan, fgRowSpan, field)
436
+ : fg.type === 'measure-field'
437
+ ? yield renderMeasureField(fgSpan, fgRowSpan, field)
438
+ : fg.type === 'token-field'
439
+ ? yield renderTokenField(fgSpan, fgRowSpan, field)
440
+ : fg.type === 'items-list-field'
441
+ ? yield renderItemsListField(fgSpan, fgRowSpan, field)
442
+ : fg.type === 'number-field'
443
+ ? yield renderNumberField(fgSpan, fgRowSpan, field)
444
+ : fg.type === 'date-picker'
445
+ ? yield renderDatePicker(fgSpan, fgRowSpan, field)
446
+ : fg.type === 'time-picker'
447
+ ? yield renderTimePicker(fgSpan, fgRowSpan, field)
448
+ : fg.type === 'date-time-picker'
449
+ ? yield renderDateTimePicker(fgSpan, fgRowSpan, field)
450
+ : fg.type === 'dropdown-field'
451
+ ? yield renderDropdownField(fgSpan, fgRowSpan, field)
452
+ : fg.type === 'radio-button'
453
+ ? yield renderRadioButtons(fgSpan, fgRowSpan, field)
454
+ : fg.type === 'checkbox'
455
+ ? yield renderCheckboxes(fgSpan, fgRowSpan, field)
456
+ : fg.type === 'label'
457
+ ? yield renderLabel(fgSpan, fgRowSpan, field)
458
+ : fg.type === 'action'
459
+ ? yield renderButton(fgSpan, fgRowSpan, field)
460
+ : ''}`;
461
+ }
462
+ return html ``;
463
+ });
464
+ };
465
+ const calculateFieldOrGroupSize = (span, rowSpan, fixedWidth) => {
466
+ if (fixedWidth)
467
+ return `width: ${fixedWidth}px`;
468
+ return `grid-column: span ${span}; ${rowSpan > 1 ? `grid-row: span ${rowSpan}` : ''}`;
469
+ };
470
+ const renderForm = (form, sectionWrapper) => __awaiter(void 0, void 0, void 0, function* () {
471
+ return yield Promise.all(form.sections.map((s, idx) => __awaiter(void 0, void 0, void 0, function* () {
472
+ const section = yield Promise.all(s.fields.map((fieldOrGroup) => renderFieldGroupOrSubform(fieldOrGroup, 3)));
473
+ return sectionWrapper(idx, () => html ` <div class="icure-form">${section}</div>`);
64
474
  })));
65
- return { done, subElements };
66
- });
67
- }
68
- export function render(form_1, props_1, formsValueContainer_1, translationProvider_1) {
69
- return __asyncGenerator(this, arguments, function* render_1(form, props, formsValueContainer, translationProvider, ownersProvider = () => __awaiter(this, void 0, void 0, function* () { return []; }), optionsProvider, actionListener = () => undefined, languages, readonly, displayMetadata, sectionWrapper) {
70
- function renderPotentiallyReadonlyField(fg, getHtml) {
71
- return __asyncGenerator(this, arguments, function* renderPotentiallyReadonlyField_1() {
72
- var _a, _b;
73
- if (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.isFieldBeingComputed(fg.label())) {
74
- yield yield __await([getHtml(true), true]);
75
- }
76
- else if ((_a = fg.computedProperties) === null || _a === void 0 ? void 0 : _a.readonly) {
77
- const readonlyPromise = formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute(fg.computedProperties.readonly);
78
- yield yield __await([getHtml(true), false]);
79
- const finalResult = getHtml(!!readonlyPromise ? yield __await(readonlyPromise) : false);
80
- while (true) {
81
- yield yield __await([finalResult, true]);
82
- }
83
- }
84
- else {
85
- const finalResult = getHtml((_b = readonly !== null && readonly !== void 0 ? readonly : fg.readonly) !== null && _b !== void 0 ? _b : false);
86
- while (true) {
87
- yield yield __await([finalResult, true]);
88
- }
89
- }
90
- });
91
- }
92
- const composedOptionsProvider = optionsProvider && form.codifications
93
- ? (language, codifications, terms, sortOptions) => __awaiter(this, void 0, void 0, function* () {
94
- var _a, _b, _c;
95
- const originalOptions = optionsProvider ? yield optionsProvider(language, codifications, terms) : [];
96
- return sortSuggestions(originalOptions.concat((_c = (_b = (_a = form.codifications) === null || _a === void 0 ? void 0 : _a.filter((c) => codifications.includes(c.type))) === null || _b === void 0 ? void 0 : _b.flatMap((c) => c.codes
97
- .filter((c) => (terms !== null && terms !== void 0 ? terms : []).map((st) => st.toLowerCase()).every((st) => c.label[language].toLowerCase().includes(st)))
98
- .map((c) => ({ id: c.id, label: c.label, text: c.label[language], terms: terms !== null && terms !== void 0 ? terms : [] })))) !== null && _c !== void 0 ? _c : []), language, sortOptions);
99
- })
100
- : optionsProvider
101
- ? (language, codifications, terms, sortOptions) => {
102
- var _a;
103
- return (_a = optionsProvider === null || optionsProvider === void 0 ? void 0 : optionsProvider(language, codifications, terms).then((codes) => sortSuggestions(codes, language, sortOptions))) !== null && _a !== void 0 ? _a : Promise.resolve([]);
104
- }
105
- : undefined;
106
- const h = function (level, className = '', content) {
107
- return level === 1
108
- ? html `<h1 class="${className}">${content}</h1>`
109
- : level === 2
110
- ? html `<h2 class="${className}">${content}</h2>`
111
- : level === 3
112
- ? html `<h3 class="${className}">${content}</h3>`
113
- : level === 4
114
- ? html `<h4 class="${className}">${content}</h4>`
115
- : level === 5
116
- ? html `<h5 class="${className}">${content}</h5>`
117
- : html `<h6 class="${className}">${content}</h6>`;
118
- };
119
- function renderGroup(fg, fgSpan, level) {
120
- return __asyncGenerator(this, arguments, function* renderGroup_1() {
121
- var _a, _b;
122
- const subGenerators = (_b = (_a = fg.fields) === null || _a === void 0 ? void 0 : _a.map((fieldOrGroup) => renderFieldGroupOrSubform(fieldOrGroup, level + 1))) !== null && _b !== void 0 ? _b : [];
123
- const cache = [];
124
- while (true) {
125
- const { done, subElements } = yield __await(allNext(subGenerators, cache));
126
- const filteredSubElements = subElements.filter((x) => !!x && x !== nothing);
127
- yield yield __await([
128
- filteredSubElements.length
129
- ? html ` <div class="${['group', fg.borderless ? undefined : 'bordered'].filter((x) => !!x).join(' ')}" style="${calculateFieldOrGroupSize(fgSpan, 1)}">
130
- ${fg.borderless ? nothing : html ` <div>${h(level, '', html `${fg.group}`)}</div>`}
131
- <div class="icure-form">${filteredSubElements}</div>
132
- </div>`
133
- : nothing,
134
- done,
135
- ]);
136
- }
137
- });
138
- }
139
- function renderSubform(fg, fgSpan, level) {
140
- return __asyncGenerator(this, arguments, function* renderSubform_1() {
141
- var _a;
142
- function getHtml(children) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- var _a, _b;
145
- return html `<div class="subform" style="${calculateFieldOrGroupSize(fgSpan, 1)}">
146
- <div class="subform__heading">
147
- ${h(level, 'subform__heading__title', html `${(_a = (props.language && fg.shortLabel ? tp === null || tp === void 0 ? void 0 : tp(props.language, fg.shortLabel) : fg.shortLabel)) !== null && _a !== void 0 ? _a : ''}`)}
148
- ${readonly
149
- ? nothing
150
- : html `<form-selection-button
151
- .label="${(_b = fg.labels.add) !== null && _b !== void 0 ? _b : 'Add subform'}"
152
- .forms="${Object.entries(fg.forms)}"
153
- .formAdded="${(form) => {
154
- var _a;
155
- form.id && (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.addChild(fg.id, form.id, (_a = fg.shortLabel) !== null && _a !== void 0 ? _a : ''));
156
- }}"
157
- .translationProvider="${tp}"
158
- .language="${props.language}"
159
- ></form-selection-button>`}
160
- </div>
161
- ${yield Promise.all(children === null || children === void 0 ? void 0 : children.map((_a) => __awaiter(this, [_a], void 0, function* ([child, childForm, renderedChildForm]) {
162
- var _b, _c, _d;
163
- const title = (_b = childForm === null || childForm === void 0 ? void 0 : childForm.form) !== null && _b !== void 0 ? _b : childForm === null || childForm === void 0 ? void 0 : childForm.description;
164
- const localisedTitle = (_c = (title && tp && props.language ? tp === null || tp === void 0 ? void 0 : tp(props.language, title) : title)) !== null && _c !== void 0 ? _c : '';
165
- const localisedRemove = (_d = (fg.labels.remove && tp && props.language ? tp === null || tp === void 0 ? void 0 : tp(props.language, fg.labels.remove) : fg.labels.remove)) !== null && _d !== void 0 ? _d : 'Remove';
166
- return html `
167
- <div class="subform__child">
168
- <h3 class="subform__child__title">${localisedTitle}</h3>
169
- ${renderedChildForm} ${readonly ? nothing : html ` <button class="subform__removeBtn" @click="${() => { var _a; return (_a = formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.removeChild) === null || _a === void 0 ? void 0 : _a.call(formsValueContainer, child); }}">${localisedRemove}</button>`}
170
- </div>
171
- `;
172
- })))}
173
- </div>`;
174
- });
175
- }
176
- const children = (_a = (yield __await((formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.getChildren())))) === null || _a === void 0 ? void 0 : _a.filter((c) => c.getLabel() === fg.id);
177
- const tp = translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations));
178
- const subGenerators = (children !== null && children !== void 0 ? children : []).map((child) => {
179
- const childForm = Object.values(fg.forms).find((f) => f.id === child.getFormId());
180
- return childForm ? render(childForm, props, child, translationProvider, ownersProvider, optionsProvider, actionListener, languages, readonly, displayMetadata) : undefined;
181
- });
182
- const cache = [];
183
- while (true) {
184
- const { done, subElements } = yield __await(allNext(subGenerators, cache));
185
- yield yield __await([yield __await(getHtml((children !== null && children !== void 0 ? children : []).map((child, idx) => [child, Object.values(fg.forms).find((f) => f.id === child.getFormId()), subElements[idx]]))), done]);
186
- }
187
- });
188
- }
189
- function renderTextField(fgSpan, fgRowSpan, fg) {
190
- return __asyncGenerator(this, arguments, function* renderTextField_1() {
191
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
192
- var _a, _b, _c, _d, _e, _f;
193
- const loading = formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.isFieldBeingComputed(fg.label());
194
- return html `<icure-form-text-field
195
- class="icure-form-field ${loading ? 'loading' : ''}"
196
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan, (_a = fg.styleOptions) === null || _a === void 0 ? void 0 : _a.width)}"
197
- label="${fg.field}"
198
- value="${fg.value}"
199
- .displayedLabels="${getLabels(fg)}"
200
- .displayMetadata="${displayMetadata}"
201
- .multiline="${fg.multiline || false}"
202
- .lines=${fgRowSpan}
203
- .defaultLanguage="${props.language}"
204
- .languages="${languages}"
205
- .linksProvider=${(_b = fg.options) === null || _b === void 0 ? void 0 : _b.linksProvider}
206
- .suggestionProvider=${(_c = fg.options) === null || _c === void 0 ? void 0 : _c.suggestionProvider}
207
- .ownersProvider=${ownersProvider}
208
- .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
209
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
210
- .codeColorProvider=${(_d = fg.options) === null || _d === void 0 ? void 0 : _d.codeColorProvider}
211
- .linkColorProvider=${(_e = fg.options) === null || _e === void 0 ? void 0 : _e.linkColorProvider}
212
- .codeContentProvider=${(_f = fg.options) === null || _f === void 0 ? void 0 : _f.codeContentProvider}
213
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
214
- .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
215
- .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
216
- .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
217
- .styleOptions="${fg.styleOptions}"
218
- .readonly="${readonly}"
219
- .loading="${loading}"
220
- ></icure-form-text-field>`;
221
- }))));
222
- });
223
- }
224
- function renderTokenField(fgSpan, fgRowSpan, fg) {
225
- return __asyncGenerator(this, arguments, function* renderTokenField_1() {
226
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
227
- var _a, _b;
228
- return html `<icure-form-token-field
229
- class="icure-form-field"
230
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan, (_a = fg.styleOptions) === null || _a === void 0 ? void 0 : _a.width)}"
231
- label="${fg.field}"
232
- value="${fg.value}"
233
- .displayedLabels="${getLabels(fg)}"
234
- .displayMetadata="${displayMetadata}"
235
- .multiline="${fg.multiline || false}"
236
- .lines=${fgRowSpan}
237
- .defaultLanguage="${props.language}"
238
- .suggestionProvider=${(_b = fg.options) === null || _b === void 0 ? void 0 : _b.suggestionProvider}
239
- .ownersProvider=${ownersProvider}
240
- .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
241
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
242
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
243
- .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
244
- .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
245
- .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
246
- .styleOptions="${fg.styleOptions}"
247
- .readonly="${readonly}"
248
- ></icure-form-token-field>`;
249
- }))));
250
- });
251
- }
252
- function renderItemsListField(fgSpan, fgRowSpan, fg) {
253
- return __asyncGenerator(this, arguments, function* renderItemsListField_1() {
254
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
255
- var _a, _b;
256
- return html `<icure-form-items-list-field
257
- class="icure-form-field"
258
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan, (_a = fg.styleOptions) === null || _a === void 0 ? void 0 : _a.width)}"
259
- label="${fg.field}"
260
- value="${fg.value}"
261
- .displayedLabels="${getLabels(fg)}"
262
- .displayMetadata="${displayMetadata}"
263
- .multiline="${fg.multiline || false}"
264
- .lines=${fgRowSpan}
265
- .defaultLanguage="${props.language}"
266
- .suggestionProvider=${(_b = fg.options) === null || _b === void 0 ? void 0 : _b.suggestionProvider}
267
- .ownersProvider=${ownersProvider}
268
- .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
269
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
270
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
271
- .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
272
- .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
273
- .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
274
- .styleOptions="${fg.styleOptions}"
275
- .readonly="${readonly}"
276
- ></icure-form-items-list-field>`;
277
- }))));
278
- });
279
- }
280
- function renderMeasureField(fgSpan, fgRowSpan, fg) {
281
- return __asyncGenerator(this, arguments, function* renderMeasureField_1() {
282
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
283
- return html `<icure-form-measure-field
284
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
285
- class="icure-form-field"
286
- label="${fg.field}"
287
- .displayedLabels="${getLabels(fg)}"
288
- .displayMetadata="${displayMetadata}"
289
- value="${fg.value}"
290
- unit="${fg.unit}"
291
- .defaultLanguage="${props.language}"
292
- .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
293
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
294
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
295
- .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
296
- .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
297
- .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
298
- .styleOptions="${fg.styleOptions}"
299
- .readonly="${readonly}"
300
- ></icure-form-measure-field>`;
301
- }))));
302
- });
303
- }
304
- function renderNumberField(fgSpan, fgRowSpan, fg) {
305
- return __asyncGenerator(this, arguments, function* renderNumberField_1() {
306
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
307
- const loading = formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.isFieldBeingComputed(fg.label());
308
- return html `<icure-form-number-field
309
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
310
- class="icure-form-field ${loading ? 'loading' : ''}"
311
- label="${fg.field}"
312
- .displayedLabels="${getLabels(fg)}"
313
- .displayMetadata="${displayMetadata}"
314
- value="${fg.value}"
315
- .defaultLanguage="${props.language}"
316
- .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
317
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
318
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
319
- .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
320
- .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
321
- .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
322
- .styleOptions="${fg.styleOptions}"
323
- .readonly="${readonly}"
324
- .loading="${loading}"
325
- ></icure-form-number-field>`;
326
- }))));
327
- });
328
- }
329
- function renderDatePicker(fgSpan, fgRowSpan, fg) {
330
- return __asyncGenerator(this, arguments, function* renderDatePicker_1() {
331
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
332
- return html ` <icure-form-date-picker
333
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
334
- class="icure-form-field"
335
- label="${fg.field}"
336
- .displayedLabels="${getLabels(fg)}"
337
- .displayMetadata="${displayMetadata}"
338
- value="${fg.now ? currentDate() : fg.value}"
339
- .defaultLanguage="${props.language}"
340
- .translationProvider="${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}"
341
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
342
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
343
- .metadataProvider="${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}"
344
- .handleValueChanged="${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}"
345
- .handleMetadataChanged="${handleMetadataChangedProvider(formsValueContainer)}"
346
- .styleOptions="${fg.styleOptions}"
347
- .readonly="${readonly}"
348
- ></icure-form-date-picker>`;
349
- }))));
350
- });
351
- }
352
- function renderTimePicker(fgSpan, fgRowSpan, fg) {
353
- return __asyncGenerator(this, arguments, function* renderTimePicker_1() {
354
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
355
- return html `<icure-form-time-picker
356
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
357
- class="icure-form-field"
358
- label="${fg.field}"
359
- .displayedLabels="${getLabels(fg)}"
360
- .displayMetadata="${displayMetadata}"
361
- value="${fg.now ? currentTime() : fg.value}"
362
- .defaultLanguage="${props.language}"
363
- .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
364
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
365
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
366
- .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
367
- .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
368
- .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
369
- .styleOptions="${fg.styleOptions}"
370
- .readonly="${readonly}"
371
- ></icure-form-time-picker>`;
372
- }))));
373
- });
374
- }
375
- function renderDateTimePicker(fgSpan, fgRowSpan, fg) {
376
- return __asyncGenerator(this, arguments, function* renderDateTimePicker_1() {
377
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
378
- return html `<icure-form-date-time-picker
379
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
380
- class="icure-form-field"
381
- label="${fg.field}"
382
- .displayedLabels="${getLabels(fg)}"
383
- .displayMetadata="${displayMetadata}"
384
- value="${fg.now ? currentDateTime() : fg.value}"
385
- .defaultLanguage="${props.language}"
386
- .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
387
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
388
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
389
- .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
390
- .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
391
- .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
392
- .styleOptions="${fg.styleOptions}"
393
- .readonly="${readonly}"
394
- ></icure-form-date-time-picker>`;
395
- }))));
396
- });
397
- }
398
- function renderDropdownField(fgSpan, fgRowSpan, fg) {
399
- return __asyncGenerator(this, arguments, function* renderDropdownField_1() {
400
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
401
- var _a;
402
- return html `<icure-form-dropdown-field
403
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
404
- class="icure-form-field"
405
- .label=${fg.field}
406
- .displayedLabels=${getLabels(fg)}
407
- .defaultLanguage="${props.language}"
408
- .translate="${fg.translate}"
409
- .sortOptions="${fg.sortOptions}"
410
- value="${fg.value}"
411
- .codifications="${fg.codifications}"
412
- .optionsProvider="${composedOptionsProvider && ((_a = fg.codifications) === null || _a === void 0 ? void 0 : _a.length)
413
- ? (language, terms) => { var _a; return composedOptionsProvider(language, (_a = fg.codifications) !== null && _a !== void 0 ? _a : [], terms, fg.sortOptions); }
414
- : (language, terms) => filterAndSortOptionsFromFieldDefinition(language, fg, translationProvider, terms)}"
415
- .ownersProvider=${ownersProvider}
416
- .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
417
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
418
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
419
- .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
420
- .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
421
- .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
422
- .styleOptions="${fg.styleOptions}"
423
- .readonly="${readonly}"
424
- ></icure-form-dropdown-field>`;
425
- }))));
426
- });
427
- }
428
- function renderRadioButtons(fgSpan, fgRowSpan, fg) {
429
- return __asyncGenerator(this, arguments, function* renderRadioButtons_1() {
430
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
431
- var _a;
432
- return html `<icure-form-radio-button
433
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
434
- class="icure-form-field"
435
- .label="${fg.field}"
436
- .displayedLabels="${getLabels(fg)}"
437
- .displayMetadata="${displayMetadata}"
438
- .defaultLanguage="${props.language}"
439
- .translate="${fg.translate}"
440
- .sortOptions="${fg.sortOptions}"
441
- .codifications="${fg.codifications}"
442
- .optionsProvider="${composedOptionsProvider && ((_a = fg.codifications) === null || _a === void 0 ? void 0 : _a.length)
443
- ? (language, terms) => { var _a; return composedOptionsProvider(language, (_a = fg.codifications) !== null && _a !== void 0 ? _a : [], terms, fg.sortOptions); }
444
- : (language, terms) => filterAndSortOptionsFromFieldDefinition(language, fg, translationProvider, terms)}"
445
- .ownersProvider=${ownersProvider}
446
- .translationProvider=${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}
447
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
448
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
449
- .metadataProvider=${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}
450
- .handleValueChanged=${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}
451
- .handleMetadataChanged=${handleMetadataChangedProvider(formsValueContainer)}
452
- .styleOptions="${fg.styleOptions}"
453
- .readonly="${readonly}"
454
- ></icure-form-radio-button>`;
455
- }))));
456
- });
457
- }
458
- function renderCheckboxes(fgSpan, fgRowSpan, fg) {
459
- return __asyncGenerator(this, arguments, function* renderCheckboxes_1() {
460
- yield __await(yield* __asyncDelegator(__asyncValues(renderPotentiallyReadonlyField(fg, function (readonly) {
461
- var _a;
462
- return html ` <icure-form-checkbox
463
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
464
- class="icure-form-field"
465
- .label="${fg.field}"
466
- .displayedLabels="${getLabels(fg)}"
467
- .displayMetadata="${displayMetadata}"
468
- .defaultLanguage="${props.language}"
469
- .translate="${fg.translate}"
470
- .sortOptions="${fg.sortOptions}"
471
- value="${fg.value}"
472
- .codifications="${fg.codifications}"
473
- .optionsProvider="${composedOptionsProvider && ((_a = fg.codifications) === null || _a === void 0 ? void 0 : _a.length)
474
- ? (language, terms) => { var _a; return composedOptionsProvider(language, (_a = fg.codifications) !== null && _a !== void 0 ? _a : [], terms, fg.sortOptions); }
475
- : (language, terms) => filterAndSortOptionsFromFieldDefinition(language, fg, translationProvider, terms)}"
476
- .ownersProvider="${ownersProvider}"
477
- .translationProvider="${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}"
478
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
479
- .valueProvider="${formsValueContainer && fieldValuesProvider(formsValueContainer, fg)}"
480
- .metadataProvider="${formsValueContainer && formsValueContainer.getMetadata.bind(formsValueContainer)}"
481
- .handleValueChanged="${handleValueChangedProvider(formsValueContainer, fg, props.defaultOwner)}"
482
- .handleMetadataChanged="${handleMetadataChangedProvider(formsValueContainer)}"
483
- .styleOptions="${fg.styleOptions}"
484
- .readonly="${readonly}"
485
- ></icure-form-checkbox>`;
486
- }))));
487
- });
488
- }
489
- function renderButton(fgSpan, fgRowSpan, fg) {
490
- return __asyncGenerator(this, arguments, function* renderButton_1() {
491
- var _a, _b, _c, _d, _e, _f, _g, _h;
492
- function getHtml(payload, event) {
493
- var _a;
494
- return html `<icure-form-button
495
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
496
- class="icure-form-button"
497
- label="${(_a = fg.shortLabel) !== null && _a !== void 0 ? _a : fg.field}"
498
- .defaultLanguage="${props.language}"
499
- .translationProvider="${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}"
500
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
501
- .actionListener="${actionListener}"
502
- .event="${event}"
503
- .payload="${payload}"
504
- .styleOptions="${fg.styleOptions}"
505
- ></icure-form-button>`;
506
- }
507
- if (((_a = fg.computedProperties) === null || _a === void 0 ? void 0 : _a.readonly) || ((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.event)) {
508
- yield yield __await([getHtml(true, (_c = fg.event) !== null && _c !== void 0 ? _c : 'submit'), false]);
509
- const [payload, event] = (yield __await(Promise.all([
510
- fg.payload !== undefined ? fg.payload : ((_d = fg.computedProperties) === null || _d === void 0 ? void 0 : _d.payload) ? !(yield __await((formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_e = fg.computedProperties) === null || _e === void 0 ? void 0 : _e.payload)))) : undefined,
511
- fg.event !== undefined ? fg.event : ((_f = fg.computedProperties) === null || _f === void 0 ? void 0 : _f.event) ? !(yield __await((formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute((_g = fg.computedProperties) === null || _g === void 0 ? void 0 : _g.event)))) : 'submit',
512
- ])));
513
- yield yield __await([getHtml(payload, event), true]);
514
- }
515
- else {
516
- yield yield __await([getHtml(true, (_h = fg.event) !== null && _h !== void 0 ? _h : 'submit'), true]);
517
- }
518
- });
519
- }
520
- function renderLabel(fgSpan, fgRowSpan, fg) {
521
- return __asyncGenerator(this, arguments, function* renderLabel_1() {
522
- var _a;
523
- yield yield __await([
524
- html `<icure-form-label
525
- style="${calculateFieldOrGroupSize(fgSpan, fgRowSpan)}"
526
- class="icure-form-field"
527
- .defaultLanguage="${props.language}"
528
- labelPosition="${props.labelPosition}"
529
- label="${(_a = fg.shortLabel) !== null && _a !== void 0 ? _a : fg.field}"
530
- .translationProvider="${translationProvider !== null && translationProvider !== void 0 ? translationProvider : (form.translations && defaultTranslationProvider(form.translations))}"
531
- .validationErrorsProvider="${getValidationErrorProvider(formsValueContainer, fg)}"
532
- .styleOptions="${fg.styleOptions}"
533
- ></icure-form-label>`,
534
- true,
535
- ]);
536
- });
537
- }
538
- function dummyGen() {
539
- return __asyncGenerator(this, arguments, function* dummyGen_1() {
540
- yield yield __await([html ``, true]);
541
- });
542
- }
543
- function renderFieldGroupOrSubform(fg, level) {
544
- return __asyncGenerator(this, arguments, function* renderFieldGroupOrSubform_1() {
545
- var _a, e_1, _b, _c;
546
- var _d, _e, _f, _g, _h, _j;
547
- if (!fg) {
548
- yield yield __await(Promise.resolve([nothing, true]));
549
- return yield __await(void 0);
550
- }
551
- const computedProperties = (yield __await(Object.keys((_d = fg.computedProperties) !== null && _d !== void 0 ? _d : {})
552
- .filter((k) => k !== 'value' && k !== 'defaultValue')
553
- .reduce((acc, k) => __awaiter(this, void 0, void 0, function* () { var _a; return (Object.assign(Object.assign({}, (yield acc)), { [k]: ((_a = fg.computedProperties) === null || _a === void 0 ? void 0 : _a[k]) && (yield (formsValueContainer === null || formsValueContainer === void 0 ? void 0 : formsValueContainer.compute(fg.computedProperties[k]))) })); }), Promise.resolve({}))));
554
- if (computedProperties['hidden']) {
555
- yield yield __await(Promise.resolve([nothing, true]));
556
- return yield __await(void 0);
557
- }
558
- const fgSpan = ((_f = (_e = computedProperties['span']) !== null && _e !== void 0 ? _e : fg.span) !== null && _f !== void 0 ? _f : 6);
559
- const fgRowSpan = ((_h = (_g = computedProperties['rowSpan']) !== null && _g !== void 0 ? _g : fg.rowSpan) !== null && _h !== void 0 ? _h : 1);
560
- if (fg.clazz === 'group' && ((_j = fg.fields) === null || _j === void 0 ? void 0 : _j.length)) {
561
- yield __await(yield* __asyncDelegator(__asyncValues(renderGroup(fg.copy(Object.assign({}, computedProperties)), fgSpan, level))));
562
- }
563
- else if (fg.clazz === 'subform' && (fg.id || computedProperties['title'])) {
564
- yield __await(yield* __asyncDelegator(__asyncValues(renderSubform(fg.copy(Object.assign({}, computedProperties)), fgSpan, level))));
565
- }
566
- else if (fg.clazz === 'field') {
567
- const field = fg.copy(Object.assign({}, computedProperties));
568
- try {
569
- for (var _k = true, _l = __asyncValues(fg.type === 'text-field'
570
- ? renderTextField(fgSpan, fgRowSpan, field)
571
- : fg.type === 'measure-field'
572
- ? renderMeasureField(fgSpan, fgRowSpan, field)
573
- : fg.type === 'token-field'
574
- ? renderTokenField(fgSpan, fgRowSpan, field)
575
- : fg.type === 'items-list-field'
576
- ? renderItemsListField(fgSpan, fgRowSpan, field)
577
- : fg.type === 'number-field'
578
- ? renderNumberField(fgSpan, fgRowSpan, field)
579
- : fg.type === 'date-picker'
580
- ? renderDatePicker(fgSpan, fgRowSpan, field)
581
- : fg.type === 'time-picker'
582
- ? renderTimePicker(fgSpan, fgRowSpan, field)
583
- : fg.type === 'date-time-picker'
584
- ? renderDateTimePicker(fgSpan, fgRowSpan, field)
585
- : fg.type === 'dropdown-field'
586
- ? renderDropdownField(fgSpan, fgRowSpan, field)
587
- : fg.type === 'radio-button'
588
- ? renderRadioButtons(fgSpan, fgRowSpan, field)
589
- : fg.type === 'checkbox'
590
- ? renderCheckboxes(fgSpan, fgRowSpan, field)
591
- : fg.type === 'label'
592
- ? renderLabel(fgSpan, fgRowSpan, field)
593
- : fg.type === 'action'
594
- ? renderButton(fgSpan, fgRowSpan, field)
595
- : dummyGen()), _m; _m = yield __await(_l.next()), _a = _m.done, !_a; _k = true) {
596
- _c = _m.value;
597
- _k = false;
598
- const render = _c;
599
- yield yield __await([html `${render[0]}`, render[1]]);
600
- }
601
- }
602
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
603
- finally {
604
- try {
605
- if (!_k && !_a && (_b = _l.return)) yield __await(_b.call(_l));
606
- }
607
- finally { if (e_1) throw e_1.error; }
608
- }
609
- }
610
- else {
611
- yield yield __await([html ``, true]);
612
- }
613
- });
614
- }
615
- const calculateFieldOrGroupSize = (span, rowSpan, fixedWidth) => {
616
- if (fixedWidth)
617
- return `width: ${fixedWidth}px`;
618
- return `grid-column: span ${span}; ${rowSpan > 1 ? `grid-row: span ${rowSpan}` : ''}`;
619
- };
620
- function renderForm(form, sectionWrapper) {
621
- return __asyncGenerator(this, arguments, function* renderForm_1() {
622
- const sectionGenerators = form.sections.map(function (s) {
623
- return __asyncGenerator(this, arguments, function* () {
624
- const fieldsGenerator = s.fields.map((fieldOrGroup) => renderFieldGroupOrSubform(fieldOrGroup, 3));
625
- const cache = [];
626
- while (true) {
627
- const { done, subElements } = yield __await(allNext(fieldsGenerator, cache));
628
- yield yield __await([subElements, done]);
629
- }
630
- });
631
- });
632
- const cache = [];
633
- while (true) {
634
- const { done, subElements } = yield __await(allNext(sectionGenerators, cache));
635
- yield yield __await([html `${yield __await(Promise.all(subElements.map((section, idx) => sectionWrapper(idx, () => __awaiter(this, void 0, void 0, function* () { return html ` <div class="icure-form">${section}</div>`; })))))}`, done]);
636
- }
637
- });
638
- }
639
- yield __await(yield* __asyncDelegator(__asyncValues(renderForm(form, sectionWrapper !== null && sectionWrapper !== void 0 ? sectionWrapper : ((_idx, section) => __awaiter(this, void 0, void 0, function* () { return yield section(); }))))));
640
475
  });
641
- }
476
+ return html `${yield renderForm(form, sectionWrapper !== null && sectionWrapper !== void 0 ? sectionWrapper : ((idx, section) => section()))}`;
477
+ });
642
478
  //# sourceMappingURL=form.js.map