@refinitiv-ui/efx-grid 6.0.108 → 6.0.110

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.
@@ -0,0 +1,40 @@
1
+
2
+
3
+ declare namespace Color {
4
+
5
+ }
6
+
7
+ declare function rgb2Hex(rgbCode: string): string;
8
+
9
+ declare function num2Hex(triplet: (number)[]|null): string;
10
+
11
+ declare function num2Rgb(triplet: (number)[]|null): string;
12
+
13
+ declare function hex2Num(hex: string): (number)[]|null;
14
+
15
+ declare function hex2Rgb(hex: string): string;
16
+
17
+ declare function getColorLuminance(color: number): number;
18
+
19
+ declare function getRelativeLuminance(triplet: (number)[]|null): number;
20
+
21
+ declare function getContrastRatio(lumin1: number, lumin2: number): number;
22
+
23
+ declare function getContrastColor(triplet: (number)[]|null): string;
24
+
25
+ declare function blendColor(baseColor: string, maxColor: string, ratio: number): (number)[]|null;
26
+
27
+ export default Color;
28
+ export {
29
+ Color,
30
+ rgb2Hex,
31
+ num2Hex,
32
+ num2Rgb,
33
+ hex2Num,
34
+ hex2Rgb,
35
+ getColorLuminance,
36
+ getRelativeLuminance,
37
+ getContrastRatio,
38
+ getContrastColor,
39
+ blendColor
40
+ };
@@ -0,0 +1,210 @@
1
+ /** @namespace */
2
+ let Color = {};
3
+
4
+ /** @private
5
+ * @constant
6
+ * @type {RegExp}
7
+ */
8
+ const NumRegExp = /\d+/g;
9
+
10
+ /** Convert CSS rgb or rgba formats to CSS hex color string (with # prefix)
11
+ * @public
12
+ * @param {string} rgbCode RGB values without # prefix
13
+ * @return {string} RGB in hex code (with # prefix)
14
+ * @example
15
+ * rgb2Hex("rgb(255, 255, 0)"); // "#FFFF00"
16
+ * rgb2Hex("rgba(255, 255, 0, 1)"); // "#FFFF00"
17
+ * rgb2Hex("255 255.0"); // "#FFFF00"
18
+ * rgb2Hex("#FFFF00"); // "#FFFF00"
19
+ * rgb2Hex("#1a1a1a"); // "#1a1a1a"
20
+ * rgb2Hex("2552550"); // "2552550"
21
+ * rgb2Hex("invalid"); // "invalid"
22
+ * rgb2Hex(null); // ""
23
+ */
24
+ let rgb2Hex = function (rgbCode) {
25
+ if(!rgbCode || typeof rgbCode !== "string") {
26
+ return "";
27
+ }
28
+ if(rgbCode.charAt(0) === "#") {
29
+ return rgbCode;
30
+ }
31
+ let rgb = rgbCode.match(NumRegExp);
32
+ if(!rgb || rgb.length < 3) {
33
+ return rgbCode;
34
+ }
35
+
36
+ let hex = "#";
37
+ for(let i = 0; i < 3; i++) {
38
+ let num = +rgb[i];
39
+ if(!(num >= 16)) { // Handle NaN case
40
+ hex += "0";
41
+ }
42
+ hex += (num) ? num.toString(16).toUpperCase() : "0";
43
+ }
44
+ return hex;
45
+ };
46
+
47
+ /** @public
48
+ * @function
49
+ * @param {Array.<number>} triplet
50
+ * @return {string} resultColor
51
+ */
52
+ let num2Hex = function (triplet) {
53
+ let rgb = triplet[2] | (triplet[1] << 8) | (triplet[0] << 16);
54
+ return ("#" + (0x1000000 + rgb).toString(16).slice(1));
55
+ };
56
+ /** Note that Chrome, IE, and Firefox store color in rgb representation.
57
+ * @public
58
+ * @function
59
+ * @param {Array.<number>} triplet
60
+ * @return {string} Color string in RGB represetation (e.g. rgb(100, 44, 1))
61
+ */
62
+ let num2Rgb = function (triplet) {
63
+ return "rgb(" + triplet[0] + ", " + triplet[1] + ", " + triplet[2] + ")";
64
+ };
65
+ /** @public
66
+ * @function
67
+ * @param {string} hex
68
+ * @return {Array.<number>} Array of size 3 which contains [red, green, blue]
69
+ */
70
+ let hex2Num = function (hex) {
71
+ let hexInt = parseInt(hex.replace(/[^0-9A-F]/gi, ""), 16);
72
+ let r = (hexInt >> 16) & 255;
73
+ let g = (hexInt >> 8) & 255;
74
+ let b = hexInt & 255;
75
+ return [r, g, b];
76
+ };
77
+ /** @public
78
+ * @function
79
+ * @param {string} hex Color string with leading # character (e.g. #FFAA00)
80
+ * @return {string} Color string in RGB represetation (e.g. rgb(100, 44, 1))
81
+ */
82
+ let hex2Rgb = function (hex) {
83
+ if(hex) {
84
+ let hexInt = parseInt(hex.replace(/[^0-9A-F]/gi, ""), 16);
85
+ let r = (hexInt >> 16) & 255;
86
+ let g = (hexInt >> 8) & 255;
87
+ let b = hexInt & 255;
88
+ return "rgb(" + r + ", " + g + ", " + b + ")";
89
+ }
90
+ return "";
91
+ };
92
+
93
+ /** @public
94
+ * @function
95
+ * @param {number} color A color component (e.g., R, G, or B) with value between 0 and 255 (inclusive)
96
+ * @return {number} Normalized luminance value between 0 and 1
97
+ */
98
+ let getColorLuminance = function (color) {
99
+ if(!color || color < 0) {
100
+ return 0;
101
+ }
102
+ if(color >= 255) {
103
+ return 1;
104
+ }
105
+ let normalizedColor = color / 255;
106
+ if(normalizedColor <= 0.03928) {
107
+ return normalizedColor / 12.92;
108
+ }
109
+ return Math.pow((normalizedColor + 0.055) / 1.055, 2.4);
110
+ };
111
+ /** The relative brightness of any point in a colorspace, normalized to 0 for darkest black and 1 for lightest white (https://www.w3.org/TR/WCAG20/#relativeluminancedef)
112
+ * @public
113
+ * @function
114
+ * @param {Array.<number>} triplet
115
+ * @return {number} Normalized value between 0 and 1
116
+ */
117
+ let getRelativeLuminance = function (triplet) {
118
+ let R = getColorLuminance(triplet[0]);
119
+ let G = getColorLuminance(triplet[1]);
120
+ let B = getColorLuminance(triplet[2]);
121
+
122
+ return 0.2126 * R + 0.7152 * G + 0.0722 * B;
123
+ };
124
+ /** @public
125
+ * @function
126
+ * @param {number} lumin1
127
+ * @param {number} lumin2
128
+ * @return {number} Contrast ratios can range from 1 to 21 (commonly written 1:1 to 21:1).
129
+ */
130
+ let getContrastRatio = function (lumin1, lumin2) {
131
+ if(lumin1 === lumin2) {
132
+ return 1;
133
+ }
134
+ let darker = lumin1;
135
+ let lighter = lumin2;
136
+
137
+ if(lumin1 > lumin2) {
138
+ lighter = lumin1;
139
+ darker = lumin2;
140
+ }
141
+ return (lighter + 0.05) / (darker + 0.05);
142
+ };
143
+ /** @public
144
+ * @function
145
+ * @param {Array.<number>} triplet
146
+ * @return {string} white or black color in hex code
147
+ */
148
+ let getContrastColor = function (triplet) {
149
+ let luminance = getRelativeLuminance(triplet);
150
+ let contrastW = getContrastRatio(1, luminance);
151
+ let contrastB = getContrastRatio(0, luminance);
152
+
153
+ if (contrastB >= contrastW) { // Brighter color has more impact to human eye than the darker color
154
+ return "#000000";
155
+ }
156
+ return "#ffffff";
157
+ };
158
+
159
+ /** Blend two colors into single color with the specified ratio
160
+ * @public
161
+ * @function
162
+ * @param {string} baseColor
163
+ * @param {string} maxColor
164
+ * @param {number} ratio [0, 1]
165
+ * @return {Array.<number>} resultColor
166
+ */
167
+ let blendColor = function (baseColor, maxColor, ratio) { // This can be optimized further
168
+ if (ratio > 1) {
169
+ ratio = 1;
170
+ } else if(ratio < 0) {
171
+ ratio = 0;
172
+ }
173
+
174
+ let baseColorTriplet = hex2Num(baseColor);
175
+ let maxColorTriplet = hex2Num(maxColor);
176
+ let blendResult = [];
177
+ for (let i = 0; i < 3; ++i) {
178
+ let gap = (maxColorTriplet[i] - baseColorTriplet[i]) * ratio;
179
+ blendResult.push(baseColorTriplet[i] + gap);
180
+ }
181
+
182
+ return blendResult;
183
+ };
184
+
185
+
186
+ Color.rgb2Hex = rgb2Hex;
187
+ Color.num2Hex = num2Hex;
188
+ Color.num2Rgb = num2Rgb;
189
+ Color.hex2Num = hex2Num;
190
+ Color.hex2Rgb = hex2Rgb;
191
+ Color.getColorLuminance = getColorLuminance;
192
+ Color.getRelativeLuminance = getRelativeLuminance;
193
+ Color.getContrastRatio = getContrastRatio;
194
+ Color.getContrastColor = getContrastColor;
195
+ Color.blendColor = blendColor;
196
+
197
+ export default Color;
198
+ export {
199
+ Color,
200
+ rgb2Hex,
201
+ num2Hex,
202
+ num2Rgb,
203
+ hex2Num,
204
+ hex2Rgb,
205
+ getColorLuminance,
206
+ getRelativeLuminance,
207
+ getContrastRatio,
208
+ getContrastColor,
209
+ blendColor
210
+ };
@@ -1,4 +1,4 @@
1
-
1
+ import { rgb2Hex } from "./Color.js";
2
2
 
