dtable-ui-component 5.0.19 → 5.0.21-alpha.1

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,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RGB_COLORS_MAP = exports.DEFAULT_COLORS = exports.COLOR_PICKER_MODE = void 0;
7
+ const DEFAULT_COLORS = exports.DEFAULT_COLORS = ['#ffffff', '#f5f5f5', '#eef6f9', '#deffe6', '#def7c4', '#fefdb5', '#feebb6', '#ffdde5'];
8
+ const COLOR_PICKER_MODE = exports.COLOR_PICKER_MODE = {
9
+ HEX: 'hex',
10
+ RGBA: 'rgba'
11
+ };
12
+ const RGB_COLORS_MAP = exports.RGB_COLORS_MAP = {
13
+ RED: 'r',
14
+ GREEN: 'g',
15
+ BLUT: 'b'
16
+ };
@@ -0,0 +1,145 @@
1
+ .dtable-color-picker {
2
+ width: 240px;
3
+ background-color: #fff;
4
+ border-radius: 2px;
5
+ padding: 0.75rem;
6
+ line-height: normal;
7
+ box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 2px, rgba(0, 0, 0, 0.3) 0px 4px 8px
8
+ }
9
+
10
+ .dtable-color-picker .chrome-picker {
11
+ width: 100% !important;
12
+ box-shadow: unset !important;
13
+ }
14
+
15
+ .dtable-color-picker .colorinput-color {
16
+ width: 20px;
17
+ height: 20px;
18
+ cursor: pointer;
19
+ }
20
+
21
+ .dtable-color-picker .colorinput-color .dtable-icon-color-check {
22
+ color: #666;
23
+ font-size: 12px;
24
+ }
25
+
26
+ .dtable-color-picker .dark .colorinput-color .dtable-icon-color-check {
27
+ color: #fff;
28
+ }
29
+
30
+ .dtable-color-picker .blank-placeholder {
31
+ width: 20px;
32
+ height: 20px;
33
+ border: 2px #eee solid;
34
+ border-radius: 4px;
35
+ }
36
+
37
+ .dtable-color-picker .blank-placeholder span {
38
+ color: red;
39
+ transform: rotate(120deg) translate(0px, -2px);
40
+ font-size: 16px;
41
+ }
42
+
43
+ .dtable-color-picker .chrome-picker > div:first-of-type {
44
+ height: 140px;
45
+ border-radius: 2px !important;
46
+ }
47
+
48
+ .dtable-color-picker .chrome-picker > div:nth-child(2) {
49
+ padding: 0.75rem 0 !important;
50
+ }
51
+
52
+ .dtable-color-picker .color-setting {
53
+ font-size: 13px;
54
+ }
55
+
56
+ .dtable-color-picker .color-setting .mode-btn {
57
+ color: #666;
58
+ }
59
+
60
+ .dtable-color-picker .color-setting input {
61
+ height: 24px;
62
+ font-family: inherit;
63
+ font-size: 13px;
64
+ }
65
+
66
+ .dtable-color-picker .color-setting .hex-container {
67
+ position: relative;
68
+ }
69
+
70
+ .dtable-color-picker .color-setting .hex-container span {
71
+ position: absolute;
72
+ top: 4.8px;
73
+ left: 10px;
74
+ color: #999;
75
+ }
76
+
77
+ .dtable-color-picker .color-setting .hex-input {
78
+ padding-left: 20px;
79
+ width: 100px;
80
+ }
81
+
82
+ .dtable-color-picker .color-setting .rgb-container span {
83
+ margin: 0 2px 0 4px;
84
+ color: #999;
85
+ }
86
+
87
+ .dtable-color-picker .color-setting .rgb-input {
88
+ width: 28px;
89
+ display: inline-block;
90
+ padding: 0 0 0 2px;
91
+ }
92
+
93
+ .dtable-color-picker .color-setting .alpha-input {
94
+ width: 60px;
95
+ margin-left: 0.5rem;
96
+ }
97
+
98
+ .dtable-color-picker .color-setting.rgba .alpha-input {
99
+ width: 40px;
100
+ padding: 0 0 0 2px;
101
+ margin-left: 4px;
102
+ }
103
+
104
+ .dtable-color-picker .color-setting .dtable-font {
105
+ font-size: 13px;
106
+ margin-left: 2px;
107
+ color: #ccc;
108
+ display: inline-block;
109
+ transform: rotate(90deg);
110
+ cursor: pointer;
111
+ }
112
+
113
+ .dtable-color-picker .color-setting .dtable-font:hover {
114
+ color: #999;
115
+ }
116
+
117
+ .dtable-color-picker .saturation-black {
118
+ cursor: pointer;
119
+ }
120
+
121
+ .dtable-color-picker .chrome-picker .color-bar .hue-horizontal,
122
+ .dtable-color-picker .chrome-picker .color-bar > div:last-of-type > div:last-of-type > div > div:first-of-type,
123
+ .dtable-color-picker .chrome-picker .color-bar > div:last-of-type > div:last-of-type > div > div:nth-child(2) {
124
+ border-radius: 10px;
125
+ }
126
+
127
+ .dtable-color-picker .chrome-picker .color-bar .hue-horizontal,
128
+ .dtable-color-picker .chrome-picker > div:nth-child(2) > div > div > div:nth-child(2) {
129
+ cursor: pointer;
130
+ }
131
+
132
+ .dtable-color-picker .chrome-picker .color-bar > div:first-of-type > div {
133
+ margin-top: 4px !important;
134
+ width: 20px !important;
135
+ height: 20px !important;
136
+ border-radius: 2px !important;
137
+ }
138
+
139
+ .dtable-color-picker .chrome-picker .color-bar > div:first-of-type > div > div:first-of-type {
140
+ border-radius: 2px !important;
141
+ }
142
+
143
+ .dtable-color-picker .chrome-picker > div:nth-child(2) > div:nth-child(2) {
144
+ display: none !important;
145
+ }
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _reactstrap = require("reactstrap");
11
+ var _reactColor = require("react-color");
12
+ var _lang = require("../lang");
13
+ var _ClickOutside = _interopRequireDefault(require("../ClickOutside"));
14
+ var _constants = require("./constants");
15
+ var _utils = require("./utils");
16
+ require("./index.css");
17
+ const DTableColorPicker = props => {
18
+ const {
19
+ onToggle,
20
+ popoverStyle,
21
+ color,
22
+ defaultColors,
23
+ storageKey
24
+ } = props;
25
+ const initialRgbaColor = (0, _utils.hexToRgba)(color);
26
+ const [value, setValue] = (0, _react.useState)(initialRgbaColor);
27
+ const [hexVal, setHexVal] = (0, _react.useState)((0, _utils.getInitialHexVal)(color));
28
+ const [alphaVal, setAlphaVal] = (0, _react.useState)((0, _utils.toPercentage)(initialRgbaColor.a));
29
+ const [redVal, setRedVal] = (0, _react.useState)(initialRgbaColor.r);
30
+ const [greenVal, setGreenVal] = (0, _react.useState)(initialRgbaColor.g);
31
+ const [blueVal, setBlueVal] = (0, _react.useState)(initialRgbaColor.b);
32
+ const [colorMode, setColorMode] = (0, _react.useState)(_constants.COLOR_PICKER_MODE.HEX); // hex or rgb
33
+ const currentUsedColorsStr = window.localStorage.getItem(storageKey);
34
+ let currentUsedColors = currentUsedColorsStr ? JSON.parse(currentUsedColorsStr) : [];
35
+ (0, _react.useEffect)(() => {
36
+ document.querySelector('.chrome-picker > div:last-of-type > .flexbox-fix:first-of-type').classList.add('color-bar');
37
+ }, []);
38
+ const onChangeChromePicker = newColor => {
39
+ const rgba = newColor.rgb;
40
+ rgba.a = Math.round(rgba.a * 100) / 100;
41
+ const transferedHex = (0, _utils.rgbaToHex)(rgba);
42
+ const hexVal = transferedHex.substring(1, 7);
43
+ const {
44
+ r,
45
+ g,
46
+ b,
47
+ a
48
+ } = rgba;
49
+ setAlphaVal((0, _utils.toPercentage)(a));
50
+ updateValue(rgba);
51
+ if (colorMode === _constants.COLOR_PICKER_MODE.HEX) {
52
+ setHexVal(hexVal);
53
+ } else {
54
+ setRedVal(r);
55
+ setGreenVal(g);
56
+ setBlueVal(b);
57
+ }
58
+ };
59
+ const onChangeMode = () => {
60
+ let newMode;
61
+ if (colorMode === _constants.COLOR_PICKER_MODE.HEX) {
62
+ newMode = _constants.COLOR_PICKER_MODE.RGBA;
63
+ const rgba = (0, _utils.hexToRgba)(color);
64
+ const {
65
+ r,
66
+ g,
67
+ b
68
+ } = rgba;
69
+ setRedVal(r);
70
+ setGreenVal(g);
71
+ setBlueVal(b);
72
+ } else {
73
+ newMode = _constants.COLOR_PICKER_MODE.HEX;
74
+ const hexVal = (0, _utils.rgbaToHex)(value, false, false);
75
+ setHexVal(hexVal);
76
+ }
77
+ setColorMode(newMode);
78
+ };
79
+ const onChangeHex = e => {
80
+ const hex = e.target.value;
81
+ setHexVal(hex);
82
+ };
83
+ const onHexInputBlur = () => {
84
+ const hexRegex = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/i;
85
+ if (!hexRegex.test(hexVal)) {
86
+ const validHex = (0, _utils.rgbaToHex)(value, false);
87
+ setHexVal(validHex);
88
+ return;
89
+ }
90
+ let newHexVal = hexVal;
91
+ if (newHexVal.length === 3) {
92
+ newHexVal = newHexVal.split('').map(char => char + char).join('');
93
+ }
94
+ setHexVal(newHexVal);
95
+ const {
96
+ r,
97
+ g,
98
+ b
99
+ } = (0, _utils.hexToRgba)(newHexVal);
100
+ const newValue = {
101
+ r,
102
+ g,
103
+ b,
104
+ a: value.a
105
+ };
106
+ updateValue(newValue);
107
+ };
108
+ const onChangeAlpha = e => {
109
+ const regex = /^(\d+|\d+%)?$/;
110
+ const alphaVal = e.target.value.trim().replace('%', '');
111
+ if (!regex.test(alphaVal)) return;
112
+ setAlphaVal(alphaVal);
113
+ };
114
+ const onChangeRgb = (e, specColor) => {
115
+ let newVal = e.target.value;
116
+ const regex = /^[0-9]*$/;
117
+ if (!regex.test(newVal)) return;
118
+ if (newVal) newVal = parseInt(newVal);
119
+ switch (specColor) {
120
+ case _constants.RGB_COLORS_MAP.RED:
121
+ {
122
+ setRedVal(newVal);
123
+ break;
124
+ }
125
+ case _constants.RGB_COLORS_MAP.GREEN:
126
+ {
127
+ setGreenVal(newVal);
128
+ break;
129
+ }
130
+ case _constants.RGB_COLORS_MAP.BLUT:
131
+ {
132
+ setBlueVal(newVal);
133
+ break;
134
+ }
135
+ default:
136
+ break;
137
+ }
138
+ };
139
+ const onRgbInputBlur = specColor => {
140
+ let val = redVal;
141
+ let setSpecColor = setRedVal;
142
+ if (specColor === _constants.RGB_COLORS_MAP.GREEN) {
143
+ val = greenVal;
144
+ setSpecColor = setGreenVal;
145
+ } else if (specColor === _constants.RGB_COLORS_MAP.BLUT) {
146
+ val = blueVal;
147
+ setSpecColor = setBlueVal;
148
+ }
149
+ if (!val || val < 0 || val > 255) {
150
+ setSpecColor(value[specColor]);
151
+ return;
152
+ }
153
+ const newValue = {
154
+ ...value,
155
+ [specColor]: val
156
+ };
157
+ updateValue(newValue);
158
+ };
159
+ const updateValue = newValue => {
160
+ setValue(newValue);
161
+ const submitHex = (0, _utils.rgbaToHex)(newValue);
162
+ props.onSubmit(submitHex);
163
+ };
164
+ const onAlphaInputBlur = () => {
165
+ if (!alphaVal || alphaVal < 0 || alphaVal > 100) {
166
+ setAlphaVal((0, _utils.toPercentage)(value.a));
167
+ return;
168
+ }
169
+ const newValue = {
170
+ ...value,
171
+ a: parseFloat(alphaVal) / 100
172
+ };
173
+ updateValue(newValue);
174
+ };
175
+ const onKeyDown = (event, callBack) => {
176
+ if (event.key === 'Enter') {
177
+ event.preventDefault();
178
+ event.target.blur();
179
+ callBack && callBack();
180
+ }
181
+ };
182
+ const onSelectDefaultColor = color => {
183
+ const hexVal = color.slice(1);
184
+ const rgba = (0, _utils.hexToRgba)(hexVal);
185
+ const {
186
+ r,
187
+ g,
188
+ b,
189
+ a
190
+ } = rgba;
191
+ const alphaVal = (0, _utils.toPercentage)(a);
192
+ if (colorMode === _constants.COLOR_PICKER_MODE.HEX) {
193
+ setHexVal(hexVal);
194
+ } else {
195
+ setRedVal(r);
196
+ setGreenVal(g);
197
+ setBlueVal(b);
198
+ }
199
+ setAlphaVal(alphaVal);
200
+ updateValue(rgba);
201
+ };
202
+ const onClosePopover = () => {
203
+ if (storageKey) {
204
+ if (currentUsedColors.length >= 8) currentUsedColors.pop();
205
+ const hex = (0, _utils.rgbaToHex)(value);
206
+ if (!currentUsedColors.includes(hex)) {
207
+ currentUsedColors.unshift(hex);
208
+ window.localStorage.setItem(storageKey, JSON.stringify(currentUsedColors));
209
+ }
210
+ }
211
+ onToggle();
212
+ };
213
+ const renderDefaultContainer = () => {
214
+ return /*#__PURE__*/_react.default.createElement("div", {
215
+ className: "default-color-setting"
216
+ }, /*#__PURE__*/_react.default.createElement("span", null, (0, _lang.getLocale)('Default')), /*#__PURE__*/_react.default.createElement("div", {
217
+ className: "default-colors-container d-flex mt-2 mb-2"
218
+ }, (defaultColors || _constants.DEFAULT_COLORS).map((color, index) => {
219
+ return /*#__PURE__*/_react.default.createElement("div", {
220
+ className: "color-item mr-2",
221
+ onClick: () => onSelectDefaultColor(color),
222
+ key: "default-color-".concat(index)
223
+ }, /*#__PURE__*/_react.default.createElement("span", {
224
+ className: "colorinput-color d-flex align-items-center justify-content-center",
225
+ style: {
226
+ backgroundColor: color
227
+ }
228
+ }, color === "#".concat(hexVal) && !currentUsedColors.includes(color) && alphaVal === 100 && /*#__PURE__*/_react.default.createElement("i", {
229
+ className: "dtable-icon-color-check dtable-font dtable-icon-check-mark"
230
+ })));
231
+ })));
232
+ };
233
+ const renderCustomContainer = () => {
234
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", null, (0, _lang.getLocale)('Custom')), /*#__PURE__*/_react.default.createElement(_reactColor.ChromePicker, {
235
+ className: "mt-2",
236
+ color: value,
237
+ onChange: onChangeChromePicker
238
+ }), /*#__PURE__*/_react.default.createElement("div", {
239
+ className: "color-setting d-flex align-items-center ".concat(colorMode)
240
+ }, /*#__PURE__*/_react.default.createElement("span", {
241
+ className: "mode-btn d-flex"
242
+ }, colorMode === _constants.COLOR_PICKER_MODE.HEX ? 'HEX' : 'RGB', /*#__PURE__*/_react.default.createElement("i", {
243
+ onClick: onChangeMode,
244
+ className: "dtable-font dtable-icon-right"
245
+ })), colorMode === _constants.COLOR_PICKER_MODE.HEX ? renderHexContainer() : renderRgbContainer(), /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
246
+ className: "alpha-input",
247
+ type: "text",
248
+ value: alphaVal + '%',
249
+ onBlur: onAlphaInputBlur,
250
+ onKeyDown: e => onKeyDown(e, onAlphaInputBlur),
251
+ onChange: onChangeAlpha
252
+ })));
253
+ };
254
+ const renderHexContainer = () => {
255
+ return /*#__PURE__*/_react.default.createElement("div", {
256
+ className: "hex-container ml-2"
257
+ }, /*#__PURE__*/_react.default.createElement("span", null, "#"), /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
258
+ className: "hex-input",
259
+ type: "text",
260
+ value: hexVal,
261
+ onBlur: onHexInputBlur,
262
+ onKeyDown: e => onKeyDown(e, onHexInputBlur),
263
+ onChange: onChangeHex
264
+ }));
265
+ };
266
+ const renderRgbContainer = () => {
267
+ return /*#__PURE__*/_react.default.createElement("div", {
268
+ className: "rgb-container"
269
+ }, /*#__PURE__*/_react.default.createElement("span", null, "R"), /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
270
+ className: "rgb-input",
271
+ type: "text",
272
+ value: redVal,
273
+ onBlur: () => onRgbInputBlur(_constants.RGB_COLORS_MAP.RED),
274
+ onChange: e => onChangeRgb(e, _constants.RGB_COLORS_MAP.RED)
275
+ }), /*#__PURE__*/_react.default.createElement("span", null, "G"), /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
276
+ className: "rgb-input",
277
+ type: "text",
278
+ value: greenVal,
279
+ onBlur: () => onRgbInputBlur(_constants.RGB_COLORS_MAP.GREEN),
280
+ onChange: e => onChangeRgb(e, _constants.RGB_COLORS_MAP.GREEN)
281
+ }), /*#__PURE__*/_react.default.createElement("span", null, "B"), /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
282
+ className: "rgb-input",
283
+ type: "text",
284
+ value: blueVal,
285
+ onBlur: () => onRgbInputBlur(_constants.RGB_COLORS_MAP.BLUT),
286
+ onChange: e => onChangeRgb(e, _constants.RGB_COLORS_MAP.BLUT)
287
+ }));
288
+ };
289
+ const renderUsedContainer = () => {
290
+ return /*#__PURE__*/_react.default.createElement("div", {
291
+ className: "current-used-container mt-2"
292
+ }, /*#__PURE__*/_react.default.createElement("span", null, (0, _lang.getLocale)('Used')), /*#__PURE__*/_react.default.createElement("div", {
293
+ className: "current-used-colors d-flex mt-2"
294
+ }, currentUsedColors.length > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, currentUsedColors.map((color, index) => {
295
+ const isLight = (0, _utils.isLightColor)(color);
296
+ return /*#__PURE__*/_react.default.createElement("div", {
297
+ className: "color-item mr-2 ".concat(isLight ? '' : 'dark'),
298
+ onClick: () => onSelectDefaultColor(color),
299
+ key: "default-color-".concat(index)
300
+ }, /*#__PURE__*/_react.default.createElement("span", {
301
+ className: "colorinput-color d-flex align-items-center justify-content-center",
302
+ style: {
303
+ backgroundColor: color
304
+ }
305
+ }, color === "#".concat(hexVal) && /*#__PURE__*/_react.default.createElement("i", {
306
+ className: "dtable-icon-color-check dtable-font dtable-icon-check-mark"
307
+ })));
308
+ })) : /*#__PURE__*/_react.default.createElement("div", {
309
+ className: "blank-placeholder d-flex align-items-center justify-content-center"
310
+ }, /*#__PURE__*/_react.default.createElement("span", null, "/"))));
311
+ };
312
+ return /*#__PURE__*/_react.default.createElement(_ClickOutside.default, {
313
+ onClickOutside: () => {}
314
+ }, /*#__PURE__*/_react.default.createElement("div", {
315
+ style: popoverStyle,
316
+ className: "dtable-color-picker"
317
+ }, renderDefaultContainer(), renderCustomContainer(), renderUsedContainer()));
318
+ };
319
+ DTableColorPicker.defaultProps = {
320
+ color: '#ffffff'
321
+ };
322
+ var _default = exports.default = DTableColorPicker;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.toPercentage = exports.rgbaToHex = exports.isLightColor = exports.hexToRgba = exports.getInitialHexVal = void 0;
7
+ const hexRegex = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/i;
8
+ const rgbaRegex = /^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})(?:\s*,\s*(0|1|0?\.\d+))?\s*\)$/i;
9
+ const hexToRgba = color => {
10
+ if (rgbaRegex.test(color)) return color;
11
+ let r;
12
+ let g;
13
+ let b;
14
+ let a = 1;
15
+ let hex = color;
16
+ hex = hex.replace(/^#/, '');
17
+ if (hex.length === 6 || hex.length === 8) {
18
+ r = parseInt(hex.slice(0, 2), 16);
19
+ g = parseInt(hex.slice(2, 4), 16);
20
+ b = parseInt(hex.slice(4, 6), 16);
21
+ a = hex.length === 8 ? Math.round(parseInt(hex.slice(6, 8), 16) / 255 * 100) / 100 : 1;
22
+ } else if (hex.length === 3) {
23
+ r = parseInt(hex[0] + hex[0], 16);
24
+ g = parseInt(hex[1] + hex[1], 16);
25
+ b = parseInt(hex[2] + hex[2], 16);
26
+ } else {
27
+ throw new Error('Invalid HEX color.');
28
+ }
29
+ return {
30
+ r,
31
+ g,
32
+ b,
33
+ a
34
+ };
35
+ };
36
+ exports.hexToRgba = hexToRgba;
37
+ const rgbaToHex = function (color) {
38
+ let isNeedPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
39
+ let isNeedAlpha = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
40
+ if (hexRegex.test(color)) return color;
41
+ const {
42
+ r,
43
+ g,
44
+ b,
45
+ a
46
+ } = color;
47
+ const toHex = value => {
48
+ const hex = value.toString(16);
49
+ return hex.length === 1 ? '0' + hex : hex;
50
+ };
51
+ const alpha = a !== undefined && a !== 1 ? toHex(Math.round(a * 255)) : '';
52
+ return "".concat(isNeedPrefix ? '#' : '').concat(toHex(r)).concat(toHex(g)).concat(toHex(b)).concat(isNeedAlpha ? alpha : '');
53
+ };
54
+ exports.rgbaToHex = rgbaToHex;
55
+ const isLightColor = color => {
56
+ if (color.startsWith('#')) color = color.slice(1);
57
+ const r = parseInt(color.substring(0, 2), 16);
58
+ const g = parseInt(color.substring(2, 4), 16);
59
+ const b = parseInt(color.substring(4, 6), 16);
60
+ const a = color.length === 8 ? parseInt(color.substring(6, 8), 16) / 255 : 1;
61
+ const bgColor = {
62
+ r: 255,
63
+ g: 255,
64
+ b: 255
65
+ };
66
+ const mixedR = Math.round((1 - a) * bgColor.r + a * r);
67
+ const mixedG = Math.round((1 - a) * bgColor.g + a * g);
68
+ const mixedB = Math.round((1 - a) * bgColor.b + a * b);
69
+ const luminance = 0.2126 * mixedR + 0.7152 * mixedG + 0.0722 * mixedB;
70
+ return luminance > 128;
71
+ };
72
+ exports.isLightColor = isLightColor;
73
+ const getInitialHexVal = hex => {
74
+ let hexVal = hex.slice(1); // Remove #
75
+ if (hexVal.length > 6) {
76
+ hexVal = hexVal.slice(0, 6);
77
+ }
78
+ return hexVal;
79
+ };
80
+ exports.getInitialHexVal = getInitialHexVal;
81
+ const toPercentage = number => {
82
+ if (number < 0 || number > 1) {
83
+ return null;
84
+ }
85
+ return Math.round(number * 100);
86
+ };
87
+ exports.toPercentage = toPercentage;
@@ -31,6 +31,7 @@ class SelectOptionGroup extends _react.Component {
31
31
  this.optionGroupRef.style.top = position.y - height + 'px';
32
32
  }
33
33
  this.optionGroupRef.style.opacity = 1;
34
+ this.searchInputRef.current && this.searchInputRef.current.inputRef.focus();
34
35
  } else {
35
36
  if (height + top > window.innerHeight) {
36
37
  const borderWidth = 2;
@@ -154,6 +155,7 @@ class SelectOptionGroup extends _react.Component {
154
155
  };
155
156
  this.filterOptions = null;
156
157
  this.timer = null;
158
+ this.searchInputRef = /*#__PURE__*/_react.default.createRef();
157
159
  }
158
160
  componentDidMount() {
159
161
  window.addEventListener('keydown', this.onHotKey);
@@ -226,7 +228,8 @@ class SelectOptionGroup extends _react.Component {
226
228
  className: "option-search-control",
227
229
  placeholder: searchPlaceholder,
228
230
  onChange: this.onChangeSearch,
229
- autoFocus: true
231
+ autoFocus: true,
232
+ ref: this.searchInputRef
230
233
  })), /*#__PURE__*/_react.default.createElement("div", {
231
234
  className: "option-group-content",
232
235
  ref: ref => this.optionGroupContentRef = ref
package/lib/index.js CHANGED
@@ -70,6 +70,12 @@ Object.defineProperty(exports, "CreatorFormatter", {
70
70
  return _CreatorFormatter.default;
71
71
  }
72
72
  });
73
+ Object.defineProperty(exports, "DTableColorPicker", {
74
+ enumerable: true,
75
+ get: function () {
76
+ return _DTableColorPicker.default;
77
+ }
78
+ });
73
79
  Object.defineProperty(exports, "DTableCommonAddTool", {
74
80
  enumerable: true,
75
81
  get: function () {
@@ -465,6 +471,7 @@ var _DTableSwitch = _interopRequireDefault(require("./DTableSwitch"));
465
471
  var _DTableCustomizeSelect = _interopRequireDefault(require("./DTableCustomizeSelect"));
466
472
  var _DTableCustomizeCollaboratorSelect = _interopRequireDefault(require("./DTableCustomizeCollaboratorSelect"));
467
473
  var _DTableSearchInput = _interopRequireDefault(require("./DTableSearchInput"));
474
+ var _DTableColorPicker = _interopRequireDefault(require("./DTableColorPicker"));
468
475
  var _ModalPortal = _interopRequireDefault(require("./ModalPortal"));
469
476
  var _RoleStatusEditor = _interopRequireDefault(require("./RoleStatusEditor"));
470
477
  var _DepartmentSelectFilter = _interopRequireDefault(require("./DepartmentSelectFilter"));
package/lib/locals/de.js CHANGED
@@ -95,6 +95,9 @@ const de = {
95
95
  "last_month": "letzten Monat",
96
96
  "last_year": "letztes Jahr",
97
97
  "URL_is_invalid": "Die URL ist ungültig.",
98
- "Select_department": "Bereich auswählen"
98
+ "Select_department": "Bereich auswählen",
99
+ "Default": "Standard",
100
+ "Custom": "Benutzerdefiniert",
101
+ "Used": "Verwendet"
99
102
  };
100
103
  var _default = exports.default = de;
package/lib/locals/en.js CHANGED
@@ -95,6 +95,9 @@ const en = {
95
95
  "last_month": "last month",
96
96
  "last_year": "last year",
97
97
  "URL_is_invalid": "URL is invalid",
98
- "Select_department": "Select department"
98
+ "Select_department": "Select department",
99
+ "Default": "Default",
100
+ "Custom": "Custom",
101
+ "Used": "Used"
99
102
  };
100
103
  var _default = exports.default = en;
package/lib/locals/es.js CHANGED
@@ -95,6 +95,9 @@ const es = {
95
95
  "last_month": "el mes pasado",
96
96
  "last_year": "el año pasado",
97
97
  "URL_is_invalid": "URL no válida",
98
- "Select_department": "Select department"
98
+ "Select_department": "Select department",
99
+ "Default": "Incumplimiento de contrato",
100
+ "Custom": "Costumbres",
101
+ "Used": "Acostumbrado a"
99
102
  };
100
103
  var _default = exports.default = es;
package/lib/locals/fr.js CHANGED
@@ -95,6 +95,9 @@ const fr = {
95
95
  "last_month": "le mois dernier",
96
96
  "last_year": "l'année dernière",
97
97
  "URL_is_invalid": "L'URL est invalide.",
98
- "Select_department": "Sélectionner un département"
98
+ "Select_department": "Sélectionner un département",
99
+ "Default": "Violation",
100
+ "Custom": "Les coutumes",
101
+ "Used": "Habitué à"
99
102
  };
100
103
  var _default = exports.default = fr;
package/lib/locals/pt.js CHANGED
@@ -95,6 +95,9 @@ const pt = {
95
95
  "last_month": "mês passado",
96
96
  "last_year": "ano passado",
97
97
  "URL_is_invalid": "URL é inválido",
98
- "Select_department": "Select department"
98
+ "Select_department": "Select department",
99
+ "Default": "por omissão",
100
+ "Custom": "personalizado",
101
+ "Used": "usado"
99
102
  };
100
103
  var _default = exports.default = pt;
package/lib/locals/ru.js CHANGED
@@ -95,6 +95,9 @@ const ru = {
95
95
  "last_month": "last month",
96
96
  "last_year": "last year",
97
97
  "URL_is_invalid": "URL-адрес недействителен",
98
- "Select_department": "Select department"
98
+ "Select_department": "Select department",
99
+ "Default": "Нарушение обязательств",
100
+ "Custom": "Обычаи",
101
+ "Used": "Привыкнуть"
99
102
  };
100
103
  var _default = exports.default = ru;
@@ -95,6 +95,9 @@ const zh_CN = {
95
95
  "last_month": "上个月",
96
96
  "last_year": "去年",
97
97
  "URL_is_invalid": "URL 无效",
98
- "Select_department": "选择部门"
98
+ "Select_department": "选择部门",
99
+ "Default": "默认",
100
+ "Custom": "自定义",
101
+ "Used": "使用过"
99
102
  };
100
103
  var _default = exports.default = zh_CN;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-ui-component",
3
- "version": "5.0.19",
3
+ "version": "5.0.21-alpha.1",
4
4
  "main": "./lib/index.js",
5
5
  "dependencies": {
6
6
  "@seafile/react-image-lightbox": "2.0.5",
@@ -16,6 +16,7 @@
16
16
  "react-app-polyfill": "^3.0.0",
17
17
  "react-dom": "17.0.2",
18
18
  "react-responsive": "9.0.2",
19
+ "react-color": "2.19.3",
19
20
  "react-select": "5.7.0",
20
21
  "react-transition-group": "^4.4.1",
21
22
  "reactstrap": "8.9.0"