@limetech/lime-elements 36.3.0-next.3 → 36.3.0-next.30

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 (172) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/lime-elements.cjs.js +1 -1
  3. package/dist/cjs/limel-badge.cjs.entry.js +4 -6
  4. package/dist/cjs/limel-button-group.cjs.entry.js +8 -2
  5. package/dist/cjs/limel-button.cjs.entry.js +1 -2
  6. package/dist/cjs/limel-chip-set.cjs.entry.js +1 -1
  7. package/dist/cjs/limel-collapsible-section.cjs.entry.js +1 -1
  8. package/dist/cjs/limel-date-picker.cjs.entry.js +47 -7
  9. package/dist/cjs/limel-dialog.cjs.entry.js +1 -1
  10. package/dist/cjs/limel-dock-button.cjs.entry.js +7 -2
  11. package/dist/cjs/limel-dock.cjs.entry.js +1 -1
  12. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +96 -109
  13. package/dist/cjs/limel-form.cjs.entry.js +79 -1
  14. package/dist/cjs/limel-header.cjs.entry.js +2 -2
  15. package/dist/cjs/limel-info-tile.cjs.entry.js +4 -1
  16. package/dist/cjs/limel-input-field.cjs.entry.js +2 -2
  17. package/dist/cjs/limel-menu-list.cjs.entry.js +7 -1
  18. package/dist/cjs/limel-menu.cjs.entry.js +10 -2
  19. package/dist/cjs/limel-portal.cjs.entry.js +3 -4
  20. package/dist/cjs/limel-select.cjs.entry.js +1 -1
  21. package/dist/cjs/limel-slider.cjs.entry.js +1 -1
  22. package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
  23. package/dist/cjs/limel-spinner.cjs.entry.js +1 -1
  24. package/dist/cjs/limel-split-button.cjs.entry.js +1 -1
  25. package/dist/cjs/limel-tab-bar.cjs.entry.js +1 -1
  26. package/dist/cjs/limel-tab-panel.cjs.entry.js +1 -1
  27. package/dist/cjs/loader.cjs.js +1 -1
  28. package/dist/cjs/{dateFormatter-d7a8d40d.js → sv-dffe48b5.js} +222 -173
  29. package/dist/collection/components/badge/badge.css +26 -19
  30. package/dist/collection/components/badge/badge.js +7 -7
  31. package/dist/collection/components/banner/banner.css +1 -2
  32. package/dist/collection/components/button/button.css +38 -54
  33. package/dist/collection/components/button/button.js +3 -4
  34. package/dist/collection/components/button-group/button-group.css +35 -42
  35. package/dist/collection/components/button-group/button-group.js +8 -1
  36. package/dist/collection/components/checkbox/checkbox.css +22 -45
  37. package/dist/collection/components/chip-set/chip-set.css +212 -405
  38. package/dist/collection/components/chip-set/chip-set.js +1 -1
  39. package/dist/collection/components/code-editor/code-editor.css +4 -4
  40. package/dist/collection/components/collapsible-section/collapsible-section.css +1 -0
  41. package/dist/collection/components/color-picker/color-picker-palette.css +9 -9
  42. package/dist/collection/components/date-picker/date-picker.js +30 -5
  43. package/dist/collection/components/date-picker/dateFormatter.js +7 -3
  44. package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.js +22 -1
  45. package/dist/collection/components/date-picker/pickers/Picker.js +11 -8
  46. package/dist/collection/components/dialog/dialog.css +14 -27
  47. package/dist/collection/components/dock/dock-button/dock-button.css +8 -1
  48. package/dist/collection/components/dock/dock-button/dock-button.js +6 -1
  49. package/dist/collection/components/dock/dock.css +10 -0
  50. package/dist/collection/components/dock/dock.js +1 -0
  51. package/dist/collection/components/file/file.js +1 -1
  52. package/dist/collection/components/form/form.css +91 -4
  53. package/dist/collection/components/form/form.js +1 -0
  54. package/dist/collection/components/form/form.types.js +8 -0
  55. package/dist/collection/components/form/row/row.js +47 -0
  56. package/dist/collection/components/form/templates/object-field.js +5 -0
  57. package/dist/collection/components/form/templates/row-layout.js +20 -0
  58. package/dist/collection/components/header/header.css +2 -2
  59. package/dist/collection/components/header/header.js +7 -2
  60. package/dist/collection/components/icon-button/icon-button.css +6 -12
  61. package/dist/collection/components/info-tile/info-tile.css +4 -10
  62. package/dist/collection/components/info-tile/info-tile.js +3 -0
  63. package/dist/collection/components/input-field/input-field.css +190 -363
  64. package/dist/collection/components/input-field/input-field.js +1 -1
  65. package/dist/collection/components/linear-progress/linear-progress.css +7 -14
  66. package/dist/collection/components/list/list.css +373 -747
  67. package/dist/collection/components/menu/menu.css +19 -1
  68. package/dist/collection/components/menu/menu.js +10 -1
  69. package/dist/collection/components/menu-list/menu-list-renderer.js +6 -1
  70. package/dist/collection/components/menu-list/menu-list.css +385 -748
  71. package/dist/collection/components/menu-surface/menu-surface.css +13 -26
  72. package/dist/collection/components/select/select.css +165 -322
  73. package/dist/collection/components/slider/slider.css +31 -58
  74. package/dist/collection/components/snackbar/snackbar.css +19 -34
  75. package/dist/collection/components/snackbar/snackbar.js +1 -1
  76. package/dist/collection/components/spinner/spinner.css +4 -0
  77. package/dist/collection/components/split-button/split-button.css +8 -0
  78. package/dist/collection/components/switch/switch.css +21 -49
  79. package/dist/collection/components/tab-bar/tab-bar.css +20 -19
  80. package/dist/collection/components/tab-panel/tab-panel.css +5 -0
  81. package/dist/collection/style/internal/shared_input-select-picker.scss +4 -0
  82. package/dist/collection/style/internal/z-index.scss +0 -1
  83. package/dist/esm/lime-elements.js +1 -1
  84. package/dist/esm/limel-badge.entry.js +4 -6
  85. package/dist/esm/limel-button-group.entry.js +8 -2
  86. package/dist/esm/limel-button.entry.js +1 -2
  87. package/dist/esm/limel-chip-set.entry.js +1 -1
  88. package/dist/esm/limel-collapsible-section.entry.js +1 -1
  89. package/dist/esm/limel-date-picker.entry.js +46 -6
  90. package/dist/esm/limel-dialog.entry.js +1 -1
  91. package/dist/esm/limel-dock-button.entry.js +7 -2
  92. package/dist/esm/limel-dock.entry.js +1 -1
  93. package/dist/esm/limel-flatpickr-adapter.entry.js +96 -109
  94. package/dist/esm/limel-form.entry.js +79 -1
  95. package/dist/esm/limel-header.entry.js +2 -2
  96. package/dist/esm/limel-info-tile.entry.js +4 -1
  97. package/dist/esm/limel-input-field.entry.js +2 -2
  98. package/dist/esm/limel-menu-list.entry.js +7 -1
  99. package/dist/esm/limel-menu.entry.js +10 -2
  100. package/dist/esm/limel-portal.entry.js +3 -4
  101. package/dist/esm/limel-select.entry.js +1 -1
  102. package/dist/esm/limel-slider.entry.js +1 -1
  103. package/dist/esm/limel-snackbar.entry.js +1 -1
  104. package/dist/esm/limel-spinner.entry.js +1 -1
  105. package/dist/esm/limel-split-button.entry.js +1 -1
  106. package/dist/esm/limel-tab-bar.entry.js +1 -1
  107. package/dist/esm/limel-tab-panel.entry.js +1 -1
  108. package/dist/esm/loader.js +1 -1
  109. package/dist/esm/{dateFormatter-784c3334.js → sv-336c4576.js} +222 -173
  110. package/dist/lime-elements/lime-elements.esm.js +1 -1
  111. package/dist/lime-elements/p-071e8438.entry.js +82 -0
  112. package/dist/lime-elements/{p-a8d38277.entry.js → p-10e259de.entry.js} +1 -1
  113. package/dist/lime-elements/p-2c9843fe.entry.js +16 -0
  114. package/dist/lime-elements/p-2fd478df.entry.js +1 -0
  115. package/dist/lime-elements/p-34c12f6d.entry.js +1 -0
  116. package/dist/lime-elements/p-3a7b55ce.entry.js +1 -0
  117. package/dist/lime-elements/p-3be2dfc7.entry.js +1 -0
  118. package/dist/lime-elements/{p-06f2f6b4.entry.js → p-3fda3473.entry.js} +1 -1
  119. package/dist/lime-elements/{p-65a3be2c.entry.js → p-404aca86.entry.js} +1 -1
  120. package/dist/lime-elements/p-4620a38e.entry.js +1 -0
  121. package/dist/lime-elements/{p-73df4d83.js → p-4dd9a5a5.js} +5 -3
  122. package/dist/lime-elements/{p-524bd0cc.entry.js → p-5393213b.entry.js} +1 -1
  123. package/dist/lime-elements/{p-e5213a54.entry.js → p-55c8cb64.entry.js} +4 -4
  124. package/dist/lime-elements/{p-c234a991.entry.js → p-878b61cd.entry.js} +1 -1
  125. package/dist/lime-elements/{p-864db270.entry.js → p-88e60f06.entry.js} +1 -1
  126. package/dist/lime-elements/{p-d379f4d6.entry.js → p-8c4e3b46.entry.js} +1 -1
  127. package/dist/lime-elements/{p-5f13035a.entry.js → p-95cefb5f.entry.js} +1 -1
  128. package/dist/lime-elements/p-98caf010.entry.js +1 -0
  129. package/dist/lime-elements/p-b40f37d7.entry.js +1 -0
  130. package/dist/lime-elements/p-c6c0d63c.entry.js +1 -0
  131. package/dist/lime-elements/{p-b079fc71.entry.js → p-cc3529bb.entry.js} +1 -1
  132. package/dist/lime-elements/p-d16b27b9.entry.js +1 -0
  133. package/dist/lime-elements/{p-a0c78744.entry.js → p-d3222d6c.entry.js} +1 -1
  134. package/dist/lime-elements/{p-d9c96100.entry.js → p-dcf88b3e.entry.js} +1 -1
  135. package/dist/lime-elements/p-f7875f4a.entry.js +1 -0
  136. package/dist/lime-elements/style/internal/shared_input-select-picker.scss +4 -0
  137. package/dist/lime-elements/style/internal/z-index.scss +0 -1
  138. package/dist/types/components/badge/badge.d.ts +4 -2
  139. package/dist/types/components/button/button.d.ts +3 -3
  140. package/dist/types/components/button/button.types.d.ts +4 -0
  141. package/dist/types/components/button-group/button-group.d.ts +2 -0
  142. package/dist/types/components/date-picker/date-picker.d.ts +10 -0
  143. package/dist/types/components/date-picker/date.types.d.ts +1 -1
  144. package/dist/types/components/date-picker/dateFormatter.d.ts +3 -2
  145. package/dist/types/components/date-picker/flatpickr-adapter/flatpickr-adapter.d.ts +1 -0
  146. package/dist/types/components/date-picker/pickers/Picker.d.ts +4 -2
  147. package/dist/types/components/dock/dock-button/dock-button.d.ts +1 -0
  148. package/dist/types/components/dock/dock.d.ts +1 -0
  149. package/dist/types/components/dock/dock.types.d.ts +4 -0
  150. package/dist/types/components/form/form.d.ts +1 -0
  151. package/dist/types/components/form/form.types.d.ts +16 -1
  152. package/dist/types/components/form/row/row.d.ts +16 -0
  153. package/dist/types/components/form/templates/row-layout.d.ts +11 -0
  154. package/dist/types/components/form/templates/types.d.ts +3 -0
  155. package/dist/types/components/header/header.d.ts +6 -1
  156. package/dist/types/components/menu/menu.d.ts +3 -0
  157. package/dist/types/components/menu/menu.types.d.ts +4 -0
  158. package/dist/types/components/menu-list/menu-list-renderer.d.ts +1 -0
  159. package/dist/types/components.d.ts +11 -1
  160. package/package.json +23 -20
  161. package/dist/lime-elements/p-52e18d94.entry.js +0 -1
  162. package/dist/lime-elements/p-61b3352f.entry.js +0 -1
  163. package/dist/lime-elements/p-8ca53aa2.entry.js +0 -1
  164. package/dist/lime-elements/p-90961075.entry.js +0 -1
  165. package/dist/lime-elements/p-91604294.entry.js +0 -1
  166. package/dist/lime-elements/p-95fd48d0.entry.js +0 -82
  167. package/dist/lime-elements/p-c4a89055.entry.js +0 -16
  168. package/dist/lime-elements/p-c6c37de3.entry.js +0 -1
  169. package/dist/lime-elements/p-cc9f89a9.entry.js +0 -1
  170. package/dist/lime-elements/p-d512656b.entry.js +0 -1
  171. package/dist/lime-elements/p-e6a11b73.entry.js +0 -1
  172. package/dist/lime-elements/p-f9958763.entry.js +0 -1
