@icure/form 3.0.37 → 3.0.39

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 (81) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/components/common/field.d.ts +1 -0
  3. package/components/common/field.js +5 -0
  4. package/components/common/field.js.map +1 -1
  5. package/components/common/metadata-buttons-bar.js +4 -0
  6. package/components/common/metadata-buttons-bar.js.map +1 -1
  7. package/components/icure-button/index.js +4 -0
  8. package/components/icure-button/index.js.map +1 -1
  9. package/components/icure-button-group/index.js +4 -0
  10. package/components/icure-button-group/index.js.map +1 -1
  11. package/components/icure-date-picker/index.js +4 -0
  12. package/components/icure-date-picker/index.js.map +1 -1
  13. package/components/icure-dropdown-field/index.js +4 -0
  14. package/components/icure-dropdown-field/index.js.map +1 -1
  15. package/components/icure-form/fields/button-group/checkbox.d.ts +1 -0
  16. package/components/icure-form/fields/button-group/checkbox.js +39 -2
  17. package/components/icure-form/fields/button-group/checkbox.js.map +1 -1
  18. package/components/icure-form/fields/button-group/radio-button.d.ts +1 -0
  19. package/components/icure-form/fields/button-group/radio-button.js +39 -2
  20. package/components/icure-form/fields/button-group/radio-button.js.map +1 -1
  21. package/components/icure-form/fields/date-picker/date-picker.d.ts +1 -0
  22. package/components/icure-form/fields/date-picker/date-picker.js +54 -17
  23. package/components/icure-form/fields/date-picker/date-picker.js.map +1 -1
  24. package/components/icure-form/fields/date-picker/date-time-picker.d.ts +1 -0
  25. package/components/icure-form/fields/date-picker/date-time-picker.js +54 -17
  26. package/components/icure-form/fields/date-picker/date-time-picker.js.map +1 -1
  27. package/components/icure-form/fields/date-picker/time-picker.d.ts +1 -0
  28. package/components/icure-form/fields/date-picker/time-picker.js +54 -17
  29. package/components/icure-form/fields/date-picker/time-picker.js.map +1 -1
  30. package/components/icure-form/fields/dropdown/dropdown-field.d.ts +1 -0
  31. package/components/icure-form/fields/dropdown/dropdown-field.js +39 -2
  32. package/components/icure-form/fields/dropdown/dropdown-field.js.map +1 -1
  33. package/components/icure-form/fields/items-list-field/items-list-field.d.ts +1 -0
  34. package/components/icure-form/fields/items-list-field/items-list-field.js +55 -17
  35. package/components/icure-form/fields/items-list-field/items-list-field.js.map +1 -1
  36. package/components/icure-form/fields/measure-field/measure-field.d.ts +1 -0
  37. package/components/icure-form/fields/measure-field/measure-field.js +39 -2
  38. package/components/icure-form/fields/measure-field/measure-field.js.map +1 -1
  39. package/components/icure-form/fields/number-field/number-field.d.ts +1 -0
  40. package/components/icure-form/fields/number-field/number-field.js +55 -18
  41. package/components/icure-form/fields/number-field/number-field.js.map +1 -1
  42. package/components/icure-form/fields/text-field/text-field.d.ts +1 -0
  43. package/components/icure-form/fields/text-field/text-field.js +65 -28
  44. package/components/icure-form/fields/text-field/text-field.js.map +1 -1
  45. package/components/icure-form/fields/token-field/token-field.d.ts +1 -0
  46. package/components/icure-form/fields/token-field/token-field.js +55 -17
  47. package/components/icure-form/fields/token-field/token-field.js.map +1 -1
  48. package/components/icure-form/fields/utils/index.d.ts +1 -0
  49. package/components/icure-form/fields/utils/index.js +2 -0
  50. package/components/icure-form/fields/utils/index.js.map +1 -1
  51. package/components/icure-form/index.d.ts +1 -1
  52. package/components/icure-form/index.js +26 -5
  53. package/components/icure-form/index.js.map +1 -1
  54. package/components/icure-form/renderer/form/form-selection-button.js +4 -0
  55. package/components/icure-form/renderer/form/form-selection-button.js.map +1 -1
  56. package/components/icure-form/renderer/form/form.d.ts +7 -2
  57. package/components/icure-form/renderer/form/form.js +618 -454
  58. package/components/icure-form/renderer/form/form.js.map +1 -1
  59. package/components/icure-form/renderer/index.d.ts +1 -1
  60. package/components/icure-form/renderer/index.js.map +1 -1
  61. package/components/icure-label/index.js +4 -0
  62. package/components/icure-label/index.js.map +1 -1
  63. package/components/icure-text-field/index.js +11 -12
  64. package/components/icure-text-field/index.js.map +1 -1
  65. package/components/model/index.d.ts +15 -1
  66. package/components/model/index.js +13 -2
  67. package/components/model/index.js.map +1 -1
  68. package/generic/model.d.ts +6 -6
  69. package/generic/model.js.map +1 -1
  70. package/icure/form-values-container.d.ts +63 -42
  71. package/icure/form-values-container.js +180 -139
  72. package/icure/form-values-container.js.map +1 -1
  73. package/icure/icure-utils.js +30 -12
  74. package/icure/icure-utils.js.map +1 -1
  75. package/icure/model.d.ts +9 -2
  76. package/icure/model.js +7 -1
  77. package/icure/model.js.map +1 -1
  78. package/package.json +1 -1
  79. package/utils/code-utils.d.ts +3 -2
  80. package/utils/code-utils.js +5 -6
  81. package/utils/code-utils.js.map +1 -1
@@ -7,6 +7,31 @@ 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
+ };
10
35
  import { html, nothing } from 'lit';
11
36
  import { fieldValuesProvider, getValidationErrorProvider, handleMetadataChangedProvider, handleValueChangedProvider } from '../../../../utils/fields-values-provider';
12
37
  import { defaultTranslationProvider } from '../../../../utils/languages';
@@ -14,465 +39,604 @@ import { getLabels } from '../../../common/utils';
14
39
  import { filterAndSortOptionsFromFieldDefinition, sortSuggestions } from '../../../../utils/code-utils';
15
40
  import './form-selection-button';
16
41
  import { currentDate, currentDateTime, currentTime } from '../../../../utils/dates';
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([]);
30
- }
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
- `);
93
- }
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;
417
- }
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']) {
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) {
422
47
  return nothing;
423
48
  }
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);
49
+ if (cache[idx]) {
50
+ return cache[idx];
428
51
  }
429
- else if (fg.clazz === 'subform' && (fg.id || computedProperties['title'])) {
430
- return yield renderSubform(fg.copy(Object.assign({}, computedProperties)), fgSpan, level);
52
+ const itv = yield sg.next();
53
+ if (itv.value) {
54
+ const [value, isStale] = itv.value;
55
+ if (isStale) {
56
+ cache[idx] = value;
57
+ }
58
+ done = done && isStale;
59
+ return value;
431
60
  }
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
- : ''}`;
61
+ else {
62
+ return nothing;
461
63
  }
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>`);
474
64
  })));
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(); }))))));
475
640
  });
476
- return html `${yield renderForm(form, sectionWrapper !== null && sectionWrapper !== void 0 ? sectionWrapper : ((idx, section) => section()))}`;
477
- });
641
+ }
478
642
  //# sourceMappingURL=form.js.map