3
3
  declare namespace Util {
4
4
 
@@ -42,8 +42,6 @@ declare function isTouchDevice(): boolean;
42
42
 
43
43
  declare function nestedObjectToArray(obj: any, ary?: any[]|null): any[]|null;
44
44
 
45
- declare function rgb2Hex(rgbCode: string): string;
46
-
47
45
  declare function prepareTSVContent(data: any): string;
48
46
 
49
47
  export default Util;
@@ -1,3 +1,5 @@
1
+ import { rgb2Hex } from "./Color.js";
2
+
1
3
  /** @namespace */
2
4
  let Util = {};
3
5
 
@@ -453,43 +455,6 @@ let nestedObjectToArray = function (obj, ary) {
453
455
  return ary;
454
456
  };
455
457
 
456
- /** Convert CSS rgb or rgba formats to CSS hex color string (# prefix)
457
- * @public
458
- * @param {string} rgbCode
459
- * @return {string}
460
- * @example
461
- * rgb2Hex("rgb(255, 255, 0)"); // "#FFFF00"
462
- * rgb2Hex("rgba(255, 255, 0, 1)"); // "#FFFF00"
463
- * rgb2Hex("255 255.0"); // "#FFFF00"
464
- * rgb2Hex("#FFFF00"); // "#FFFF00"
465
- * rgb2Hex("#1a1a1a"); // "#1a1a1a"
466
- * rgb2Hex("2552550"); // "2552550"
467
- * rgb2Hex("invalid"); // "invalid"
468
- * rgb2Hex(null); // ""
469
- */
470
- let rgb2Hex = function (rgbCode) {
471
- if(!rgbCode || typeof rgbCode !== "string") {
472
- return "";
473
- }
474
- if(rgbCode.charAt(0) === "#") {
475
- return rgbCode;
476
- }
477
- let rgb = rgbCode.match(/\d+/g);
478
- if(!rgb || rgb.length < 3) {
479
- return rgbCode;
480
- }
481
-
482
- let hex = "#";
483
- for(let i = 0; i < 3; i++) {
484
- let num = +rgb[i];
485
- if(!(num >= 16)) { // Handle NaN case
486
- hex += "0";
487
- }
488
- hex += (num) ? num.toString(16).toUpperCase() : "0";
489
- }
490
- return hex;
491
- };
492
-
493
458
  /** transform data to tab seperated value
494
459
  * @public
495
460
  * @param {*} data
@@ -175,6 +175,10 @@ declare class Core extends ElementWrapper {
175
175
 
176
176
  public setColumnStyle(colIndex: number, style: string, value: string, opt_type?: string|null): void;
177
177
 
178
+ public getColumnBackgroundColor(colIndex: number): string;
179
+
180
+ public setColumnBackgroundColor(colIndex: number, color?: string|null): void;
181
+
178
182
  public enableColumnClass(colIndex: number, clsName: string, enabled?: boolean|null, opt_type?: string|null): boolean;
179
183
 
180
184
  public hasColumnClass(colIndex: number, clsName: string, opt_type?: string|null): boolean;
@@ -50,6 +50,8 @@ declare class FilterInputPlugin extends GridPlugin {
50
50
 
51
51
  public setInputValue(colIndex: number, value: any): void;
52
52
 
53
+ public disableColumnInput(colIndex: number, disabled?: boolean|null): void;
54
+
53
55
  public refresh(delayMs?: number|null): void;
54
56
 
55
57
  public setFilterLogic(colIndex: number, func: ((...params: any[]) => any)|null, ctx?: any): void;
@@ -46,7 +46,8 @@ declare namespace ColumnDefinition {
46
46
  leftPinned?: boolean|null,
47
47
  rightPinned?: boolean|null,
48
48
  info?: any,
49
- focusable?: boolean|null
49
+ focusable?: boolean|null,
50
+ backgroundColor?: string|null
50
51
  };
51
52
 
52
53
  }
@@ -163,6 +164,10 @@ declare class ColumnDefinition {
163
164
 
164
165
  public isFocusable(): boolean;
165
166
 
167
+ public getBackgroundColor(): string;
168
+
169
+ public setBackgroundColor(color: string): void;
170
+
166
171
  }
167
172
 
168
173
  declare const COL_DEF: string;
@@ -211,6 +211,10 @@ declare class Grid extends EventDispatcher {
211
211
 
212
212
  public setColumnName(colIndex: number, str: string): void;
213
213
 
214
+ public getColumnBackgroundColor(colRef: Grid.ColumnReference|null): string;
215
+
216
+ public setColumnBackgroundColor(colRef: Grid.ColumnReference|null, color: string): void;
217
+
214
218
  public setColumnRenderer(colRef: Grid.ColumnReference|null, func?: ((...params: any[]) => any)|null): void;
215
219
 
216
220
  public activateColumnRenderer(colRef: Grid.ColumnReference|null, id?: string|null, func?: ((...params: any[]) => any)|null): void;
@@ -129,6 +129,10 @@ declare class RowFilteringPlugin extends GridPlugin {
129
129
 
130
130
  public enableSeparatorFiltering(enabled?: boolean|null): void;
131
131
 
132
+ public showColumnFilterIcon(colIndex: number, shown?: boolean|null): void;
133
+
134
+ public hideColumnFilterIcon(colIndex: number, hidden?: boolean|null): void;
135
+
132
136
  }
133
137
 
134
138
  declare function colSettings(colIndex: number, exp: RowFilteringPlugin.Expression|null, ctx?: (any|string)|null): boolean;
package/lib/versions.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "tr-grid-util": "1.3.153",
2
+ "tr-grid-util": "1.3.154",
3
3
  "tr-grid-printer": "1.0.18",
4
4
  "@grid/column-dragging": "1.0.20",
5
5
  "@grid/row-segmenting": "1.0.31",
@@ -17,14 +17,14 @@
17
17
  "tr-grid-conditional-coloring": "1.0.70",
18
18
  "tr-grid-content-wrap": "1.0.20",
19
19
  "tr-grid-contextmenu": "1.0.41",
20
- "tr-grid-filter-input": "0.9.39",
20
+ "tr-grid-filter-input": "0.9.40",
21
21
  "tr-grid-heat-map": "1.0.29",
22
22
  "tr-grid-in-cell-editing": "1.0.87",
23
23
  "tr-grid-pagination": "1.0.24",
24
24
  "tr-grid-percent-bar": "1.0.24",
25
25
  "tr-grid-range-bar": "2.0.8",
26
26
  "tr-grid-row-dragging": "1.0.35",
27
- "tr-grid-row-filtering": "1.0.77",
27
+ "tr-grid-row-filtering": "1.0.78",
28
28
  "tr-grid-row-grouping": "1.0.88",
29
29
  "tr-grid-row-selection": "1.0.30",
30
30
  "tr-grid-rowcoloring": "1.0.25",
package/package.json CHANGED
@@ -67,5 +67,5 @@
67
67
  "publishConfig": {
68
68
  "access": "public"
69
69
  },
70
- "version": "6.0.108"
70
+ "version": "6.0.110"
71
71
  }