@@ -662,7 +662,7 @@ export class ChipSet {
662
662
  "mutable": false,
663
663
  "complexType": {
664
664
  "original": "Languages",
665
- "resolved": "\"da\" | \"en\" | \"fi\" | \"nb\" | \"nl\" | \"no\" | \"sv\"",
665
+ "resolved": "\"da\" | \"de\" | \"en\" | \"fi\" | \"fr\" | \"nb\" | \"nl\" | \"no\" | \"sv\"",
666
666
  "references": {
667
667
  "Languages": {
668
668
  "location": "import",
@@ -523,22 +523,22 @@ span.CodeMirror-selectedtext { background: none; }
523
523
  --code-editor-selection-lowlight-color: var(--contrast-100);
524
524
  }
525
525
  :root:not([data-theme=force-light]) :host .cm-attribute,
526
- :root:not([data-theme=force-light]) :host .cm-property,
527
- :root:not([data-theme=force-light]) :host .cm-keyword {
526
+ :root:not([data-theme=force-light]) :host .cm-property,
527
+ :root:not([data-theme=force-light]) :host .cm-keyword {
528
528
  color: rgb(var(--color-purple-lighter));
529
529
  }
530
530
  :root:not([data-theme=force-light]) :host .cm-operator {
531
531
  color: rgb(var(--color-sky-lighter));
532
532
  }
533
533
  :root:not([data-theme=force-light]) :host .cm-variable-3,
534
- :root:not([data-theme=force-light]) :host .cm-type {
534
+ :root:not([data-theme=force-light]) :host .cm-type {
535
535
  color: rgb(var(--color-yellow-light));
536
536
  }
537
537
  :root:not([data-theme=force-light]) :host .cm-atom {
538
538
  color: rgb(var(--color-coral-light));
539
539
  }
540
540
  :root:not([data-theme=force-light]) :host .cm-tag,
541
- :root:not([data-theme=force-light]) :host .cm-number {
541
+ :root:not([data-theme=force-light]) :host .cm-number {
542
542
  color: rgb(var(--color-magenta-light));
543
543
  }
544
544
  :root:not([data-theme=force-light]) :host .cm-def {
@@ -138,6 +138,7 @@ section.open .section__header:hover {
138
138
  text-transform: inherit;
139
139
  /* @alternate */
140
140
  text-transform: var(--mdc-typography-headline2-text-transform, inherit);
141
+ color: var(--mdc-theme-on-surface);
141
142
  justify-self: flex-start;
142
143
  padding-right: 0.75rem;
143
144
  user-select: none;
@@ -65,20 +65,20 @@
65
65
 
66
66
  @media (prefers-color-scheme: light) {
67
67
  .brand-colors .--color-glaucous-default,
68
- .brand-colors .--color-gray-dark {
68
+ .brand-colors .--color-gray-dark {
69
69
  border-radius: 50%;
70
70
  }
71
71
  }
72
72
  @media (prefers-color-scheme: dark) {
73
73
  .brand-colors .--color-red-light,
74
- .brand-colors .--color-magenta-default,
75
- .brand-colors .--color-sky-light,
76
- .brand-colors .--color-teal-light,
77
- .brand-colors .--color-green-light,
78
- .brand-colors .--color-amber-light,
79
- .brand-colors .--color-amber-default,
80
- .brand-colors .--color-coral-light,
81
- .brand-colors .--color-gray-light {
74
+ .brand-colors .--color-magenta-default,
75
+ .brand-colors .--color-sky-light,
76
+ .brand-colors .--color-teal-light,
77
+ .brand-colors .--color-green-light,
78
+ .brand-colors .--color-amber-light,
79
+ .brand-colors .--color-amber-default,
80
+ .brand-colors .--color-coral-light,
81
+ .brand-colors .--color-gray-light {
82
82
  border-radius: 50%;
83
83
  }
84
84
  }
@@ -36,6 +36,7 @@ const nativeFormatForType = {
36
36
  * @exampleComponent limel-example-date-picker-formatted
37
37
  * @exampleComponent limel-example-date-picker-programmatic-change
38
38
  * @exampleComponent limel-example-date-picker-composite
39
+ * @exampleComponent limel-example-date-picker-custom-formatter
39
40
  */
40
41
  export class DatePicker {
41
42
  constructor() {
@@ -50,6 +51,7 @@ export class DatePicker {
50
51
  this.hideCalendar();
51
52
  }
52
53
  };
54
+ this.formatValue = (value) => this.dateFormatter.formatDate(value, this.internalFormat);
53
55
  this.disabled = false;
54
56
  this.readonly = false;
55
57
  this.invalid = false;
@@ -61,6 +63,7 @@ export class DatePicker {
61
63
  this.type = 'datetime';
62
64
  this.format = undefined;
63
65
  this.language = 'en';
66
+ this.formatter = undefined;
64
67
  this.formattedValue = undefined;
65
68
  this.internalFormat = undefined;
66
69
  this.showPortal = false;
@@ -79,7 +82,7 @@ export class DatePicker {
79
82
  componentWillLoad() {
80
83
  this.useNative = !this.readonly && (isIOSDevice() || isAndroidDevice());
81
84
  this.updateInternalFormatAndType();
82
- this.formattedValue = this.dateFormatter.formatDate(this.value, this.internalFormat);
85
+ this.formattedValue = this.formatValue(this.value);
83
86
  }
84
87
  componentWillUpdate() {
85
88
  this.updateInternalFormatAndType();
@@ -97,12 +100,12 @@ export class DatePicker {
97
100
  const dropdownZIndex = getComputedStyle(this.host).getPropertyValue('--dropdown-z-index');
98
101
  return [
99
102
  h("limel-input-field", Object.assign({ disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, label: this.label, placeholder: this.placeholder, helperText: this.helperText, required: this.required, value: this.formattedValue, onFocus: this.showCalendar, onBlur: this.hideCalendar, onClick: this.onInputClick, onChange: this.handleInputElementChange, ref: (el) => (this.textField = el) }, inputProps)),
100
- h("limel-portal", { containerId: this.portalId, visible: this.showPortal, containerStyle: { 'z-index': dropdownZIndex } }, h("limel-flatpickr-adapter", { format: this.internalFormat, language: this.language, type: this.type, value: this.value, ref: (el) => (this.datePickerCalendar = el), isOpen: this.showPortal, onChange: this.handleCalendarChange })),
103
+ h("limel-portal", { containerId: this.portalId, visible: this.showPortal, containerStyle: { 'z-index': dropdownZIndex } }, h("limel-flatpickr-adapter", { format: this.internalFormat, language: this.language, type: this.type, value: this.value, ref: (el) => (this.datePickerCalendar = el), isOpen: this.showPortal, formatter: this.formatValue, onChange: this.handleCalendarChange })),
101
104
  ];
102
105
  }
103
106
  onValueChange(newValue, oldValue) {
104
107
  if (newValue !== oldValue && newValue !== this.formattedValue) {
105
- this.formattedValue = this.dateFormatter.formatDate(this.value, this.internalFormat);
108
+ this.formattedValue = this.formatValue(this.value);
106
109
  }
107
110
  }
108
111
  updateInternalFormatAndType() {
@@ -111,6 +114,9 @@ export class DatePicker {
111
114
  if (this.useNative) {
112
115
  this.internalFormat = this.nativeFormat;
113
116
  }
117
+ else if (this.formatter) {
118
+ this.formatValue = this.formatter;
119
+ }
114
120
  else if (this.format) {
115
121
  this.internalFormat = this.format;
116
122
  }
@@ -170,7 +176,7 @@ export class DatePicker {
170
176
  }
171
177
  handleCalendarChange(event) {
172
178
  const date = event.detail;
173
- this.formattedValue = this.dateFormatter.formatDate(date, this.internalFormat);
179
+ this.formattedValue = this.formatValue(date);
174
180
  event.stopPropagation();
175
181
  if (this.pickerIsAutoClosing()) {
176
182
  this.hideCalendar();
@@ -400,7 +406,7 @@ export class DatePicker {
400
406
  "mutable": false,
401
407
  "complexType": {
402
408
  "original": "Languages",
403
- "resolved": "\"da\" | \"en\" | \"fi\" | \"nb\" | \"nl\" | \"no\" | \"sv\"",
409
+ "resolved": "\"da\" | \"de\" | \"en\" | \"fi\" | \"fr\" | \"nb\" | \"nl\" | \"no\" | \"sv\"",
404
410
  "references": {
405
411
  "Languages": {
406
412
  "location": "import",
@@ -417,6 +423,25 @@ export class DatePicker {
417
423
  "attribute": "language",
418
424
  "reflect": true,
419
425
  "defaultValue": "'en'"
426
+ },
427
+ "formatter": {
428
+ "type": "unknown",
429
+ "mutable": false,
430
+ "complexType": {
431
+ "original": "(date: Date) => string",
432
+ "resolved": "(date: Date) => string",
433
+ "references": {
434
+ "Date": {
435
+ "location": "global"
436
+ }
437
+ }
438
+ },
439
+ "required": false,
440
+ "optional": true,
441
+ "docs": {
442
+ "tags": [],
443
+ "text": "Custom formatting function. Will be used for date formatting.\n\n:::note\noverrides `format` and `language`\n:::"
444
+ }
420
445
  }
421
446
  };
422
447
  }
@@ -1,9 +1,10 @@
1
1
  import 'moment/locale/da';
2
+ import 'moment/locale/de';
2
3
  import 'moment/locale/fi';
3
- import 'moment/locale/nb';
4
- import 'moment/locale/sv';
5
4
  import 'moment/locale/fr';
5
+ import 'moment/locale/nb';
6
6
  import 'moment/locale/nl';
7
+ import 'moment/locale/sv';
7
8
  import moment from 'moment/moment';
8
9
  export class DateFormatter {
9
10
  constructor(language = 'en') {
@@ -22,7 +23,10 @@ export class DateFormatter {
22
23
  return null;
23
24
  }
24
25
  getLanguage() {
25
- return this.language === 'no' ? 'nb' : this.language;
26
+ if (this.language === 'no') {
27
+ return 'nb';
28
+ }
29
+ return this.language;
26
30
  }
27
31
  getDateFormat(type) {
28
32
  return ({
@@ -23,6 +23,7 @@ export class DatePickerCalendar {
23
23
  this.isOpen = undefined;
24
24
  this.inputElement = undefined;
25
25
  this.language = 'en';
26
+ this.formatter = undefined;
26
27
  }
27
28
  componentWillLoad() {
28
29
  switch (this.type) {
@@ -49,6 +50,7 @@ export class DatePickerCalendar {
49
50
  this.picker = new DatetimePicker(this.format, this.language, this.change);
50
51
  break;
51
52
  }
53
+ this.picker.formatDate = this.formatter;
52
54
  }
53
55
  componentDidUpdate() {
54
56
  if (this.flatPickrCreated) {
@@ -217,7 +219,7 @@ export class DatePickerCalendar {
217
219
  "mutable": false,
218
220
  "complexType": {
219
221
  "original": "Languages",
220
- "resolved": "\"da\" | \"en\" | \"fi\" | \"nb\" | \"nl\" | \"no\" | \"sv\"",
222
+ "resolved": "\"da\" | \"de\" | \"en\" | \"fi\" | \"fr\" | \"nb\" | \"nl\" | \"no\" | \"sv\"",
221
223
  "references": {
222
224
  "Languages": {
223
225
  "location": "import",
@@ -234,6 +236,25 @@ export class DatePickerCalendar {
234
236
  "attribute": "language",
235
237
  "reflect": false,
236
238
  "defaultValue": "'en'"
239
+ },
240
+ "formatter": {
241
+ "type": "unknown",
242
+ "mutable": false,
243
+ "complexType": {
244
+ "original": "(date: Date) => string",
245
+ "resolved": "(date: Date) => string",
246
+ "references": {
247
+ "Date": {
248
+ "location": "global"
249
+ }
250
+ }
251
+ },
252
+ "required": true,
253
+ "optional": false,
254
+ "docs": {
255
+ "tags": [],
256
+ "text": ""
257
+ }
237
258
  }
238
259
  };
239
260
  }
@@ -1,12 +1,14 @@
1
1
  import flatpickr from 'flatpickr';
2
2
  import FlatpickrLanguages from 'flatpickr/dist/l10n';
3
3
  import 'moment/locale/da';
4
+ import 'moment/locale/de';
4
5
  import 'moment/locale/fi';
6
+ import 'moment/locale/fr';
5
7
  import 'moment/locale/nb';
8
+ import 'moment/locale/nl';
6
9
  import 'moment/locale/sv';
7
10
  import moment from 'moment/moment';
8
11
  import { isAndroidDevice, isIOSDevice } from '../../../util/device';
9
- import { DateFormatter } from '../dateFormatter';
10
12
  export class Picker {
11
13
  constructor(dateFormat, language, change) {
12
14
  this.change = change;
@@ -17,12 +19,10 @@ export class Picker {
17
19
  if (dateFormat) {
18
20
  this.dateFormat = dateFormat;
19
21
  }
20
- this.dateFormatter = new DateFormatter(language);
21
22
  this.getWeek = this.getWeek.bind(this);
22
23
  this.handleClose = this.handleClose.bind(this);
23
24
  this.handleOnClose = this.handleOnClose.bind(this);
24
25
  this.parseDate = this.parseDate.bind(this);
25
- this.formatDate = this.formatDate.bind(this);
26
26
  this.getFlatpickrLang = this.getFlatpickrLang.bind(this);
27
27
  }
28
28
  init(element, container, value) {
@@ -56,9 +56,6 @@ export class Picker {
56
56
  }
57
57
  this.flatpickr.destroy();
58
58
  }
59
- formatDate(date) {
60
- return this.dateFormatter.formatDate(date, this.dateFormat);
61
- }
62
59
  handleClose(selectedDates) {
63
60
  return new Promise((resolve) => {
64
61
  setTimeout(() => {
@@ -69,10 +66,16 @@ export class Picker {
69
66
  });
70
67
  }
71
68
  getFlatpickrLang() {
72
- return this.language === 'nb' ? 'no' : this.language;
69
+ if (this.language === 'nb') {
70
+ return 'no';
71
+ }
72
+ return this.language;
73
73
  }
74
74
  getMomentLang() {
75
- return this.language === 'no' ? 'nb' : this.language;
75
+ if (this.language === 'no') {
76
+ return 'nb';
77
+ }
78
+ return this.language;
76
79
  }
77
80
  getPickerDate(selectedDates) {
78
81
  return selectedDates[0] ? new Date(selectedDates[0].toJSON()) : null;
@@ -395,14 +395,12 @@
395
395
  width: 100%;
396
396
  height: 100%;
397
397
  top: 0;
398
- /* @noflip */
399
- /*rtl:ignore*/
398
+ /* @noflip */ /*rtl:ignore*/
400
399
  left: 0;
401
400
  }
402
401
  [dir=rtl] .mdc-dialog__surface, .mdc-dialog__surface[dir=rtl] {
403
402
  /*rtl:begin:ignore*/
404
- /* @noflip */
405
- /*rtl:ignore*/
403
+ /* @noflip */ /*rtl:ignore*/
406
404
  text-align: right;
407
405
  /*rtl:end:ignore*/
408
406
  }
@@ -449,8 +447,7 @@
449
447
  }
450
448
  [dir=rtl] .mdc-dialog__title, .mdc-dialog__title[dir=rtl] {
451
449
  /*rtl:begin:ignore*/
452
- /* @noflip */
453
- /*rtl:ignore*/
450
+ /* @noflip */ /*rtl:ignore*/
454
451
  text-align: right;
455
452
  /*rtl:end:ignore*/
456
453
  }
@@ -538,51 +535,41 @@
538
535
  }
539
536
 
540
537
  .mdc-dialog__button {
541
- /* @noflip */
542
- /*rtl:ignore*/
538
+ /* @noflip */ /*rtl:ignore*/
543
539
  margin-left: 8px;
544
- /* @noflip */
545
- /*rtl:ignore*/
540
+ /* @noflip */ /*rtl:ignore*/
546
541
  margin-right: 0;
547
542
  max-width: 100%;
548
- /* @noflip */
549
- /*rtl:ignore*/
543
+ /* @noflip */ /*rtl:ignore*/
550
544
  text-align: right;
551
545
  }
552
546
  [dir=rtl] .mdc-dialog__button, .mdc-dialog__button[dir=rtl] {
553
547
  /*rtl:begin:ignore*/
554
- /* @noflip */
555
- /*rtl:ignore*/
548
+ /* @noflip */ /*rtl:ignore*/
556
549
  margin-left: 0;
557
- /* @noflip */
558
- /*rtl:ignore*/
550
+ /* @noflip */ /*rtl:ignore*/
559
551
  margin-right: 8px;
560
552
  /*rtl:end:ignore*/
561
553
  }
562
554
 
563
555
  .mdc-dialog__button:first-child {
564
- /* @noflip */
565
- /*rtl:ignore*/
556
+ /* @noflip */ /*rtl:ignore*/
566
557
  margin-left: 0;
567
- /* @noflip */
568
- /*rtl:ignore*/
558
+ /* @noflip */ /*rtl:ignore*/
569
559
  margin-right: 0;
570
560
  }
571
561
  [dir=rtl] .mdc-dialog__button:first-child, .mdc-dialog__button:first-child[dir=rtl] {
572
562
  /*rtl:begin:ignore*/
573
- /* @noflip */
574
- /*rtl:ignore*/
563
+ /* @noflip */ /*rtl:ignore*/
575
564
  margin-left: 0;
576
- /* @noflip */
577
- /*rtl:ignore*/
565
+ /* @noflip */ /*rtl:ignore*/
578
566
  margin-right: 0;
579
567
  /*rtl:end:ignore*/
580
568
  }
581
569
 
582
570
  [dir=rtl] .mdc-dialog__button, .mdc-dialog__button[dir=rtl] {
583
571
  /*rtl:begin:ignore*/
584
- /* @noflip */
585
- /*rtl:ignore*/
572
+ /* @noflip */ /*rtl:ignore*/
586
573
  text-align: left;
587
574
  /*rtl:end:ignore*/
588
575
  }
@@ -647,6 +634,7 @@
647
634
 
648
635
  .mdc-dialog {
649
636
  z-index: var(--dialog-z-index, 7);
637
+ padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
650
638
  }
651
639
  @media (max-width: 16032px) {
652
640
  .mdc-dialog .mdc-dialog__surface {
@@ -744,7 +732,6 @@ slot[name=button] {
744
732
  slot[name=button] {
745
733
  flex-direction: column-reverse;
746
734
  }
747
-
748
735
  .mdc-dialog__actions {
749
736
  padding: min(1.5rem, 3vw);
750
737
  padding-top: 1rem;
@@ -12,6 +12,8 @@
12
12
  */
13
13
  .button {
14
14
  all: unset;
15
+ isolation: isolate;
16
+ position: relative;
15
17
  cursor: pointer;
16
18
  transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
17
19
  color: var(--limel-dock-item-text-color);
@@ -19,7 +21,6 @@
19
21
  box-sizing: border-box;
20
22
  display: flex;
21
23
  align-items: center;
22
- position: relative;
23
24
  width: 100%;
24
25
  height: var(--dock-item-height);
25
26
  border-radius: 0.375rem;
@@ -77,4 +78,10 @@ limel-popover {
77
78
  width: calc(var(--dock-item-height) - 1rem);
78
79
  height: calc(var(--dock-item-height) - 1rem);
79
80
  color: var(--dock-item-icon-color, var(--limel-dock-item-text-color));
81
+ }
82
+
83
+ limel-badge {
84
+ position: absolute;
85
+ top: -0.125rem;
86
+ right: -0.125rem;
80
87
  }
@@ -5,6 +5,11 @@ import { createRandomString } from '../../../util/random-string';
5
5
  */
6
6
  export class DockButton {
7
7
  constructor() {
8
+ this.renderNotification = () => {
9
+ if (this.item.badge !== undefined) {
10
+ return h("limel-badge", { label: this.item.badge });
11
+ }
12
+ };
8
13
  this.openPopover = (event) => {
9
14
  event.stopPropagation();
10
15
  this.isOpen = true;
@@ -57,7 +62,7 @@ export class DockButton {
57
62
  return (h("button", { slot: slot, tabindex: "0", id: this.tooltipId, type: "button", class: {
58
63
  button: true,
59
64
  selected: (_a = this.item) === null || _a === void 0 ? void 0 : _a.selected,
60
- }, onClick: handleClick }, this.renderIcon(), this.renderLabel(), this.renderTooltip()));
65
+ }, onClick: handleClick, "aria-live": "polite" }, this.renderIcon(), this.renderLabel(), this.renderTooltip(), this.renderNotification()));
61
66
  }
62
67
  renderIcon() {
63
68
  if (!this.item.icon) {
@@ -17,9 +17,15 @@
17
17
  * @prop --dock-item-text-color: Text of dock items, defaults to `--contrast-1100`.
18
18
  * @prop --dock-item-text-color--selected: Text color of selected dock item, defaults to `--contrast-1300`.
19
19
  * @prop --dock-item-icon-color: Color of the optional icons used in each dock item. Only affects inactive dock items, defaults to text colors for default or selected states.
20
+ * @prop --dock-padding-top: Space of top side of the Dock. Can be used with environment variables, to take into account safe areas on mobile devices with rounded screen corners or those that have a "notch". For instance can be set to `env(safe-area-inset-top)`.
21
+ * @prop --dock-padding-right: Space of the right side of the Dock. Can be used with environment variables, to take into account safe areas on mobile devices with rounded screen corners or those that have a "notch". For instance can be set to `env(safe-area-inset-right)`.
22
+ * @prop --dock-padding-bottom: Space of the bottom side of the Dock. Can be used with environment variables, to take into account safe areas on mobile devices with rounded screen corners or those that have a "notch". For instance can be set to `env(safe-area-inset-bottom)`.
23
+ * @prop --dock-padding-left: Space of the left side of the Dock. Can be used with environment variables, to take into account safe areas on mobile devices with rounded screen corners or those that have a "notch". For instance can be set to `env(safe-area-inset-left)`.
20
24
  * @prop --popover-surface-width: Defines the width of the popover that is opened for dock items with custom components. Defaults to `auto`.
21
25
  */
22
26
  :host(limel-dock) {
27
+ --badge-background-color: rgb(var(--color-red-default));
28
+ --badge-text-color: rgb(var(--color-white));
23
29
  --dock-item-height: 2.75rem;
24
30
  --dock-padding: 0.25rem;
25
31
  --dock-expand-shrink-button-height: 1rem;
@@ -37,6 +43,10 @@
37
43
  flex-direction: column;
38
44
  background-color: var(--dock-background-color, rgb(var(--contrast-100)));
39
45
  box-shadow: var(--shadow-depth-8);
46
+ padding-top: var(--dock-padding-top);
47
+ padding-right: var(--dock-padding-right);
48
+ padding-bottom: var(--dock-padding-bottom);
49
+ padding-left: var(--dock-padding-left);
40
50
  }
41
51
 
42
52
  :host(limel-dock:not(.has-mobile-layout)) {
@@ -3,6 +3,7 @@ const DEFAULT_MOBILE_BREAKPOINT = 700;
3
3
  /**
4
4
  * @exampleComponent limel-example-dock-basic
5
5
  * @exampleComponent limel-example-dock-custom-component
6
+ * @exampleComponent limel-example-dock-notification
6
7
  * @exampleComponent limel-example-dock-mobile
7
8
  * @exampleComponent limel-example-dock-expanded
8
9
  * @exampleComponent limel-example-dock-colors-css
@@ -303,7 +303,7 @@ export class File {
303
303
  "mutable": false,
304
304
  "complexType": {
305
305
  "original": "Languages",
306
- "resolved": "\"da\" | \"en\" | \"fi\" | \"nb\" | \"nl\" | \"no\" | \"sv\"",
306
+ "resolved": "\"da\" | \"de\" | \"en\" | \"fi\" | \"fr\" | \"nb\" | \"nl\" | \"no\" | \"sv\"",
307
307
  "references": {
308
308
  "Languages": {
309
309
  "location": "import",
@@ -66,6 +66,8 @@
66
66
 
67
67
  /**
68
68
  * @prop --form-body-padding: space around content of the form
69
+ * @prop --form-background-color-of-even-rows: Background of even rows in the form, when layout type is `row`. Defaults to `transparent`.
70
+ * @prop --form-background-color-of-odd-rows:Background of odd rows in the form, when layout type is `row`. Defaults to `--contrast-200`.
69
71
  */
70
72
  .mdc-typography {
71
73
  -moz-osx-font-smoothing: grayscale;
@@ -536,22 +538,28 @@
536
538
  position: relative;
537
539
  }
538
540
 
541
+ .form-group .mdc-typography--headline1,
542
+ .form-group .mdc-typography--body1 {
543
+ color: rgb(var(--contrast-1100));
544
+ }
539
545
  .form-group .mdc-typography--headline1 {
540
546
  --mdc-typography-headline1-font-size: 2rem;
541
547
  --mdc-typography-headline1-line-height: 2.25rem;
542
548
  --mdc-typography-headline1-letter-spacing: -0.0625rem;
543
549
  --mdc-typography-headline1-font-weight: 400;
544
- color: rgb(var(--contrast-1000));
545
550
  margin-top: 1.5rem;
546
551
  margin-bottom: 0.5rem;
547
552
  }
553
+ .form-group .form-group .mdc-typography--headline1,
554
+ .form-group .form-group .mdc-typography--body1 {
555
+ color: rgb(var(--contrast-1200));
556
+ }
548
557
  .form-group .form-group .mdc-typography--headline1 {
549
558
  --mdc-typography-headline1-font-size: 1.625rem;
550
559
  --mdc-typography-headline1-line-height: 1.25rem;
551
560
  --mdc-typography-headline1-font-weight: 300;
552
561
  margin-top: 1.25rem;
553
562
  margin-bottom: 0.5rem;
554
- color: rgb(var(--contrast-1100));
555
563
  }
556
564
  .form-group .form-group .mdc-typography--headline1:before {
557
565
  content: "";
@@ -567,25 +575,104 @@
567
575
  border-radius: 0.125rem;
568
576
  opacity: 0.6;
569
577
  }
578
+ .form-group .form-group .form-group .mdc-typography--headline1,
579
+ .form-group .form-group .form-group .mdc-typography--body1 {
580
+ color: rgb(var(--contrast-1300));
581
+ }
570
582
  .form-group .form-group .form-group .mdc-typography--headline1 {
571
583
  --mdc-typography-headline1-font-size: 1.375rem;
572
584
  --mdc-typography-headline1-line-height: 1.5rem;
573
585
  --mdc-typography-headline1-font-weight: 300;
574
586
  margin-top: 1rem;
575
587
  margin-bottom: 0.5rem;
576
- color: rgb(var(--contrast-1200));
577
588
  }
578
589
  .form-group .form-group .form-group .mdc-typography--headline1:before {
579
590
  display: none;
580
591
  }
592
+ .form-group .form-group .form-group .form-group .mdc-typography--headline1,
593
+ .form-group .form-group .form-group .form-group .mdc-typography--body1 {
594
+ color: rgb(var(--contrast-1400));
595
+ }
581
596
  .form-group .form-group .form-group .form-group .mdc-typography--headline1 {
582
597
  --mdc-typography-headline1-font-size: 1.25rem;
583
598
  --mdc-typography-headline1-line-height: 1.25rem;
584
599
  --mdc-typography-headline1-font-weight: 300;
585
600
  margin-top: 1rem;
586
601
  margin-bottom: 0.5rem;
587
- color: rgb(var(--contrast-1200));
588
602
  }
589
603
  .form-group .form-group .form-group .form-group .mdc-typography--headline1:before {
590
604
  display: none;
605
+ }
606
+
607
+ /*
608
+ * This file is imported into every component!
609
+ *
610
+ * Nothing in this file may output any CSS
611
+ * without being explicitly called by outside code.
612
+ */
613
+ .limel-form-row--layout {
614
+ --limel-form-row-border-radius: 0.375rem;
615
+ --limel-form-row-icon-size: 1.75rem;
616
+ --limel-form-row-main-information-gap: 0.5rem;
617
+ display: flex;
618
+ flex-direction: column;
619
+ }
620
+ .limel-form-row--layout .row {
621
+ display: flex;
622
+ gap: 0.5rem;
623
+ flex-direction: column;
624
+ padding: 0.5rem 1rem;
625
+ }
626
+ .limel-form-row--layout .row:nth-child(odd) {
627
+ background-color: var(--form-background-color-of-odd-rows, rgb(var(--contrast-200)));
628
+ }
629
+ .limel-form-row--layout .row:nth-child(even) {
630
+ background-color: var(--form-background-color-of-even-rows, transparent);
631
+ }
632
+ .limel-form-row--layout .row:first-child {
633
+ border-radius: var(--limel-form-row-border-radius) var(--limel-form-row-border-radius) 0 0;
634
+ }
635
+ .limel-form-row--layout .row:last-child {
636
+ border-radius: 0 0 var(--limel-form-row-border-radius) var(--limel-form-row-border-radius);
637
+ }
638
+ .limel-form-row--layout .main-information {
639
+ display: flex;
640
+ flex-direction: row;
641
+ align-items: center;
642
+ gap: var(--limel-form-row-main-information-gap);
643
+ min-width: 0;
644
+ }
645
+ .limel-form-row--layout limel-icon {
646
+ color: rgb(var(--contrast-1200));
647
+ width: var(--limel-form-row-icon-size);
648
+ flex-shrink: 0;
649
+ min-width: 0;
650
+ }
651
+ .limel-form-row--layout .title {
652
+ overflow: hidden;
653
+ white-space: nowrap;
654
+ text-overflow: ellipsis;
655
+ margin: 0;
656
+ font-weight: normal;
657
+ flex-grow: 1;
658
+ color: var(--mdc-theme-on-surface);
659
+ font-size: var(--mdc-typography-subtitle1-font-size, 0.875rem);
660
+ }
661
+ .limel-form-row--layout .description {
662
+ margin: 0;
663
+ color: var(--mdc-theme-text-secondary-on-background);
664
+ font-size: var(--mdc-typography-body2-font-size, 0.8125rem);
665
+ line-height: 1.5;
666
+ }
667
+ .limel-form-row--layout .has-icon .description {
668
+ padding-left: calc(var(--limel-form-row-icon-size) + var(--limel-form-row-main-information-gap));
669
+ }
670
+ .limel-form-row--layout .form-group.field {
671
+ flex-shrink: 0;
672
+ display: flex;
673
+ align-content: center;
674
+ }
675
+ .limel-form-row--layout .form-group.field limel-slider {
676
+ min-width: 8rem;
677
+ display: block;
591
678
  }
@@ -23,6 +23,7 @@ import { mapValues } from 'lodash-es';
23
23
  * @exampleComponent limel-example-form-span-fields
24
24
  * @exampleComponent limel-example-custom-error-message
25
25
  * @exampleComponent limel-example-server-errors
26
+ * @exampleComponent limel-example-form-row-layout
26
27
  */
27
28
  export class Form {
28
29
  constructor() {