@icure/form 3.0.25 → 3.0.28

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 (72) hide show
  1. package/.yarn/cache/@lit-reactive-element-npm-2.1.0-77512b732b-fb36e9f64b.zip +0 -0
  2. package/.yarn/cache/@lit-task-npm-1.0.2-01d3dd32e9-22e1265a62.zip +0 -0
  3. package/.yarn/install-state.gz +0 -0
  4. package/components/common/field-with-options.d.ts +2 -2
  5. package/components/common/field-with-options.js.map +1 -1
  6. package/components/common/field.d.ts +9 -3
  7. package/components/common/field.js +16 -0
  8. package/components/common/field.js.map +1 -1
  9. package/components/icure-button-group/index.d.ts +5 -3
  10. package/components/icure-button-group/index.js +3 -3
  11. package/components/icure-button-group/index.js.map +1 -1
  12. package/components/icure-date-picker/index.d.ts +4 -1
  13. package/components/icure-date-picker/index.js +5 -5
  14. package/components/icure-date-picker/index.js.map +1 -1
  15. package/components/icure-dropdown-field/index.d.ts +5 -2
  16. package/components/icure-dropdown-field/index.js +6 -6
  17. package/components/icure-dropdown-field/index.js.map +1 -1
  18. package/components/icure-form/fields/button-group/checkbox.d.ts +2 -1
  19. package/components/icure-form/fields/button-group/checkbox.js +1 -1
  20. package/components/icure-form/fields/button-group/checkbox.js.map +1 -1
  21. package/components/icure-form/fields/button-group/radio-button.d.ts +2 -1
  22. package/components/icure-form/fields/button-group/radio-button.js +1 -1
  23. package/components/icure-form/fields/button-group/radio-button.js.map +1 -1
  24. package/components/icure-form/fields/date-picker/date-picker.d.ts +2 -1
  25. package/components/icure-form/fields/date-picker/date-picker.js +1 -1
  26. package/components/icure-form/fields/date-picker/date-picker.js.map +1 -1
  27. package/components/icure-form/fields/date-picker/date-time-picker.d.ts +2 -1
  28. package/components/icure-form/fields/date-picker/date-time-picker.js +1 -1
  29. package/components/icure-form/fields/date-picker/date-time-picker.js.map +1 -1
  30. package/components/icure-form/fields/date-picker/time-picker.d.ts +2 -1
  31. package/components/icure-form/fields/date-picker/time-picker.js +1 -1
  32. package/components/icure-form/fields/date-picker/time-picker.js.map +1 -1
  33. package/components/icure-form/fields/dropdown/dropdown-field.d.ts +1 -1
  34. package/components/icure-form/fields/dropdown/dropdown-field.js +1 -1
  35. package/components/icure-form/fields/dropdown/dropdown-field.js.map +1 -1
  36. package/components/icure-form/fields/items-list-field/items-list-field.d.ts +2 -1
  37. package/components/icure-form/fields/items-list-field/items-list-field.js +1 -1
  38. package/components/icure-form/fields/items-list-field/items-list-field.js.map +1 -1
  39. package/components/icure-form/fields/measure-field/measure-field.d.ts +2 -1
  40. package/components/icure-form/fields/measure-field/measure-field.js +1 -1
  41. package/components/icure-form/fields/measure-field/measure-field.js.map +1 -1
  42. package/components/icure-form/fields/number-field/number-field.d.ts +2 -1
  43. package/components/icure-form/fields/number-field/number-field.js +1 -1
  44. package/components/icure-form/fields/number-field/number-field.js.map +1 -1
  45. package/components/icure-form/fields/text-field/text-field.d.ts +2 -1
  46. package/components/icure-form/fields/text-field/text-field.js +1 -1
  47. package/components/icure-form/fields/text-field/text-field.js.map +1 -1
  48. package/components/icure-form/fields/token-field/token-field.d.ts +2 -1
  49. package/components/icure-form/fields/token-field/token-field.js +1 -1
  50. package/components/icure-form/fields/token-field/token-field.js.map +1 -1
  51. package/components/icure-form/index.d.ts +4 -2
  52. package/components/icure-form/index.js +39 -17
  53. package/components/icure-form/index.js.map +1 -1
  54. package/components/icure-form/renderer/form/form.js +180 -142
  55. package/components/icure-form/renderer/form/form.js.map +1 -1
  56. package/components/icure-form/renderer/index.d.ts +1 -1
  57. package/components/icure-form/renderer/index.js.map +1 -1
  58. package/components/icure-text-field/index.d.ts +4 -2
  59. package/components/icure-text-field/index.js +12 -12
  60. package/components/icure-text-field/index.js.map +1 -1
  61. package/generic/model.d.ts +3 -3
  62. package/generic/model.js.map +1 -1
  63. package/icure/form-values-container.d.ts +9 -8
  64. package/icure/form-values-container.js +167 -138
  65. package/icure/form-values-container.js.map +1 -1
  66. package/package.json +2 -1
  67. package/utils/fields-values-provider.d.ts +1 -1
  68. package/utils/fields-values-provider.js +12 -4
  69. package/utils/fields-values-provider.js.map +1 -1
  70. package/utils/interpreter.d.ts +1 -1
  71. package/utils/interpreter.js +11 -2
  72. package/utils/interpreter.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../../../../tmp/components/icure-form/fields/text-field/text-field.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { Field } from '../../../common'\nimport { handleSingleMetadataChanged, handleSingleValueChanged, singleValueProvider } from '../utils'\nimport { Suggestion } from '../../../../generic'\n\nexport class TextField extends Field {\n\t//Boolean value is parsed as text, so we also need to use string type\n\t@property() multiline: boolean | string = false\n\t@property() lines = 1\n\t@property() rows = 1\n\t@property() grows = false\n\t@property() unit?: string = ''\n\t@property() suggestionStopWords: Set<string> = new Set<string>()\n\t@property() linksProvider: (sug: { id: string; code: string; text: string; terms: string[] }) => Promise<{ href: string; title: string } | undefined> = () =>\n\t\tPromise.resolve(undefined)\n\t@property() suggestionProvider: (terms: string[]) => Promise<Suggestion[]> = async () => []\n\t@property() codeColorProvider: (type: string, code: string) => string = () => 'XI'\n\t@property() linkColorProvider: (type: string, code: string) => string = () => 'cat1'\n\t@property() codeContentProvider: (codes: { type: string; code: string }[]) => string = (codes) => codes.map((c) => c.code).join(',')\n\n\trender() {\n\t\tconst versionedValues = this.valueProvider?.()\n\t\treturn (versionedValues && Object.keys(versionedValues).length ? Object.keys(versionedValues) : [undefined]).map((id) => {\n\t\t\treturn html`<icure-text-field\n\t\t\t\t.readonly=\"${this.readonly}\"\n\t\t\t\t.displayMetadata=\"${this.displayMetadata}\"\n\t\t\t\tlabel=\"${this.label}\"\n\t\t\t\t.multiline=\"${this.multiline}\"\n\t\t\t\t.lines=\"${this.lines}\"\n\t\t\t\t.displayedLabels=\"${this.displayedLabels}\"\n\t\t\t\t.defaultLanguage=\"${this.defaultLanguage}\"\n\t\t\t\t.languages=\"${this.languages}\"\n\t\t\t\tschema=\"${this.multiline ? 'text-document' : 'styled-text-with-codes'}\"\n\t\t\t\t?suggestions=${!!this.suggestionProvider}\n\t\t\t\t?links=${!!this.linksProvider}\n\t\t\t\t.linksProvider=${this.linksProvider}\n\t\t\t\t.suggestionProvider=${this.suggestionProvider}\n\t\t\t\t.ownersProvider=${this.ownersProvider}\n\t\t\t\t.translationProvider=${this.translationProvider}\n\t\t\t\t.codeColorProvider=${this.codeColorProvider}\n\t\t\t\t.linkColorProvider=${this.linkColorProvider}\n\t\t\t\t.codeContentProvider=${this.codeContentProvider}\n\t\t\t\t.valueProvider=${singleValueProvider(this.valueProvider, id)}\n\t\t\t\t.validationErrorsProvider=${this.validationErrorsProvider}\n\t\t\t\t.metadataProvider=${this.metadataProvider}\n\t\t\t\t.handleValueChanged=${handleSingleValueChanged(this.handleValueChanged, id)}\n\t\t\t\t.handleMetadataChanged=${handleSingleMetadataChanged(this.handleMetadataChanged, id)}\n\t\t\t\t.styleOptions=${this.styleOptions}\n\t\t\t></icure-text-field>`\n\t\t})\n\t}\n}\n"]}
1
+ {"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../../../../tmp/components/icure-form/fields/text-field/text-field.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { Field } from '../../../common'\nimport { handleSingleMetadataChanged, handleSingleValueChanged, singleValueProvider } from '../utils'\nimport { Suggestion } from '../../../../generic'\n\nexport class TextField extends Field {\n\t//Boolean value is parsed as text, so we also need to use string type\n\t@property() multiline: boolean | string = false\n\t@property() lines = 1\n\t@property() rows = 1\n\t@property() grows = false\n\t@property() unit?: string = ''\n\t@property() suggestionStopWords: Set<string> = new Set<string>()\n\t@property() linksProvider: (sug: { id: string; code: string; text: string; terms: string[] }) => Promise<{ href: string; title: string } | undefined> = () => Promise.resolve(undefined)\n\t@property() suggestionProvider: (terms: string[]) => Promise<Suggestion[]> = async () => []\n\t@property() codeColorProvider: (type: string, code: string) => string = () => 'XI'\n\t@property() linkColorProvider: (type: string, code: string) => string = () => 'cat1'\n\t@property() codeContentProvider: (codes: { type: string; code: string }[]) => string = (codes) => codes.map((c) => c.code).join(',')\n\n\toverride renderSync(): TemplateResult[] {\n\t\tconst versionedValues = this.valueProvider?.()\n\t\treturn (versionedValues && Object.keys(versionedValues).length ? Object.keys(versionedValues) : [undefined]).map((id) => {\n\t\t\treturn html`<icure-text-field\n\t\t\t\t.readonly=\"${this.readonly}\"\n\t\t\t\t.displayMetadata=\"${this.displayMetadata}\"\n\t\t\t\tlabel=\"${this.label}\"\n\t\t\t\t.multiline=\"${this.multiline}\"\n\t\t\t\t.lines=\"${this.lines}\"\n\t\t\t\t.displayedLabels=\"${this.displayedLabels}\"\n\t\t\t\t.defaultLanguage=\"${this.defaultLanguage}\"\n\t\t\t\t.languages=\"${this.languages}\"\n\t\t\t\tschema=\"${this.multiline ? 'text-document' : 'styled-text-with-codes'}\"\n\t\t\t\t?suggestions=${!!this.suggestionProvider}\n\t\t\t\t?links=${!!this.linksProvider}\n\t\t\t\t.linksProvider=${this.linksProvider}\n\t\t\t\t.suggestionProvider=${this.suggestionProvider}\n\t\t\t\t.ownersProvider=${this.ownersProvider}\n\t\t\t\t.translationProvider=${this.translationProvider}\n\t\t\t\t.codeColorProvider=${this.codeColorProvider}\n\t\t\t\t.linkColorProvider=${this.linkColorProvider}\n\t\t\t\t.codeContentProvider=${this.codeContentProvider}\n\t\t\t\t.valueProvider=${singleValueProvider(this.valueProvider, id)}\n\t\t\t\t.validationErrorsProvider=${this.validationErrorsProvider}\n\t\t\t\t.metadataProvider=${this.metadataProvider}\n\t\t\t\t.handleValueChanged=${handleSingleValueChanged(this.handleValueChanged, id)}\n\t\t\t\t.handleMetadataChanged=${handleSingleMetadataChanged(this.handleMetadataChanged, id)}\n\t\t\t\t.styleOptions=${this.styleOptions}\n\t\t\t></icure-text-field>`\n\t\t})\n\t}\n}\n"]}
@@ -1,8 +1,9 @@
1
+ import { TemplateResult } from 'lit';
1
2
  import { Field } from '../../../common';
