@amcharts/amcharts5 5.12.2 → 5.13.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 (223) hide show
  1. package/.internal/charts/hierarchy/HierarchyDefaultTheme.d.ts.map +1 -1
  2. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js +5 -1
  3. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js.map +1 -1
  4. package/.internal/charts/stock/SettingsModal.d.ts.map +1 -1
  5. package/.internal/charts/stock/SettingsModal.js +3 -0
  6. package/.internal/charts/stock/SettingsModal.js.map +1 -1
  7. package/.internal/charts/stock/StockChart.d.ts +8 -0
  8. package/.internal/charts/stock/StockChart.d.ts.map +1 -1
  9. package/.internal/charts/stock/StockChart.js +21 -2
  10. package/.internal/charts/stock/StockChart.js.map +1 -1
  11. package/.internal/charts/stock/StockChartDefaultTheme.d.ts.map +1 -1
  12. package/.internal/charts/stock/StockChartDefaultTheme.js +23 -3
  13. package/.internal/charts/stock/StockChartDefaultTheme.js.map +1 -1
  14. package/.internal/charts/stock/drawing/DrawingSeries.d.ts.map +1 -1
  15. package/.internal/charts/stock/drawing/DrawingSeries.js +1 -0
  16. package/.internal/charts/stock/drawing/DrawingSeries.js.map +1 -1
  17. package/.internal/charts/stock/indicators/SuperTrend.d.ts +49 -0
  18. package/.internal/charts/stock/indicators/SuperTrend.d.ts.map +1 -0
  19. package/.internal/charts/stock/indicators/SuperTrend.js +283 -0
  20. package/.internal/charts/stock/indicators/SuperTrend.js.map +1 -0
  21. package/.internal/charts/stock/toolbar/DateRangeSelector.d.ts +8 -0
  22. package/.internal/charts/stock/toolbar/DateRangeSelector.d.ts.map +1 -1
  23. package/.internal/charts/stock/toolbar/DateRangeSelector.js +15 -2
  24. package/.internal/charts/stock/toolbar/DateRangeSelector.js.map +1 -1
  25. package/.internal/charts/stock/toolbar/IndicatorControl.d.ts +1 -1
  26. package/.internal/charts/stock/toolbar/IndicatorControl.d.ts.map +1 -1
  27. package/.internal/charts/stock/toolbar/IndicatorControl.js +11 -1
  28. package/.internal/charts/stock/toolbar/IndicatorControl.js.map +1 -1
  29. package/.internal/charts/xy/XYChart.js +2 -2
  30. package/.internal/charts/xy/XYChart.js.map +1 -1
  31. package/.internal/charts/xy/axes/Axis.d.ts +2 -2
  32. package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
  33. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  34. package/.internal/charts/xy/axes/CategoryAxis.d.ts +7 -0
  35. package/.internal/charts/xy/axes/CategoryAxis.d.ts.map +1 -1
  36. package/.internal/charts/xy/axes/CategoryAxis.js +13 -0
  37. package/.internal/charts/xy/axes/CategoryAxis.js.map +1 -1
  38. package/.internal/charts/xy/axes/DateAxis.d.ts +2 -2
  39. package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
  40. package/.internal/charts/xy/axes/DateAxis.js +28 -16
  41. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  42. package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
  43. package/.internal/charts/xy/axes/ValueAxis.js +13 -5
  44. package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
  45. package/.internal/charts/xy/series/LineSeries.d.ts.map +1 -1
  46. package/.internal/charts/xy/series/LineSeries.js +17 -10
  47. package/.internal/charts/xy/series/LineSeries.js.map +1 -1
  48. package/.internal/charts/xy/series/XYSeries.d.ts +30 -1
  49. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  50. package/.internal/charts/xy/series/XYSeries.js +10 -6
  51. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  52. package/.internal/core/Classes.d.ts +2 -0
  53. package/.internal/core/Classes.d.ts.map +1 -1
  54. package/.internal/core/Classes.js.map +1 -1
  55. package/.internal/core/Registry.js +1 -1
  56. package/.internal/core/Registry.js.map +1 -1
  57. package/.internal/core/render/Rectangle.d.ts +5 -0
  58. package/.internal/core/render/Rectangle.d.ts.map +1 -1
  59. package/.internal/core/render/Rectangle.js +14 -1
  60. package/.internal/core/render/Rectangle.js.map +1 -1
  61. package/.internal/core/render/RoundedRectangle.d.ts.map +1 -1
  62. package/.internal/core/render/RoundedRectangle.js +20 -11
  63. package/.internal/core/render/RoundedRectangle.js.map +1 -1
  64. package/.internal/core/render/Tooltip.d.ts +10 -1
  65. package/.internal/core/render/Tooltip.d.ts.map +1 -1
  66. package/.internal/core/render/Tooltip.js +21 -0
  67. package/.internal/core/render/Tooltip.js.map +1 -1
  68. package/CHANGELOG.md +29 -1
  69. package/examples/javascript/flow-arc-horizontal/package.json +1 -1
  70. package/examples/javascript/flow-arc-vertical/package.json +1 -1
  71. package/examples/javascript/flow-chord/package.json +1 -1
  72. package/examples/javascript/flow-chord-directed/package.json +1 -1
  73. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  74. package/examples/javascript/flow-sankey/package.json +1 -1
  75. package/examples/javascript/gauge/package.json +1 -1
  76. package/examples/javascript/gauge-bands/package.json +1 -1
  77. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  78. package/examples/javascript/hierarchy-pack/package.json +1 -1
  79. package/examples/javascript/hierarchy-partition/package.json +1 -1
  80. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  81. package/examples/javascript/hierarchy-tree/package.json +1 -1
  82. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  83. package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
  84. package/examples/javascript/jest/package.json +1 -1
  85. package/examples/javascript/json-pie/package.json +1 -1
  86. package/examples/javascript/json-xy/package.json +1 -1
  87. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  88. package/examples/javascript/map-clustered-points/package.json +1 -1
  89. package/examples/javascript/map-day-and-night/package.json +1 -1
  90. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  91. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  92. package/examples/javascript/map-with-bubbles/package.json +1 -1
  93. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  94. package/examples/javascript/misc-40-charts/package.json +1 -1
  95. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  96. package/examples/javascript/pie-chart/package.json +1 -1
  97. package/examples/javascript/pie-donut-chart/package.json +1 -1
  98. package/examples/javascript/pie-variable-radius/package.json +1 -1
  99. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  100. package/examples/javascript/radar-heat-map/package.json +1 -1
  101. package/examples/javascript/radar-line/package.json +1 -1
  102. package/examples/javascript/radar-time-line/package.json +1 -1
  103. package/examples/javascript/sliced-funnel/package.json +1 -1
  104. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  105. package/examples/javascript/sliced-pyramid/package.json +1 -1
  106. package/examples/javascript/stock-chart/package.json +1 -1
  107. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  108. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  109. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  110. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  111. package/examples/javascript/stock-chart-live/package.json +1 -1
  112. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  113. package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
  114. package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
  115. package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
  116. package/examples/javascript/timeline-spiral-chart/package.json +1 -1
  117. package/examples/javascript/venn-diagram/package.json +1 -1
  118. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  119. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  120. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  121. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  122. package/examples/javascript/xy-bubble/package.json +1 -1
  123. package/examples/javascript/xy-candlestick/package.json +1 -1
  124. package/examples/javascript/xy-clustered-column/package.json +1 -1
  125. package/examples/javascript/xy-column/package.json +1 -1
  126. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  127. package/examples/javascript/xy-data-grouping/package.json +1 -1
  128. package/examples/javascript/xy-draggable-range/package.json +1 -1
  129. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  130. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  131. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  132. package/examples/javascript/xy-line/package.json +1 -1
  133. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  134. package/examples/javascript/xy-live-data/package.json +1 -1
  135. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  136. package/examples/javascript/xy-ohlc/package.json +1 -1
  137. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  138. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  139. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  140. package/examples/javascript/xy-stacked-column/package.json +1 -1
  141. package/examples/javascript/xy-stacked-step/package.json +1 -1
  142. package/examples/javascript/xy-stock/package.json +1 -1
  143. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  144. package/examples/typescript/flow-arc-horizontal/package.json +1 -1
  145. package/examples/typescript/flow-arc-vertical/package.json +1 -1
  146. package/examples/typescript/flow-chord/package.json +1 -1
  147. package/examples/typescript/flow-chord-directed/package.json +1 -1
  148. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  149. package/examples/typescript/flow-sankey/package.json +1 -1
  150. package/examples/typescript/gauge/package.json +1 -1
  151. package/examples/typescript/gauge-bands/package.json +1 -1
  152. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  153. package/examples/typescript/hierarchy-pack/package.json +1 -1
  154. package/examples/typescript/hierarchy-partition/package.json +1 -1
  155. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  156. package/examples/typescript/hierarchy-tree/package.json +1 -1
  157. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  158. package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
  159. package/examples/typescript/jest/package.json +1 -1
  160. package/examples/typescript/json-pie/package.json +1 -1
  161. package/examples/typescript/json-xy/package.json +1 -1
  162. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  163. package/examples/typescript/map-clustered-points/package.json +1 -1
  164. package/examples/typescript/map-day-and-night/package.json +1 -1
  165. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  166. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  167. package/examples/typescript/map-with-bubbles/package.json +1 -1
  168. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  169. package/examples/typescript/misc-40-charts/package.json +1 -1
  170. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  171. package/examples/typescript/pie-chart/package.json +1 -1
  172. package/examples/typescript/pie-donut-chart/package.json +1 -1
  173. package/examples/typescript/pie-variable-radius/package.json +1 -1
  174. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  175. package/examples/typescript/radar-heat-map/package.json +1 -1
  176. package/examples/typescript/radar-line/package.json +1 -1
  177. package/examples/typescript/radar-time-line/package.json +1 -1
  178. package/examples/typescript/sliced-funnel/package.json +1 -1
  179. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  180. package/examples/typescript/sliced-pyramid/package.json +1 -1
  181. package/examples/typescript/stock-chart/package.json +1 -1
  182. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  183. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  184. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  185. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  186. package/examples/typescript/stock-chart-live/package.json +1 -1
  187. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  188. package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
  189. package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
  190. package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
  191. package/examples/typescript/timeline-spiral-chart/package.json +1 -1
  192. package/examples/typescript/venn-diagram/package.json +1 -1
  193. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  194. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  195. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  196. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  197. package/examples/typescript/xy-bubble/package.json +1 -1
  198. package/examples/typescript/xy-candlestick/package.json +1 -1
  199. package/examples/typescript/xy-clustered-column/package.json +1 -1
  200. package/examples/typescript/xy-column/package.json +1 -1
  201. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  202. package/examples/typescript/xy-data-grouping/package.json +1 -1
  203. package/examples/typescript/xy-draggable-range/package.json +1 -1
  204. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  205. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  206. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  207. package/examples/typescript/xy-line/package.json +1 -1
  208. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  209. package/examples/typescript/xy-live-data/package.json +1 -1
  210. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  211. package/examples/typescript/xy-ohlc/package.json +1 -1
  212. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  213. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  214. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  215. package/examples/typescript/xy-stacked-column/package.json +1 -1
  216. package/examples/typescript/xy-stacked-step/package.json +1 -1
  217. package/examples/typescript/xy-stock/package.json +1 -1
  218. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  219. package/package.json +1 -1
  220. package/stock.d.ts +1 -0
  221. package/stock.d.ts.map +1 -1
  222. package/stock.js +1 -0
  223. package/stock.js.map +1 -1
