@limetech/lime-elements 38.33.8 → 38.35.0

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 (148) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/lime-elements.cjs.js +1 -1
  3. package/dist/cjs/limel-action-bar_2.cjs.entry.js +1 -1
  4. package/dist/cjs/limel-ai-avatar.cjs.entry.js +1 -1
  5. package/dist/cjs/{limel-breadcrumbs_8.cjs.entry.js → limel-breadcrumbs_7.cjs.entry.js} +1 -35
  6. package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js.map +1 -0
  7. package/dist/cjs/limel-callout.cjs.entry.js +1 -1
  8. package/dist/cjs/limel-chart.cjs.entry.js +7 -4
  9. package/dist/cjs/limel-chart.cjs.entry.js.map +1 -1
  10. package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
  11. package/dist/cjs/limel-code-editor.cjs.entry.js +97 -5
  12. package/dist/cjs/limel-code-editor.cjs.entry.js.map +1 -1
  13. package/dist/cjs/limel-collapsible-section.cjs.entry.js +1 -1
  14. package/dist/cjs/limel-drag-handle.cjs.entry.js +1 -1
  15. package/dist/cjs/limel-file-viewer.cjs.entry.js +1 -1
  16. package/dist/cjs/limel-file.cjs.entry.js +1 -1
  17. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
  18. package/dist/cjs/limel-helper-line_2.cjs.entry.js +79 -0
  19. package/dist/cjs/limel-helper-line_2.cjs.entry.js.map +1 -0
  20. package/dist/cjs/limel-linear-progress.cjs.entry.js +1 -1
  21. package/dist/cjs/limel-list-item.cjs.entry.js +1 -1
  22. package/dist/cjs/limel-profile-picture.cjs.entry.js +1 -1
  23. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +1 -1
  24. package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
  25. package/dist/cjs/limel-table.cjs.entry.js +1 -1
  26. package/dist/cjs/loader.cjs.js +1 -1
  27. package/dist/cjs/{translations-a42886f2.js → translations-e58b6da5.js} +9 -1
  28. package/dist/cjs/translations-e58b6da5.js.map +1 -0
  29. package/dist/collection/components/chart/chart.css +53 -0
  30. package/dist/collection/components/chart/chart.js +42 -3
  31. package/dist/collection/components/chart/chart.js.map +1 -1
  32. package/dist/collection/components/code-editor/code-editor.css +29 -0
  33. package/dist/collection/components/code-editor/code-editor.js +202 -11
  34. package/dist/collection/components/code-editor/code-editor.js.map +1 -1
  35. package/dist/collection/translations/da.js +1 -0
  36. package/dist/collection/translations/da.js.map +1 -1
  37. package/dist/collection/translations/de.js +1 -0
  38. package/dist/collection/translations/de.js.map +1 -1
  39. package/dist/collection/translations/en.js +1 -0
  40. package/dist/collection/translations/en.js.map +1 -1
  41. package/dist/collection/translations/fi.js +1 -0
  42. package/dist/collection/translations/fi.js.map +1 -1
  43. package/dist/collection/translations/fr.js +1 -0
  44. package/dist/collection/translations/fr.js.map +1 -1
  45. package/dist/collection/translations/nl.js +1 -0
  46. package/dist/collection/translations/nl.js.map +1 -1
  47. package/dist/collection/translations/no.js +1 -0
  48. package/dist/collection/translations/no.js.map +1 -1
  49. package/dist/collection/translations/sv.js +1 -0
  50. package/dist/collection/translations/sv.js.map +1 -1
  51. package/dist/esm/lime-elements.js +1 -1
  52. package/dist/esm/limel-action-bar_2.entry.js +1 -1
  53. package/dist/esm/limel-ai-avatar.entry.js +1 -1
  54. package/dist/esm/{limel-breadcrumbs_8.entry.js → limel-breadcrumbs_7.entry.js} +2 -35
  55. package/dist/esm/limel-breadcrumbs_7.entry.js.map +1 -0
  56. package/dist/esm/limel-callout.entry.js +1 -1
  57. package/dist/esm/limel-chart.entry.js +7 -4
  58. package/dist/esm/limel-chart.entry.js.map +1 -1
  59. package/dist/esm/limel-chip_2.entry.js +1 -1
  60. package/dist/esm/limel-code-editor.entry.js +98 -6
  61. package/dist/esm/limel-code-editor.entry.js.map +1 -1
  62. package/dist/esm/limel-collapsible-section.entry.js +1 -1
  63. package/dist/esm/limel-drag-handle.entry.js +1 -1
  64. package/dist/esm/limel-file-viewer.entry.js +1 -1
  65. package/dist/esm/limel-file.entry.js +1 -1
  66. package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
  67. package/dist/esm/limel-helper-line_2.entry.js +74 -0
  68. package/dist/esm/limel-helper-line_2.entry.js.map +1 -0
  69. package/dist/esm/limel-linear-progress.entry.js +1 -1
  70. package/dist/esm/limel-list-item.entry.js +1 -1
  71. package/dist/esm/limel-profile-picture.entry.js +1 -1
  72. package/dist/esm/limel-prosemirror-adapter.entry.js +1 -1
  73. package/dist/esm/limel-snackbar.entry.js +1 -1
  74. package/dist/esm/limel-table.entry.js +1 -1
  75. package/dist/esm/loader.js +1 -1
  76. package/dist/esm/{translations-9bfde9f4.js → translations-4151479a.js} +9 -1
  77. package/dist/esm/translations-4151479a.js.map +1 -0
  78. package/dist/lime-elements/lime-elements.esm.js +1 -1
  79. package/dist/lime-elements/lime-elements.esm.js.map +1 -1
  80. package/dist/lime-elements/{p-ee5c4112.entry.js → p-13bd2797.entry.js} +2 -2
  81. package/dist/lime-elements/{p-df9bcace.entry.js → p-158897dd.entry.js} +2 -2
  82. package/dist/lime-elements/{p-e00465fa.entry.js → p-182ce303.entry.js} +2 -2
  83. package/dist/lime-elements/{p-d79c85e2.entry.js → p-23de215d.entry.js} +2 -2
  84. package/dist/lime-elements/{p-8ea3b80a.entry.js → p-3746c217.entry.js} +2 -2
  85. package/dist/lime-elements/{p-aa1e7319.entry.js → p-61b2e426.entry.js} +2 -2
  86. package/dist/lime-elements/{p-033a0aa9.entry.js → p-668e583c.entry.js} +11 -11
  87. package/dist/lime-elements/p-668e583c.entry.js.map +1 -0
  88. package/dist/lime-elements/{p-92aa9610.entry.js → p-68799403.entry.js} +2 -2
  89. package/dist/lime-elements/{p-3311eaf3.entry.js → p-6d9fb8e8.entry.js} +2 -2
  90. package/dist/lime-elements/{p-fbac230b.entry.js → p-7da20f22.entry.js} +2 -2
  91. package/dist/lime-elements/{p-cd2f780a.entry.js → p-7e1a548a.entry.js} +2 -2
  92. package/dist/lime-elements/p-93ea4214.entry.js +2 -0
  93. package/dist/lime-elements/p-93ea4214.entry.js.map +1 -0
  94. package/dist/lime-elements/{p-b0acf522.entry.js → p-99f5e70b.entry.js} +2 -2
  95. package/dist/lime-elements/{p-40542ccc.entry.js → p-bf527989.entry.js} +2 -2
  96. package/dist/lime-elements/p-c582027f.js +2 -0
  97. package/dist/lime-elements/p-c582027f.js.map +1 -0
  98. package/dist/lime-elements/{p-31f1cb08.entry.js → p-d76d70ce.entry.js} +2 -2
  99. package/dist/lime-elements/p-dc55f5ca.entry.js +2 -0
  100. package/dist/lime-elements/p-dc55f5ca.entry.js.map +1 -0
  101. package/dist/lime-elements/p-f1ec1eeb.entry.js +2 -0
  102. package/dist/lime-elements/p-f1ec1eeb.entry.js.map +1 -0
  103. package/dist/lime-elements/{p-5e976a59.entry.js → p-f529b510.entry.js} +2 -2
  104. package/dist/lime-elements/{p-42e889d8.entry.js → p-ffedb0be.entry.js} +2 -2
  105. package/dist/types/components/chart/chart.d.ts +13 -0
  106. package/dist/types/components/code-editor/code-editor.d.ts +40 -1
  107. package/dist/types/components.d.ts +68 -4
  108. package/dist/types/translations/da.d.ts +1 -0
  109. package/dist/types/translations/de.d.ts +1 -0
  110. package/dist/types/translations/en.d.ts +1 -0
  111. package/dist/types/translations/fi.d.ts +1 -0
  112. package/dist/types/translations/fr.d.ts +1 -0
  113. package/dist/types/translations/nl.d.ts +1 -0
  114. package/dist/types/translations/no.d.ts +1 -0
  115. package/dist/types/translations/sv.d.ts +1 -0
  116. package/package.json +1 -1
  117. package/dist/cjs/limel-breadcrumbs_8.cjs.entry.js.map +0 -1
  118. package/dist/cjs/limel-helper-line.cjs.entry.js +0 -45
  119. package/dist/cjs/limel-helper-line.cjs.entry.js.map +0 -1
  120. package/dist/cjs/translations-a42886f2.js.map +0 -1
  121. package/dist/esm/limel-breadcrumbs_8.entry.js.map +0 -1
  122. package/dist/esm/limel-helper-line.entry.js +0 -41
  123. package/dist/esm/limel-helper-line.entry.js.map +0 -1
  124. package/dist/esm/translations-9bfde9f4.js.map +0 -1
  125. package/dist/lime-elements/p-033a0aa9.entry.js.map +0 -1
  126. package/dist/lime-elements/p-2bf4fc20.entry.js +0 -2
  127. package/dist/lime-elements/p-2bf4fc20.entry.js.map +0 -1
  128. package/dist/lime-elements/p-5df2361b.js +0 -2
  129. package/dist/lime-elements/p-5df2361b.js.map +0 -1
  130. package/dist/lime-elements/p-84e00842.entry.js +0 -2
  131. package/dist/lime-elements/p-84e00842.entry.js.map +0 -1
  132. package/dist/lime-elements/p-e4bafb75.entry.js +0 -2
  133. package/dist/lime-elements/p-e4bafb75.entry.js.map +0 -1
  134. /package/dist/lime-elements/{p-ee5c4112.entry.js.map → p-13bd2797.entry.js.map} +0 -0
  135. /package/dist/lime-elements/{p-df9bcace.entry.js.map → p-158897dd.entry.js.map} +0 -0
  136. /package/dist/lime-elements/{p-e00465fa.entry.js.map → p-182ce303.entry.js.map} +0 -0
  137. /package/dist/lime-elements/{p-d79c85e2.entry.js.map → p-23de215d.entry.js.map} +0 -0
  138. /package/dist/lime-elements/{p-8ea3b80a.entry.js.map → p-3746c217.entry.js.map} +0 -0
  139. /package/dist/lime-elements/{p-aa1e7319.entry.js.map → p-61b2e426.entry.js.map} +0 -0
  140. /package/dist/lime-elements/{p-92aa9610.entry.js.map → p-68799403.entry.js.map} +0 -0
  141. /package/dist/lime-elements/{p-3311eaf3.entry.js.map → p-6d9fb8e8.entry.js.map} +0 -0
  142. /package/dist/lime-elements/{p-fbac230b.entry.js.map → p-7da20f22.entry.js.map} +0 -0
  143. /package/dist/lime-elements/{p-cd2f780a.entry.js.map → p-7e1a548a.entry.js.map} +0 -0
  144. /package/dist/lime-elements/{p-b0acf522.entry.js.map → p-99f5e70b.entry.js.map} +0 -0
  145. /package/dist/lime-elements/{p-40542ccc.entry.js.map → p-bf527989.entry.js.map} +0 -0
  146. /package/dist/lime-elements/{p-31f1cb08.entry.js.map → p-d76d70ce.entry.js.map} +0 -0
  147. /package/dist/lime-elements/{p-5e976a59.entry.js.map → p-f529b510.entry.js.map} +0 -0
  148. /package/dist/lime-elements/{p-42e889d8.entry.js.map → p-ffedb0be.entry.js.map} +0 -0