2
3
  import { Suggestion } from '../../../../generic';
3
4
  export declare class TokenField extends Field {
4
5
  multiline: boolean | string;
5
6
  suggestionProvider: (terms: string[]) => Promise<Suggestion[]>;
6
7
  lines: number;
7
- render(): import("lit-html").TemplateResult<1>;
8
+ renderSync(): TemplateResult;
8
9
  }
@@ -26,7 +26,7 @@ export class TokenField extends Field {
26
26
  this.suggestionProvider = () => __awaiter(this, void 0, void 0, function* () { return []; });
27
27
  this.lines = 1;
28
28
  }
29
- render() {
29
+ renderSync() {
30
30
  return html `<icure-text-field
31
31
  .readonly="${this.readonly}"
32
32
  label="${this.label}"
@@ -1 +1 @@
1
- {"version":3,"file":"token-field.js","sourceRoot":"","sources":["../../../../../tmp/components/icure-form/fields/token-field/token-field.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,MAAM,OAAO,UAAW,SAAQ,KAAK;IAArC;;QACa,cAAS,GAAqB,KAAK,CAAA;QACnC,uBAAkB,GAA+C,GAAS,EAAE,gDAAC,OAAA,EAAE,CAAA,GAAA,CAAA;QAC/E,UAAK,GAAG,CAAC,CAAA;IAoBtB,CAAC;IAnBA,MAAM;QACL,OAAO,IAAI,CAAA;gBACG,IAAI,CAAC,QAAQ;YACjB,IAAI,CAAC,KAAK;iBACL,IAAI,CAAC,SAAS;aAClB,IAAI,CAAC,KAAK;uBACA,IAAI,CAAC,eAAe;uBACpB,IAAI,CAAC,eAAe;;4BAEf,IAAI,CAAC,qBAAqB;yBAC7B,IAAI,CAAC,kBAAkB;uBACzB,IAAI,CAAC,gBAAgB;qBACvB,IAAI,CAAC,cAAc;yBACf,IAAI,CAAC,kBAAkB;0BACtB,IAAI,CAAC,mBAAmB;+BACnB,IAAI,CAAC,wBAAwB;oBACxC,IAAI,CAAC,aAAa;uBACf,CAAA;IACtB,CAAC;CACD;AAtBY;IAAX,QAAQ,EAAE;;6CAAoC;AACnC;IAAX,QAAQ,EAAE;;sDAAgF;AAC/E;IAAX,QAAQ,EAAE;;yCAAU","sourcesContent":["import { html } from 'lit'\nimport { Field } from '../../../common'\nimport { property } from 'lit/decorators.js'\nimport { Suggestion } from '../../../../generic'\n\nexport class TokenField extends Field {\n\t@property() multiline: boolean | string = false\n\t@property() suggestionProvider: (terms: string[]) => Promise<Suggestion[]> = async () => []\n\t@property() lines = 1\n\trender() {\n\t\treturn html`<icure-text-field\n\t\t\t.readonly=\"${this.readonly}\"\n\t\t\tlabel=\"${this.label}\"\n\t\t\t.multiline=\"${this.multiline}\"\n\t\t\t.lines=\"${this.lines}\"\n\t\t\t.displayedLabels=\"${this.displayedLabels}\"\n\t\t\t.defaultLanguage=\"${this.defaultLanguage}\"\n\t\t\tschema=\"tokens-list\"\n\t\t\t.handleMetadataChanged=${this.handleMetadataChanged}\n\t\t\t.handleValueChanged=${this.handleValueChanged}\n\t\t\t.metadataProvider=${this.metadataProvider}\n\t\t\t.ownersProvider=${this.ownersProvider}\n\t\t\t.suggestionProvider=${this.suggestionProvider}\n\t\t\t.translationProvider=${this.translationProvider}\n\t\t\t.validationErrorsProvider=${this.validationErrorsProvider}\n\t\t\t.valueProvider=${this.valueProvider}\n\t\t></icure-text-field>`\n\t}\n}\n"]}
1
+ {"version":3,"file":"token-field.js","sourceRoot":"","sources":["../../../../../tmp/components/icure-form/fields/token-field/token-field.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,MAAM,OAAO,UAAW,SAAQ,KAAK;IAArC;;QACa,cAAS,GAAqB,KAAK,CAAA;QACnC,uBAAkB,GAA+C,GAAS,EAAE,gDAAC,OAAA,EAAE,CAAA,GAAA,CAAA;QAC/E,UAAK,GAAG,CAAC,CAAA;IAoBtB,CAAC;IAnBS,UAAU;QAClB,OAAO,IAAI,CAAA;gBACG,IAAI,CAAC,QAAQ;YACjB,IAAI,CAAC,KAAK;iBACL,IAAI,CAAC,SAAS;aAClB,IAAI,CAAC,KAAK;uBACA,IAAI,CAAC,eAAe;uBACpB,IAAI,CAAC,eAAe;;4BAEf,IAAI,CAAC,qBAAqB;yBAC7B,IAAI,CAAC,kBAAkB;uBACzB,IAAI,CAAC,gBAAgB;qBACvB,IAAI,CAAC,cAAc;yBACf,IAAI,CAAC,kBAAkB;0BACtB,IAAI,CAAC,mBAAmB;+BACnB,IAAI,CAAC,wBAAwB;oBACxC,IAAI,CAAC,aAAa;uBACf,CAAA;IACtB,CAAC;CACD;AAtBY;IAAX,QAAQ,EAAE;;6CAAoC;AACnC;IAAX,QAAQ,EAAE;;sDAAgF;AAC/E;IAAX,QAAQ,EAAE;;yCAAU","sourcesContent":["import { html, TemplateResult } from 'lit'\nimport { Field } from '../../../common'\nimport { property } from 'lit/decorators.js'\nimport { Suggestion } from '../../../../generic'\n\nexport class TokenField extends Field {\n\t@property() multiline: boolean | string = false\n\t@property() suggestionProvider: (terms: string[]) => Promise<Suggestion[]> = async () => []\n\t@property() lines = 1\n\toverride renderSync(): TemplateResult {\n\t\treturn html`<icure-text-field\n\t\t\t.readonly=\"${this.readonly}\"\n\t\t\tlabel=\"${this.label}\"\n\t\t\t.multiline=\"${this.multiline}\"\n\t\t\t.lines=\"${this.lines}\"\n\t\t\t.displayedLabels=\"${this.displayedLabels}\"\n\t\t\t.defaultLanguage=\"${this.defaultLanguage}\"\n\t\t\tschema=\"tokens-list\"\n\t\t\t.handleMetadataChanged=${this.handleMetadataChanged}\n\t\t\t.handleValueChanged=${this.handleValueChanged}\n\t\t\t.metadataProvider=${this.metadataProvider}\n\t\t\t.ownersProvider=${this.ownersProvider}\n\t\t\t.suggestionProvider=${this.suggestionProvider}\n\t\t\t.translationProvider=${this.translationProvider}\n\t\t\t.validationErrorsProvider=${this.validationErrorsProvider}\n\t\t\t.valueProvider=${this.valueProvider}\n\t\t></icure-text-field>`\n\t}\n}\n"]}
@@ -1,6 +1,7 @@
1
- import { LitElement, TemplateResult } from 'lit';
1
+ import { LitElement, nothing, TemplateResult } from 'lit';
2
2
  import { FieldMetadata, FieldValue, Form } from '../model';
3
3
  import { FormValuesContainer, Suggestion } from '../../generic';
4
+ import { Task } from '@lit/task';
4
5
  /**
5
6
  * Form element
6
7
  */
@@ -23,5 +24,6 @@ export declare class IcureForm extends LitElement {
23
24
  selectedTab: number;
24
25
  constructor();
25
26
  static get styles(): import("lit").CSSResult[];
26
- render(): TemplateResult;
27
+ _asyncTask: Task<readonly [Form | undefined, FormValuesContainer<FieldValue, FieldMetadata> | undefined, string | undefined, number], TemplateResult>;
28
+ render(): typeof nothing | TemplateResult | undefined;
27
29
  }
@@ -7,6 +7,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
10
19
  // Import the LitElement base class and html helper function
11
20
  import { html, LitElement, nothing } from 'lit';
12
21
  import { property, state } from 'lit/decorators.js';
@@ -1118,6 +1127,7 @@ input[type=radio] {
1118
1127
  height: 1.4em;
1119
1128
  }`;
1120
1129
  import { defaultTranslationProvider, languages } from '../../utils/languages';
1130
+ import { Task } from '@lit/task';
1121
1131
  /**
1122
1132
  * Form element
1123
1133
  */
@@ -1133,36 +1143,48 @@ export class IcureForm extends LitElement {
1133
1143
  this.formValuesContainer = undefined;
1134
1144
  this.actionListener = () => undefined;
1135
1145
  this.selectedTab = 0;
1146
+ this._asyncTask = new Task(this, {
1147
+ task: (_a) => __awaiter(this, [_a], void 0, function* ([form, formValuesContainer, language]) {
1148
+ var _b, _c, _d;
1149
+ if (!form) {
1150
+ return html `<p>missing form</p>`;
1151
+ }
1152
+ const variant = (_b = this.renderer) === null || _b === void 0 ? void 0 : _b.split(':');
1153
+ const renderer = variant[0] === 'form' ? renderAsForm : undefined;
1154
+ if (!renderer) {
1155
+ return html `<p>unknown renderer</p>`;
1156
+ }
1157
+ const translationTables = (_c = this.form) === null || _c === void 0 ? void 0 : _c.translations;
1158
+ const sectionWrapper = variant[1] === 'tab'
1159
+ ? (index, section) => {
1160
+ return html `<div class="tab ${index === this.selectedTab ? 'active' : ''}">${index === this.selectedTab ? section() : nothing}</div>`;
1161
+ }
1162
+ : undefined;
1163
+ return renderer(form, { labelPosition: this.labelPosition, language }, formValuesContainer, (_d = this.translationProvider) !== null && _d !== void 0 ? _d : (translationTables ? defaultTranslationProvider(translationTables) : undefined), this.ownersProvider, this.optionsProvider, this.actionListener, this.languages, this.readonly, this.displayMetadata, sectionWrapper);
1164
+ }),
1165
+ args: () => [this.form, this.formValuesContainer, this.language, this.selectedTab],
1166
+ });
1136
1167
  }
1137
1168
  static get styles() {
1138
1169
  return [baseCss];
1139
1170
  }
1140
1171
  render() {
1141
1172
  var _a, _b, _c;
1142
- const variant = (_a = this.renderer) === null || _a === void 0 ? void 0 : _a.split(':');
1143
- const renderer = variant[0] === 'form' ? renderAsForm : undefined;
1144
- if (!this.form) {
1145
- return html `<p>missing form</p>`;
1146
- }
1147
- if (!renderer) {
1148
- return html `<p>unknown renderer</p>`;
1149
- }
1150
- const sectionWrapper = variant[1] === 'tab'
1151
- ? (index, section) => {
1152
- return html `<div class="tab ${index === this.selectedTab ? 'active' : ''}">${index === this.selectedTab ? section() : nothing}</div>`;
1153
- }
1154
- : undefined;
1155
1173
  console.log('Render metadata', this.displayMetadata);
1156
1174
  if (!this.visible) {
1157
- return html ``;
1175
+ return nothing;
1158
1176
  }
1159
- const translationTables = (_b = this.form) === null || _b === void 0 ? void 0 : _b.translations;
1160
- const render = renderer(this.form, { labelPosition: this.labelPosition, language: this.language }, this.formValuesContainer, (_c = this.translationProvider) !== null && _c !== void 0 ? _c : (translationTables ? defaultTranslationProvider(translationTables) : undefined), this.ownersProvider, this.optionsProvider, this.actionListener, this.languages, this.readonly, this.displayMetadata, sectionWrapper);
1177
+ const variant = (_a = this.renderer) === null || _a === void 0 ? void 0 : _a.split(':');
1178
+ const render = this._asyncTask.render({
1179
+ pending: () => html `<p>Loading...</p>`,
1180
+ complete: (render) => render,
1181
+ error: () => html `<p>Error</p>`,
1182
+ });
1161
1183
  return variant[1] === 'tab'
1162
1184
  ? html `<div class="tab-container">
1163
1185
  <div class="tab-bar">
1164
1186
  <ul>
1165
- ${this.form.sections.map((s, idx) => html `<li
1187
+ ${((_c = (_b = this.form) === null || _b === void 0 ? void 0 : _b.sections) !== null && _c !== void 0 ? _c : []).map((s, idx) => html `<li
1166
1188
  class="${this.selectedTab === idx ? 'active' : ''}"
1167
1189
  @click="${() => {
1168
1190
  this.selectedTab = idx;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../tmp/components/icure-form/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Import the LitElement base class and html helper function\nimport { html, LitElement, nothing, TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\n\nimport { Renderer } from './renderer'\nimport { render as renderAsForm } from './renderer/form/form'\nimport { FieldMetadata, FieldValue, Form } from '../model'\nimport { FormValuesContainer, Suggestion } from '../../generic'\n\n// @ts-ignore\nimport { css } from 'lit';\nconst baseCss = css`@charset \"UTF-8\";\n.tab-container .tab-bar li {\n display: inline-block;\n padding: 8px 16px;\n cursor: pointer;\n color: #000000;\n font-size: 14px;\n font-weight: 500;\n}\n.tab-container .tab-bar li.active {\n background-color: #656565;\n color: white;\n}\n.tab-container .tab-content .tab {\n display: none;\n}\n.tab-container .tab-content .tab.active {\n display: block;\n}\n\n:host {\n --bg-color-1: #f44336;\n}\n\n.ProseMirror {\n position: relative;\n width: 100%;\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n padding: 6px 8px 2px 8px;\n line-height: 1.2;\n color: #274768;\n font-size: 14px;\n font-weight: 400;\n outline: none;\n}\n.ProseMirror p:last-child,\n.ProseMirror h1:last-child,\n.ProseMirror h2:last-child,\n.ProseMirror h3:last-child,\n.ProseMirror h4:last-child,\n.ProseMirror h5:last-child,\n.ProseMirror h6:last-child {\n margin-bottom: 2px;\n}\n.ProseMirror p {\n margin-bottom: 1em;\n}\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n.ProseMirror li {\n position: relative;\n}\n.ProseMirror ul,\n.ProseMirror ol {\n padding-left: 30px;\n}\n.ProseMirror blockquote {\n padding-left: 1em;\n border-left: 3px solid #eee;\n margin-left: 0;\n margin-right: 0;\n}\n\n.ProseMirror-hideselection {\n caret-color: transparent;\n}\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf;\n}\n\n/* Make sure li selections wrap around markers */\nli.ProseMirror-selectednode {\n outline: none;\n}\nli.ProseMirror-selectednode :after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n/* Add space around the hr to make clicking it easier */\n.ProseMirror-example-setup-style hr {\n padding: 2px 10px;\n border: none;\n margin: 1em 0;\n}\n.ProseMirror-example-setup-style hr:after {\n content: \"\";\n display: block;\n height: 1px;\n background: silver;\n line-height: 2px;\n}\n\n.ProseMirror-example-setup-style img {\n cursor: default;\n}\n\n.ProseMirror-prompt {\n background: white;\n padding: 5px 10px 5px 15px;\n border: 1px solid silver;\n position: fixed;\n border-radius: 3px;\n z-index: 11;\n box-shadow: -0.5px 2px 5px rgba(0, 0, 0, 0.2);\n}\n.ProseMirror-prompt h5 {\n margin: 0;\n font-weight: normal;\n font-size: 100%;\n color: #444;\n}\n.ProseMirror-prompt input[type=text],\n.ProseMirror-prompt textarea {\n background: #eee;\n border: none;\n outline: none;\n}\n.ProseMirror-prompt input[type=text] {\n padding: 0 4px;\n}\n\n.ProseMirror-prompt-close {\n position: absolute;\n left: 2px;\n top: 1px;\n color: #666;\n border: none;\n background: transparent;\n padding: 0;\n}\n.ProseMirror-prompt-close:after {\n content: \"✕\";\n font-size: 12px;\n}\n\n.ProseMirror-invalid {\n background: #ffc;\n border: 1px solid #cc7;\n border-radius: 4px;\n padding: 5px 10px;\n position: absolute;\n min-width: 10em;\n}\n\n.ProseMirror-prompt-buttons {\n margin-top: 5px;\n display: none;\n}\n\n#editor,\n.editor {\n color: rgb(101, 101, 101);\n background-clip: padding-box;\n border-radius: 4px;\n border: 2px solid rgba(0, 0, 0, 0.2);\n padding: 5px 0;\n display: flex;\n align-items: flex-end;\n}\n\n.icure-input {\n background: #edf2f7;\n border-radius: 8px;\n border: none;\n min-height: 28px;\n height: auto;\n display: flex;\n flex-flow: row nowrap;\n align-items: flex-start;\n justify-content: space-between;\n}\n\n#editor {\n background: transparent;\n border: none;\n padding: 0;\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n#editor.tokens-list .ProseMirror, #editor.styled-tokens-list .ProseMirror {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n}\n#editor.tokens-list .ProseMirror li, #editor.styled-tokens-list .ProseMirror li {\n display: flex;\n flex-direction: row;\n border-radius: 8px;\n padding: 2px 4px;\n margin-right: 2px;\n background-color: #dadada;\n border-color: rgba(42, 61, 108, 0.44);\n min-height: 20px;\n}\n#editor.tokens-list .ProseMirror li span, #editor.styled-tokens-list .ProseMirror li span {\n display: inline-block;\n min-height: 18px;\n}\n#editor.tokens-list .ProseMirror li span br, #editor.styled-tokens-list .ProseMirror li span br {\n display: none;\n}\n#editor.items-list .ProseMirror {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: flex-start;\n gap: 6px;\n}\n#editor.items-list .ProseMirror li {\n list-style-type: none;\n width: 100%;\n padding-bottom: 4px;\n border-bottom: 1px dotted rgba(128, 128, 128, 0.5098039216);\n}\n#editor.items-list .ProseMirror li:last-child {\n border-bottom: none;\n}\n\n#content {\n position: relative;\n padding: 0;\n}\n\n* {\n font-family: \"Roboto\", Helvetica, sans-serif;\n}\n\np {\n margin-top: 0;\n}\n\nh3 {\n color: #274768;\n margin-top: 0;\n}\n\n.icure-input-metadata-container {\n display: flex;\n}\n.icure-input-metadata-container .icure-metadata-container {\n display: flex;\n flex-grow: 1;\n padding: 0 4px;\n border: 1px solid #DDE3E7;\n border-left: none;\n border-radius: 0 6px 6px 0;\n outline: 0;\n box-sizing: border-box;\n}\n.icure-input-metadata-container .icure-metadata-container__validationError {\n border-color: red;\n}\n\n.extra {\n min-width: 20px;\n width: auto;\n height: 20px;\n transition: all 0.24s cubic-bezier(0.42, 0.01, 1, 0.62);\n}\n.extra:hover .info {\n display: none;\n}\n.extra:hover .buttons-container .menu-container .btn {\n animation: slideIn 0.24s ease-in forwards;\n pointer-events: none;\n display: unset !important;\n}\n.extra.forced .info, .extra.forced .extra .info.hidden {\n opacity: 0 !important;\n z-index: 0 !important;\n display: none;\n}\n.extra.forced .buttons-container .btn {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra.forced:hover .buttons-container .menu-container .btn {\n animation: none;\n pointer-events: all;\n}\n.extra--metadataButtonsBar {\n height: 100%;\n display: flex;\n align-items: center;\n padding: 0 4px;\n}\n.extra .info {\n color: #809ab4;\n font-size: 15px;\n width: 100%;\n height: auto;\n overflow: hidden;\n pointer-events: none;\n text-align: center;\n}\n.extra .info span {\n font-weight: 700;\n}\n.extra .info.hidden {\n display: none;\n}\n.extra .buttons-container {\n display: flex;\n height: 20px;\n width: auto;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-end;\n transition: all 0.24s cubic-bezier(0.14, 0.69, 0.87, 0.54);\n z-index: 1000;\n}\n.extra .buttons-container .btn {\n border: none;\n background: transparent;\n position: relative;\n top: 0;\n display: none;\n opacity: 0;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.extra .buttons-container .btn svg {\n width: 15px;\n height: 15px;\n}\n.extra .buttons-container .btn svg path {\n fill: #809ab4;\n}\n.extra .buttons-container .btn.forced {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra .buttons-container .btn.forced svg path {\n fill: crimson !important;\n}\n.extra .buttons-container .btn:focus, .extra .buttons-container .btn:focus-within {\n border: none;\n outline: none;\n}\n.extra .buttons-container .btn:hover svg path {\n fill: #274768;\n}\n.extra .buttons-container .menu-container .btn:hover::before {\n content: \"\";\n display: block;\n border-color: #274768 transparent transparent transparent;\n border-style: solid;\n border-width: 4px;\n position: absolute;\n top: -6px;\n}\n.extra .buttons-container .menu-container .btn:hover::after {\n content: attr(data-content);\n position: absolute;\n top: -21px;\n height: 16px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n background: #274768;\n color: white;\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n text-transform: capitalize;\n white-space: nowrap;\n padding: 0 12px;\n font-size: 12px;\n line-height: 0;\n}\n.extra .buttons-container .menu-container:last-child .btn {\n margin-right: 0;\n}\n\n@keyframes slideIn {\n 0% {\n top: 0;\n opacity: 0;\n pointer-events: none;\n }\n 100% {\n top: 0;\n opacity: 1;\n pointer-events: all;\n }\n}\n.menu-container {\n display: flex;\n align-items: center;\n height: fit-content;\n}\n.menu-container .item {\n height: 30px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #274768;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n}\n.menu-container .item.existing {\n background-color: #BFE8EA;\n}\n.menu-container .item.selected {\n color: white;\n background-color: #084B83;\n}\n.menu-container .item:hover {\n background: #DCE7F2;\n color: #274768;\n font-weight: 500;\n border-radius: 4px;\n}\n\n.value-date-menu {\n width: unset !important;\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n gap: 2px;\n position: absolute;\n top: 32px;\n right: -12px;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n border-radius: 8px;\n padding: 8px;\n width: 220px;\n min-height: 120px;\n max-height: 320px;\n overflow-y: scroll;\n}\n.menu .input-container {\n background: #edf2f7;\n border-radius: 4px;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n height: 32px;\n margin-bottom: 4px;\n padding: 0 4px;\n}\n.menu .input-container:hover {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2);\n}\n.menu .input-container:focus-within {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2), 0 0 0 1px rgb(40, 151, 255);\n}\n.menu .input-container input {\n background: transparent;\n border: none;\n flex-grow: 1;\n height: 100%;\n}\n.menu .input-container input:focus {\n background: transparent;\n border: none;\n outline: none;\n}\n\n.menu-trigger:focus .menu {\n display: flex;\n}\n\nspan {\n position: relative;\n z-index: 1;\n}\nspan.date {\n margin-right: 1px;\n}\nspan.time {\n margin-left: 1px;\n}\nspan.measure {\n display: inline-block;\n margin-right: 1px;\n}\nspan.unit {\n margin-left: 1px;\n display: inline-block;\n}\nspan[data-content]:hover::after {\n position: absolute;\n content: attr(data-content);\n background: #274768;\n color: #ffffff;\n font-size: 9px;\n line-height: 12px;\n top: -12px;\n left: 0px;\n padding: 0px 2px;\n}\nspan[data-content]::before {\n position: absolute;\n content: \"\";\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n opacity: 0.3;\n}\n\n.masked {\n display: none;\n}\n\n.companion {\n position: absolute;\n width: 15px;\n background-color: hsl(194, 100%, 50%);\n color: white;\n z-index: 20;\n padding: 0;\n text-align: center;\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 0 2px 2px 0;\n}\n.companion:hover {\n font-weight: 700;\n background: hsl(202, 100%, 50%);\n}\n\n*::selection {\n background-color: hsla(194, 100%, 50%, 0.2);\n}\n\n.suggestion-palette {\n position: absolute;\n z-index: 20;\n max-width: 380px;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 4px;\n border: none;\n border-radius: 8px;\n background: white;\n box-shadow: 0 1.1px 1.1px rgba(0, 0, 0, 0.022), 0 2.7px 2.7px rgba(0, 0, 0, 0.032), 0 5px 5px rgba(0, 0, 0, 0.04), 0 8.9px 8.9px rgba(0, 0, 0, 0.048), 0 16.7px 16.7px rgba(0, 0, 0, 0.058), 0 40px 40px rgba(0, 0, 0, 0.08);\n}\n.suggestion-palette ul {\n white-space: nowrap;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.suggestion-palette ul li:not(:first-child) svg.tab-icn,\n.suggestion-palette ul li:not(.focused) svg.return-icn, .suggestion-palette ul.focused li:first-child svg.tab-icn {\n height: 0;\n width: 0;\n transform: scale(0);\n opacity: 0;\n}\n.suggestion-palette ul li {\n padding: 0 8px;\n font-size: 11px;\n height: 20px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 4px;\n color: rgb(39, 71, 104);\n}\n.suggestion-palette ul li.focused {\n background-color: rgb(237, 242, 247);\n}\n.suggestion-palette ul li.focused svg.return-icn {\n animation: growIn 0.24s ease-in forwards;\n}\n.suggestion-palette ul li svg {\n height: 12px;\n width: 12px;\n border-radius: 4px;\n transform-origin: center center;\n}\n.suggestion-palette ul li svg path {\n fill: rgb(128, 154, 180);\n}\n\n@keyframes growIn {\n 0% {\n transform: scale(0.5);\n }\n 90% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n }\n}\nspan.code-count-1::after,\nspan.code-count-1::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n}\n\nspan.code-count-2::after,\nspan.code-count-2::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n /*background: repeating-linear-gradient(*/\n /*\t45deg,*/\n /*\tvar(--bg-code-color-1),*/\n /*\tvar(--bg-code-color-1) 10px,*/\n /*\tvar(--bg-code-color-2) 10px,*/\n /*\tvar(--bg-code-color-2) 20px*/\n /*);*/\n /* PAS STRIPES */\n background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);\n}\n\nspan.code-count-3::after,\nspan.code-count-3::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n background: repeating-linear-gradient(45deg, var(--bg-code-color-1), var(--bg-code-color-1) 10px, var(--bg-code-color-2) 10px, var(--bg-code-color-2) 20px);\n /* PAS STRIPES */\n /* background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);*/\n}\n\n.selected-option {\n padding: 2px;\n margin-right: 5px;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: auto;\n min-width: 100%;\n overflow-y: auto;\n padding: 2px;\n border-radius: 6px;\n}\n.options--subformView {\n top: 46px;\n min-width: unset;\n left: unset;\n right: 0;\n}\n\n.date-picker {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: 260px;\n overflow-y: auto;\n max-height: 280px;\n}\n\napp-date-picker {\n --app-primary: #084B83;\n --app-hover: #5b7da2;\n --app-selected-hover: #5b7da2;\n}\n\n.option {\n height: 28px;\n min-height: 28px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #545454;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n padding: 4px 8px;\n -webkit-user-select: none; /* Safari */\n -ms-user-select: none; /* IE 10 and IE 11 */\n user-select: none; /* Standard syntax */\n cursor: pointer;\n}\n.option:hover {\n color: #656565;\n background-color: #ededed;\n}\n\n.select-arrow {\n border: none;\n background: 0px 0px;\n position: relative;\n top: 0px;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n width: 10px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0px;\n}\n\n.hidden {\n display: none;\n}\n\n.container {\n position: relative;\n}\n\n.group {\n align-items: end;\n display: grid;\n}\n\n.subform {\n display: grid;\n position: relative;\n padding: 8px;\n border-radius: 6px;\n background-color: #e7f0fd;\n gap: 12px;\n}\n.subform__heading {\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: auto;\n}\n.subform__heading__title {\n padding: 0;\n margin: 0;\n}\n.subform__addBtn, .subform__removeBtn {\n cursor: pointer;\n background-color: #084B83;\n color: white;\n height: 32px;\n padding: 0 16px;\n border-radius: 6px;\n border: none;\n outline: none;\n}\n.subform__addBtn:hover, .subform__removeBtn:hover {\n background-color: #3D87C5;\n}\n.subform__removeBtn {\n justify-self: end;\n border: 1px solid #DDE3E7;\n background-color: #FCFCFD;\n color: #084B83;\n}\n.subform__removeBtn:hover {\n background-color: #F2F2F2;\n}\n.subform__child {\n display: grid;\n grid-template-rows: auto;\n gap: 8px;\n padding: 8px;\n border-radius: 6px;\n background: white;\n border: 1px solid #3D87C5;\n}\n.subform__child__title {\n padding: 12px !important;\n border-radius: 6px;\n margin: 0;\n background-color: #BFE8EA;\n}\n.subform__child .subform {\n background: unset;\n margin: 0;\n padding: 0;\n}\n\n.icure-form {\n background-color: rgba(0, 0, 0, 0);\n display: grid;\n gap: 16px 6px;\n grid-template-columns: repeat(24, 1fr);\n}\n.icure-form hr {\n display: block;\n margin-top: 20px;\n border-top: 1px solid rgba(8, 75, 131, 0.13);\n margin-bottom: 20px;\n}\n.icure-form h2 {\n font-size: add-two(12px, 0, 1.2);\n font-weight: 700;\n color: #084B83;\n padding: 2px;\n}\n.icure-form h3 {\n font-size: add-two(12px, 0, 1.1);\n font-weight: 500;\n color: #084B83;\n padding: 6px;\n}\n.icure-form .group.bordered {\n background: #f6f6f6;\n border-radius: 12px;\n}\n\n.icure-form-field {\n display: grid;\n align-items: flex-start;\n}\n\n.error {\n color: red;\n font-size: 12px;\n margin-top: 4px;\n}\n\n.icure-text-field .icure-label-extra, .icure-button-group .icure-label-extra {\n display: flex;\n width: 100%;\n gap: 12px;\n}\n.icure-text-field .icure-label, .icure-button-group .icure-label {\n z-index: 1;\n pointer-events: none;\n line-height: 1.4em;\n cursor: text;\n font-size: 12px;\n left: add-two(8px, 1px);\n color: #084B83;\n align-items: center;\n text-wrap: auto;\n min-height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-text-field .icure-label.float, .icure-button-group .icure-label.float {\n display: flex;\n overflow: hidden;\n}\n\n.icure-text-field {\n position: relative;\n width: 100%;\n}\n.icure-text-field > .icure-label {\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n}\n.icure-text-field > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-text-field > .icure-label.side {\n position: relative;\n}\n.icure-text-field > .icure-label.side.left {\n order: -1;\n margin-right: 1em;\n}\n.icure-text-field > .icure-label.side.right {\n order: 1;\n margin-left: 1em;\n}\n.icure-text-field .icure-input,\n.icure-text-field .input-container {\n padding: 8px;\n width: 100%;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n border-color: #DDE3E7;\n border-radius: 2px;\n box-sizing: border-box;\n outline: 0;\n font: inherit;\n font-size: 14px;\n line-height: 1.4em;\n display: flex;\n align-items: center;\n vertical-align: middle;\n position: relative;\n -webkit-appearance: none;\n background-color: #ffffff;\n color: #000000;\n}\n.icure-text-field .icure-input__validationError,\n.icure-text-field .input-container__validationError {\n border-color: red;\n}\n.icure-text-field .icure-input__withMetadata,\n.icure-text-field .input-container__withMetadata {\n border-radius: 6px 0 0 6px;\n}\n.icure-text-field .icure-input:focus, .icure-text-field .icure-input:focus-within,\n.icure-text-field .input-container:focus,\n.icure-text-field .input-container:focus-within {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input:hover,\n.icure-text-field .input-container:hover {\n border-color: rgba(0, 0, 0, 0.15);\n box-shadow: none;\n}\n.icure-text-field .icure-input:hover:focus, .icure-text-field .icure-input:hover:focus-within,\n.icure-text-field .input-container:hover:focus,\n.icure-text-field .input-container:hover:focus-within {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input .ProseMirror,\n.icure-text-field .input-container .ProseMirror {\n padding: 0;\n font-size: 14px;\n line-height: 1.4em;\n color: #000000;\n}\n.icure-text-field .icure-input .ProseMirror .date,\n.icure-text-field .input-container .ProseMirror .date {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror .time,\n.icure-text-field .input-container .ProseMirror .time {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror:focus .focused,\n.icure-text-field .input-container .ProseMirror:focus .focused {\n background-color: rgba(0, 0, 0, 0.05);\n border-radius: 3px;\n border-color: rgba(0, 0, 0, 0.1);\n}\n.icure-text-field .icure-input > svg,\n.icure-text-field .input-container > svg {\n opacity: 0.5;\n}\n.icure-text-field .icure-input > svg path,\n.icure-text-field .input-container > svg path {\n fill: #656565;\n}\n.icure-text-field .icure-input .extra,\n.icure-text-field .input-container .extra {\n height: 20px;\n}\n.icure-text-field .icure-input .extra > .info,\n.icure-text-field .input-container .extra > .info {\n color: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path,\n.icure-text-field .input-container .extra .btn svg path {\n fill: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path:hover,\n.icure-text-field .input-container .extra .btn svg path:hover {\n fill: #656565;\n opacity: 1;\n}\n\ninput[type=radio] {\n margin-top: -1px;\n vertical-align: middle;\n}\n\n.icure-checkbox:checked {\n accent-color: #06a070;\n}\n\n.icure-button {\n display: flex;\n height: 32px;\n padding: 0 16px;\n background-color: #084B83;\n color: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: normal;\n}\n.icure-button:hover {\n background-color: #3D87C5;\n}\n\n.icure-button-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.icure-button-group > div {\n display: grid;\n}\n.icure-button-group > div > div {\n display: flex;\n align-items: center;\n}\n.icure-button-group > div > div > .icure-button-group-label {\n z-index: 1;\n line-height: 1.4em;\n cursor: text;\n font-size: 12px;\n top: add-three(1.4em, 1px, 0);\n left: add-two(8px, 1px);\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n color: #084B83;\n display: flex;\n align-items: center;\n height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-button-group > div > div > .icure-button-group-label > span {\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n padding-right: 8px;\n}\n.icure-button-group > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-button-group > .icure-label {\n transform: translate(0, 0) scale(1);\n}\n.icure-button-group > .icure-label.above, .icure-button-group.has-content > .icure-label, .icure-button-group:focus > .icure-label, .icure-button-group:focus-within > .icure-label {\n font-weight: 500;\n height: 1.4em;\n}` \nimport { defaultTranslationProvider, languages } from '../../utils/languages'\n\n/**\n * Form element\n */\nexport class IcureForm extends LitElement {\n\t@property() form?: Form\n\t@property() renderer = 'form'\n\t@property() visible = true\n\t@property() readonly = false\n\t@property() displayMetadata = false\n\t@property() labelPosition?: 'top' | 'left' | 'right' | 'bottom' | 'float' | undefined = undefined\n\t@property() language?: string\n\t@property() languages?: { [iso: string]: string } = languages\n\t@property() formValuesContainer?: FormValuesContainer<FieldValue, FieldMetadata> = undefined\n\t@property() translationProvider?: (language: string, text: string) => string\n\t@property() ownersProvider?: (terms: string[], ids?: string[], specialties?: string[]) => Promise<Suggestion[]>\n\t@property() optionsProvider?: (language: string, codifications: string[], terms?: string[]) => Promise<Suggestion[]>\n\t@property() actionListener?: (event: string, payload: unknown) => void = () => undefined\n\n\t@state() selectedTab = 0\n\n\tconstructor() {\n\t\tsuper()\n\t}\n\n\tstatic get styles() {\n\t\treturn [baseCss]\n\t}\n\n\trender() {\n\t\tconst variant = this.renderer?.split(':')\n\t\tconst renderer: Renderer | undefined = variant[0] === 'form' ? renderAsForm : undefined\n\n\t\tif (!this.form) {\n\t\t\treturn html`<p>missing form</p>`\n\t\t}\n\t\tif (!renderer) {\n\t\t\treturn html`<p>unknown renderer</p>`\n\t\t}\n\n\t\tconst sectionWrapper =\n\t\t\tvariant[1] === 'tab'\n\t\t\t\t? (index: number, section: () => TemplateResult) => {\n\t\t\t\t\t\treturn html`<div class=\"tab ${index === this.selectedTab ? 'active' : ''}\">${index === this.selectedTab ? section() : nothing}</div>`\n\t\t\t\t }\n\t\t\t\t: undefined\n\t\tconsole.log('Render metadata', this.displayMetadata)\n\n\t\tif (!this.visible) {\n\t\t\treturn html``\n\t\t}\n\t\tconst translationTables = this.form?.translations\n\n\t\tconst render = renderer(\n\t\t\tthis.form,\n\t\t\t{ labelPosition: this.labelPosition, language: this.language },\n\t\t\tthis.formValuesContainer,\n\t\t\tthis.translationProvider ?? (translationTables ? defaultTranslationProvider(translationTables) : undefined),\n\t\t\tthis.ownersProvider,\n\t\t\tthis.optionsProvider,\n\t\t\tthis.actionListener,\n\t\t\tthis.languages,\n\t\t\tthis.readonly,\n\t\t\tthis.displayMetadata,\n\t\t\tsectionWrapper,\n\t\t)\n\n\t\treturn variant[1] === 'tab'\n\t\t\t? html`<div class=\"tab-container\">\n\t\t\t\t\t<div class=\"tab-bar\">\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t${this.form.sections.map(\n\t\t\t\t\t\t\t\t(s, idx) =>\n\t\t\t\t\t\t\t\t\thtml`<li\n\t\t\t\t\t\t\t\t\t\tclass=\"${this.selectedTab === idx ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t\t@click=\"${() => {\n\t\t\t\t\t\t\t\t\t\t\tthis.selectedTab = idx\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => this.shadowRoot?.querySelectorAll('.tab-bar li.active')[0].scrollIntoView({ inline: 'center' }), 100)\n\t\t\t\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${s.section}\n\t\t\t\t\t\t\t\t\t</li>`,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"tab-content\">${render}</div>\n\t\t\t </div>`\n\t\t\t: render\n\t}\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../tmp/components/icure-form/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Import the LitElement base class and html helper function\nimport { html, LitElement, nothing, TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\n\nimport { Renderer } from './renderer'\nimport { render as renderAsForm } from './renderer/form/form'\nimport { FieldMetadata, FieldValue, Form } from '../model'\nimport { FormValuesContainer, Suggestion } from '../../generic'\n\n// @ts-ignore\nimport { css } from 'lit';\nconst baseCss = css`@charset \"UTF-8\";\n.tab-container .tab-bar li {\n display: inline-block;\n padding: 8px 16px;\n cursor: pointer;\n color: #000000;\n font-size: 14px;\n font-weight: 500;\n}\n.tab-container .tab-bar li.active {\n background-color: #656565;\n color: white;\n}\n.tab-container .tab-content .tab {\n display: none;\n}\n.tab-container .tab-content .tab.active {\n display: block;\n}\n\n:host {\n --bg-color-1: #f44336;\n}\n\n.ProseMirror {\n position: relative;\n width: 100%;\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n padding: 6px 8px 2px 8px;\n line-height: 1.2;\n color: #274768;\n font-size: 14px;\n font-weight: 400;\n outline: none;\n}\n.ProseMirror p:last-child,\n.ProseMirror h1:last-child,\n.ProseMirror h2:last-child,\n.ProseMirror h3:last-child,\n.ProseMirror h4:last-child,\n.ProseMirror h5:last-child,\n.ProseMirror h6:last-child {\n margin-bottom: 2px;\n}\n.ProseMirror p {\n margin-bottom: 1em;\n}\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n.ProseMirror li {\n position: relative;\n}\n.ProseMirror ul,\n.ProseMirror ol {\n padding-left: 30px;\n}\n.ProseMirror blockquote {\n padding-left: 1em;\n border-left: 3px solid #eee;\n margin-left: 0;\n margin-right: 0;\n}\n\n.ProseMirror-hideselection {\n caret-color: transparent;\n}\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf;\n}\n\n/* Make sure li selections wrap around markers */\nli.ProseMirror-selectednode {\n outline: none;\n}\nli.ProseMirror-selectednode :after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n/* Add space around the hr to make clicking it easier */\n.ProseMirror-example-setup-style hr {\n padding: 2px 10px;\n border: none;\n margin: 1em 0;\n}\n.ProseMirror-example-setup-style hr:after {\n content: \"\";\n display: block;\n height: 1px;\n background: silver;\n line-height: 2px;\n}\n\n.ProseMirror-example-setup-style img {\n cursor: default;\n}\n\n.ProseMirror-prompt {\n background: white;\n padding: 5px 10px 5px 15px;\n border: 1px solid silver;\n position: fixed;\n border-radius: 3px;\n z-index: 11;\n box-shadow: -0.5px 2px 5px rgba(0, 0, 0, 0.2);\n}\n.ProseMirror-prompt h5 {\n margin: 0;\n font-weight: normal;\n font-size: 100%;\n color: #444;\n}\n.ProseMirror-prompt input[type=text],\n.ProseMirror-prompt textarea {\n background: #eee;\n border: none;\n outline: none;\n}\n.ProseMirror-prompt input[type=text] {\n padding: 0 4px;\n}\n\n.ProseMirror-prompt-close {\n position: absolute;\n left: 2px;\n top: 1px;\n color: #666;\n border: none;\n background: transparent;\n padding: 0;\n}\n.ProseMirror-prompt-close:after {\n content: \"✕\";\n font-size: 12px;\n}\n\n.ProseMirror-invalid {\n background: #ffc;\n border: 1px solid #cc7;\n border-radius: 4px;\n padding: 5px 10px;\n position: absolute;\n min-width: 10em;\n}\n\n.ProseMirror-prompt-buttons {\n margin-top: 5px;\n display: none;\n}\n\n#editor,\n.editor {\n color: rgb(101, 101, 101);\n background-clip: padding-box;\n border-radius: 4px;\n border: 2px solid rgba(0, 0, 0, 0.2);\n padding: 5px 0;\n display: flex;\n align-items: flex-end;\n}\n\n.icure-input {\n background: #edf2f7;\n border-radius: 8px;\n border: none;\n min-height: 28px;\n height: auto;\n display: flex;\n flex-flow: row nowrap;\n align-items: flex-start;\n justify-content: space-between;\n}\n\n#editor {\n background: transparent;\n border: none;\n padding: 0;\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n#editor.tokens-list .ProseMirror, #editor.styled-tokens-list .ProseMirror {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n}\n#editor.tokens-list .ProseMirror li, #editor.styled-tokens-list .ProseMirror li {\n display: flex;\n flex-direction: row;\n border-radius: 8px;\n padding: 2px 4px;\n margin-right: 2px;\n background-color: #dadada;\n border-color: rgba(42, 61, 108, 0.44);\n min-height: 20px;\n}\n#editor.tokens-list .ProseMirror li span, #editor.styled-tokens-list .ProseMirror li span {\n display: inline-block;\n min-height: 18px;\n}\n#editor.tokens-list .ProseMirror li span br, #editor.styled-tokens-list .ProseMirror li span br {\n display: none;\n}\n#editor.items-list .ProseMirror {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: flex-start;\n gap: 6px;\n}\n#editor.items-list .ProseMirror li {\n list-style-type: none;\n width: 100%;\n padding-bottom: 4px;\n border-bottom: 1px dotted rgba(128, 128, 128, 0.5098039216);\n}\n#editor.items-list .ProseMirror li:last-child {\n border-bottom: none;\n}\n\n#content {\n position: relative;\n padding: 0;\n}\n\n* {\n font-family: \"Roboto\", Helvetica, sans-serif;\n}\n\np {\n margin-top: 0;\n}\n\nh3 {\n color: #274768;\n margin-top: 0;\n}\n\n.icure-input-metadata-container {\n display: flex;\n}\n.icure-input-metadata-container .icure-metadata-container {\n display: flex;\n flex-grow: 1;\n padding: 0 4px;\n border: 1px solid #DDE3E7;\n border-left: none;\n border-radius: 0 6px 6px 0;\n outline: 0;\n box-sizing: border-box;\n}\n.icure-input-metadata-container .icure-metadata-container__validationError {\n border-color: red;\n}\n\n.extra {\n min-width: 20px;\n width: auto;\n height: 20px;\n transition: all 0.24s cubic-bezier(0.42, 0.01, 1, 0.62);\n}\n.extra:hover .info {\n display: none;\n}\n.extra:hover .buttons-container .menu-container .btn {\n animation: slideIn 0.24s ease-in forwards;\n pointer-events: none;\n display: unset !important;\n}\n.extra.forced .info, .extra.forced .extra .info.hidden {\n opacity: 0 !important;\n z-index: 0 !important;\n display: none;\n}\n.extra.forced .buttons-container .btn {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra.forced:hover .buttons-container .menu-container .btn {\n animation: none;\n pointer-events: all;\n}\n.extra--metadataButtonsBar {\n height: 100%;\n display: flex;\n align-items: center;\n padding: 0 4px;\n}\n.extra .info {\n color: #809ab4;\n font-size: 15px;\n width: 100%;\n height: auto;\n overflow: hidden;\n pointer-events: none;\n text-align: center;\n}\n.extra .info span {\n font-weight: 700;\n}\n.extra .info.hidden {\n display: none;\n}\n.extra .buttons-container {\n display: flex;\n height: 20px;\n width: auto;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-end;\n transition: all 0.24s cubic-bezier(0.14, 0.69, 0.87, 0.54);\n z-index: 1000;\n}\n.extra .buttons-container .btn {\n border: none;\n background: transparent;\n position: relative;\n top: 0;\n display: none;\n opacity: 0;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.extra .buttons-container .btn svg {\n width: 15px;\n height: 15px;\n}\n.extra .buttons-container .btn svg path {\n fill: #809ab4;\n}\n.extra .buttons-container .btn.forced {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra .buttons-container .btn.forced svg path {\n fill: crimson !important;\n}\n.extra .buttons-container .btn:focus, .extra .buttons-container .btn:focus-within {\n border: none;\n outline: none;\n}\n.extra .buttons-container .btn:hover svg path {\n fill: #274768;\n}\n.extra .buttons-container .menu-container .btn:hover::before {\n content: \"\";\n display: block;\n border-color: #274768 transparent transparent transparent;\n border-style: solid;\n border-width: 4px;\n position: absolute;\n top: -6px;\n}\n.extra .buttons-container .menu-container .btn:hover::after {\n content: attr(data-content);\n position: absolute;\n top: -21px;\n height: 16px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n background: #274768;\n color: white;\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n text-transform: capitalize;\n white-space: nowrap;\n padding: 0 12px;\n font-size: 12px;\n line-height: 0;\n}\n.extra .buttons-container .menu-container:last-child .btn {\n margin-right: 0;\n}\n\n@keyframes slideIn {\n 0% {\n top: 0;\n opacity: 0;\n pointer-events: none;\n }\n 100% {\n top: 0;\n opacity: 1;\n pointer-events: all;\n }\n}\n.menu-container {\n display: flex;\n align-items: center;\n height: fit-content;\n}\n.menu-container .item {\n height: 30px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #274768;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n}\n.menu-container .item.existing {\n background-color: #BFE8EA;\n}\n.menu-container .item.selected {\n color: white;\n background-color: #084B83;\n}\n.menu-container .item:hover {\n background: #DCE7F2;\n color: #274768;\n font-weight: 500;\n border-radius: 4px;\n}\n\n.value-date-menu {\n width: unset !important;\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n gap: 2px;\n position: absolute;\n top: 32px;\n right: -12px;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n border-radius: 8px;\n padding: 8px;\n width: 220px;\n min-height: 120px;\n max-height: 320px;\n overflow-y: scroll;\n}\n.menu .input-container {\n background: #edf2f7;\n border-radius: 4px;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n height: 32px;\n margin-bottom: 4px;\n padding: 0 4px;\n}\n.menu .input-container:hover {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2);\n}\n.menu .input-container:focus-within {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2), 0 0 0 1px rgb(40, 151, 255);\n}\n.menu .input-container input {\n background: transparent;\n border: none;\n flex-grow: 1;\n height: 100%;\n}\n.menu .input-container input:focus {\n background: transparent;\n border: none;\n outline: none;\n}\n\n.menu-trigger:focus .menu {\n display: flex;\n}\n\nspan {\n position: relative;\n z-index: 1;\n}\nspan.date {\n margin-right: 1px;\n}\nspan.time {\n margin-left: 1px;\n}\nspan.measure {\n display: inline-block;\n margin-right: 1px;\n}\nspan.unit {\n margin-left: 1px;\n display: inline-block;\n}\nspan[data-content]:hover::after {\n position: absolute;\n content: attr(data-content);\n background: #274768;\n color: #ffffff;\n font-size: 9px;\n line-height: 12px;\n top: -12px;\n left: 0px;\n padding: 0px 2px;\n}\nspan[data-content]::before {\n position: absolute;\n content: \"\";\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n opacity: 0.3;\n}\n\n.masked {\n display: none;\n}\n\n.companion {\n position: absolute;\n width: 15px;\n background-color: hsl(194, 100%, 50%);\n color: white;\n z-index: 20;\n padding: 0;\n text-align: center;\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 0 2px 2px 0;\n}\n.companion:hover {\n font-weight: 700;\n background: hsl(202, 100%, 50%);\n}\n\n*::selection {\n background-color: hsla(194, 100%, 50%, 0.2);\n}\n\n.suggestion-palette {\n position: absolute;\n z-index: 20;\n max-width: 380px;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 4px;\n border: none;\n border-radius: 8px;\n background: white;\n box-shadow: 0 1.1px 1.1px rgba(0, 0, 0, 0.022), 0 2.7px 2.7px rgba(0, 0, 0, 0.032), 0 5px 5px rgba(0, 0, 0, 0.04), 0 8.9px 8.9px rgba(0, 0, 0, 0.048), 0 16.7px 16.7px rgba(0, 0, 0, 0.058), 0 40px 40px rgba(0, 0, 0, 0.08);\n}\n.suggestion-palette ul {\n white-space: nowrap;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.suggestion-palette ul li:not(:first-child) svg.tab-icn,\n.suggestion-palette ul li:not(.focused) svg.return-icn, .suggestion-palette ul.focused li:first-child svg.tab-icn {\n height: 0;\n width: 0;\n transform: scale(0);\n opacity: 0;\n}\n.suggestion-palette ul li {\n padding: 0 8px;\n font-size: 11px;\n height: 20px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 4px;\n color: rgb(39, 71, 104);\n}\n.suggestion-palette ul li.focused {\n background-color: rgb(237, 242, 247);\n}\n.suggestion-palette ul li.focused svg.return-icn {\n animation: growIn 0.24s ease-in forwards;\n}\n.suggestion-palette ul li svg {\n height: 12px;\n width: 12px;\n border-radius: 4px;\n transform-origin: center center;\n}\n.suggestion-palette ul li svg path {\n fill: rgb(128, 154, 180);\n}\n\n@keyframes growIn {\n 0% {\n transform: scale(0.5);\n }\n 90% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n }\n}\nspan.code-count-1::after,\nspan.code-count-1::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n}\n\nspan.code-count-2::after,\nspan.code-count-2::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n /*background: repeating-linear-gradient(*/\n /*\t45deg,*/\n /*\tvar(--bg-code-color-1),*/\n /*\tvar(--bg-code-color-1) 10px,*/\n /*\tvar(--bg-code-color-2) 10px,*/\n /*\tvar(--bg-code-color-2) 20px*/\n /*);*/\n /* PAS STRIPES */\n background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);\n}\n\nspan.code-count-3::after,\nspan.code-count-3::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n background: repeating-linear-gradient(45deg, var(--bg-code-color-1), var(--bg-code-color-1) 10px, var(--bg-code-color-2) 10px, var(--bg-code-color-2) 20px);\n /* PAS STRIPES */\n /* background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);*/\n}\n\n.selected-option {\n padding: 2px;\n margin-right: 5px;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: auto;\n min-width: 100%;\n overflow-y: auto;\n padding: 2px;\n border-radius: 6px;\n}\n.options--subformView {\n top: 46px;\n min-width: unset;\n left: unset;\n right: 0;\n}\n\n.date-picker {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: 260px;\n overflow-y: auto;\n max-height: 280px;\n}\n\napp-date-picker {\n --app-primary: #084B83;\n --app-hover: #5b7da2;\n --app-selected-hover: #5b7da2;\n}\n\n.option {\n height: 28px;\n min-height: 28px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #545454;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n padding: 4px 8px;\n -webkit-user-select: none; /* Safari */\n -ms-user-select: none; /* IE 10 and IE 11 */\n user-select: none; /* Standard syntax */\n cursor: pointer;\n}\n.option:hover {\n color: #656565;\n background-color: #ededed;\n}\n\n.select-arrow {\n border: none;\n background: 0px 0px;\n position: relative;\n top: 0px;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n width: 10px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0px;\n}\n\n.hidden {\n display: none;\n}\n\n.container {\n position: relative;\n}\n\n.group {\n align-items: end;\n display: grid;\n}\n\n.subform {\n display: grid;\n position: relative;\n padding: 8px;\n border-radius: 6px;\n background-color: #e7f0fd;\n gap: 12px;\n}\n.subform__heading {\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: auto;\n}\n.subform__heading__title {\n padding: 0;\n margin: 0;\n}\n.subform__addBtn, .subform__removeBtn {\n cursor: pointer;\n background-color: #084B83;\n color: white;\n height: 32px;\n padding: 0 16px;\n border-radius: 6px;\n border: none;\n outline: none;\n}\n.subform__addBtn:hover, .subform__removeBtn:hover {\n background-color: #3D87C5;\n}\n.subform__removeBtn {\n justify-self: end;\n border: 1px solid #DDE3E7;\n background-color: #FCFCFD;\n color: #084B83;\n}\n.subform__removeBtn:hover {\n background-color: #F2F2F2;\n}\n.subform__child {\n display: grid;\n grid-template-rows: auto;\n gap: 8px;\n padding: 8px;\n border-radius: 6px;\n background: white;\n border: 1px solid #3D87C5;\n}\n.subform__child__title {\n padding: 12px !important;\n border-radius: 6px;\n margin: 0;\n background-color: #BFE8EA;\n}\n.subform__child .subform {\n background: unset;\n margin: 0;\n padding: 0;\n}\n\n.icure-form {\n background-color: rgba(0, 0, 0, 0);\n display: grid;\n gap: 16px 6px;\n grid-template-columns: repeat(24, 1fr);\n}\n.icure-form hr {\n display: block;\n margin-top: 20px;\n border-top: 1px solid rgba(8, 75, 131, 0.13);\n margin-bottom: 20px;\n}\n.icure-form h2 {\n font-size: add-two(12px, 0, 1.2);\n font-weight: 700;\n color: #084B83;\n padding: 2px;\n}\n.icure-form h3 {\n font-size: add-two(12px, 0, 1.1);\n font-weight: 500;\n color: #084B83;\n padding: 6px;\n}\n.icure-form .group.bordered {\n background: #f6f6f6;\n border-radius: 12px;\n}\n\n.icure-form-field {\n display: grid;\n align-items: flex-start;\n}\n\n.error {\n color: red;\n font-size: 12px;\n margin-top: 4px;\n}\n\n.icure-text-field .icure-label-extra, .icure-button-group .icure-label-extra {\n display: flex;\n width: 100%;\n gap: 12px;\n}\n.icure-text-field .icure-label, .icure-button-group .icure-label {\n z-index: 1;\n pointer-events: none;\n line-height: 1.4em;\n cursor: text;\n font-size: 12px;\n left: add-two(8px, 1px);\n color: #084B83;\n align-items: center;\n text-wrap: auto;\n min-height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-text-field .icure-label.float, .icure-button-group .icure-label.float {\n display: flex;\n overflow: hidden;\n}\n\n.icure-text-field {\n position: relative;\n width: 100%;\n}\n.icure-text-field > .icure-label {\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n}\n.icure-text-field > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-text-field > .icure-label.side {\n position: relative;\n}\n.icure-text-field > .icure-label.side.left {\n order: -1;\n margin-right: 1em;\n}\n.icure-text-field > .icure-label.side.right {\n order: 1;\n margin-left: 1em;\n}\n.icure-text-field .icure-input,\n.icure-text-field .input-container {\n padding: 8px;\n width: 100%;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n border-color: #DDE3E7;\n border-radius: 2px;\n box-sizing: border-box;\n outline: 0;\n font: inherit;\n font-size: 14px;\n line-height: 1.4em;\n display: flex;\n align-items: center;\n vertical-align: middle;\n position: relative;\n -webkit-appearance: none;\n background-color: #ffffff;\n color: #000000;\n}\n.icure-text-field .icure-input__validationError,\n.icure-text-field .input-container__validationError {\n border-color: red;\n}\n.icure-text-field .icure-input__withMetadata,\n.icure-text-field .input-container__withMetadata {\n border-radius: 6px 0 0 6px;\n}\n.icure-text-field .icure-input:focus, .icure-text-field .icure-input:focus-within,\n.icure-text-field .input-container:focus,\n.icure-text-field .input-container:focus-within {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input:hover,\n.icure-text-field .input-container:hover {\n border-color: rgba(0, 0, 0, 0.15);\n box-shadow: none;\n}\n.icure-text-field .icure-input:hover:focus, .icure-text-field .icure-input:hover:focus-within,\n.icure-text-field .input-container:hover:focus,\n.icure-text-field .input-container:hover:focus-within {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input .ProseMirror,\n.icure-text-field .input-container .ProseMirror {\n padding: 0;\n font-size: 14px;\n line-height: 1.4em;\n color: #000000;\n}\n.icure-text-field .icure-input .ProseMirror .date,\n.icure-text-field .input-container .ProseMirror .date {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror .time,\n.icure-text-field .input-container .ProseMirror .time {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror:focus .focused,\n.icure-text-field .input-container .ProseMirror:focus .focused {\n background-color: rgba(0, 0, 0, 0.05);\n border-radius: 3px;\n border-color: rgba(0, 0, 0, 0.1);\n}\n.icure-text-field .icure-input > svg,\n.icure-text-field .input-container > svg {\n opacity: 0.5;\n}\n.icure-text-field .icure-input > svg path,\n.icure-text-field .input-container > svg path {\n fill: #656565;\n}\n.icure-text-field .icure-input .extra,\n.icure-text-field .input-container .extra {\n height: 20px;\n}\n.icure-text-field .icure-input .extra > .info,\n.icure-text-field .input-container .extra > .info {\n color: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path,\n.icure-text-field .input-container .extra .btn svg path {\n fill: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path:hover,\n.icure-text-field .input-container .extra .btn svg path:hover {\n fill: #656565;\n opacity: 1;\n}\n\ninput[type=radio] {\n margin-top: -1px;\n vertical-align: middle;\n}\n\n.icure-checkbox:checked {\n accent-color: #06a070;\n}\n\n.icure-button {\n display: flex;\n height: 32px;\n padding: 0 16px;\n background-color: #084B83;\n color: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: normal;\n}\n.icure-button:hover {\n background-color: #3D87C5;\n}\n\n.icure-button-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.icure-button-group > div {\n display: grid;\n}\n.icure-button-group > div > div {\n display: flex;\n align-items: center;\n}\n.icure-button-group > div > div > .icure-button-group-label {\n z-index: 1;\n line-height: 1.4em;\n cursor: text;\n font-size: 12px;\n top: add-three(1.4em, 1px, 0);\n left: add-two(8px, 1px);\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n color: #084B83;\n display: flex;\n align-items: center;\n height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-button-group > div > div > .icure-button-group-label > span {\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n padding-right: 8px;\n}\n.icure-button-group > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-button-group > .icure-label {\n transform: translate(0, 0) scale(1);\n}\n.icure-button-group > .icure-label.above, .icure-button-group.has-content > .icure-label, .icure-button-group:focus > .icure-label, .icure-button-group:focus-within > .icure-label {\n font-weight: 500;\n height: 1.4em;\n}` \nimport { defaultTranslationProvider, languages } from '../../utils/languages'\nimport { Task } from '@lit/task'\n\n/**\n * Form element\n */\nexport class IcureForm extends LitElement {\n\t@property() form?: Form\n\t@property() renderer = 'form'\n\t@property() visible = true\n\t@property() readonly = false\n\t@property() displayMetadata = false\n\t@property() labelPosition?: 'top' | 'left' | 'right' | 'bottom' | 'float' | undefined = undefined\n\t@property() language?: string\n\t@property() languages?: { [iso: string]: string } = languages\n\t@property() formValuesContainer?: FormValuesContainer<FieldValue, FieldMetadata> = undefined\n\t@property() translationProvider?: (language: string, text: string) => string\n\t@property() ownersProvider?: (terms: string[], ids?: string[], specialties?: string[]) => Promise<Suggestion[]>\n\t@property() optionsProvider?: (language: string, codifications: string[], terms?: string[]) => Promise<Suggestion[]>\n\t@property() actionListener?: (event: string, payload: unknown) => void = () => undefined\n\n\t@state() selectedTab = 0\n\n\tconstructor() {\n\t\tsuper()\n\t}\n\n\tstatic get styles() {\n\t\treturn [baseCss]\n\t}\n\n\t_asyncTask = new Task(this, {\n\t\ttask: async ([form, formValuesContainer, language]) => {\n\t\t\tif (!form) {\n\t\t\t\treturn html`<p>missing form</p>`\n\t\t\t}\n\n\t\t\tconst variant = this.renderer?.split(':')\n\t\t\tconst renderer: Renderer | undefined = variant[0] === 'form' ? renderAsForm : undefined\n\n\t\t\tif (!renderer) {\n\t\t\t\treturn html`<p>unknown renderer</p>`\n\t\t\t}\n\t\t\tconst translationTables = this.form?.translations\n\n\t\t\tconst sectionWrapper =\n\t\t\t\tvariant[1] === 'tab'\n\t\t\t\t\t? (index: number, section: () => TemplateResult) => {\n\t\t\t\t\t\t\treturn html`<div class=\"tab ${index === this.selectedTab ? 'active' : ''}\">${index === this.selectedTab ? section() : nothing}</div>`\n\t\t\t\t\t }\n\t\t\t\t\t: undefined\n\n\t\t\treturn renderer(\n\t\t\t\tform,\n\t\t\t\t{ labelPosition: this.labelPosition, language },\n\t\t\t\tformValuesContainer,\n\t\t\t\tthis.translationProvider ?? (translationTables ? defaultTranslationProvider(translationTables) : undefined),\n\t\t\t\tthis.ownersProvider,\n\t\t\t\tthis.optionsProvider,\n\t\t\t\tthis.actionListener,\n\t\t\t\tthis.languages,\n\t\t\t\tthis.readonly,\n\t\t\t\tthis.displayMetadata,\n\t\t\t\tsectionWrapper,\n\t\t\t)\n\t\t},\n\t\targs: () => [this.form, this.formValuesContainer, this.language, this.selectedTab],\n\t})\n\n\trender() {\n\t\tconsole.log('Render metadata', this.displayMetadata)\n\n\t\tif (!this.visible) {\n\t\t\treturn nothing\n\t\t}\n\n\t\tconst variant = this.renderer?.split(':')\n\n\t\tconst render = this._asyncTask.render({\n\t\t\tpending: () => html`<p>Loading...</p>`,\n\t\t\tcomplete: (render: TemplateResult) => render,\n\t\t\terror: () => html`<p>Error</p>`,\n\t\t})\n\n\t\treturn variant[1] === 'tab'\n\t\t\t? html`<div class=\"tab-container\">\n\t\t\t\t\t<div class=\"tab-bar\">\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t${(this.form?.sections ?? []).map(\n\t\t\t\t\t\t\t\t(s, idx) =>\n\t\t\t\t\t\t\t\t\thtml`<li\n\t\t\t\t\t\t\t\t\t\tclass=\"${this.selectedTab === idx ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t\t@click=\"${() => {\n\t\t\t\t\t\t\t\t\t\t\tthis.selectedTab = idx\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => this.shadowRoot?.querySelectorAll('.tab-bar li.active')[0].scrollIntoView({ inline: 'center' }), 100)\n\t\t\t\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${s.section}\n\t\t\t\t\t\t\t\t\t</li>`,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"tab-content\">${render}</div>\n\t\t\t </div>`\n\t\t\t: render\n\t}\n}\n"]}