@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.
- package/CHANGELOG.md +24 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/limel-action-bar_2.cjs.entry.js +1 -1
- package/dist/cjs/limel-ai-avatar.cjs.entry.js +1 -1
- package/dist/cjs/{limel-breadcrumbs_8.cjs.entry.js → limel-breadcrumbs_7.cjs.entry.js} +1 -35
- package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-callout.cjs.entry.js +1 -1
- package/dist/cjs/limel-chart.cjs.entry.js +7 -4
- package/dist/cjs/limel-chart.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
- package/dist/cjs/limel-code-editor.cjs.entry.js +97 -5
- package/dist/cjs/limel-code-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-collapsible-section.cjs.entry.js +1 -1
- package/dist/cjs/limel-drag-handle.cjs.entry.js +1 -1
- package/dist/cjs/limel-file-viewer.cjs.entry.js +1 -1
- package/dist/cjs/limel-file.cjs.entry.js +1 -1
- package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-helper-line_2.cjs.entry.js +79 -0
- package/dist/cjs/limel-helper-line_2.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-linear-progress.cjs.entry.js +1 -1
- package/dist/cjs/limel-list-item.cjs.entry.js +1 -1
- package/dist/cjs/limel-profile-picture.cjs.entry.js +1 -1
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/limel-table.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{translations-a42886f2.js → translations-e58b6da5.js} +9 -1
- package/dist/cjs/translations-e58b6da5.js.map +1 -0
- package/dist/collection/components/chart/chart.css +53 -0
- package/dist/collection/components/chart/chart.js +42 -3
- package/dist/collection/components/chart/chart.js.map +1 -1
- package/dist/collection/components/code-editor/code-editor.css +29 -0
- package/dist/collection/components/code-editor/code-editor.js +202 -11
- package/dist/collection/components/code-editor/code-editor.js.map +1 -1
- package/dist/collection/translations/da.js +1 -0
- package/dist/collection/translations/da.js.map +1 -1
- package/dist/collection/translations/de.js +1 -0
- package/dist/collection/translations/de.js.map +1 -1
- package/dist/collection/translations/en.js +1 -0
- package/dist/collection/translations/en.js.map +1 -1
- package/dist/collection/translations/fi.js +1 -0
- package/dist/collection/translations/fi.js.map +1 -1
- package/dist/collection/translations/fr.js +1 -0
- package/dist/collection/translations/fr.js.map +1 -1
- package/dist/collection/translations/nl.js +1 -0
- package/dist/collection/translations/nl.js.map +1 -1
- package/dist/collection/translations/no.js +1 -0
- package/dist/collection/translations/no.js.map +1 -1
- package/dist/collection/translations/sv.js +1 -0
- package/dist/collection/translations/sv.js.map +1 -1
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/limel-action-bar_2.entry.js +1 -1
- package/dist/esm/limel-ai-avatar.entry.js +1 -1
- package/dist/esm/{limel-breadcrumbs_8.entry.js → limel-breadcrumbs_7.entry.js} +2 -35
- package/dist/esm/limel-breadcrumbs_7.entry.js.map +1 -0
- package/dist/esm/limel-callout.entry.js +1 -1
- package/dist/esm/limel-chart.entry.js +7 -4
- package/dist/esm/limel-chart.entry.js.map +1 -1
- package/dist/esm/limel-chip_2.entry.js +1 -1
- package/dist/esm/limel-code-editor.entry.js +98 -6
- package/dist/esm/limel-code-editor.entry.js.map +1 -1
- package/dist/esm/limel-collapsible-section.entry.js +1 -1
- package/dist/esm/limel-drag-handle.entry.js +1 -1
- package/dist/esm/limel-file-viewer.entry.js +1 -1
- package/dist/esm/limel-file.entry.js +1 -1
- package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
- package/dist/esm/limel-helper-line_2.entry.js +74 -0
- package/dist/esm/limel-helper-line_2.entry.js.map +1 -0
- package/dist/esm/limel-linear-progress.entry.js +1 -1
- package/dist/esm/limel-list-item.entry.js +1 -1
- package/dist/esm/limel-profile-picture.entry.js +1 -1
- package/dist/esm/limel-prosemirror-adapter.entry.js +1 -1
- package/dist/esm/limel-snackbar.entry.js +1 -1
- package/dist/esm/limel-table.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{translations-9bfde9f4.js → translations-4151479a.js} +9 -1
- package/dist/esm/translations-4151479a.js.map +1 -0
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/lime-elements.esm.js.map +1 -1
- package/dist/lime-elements/{p-ee5c4112.entry.js → p-13bd2797.entry.js} +2 -2
- package/dist/lime-elements/{p-df9bcace.entry.js → p-158897dd.entry.js} +2 -2
- package/dist/lime-elements/{p-e00465fa.entry.js → p-182ce303.entry.js} +2 -2
- package/dist/lime-elements/{p-d79c85e2.entry.js → p-23de215d.entry.js} +2 -2
- package/dist/lime-elements/{p-8ea3b80a.entry.js → p-3746c217.entry.js} +2 -2
- package/dist/lime-elements/{p-aa1e7319.entry.js → p-61b2e426.entry.js} +2 -2
- package/dist/lime-elements/{p-033a0aa9.entry.js → p-668e583c.entry.js} +11 -11
- package/dist/lime-elements/p-668e583c.entry.js.map +1 -0
- package/dist/lime-elements/{p-92aa9610.entry.js → p-68799403.entry.js} +2 -2
- package/dist/lime-elements/{p-3311eaf3.entry.js → p-6d9fb8e8.entry.js} +2 -2
- package/dist/lime-elements/{p-fbac230b.entry.js → p-7da20f22.entry.js} +2 -2
- package/dist/lime-elements/{p-cd2f780a.entry.js → p-7e1a548a.entry.js} +2 -2
- package/dist/lime-elements/p-93ea4214.entry.js +2 -0
- package/dist/lime-elements/p-93ea4214.entry.js.map +1 -0
- package/dist/lime-elements/{p-b0acf522.entry.js → p-99f5e70b.entry.js} +2 -2
- package/dist/lime-elements/{p-40542ccc.entry.js → p-bf527989.entry.js} +2 -2
- package/dist/lime-elements/p-c582027f.js +2 -0
- package/dist/lime-elements/p-c582027f.js.map +1 -0
- package/dist/lime-elements/{p-31f1cb08.entry.js → p-d76d70ce.entry.js} +2 -2
- package/dist/lime-elements/p-dc55f5ca.entry.js +2 -0
- package/dist/lime-elements/p-dc55f5ca.entry.js.map +1 -0
- package/dist/lime-elements/p-f1ec1eeb.entry.js +2 -0
- package/dist/lime-elements/p-f1ec1eeb.entry.js.map +1 -0
- package/dist/lime-elements/{p-5e976a59.entry.js → p-f529b510.entry.js} +2 -2
- package/dist/lime-elements/{p-42e889d8.entry.js → p-ffedb0be.entry.js} +2 -2
- package/dist/types/components/chart/chart.d.ts +13 -0
- package/dist/types/components/code-editor/code-editor.d.ts +40 -1
- package/dist/types/components.d.ts +68 -4
- package/dist/types/translations/da.d.ts +1 -0
- package/dist/types/translations/de.d.ts +1 -0
- package/dist/types/translations/en.d.ts +1 -0
- package/dist/types/translations/fi.d.ts +1 -0
- package/dist/types/translations/fr.d.ts +1 -0
- package/dist/types/translations/nl.d.ts +1 -0
- package/dist/types/translations/no.d.ts +1 -0
- package/dist/types/translations/sv.d.ts +1 -0
- package/package.json +1 -1
- package/dist/cjs/limel-breadcrumbs_8.cjs.entry.js.map +0 -1
- package/dist/cjs/limel-helper-line.cjs.entry.js +0 -45
- package/dist/cjs/limel-helper-line.cjs.entry.js.map +0 -1
- package/dist/cjs/translations-a42886f2.js.map +0 -1
- package/dist/esm/limel-breadcrumbs_8.entry.js.map +0 -1
- package/dist/esm/limel-helper-line.entry.js +0 -41
- package/dist/esm/limel-helper-line.entry.js.map +0 -1
- package/dist/esm/translations-9bfde9f4.js.map +0 -1
- package/dist/lime-elements/p-033a0aa9.entry.js.map +0 -1
- package/dist/lime-elements/p-2bf4fc20.entry.js +0 -2
- package/dist/lime-elements/p-2bf4fc20.entry.js.map +0 -1
- package/dist/lime-elements/p-5df2361b.js +0 -2
- package/dist/lime-elements/p-5df2361b.js.map +0 -1
- package/dist/lime-elements/p-84e00842.entry.js +0 -2
- package/dist/lime-elements/p-84e00842.entry.js.map +0 -1
- package/dist/lime-elements/p-e4bafb75.entry.js +0 -2
- package/dist/lime-elements/p-e4bafb75.entry.js.map +0 -1
- /package/dist/lime-elements/{p-ee5c4112.entry.js.map → p-13bd2797.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-df9bcace.entry.js.map → p-158897dd.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-e00465fa.entry.js.map → p-182ce303.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-d79c85e2.entry.js.map → p-23de215d.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-8ea3b80a.entry.js.map → p-3746c217.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-aa1e7319.entry.js.map → p-61b2e426.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-92aa9610.entry.js.map → p-68799403.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-3311eaf3.entry.js.map → p-6d9fb8e8.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-fbac230b.entry.js.map → p-7da20f22.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-cd2f780a.entry.js.map → p-7e1a548a.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-b0acf522.entry.js.map → p-99f5e70b.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-40542ccc.entry.js.map → p-bf527989.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-31f1cb08.entry.js.map → p-d76d70ce.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-5e976a59.entry.js.map → p-f529b510.entry.js.map} +0 -0
- /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
|
-
|
|
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("
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE/E,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,OAAO,GAAG,GAAG,CAAC;AACpB,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAOH,MAAM,OAAO,KAAK;;IAwZG,gBAAW,GAAG,CAAC,KAAiB,EAAE,EAAE;MACjD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAA4B,CAAC,CAAC;MACvE,IAAI,CAAC,IAAI,EAAE;QACP,OAAO;OACV;MAED,KAAK,CAAC,eAAe,EAAE,CAAC;MACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEe,kBAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;MACtD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;QAC5C,OAAO;OACV;MAED,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAA4B,CAAC,CAAC;MACvE,IAAI,CAAC,IAAI,EAAE;QACP,OAAO;OACV;MAED,KAAK,CAAC,cAAc,EAAE,CAAC;MACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;oBAxa2B,IAAI;;;;gBAoCX,aAAa;uBAOa,WAAW;;;mBAoBjC,KAAK;;EAcxB,iBAAiB;IACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;EAChC,CAAC;EAEM,MAAM;IACT,IAAI,IAAI,CAAC,OAAO,EAAE;MACd,OAAO,qBAAe,WAAW,EAAE,KAAK,GAAI,CAAC;KAChD;IAED,OAAO,CACH,0BACe,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,eAChC,QAAQ,EAClB,KAAK,EAAE;QACH,+BAA+B,EAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;OACnC;MAEA,IAAI,CAAC,aAAa,EAAE;MACpB,IAAI,CAAC,iBAAiB,EAAE;MACxB,IAAI,CAAC,YAAY,EAAE;MACpB,aAAO,KAAK,EAAC,OAAO,IAAE,IAAI,CAAC,WAAW,EAAE,CAAS,CAC7C,CACX,CAAC;EACN,CAAC;EAEO,aAAa;IACjB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;MACvB,OAAO;KACV;IAED,OAAO,mBAAU,IAAI,CAAC,eAAe,CAAW,CAAC;EACrD,CAAC;EAEO,iBAAiB;IACrB,OAAO,CACH;MACI;QACI,UAAI,KAAK,EAAC,KAAK,IAAE,IAAI,CAAC,oBAAoB,CAAM;QAChD,UAAI,KAAK,EAAC,KAAK,IAAE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAM,CAC3D,CACD,CACX,CAAC;EACN,CAAC;EAEO,YAAY;IAChB,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;MACrD,OAAO;KACV;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,gBAAgB,GAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;IACnE,MAAM,gBAAgB,GAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;IAElE,KACI,IAAI,KAAK,GAAG,gBAAgB,EAC5B,KAAK,IAAI,gBAAgB,EACzB,KAAK,IAAI,IAAI,CAAC,aAAa,EAC7B;MACE,KAAK,CAAC,IAAI,CACN,WACI,KAAK,EAAE;UACH,WAAW,EAAE,IAAI;UACjB,WAAW,EAAE,KAAK,KAAK,CAAC;SAC3B,EACD,IAAI,EAAC,cAAc;QAEnB,mBAAa,KAAK,EAAE,KAAK,GAAI,CAC3B,CACT,CAAC;KACL;IAED,OAAO,CACH,WAAK,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,cAAc,IAClC,KAAK,CACJ,CACT,CAAC;EACN,CAAC;EAEO,WAAW;;IACf,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,CAAA,EAAE;MACrB,OAAO;KACV;IAED,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;MAClC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;MACpC,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;MACxD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;MAChC,IAAI,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;MAElC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;QACjD,MAAM,GAAG,gBAAgB,CAAC;QAC1B,gBAAgB,IAAI,IAAI,CAAC;OAC5B;MAED,OAAO,CACH,UACI,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,EACnD,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAC9B,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,gBACE,KAAK,EACjB,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EACtC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,SAAS,EAAE,IAAI,CAAC,aAAa;QAE7B,cAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAM;QACjC,cAAK,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAM;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CACtC,CACR,CAAC;IACN,CAAC,CAAC,CAAC;EACP,CAAC;EAEO,YAAY,CAChB,IAAe,EACf,KAAa,EACb,IAAY,EACZ,MAAc;IAEd,MAAM,KAAK,GAA2B;MAClC,2BAA2B,EAAE,GAAG,MAAM,EAAE;MACxC,yBAAyB,EAAE,GAAG,IAAI,EAAE;MACpC,0BAA0B,EAAE,GAAG,KAAK,EAAE;MACtC,0BAA0B,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;KAC9C,CAAC;IAEF,IAAI,IAAI,CAAC,KAAK,EAAE;MACZ,KAAK,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;KAClD;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;MAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;MAEpE,KAAK,CAAC,8BAA8B,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;MAC3D,KAAK,CAAC,gCAAgC,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;KAClE;IAED,OAAO,KAAK,CAAC;EACjB,CAAC;EAEO,YAAY,CAAC,IAAe;IAChC,OAAO;MACH,IAAI,EAAE,IAAI;MACV,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;MAC5C,yBAAyB,EACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;KAChE,CAAC;EACN,CAAC;EAEO,sBAAsB,CAAC,IAAgB;IAC3C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE;MACP,OAAO;QACH,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;OACZ,CAAC;KACL;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;MACxB,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KAC3C;IAED,MAAM,eAAe,GACjB,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC;IACrD,MAAM,aAAa,GACf,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC;IAErE,OAAO;MACH,IAAI,EAAE,aAAa,GAAG,eAAe;MACrC,MAAM,EAAE,eAAe;KAC1B,CAAC;EACN,CAAC;EAEO,iBAAiB,CAAC,IAAe;IACrC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAEvC,IAAI,cAAc,EAAE;MAChB,OAAO,cAAc,CAAC;KACzB;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;MACtB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC;IAED,OAAO,GAAG,KAAK,EAAE,CAAC;EACtB,CAAC;EAEO,WAAW,CAAC,IAAe;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC;EACrB,CAAC;EAEO,aAAa,CAAC,IAAe,EAAE,MAAc,EAAE,IAAY;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAEpD,MAAM,YAAY,GAAQ;MACtB,KAAK,EAAE,IAAI;MACX,WAAW,EAAE,cAAc;MAC3B,SAAS,EAAE,MAAM;KACpB,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;MACnE,YAAY,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;KACtE;IAED,OAAO,CACH,qCACQ,YAAY,IAChB,aAAa,EACT,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAEvD,CACL,CAAC;EACN,CAAC;EAEO,cAAc;;IAClB,IAAI,IAAI,CAAC,KAAK,EAAE;MACZ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAC9B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAC/C,CAAC,CACJ,CAAC;IAEF,IAAI,aAAa,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IAC9C,IACI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;MACjD,CAAC,IAAI,CAAC,QAAQ,EAChB;MACE,aAAa,GAAG,QAAQ,CAAC;KAC5B;IAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;MACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChE;IAED,MAAM,cAAc,GAChB,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;IACvE,MAAM,cAAc,GAChB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;IACnE,MAAM,UAAU,GAAG,cAAc,GAAG,cAAc,CAAC;IAEnD,OAAO;MACH,QAAQ,EAAE,cAAc;MACxB,QAAQ,EAAE,cAAc;MACxB,UAAU,EAAE,UAAU;KACzB,CAAC;EACN,CAAC;EAEO,sBAAsB,CAC1B,KAAkB,EAClB,QAAgB,sBAAsB;IAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACrB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;MAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;MACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;OAC7B;MAED,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEnC,MAAM,SAAS,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;EACxD,CAAC;EAEO,eAAe,CAAC,IAAe;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEzB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;EAC7D,CAAC;EAEO,eAAe,CAAC,IAAe;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEzB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;EAC7D,CAAC;EAEO,WAAW,CAAC,IAAe;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACrC,CAAC;EAKD,YAAY;IACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;EAChC,CAAC;EAEO,oBAAoB;IACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;EACvC,CAAC;EAEO,gBAAgB,CAAC,MAAmB;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,IAAI,KAAK,KAAK,SAAS,EAAE;MACrB,OAAO;KACV;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;MACjB,OAAO;KACV;IAED,OAAO,IAAI,CAAC;EAChB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBJ","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.
|
|
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": "
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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":
|
|
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
|
}
|