@@ -0,0 +1,283 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Indicator } from "./Indicator";
3
+ import { LineSeries } from "../../xy/series/LineSeries";
4
+ import * as $array from "../../../core/util/Array";
5
+ /**
6
+ * An implementation of a [[StockChart]] indicator.
7
+ *
8
+ * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info
9
+ */
10
+ export class SuperTrend extends Indicator {
11
+ constructor() {
12
+ super(...arguments);
13
+ /**
14
+ * Indicator series for the upper band.
15
+ */
16
+ Object.defineProperty(this, "upperBandSeries", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: void 0
21
+ });
22
+ /**
23
+ * Indicator series for the lower band.
24
+ */
25
+ Object.defineProperty(this, "lowerBandSeries", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: void 0
30
+ });
31
+ Object.defineProperty(this, "_editableSettings", {
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true,
35
+ value: [{
36
+ key: "period",
37
+ name: this.root.language.translateAny("Period"),
38
+ type: "number"
39
+ }, {
40
+ key: "multiplier",
41
+ name: this.root.language.translateAny("Multiplier"),
42
+ type: "number"
43
+ }, {
44
+ key: "upperColor",
45
+ name: this.root.language.translateAny("Upper"),
46
+ type: "color"
47
+ }, {
48
+ key: "lowerColor",
49
+ name: this.root.language.translateAny("Lower"),
50
+ type: "color"
51
+ }]
52
+ });
53
+ }
54
+ _afterNew() {
55
+ super._afterNew();
56
+ const stockSeries = this.get("stockSeries");
57
+ const chart = stockSeries.chart;
58
+ if (chart) {
59
+ const series = chart.series.push(LineSeries.new(this._root, {
60
+ valueXField: "valueX",
61
+ valueYField: "ma",
62
+ groupDataDisabled: true,
63
+ calculateAggregates: true,
64
+ xAxis: stockSeries.get("xAxis"),
65
+ yAxis: stockSeries.get("yAxis"),
66
+ themeTags: ["indicator", "supertrend"],
67
+ name: "Super Trend",
68
+ }));
69
+ series.setPrivate("baseValueSeries", stockSeries);
70
+ this.series = series;
71
+ const upperBandSeries = chart.series.push(LineSeries.new(this._root, {
72
+ valueXField: "valueX",
73
+ valueYField: "upper",
74
+ openValueYField: "value_close",
75
+ xAxis: stockSeries.get("xAxis"),
76
+ yAxis: stockSeries.get("yAxis"),
77
+ groupDataDisabled: true,
78
+ calculateAggregates: true,
79
+ connect: false,
80
+ autoGapCount: Infinity,
81
+ themeTags: ["indicator", "supertrend", "upper"]
82
+ }));
83
+ upperBandSeries.fills.template.set("visible", true);
84
+ upperBandSeries.setPrivate("baseValueSeries", stockSeries);
85
+ this.upperBandSeries = upperBandSeries;
86
+ const lowerBandSeries = chart.series.push(LineSeries.new(this._root, {
87
+ valueXField: "valueX",
88
+ valueYField: "lower",
89
+ openValueYField: "value_close",
90
+ xAxis: stockSeries.get("xAxis"),
91
+ yAxis: stockSeries.get("yAxis"),
92
+ groupDataDisabled: true,
93
+ calculateAggregates: true,
94
+ connect: false,
95
+ autoGapCount: Infinity,
96
+ themeTags: ["indicator", "supertrend", "lower"]
97
+ }));
98
+ lowerBandSeries.fills.template.set("visible", true);
99
+ lowerBandSeries.setPrivate("baseValueSeries", stockSeries);
100
+ this.lowerBandSeries = lowerBandSeries;
101
+ this._handleLegend(this.series);
102
+ }
103
+ }
104
+ _updateChildren() {
105
+ super._updateChildren();
106
+ if (this.isDirty("upperColor")) {
107
+ const color = this.get("upperColor");
108
+ const upperBandSeries = this.upperBandSeries;
109
+ upperBandSeries.set("stroke", color);
110
+ upperBandSeries.set("fill", color);
111
+ upperBandSeries.strokes.template.set("stroke", color);
112
+ this._updateSeriesColor(upperBandSeries, color, "upperColor");
113
+ }
114
+ if (this.isDirty("lowerColor")) {
115
+ const color = this.get("lowerColor");
116
+ const lowerBandSeries = this.lowerBandSeries;
117
+ lowerBandSeries.set("stroke", color);
118
+ lowerBandSeries.set("fill", color);
119
+ lowerBandSeries.strokes.template.set("stroke", color);
120
+ this._updateSeriesColor(lowerBandSeries, color, "lowerColor");
121
+ }
122
+ if (this.isDirty("multiplier")) {
123
+ this.markDataDirty();
124
+ this.setCustomData("multiplier", this.get("multiplier"));
125
+ }
126
+ }
127
+ _getDataArray(dataItems) {
128
+ const data = [];
129
+ $array.each(dataItems, (dataItem) => {
130
+ data.push({ valueX: dataItem.get("valueX"), value_close: dataItem.get("valueY"), value_high: dataItem.get("highValueY"), value_low: dataItem.get("lowValueY") });
131
+ });
132
+ return data;
133
+ }
134
+ /**
135
+ * @ignore
136
+ */
137
+ prepareData() {
138
+ if (this.series) {
139
+ let period = this.get("period", 10);
140
+ const stockSeries = this.get("stockSeries");
141
+ const dataItems = stockSeries.dataItems;
142
+ let data = this._getDataArray(dataItems);
143
+ let i = 0;
144
+ let index = 0;
145
+ let tr = 0;
146
+ let prevClose;
147
+ let prevATR;
148
+ let multiplier = this.get("multiplier", 3);
149
+ let atr;
150
+ let trendDirection = false;
151
+ let prevSuperTrend;
152
+ let prevUpperBand;
153
+ let prevLowerBand;
154
+ let upperBand;
155
+ let lowerBand;
156
+ let superTrend;
157
+ $array.each(data, (dataItem) => {
158
+ let valueClose = dataItem.value_close;
159
+ if (valueClose != null && prevClose != null) {
160
+ i++;
161
+ tr = Math.max(dataItem.value_high - dataItem.value_low, Math.abs(dataItem.value_high - prevClose), Math.abs(dataItem.value_low - prevClose));
162
+ dataItem.tr = tr;
163
+ if (i >= period) {
164
+ if (i == period) {
165
+ let sum = 0;
166
+ let k = 0;
167
+ for (let j = index; j >= 0; j--) {
168
+ sum += data[j].tr;
169
+ k++;
170
+ if (k == period) {
171
+ break;
172
+ }
173
+ }
174
+ atr = sum / period;
175
+ }
176
+ else {
177
+ if (prevATR != null) {
178
+ atr = (prevATR * (period - 1) + tr) / period;
179
+ }
180
+ }
181
+ prevATR = atr;
182
+ let basicUpperBand = (dataItem.value_high + dataItem.value_low) / 2 + (multiplier * Number(atr));
183
+ let basicLowerBand = (dataItem.value_high + dataItem.value_low) / 2 - (multiplier * Number(atr));
184
+ // Adjusted bands
185
+ if (i === period) {
186
+ upperBand = basicUpperBand;
187
+ lowerBand = basicLowerBand;
188
+ }
189
+ else {
190
+ upperBand = basicUpperBand < Number(prevUpperBand) || prevClose > Number(prevUpperBand)
191
+ ? basicUpperBand
192
+ : prevUpperBand;
193
+ lowerBand = basicLowerBand > Number(prevLowerBand) || prevClose < Number(prevLowerBand)
194
+ ? basicLowerBand
195
+ : prevLowerBand;
196
+ }
197
+ if (i === period) {
198
+ superTrend = valueClose <= Number(upperBand) ? upperBand : lowerBand;
199
+ }
200
+ else {
201
+ if (prevSuperTrend === prevUpperBand && valueClose <= Number(upperBand)) {
202
+ superTrend = upperBand;
203
+ trendDirection = false; // downtrend
204
+ }
205
+ else if (prevSuperTrend === prevUpperBand && valueClose > Number(upperBand)) {
206
+ superTrend = lowerBand;
207
+ trendDirection = true; // uptrend
208
+ }
209
+ else if (prevSuperTrend === prevLowerBand && valueClose >= Number(lowerBand)) {
210
+ superTrend = lowerBand;
211
+ trendDirection = true; // uptrend
212
+ }
213
+ else if (prevSuperTrend === prevLowerBand && valueClose < Number(lowerBand)) {
214
+ superTrend = upperBand;
215
+ trendDirection = false; // downtrend
216
+ }
217
+ else {
218
+ superTrend = prevSuperTrend;
219
+ }
220
+ }
221
+ if (trendDirection) {
222
+ dataItem.lower = superTrend;
223
+ dataItem.upper = undefined;
224
+ }
225
+ else {
226
+ dataItem.upper = superTrend;
227
+ dataItem.lower = undefined;
228
+ }
229
+ prevLowerBand = lowerBand;
230
+ prevUpperBand = upperBand;
231
+ prevSuperTrend = superTrend;
232
+ }
233
+ }
234
+ index++;
235
+ prevClose = valueClose;
236
+ });
237
+ this.upperBandSeries.data.setAll(data);
238
+ this.lowerBandSeries.data.setAll(data);
239
+ }
240
+ }
241
+ _dispose() {
242
+ this.upperBandSeries.dispose();
243
+ this.lowerBandSeries.dispose();
244
+ super._dispose();
245
+ }
246
+ hide(duration) {
247
+ const _super = Object.create(null, {
248
+ hide: { get: () => super.hide }
249
+ });
250
+ return __awaiter(this, void 0, void 0, function* () {
251
+ return Promise.all([
252
+ _super.hide.call(this, duration),
253
+ this.upperBandSeries.hide(duration),
254
+ this.lowerBandSeries.hide(duration)
255
+ ]);
256
+ });
257
+ }
258
+ show(duration) {
259
+ const _super = Object.create(null, {
260
+ show: { get: () => super.show }
261
+ });
262
+ return __awaiter(this, void 0, void 0, function* () {
263
+ return Promise.all([
264
+ _super.show.call(this, duration),
265
+ this.upperBandSeries.show(duration),
266
+ this.lowerBandSeries.show(duration)
267
+ ]);
268
+ });
269
+ }
270
+ }
271
+ Object.defineProperty(SuperTrend, "className", {
272
+ enumerable: true,
273
+ configurable: true,
274
+ writable: true,
275
+ value: "SuperTrend"
276
+ });
277
+ Object.defineProperty(SuperTrend, "classNames", {
278
+ enumerable: true,
279
+ configurable: true,
280
+ writable: true,
281
+ value: Indicator.classNames.concat([SuperTrend.className])
282
+ });
283
+ //# sourceMappingURL=SuperTrend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuperTrend.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/SuperTrend.ts"],"names":[],"mappings":"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","sourcesContent":["import { Indicator, IIndicatorSettings, IIndicatorPrivate, IIndicatorEvents, IIndicatorEditableSetting } from \"./Indicator\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport type { Color } from \"../../../core/util/Color\";\r\nimport type { DataItem } from \"../../../..\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface ISuperTrendSettings extends IIndicatorSettings {\r\n\tupperColor?: Color;\r\n\tlowerColor?: Color;\r\n\tmultiplier?: number;\r\n}\r\n\r\nexport interface ISuperTrendPrivate extends IIndicatorPrivate {\r\n}\r\n\r\nexport interface ISuperTrendEvents extends IIndicatorEvents {\r\n}\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class SuperTrend extends Indicator {\r\n\tpublic static className: string = \"SuperTrend\";\r\n\tpublic static classNames: Array<string> = Indicator.classNames.concat([SuperTrend.className]);\r\n\r\n\tdeclare public _settings: ISuperTrendSettings;\r\n\tdeclare public _privateSettings: ISuperTrendPrivate;\r\n\tdeclare public _events: ISuperTrendEvents;\r\n\r\n\t/**\r\n\t * Indicator series for the upper band.\r\n\t */\r\n\tpublic upperBandSeries!: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series for the lower band.\r\n\t */\r\n\tpublic lowerBandSeries!: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"multiplier\",\r\n\t\tname: this.root.language.translateAny(\"Multiplier\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"upperColor\",\r\n\t\tname: this.root.language.translateAny(\"Upper\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"lowerColor\",\r\n\t\tname: this.root.language.translateAny(\"Lower\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\r\n\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\tconst chart = stockSeries.chart;\r\n\r\n\t\tif (chart) {\r\n\r\n\t\t\tconst series = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"ma\",\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tthemeTags: [\"indicator\", \"supertrend\"],\r\n\t\t\t\tname: \"Super Trend\",\r\n\t\t\t}))\r\n\r\n\t\t\tseries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.series = series;\r\n\r\n\t\t\tconst upperBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"upper\",\r\n\t\t\t\topenValueYField: \"value_close\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tconnect: false,\r\n\t\t\t\tautoGapCount: Infinity,\r\n\t\t\t\tthemeTags: [\"indicator\", \"supertrend\", \"upper\"]\r\n\t\t\t}))\r\n\r\n\t\t\tupperBandSeries.fills.template.set(\"visible\", true);\r\n\t\t\tupperBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\r\n\t\t\tthis.upperBandSeries = upperBandSeries;\r\n\r\n\t\t\tconst lowerBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"lower\",\r\n\t\t\t\topenValueYField: \"value_close\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tconnect: false,\r\n\t\t\t\tautoGapCount: Infinity,\r\n\t\t\t\tthemeTags: [\"indicator\", \"supertrend\", \"lower\"]\r\n\t\t\t}))\r\n\r\n\t\t\tlowerBandSeries.fills.template.set(\"visible\", true);\r\n\t\t\tlowerBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.lowerBandSeries = lowerBandSeries;\r\n\r\n\t\t\tthis._handleLegend(this.series);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\t\tif (this.isDirty(\"upperColor\")) {\r\n\t\t\tconst color = this.get(\"upperColor\");\r\n\t\t\tconst upperBandSeries = this.upperBandSeries;\r\n\t\t\tupperBandSeries.set(\"stroke\", color);\r\n\t\t\tupperBandSeries.set(\"fill\", color);\r\n\t\t\tupperBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(upperBandSeries, color, \"upperColor\");\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"lowerColor\")) {\r\n\t\t\tconst color = this.get(\"lowerColor\");\r\n\t\t\tconst lowerBandSeries = this.lowerBandSeries;\r\n\t\t\tlowerBandSeries.set(\"stroke\", color);\r\n\t\t\tlowerBandSeries.set(\"fill\", color);\r\n\t\t\tlowerBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(lowerBandSeries, color, \"lowerColor\");\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"multiplier\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"multiplier\", this.get(\"multiplier\"));\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _getDataArray(dataItems: Array<DataItem<any>>): Array<any> {\r\n\t\tconst data: Array<any> = [];\r\n\t\t$array.each(dataItems, (dataItem) => {\r\n\t\t\tdata.push({ valueX: dataItem.get(\"valueX\"), value_close: dataItem.get(\"valueY\"), value_high: dataItem.get(\"highValueY\"), value_low: dataItem.get(\"lowValueY\") });\r\n\t\t})\r\n\t\treturn data;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tlet period = this.get(\"period\", 10);\r\n\t\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\t\tconst dataItems = stockSeries.dataItems;\r\n\r\n\t\t\tlet data = this._getDataArray(dataItems);\r\n\r\n\t\t\tlet i = 0;\r\n\t\t\tlet index = 0;\r\n\t\t\tlet tr = 0;\r\n\t\t\tlet prevClose: number | undefined;\r\n\t\t\tlet prevATR: number | undefined;\r\n\t\t\tlet multiplier = this.get(\"multiplier\", 3);\r\n\r\n\r\n\t\t\tlet atr: number | undefined;\r\n\t\t\tlet trendDirection: boolean = false;\r\n\t\t\tlet prevSuperTrend: number | undefined;\r\n\t\t\tlet prevUpperBand: number | undefined;\r\n\t\t\tlet prevLowerBand: number | undefined;\r\n\t\t\tlet upperBand: number | undefined;\r\n\t\t\tlet lowerBand: number | undefined;\r\n\t\t\tlet superTrend: number | undefined;\r\n\r\n\r\n\t\t\t$array.each(data, (dataItem) => {\r\n\r\n\t\t\t\tlet valueClose = dataItem.value_close;\r\n\r\n\t\t\t\tif (valueClose != null && prevClose != null) {\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\ttr = Math.max(dataItem.value_high - dataItem.value_low, Math.abs(dataItem.value_high - prevClose), Math.abs(dataItem.value_low - prevClose));\r\n\t\t\t\t\tdataItem.tr = tr;\r\n\r\n\t\t\t\t\tif (i >= period) {\r\n\t\t\t\t\t\tif (i == period) {\r\n\t\t\t\t\t\t\tlet sum = 0;\r\n\t\t\t\t\t\t\tlet k = 0;\r\n\t\t\t\t\t\t\tfor (let j = index; j >= 0; j--) {\r\n\t\t\t\t\t\t\t\tsum += data[j].tr;\r\n\t\t\t\t\t\t\t\tk++;\r\n\t\t\t\t\t\t\t\tif (k == period) {\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tatr = sum / period;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (prevATR != null) {\r\n\t\t\t\t\t\t\t\tatr = (prevATR * (period - 1) + tr) / period;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tprevATR = atr;\r\n\r\n\t\t\t\t\t\tlet basicUpperBand = (dataItem.value_high + dataItem.value_low) / 2 + (multiplier * Number(atr));\r\n\t\t\t\t\t\tlet basicLowerBand = (dataItem.value_high + dataItem.value_low) / 2 - (multiplier * Number(atr));\r\n\r\n\t\t\t\t\t\t// Adjusted bands\r\n\t\t\t\t\t\tif (i === period) {\r\n\t\t\t\t\t\t\tupperBand = basicUpperBand;\r\n\t\t\t\t\t\t\tlowerBand = basicLowerBand;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tupperBand = basicUpperBand < Number(prevUpperBand) || prevClose > Number(prevUpperBand)\r\n\t\t\t\t\t\t\t\t? basicUpperBand\r\n\t\t\t\t\t\t\t\t: prevUpperBand;\r\n\t\t\t\t\t\t\tlowerBand = basicLowerBand > Number(prevLowerBand) || prevClose < Number(prevLowerBand)\r\n\t\t\t\t\t\t\t\t? basicLowerBand\r\n\t\t\t\t\t\t\t\t: prevLowerBand;\r\n\t\t\t\t\t\t}\r\n\r\n\r\n\r\n\t\t\t\t\t\tif (i === period) {\r\n\t\t\t\t\t\t\tsuperTrend = valueClose <= Number(upperBand) ? upperBand : lowerBand;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (prevSuperTrend === prevUpperBand && valueClose <= Number(upperBand)) {\r\n\t\t\t\t\t\t\t\tsuperTrend = upperBand;\r\n\t\t\t\t\t\t\t\ttrendDirection = false; // downtrend\r\n\t\t\t\t\t\t\t} else if (prevSuperTrend === prevUpperBand && valueClose > Number(upperBand)) {\r\n\t\t\t\t\t\t\t\tsuperTrend = lowerBand;\r\n\t\t\t\t\t\t\t\ttrendDirection = true; // uptrend\r\n\t\t\t\t\t\t\t} else if (prevSuperTrend === prevLowerBand && valueClose >= Number(lowerBand)) {\r\n\t\t\t\t\t\t\t\tsuperTrend = lowerBand;\r\n\t\t\t\t\t\t\t\ttrendDirection = true; // uptrend\r\n\t\t\t\t\t\t\t} else if (prevSuperTrend === prevLowerBand && valueClose < Number(lowerBand)) {\r\n\t\t\t\t\t\t\t\tsuperTrend = upperBand;\r\n\t\t\t\t\t\t\t\ttrendDirection = false; // downtrend\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tsuperTrend = prevSuperTrend;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (trendDirection) {\r\n\t\t\t\t\t\t\tdataItem.lower = superTrend;\r\n\t\t\t\t\t\t\tdataItem.upper = undefined;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tdataItem.upper = superTrend;\r\n\t\t\t\t\t\t\tdataItem.lower = undefined;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tprevLowerBand = lowerBand;\r\n\t\t\t\t\t\tprevUpperBand = upperBand;\r\n\t\t\t\t\t\tprevSuperTrend = superTrend;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tindex++;\r\n\t\t\t\tprevClose = valueClose;\r\n\t\t\t})\r\n\r\n\t\t\tthis.upperBandSeries.data.setAll(data);\r\n\t\t\tthis.lowerBandSeries.data.setAll(data);\r\n\t\t}\r\n\t}\r\n\tprotected _dispose() {\r\n\t\tthis.upperBandSeries.dispose();\r\n\t\tthis.lowerBandSeries.dispose();\r\n\t\tsuper._dispose();\r\n\t}\r\n\r\n\tpublic async hide(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.hide(duration),\r\n\t\t\tthis.upperBandSeries.hide(duration),\r\n\t\t\tthis.lowerBandSeries.hide(duration)\r\n\t\t]);\r\n\t}\r\n\r\n\tpublic async show(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.show(duration),\r\n\t\t\tthis.upperBandSeries.show(duration),\r\n\t\t\tthis.lowerBandSeries.show(duration)\r\n\t\t]);\r\n\t}\r\n\r\n}"]}
@@ -44,6 +44,14 @@ export interface IDateRangeSelectorSettings extends IStockControlSettings {
44
44
  * @since 5.11.1
45
45
  */
46
46
  disableWeekDays?: number[];
47
+ /**
48
+ * If set to `false`, typing into date fields will be disabled. Instead,
49
+ * user will be able to select a day using arrow keys.
50
+ *
51
+ * @default true
52
+ * @since 5.12.3
53
+ */
54
+ allowInput?: boolean;
47
55
  }