@@ -246,6 +246,59 @@ limel-spinner {
246
246
  height: inherit;
247
247
  }
248
248
 
249
+ :host(limel-chart[display-axis-labels][orientation=portrait]) {
250
+ --limel-chart-padding: 0.5rem 0.5rem 2rem
251
+ 1.25rem;
252
+ }
253
+
254
+ :host(limel-chart[display-axis-labels][orientation=landscape]) {
255
+ --limel-chart-padding: 0.5rem 0.5rem 1.25rem
256
+ 3rem;
257
+ }
258
+
259
+ :host(limel-chart[display-axis-labels][type=line]) table thead,
260
+ :host(limel-chart[display-axis-labels][type=line]) table th,
261
+ :host(limel-chart[display-axis-labels][type=dot]) table thead,
262
+ :host(limel-chart[display-axis-labels][type=dot]) table th,
263
+ :host(limel-chart[display-axis-labels][type=area]) table thead,
264
+ :host(limel-chart[display-axis-labels][type=area]) table th,
265
+ :host(limel-chart[display-axis-labels][type=bar]) table thead,
266
+ :host(limel-chart[display-axis-labels][type=bar]) table th {
267
+ all: unset;
268
+ }
269
+ :host(limel-chart[display-axis-labels][type=line]) table th,
270
+ :host(limel-chart[display-axis-labels][type=dot]) table th,
271
+ :host(limel-chart[display-axis-labels][type=area]) table th,
272
+ :host(limel-chart[display-axis-labels][type=bar]) table th {
273
+ position: absolute;
274
+ font-size: var(--limel-theme-default-small-font-size);
275
+ max-width: 100%;
276
+ max-height: 100%;
277
+ overflow: hidden;
278
+ white-space: nowrap;
279
+ text-overflow: ellipsis;
280
+ }
281
+
282
+ :host(limel-chart[display-axis-labels][orientation=portrait]) table thead th:first-of-type {
283
+ left: -1.25rem;
284
+ writing-mode: sideways-lr;
285
+ }
286
+ :host(limel-chart[display-axis-labels][orientation=portrait]) table thead th:last-of-type {
287
+ bottom: -2rem;
288
+ left: 50%;
289
+ transform: translateX(-50%);
290
+ }
291
+
292
+ :host(limel-chart[display-axis-labels][orientation=landscape]) table thead th:first-of-type {
293
+ bottom: -1.25rem;
294
+ left: 50%;
295
+ transform: translateX(-50%);
296
+ }
297
+ :host(limel-chart[display-axis-labels][orientation=landscape]) table thead th:last-of-type {
298
+ left: -3rem;
299
+ writing-mode: sideways-lr;
300
+ }
301
+
249
302
  :host(limel-chart[type=pie]) table,
