@luftborn/custom-elements 2.14.0 → 2.15.1

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 (73) hide show
  1. package/demo/index.html +269 -259
  2. package/demo/index.js +92 -43
  3. package/demo/index.min.js +91 -42
  4. package/demo/index.min.js.map +1 -1
  5. package/dist/elements/Address/AddressElement.js +3 -2
  6. package/dist/elements/Address/AddressElement.js.map +1 -1
  7. package/dist/elements/BankField/BankFieldElement.js +3 -2
  8. package/dist/elements/BankField/BankFieldElement.js.map +1 -1
  9. package/dist/elements/CPRElement/CPRElement.js +3 -2
  10. package/dist/elements/CPRElement/CPRElement.js.map +1 -1
  11. package/dist/elements/CVRElement/CVRElement.js +3 -2
  12. package/dist/elements/CVRElement/CVRElement.js.map +1 -1
  13. package/dist/elements/CheckBoxElement/CheckBoxElement.js +4 -2
  14. package/dist/elements/CheckBoxElement/CheckBoxElement.js.map +1 -1
  15. package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.js +3 -2
  16. package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.js.map +1 -1
  17. package/dist/elements/CustomRegularExpression/CustomRegularExpressionElement.js +3 -2
  18. package/dist/elements/CustomRegularExpression/CustomRegularExpressionElement.js.map +1 -1
  19. package/dist/elements/DateField/DateFieldElement.js +3 -2
  20. package/dist/elements/DateField/DateFieldElement.js.map +1 -1
  21. package/dist/elements/DropDownList/DropDownListElement.js +3 -2
  22. package/dist/elements/DropDownList/DropDownListElement.js.map +1 -1
  23. package/dist/elements/EmailField/EmailFieldElement.js +3 -2
  24. package/dist/elements/EmailField/EmailFieldElement.js.map +1 -1
  25. package/dist/elements/FileField/FileFieldElement.js +3 -2
  26. package/dist/elements/FileField/FileFieldElement.js.map +1 -1
  27. package/dist/elements/IdentificationElement/IdentificationElement.js +3 -2
  28. package/dist/elements/IdentificationElement/IdentificationElement.js.map +1 -1
  29. package/dist/elements/InternationaPhoneNumber/InternationaPhoneNumberElement.js +3 -2
  30. package/dist/elements/InternationaPhoneNumber/InternationaPhoneNumberElement.js.map +1 -1
  31. package/dist/elements/NumericField/NumericFieldElement.js +3 -2
  32. package/dist/elements/NumericField/NumericFieldElement.js.map +1 -1
  33. package/dist/elements/RadioButtonGroup/RadioButtonGroupElement.js +4 -2
  34. package/dist/elements/RadioButtonGroup/RadioButtonGroupElement.js.map +1 -1
  35. package/dist/elements/ResidentIdentification/ResidentIdentificationElement.js +3 -2
  36. package/dist/elements/ResidentIdentification/ResidentIdentificationElement.js.map +1 -1
  37. package/dist/elements/SECompanyRegistrationElement/SECompanyRegistrationElement.js +3 -2
  38. package/dist/elements/SECompanyRegistrationElement/SECompanyRegistrationElement.js.map +1 -1
  39. package/dist/elements/SEPersonalNumberElement/SEPersonalNumberElement.js +3 -2
  40. package/dist/elements/SEPersonalNumberElement/SEPersonalNumberElement.js.map +1 -1
  41. package/dist/elements/TextAreaElement/TextAreaElement.js +3 -2
  42. package/dist/elements/TextAreaElement/TextAreaElement.js.map +1 -1
  43. package/dist/elements/TextField/TextFieldElement.js +3 -2
  44. package/dist/elements/TextField/TextFieldElement.js.map +1 -1
  45. package/dist/elements/TypeAhead/TypeAheadElement.js +3 -2
  46. package/dist/elements/TypeAhead/TypeAheadElement.js.map +1 -1
  47. package/dist/framework/CustomInputElement.d.ts +2 -0
  48. package/dist/framework/CustomInputElement.js +26 -0
  49. package/dist/framework/CustomInputElement.js.map +1 -1
  50. package/package.json +1 -1
  51. package/src/elements/Address/AddressElement.ts +37 -18
  52. package/src/elements/BankField/BankFieldElement.ts +34 -16
  53. package/src/elements/CPRElement/CPRElement.ts +28 -10
  54. package/src/elements/CVRElement/CVRElement.ts +28 -10
  55. package/src/elements/CheckBoxElement/CheckBoxElement.ts +22 -3
  56. package/src/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.ts +25 -7
  57. package/src/elements/CustomRegularExpression/CustomRegularExpressionElement.ts +28 -10
  58. package/src/elements/DateField/DateFieldElement.ts +28 -10
  59. package/src/elements/DropDownList/DropDownListElement.ts +42 -24
  60. package/src/elements/EmailField/EmailFieldElement.ts +28 -10
  61. package/src/elements/FileField/FileFieldElement.ts +28 -10
  62. package/src/elements/IdentificationElement/IdentificationElement.ts +32 -14
  63. package/src/elements/InternationaPhoneNumber/InternationaPhoneNumberElement.ts +36 -19
  64. package/src/elements/NumericField/NumericFieldElement.ts +28 -10
  65. package/src/elements/RadioButtonGroup/RadioButtonGroupElement.ts +46 -27
  66. package/src/elements/ResidentIdentification/ResidentIdentificationElement.ts +33 -14
  67. package/src/elements/SECompanyRegistrationElement/SECompanyRegistrationElement.ts +24 -5
  68. package/src/elements/SEPersonalNumberElement/SEPersonalNumberElement.ts +24 -5
  69. package/src/elements/TextAreaElement/TextAreaElement.ts +28 -10
  70. package/src/elements/TextField/TextFieldElement.ts +30 -11
  71. package/src/elements/TypeAhead/TypeAheadElement.ts +27 -9
  72. package/src/framework/CustomInputElement.ts +29 -0
  73. package/src/elements/Address/html.html +0 -0