48
56
  export interface IDateRangeSelectorPrivate extends IStockControlPrivate {
49
57
  dropdown: Dropdown;
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangeSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/toolbar/DateRangeSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,WAAW,0BAA2B,SAAQ,qBAAqB;IAExE;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAE/B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAE/B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAE3B;AAED,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACtE,QAAQ,EAAE,QAAQ,CAAC;IAEnB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,UAAU,EAAE,GAAG,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,IAAI,CAAC;CACd;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACpE;;;;OAIG;IACH,aAAa,EAAE;QACd,QAAQ,EAAE,IAAI,CAAC;QACf,MAAM,EAAE,IAAI,CAAC;KACb,CAAA;CACD;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IAClD,OAAc,SAAS,EAAE,MAAM,CAAuB;IACtD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAiE;IAEzF,SAAS,EAAE,0BAA0B,CAAC;IACtC,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,OAAO,EAAE,wBAAwB,CAAC;IAEjD,SAAS,CAAC,SAAS;IAyCnB,SAAS,CAAC,aAAa,IAAI,IAAI;IAkK/B,SAAS,CAAC,eAAe,IAAI,UAAU;IAIhC,aAAa;IAIpB,SAAS,CAAC,aAAa,IAAI,IAAI;IAqC/B,SAAS,CAAC,cAAc,IAAI,IAAI;IAyChC,SAAS,CAAC,YAAY,IAAI,IAAI;IAa9B,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIzC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,SAAS,CAAC,cAAc,IAAI,MAAM;IAKlC,SAAS,CAAC,QAAQ,IAAI,GAAG;IAOzB,SAAS,CAAC,gBAAgB,IAAI,GAAG;IAsEjC;;;;OAIG;IACH,SAAS,CAAC,eAAe,IAAI,IAAI;CA43BjC"}
1
+ {"version":3,"file":"DateRangeSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/toolbar/DateRangeSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,WAAW,0BAA2B,SAAQ,qBAAqB;IAExE;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAE/B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAE/B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CAErB;AAED,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACtE,QAAQ,EAAE,QAAQ,CAAC;IAEnB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,UAAU,EAAE,GAAG,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,IAAI,CAAC;CACd;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACpE;;;;OAIG;IACH,aAAa,EAAE;QACd,QAAQ,EAAE,IAAI,CAAC;QACf,MAAM,EAAE,IAAI,CAAC;KACb,CAAA;CACD;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IAClD,OAAc,SAAS,EAAE,MAAM,CAAuB;IACtD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAiE;IAEzF,SAAS,EAAE,0BAA0B,CAAC;IACtC,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,OAAO,EAAE,wBAAwB,CAAC;IAEjD,SAAS,CAAC,SAAS;IAyCnB,SAAS,CAAC,aAAa,IAAI,IAAI;IA+K/B,SAAS,CAAC,eAAe,IAAI,UAAU;IAIhC,aAAa;IAIpB,SAAS,CAAC,aAAa,IAAI,IAAI;IAqC/B,SAAS,CAAC,cAAc,IAAI,IAAI;IAyChC,SAAS,CAAC,YAAY,IAAI,IAAI;IAa9B,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIzC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,SAAS,CAAC,cAAc,IAAI,MAAM;IAKlC,SAAS,CAAC,QAAQ,IAAI,GAAG;IAOzB,SAAS,CAAC,gBAAgB,IAAI,GAAG;IAsEjC;;;;OAIG;IACH,SAAS,CAAC,eAAe,IAAI,IAAI;CA43BjC"}
@@ -47,6 +47,7 @@ export class DateRangeSelector extends StockControl {
47
47
  _initDropdown() {
48
48
  const dropdown = this.getPrivate("dropdown");
49
49
  const container = dropdown.getPrivate("container");
50
+ const allowInput = this.get("allowInput", true);
50
51
  const content = document.createElement("div");
51
52
  content.className = "am5stock-row";
52
53
  container.appendChild(content);
@@ -63,6 +64,12 @@ export class DateRangeSelector extends StockControl {
63
64
  fromGroup.appendChild(fromLabel);
64
65
  const fromField = document.createElement("input");
65
66
  fromField.type = "text";
67
+ if (allowInput) {
68
+ fromField.setAttribute("aria-label", this._root.language.translateAny("From date"));
69
+ }
70
+ else {
71
+ fromField.setAttribute("aria-label", this._root.language.translateAny("From date") + "; " + this._root.language.translateAny("Use arrow keys and ENTER to selected a date"));
72
+ }
66
73
  fromGroup.appendChild(fromField);
67
74
  this.setPrivate("fromField", fromField);
68
75
  // To fields
@@ -78,6 +85,12 @@ export class DateRangeSelector extends StockControl {
78
85
  toGroup.appendChild(toLabel);
79
86
  const toField = document.createElement("input");
80
87
  toField.type = "text";
88
+ if (allowInput) {
89
+ toField.setAttribute("aria-label", this._root.language.translateAny("To date"));
90
+ }
91
+ else {
92
+ toField.setAttribute("aria-label", this._root.language.translateAny("To date") + "; " + this._root.language.translateAny("Use arrow keys and ENTER to selected a date"));
93
+ }
81
94
  toGroup.appendChild(toField);
82
95
  this.setPrivate("toField", toField);
83
96
  // Date pickers
@@ -92,7 +105,7 @@ export class DateRangeSelector extends StockControl {
92
105
  const fromPicker = flatpickr(fromField, {
93
106
  inline: true,
94
107
  appendTo: fromColumn,
95
- allowInput: true,
108
+ allowInput: allowInput,
96
109
  locale: pickerLocale,
97
110
  disable: disable,
98
111
  formatDate: (date) => {
@@ -106,7 +119,7 @@ export class DateRangeSelector extends StockControl {
106
119
  const toPicker = flatpickr(toField, {
107
120
  inline: true,
108
121
  appendTo: toColumn,
109
- allowInput: true,
122
+ allowInput: allowInput,
110
123
  locale: pickerLocale,
111
124
  disable: disable,
112
125
  formatDate: (date) => {