250
303
  :host(limel-chart[type=doughnut]) table,
251
304
  :host(limel-chart[type=ring]) table {
@@ -26,6 +26,7 @@ const DEFAULT_INCREMENT_SIZE = 10;
26
26
  * @exampleComponent limel-example-chart-axis-increment
27
27
  * @exampleComponent limel-example-chart-clickable-items
28
28
  * @exampleComponent limel-example-chart-accessibility
29
+ * @exampleComponent limel-example-chart-axis-labels
29
30
  * @exampleComponent limel-example-chart-styling
30
31
  * @exampleComponent limel-example-chart-creative-styling
31
32
  * @beta
@@ -54,6 +55,8 @@ export class Chart {
54
55
  this.language = 'en';
55
56
  this.accessibleLabel = undefined;
56
57
  this.accessibleItemsLabel = undefined;
58
+ this.accessibleValuesLabel = undefined;
59
+ this.displayAxisLabels = false;
57
60
  this.items = undefined;
58
61
  this.type = 'stacked-bar';
59
62
  this.orientation = 'landscape';
@@ -79,7 +82,8 @@ export class Chart {
79
82
  return h("caption", null, this.accessibleLabel);
80
83
  }
81
84
  renderTableHeader() {
82
- return (h("thead", null, h("tr", null, h("th", { scope: "col" }, this.accessibleItemsLabel), h("th", { scope: "col" }, translate.get('value', this.language)))));
85
+ var _a, _b;
86
+ return (h("thead", null, h("tr", null, h("th", { scope: "col" }, (_a = this.accessibleItemsLabel) !== null && _a !== void 0 ? _a : translate.get('items', this.language)), h("th", { scope: "col" }, (_b = this.accessibleValuesLabel) !== null && _b !== void 0 ? _b : translate.get('value', this.language)))));
83
87
  }
84
88
  renderAxises() {
85
89
  if (!['bar', 'dot', 'area', 'line'].includes(this.type)) {
@@ -112,7 +116,7 @@ export class Chart {
112
116
  offset = cumulativeOffset;
113
117
  cumulativeOffset += size;
114
118
  }
115
- return (h("tr", { style: this.getItemStyle(item, index, size, offset), class: this.getItemClass(item), key: itemId, id: itemId, "data-index": index, tabIndex: 0, role: item.clickable ? 'button' : null, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, h("th", null, this.getItemText(item)), h("td", null, this.getFormattedValue(item)), this.renderTooltip(item, itemId, size)));
119
+ return (h("tr", { style: this.getItemStyle(item, index, size, offset), class: this.getItemClass(item), key: itemId, id: itemId, "data-index": index, tabIndex: 0, role: item.clickable ? 'button' : null, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, h("td", null, this.getItemText(item)), h("td", null, this.getFormattedValue(item)), this.renderTooltip(item, itemId, size)));
116
120
  });
117
121
  }
118
122
  getItemStyle(item, index, size, offset) {
@@ -317,11 +321,46 @@ export class Chart {
317
321
  "optional": true,
318
322
  "docs": {
319
323
  "tags": [],
320
- "text": "Helps users of assistive technologies to understand\nwhat the items in the chart represent."
324
+ "text": "Helps users of assistive technologies to understand\nwhat the items in the chart represent.\nDefaults to the translation for \"items\" in the current language."
321
325
  },
322
326
  "attribute": "accessible-items-label",
323
327
  "reflect": true
324
328
  },
329
+ "accessibleValuesLabel": {
330
+ "type": "string",
331
+ "mutable": false,
332
+ "complexType": {
333
+ "original": "string",
334
+ "resolved": "string",
335
+ "references": {}
336
+ },
337
+ "required": false,
338
+ "optional": true,
339
+ "docs": {
340
+ "tags": [],
341
+ "text": "Helps users of assistive technologies to understand\nwhat the values in the chart represent.\nDefaults to the translation for \"value\" in the current language."
342
+ },
343
+ "attribute": "accessible-values-label",
344
+ "reflect": true
345
+ },
346
+ "displayAxisLabels": {
347
+ "type": "boolean",
348
+ "mutable": false,
349
+ "complexType": {
350
+ "original": "boolean",
351
+ "resolved": "boolean",
352
+ "references": {}
353
+ },
354
+ "required": false,
355
+ "optional": false,
356
+ "docs": {
357
+ "tags": [],
358
+ "text": "When set to true, renders visible labels for X and Y axes.\nOnly affects chart types with X and Y axes, such as area, bar, and line charts."
359
+ },
360
+ "attribute": "display-axis-labels",
361
+ "reflect": true,
362
+ "defaultValue": "false"
363
+ },
325
364
  "items": {
326
365
  "type": "unknown",
327
366
  "mutable": false,
@@ -1 +1 @@
1
- {"version":3,"file":"chart.js","sourceRoot":"","sources":["../../../src/components/chart/chart.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Prop, Watch } from '@stencil/core';\nimport { Languages } from '../date-picker/date.types';\nimport translate from '../../global/translations';\nimport { createRandomString } from '../../util/random-string';\nimport { ChartItem } from './chart.types';\n\nconst PERCENT = 100;\nconst DEFAULT_INCREMENT_SIZE = 10;\n\n/**\n * A chart is a graphical representation of data, in which\n * visual symbols such as such bars, dots, lines, or slices, represent\n * each data point, in comparison to others.\n *\n * @exampleComponent limel-example-chart-stacked-bar\n * @exampleComponent limel-example-chart-orientation\n * @exampleComponent limel-example-chart-max-value\n * @exampleComponent limel-example-chart-type-bar\n * @exampleComponent limel-example-chart-type-dot\n * @exampleComponent limel-example-chart-type-area\n * @exampleComponent limel-example-chart-type-line\n * @exampleComponent limel-example-chart-type-pie\n * @exampleComponent limel-example-chart-type-doughnut\n * @exampleComponent limel-example-chart-type-ring\n * @exampleComponent limel-example-chart-type-gantt\n * @exampleComponent limel-example-chart-type-nps\n * @exampleComponent limel-example-chart-multi-axis\n * @exampleComponent limel-example-chart-multi-axis-with-negative-start-values\n * @exampleComponent limel-example-chart-multi-axis-area-with-negative-start-values\n * @exampleComponent limel-example-chart-axis-increment\n * @exampleComponent limel-example-chart-clickable-items\n * @exampleComponent limel-example-chart-accessibility\n * @exampleComponent limel-example-chart-styling\n * @exampleComponent limel-example-chart-creative-styling\n * @beta\n */\n\n@Component({\n tag: 'limel-chart',\n shadow: true,\n styleUrl: 'chart.scss',\n})\nexport class Chart {\n /**\n * Defines the language for translations.\n * Will translate the translatable strings on the components.\n */\n @Prop({ reflect: true })\n public language: Languages = 'en';\n\n /**\n * Helps users of assistive technologies to understand\n * the context of the chart, and what is being displayed.\n */\n @Prop({ reflect: true })\n public accessibleLabel?: string;\n\n /**\n * Helps users of assistive technologies to understand\n * what the items in the chart represent.\n */\n @Prop({ reflect: true })\n public accessibleItemsLabel?: string;\n\n /**\n * List of items in the chart,\n * each representing a data point.\n */\n @Prop()\n public items!: ChartItem[];\n\n /**\n * Defines how items are visualized in the chart.\n */\n @Prop({ reflect: true })\n public type?:\n | 'area'\n | 'bar'\n | 'doughnut'\n | 'line'\n | 'nps'\n | 'pie'\n | 'ring'\n | 'dot'\n | 'stacked-bar' = 'stacked-bar';\n\n /**\n * Defines whether the chart is intended to be displayed wide or tall.\n * Does not have any effect on chart types which generate circular forms.\n */\n @Prop({ reflect: true })\n public orientation?: 'landscape' | 'portrait' = 'landscape';\n\n /**\n * Specifies the range that items' values could be in.\n * This is used in calculation of the size of the items in the chart.\n * When not provided, the sum of all values in the items will be considered as the range.\n */\n @Prop({ reflect: true })\n public maxValue?: number;\n\n /**\n * Specifies the increment for the axis lines.\n */\n @Prop({ reflect: true })\n public axisIncrement?: number;\n\n /**\n * Indicates whether the chart is in a loading state.\n */\n @Prop({ reflect: true })\n public loading: boolean = false;\n\n private range: {\n minValue: number;\n maxValue: number;\n totalRange: number;\n };\n\n /**\n * Fired when a chart item with `clickable` set to `true` is clicked\n */\n @Event()\n public interact: EventEmitter<ChartItem>;\n\n public componentWillLoad() {\n this.recalculateRangeData();\n }\n\n public render() {\n if (this.loading) {\n return <limel-spinner limeBranded={false} />;\n }\n\n return (\n <table\n aria-busy={this.loading ? 'true' : 'false'}\n aria-live=\"polite\"\n style={{\n '--limel-chart-number-of-items':\n this.items.length.toString(),\n }}\n >\n {this.renderCaption()}\n {this.renderTableHeader()}\n {this.renderAxises()}\n <tbody class=\"chart\">{this.renderItems()}</tbody>\n </table>\n );\n }\n\n private renderCaption() {\n if (!this.accessibleLabel) {\n return;\n }\n\n return <caption>{this.accessibleLabel}</caption>;\n }\n\n private renderTableHeader() {\n return (\n <thead>\n <tr>\n <th scope=\"col\">{this.accessibleItemsLabel}</th>\n <th scope=\"col\">{translate.get('value', this.language)}</th>\n </tr>\n </thead>\n );\n }\n\n private renderAxises() {\n if (!['bar', 'dot', 'area', 'line'].includes(this.type)) {\n return;\n }\n\n const { minValue, maxValue } = this.range;\n const lines = [];\n const adjustedMinRange =\n Math.floor(minValue / this.axisIncrement) * this.axisIncrement;\n const adjustedMaxRange =\n Math.ceil(maxValue / this.axisIncrement) * this.axisIncrement;\n\n for (\n let value = adjustedMinRange;\n value <= adjustedMaxRange;\n value += this.axisIncrement\n ) {\n lines.push(\n <div\n class={{\n 'axis-line': true,\n 'zero-line': value === 0,\n }}\n role=\"presentation\"\n >\n <limel-badge label={value} />\n </div>\n );\n }\n\n return (\n <div class=\"axises\" role=\"presentation\">\n {lines}\n </div>\n );\n }\n\n private renderItems() {\n if (!this.items?.length) {\n return;\n }\n\n let cumulativeOffset = 0;\n\n return this.items.map((item, index) => {\n const itemId = createRandomString();\n const sizeAndOffset = this.calculateSizeAndOffset(item);\n const size = sizeAndOffset.size;\n let offset = sizeAndOffset.offset;\n\n if (this.type === 'pie' || this.type === 'doughnut') {\n offset = cumulativeOffset;\n cumulativeOffset += size;\n }\n\n return (\n <tr\n style={this.getItemStyle(item, index, size, offset)}\n class={this.getItemClass(item)}\n key={itemId}\n id={itemId}\n data-index={index}\n tabIndex={0}\n role={item.clickable ? 'button' : null}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n >\n <th>{this.getItemText(item)}</th>\n <td>{this.getFormattedValue(item)}</td>\n {this.renderTooltip(item, itemId, size)}\n </tr>\n );\n });\n }\n\n private getItemStyle(\n item: ChartItem,\n index: number,\n size: number,\n offset: number\n ): Record<string, string> {\n const style: Record<string, string> = {\n '--limel-chart-item-offset': `${offset}`,\n '--limel-chart-item-size': `${size}`,\n '--limel-chart-item-index': `${index}`,\n '--limel-chart-item-value': `${item.value}`,\n };\n\n if (item.color) {\n style['--limel-chart-item-color'] = item.color;\n }\n\n if (this.type === 'line' || this.type === 'area') {\n const nextItem = this.calculateSizeAndOffset(this.items[index + 1]);\n\n style['--limel-chart-next-item-size'] = `${nextItem.size}`;\n style['--limel-chart-next-item-offset'] = `${nextItem.offset}`;\n }\n\n return style;\n }\n\n private getItemClass(item: ChartItem) {\n return {\n item: true,\n 'has-start-value': Array.isArray(item.value),\n 'has-negative-value-only':\n this.getMaximumValue(item) < 0 && !this.isRangeItem(item),\n };\n }\n\n private calculateSizeAndOffset(item?: ChartItem) {\n const { minValue, totalRange } = this.range;\n if (!item) {\n return {\n size: 0,\n offset: 0,\n };\n }\n\n let startValue = 0;\n if (this.isRangeItem(item)) {\n startValue = this.getMinimumValue(item);\n }\n\n const normalizedStart =\n ((startValue - minValue) / totalRange) * PERCENT;\n const normalizedEnd =\n ((this.getMaximumValue(item) - minValue) / totalRange) * PERCENT;\n\n return {\n size: normalizedEnd - normalizedStart,\n offset: normalizedStart,\n };\n }\n\n private getFormattedValue(item: ChartItem): string {\n const { value, formattedValue } = item;\n\n if (formattedValue) {\n return formattedValue;\n }\n\n if (Array.isArray(value)) {\n return `${value[0]} — ${value[1]}`;\n }\n\n return `${value}`;\n }\n\n private getItemText(item: ChartItem): string {\n return item.text;\n }\n\n private renderTooltip(item: ChartItem, itemId: string, size: number) {\n const text = this.getItemText(item);\n const PERCENT_DECIMAL = 2;\n const formattedValue = this.getFormattedValue(item);\n\n const tooltipProps: any = {\n label: text,\n helperLabel: formattedValue,\n elementId: itemId,\n };\n\n if (this.type !== 'bar' && this.type !== 'dot' && this.type !== 'nps') {\n tooltipProps.label = `${text} (${size.toFixed(PERCENT_DECIMAL)}%)`;\n }\n\n return (\n <limel-tooltip\n {...tooltipProps}\n openDirection={\n this.orientation === 'portrait' ? 'right' : 'top'\n }\n />\n );\n }\n\n private calculateRange() {\n if (this.range) {\n return this.range;\n }\n\n const minRange = Math.min(0, ...this.items.map(this.getMinimumValue));\n const maxRange = Math.max(...this.items.map(this.getMaximumValue));\n const totalSum = this.items.reduce(\n (sum, item) => sum + this.getMaximumValue(item),\n 0\n );\n\n let finalMaxRange = this.maxValue ?? maxRange;\n if (\n (this.type === 'pie' || this.type === 'doughnut') &&\n !this.maxValue\n ) {\n finalMaxRange = totalSum;\n }\n\n if (!this.axisIncrement) {\n this.axisIncrement = this.calculateAxisIncrement(this.items);\n }\n\n const visualMaxValue =\n Math.ceil(finalMaxRange / this.axisIncrement) * this.axisIncrement;\n const visualMinValue =\n Math.floor(minRange / this.axisIncrement) * this.axisIncrement;\n const totalRange = visualMaxValue - visualMinValue;\n\n return {\n minValue: visualMinValue,\n maxValue: visualMaxValue,\n totalRange: totalRange,\n };\n }\n\n private calculateAxisIncrement(\n items: ChartItem[],\n steps: number = DEFAULT_INCREMENT_SIZE\n ) {\n const maxValue = Math.max(\n ...items.map((item) => {\n const value = item.value;\n if (Array.isArray(value)) {\n return Math.max(...value);\n }\n\n return value;\n })\n );\n\n const roughStep = maxValue / steps;\n\n const magnitude = 10 ** Math.floor(Math.log10(roughStep));\n\n return Math.ceil(roughStep / magnitude) * magnitude;\n }\n\n private getMinimumValue(item: ChartItem): number {\n const value = item.value;\n\n return Array.isArray(value) ? Math.min(...value) : value;\n }\n\n private getMaximumValue(item: ChartItem): number {\n const value = item.value;\n\n return Array.isArray(value) ? Math.max(...value) : value;\n }\n\n private isRangeItem(item: ChartItem): item is ChartItem<[number, number]> {\n return Array.isArray(item.value);\n }\n\n @Watch('items')\n @Watch('axisIncrement')\n @Watch('maxValue')\n handleChange() {\n this.range = null;\n this.recalculateRangeData();\n }\n\n private recalculateRangeData() {\n this.range = this.calculateRange();\n }\n\n private getClickableItem(target: HTMLElement): ChartItem | undefined {\n const index = target.dataset.index;\n if (index === undefined) {\n return;\n }\n\n const item = this.items[Number(index)];\n if (!item.clickable) {\n return;\n }\n\n return item;\n }\n\n private readonly handleClick = (event: MouseEvent) => {\n const item = this.getClickableItem(event.currentTarget as HTMLElement);\n if (!item) {\n return;\n }\n\n event.stopPropagation();\n this.interact.emit(item);\n };\n\n private readonly handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n\n const item = this.getClickableItem(event.currentTarget as HTMLElement);\n if (!item) {\n return;\n }\n\n event.preventDefault();\n this.interact.emit(item);\n };\n}\n"]}
1
+ {"version":3,"file":"chart.js","sourceRoot":"","sources":["../../../src/components/chart/chart.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Prop, Watch } from '@stencil/core';\nimport { Languages } from '../date-picker/date.types';\nimport translate from '../../global/translations';\nimport { createRandomString } from '../../util/random-string';\nimport { ChartItem } from './chart.types';\n\nconst PERCENT = 100;\nconst DEFAULT_INCREMENT_SIZE = 10;\n\n/**\n * A chart is a graphical representation of data, in which\n * visual symbols such as such bars, dots, lines, or slices, represent\n * each data point, in comparison to others.\n *\n * @exampleComponent limel-example-chart-stacked-bar\n * @exampleComponent limel-example-chart-orientation\n * @exampleComponent limel-example-chart-max-value\n * @exampleComponent limel-example-chart-type-bar\n * @exampleComponent limel-example-chart-type-dot\n * @exampleComponent limel-example-chart-type-area\n * @exampleComponent limel-example-chart-type-line\n * @exampleComponent limel-example-chart-type-pie\n * @exampleComponent limel-example-chart-type-doughnut\n * @exampleComponent limel-example-chart-type-ring\n * @exampleComponent limel-example-chart-type-gantt\n * @exampleComponent limel-example-chart-type-nps\n * @exampleComponent limel-example-chart-multi-axis\n * @exampleComponent limel-example-chart-multi-axis-with-negative-start-values\n * @exampleComponent limel-example-chart-multi-axis-area-with-negative-start-values\n * @exampleComponent limel-example-chart-axis-increment\n * @exampleComponent limel-example-chart-clickable-items\n * @exampleComponent limel-example-chart-accessibility\n * @exampleComponent limel-example-chart-axis-labels\n * @exampleComponent limel-example-chart-styling\n * @exampleComponent limel-example-chart-creative-styling\n * @beta\n */\n\n@Component({\n tag: 'limel-chart',\n shadow: true,\n styleUrl: 'chart.scss',\n})\nexport class Chart {\n /**\n * Defines the language for translations.\n * Will translate the translatable strings on the components.\n */\n @Prop({ reflect: true })\n public language: Languages = 'en';\n\n /**\n * Helps users of assistive technologies to understand\n * the context of the chart, and what is being displayed.\n */\n @Prop({ reflect: true })\n public accessibleLabel?: string;\n\n /**\n * Helps users of assistive technologies to understand\n * what the items in the chart represent.\n * Defaults to the translation for \"items\" in the current language.\n */\n @Prop({ reflect: true })\n public accessibleItemsLabel?: string;\n\n /**\n * Helps users of assistive technologies to understand\n * what the values in the chart represent.\n * Defaults to the translation for \"value\" in the current language.\n */\n @Prop({ reflect: true })\n public accessibleValuesLabel?: string;\n\n /**\n * When set to true, renders visible labels for X and Y axes.\n * Only affects chart types with X and Y axes, such as area, bar, and line charts.\n */\n\n @Prop({ reflect: true })\n public displayAxisLabels = false;\n\n /**\n * List of items in the chart,\n * each representing a data point.\n */\n @Prop()\n public items!: ChartItem[];\n\n /**\n * Defines how items are visualized in the chart.\n */\n @Prop({ reflect: true })\n public type?:\n | 'area'\n | 'bar'\n | 'doughnut'\n | 'line'\n | 'nps'\n | 'pie'\n | 'ring'\n | 'dot'\n | 'stacked-bar' = 'stacked-bar';\n\n /**\n * Defines whether the chart is intended to be displayed wide or tall.\n * Does not have any effect on chart types which generate circular forms.\n */\n @Prop({ reflect: true })\n public orientation?: 'landscape' | 'portrait' = 'landscape';\n\n /**\n * Specifies the range that items' values could be in.\n * This is used in calculation of the size of the items in the chart.\n * When not provided, the sum of all values in the items will be considered as the range.\n */\n @Prop({ reflect: true })\n public maxValue?: number;\n\n /**\n * Specifies the increment for the axis lines.\n */\n @Prop({ reflect: true })\n public axisIncrement?: number;\n\n /**\n * Indicates whether the chart is in a loading state.\n */\n @Prop({ reflect: true })\n public loading: boolean = false;\n\n private range: {\n minValue: number;\n maxValue: number;\n totalRange: number;\n };\n\n /**\n * Fired when a chart item with `clickable` set to `true` is clicked\n */\n @Event()\n public interact: EventEmitter<ChartItem>;\n\n public componentWillLoad() {\n this.recalculateRangeData();\n }\n\n public render() {\n if (this.loading) {\n return <limel-spinner limeBranded={false} />;\n }\n\n return (\n <table\n aria-busy={this.loading ? 'true' : 'false'}\n aria-live=\"polite\"\n style={{\n '--limel-chart-number-of-items':\n this.items.length.toString(),\n }}\n >\n {this.renderCaption()}\n {this.renderTableHeader()}\n {this.renderAxises()}\n <tbody class=\"chart\">{this.renderItems()}</tbody>\n </table>\n );\n }\n\n private renderCaption() {\n if (!this.accessibleLabel) {\n return;\n }\n\n return <caption>{this.accessibleLabel}</caption>;\n }\n\n private renderTableHeader() {\n return (\n <thead>\n <tr>\n <th scope=\"col\">\n {this.accessibleItemsLabel ??\n translate.get('items', this.language)}\n </th>\n <th scope=\"col\">\n {this.accessibleValuesLabel ??\n translate.get('value', this.language)}\n </th>\n </tr>\n </thead>\n );\n }\n\n private renderAxises() {\n if (!['bar', 'dot', 'area', 'line'].includes(this.type)) {\n return;\n }\n\n const { minValue, maxValue } = this.range;\n const lines = [];\n const adjustedMinRange =\n Math.floor(minValue / this.axisIncrement) * this.axisIncrement;\n const adjustedMaxRange =\n Math.ceil(maxValue / this.axisIncrement) * this.axisIncrement;\n\n for (\n let value = adjustedMinRange;\n value <= adjustedMaxRange;\n value += this.axisIncrement\n ) {\n lines.push(\n <div\n class={{\n 'axis-line': true,\n 'zero-line': value === 0,\n }}\n role=\"presentation\"\n >\n <limel-badge label={value} />\n </div>\n );\n }\n\n return (\n <div class=\"axises\" role=\"presentation\">\n {lines}\n </div>\n );\n }\n\n private renderItems() {\n if (!this.items?.length) {\n return;\n }\n\n let cumulativeOffset = 0;\n\n return this.items.map((item, index) => {\n const itemId = createRandomString();\n const sizeAndOffset = this.calculateSizeAndOffset(item);\n const size = sizeAndOffset.size;\n let offset = sizeAndOffset.offset;\n\n if (this.type === 'pie' || this.type === 'doughnut') {\n offset = cumulativeOffset;\n cumulativeOffset += size;\n }\n\n return (\n <tr\n style={this.getItemStyle(item, index, size, offset)}\n class={this.getItemClass(item)}\n key={itemId}\n id={itemId}\n data-index={index}\n tabIndex={0}\n role={item.clickable ? 'button' : null}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n >\n <td>{this.getItemText(item)}</td>\n <td>{this.getFormattedValue(item)}</td>\n {this.renderTooltip(item, itemId, size)}\n </tr>\n );\n });\n }\n\n private getItemStyle(\n item: ChartItem,\n index: number,\n size: number,\n offset: number\n ): Record<string, string> {\n const style: Record<string, string> = {\n '--limel-chart-item-offset': `${offset}`,\n '--limel-chart-item-size': `${size}`,\n '--limel-chart-item-index': `${index}`,\n '--limel-chart-item-value': `${item.value}`,\n };\n\n if (item.color) {\n style['--limel-chart-item-color'] = item.color;\n }\n\n if (this.type === 'line' || this.type === 'area') {\n const nextItem = this.calculateSizeAndOffset(this.items[index + 1]);\n\n style['--limel-chart-next-item-size'] = `${nextItem.size}`;\n style['--limel-chart-next-item-offset'] = `${nextItem.offset}`;\n }\n\n return style;\n }\n\n private getItemClass(item: ChartItem) {\n return {\n item: true,\n 'has-start-value': Array.isArray(item.value),\n 'has-negative-value-only':\n this.getMaximumValue(item) < 0 && !this.isRangeItem(item),\n };\n }\n\n private calculateSizeAndOffset(item?: ChartItem) {\n const { minValue, totalRange } = this.range;\n if (!item) {\n return {\n size: 0,\n offset: 0,\n };\n }\n\n let startValue = 0;\n if (this.isRangeItem(item)) {\n startValue = this.getMinimumValue(item);\n }\n\n const normalizedStart =\n ((startValue - minValue) / totalRange) * PERCENT;\n const normalizedEnd =\n ((this.getMaximumValue(item) - minValue) / totalRange) * PERCENT;\n\n return {\n size: normalizedEnd - normalizedStart,\n offset: normalizedStart,\n };\n }\n\n private getFormattedValue(item: ChartItem): string {\n const { value, formattedValue } = item;\n\n if (formattedValue) {\n return formattedValue;\n }\n\n if (Array.isArray(value)) {\n return `${value[0]} — ${value[1]}`;\n }\n\n return `${value}`;\n }\n\n private getItemText(item: ChartItem): string {\n return item.text;\n }\n\n private renderTooltip(item: ChartItem, itemId: string, size: number) {\n const text = this.getItemText(item);\n const PERCENT_DECIMAL = 2;\n const formattedValue = this.getFormattedValue(item);\n\n const tooltipProps: any = {\n label: text,\n helperLabel: formattedValue,\n elementId: itemId,\n };\n\n if (this.type !== 'bar' && this.type !== 'dot' && this.type !== 'nps') {\n tooltipProps.label = `${text} (${size.toFixed(PERCENT_DECIMAL)}%)`;\n }\n\n return (\n <limel-tooltip\n {...tooltipProps}\n openDirection={\n this.orientation === 'portrait' ? 'right' : 'top'\n }\n />\n );\n }\n\n private calculateRange() {\n if (this.range) {\n return this.range;\n }\n\n const minRange = Math.min(0, ...this.items.map(this.getMinimumValue));\n const maxRange = Math.max(...this.items.map(this.getMaximumValue));\n const totalSum = this.items.reduce(\n (sum, item) => sum + this.getMaximumValue(item),\n 0\n );\n\n let finalMaxRange = this.maxValue ?? maxRange;\n if (\n (this.type === 'pie' || this.type === 'doughnut') &&\n !this.maxValue\n ) {\n finalMaxRange = totalSum;\n }\n\n if (!this.axisIncrement) {\n this.axisIncrement = this.calculateAxisIncrement(this.items);\n }\n\n const visualMaxValue =\n Math.ceil(finalMaxRange / this.axisIncrement) * this.axisIncrement;\n const visualMinValue =\n Math.floor(minRange / this.axisIncrement) * this.axisIncrement;\n const totalRange = visualMaxValue - visualMinValue;\n\n return {\n minValue: visualMinValue,\n maxValue: visualMaxValue,\n totalRange: totalRange,\n };\n }\n\n private calculateAxisIncrement(\n items: ChartItem[],\n steps: number = DEFAULT_INCREMENT_SIZE\n ) {\n const maxValue = Math.max(\n ...items.map((item) => {\n const value = item.value;\n if (Array.isArray(value)) {\n return Math.max(...value);\n }\n\n return value;\n })\n );\n\n const roughStep = maxValue / steps;\n\n const magnitude = 10 ** Math.floor(Math.log10(roughStep));\n\n return Math.ceil(roughStep / magnitude) * magnitude;\n }\n\n private getMinimumValue(item: ChartItem): number {\n const value = item.value;\n\n return Array.isArray(value) ? Math.min(...value) : value;\n }\n\n private getMaximumValue(item: ChartItem): number {\n const value = item.value;\n\n return Array.isArray(value) ? Math.max(...value) : value;\n }\n\n private isRangeItem(item: ChartItem): item is ChartItem<[number, number]> {\n return Array.isArray(item.value);\n }\n\n @Watch('items')\n @Watch('axisIncrement')\n @Watch('maxValue')\n handleChange() {\n this.range = null;\n this.recalculateRangeData();\n }\n\n private recalculateRangeData() {\n this.range = this.calculateRange();\n }\n\n private getClickableItem(target: HTMLElement): ChartItem | undefined {\n const index = target.dataset.index;\n if (index === undefined) {\n return;\n }\n\n const item = this.items[Number(index)];\n if (!item.clickable) {\n return;\n }\n\n return item;\n }\n\n private readonly handleClick = (event: MouseEvent) => {\n const item = this.getClickableItem(event.currentTarget as HTMLElement);\n if (!item) {\n return;\n }\n\n event.stopPropagation();\n this.interact.emit(item);\n };\n\n private readonly handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n\n const item = this.getClickableItem(event.currentTarget as HTMLElement);\n if (!item) {\n return;\n }\n\n event.preventDefault();\n this.interact.emit(item);\n };\n}\n"]}
@@ -538,6 +538,8 @@ span.CodeMirror-selectedtext { background: none; }
538
538
  */
539
539
  :host {
540
540
  display: flex;
541
+ flex-direction: column;
542
+ width: 100%;
541
543
  font-size: var(--code-editor-font-size, 0.8125rem);
542
544
  --code-editor-neutral-text-color: var(--contrast-1100);
543
545
  --code-editor-background-color: var(--contrast-200);
@@ -685,6 +687,7 @@ span.CodeMirror-selectedtext { background: none; }
685
687
  display: flex;
686
688
  align-items: stretch;
687
689
  width: 100%;
690
+ min-height: 2.5rem;
688
691
  }
689
692
  .editor.readonly .CodeMirror-focused .CodeMirror-cursors {
690
693
  visibility: visible !important;
@@ -722,6 +725,9 @@ span.CodeMirror-selectedtext { background: none; }
722
725
  border-color: rgba(var(--code-editor-neutral-text-color), 0.5);
723
726
  border-width: 0.125rem;
724
727
  }
728
+ .cm-s-lime .CodeMirror-lines {
729
+ padding: 0.25rem 0;
730
+ }
725
731
  .cm-s-lime .CodeMirror-activeline-background {
726
732
  background: rgba(var(--code-editor-selection-lowlight-color), 0.5);
727
733
  }
@@ -794,4 +800,27 @@ span.CodeMirror-selectedtext { background: none; }
794
800
  }
795
801
  .cm-s-lime .CodeMirror-foldgutter-folded {
796
802
  opacity: 0.7;
803
+ }
804
+
805
+ limel-notched-outline {
806
+ flex-grow: 1;
807
+ }
808
+
809
+ :host(limel-code-editor:focus),
810
+ :host(limel-code-editor:focus-visible),
811
+ :host(limel-code-editor:focus-within) {
812
+ --limel-h-l-grid-template-rows-transition-speed: 0.46s;
813
+ --limel-h-l-grid-template-rows: 1fr;
814
+ }
815
+
816
+ :host(limel-code-editor) {
817
+ --limel-h-l-grid-template-rows-transition-speed: 0.3s;
818
+ --limel-h-l-grid-template-rows: 0fr;
819
+ }
820
+
821
+ :host(limel-code-editor:focus) limel-helper-line,
822
+ :host(limel-code-editor:focus-visible) limel-helper-line,
823
+ :host(limel-code-editor:focus-within) limel-helper-line,
824
+ :host(limel-code-editor:hover) limel-helper-line {
825
+ will-change: grid-template-rows;
797
826
  }
@@ -1,4 +1,5 @@
1
- import { h, } from '@stencil/core';
1
+ import { h, Host, } from '@stencil/core';
2
+ import { createRandomString } from '../../util/random-string';
2
3
  import CodeMirror from 'codemirror';
3
4
  import 'codemirror/mode/css/css';
4
5
  import 'codemirror/mode/htmlmixed/htmlmixed';
@@ -17,6 +18,7 @@ import jslint from 'jsonlint-mod';
17
18
  * @exampleComponent limel-example-code-editor
18
19
  * @exampleComponent limel-example-code-editor-readonly-with-line-numbers
19
20
  * @exampleComponent limel-example-code-editor-fold-lint-wrap
21
+ * @exampleComponent limel-example-code-editor-composite
20
22
  */
21
23
  export class CodeEditor {
22
24
  constructor() {
@@ -35,15 +37,28 @@ export class CodeEditor {
35
37
  }
36
38
  this.editor.refresh();
37
39
  };
40
+ this.renderHelperLine = () => {
41
+ if (!this.helperText) {
42
+ return;
43
+ }
44
+ return (h("limel-helper-line", { helperText: this.helperText, helperTextId: this.helperTextId, invalid: this.invalid }));
45
+ };
38
46
  this.value = '';
39
47
  this.language = undefined;
40
48
  this.readonly = false;
49
+ this.disabled = false;
50
+ this.invalid = false;
51
+ this.required = false;
52
+ this.label = undefined;
53
+ this.helperText = undefined;
41
54
  this.lineNumbers = false;
42
55
  this.lineWrapping = false;
43
56
  this.fold = false;
44
57
  this.lint = false;
45
58
  this.colorScheme = 'auto';
46
59
  this.random = undefined;
60
+ this.labelId = createRandomString();
61
+ this.helperTextId = createRandomString();
47
62
  }
48
63
  connectedCallback() {
49
64
  this.observer = new ResizeObserver(this.handleResize);
@@ -67,6 +82,7 @@ export class CodeEditor {
67
82
  return;
68
83
  }
69
84
  this.editor = this.createEditor();
85
+ this.updateInputFieldAccessibilityAttributes();
70
86
  }
71
87
  watchValue(newValue) {
72
88
  if (!this.editor) {
@@ -80,6 +96,23 @@ export class CodeEditor {
80
96
  }
81
97
  this.editor.getDoc().setValue(newValue || '');
82
98
  }
99
+ watchDisabled() {
100
+ this.updateEditorReadOnlyState();
101
+ this.updateInputFieldAccessibilityAttributes();
102
+ }
103
+ watchReadonly() {
104
+ this.updateEditorReadOnlyState();
105
+ this.updateInputFieldAccessibilityAttributes();
106
+ }
107
+ watchInvalid() {
108
+ this.updateInputFieldAccessibilityAttributes();
109
+ }
110
+ watchRequired() {
111
+ this.updateInputFieldAccessibilityAttributes();
112
+ }
113
+ watchHelperText() {
114
+ this.updateInputFieldAccessibilityAttributes();
115
+ }
83
116
  createEditor() {
84
117
  const options = this.getOptions();
85
118
  const editor = CodeMirror(this.host.shadowRoot.querySelector('.editor'), options);
@@ -130,7 +163,7 @@ export class CodeEditor {
130
163
  mode: mode,
131
164
  value: this.value || '',
132
165
  theme: theme,
133
- readOnly: this.readonly,
166
+ readOnly: this.getReadOnlyOption(),
134
167
  tabSize: TAB_SIZE,
135
168
  indentUnit: TAB_SIZE,
136
169
  lineNumbers: this.lineNumbers,
@@ -152,11 +185,12 @@ export class CodeEditor {
152
185
  render() {
153
186
  const classList = {
154
187
  editor: true,
155
- readonly: this.readonly,
188
+ readonly: this.readonly || this.disabled,
189
+ disabled: this.disabled,
156
190
  'is-dark-mode': this.isDarkMode(),
157
191
  'is-light-mode': !this.isDarkMode(),
158
192
  };
159
- return h("div", { class: classList });
193
+ return (h(Host, null, h("limel-notched-outline", { labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, disabled: this.disabled, readonly: this.readonly, hasValue: !!this.value, hasFloatingLabel: true }, h("div", { slot: "content", class: classList })), this.renderHelperLine()));
160
194
  }
161
195
  forceRedraw() {
162
196
  // eslint-disable-next-line sonarjs/pseudo-random
@@ -165,6 +199,60 @@ export class CodeEditor {
165
199
  get darkMode() {
166
200
  return matchMedia('(prefers-color-scheme: dark)');
167
201
  }
202
+ updateEditorReadOnlyState() {
203
+ if (!this.editor) {
204
+ return;
205
+ }
206
+ this.editor.setOption('readOnly', this.getReadOnlyOption());
207
+ }
208
+ getReadOnlyOption() {
209
+ if (this.disabled) {
210
+ return 'nocursor';
211
+ }
212
+ return this.readonly;
213
+ }
214
+ updateInputFieldAccessibilityAttributes() {
215
+ if (!this.editor) {
216
+ return;
217
+ }
218
+ const inputField = this.editor.getInputField();
219
+ if (!inputField) {
220
+ return;
221
+ }
222
+ inputField.id = this.labelId;
223
+ if (this.helperText) {
224
+ inputField.setAttribute('aria-describedby', this.helperTextId);
225
+ inputField.setAttribute('aria-controls', this.helperTextId);
226
+ }
227
+ else {
228
+ inputField.removeAttribute('aria-describedby');
229
+ inputField.removeAttribute('aria-controls');
230
+ }
231
+ if (this.required) {
232
+ inputField.setAttribute('aria-required', 'true');
233
+ }
234
+ else {
235
+ inputField.removeAttribute('aria-required');
236
+ }
237
+ if (this.invalid) {
238
+ inputField.setAttribute('aria-invalid', 'true');
239
+ }
240
+ else {
241
+ inputField.removeAttribute('aria-invalid');
242
+ }
243
+ if (this.disabled) {
244
+ inputField.setAttribute('aria-disabled', 'true');
245
+ }
246
+ else {
247
+ inputField.removeAttribute('aria-disabled');
248
+ }
249
+ if (this.readonly || this.disabled) {
250
+ inputField.setAttribute('aria-readonly', 'true');
251
+ }
252
+ else {
253
+ inputField.removeAttribute('aria-readonly');
254
+ }
255
+ }
168
256
  static get is() { return "limel-code-editor"; }
169
257
  static get encapsulation() { return "shadow"; }
170
258
  static get originalStyleUrls() {
@@ -231,12 +319,100 @@ export class CodeEditor {
231
319
  "optional": false,
232
320
  "docs": {
233
321
  "tags": [],
234
- "text": "Disables editing of the editor content"
322
+ "text": "Set to `true` to make the editor read-only.\nUse `readonly` when the editor is only there to present the data it holds,\nand will not become possible for the current user to edit."
235
323
  },
236
324
  "attribute": "readonly",
237
- "reflect": false,
325
+ "reflect": true,
326
+ "defaultValue": "false"
327
+ },
328
+ "disabled": {
329
+ "type": "boolean",
330
+ "mutable": false,
331
+ "complexType": {
332
+ "original": "boolean",
333
+ "resolved": "boolean",
334
+ "references": {}
335
+ },
336
+ "required": false,
337
+ "optional": false,
338
+ "docs": {
339
+ "tags": [],
340
+ "text": "Set to `true` to disable the editor.\nUse `disabled` to indicate that the editor can normally be interacted\nwith, but is currently disabled. This tells the user that if certain\nrequirements are met, the editor may become enabled again."
341
+ },
342
+ "attribute": "disabled",
343
+ "reflect": true,
344
+ "defaultValue": "false"
345
+ },
346
+ "invalid": {
347
+ "type": "boolean",
348
+ "mutable": false,
349
+ "complexType": {
350
+ "original": "boolean",
351
+ "resolved": "boolean",
352
+ "references": {}
353
+ },
354
+ "required": false,
355
+ "optional": false,
356
+ "docs": {
357
+ "tags": [],
358
+ "text": "Set to `true` to indicate that the current value of the input editor is\ninvalid."
359
+ },
360
+ "attribute": "invalid",
361
+ "reflect": true,
362
+ "defaultValue": "false"
363
+ },
364
+ "required": {
365
+ "type": "boolean",
366
+ "mutable": false,
367
+ "complexType": {
368
+ "original": "boolean",
369
+ "resolved": "boolean",
370
+ "references": {}
371
+ },
372
+ "required": false,
373
+ "optional": false,
374
+ "docs": {
375
+ "tags": [],
376
+ "text": "Set to `true` to indicate that the field is required."
377
+ },
378
+ "attribute": "required",
379
+ "reflect": true,
238
380
  "defaultValue": "false"
239
381
  },
382
+ "label": {
383
+ "type": "string",
384
+ "mutable": false,
385
+ "complexType": {
386
+ "original": "string",
387
+ "resolved": "string",
388
+ "references": {}
389
+ },
390
+ "required": false,
391
+ "optional": true,
392
+ "docs": {
393
+ "tags": [],
394
+ "text": "The input label."
395
+ },
396
+ "attribute": "label",
397
+ "reflect": true
398
+ },
399
+ "helperText": {
400
+ "type": "string",
401
+ "mutable": false,
402
+ "complexType": {
403
+ "original": "string",
404
+ "resolved": "string",
405
+ "references": {}
406
+ },
407
+ "required": false,
408
+ "optional": true,
409
+ "docs": {
410
+ "tags": [],
411
+ "text": "Optional helper text to display below the input field when it has focus"
412
+ },
413
+ "attribute": "helper-text",
414
+ "reflect": true
415
+ },
240
416
  "lineNumbers": {
241
417
  "type": "boolean",
242
418
  "mutable": false,
@@ -252,7 +428,7 @@ export class CodeEditor {
252
428
  "text": "Displays line numbers in the editor"
253
429
  },
254
430
  "attribute": "line-numbers",
255
- "reflect": false,
431
+ "reflect": true,
256
432
  "defaultValue": "false"
257
433
  },
258
434
  "lineWrapping": {
@@ -270,7 +446,7 @@ export class CodeEditor {
270
446
  "text": "Wraps long lines instead of showing horizontal scrollbar"
271
447
  },
272
448
  "attribute": "line-wrapping",
273
- "reflect": false,
449
+ "reflect": true,
274
450
  "defaultValue": "false"
275
451
  },
276
452
  "fold": {
@@ -288,7 +464,7 @@ export class CodeEditor {
288
464
  "text": "Allows the user to fold code"
289
465
  },
290
466
  "attribute": "fold",
291
- "reflect": false,
467
+ "reflect": true,
292
468
  "defaultValue": "false"
293
469
  },
294
470
  "lint": {
@@ -306,7 +482,7 @@ export class CodeEditor {
306
482
  "text": "Enables linting of JSON content"
307
483
  },
308
484
  "attribute": "lint",
309
- "reflect": false,
485
+ "reflect": true,
310
486
  "defaultValue": "false"
311
487
  },
312
488
  "colorScheme": {
@@ -329,7 +505,7 @@ export class CodeEditor {
329
505
  "text": "Select color scheme for the editor"
330
506
  },
331
507
  "attribute": "color-scheme",
332
- "reflect": false,
508
+ "reflect": true,
333
509
  "defaultValue": "'auto'"
334
510
  }
335
511
  };
@@ -362,6 +538,21 @@ export class CodeEditor {
362
538
  return [{
363
539
  "propName": "value",
364
540
  "methodName": "watchValue"
541
+ }, {
542
+ "propName": "disabled",
543
+ "methodName": "watchDisabled"
544
+ }, {
545
+ "propName": "readonly",
546
+ "methodName": "watchReadonly"
547
+ }, {
548
+ "propName": "invalid",
549
+ "methodName": "watchInvalid"
550
+ }, {
551
+ "propName": "required",
552
+ "methodName": "watchRequired"
553
+ }, {
554
+ "propName": "helperText",
555
+ "methodName": "watchHelperText"
365
556
  }];
366
557
  }
367
558
  }