@@ -5,25 +5,42 @@ import { CustomElementEventArgs } from '../../framework/CustomEvents';
5
5
  @CustomElement({
6
6
  selector: 'numeric-element',
7
7
  template: `
8
+ <div class="field-label">
9
+ </div>
10
+ <div class="field-input">
8
11
  <div class="wrapper">
9
12
  <input type="number" id="numeric-field" step="any" />
10
- </div>`,
13
+ </div>
14
+ </div>`,
11
15
  style: `
12
- :host{
16
+ :host{
13
17
  width:100%;
14
- }
15
- .wrapper{
18
+ }
19
+ .wrapper{
16
20
  display:flex;
17
- }
18
- input{
21
+ }
22
+ input{
19
23
  box-sizing: border-box;
20
24
  width: 100% !important;
21
- border: none;
22
- background-color: #f1f4ff;
25
+ border: .1rem solid #27282D;
26
+ border-radius: .25rem;
23
27
  margin: 0.125rem;
24
28
  resize: none;
25
- }
26
- `,
29
+ }
30
+ input::placeholder {
31
+ color: rgb(117, 117, 117);
32
+ }
33
+ .field-label {
34
+ color: #27282d;
35
+ font-size: .75rem;
36
+ font-weight: 600;
37
+ word-wrap: break-word;
38
+ }
39
+ .field-input {
40
+ font-size: 0.813rem;
41
+ min-height: 1.438rem;
42
+ }
43
+ `,
27
44
  useShadow: true,
28
45
  })
29
46
  export class NumericFieldElement extends CustomInputElement {
@@ -50,6 +67,7 @@ export class NumericFieldElement extends CustomInputElement {
50
67
 
51
68
  connectedCallback(): void {
52
69
  super.connectedCallback();
70
+ super.addLabel(this.number);
53
71
  }
54
72
 
55
73
  initChildInputs() {
@@ -6,35 +6,52 @@ import { StringUtil } from '../../framework/Utilities/StringUtil';
6
6
  @CustomElement({
7
7
  selector: 'radio-group-element',
8
8
  template: `
9
+ <div class="field-label">
10
+ </div>
11
+ <div class="field-input">
9
12
  <div class="wrapper">
10
- </div>`,
13
+ </div>
14
+ </div>`,
11
15
  style: `
12
- :host{
13
- width:100%;
14
- }
15
- .radio-button {
16
- width: auto;
17
- margin: auto 0.188rem;
18
- color: rgba(72, 72, 72, 0.75);
19
- font-size: 0.813rem;
20
- margin-top: 0.25rem;
21
- }
22
- .radio-button:first-of-type {
23
- margin-top: 0;
24
- }
25
- input{
26
- box-sizing: border-box;
27
- width: auto !important;
28
- border: none;
29
- background-color: #f1f4ff;
30
- margin: 0.2rem;
31
- resize: none;
32
- }
33
- fieldset {
34
- border: none;
35
- padding: 0;
36
- }
37
- `,
16
+ :host{
17
+ width:100%;
18
+ }
19
+ .radio-button {
20
+ width: auto;
21
+ margin: auto 0.188rem;
22
+ color: rgba(72, 72, 72, 0.75);
23
+ font-size: 0.813rem;
24
+ margin-top: 0.25rem;
25
+ }
26
+ .radio-button:first-of-type {
27
+ margin-top: 0;
28
+ }
29
+ input{
30
+ box-sizing: border-box;
31
+ width: auto !important;
32
+ border: .1rem solid #27282D;
33
+ border-radius: .25rem;
34
+ margin: 0.2rem;
35
+ resize: none;
36
+ }
37
+ input::placeholder {
38
+ color: rgb(117, 117, 117);
39
+ }
40
+ fieldset {
41
+ border: none;
42
+ padding: 0;
43
+ }
44
+ .field-label {
45
+ color: #27282d;
46
+ font-size: .75rem;
47
+ font-weight: 600;
48
+ word-wrap: break-word;
49
+ }
50
+ .field-input {
51
+ font-size: 0.813rem;
52
+ min-height: 1.438rem;
53
+ }
54
+ `,
38
55
  useShadow: true,
39
56
  })
40
57
  export class RadioButtonGroupElement extends CustomInputElement {
@@ -70,6 +87,8 @@ export class RadioButtonGroupElement extends CustomInputElement {
70
87
 
71
88
  connectedCallback(): void {
72
89
  super.connectedCallback();
90
+ const firstRadioButton = super.getChildElement('input[type="radio"]') as HTMLInputElement;
91
+ super.addLabel(firstRadioButton);
73
92
  }
74
93
 
75
94
  initChildInputs() {
@@ -8,25 +8,43 @@ import ResidentIdentificationValidator from '../../framework/Validation/Validato
8
8
  @CustomElement({
9
9
  selector: 'resident-identification-element',
10
10
  template: `
11
+ <div class="field-label">
12
+ </div>
13
+ <div class="field-input">
11
14
  <div class="field-wrapper">
12
15
  <input class='field-part' id='company' type="text" placeholder='Company'/>
13
16
  <input class='field-part' id='property' type="text" placeholder='Property'/>
14
17
  <input class='field-part' id='tenancy' type="text" placeholder='Tenancy'/>
15
18
  <input class='field-part' id='tenant' type="text" placeholder='Tenant'/>
16
- </div>`,
17
- style: `.field-wrapper{
18
- display: flex;
19
- flex-wrap: nowrap;
20
- }
21
- input.field-part{
22
- box-sizing: border-box;
23
- border: none;
24
- background-color: #f1f4ff;
25
- margin: 0.125rem;
26
- resize: none;
27
- width:33% !important;
28
- }
29
- `,
19
+ </div>
20
+ </div>`,
21
+ style: `
22
+ .field-wrapper{
23
+ display: flex;
24
+ flex-wrap: nowrap;
25
+ }
26
+ input.field-part{
27
+ box-sizing: border-box;
28
+ border: .1rem solid #27282D;
29
+ border-radius: .25rem;
30
+ margin: 0.125rem;
31
+ resize: none;
32
+ width:33% !important;
33
+ }
34
+ input.field-part::placeholder {
35
+ color: rgb(117, 117, 117);
36
+ }
37
+ .field-label {
38
+ color: #27282d;
39
+ font-size: .75rem;
40
+ font-weight: 600;
41
+ word-wrap: break-word;
42
+ }
43
+ .field-input {
44
+ font-size: 0.813rem;
45
+ min-height: 1.438rem;
46
+ }
47
+ `,
30
48
  templatePath: './html.html',
31
49
  useShadow: true,
32
50
  })
@@ -64,6 +82,7 @@ export class ResidentIdentificationElement extends CustomInputElement {
64
82
 
65
83
  connectedCallback(): void {
66
84
  super.connectedCallback();
85
+ super.addLabel(this.company);
67
86
  }
68
87
 
69
88
  componentDidMount() {
@@ -6,8 +6,12 @@ import SECompanyRegistrationValidator from '../../framework/Validation/Validator
6
6
  @CustomElement({
7
7
  selector: 'se-company-registration-element',
8
8
  template: `
9
- <div class="wrapper">
10
- <input type="text" id='se-company-registration-field' placeholder='SSSSSSSSSS'/>
9
+ <div class="field-label">
10
+ </div>
11
+ <div class="field-input">
12
+ <div class="wrapper">
13
+ <input type="text" id='se-company-registration-field' placeholder='SSSSSSSSSS'/>
14
+ </div>
11
15
  </div>`,
12
16
  style: `
13
17
  :host{
@@ -19,11 +23,25 @@ import SECompanyRegistrationValidator from '../../framework/Validation/Validator
19
23
  input{
20
24
  box-sizing: border-box;
21
25
  width: 100% !important;
22
- border: none;
23
- background-color: #f1f4ff;
26
+ border: .1rem solid #27282D;
27
+ border-radius: .25rem;
24
28
  margin: 0.125rem;
25
29
  resize: none;
26
- }`,
30
+ }
31
+ input::placeholder {
32
+ color: rgb(117, 117, 117);
33
+ }
34
+ .field-label {
35
+ color: #27282d;
36
+ font-size: .75rem;
37
+ font-weight: 600;
38
+ word-wrap: break-word;
39
+ }
40
+ .field-input {
41
+ font-size: 0.813rem;
42
+ min-height: 1.438rem;
43
+ }
44
+ `,
27
45
  useShadow: true,
28
46
  })
29
47
  export class SECompanyRegistrationElement extends CustomInputElement {
@@ -48,6 +66,7 @@ export class SECompanyRegistrationElement extends CustomInputElement {
48
66
 
49
67
  connectedCallback(): void {
50
68
  super.connectedCallback();
69
+ super.addLabel(this.text);
51
70
  }
52
71
 
53
72
  initChildInputs() {
@@ -6,8 +6,12 @@ import SEPersonalNumberValidator from '../../framework/Validation/Validators/SEP
6
6
  @CustomElement({
7
7
  selector: 'se-personal-number-element',
8
8
  template: `
9
- <div class="wrapper">
10
- <input type="text" id='se-personal-number-field' placeholder='(YY)YYMMDD-SSSS'/>
9
+ <div class="field-label">
10
+ </div>
11
+ <div class="field-input">
12
+ <div class="wrapper">
13
+ <input type="text" id='se-personal-number-field' placeholder='(YY)YYMMDD-SSSS'/>
14
+ </div>
11
15
  </div>`,
12
16
  style: `
13
17
  :host{
@@ -19,11 +23,25 @@ import SEPersonalNumberValidator from '../../framework/Validation/Validators/SEP
19
23
  input{
20
24
  box-sizing: border-box;
21
25
  width: 100% !important;
22
- border: none;
23
- background-color: #f1f4ff;
26
+ border: .1rem solid #27282D;
27
+ border-radius: .25rem;
24
28
  margin: 0.125rem;
25
29
  resize: none;
26
- }`,
30
+ }
31
+ input::placeholder {
32
+ color: rgb(117, 117, 117);
33
+ }
34
+ .field-label {
35
+ color: #27282d;
36
+ font-size: .75rem;
37
+ font-weight: 600;
38
+ word-wrap: break-word;
39
+ }
40
+ .field-input {
41
+ font-size: 0.813rem;
42
+ min-height: 1.438rem;
43
+ }
44
+ `,
27
45
  useShadow: true,
28
46
  })
29
47
  export class SEPersonalNumberElement extends CustomInputElement {
@@ -48,6 +66,7 @@ export class SEPersonalNumberElement extends CustomInputElement {
48
66
 
49
67
  connectedCallback(): void {
50
68
  super.connectedCallback();
69
+ super.addLabel(this.text);
51
70
  }
52
71
 
53
72
  initChildInputs() {
@@ -5,25 +5,42 @@ import { CustomElementEventArgs } from '../../framework/CustomEvents';
5
5
  @CustomElement({
6
6
  selector: 'text-area-element',
7
7
  template: `
8
+ <div class="field-label">
9
+ </div>
10
+ <div class="field-input">
8
11
  <div class="wrapper">
9
12
  <textarea rows=5 id='text-area-field'></textarea>
10
- </div>`,
13
+ </div>
14
+ </div>`,
11
15
  style: `
12
- :host{
16
+ :host{
13
17
  width:100%;
14
- }
15
- .wrapper{
18
+ }
19
+ .wrapper{
16
20
  display:flex;
17
- }
18
- textarea{
21
+ }
22
+ textarea{
19
23
  box-sizing: border-box;
20
24
  width: 100% !important;
21
- border: none;
22
- background-color: #f1f4ff;
25
+ border: .1rem solid #27282D;
26
+ border-radius: .25rem;
23
27
  margin: 0.125rem;
24
28
  resize: none;
25
- }
26
- `,
29
+ }
30
+ textarea::placeholder {
31
+ color: rgb(117, 117, 117);
32
+ }
33
+ .field-label {
34
+ color: #27282d;
35
+ font-size: .75rem;
36
+ font-weight: 600;
37
+ word-wrap: break-word;
38
+ }
39
+ .field-input {
40
+ font-size: 0.813rem;
41
+ min-height: 1.438rem;
42
+ }
43
+ `,
27
44
  useShadow: true,
28
45
  })
29
46
  export class TextAreaElement extends CustomInputElement {
@@ -47,6 +64,7 @@ export class TextAreaElement extends CustomInputElement {
47
64
 
48
65
  connectedCallback(): void {
49
66
  super.connectedCallback();
67
+ super.addLabel(this.text);
50
68
  }
51
69
 
52
70
  initChildInputs() {
@@ -5,25 +5,43 @@ import { CustomElementEventArgs } from '../../framework/CustomEvents';
5
5
  @CustomElement({
6
6
  selector: 'text-element',
7
7
  template: `
8
+ <div class="field-label">
9
+ </div>
10
+ <div class="field-input">
8
11
  <div class="wrapper">
9
12
  <input type="text" id='text-field' />
10
- </div>`,
13
+ </div>
14
+ </div>
15
+ `,
11
16
  style: `
12
- :host{
17
+ :host{
13
18
  width:100%;
14
- }
15
- .wrapper{
19
+ }
20
+ .wrapper{
16
21
  display:flex;
17
- }
18
- input{
22
+ }
23
+ input{
19
24
  box-sizing: border-box;
20
25
  width: 100% !important;
21
- border: none;
22
- background-color: #f1f4ff;
26
+ border: .1rem solid #27282D;
27
+ border-radius: .25rem;
23
28
  margin: 0.125rem;
24
29
  resize: none;
25
- }
26
- `,
30
+ }
31
+ input::placeholder {
32
+ color: rgb(117, 117, 117);
33
+ }
34
+ .field-label {
35
+ color: #27282d;
36
+ font-size: .75rem;
37
+ font-weight: 600;
38
+ word-wrap: break-word;
39
+ }
40
+ .field-input {
41
+ font-size: 0.813rem;
42
+ min-height: 1.438rem;
43
+ }
44
+ `,
27
45
  useShadow: true,
28
46
  })
29
47
  export class TextFieldElement extends CustomInputElement {
@@ -47,7 +65,8 @@ export class TextFieldElement extends CustomInputElement {
47
65
 
48
66
  connectedCallback(): void {
49
67
  super.connectedCallback();
50
- }
68
+ super.addLabel(this.text);
69
+ }
51
70
 
52
71
  initChildInputs() {
53
72
  this.text = super.getChildInput('#text-field');
@@ -7,12 +7,16 @@ import DomUtility from '../../framework/Utilities/DomUtility';
7
7
  @CustomElement({
8
8
  selector: 'type-ahead-element',
9
9
  template: `
10
- <div class="wrapper" role="combobox" aria-expanded="false" aria-owns="options-list" aria-haspopup="listbox">
11
- <input type="text" id="text-input" aria-autocomplete="list" aria-controls="options-list" aria-activedescendant="" role="textbox">
12
- <div id="description" aria-live="polite"></div>
13
- <div id="options-list" role="listbox" class="options-list" hidden>
14
- <!-- Options will be dynamically added here -->
15
- </div>
10
+ <div class="field-label">
11
+ </div>
12
+ <div class="field-input">
13
+ <div class="wrapper" role="combobox" aria-expanded="false" aria-owns="options-list" aria-haspopup="listbox">
14
+ <input type="text" class="text-input" id="text-input" aria-autocomplete="list" aria-controls="options-list" aria-activedescendant="" role="textbox">
15
+ <div id="description" aria-live="polite"></div>
16
+ <div id="options-list" role="listbox" class="options-list" hidden>
17
+ <!-- Options will be dynamically added here -->
18
+ </div>
19
+ </div>
16
20
  </div>`,
17
21
  style: `
18
22
  :host {
@@ -25,14 +29,17 @@ import DomUtility from '../../framework/Utilities/DomUtility';
25
29
  justify-content: center;
26
30
  align-items: center;
27
31
  }
28
- #text-input {
32
+ .text-input {
29
33
  box-sizing: border-box;
30
34
  width: 100% !important;
31
- border: none;
32
- background-color: #f1f4ff;
35
+ border: .1rem solid #27282D;
36
+ border-radius: .25rem;
33
37
  margin: 0.125rem;
34
38
  resize: none;
35
39
  }
40
+ .text-input::placeholder {
41
+ color: rgb(117, 117, 117);
42
+ }
36
43
  .wrapper #description {
37
44
  width: 100%;
38
45
  padding: 0 0.125rem;
@@ -69,6 +76,16 @@ import DomUtility from '../../framework/Utilities/DomUtility';
69
76
  .options-list-item-description {
70
77
  font-size: 0.625rem;
71
78
  }
79
+ .field-label {
80
+ color: #27282d;
81
+ font-size: .75rem;
82
+ font-weight: 600;
83
+ word-wrap: break-word;
84
+ }
85
+ .field-input {
86
+ font-size: 0.813rem;
87
+ min-height: 1.438rem;
88
+ }
72
89
  `,
73
90
  useShadow: true,
74
91
  })
@@ -122,6 +139,7 @@ export class TypeAheadElement extends CustomInputElement {
122
139
 
123
140
  connectedCallback(): void {
124
141
  super.connectedCallback();
142
+ super.addLabel(this.textInputElement);
125
143
  }
126
144
 
127
145
  initChildInputs() {
@@ -36,6 +36,8 @@ export abstract class CustomInputElement extends HTMLElement {
36
36
  public dateFormat: string;
37
37
  public initialValue: any;
38
38
 
39
+ public hideLabel: boolean = false;
40
+
39
41
  constructor() {
40
42
  super();
41
43
  }
@@ -136,6 +138,7 @@ export abstract class CustomInputElement extends HTMLElement {
136
138
  private setAttributes(): void {
137
139
  this.setAttribute("custom-input", "");
138
140
  this.setAttribute("name", this.name);
141
+ this.hideLabel = this.hasAttribute('hide-label') || this.hasAttribute('hideLabel');
139
142
  }
140
143
 
141
144
  private bindDependencies(): void {
@@ -277,6 +280,32 @@ export abstract class CustomInputElement extends HTMLElement {
277
280
  return element.querySelectorAll(selector) as HTMLElement[];
278
281
  }
279
282
 
283
+ protected addLabel(inputField: HTMLInputElement | HTMLSelectElement): void {
284
+ if (this.hideLabel) {
285
+ const fieldLabel = this.shadowRoot.querySelector('.field-label');
286
+ if (fieldLabel) {
287
+ fieldLabel.remove();
288
+ }
289
+ return;
290
+ }
291
+
292
+ if (this.label) {
293
+ const randomId = Math.random().toString(36).substring(2, 15);
294
+ inputField.id = `text-field-${randomId}`;
295
+ const newLabel = document.createElement('label');
296
+ newLabel.setAttribute('for', inputField.id);
297
+ newLabel.classList.add('field-label');
298
+ newLabel.textContent = `${this.label}: `;
299
+ const fieldLabel = this.shadowRoot.querySelector('.field-label');
300
+ if (fieldLabel) {
301
+ fieldLabel.appendChild(newLabel);
302
+ }
303
+ if (this.required) {
304
+ newLabel.innerHTML += '<span style="color: #e00040">*</span>';
305
+ }
306
+ }
307
+ }
308
+
280
309
  public RegisterDependentOn(name: string, initialValue: boolean = false) {
281
310
  this.dependentOnList[name] = initialValue;
282
311
  this.setVisibility();
File without changes