@aloudata/aloudata-design 2.15.7 → 2.15.9
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/dist/ColorPicker/ComplexColorPicker/ColorAlphaInput.d.ts +9 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorAlphaInput.js +43 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorHexInput.d.ts +9 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorHexInput.js +46 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorHsbInput.d.ts +9 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorHsbInput.js +73 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorInput.d.ts +14 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorInput.js +78 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorRgbInput.d.ts +9 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorRgbInput.js +64 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorSteppers.d.ts +15 -0
- package/dist/ColorPicker/ComplexColorPicker/ColorSteppers.js +45 -0
- package/dist/ColorPicker/ComplexColorPicker/index.d.ts +3 -0
- package/dist/ColorPicker/ComplexColorPicker/index.js +89 -0
- package/dist/ColorPicker/alpha.svg +54 -0
- package/dist/ColorPicker/color.d.ts +29 -0
- package/dist/ColorPicker/color.js +127 -0
- package/dist/ColorPicker/hooks/useColor.d.ts +3 -0
- package/dist/ColorPicker/hooks/useColor.js +31 -0
- package/dist/ColorPicker/index.d.ts +4 -1
- package/dist/ColorPicker/index.js +45 -34
- package/dist/ColorPicker/interface.d.ts +35 -0
- package/dist/ColorPicker/interface.js +8 -0
- package/dist/ColorPicker/style/complex.less +198 -0
- package/dist/ColorPicker/style/index.less +9 -2
- package/dist/ColorPicker/util.d.ts +15 -0
- package/dist/ColorPicker/util.js +65 -0
- package/dist/ald.min.css +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
4
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
5
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
8
|
+
import { Color as RcColor } from '@rc-component/color-picker';
|
|
9
|
+
export var toHexFormat = function toHexFormat(value, alpha) {
|
|
10
|
+
return (value === null || value === void 0 ? void 0 : value.replace(/[^\w/]/g, '').slice(0, alpha ? 8 : 6)) || '';
|
|
11
|
+
};
|
|
12
|
+
export var getHex = function getHex(value, alpha) {
|
|
13
|
+
return value ? toHexFormat(value, alpha) : '';
|
|
14
|
+
};
|
|
15
|
+
export var AggregationColor = /*#__PURE__*/function () {
|
|
16
|
+
function AggregationColor(color) {
|
|
17
|
+
_classCallCheck(this, AggregationColor);
|
|
18
|
+
/** Original Color object */
|
|
19
|
+
_defineProperty(this, "metaColor", void 0);
|
|
20
|
+
_defineProperty(this, "colors", void 0);
|
|
21
|
+
_defineProperty(this, "cleared", false);
|
|
22
|
+
// Clone from another AggregationColor
|
|
23
|
+
if (color instanceof AggregationColor) {
|
|
24
|
+
var _color$colors;
|
|
25
|
+
this.metaColor = color.metaColor.clone();
|
|
26
|
+
this.colors = (_color$colors = color.colors) === null || _color$colors === void 0 ? void 0 : _color$colors.map(function (info) {
|
|
27
|
+
return {
|
|
28
|
+
color: new AggregationColor(info.color),
|
|
29
|
+
percent: info.percent
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
this.cleared = color.cleared;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
var isArray = Array.isArray(color);
|
|
36
|
+
if (isArray && color.length) {
|
|
37
|
+
this.colors = color.map(function (_ref) {
|
|
38
|
+
var c = _ref.color,
|
|
39
|
+
percent = _ref.percent;
|
|
40
|
+
return {
|
|
41
|
+
color: new AggregationColor(c),
|
|
42
|
+
percent: percent
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
this.metaColor = new RcColor(this.colors[0].color.metaColor);
|
|
46
|
+
} else {
|
|
47
|
+
this.metaColor = new RcColor(isArray ? '' : color);
|
|
48
|
+
}
|
|
49
|
+
if (!color || isArray && !this.colors) {
|
|
50
|
+
this.metaColor = this.metaColor.setA(0);
|
|
51
|
+
this.cleared = true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
_createClass(AggregationColor, [{
|
|
55
|
+
key: "toHsb",
|
|
56
|
+
value: function toHsb() {
|
|
57
|
+
return this.metaColor.toHsb();
|
|
58
|
+
}
|
|
59
|
+
}, {
|
|
60
|
+
key: "toHsbString",
|
|
61
|
+
value: function toHsbString() {
|
|
62
|
+
return this.metaColor.toHsbString();
|
|
63
|
+
}
|
|
64
|
+
}, {
|
|
65
|
+
key: "toHex",
|
|
66
|
+
value: function toHex() {
|
|
67
|
+
return getHex(this.toHexString(), this.metaColor.a < 1);
|
|
68
|
+
}
|
|
69
|
+
}, {
|
|
70
|
+
key: "toHexString",
|
|
71
|
+
value: function toHexString() {
|
|
72
|
+
return this.metaColor.toHexString();
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
key: "toRgb",
|
|
76
|
+
value: function toRgb() {
|
|
77
|
+
return this.metaColor.toRgb();
|
|
78
|
+
}
|
|
79
|
+
}, {
|
|
80
|
+
key: "toRgbString",
|
|
81
|
+
value: function toRgbString() {
|
|
82
|
+
return this.metaColor.toRgbString();
|
|
83
|
+
}
|
|
84
|
+
}, {
|
|
85
|
+
key: "isGradient",
|
|
86
|
+
value: function isGradient() {
|
|
87
|
+
return !!this.colors && !this.cleared;
|
|
88
|
+
}
|
|
89
|
+
}, {
|
|
90
|
+
key: "getColors",
|
|
91
|
+
value: function getColors() {
|
|
92
|
+
return this.colors || [{
|
|
93
|
+
color: this,
|
|
94
|
+
percent: 0
|
|
95
|
+
}];
|
|
96
|
+
}
|
|
97
|
+
}, {
|
|
98
|
+
key: "toCssString",
|
|
99
|
+
value: function toCssString() {
|
|
100
|
+
var colors = this.colors;
|
|
101
|
+
|
|
102
|
+
// CSS line-gradient
|
|
103
|
+
if (colors) {
|
|
104
|
+
var colorsStr = colors.map(function (c) {
|
|
105
|
+
return "".concat(c.color.toRgbString(), " ").concat(c.percent, "%");
|
|
106
|
+
}).join(', ');
|
|
107
|
+
return "linear-gradient(90deg, ".concat(colorsStr, ")");
|
|
108
|
+
}
|
|
109
|
+
return this.metaColor.toRgbString();
|
|
110
|
+
}
|
|
111
|
+
}, {
|
|
112
|
+
key: "equals",
|
|
113
|
+
value: function equals(color) {
|
|
114
|
+
if (!color || this.isGradient() !== color.isGradient()) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (!this.isGradient()) {
|
|
118
|
+
return this.toHexString() === color.toHexString();
|
|
119
|
+
}
|
|
120
|
+
return this.colors.length === color.colors.length && this.colors.every(function (c, i) {
|
|
121
|
+
var target = color.colors[i];
|
|
122
|
+
return c.percent === target.percent && c.color.equals(target.color);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}]);
|
|
126
|
+
return AggregationColor;
|
|
127
|
+
}();
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import useEvent from 'rc-util/lib/hooks/useEvent';
|
|
9
|
+
import useMergedState from 'rc-util/lib/hooks/useMergedState';
|
|
10
|
+
import { generateColor } from "../util";
|
|
11
|
+
export default function useModeColor(defaultValue, value) {
|
|
12
|
+
var _useMergedState = useMergedState(defaultValue, {
|
|
13
|
+
value: value
|
|
14
|
+
}),
|
|
15
|
+
_useMergedState2 = _slicedToArray(_useMergedState, 2),
|
|
16
|
+
mergedColor = _useMergedState2[0],
|
|
17
|
+
setMergedColor = _useMergedState2[1];
|
|
18
|
+
var _React$useState = React.useState(null),
|
|
19
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
20
|
+
cacheColor = _React$useState2[0],
|
|
21
|
+
setCacheColor = _React$useState2[1];
|
|
22
|
+
var setColor = useEvent(function (nextColor) {
|
|
23
|
+
setCacheColor(nextColor);
|
|
24
|
+
setMergedColor(nextColor);
|
|
25
|
+
});
|
|
26
|
+
var postColor = React.useMemo(function () {
|
|
27
|
+
var colorObj = generateColor(mergedColor || '');
|
|
28
|
+
return colorObj.equals(cacheColor) ? cacheColor : colorObj;
|
|
29
|
+
}, [mergedColor, cacheColor]);
|
|
30
|
+
return [postColor, setColor];
|
|
31
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { ColorPickerProps } from './interface';
|
|
2
3
|
export interface IColorPickerProps {
|
|
3
4
|
className?: string;
|
|
4
5
|
value?: string;
|
|
@@ -7,5 +8,7 @@ export interface IColorPickerProps {
|
|
|
7
8
|
onChange?: (color: string) => void;
|
|
8
9
|
icon?: React.ReactNode;
|
|
9
10
|
disabled?: boolean;
|
|
11
|
+
mode?: 'simple' | 'complex';
|
|
12
|
+
complexModeProps?: ColorPickerProps;
|
|
10
13
|
}
|
|
11
|
-
export default function ColorPicker({ className, value, icon, onChange, defaultColor, localStorageKey, disabled, }: IColorPickerProps): React.JSX.Element;
|
|
14
|
+
export default function ColorPicker({ className, value, icon, onChange, defaultColor, localStorageKey, disabled, mode, complexModeProps, }: IColorPickerProps): React.JSX.Element | null;
|
|
@@ -14,6 +14,7 @@ import Dropdown from "../Dropdown";
|
|
|
14
14
|
import { FoldDownFill } from "../Icon";
|
|
15
15
|
import { LocaleContext, getTranslator } from "../locale/default";
|
|
16
16
|
import { colors as defaultColors, specialColors } from "./constant";
|
|
17
|
+
import InnerColorPicker from "./ComplexColorPicker";
|
|
17
18
|
function getLocalRecentColors(localStorageKey) {
|
|
18
19
|
if (!window.localStorage) {
|
|
19
20
|
return [];
|
|
@@ -41,7 +42,10 @@ export default function ColorPicker(_ref) {
|
|
|
41
42
|
_ref$localStorageKey = _ref.localStorageKey,
|
|
42
43
|
localStorageKey = _ref$localStorageKey === void 0 ? 'ald_recent_colors' : _ref$localStorageKey,
|
|
43
44
|
_ref$disabled = _ref.disabled,
|
|
44
|
-
disabled = _ref$disabled === void 0 ? false : _ref$disabled
|
|
45
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
46
|
+
_ref$mode = _ref.mode,
|
|
47
|
+
mode = _ref$mode === void 0 ? 'simple' : _ref$mode,
|
|
48
|
+
complexModeProps = _ref.complexModeProps;
|
|
45
49
|
var _useContext = useContext(LocaleContext),
|
|
46
50
|
locale = _useContext.locale;
|
|
47
51
|
var t = getTranslator(locale);
|
|
@@ -149,38 +153,45 @@ export default function ColorPicker(_ref) {
|
|
|
149
153
|
}
|
|
150
154
|
}));
|
|
151
155
|
}))));
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
'ald-color-picker
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
className: cls('ald-color-picker-wrapper', {
|
|
167
|
-
'ald-color-picker-wrapper-focused': open,
|
|
168
|
-
'ald-color-picker-wrapper-disabled': disabled
|
|
169
|
-
}),
|
|
170
|
-
onClick: function onClick(e) {
|
|
171
|
-
if (disabled) {
|
|
172
|
-
e.stopPropagation();
|
|
156
|
+
if (mode === 'simple') {
|
|
157
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
158
|
+
className: cls(className, 'ald-color-picker', {
|
|
159
|
+
'ald-color-picker-disabled': disabled
|
|
160
|
+
}),
|
|
161
|
+
ref: wrapRef
|
|
162
|
+
}, /*#__PURE__*/React.createElement(Dropdown, {
|
|
163
|
+
trigger: 'click',
|
|
164
|
+
open: open,
|
|
165
|
+
disabled: disabled,
|
|
166
|
+
placement: 'bottom-start',
|
|
167
|
+
overlayClassName: 'ald-color-picker-overlay-wrapper',
|
|
168
|
+
dropdownRender: function dropdownRender() {
|
|
169
|
+
return overlay;
|
|
173
170
|
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
171
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
172
|
+
className: cls('ald-color-picker-wrapper', {
|
|
173
|
+
'ald-color-picker-wrapper-focused': open,
|
|
174
|
+
'ald-color-picker-wrapper-disabled': disabled
|
|
175
|
+
}),
|
|
176
|
+
onClick: function onClick(e) {
|
|
177
|
+
if (disabled) {
|
|
178
|
+
e.stopPropagation();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}, icon || /*#__PURE__*/React.createElement("div", {
|
|
182
|
+
className: 'word'
|
|
183
|
+
}, "A", /*#__PURE__*/React.createElement("div", {
|
|
184
|
+
className: 'line',
|
|
185
|
+
style: {
|
|
186
|
+
backgroundColor: value !== null && value !== void 0 ? value : '#4B5563'
|
|
187
|
+
}
|
|
188
|
+
})), /*#__PURE__*/React.createElement(FoldDownFill, {
|
|
189
|
+
size: 14,
|
|
190
|
+
color: "#575757"
|
|
191
|
+
}))));
|
|
192
|
+
}
|
|
193
|
+
if (mode === 'complex') {
|
|
194
|
+
return /*#__PURE__*/React.createElement(InnerColorPicker, complexModeProps);
|
|
195
|
+
}
|
|
196
|
+
return null;
|
|
186
197
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ColorGenInput, ColorPickerProps as RcColorPickerProps } from '@rc-component/color-picker';
|
|
3
|
+
import type { PopoverProps } from '../Popover';
|
|
4
|
+
import type { AggregationColor } from './color';
|
|
5
|
+
import { ITooltipProps } from '../Tooltip';
|
|
6
|
+
import { SizeType } from '../ConfigProvider/sizeContext';
|
|
7
|
+
export type { ColorGenInput };
|
|
8
|
+
export type Colors<T> = {
|
|
9
|
+
color: ColorGenInput<T>;
|
|
10
|
+
percent: number;
|
|
11
|
+
}[];
|
|
12
|
+
export declare enum ColorFormat {
|
|
13
|
+
hex = "hex",
|
|
14
|
+
rgb = "rgb",
|
|
15
|
+
hsb = "hsb"
|
|
16
|
+
}
|
|
17
|
+
export type ColorFormatType = keyof typeof ColorFormat;
|
|
18
|
+
export type TriggerType = 'click' | 'hover';
|
|
19
|
+
export type TriggerPlacement = ITooltipProps['placement'];
|
|
20
|
+
export type SingleValueType = AggregationColor | string;
|
|
21
|
+
export type ColorValueType = SingleValueType | null;
|
|
22
|
+
export type ColorPickerProps = Omit<RcColorPickerProps, 'onChange' | 'value' | 'defaultValue' | 'panelRender' | 'disabledAlpha' | 'onChangeComplete' | 'components'> & {
|
|
23
|
+
value?: ColorValueType;
|
|
24
|
+
size?: SizeType;
|
|
25
|
+
defaultValue?: ColorValueType;
|
|
26
|
+
children?: React.ReactNode;
|
|
27
|
+
open?: boolean;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
placement?: TriggerPlacement;
|
|
30
|
+
trigger?: TriggerType;
|
|
31
|
+
disabledAlpha?: boolean;
|
|
32
|
+
onOpenChange?: (open: boolean) => void;
|
|
33
|
+
onChange?: (value: AggregationColor, css: string) => void;
|
|
34
|
+
onChangeComplete?: (value: AggregationColor) => void;
|
|
35
|
+
} & Pick<PopoverProps, 'getPopupContainer' | 'autoAdjustOverflow' | 'destroyTooltipOnHide'>;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
.ald-color-picker-wrapper {
|
|
2
|
+
position: relative;
|
|
3
|
+
width: 258px;
|
|
4
|
+
padding: 12px;
|
|
5
|
+
background-color: #fff;
|
|
6
|
+
border-radius: 8px;
|
|
7
|
+
box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12),
|
|
8
|
+
0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.ald-color-picker {
|
|
12
|
+
position: absolute;
|
|
13
|
+
z-index: 1;
|
|
14
|
+
display: block;
|
|
15
|
+
width: max-content;
|
|
16
|
+
min-width: 258px;
|
|
17
|
+
visibility: visible;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.ald-color-picker-hidden {
|
|
21
|
+
display: none;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.ald-color-picker-panel {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.ald-color-picker-panel-disabled {
|
|
30
|
+
cursor: not-allowed;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.ald-color-picker-select {
|
|
34
|
+
margin-bottom: 12px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.ald-color-picker-select .ald-color-picker-palette {
|
|
38
|
+
min-height: 160px;
|
|
39
|
+
overflow: hidden;
|
|
40
|
+
border-radius: 4px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.ald-color-picker-select
|
|
44
|
+
.ald-color-picker-palette
|
|
45
|
+
> .ald-color-picker-gradient {
|
|
46
|
+
border-top-left-radius: 5px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.ald-color-picker-saturation {
|
|
50
|
+
position: absolute;
|
|
51
|
+
border-radius: inherit;
|
|
52
|
+
inset: 0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.ald-color-picker-handler {
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
width: 16px;
|
|
58
|
+
height: 16px;
|
|
59
|
+
border: 2px solid #fff;
|
|
60
|
+
border-radius: 50%;
|
|
61
|
+
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.06);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.ald-color-picker-handler-sm {
|
|
65
|
+
width: 12px;
|
|
66
|
+
height: 12px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.ald-color-picker-slider {
|
|
70
|
+
width: 100%;
|
|
71
|
+
margin-bottom: 12px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.ald-color-picker-slider .ald-color-picker-palette {
|
|
75
|
+
height: 8px;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.ald-color-picker-slider .ald-color-picker-gradient {
|
|
79
|
+
border-radius: 4px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.ald-color-picker-slider-alpha {
|
|
83
|
+
background: url('../alpha.svg');
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.ald-color-picker-color-block {
|
|
87
|
+
position: relative;
|
|
88
|
+
width: 28px;
|
|
89
|
+
height: 28px;
|
|
90
|
+
margin-left: 8px;
|
|
91
|
+
overflow: hidden;
|
|
92
|
+
background-image: url('../alpha.svg');
|
|
93
|
+
border-radius: 4px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.ald-color-picker-color-block-inner {
|
|
97
|
+
box-sizing: border-box;
|
|
98
|
+
width: 100%;
|
|
99
|
+
height: 100%;
|
|
100
|
+
border: 1px solid rgba(0, 0, 0, 0.06);
|
|
101
|
+
border-radius: 4px;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.ald-color-picker-slider-container {
|
|
105
|
+
display: flex;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.ald-color-picker-slider-container .ald-color-picker-slider-group {
|
|
109
|
+
flex: 1;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.ald-color-picker-slider-container
|
|
113
|
+
.ald-color-picker-slider-group-disabled-alpha {
|
|
114
|
+
display: flex;
|
|
115
|
+
align-items: center;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.ald-color-picker-slider-container
|
|
119
|
+
.ald-color-picker-slider-group-disabled-alpha
|
|
120
|
+
.ald-color-picker-slider {
|
|
121
|
+
margin-bottom: 0;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.ald-color-picker-input-container {
|
|
125
|
+
display: flex;
|
|
126
|
+
align-items: center;
|
|
127
|
+
gap: 4px;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.ald-color-picker-input-container .ald-color-picker-format-select {
|
|
131
|
+
.ant-select-borderless .ant-select-selector {
|
|
132
|
+
padding: 0;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.ald-color-picker-input-container .ald-color-picker-input {
|
|
137
|
+
width: 0;
|
|
138
|
+
flex: 1;
|
|
139
|
+
|
|
140
|
+
.ald-color-picker-hsb-input,
|
|
141
|
+
.ald-color-picker-rgb-input {
|
|
142
|
+
display: flex;
|
|
143
|
+
align-items: center;
|
|
144
|
+
gap: 4px;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.ald-color-picker-input-container
|
|
149
|
+
.ald-color-picker-steppers.ald-color-picker-alpha-input {
|
|
150
|
+
width: 44px;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.ald-color-picker-trigger-wrapper {
|
|
154
|
+
display: inline-flex;
|
|
155
|
+
padding: 3px;
|
|
156
|
+
border: 1px solid #d1d5db;
|
|
157
|
+
background-color: #fff;
|
|
158
|
+
|
|
159
|
+
.ald-color-picker-trigger-inner {
|
|
160
|
+
border: 1px solid rgba(0, 0, 0, 0.2);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.ald-color-picker-trigger-wrapper-small {
|
|
165
|
+
width: 28px;
|
|
166
|
+
height: 28px;
|
|
167
|
+
border-radius: 4px;
|
|
168
|
+
|
|
169
|
+
.ald-color-picker-trigger-inner {
|
|
170
|
+
width: 20px;
|
|
171
|
+
height: 20px;
|
|
172
|
+
border-radius: 2px;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.ald-color-picker-trigger-wrapper-middle {
|
|
177
|
+
width: 32px;
|
|
178
|
+
height: 32px;
|
|
179
|
+
border-radius: 6px;
|
|
180
|
+
|
|
181
|
+
.ald-color-picker-trigger-inner {
|
|
182
|
+
width: 24px;
|
|
183
|
+
height: 24px;
|
|
184
|
+
border-radius: 3px;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.ald-color-picker-trigger-wrapper-large {
|
|
189
|
+
width: 36px;
|
|
190
|
+
height: 36px;
|
|
191
|
+
border-radius: 8px;
|
|
192
|
+
|
|
193
|
+
.ald-color-picker-trigger-inner {
|
|
194
|
+
width: 28px;
|
|
195
|
+
height: 28px;
|
|
196
|
+
border-radius: 4px;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
@import '../../style/index.less';
|
|
2
|
+
@import '../../AldSelect/style/index.less';
|
|
3
|
+
@import '../../Input/style/index.less';
|
|
4
|
+
@import '../../InputNumber/style/index.less';
|
|
5
|
+
@import './complex.less';
|
|
2
6
|
|
|
3
7
|
.ald-color-picker {
|
|
4
8
|
position: relative;
|
|
@@ -45,13 +49,16 @@
|
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
|
|
52
|
+
.ald-dropdown-overlay.ald-color-picker-overlay-wrapper {
|
|
53
|
+
padding: 0 !important;
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
}
|
|
56
|
+
|
|
48
57
|
.ald-color-picker-overlay {
|
|
49
58
|
position: relative;
|
|
50
59
|
width: 253px;
|
|
51
60
|
background: #fff;
|
|
52
|
-
border: 1px solid #dbdbdb;
|
|
53
61
|
box-sizing: border-box;
|
|
54
|
-
box-shadow: 0 10px 18px -2px rgba(0, 0, 0, 0.08);
|
|
55
62
|
border-radius: 2px;
|
|
56
63
|
padding: 8px 7px;
|
|
57
64
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ColorGenInput } from '@rc-component/color-picker';
|
|
2
|
+
import { AggregationColor } from './color';
|
|
3
|
+
import type { ColorValueType } from './interface';
|
|
4
|
+
export declare const generateColor: (color: ColorGenInput<AggregationColor> | Exclude<ColorValueType, null>) => AggregationColor;
|
|
5
|
+
export declare const getRoundNumber: (value: number | string) => number;
|
|
6
|
+
export declare const getColorAlpha: (color: AggregationColor) => number;
|
|
7
|
+
/** Return the color whose `alpha` is 1 */
|
|
8
|
+
export declare const genAlphaColor: (color: AggregationColor, alpha?: number) => AggregationColor;
|
|
9
|
+
/**
|
|
10
|
+
* Get percent position color. e.g. [10%-#fff, 20%-#000], 15% => #888
|
|
11
|
+
*/
|
|
12
|
+
export declare const getGradientPercentColor: (colors: {
|
|
13
|
+
percent: number;
|
|
14
|
+
color: string;
|
|
15
|
+
}[], percent: number) => string;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
5
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
6
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
7
|
+
import { Color as RcColor } from '@rc-component/color-picker';
|
|
8
|
+
import { AggregationColor } from "./color";
|
|
9
|
+
export var generateColor = function generateColor(color) {
|
|
10
|
+
if (color instanceof AggregationColor) {
|
|
11
|
+
return color;
|
|
12
|
+
}
|
|
13
|
+
return new AggregationColor(color);
|
|
14
|
+
};
|
|
15
|
+
export var getRoundNumber = function getRoundNumber(value) {
|
|
16
|
+
return Math.round(Number(value || 0));
|
|
17
|
+
};
|
|
18
|
+
export var getColorAlpha = function getColorAlpha(color) {
|
|
19
|
+
return getRoundNumber(color.toHsb().a * 100);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/** Return the color whose `alpha` is 1 */
|
|
23
|
+
export var genAlphaColor = function genAlphaColor(color, alpha) {
|
|
24
|
+
var rgba = color.toRgb();
|
|
25
|
+
|
|
26
|
+
// Color from hsb input may get `rgb` is (0/0/0) when `hsb.b` is 0
|
|
27
|
+
// So if rgb is empty, we should get from hsb
|
|
28
|
+
if (!rgba.r && !rgba.g && !rgba.b) {
|
|
29
|
+
var hsba = color.toHsb();
|
|
30
|
+
hsba.a = alpha || 1;
|
|
31
|
+
return generateColor(hsba);
|
|
32
|
+
}
|
|
33
|
+
rgba.a = alpha || 1;
|
|
34
|
+
return generateColor(rgba);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Get percent position color. e.g. [10%-#fff, 20%-#000], 15% => #888
|
|
39
|
+
*/
|
|
40
|
+
export var getGradientPercentColor = function getGradientPercentColor(colors, percent) {
|
|
41
|
+
var filledColors = [{
|
|
42
|
+
percent: 0,
|
|
43
|
+
color: colors[0].color
|
|
44
|
+
}].concat(_toConsumableArray(colors), [{
|
|
45
|
+
percent: 100,
|
|
46
|
+
color: colors[colors.length - 1].color
|
|
47
|
+
}]);
|
|
48
|
+
for (var i = 0; i < filledColors.length - 1; i += 1) {
|
|
49
|
+
var startPtg = filledColors[i].percent;
|
|
50
|
+
var endPtg = filledColors[i + 1].percent;
|
|
51
|
+
var startColor = filledColors[i].color;
|
|
52
|
+
var endColor = filledColors[i + 1].color;
|
|
53
|
+
if (startPtg <= percent && percent <= endPtg) {
|
|
54
|
+
var dist = endPtg - startPtg;
|
|
55
|
+
if (dist === 0) {
|
|
56
|
+
return startColor;
|
|
57
|
+
}
|
|
58
|
+
var ratio = (percent - startPtg) / dist * 100;
|
|
59
|
+
var startRcColor = new RcColor(startColor);
|
|
60
|
+
var endRcColor = new RcColor(endColor);
|
|
61
|
+
return startRcColor.mix(endRcColor, ratio).toRgbString();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return '';
|
|
65
|
+
};
|