@atlaskit/color-picker 3.1.8 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/components/ColorCard.js +88 -80
- package/dist/cjs/components/ColorPaletteMenu.js +88 -88
- package/dist/cjs/components/ColorPicker.js +12 -8
- package/dist/cjs/components/Trigger.js +72 -56
- package/dist/cjs/components/components.js +35 -27
- package/dist/cjs/utils.js +4 -2
- package/dist/es2019/components/ColorCard.js +93 -70
- package/dist/es2019/components/ColorPaletteMenu.js +89 -73
- package/dist/es2019/components/ColorPicker.js +14 -9
- package/dist/es2019/components/Trigger.js +72 -39
- package/dist/es2019/components/components.js +32 -22
- package/dist/es2019/utils.js +5 -1
- package/dist/esm/components/ColorCard.js +89 -85
- package/dist/esm/components/ColorPaletteMenu.js +89 -90
- package/dist/esm/components/ColorPicker.js +14 -9
- package/dist/esm/components/Trigger.js +71 -57
- package/dist/esm/components/components.js +35 -27
- package/dist/esm/utils.js +4 -2
- package/dist/types/components/ColorCard.d.ts +3 -9
- package/dist/types/components/ColorPaletteMenu.d.ts +8 -18
- package/dist/types/components/ColorPicker.d.ts +6 -4
- package/dist/types/components/Trigger.d.ts +3 -6
- package/dist/types/components/components.d.ts +4 -3
- package/dist/types/utils.d.ts +2 -2
- package/dist/types-ts4.5/components/ColorCard.d.ts +3 -9
- package/dist/types-ts4.5/components/ColorPaletteMenu.d.ts +8 -18
- package/dist/types-ts4.5/components/ColorPicker.d.ts +6 -4
- package/dist/types-ts4.5/components/Trigger.d.ts +3 -6
- package/dist/types-ts4.5/components/components.d.ts +4 -3
- package/dist/types-ts4.5/utils.d.ts +2 -2
- package/package.json +5 -5
- package/dist/cjs/styled/ColorCard.js +0 -40
- package/dist/cjs/styled/ColorPalette.js +0 -24
- package/dist/cjs/styled/ColorPicker.js +0 -11
- package/dist/es2019/styled/ColorCard.js +0 -72
- package/dist/es2019/styled/ColorPalette.js +0 -28
- package/dist/es2019/styled/ColorPicker.js +0 -4
- package/dist/esm/styled/ColorCard.js +0 -30
- package/dist/esm/styled/ColorPalette.js +0 -18
- package/dist/esm/styled/ColorPicker.js +0 -4
- package/dist/types/styled/ColorCard.d.ts +0 -13
- package/dist/types/styled/ColorPalette.d.ts +0 -13
- package/dist/types/styled/ColorPicker.d.ts +0 -2
- package/dist/types-ts4.5/styled/ColorCard.d.ts +0 -13
- package/dist/types-ts4.5/styled/ColorPalette.d.ts +0 -13
- package/dist/types-ts4.5/styled/ColorPicker.d.ts +0 -2
- package/tmp/api-report-tmp.d.ts +0 -114
|
@@ -6,24 +6,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.Placeholder = exports.Option = exports.MenuList = exports.DropdownIndicator = void 0;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
10
|
-
var _react = _interopRequireDefault(require("react"));
|
|
11
9
|
var _ColorCard = _interopRequireDefault(require("./ColorCard"));
|
|
12
10
|
var _utils = require("../utils");
|
|
13
|
-
var
|
|
14
|
-
var
|
|
11
|
+
var _constants = require("../constants");
|
|
12
|
+
var _react = require("@emotion/react");
|
|
13
|
+
/** @jsx jsx */
|
|
14
|
+
|
|
15
15
|
var MenuList = exports.MenuList = function MenuList(props) {
|
|
16
|
-
var
|
|
17
|
-
cols = props.selectProps.cols,
|
|
16
|
+
var cols = props.selectProps.cols,
|
|
18
17
|
innerRef = props.innerRef,
|
|
19
|
-
|
|
20
|
-
return
|
|
18
|
+
children = props.children;
|
|
19
|
+
return (0, _react.jsx)("div", {
|
|
20
|
+
css: colorPaletteContainerStyles,
|
|
21
21
|
role: "radiogroup",
|
|
22
22
|
style: {
|
|
23
23
|
maxWidth: cols ? (0, _utils.getWidth)(cols) : undefined
|
|
24
24
|
},
|
|
25
|
-
|
|
26
|
-
},
|
|
25
|
+
ref: innerRef
|
|
26
|
+
}, children);
|
|
27
27
|
};
|
|
28
28
|
var Option = exports.Option = function Option(props) {
|
|
29
29
|
var _props$data = props.data,
|
|
@@ -36,26 +36,34 @@ var Option = exports.Option = function Option(props) {
|
|
|
36
36
|
isFocused = props.isFocused,
|
|
37
37
|
isSelected = props.isSelected,
|
|
38
38
|
innerProps = props.innerProps;
|
|
39
|
-
return (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}))
|
|
54
|
-
);
|
|
39
|
+
return (0, _react.jsx)("div", (0, _extends2.default)({
|
|
40
|
+
css: colorCardWrapperStyles
|
|
41
|
+
}, innerProps), (0, _react.jsx)(_ColorCard.default, {
|
|
42
|
+
label: label,
|
|
43
|
+
value: value,
|
|
44
|
+
checkMarkColor: checkMarkColor,
|
|
45
|
+
isOption: true,
|
|
46
|
+
focused: isFocused,
|
|
47
|
+
selected: isSelected,
|
|
48
|
+
onKeyDown: function onKeyDown(value) {
|
|
49
|
+
return onOptionKeyDown(value);
|
|
50
|
+
},
|
|
51
|
+
isTabbing: isTabbing
|
|
52
|
+
}));
|
|
55
53
|
};
|
|
56
54
|
var DropdownIndicator = exports.DropdownIndicator = function DropdownIndicator() {
|
|
57
55
|
return null;
|
|
58
56
|
};
|
|
59
57
|
var Placeholder = exports.Placeholder = function Placeholder() {
|
|
60
58
|
return null;
|
|
61
|
-
};
|
|
59
|
+
};
|
|
60
|
+
var colorCardWrapperStyles = (0, _react.css)({
|
|
61
|
+
display: 'flex',
|
|
62
|
+
margin: "var(--ds-space-025, 2px)",
|
|
63
|
+
height: "".concat(_constants.COLOR_CARD_SIZE, "px")
|
|
64
|
+
});
|
|
65
|
+
var colorPaletteContainerStyles = (0, _react.css)({
|
|
66
|
+
display: 'flex',
|
|
67
|
+
flexWrap: 'wrap',
|
|
68
|
+
padding: "var(--ds-space-050, 4px)"
|
|
69
|
+
});
|
package/dist/cjs/utils.js
CHANGED
|
@@ -8,11 +8,13 @@ exports.getWidth = exports.getOptions = void 0;
|
|
|
8
8
|
var _theme = require("@atlaskit/theme");
|
|
9
9
|
var _constants = require("./constants");
|
|
10
10
|
var _memoizeOne = _interopRequireDefault(require("memoize-one"));
|
|
11
|
+
var _types = require("./types");
|
|
11
12
|
// AFP-2532 TODO: Fix automatic suppressions below
|
|
12
13
|
// eslint-disable-next-line @atlassian/tangerine/import/entry-points
|
|
13
14
|
|
|
14
|
-
var getWidth = exports.getWidth = function getWidth(cols) {
|
|
15
|
-
|
|
15
|
+
var getWidth = exports.getWidth = function getWidth(cols, mode) {
|
|
16
|
+
var width = cols * (_constants.COLOR_CARD_SIZE + (0, _theme.gridSize)() / 2);
|
|
17
|
+
return mode === _types.Mode.Standard ? width + (0, _theme.gridSize)() : width;
|
|
16
18
|
};
|
|
17
19
|
var getOptions = exports.getOptions = (0, _memoizeOne.default)(function (palette, selectedColor) {
|
|
18
20
|
var focusedItemIndex = 0;
|
|
@@ -1,75 +1,98 @@
|
|
|
1
|
-
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { PureComponent } from 'react';
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import React, { useCallback } from 'react';
|
|
4
3
|
import EditorDoneIcon from '@atlaskit/icon/glyph/editor/done';
|
|
5
|
-
// AFP-2532 TODO: Fix automatic suppressions below
|
|
6
|
-
// eslint-disable-next-line @atlassian/tangerine/import/entry-points
|
|
7
|
-
import { colors } from '@atlaskit/theme';
|
|
8
4
|
import Tooltip from '@atlaskit/tooltip';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
import { COLOR_CARD_SIZE, KEY_ENTER, KEY_SPACE } from '../constants';
|
|
6
|
+
import { css, jsx } from '@emotion/react';
|
|
7
|
+
import { N0, DN600A, B75 } from '@atlaskit/theme/colors';
|
|
8
|
+
const ColorCard = props => {
|
|
9
|
+
const {
|
|
10
|
+
value,
|
|
11
|
+
label,
|
|
12
|
+
selected,
|
|
13
|
+
focused,
|
|
14
|
+
checkMarkColor = `var(--ds-icon-inverse, ${N0})`,
|
|
15
|
+
isTabbing,
|
|
16
|
+
onClick,
|
|
17
|
+
onKeyDown
|
|
18
|
+
} = props;
|
|
19
|
+
const handleMouseDown = useCallback(event => {
|
|
20
|
+
event.preventDefault();
|
|
21
|
+
}, []);
|
|
22
|
+
const handleClick = useCallback(event => {
|
|
23
|
+
if (onClick) {
|
|
15
24
|
event.preventDefault();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
value
|
|
21
|
-
} = this.props;
|
|
22
|
-
if (onClick) {
|
|
23
|
-
event.preventDefault();
|
|
24
|
-
onClick(value);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
_defineProperty(this, "onKeyDown", event => {
|
|
28
|
-
const {
|
|
29
|
-
key
|
|
30
|
-
} = event;
|
|
31
|
-
const {
|
|
32
|
-
onKeyDown,
|
|
33
|
-
value,
|
|
34
|
-
isTabbing
|
|
35
|
-
} = this.props;
|
|
36
|
-
if ((isTabbing === undefined || isTabbing) && onKeyDown && (key === KEY_ENTER || key === KEY_SPACE)) {
|
|
37
|
-
event.preventDefault();
|
|
38
|
-
if (isTabbing) {
|
|
39
|
-
event.stopPropagation();
|
|
40
|
-
}
|
|
41
|
-
onKeyDown(value);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
_defineProperty(this, "ref", /*#__PURE__*/React.createRef());
|
|
45
|
-
}
|
|
46
|
-
render() {
|
|
25
|
+
onClick(value);
|
|
26
|
+
}
|
|
27
|
+
}, [onClick, value]);
|
|
28
|
+
const handleKeyDown = useCallback(event => {
|
|
47
29
|
const {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
30
|
+
key
|
|
31
|
+
} = event;
|
|
32
|
+
if ((isTabbing === undefined || isTabbing) && onKeyDown && (key === KEY_ENTER || key === KEY_SPACE)) {
|
|
33
|
+
event.preventDefault();
|
|
34
|
+
if (isTabbing) {
|
|
35
|
+
event.stopPropagation();
|
|
36
|
+
}
|
|
37
|
+
onKeyDown(value);
|
|
38
|
+
}
|
|
39
|
+
}, [isTabbing, onKeyDown, value]);
|
|
40
|
+
return jsx(Tooltip, {
|
|
41
|
+
content: label
|
|
42
|
+
}, jsx("div", {
|
|
43
|
+
css: [sharedColorContainerStyles, (isTabbing === undefined || isTabbing) && colorCardOptionTabbingStyles, focused && !isTabbing && colorCardOptionFocusedStyles],
|
|
44
|
+
onClick: handleClick,
|
|
45
|
+
onMouseDown: handleMouseDown,
|
|
46
|
+
onKeyDown: handleKeyDown,
|
|
47
|
+
role: "radio",
|
|
48
|
+
"aria-checked": selected,
|
|
49
|
+
"aria-label": label,
|
|
50
|
+
tabIndex: 0
|
|
51
|
+
}, jsx("div", {
|
|
52
|
+
css: colorCardContentStyles,
|
|
53
|
+
style: {
|
|
54
|
+
background: value || 'transparent'
|
|
55
|
+
}
|
|
56
|
+
}, selected && jsx("div", {
|
|
57
|
+
css: colorCardContentCheckMarkStyles
|
|
58
|
+
}, jsx(EditorDoneIcon, {
|
|
59
|
+
primaryColor: checkMarkColor,
|
|
60
|
+
label: ""
|
|
61
|
+
})))));
|
|
62
|
+
};
|
|
63
|
+
export default ColorCard;
|
|
64
|
+
const sharedColorContainerStyles = css({
|
|
65
|
+
display: 'inline-block',
|
|
66
|
+
position: 'relative',
|
|
67
|
+
width: `${COLOR_CARD_SIZE}px`,
|
|
68
|
+
height: `${COLOR_CARD_SIZE}px`,
|
|
69
|
+
border: '2px solid transparent',
|
|
70
|
+
boxSizing: 'border-box',
|
|
71
|
+
borderRadius: '6px',
|
|
72
|
+
transition: 'border-color 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38)',
|
|
73
|
+
backgroundColor: `var(--ds-background-neutral-subtle, ${N0})`,
|
|
74
|
+
borderColor: `var(--ds-background-neutral-subtle, ${N0})`,
|
|
75
|
+
padding: "var(--ds-space-0, 0px)",
|
|
76
|
+
cursor: 'pointer',
|
|
77
|
+
outline: 'none'
|
|
78
|
+
});
|
|
79
|
+
const colorCardOptionTabbingStyles = css({
|
|
80
|
+
':hover, :focus': {
|
|
81
|
+
borderColor: `var(--ds-border-focused, ${B75})`
|
|
74
82
|
}
|
|
75
|
-
}
|
|
83
|
+
});
|
|
84
|
+
const colorCardOptionFocusedStyles = css({
|
|
85
|
+
borderColor: `var(--ds-border-focused, ${B75})`
|
|
86
|
+
});
|
|
87
|
+
const colorCardContentStyles = css({
|
|
88
|
+
position: 'absolute',
|
|
89
|
+
top: '1px',
|
|
90
|
+
left: '1px',
|
|
91
|
+
width: "var(--ds-space-300, 24px)",
|
|
92
|
+
height: "var(--ds-space-300, 24px)",
|
|
93
|
+
borderRadius: "var(--ds-border-radius-100, 3px)",
|
|
94
|
+
boxShadow: `inset 0px 0px 0px 1px ${`var(--ds-background-inverse-subtle, ${DN600A})`}`
|
|
95
|
+
});
|
|
96
|
+
const colorCardContentCheckMarkStyles = css({
|
|
97
|
+
margin: '1px'
|
|
98
|
+
});
|
|
@@ -1,78 +1,94 @@
|
|
|
1
|
-
|
|
2
|
-
import React from 'react';
|
|
1
|
+
/** @jsx jsx */
|
|
3
2
|
import { Mode } from '../types';
|
|
4
|
-
import {
|
|
5
|
-
import { ColorCardWrapper, ColorPaletteMenu, ColorPaletteContainer } from '../styled/ColorPalette';
|
|
3
|
+
import { createAndFireEvent, withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
6
4
|
import ColorCard from './ColorCard';
|
|
7
|
-
import { getOptions } from '../utils';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
_defineProperty(ColorPaletteMenuWithoutAnalytics, "defaultProps", {
|
|
71
|
-
cols: 6,
|
|
72
|
-
mode: Mode.Standard
|
|
73
|
-
});
|
|
5
|
+
import { getOptions, getWidth } from '../utils';
|
|
6
|
+
import { css, jsx } from '@emotion/react';
|
|
7
|
+
import { COLOR_CARD_SIZE } from '../constants';
|
|
8
|
+
import { N0, N40 } from '@atlaskit/theme/colors';
|
|
9
|
+
export const ColorPaletteMenuWithoutAnalytics = ({
|
|
10
|
+
createAnalyticsEvent,
|
|
11
|
+
onChange,
|
|
12
|
+
palette,
|
|
13
|
+
selectedColor,
|
|
14
|
+
checkMarkColor,
|
|
15
|
+
label = 'Color picker',
|
|
16
|
+
cols = 6,
|
|
17
|
+
mode = Mode.Standard
|
|
18
|
+
}) => {
|
|
19
|
+
const createAndFireEventOnAtlaskit = createAndFireEvent('atlaskit');
|
|
20
|
+
const changeAnalyticsCaller = () => {
|
|
21
|
+
if (createAnalyticsEvent) {
|
|
22
|
+
return createAndFireEventOnAtlaskit({
|
|
23
|
+
action: 'clicked',
|
|
24
|
+
actionSubject: 'color-palette-menu',
|
|
25
|
+
attributes: {
|
|
26
|
+
componentName: 'color-picker',
|
|
27
|
+
packageName: "@atlaskit/color-picker",
|
|
28
|
+
packageVersion: "3.2.0"
|
|
29
|
+
}
|
|
30
|
+
})(createAnalyticsEvent);
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
};
|
|
34
|
+
const handleChange = value => {
|
|
35
|
+
onChange(value, changeAnalyticsCaller());
|
|
36
|
+
};
|
|
37
|
+
const {
|
|
38
|
+
options,
|
|
39
|
+
value: selectedValue
|
|
40
|
+
} = getOptions(palette, selectedColor);
|
|
41
|
+
const fullLabel = `${label}, ${selectedValue.label} selected`;
|
|
42
|
+
return jsx("div", {
|
|
43
|
+
"aria-label": fullLabel,
|
|
44
|
+
role: "radiogroup",
|
|
45
|
+
css: [colorPaletteMenuStyles, mode === Mode.Standard && colorPaletteMenuStandardStyles],
|
|
46
|
+
style: {
|
|
47
|
+
width: `${getWidth(cols, mode)}px`
|
|
48
|
+
}
|
|
49
|
+
}, jsx("div", {
|
|
50
|
+
css: [colorPaletteContainerStyles, mode === Mode.Compact && colorPaletteContainerCompactStyles]
|
|
51
|
+
}, options.map(({
|
|
52
|
+
label,
|
|
53
|
+
value
|
|
54
|
+
}) => jsx("div", {
|
|
55
|
+
css: colorCardWrapperStyles,
|
|
56
|
+
key: value
|
|
57
|
+
}, jsx(ColorCard, {
|
|
58
|
+
label: label,
|
|
59
|
+
value: value,
|
|
60
|
+
checkMarkColor: checkMarkColor,
|
|
61
|
+
isOption: true,
|
|
62
|
+
selected: value === selectedValue.value,
|
|
63
|
+
onClick: handleChange,
|
|
64
|
+
onKeyDown: handleChange
|
|
65
|
+
})))));
|
|
66
|
+
};
|
|
74
67
|
export default withAnalyticsContext({
|
|
75
68
|
componentName: 'color-picker',
|
|
76
69
|
packageName: "@atlaskit/color-picker",
|
|
77
|
-
packageVersion: "3.
|
|
78
|
-
})(withAnalyticsEvents()(ColorPaletteMenuWithoutAnalytics));
|
|
70
|
+
packageVersion: "3.2.0"
|
|
71
|
+
})(withAnalyticsEvents()(ColorPaletteMenuWithoutAnalytics));
|
|
72
|
+
const colorCardWrapperStyles = css({
|
|
73
|
+
display: 'flex',
|
|
74
|
+
margin: "var(--ds-space-025, 2px)",
|
|
75
|
+
height: `${COLOR_CARD_SIZE}px`
|
|
76
|
+
});
|
|
77
|
+
const colorPaletteContainerStyles = css({
|
|
78
|
+
display: 'flex',
|
|
79
|
+
flexWrap: 'wrap',
|
|
80
|
+
padding: "var(--ds-space-050, 4px)"
|
|
81
|
+
});
|
|
82
|
+
const colorPaletteContainerCompactStyles = css({
|
|
83
|
+
padding: "var(--ds-space-0, 0)"
|
|
84
|
+
});
|
|
85
|
+
const colorPaletteMenuStyles = css({
|
|
86
|
+
display: 'flex',
|
|
87
|
+
position: 'relative',
|
|
88
|
+
margin: "var(--ds-space-0, 0)",
|
|
89
|
+
backgroundColor: `var(--ds-surface-overlay, ${N0})`
|
|
90
|
+
});
|
|
91
|
+
const colorPaletteMenuStandardStyles = css({
|
|
92
|
+
borderRadius: "var(--ds-border-radius-100, 3px)",
|
|
93
|
+
boxShadow: `var(--ds-shadow-overlay, ${`0 0 0 1px ${N40}, 0 0 8px ${N40}`})`
|
|
94
|
+
});
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
/** @jsx jsx */
|
|
3
4
|
import React from 'react';
|
|
4
5
|
import { PopupSelect } from '@atlaskit/select';
|
|
5
6
|
import Trigger from './Trigger';
|
|
6
7
|
import * as components from './components';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { ColorCardWrapper } from '../styled/ColorPicker';
|
|
8
|
+
import { KEY_ARROW_DOWN, KEY_ARROW_UP, KEY_TAB } from '../constants';
|
|
9
|
+
import { createAndFireEvent, withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
10
10
|
import { getOptions } from '../utils';
|
|
11
|
+
import { css, jsx } from '@emotion/react';
|
|
11
12
|
const defaultPopperProps = {
|
|
12
13
|
strategy: 'fixed',
|
|
13
14
|
modifiers: [{
|
|
@@ -19,7 +20,7 @@ const defaultPopperProps = {
|
|
|
19
20
|
placement: 'bottom-start'
|
|
20
21
|
};
|
|
21
22
|
const packageName = "@atlaskit/color-picker";
|
|
22
|
-
const packageVersion = "3.
|
|
23
|
+
const packageVersion = "3.2.0";
|
|
23
24
|
export class ColorPickerWithoutAnalytics extends React.Component {
|
|
24
25
|
constructor(...args) {
|
|
25
26
|
super(...args);
|
|
@@ -77,13 +78,14 @@ export class ColorPickerWithoutAnalytics extends React.Component {
|
|
|
77
78
|
value
|
|
78
79
|
} = getOptions(palette, selectedColor);
|
|
79
80
|
const fullLabel = `${label}, ${value.label} selected`;
|
|
80
|
-
return
|
|
81
|
+
return jsx(PopupSelect, {
|
|
81
82
|
target: ({
|
|
82
83
|
ref,
|
|
83
84
|
isOpen
|
|
84
|
-
}) =>
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
}) => jsx("div", {
|
|
86
|
+
css: colorCardWrapperStyles,
|
|
87
|
+
ref: ref
|
|
88
|
+
}, jsx(Trigger, _extends({}, value, {
|
|
87
89
|
label: fullLabel,
|
|
88
90
|
expanded: isOpen
|
|
89
91
|
}))),
|
|
@@ -112,4 +114,7 @@ export default withAnalyticsContext({
|
|
|
112
114
|
componentName: 'color-picker',
|
|
113
115
|
packageName,
|
|
114
116
|
packageVersion
|
|
115
|
-
})(withAnalyticsEvents()(ColorPickerWithoutAnalytics));
|
|
117
|
+
})(withAnalyticsEvents()(ColorPickerWithoutAnalytics));
|
|
118
|
+
const colorCardWrapperStyles = css({
|
|
119
|
+
display: 'inline-block'
|
|
120
|
+
});
|
|
@@ -1,42 +1,75 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import { ColorCardButton, ColorCardContent } from '../styled/ColorCard';
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { useCallback } from 'react';
|
|
4
3
|
import Tooltip from '@atlaskit/tooltip';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { css, jsx } from '@emotion/react';
|
|
5
|
+
import { COLOR_CARD_SIZE } from '../constants';
|
|
6
|
+
import { B100, DN600A, N0 } from '@atlaskit/theme/colors';
|
|
7
|
+
const ColorCard = ({
|
|
8
|
+
value,
|
|
9
|
+
label,
|
|
10
|
+
expanded,
|
|
11
|
+
onClick
|
|
12
|
+
}) => {
|
|
13
|
+
const handleMouseDown = useCallback(event => {
|
|
14
|
+
event.preventDefault();
|
|
15
|
+
}, []);
|
|
16
|
+
const handleClick = useCallback(event => {
|
|
17
|
+
event.currentTarget.focus();
|
|
18
|
+
if (onClick) {
|
|
9
19
|
event.preventDefault();
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
onClick();
|
|
21
|
+
}
|
|
22
|
+
}, [onClick]);
|
|
23
|
+
return jsx(Tooltip, {
|
|
24
|
+
content: label
|
|
25
|
+
}, jsx("button", {
|
|
26
|
+
css: [sharedColorContainerStyles, colorCardButtonStyles, expanded && colorCardButtonFocusedStyles],
|
|
27
|
+
onClick: handleClick,
|
|
28
|
+
onMouseDown: handleMouseDown,
|
|
29
|
+
"aria-label": label,
|
|
30
|
+
"aria-expanded": expanded,
|
|
31
|
+
"aria-haspopup": true,
|
|
32
|
+
type: "button"
|
|
33
|
+
}, jsx("span", {
|
|
34
|
+
css: colorCardContentStyles,
|
|
35
|
+
style: {
|
|
36
|
+
background: value || 'transparent'
|
|
37
|
+
}
|
|
38
|
+
})));
|
|
39
|
+
};
|
|
40
|
+
export default ColorCard;
|
|
41
|
+
const sharedColorContainerStyles = css({
|
|
42
|
+
display: 'inline-block',
|
|
43
|
+
position: 'relative',
|
|
44
|
+
width: `${COLOR_CARD_SIZE}px`,
|
|
45
|
+
height: `${COLOR_CARD_SIZE}px`,
|
|
46
|
+
border: '2px solid transparent',
|
|
47
|
+
boxSizing: 'border-box',
|
|
48
|
+
borderRadius: '6px',
|
|
49
|
+
transition: 'border-color 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38)',
|
|
50
|
+
backgroundColor: `var(--ds-background-neutral-subtle, ${N0})`,
|
|
51
|
+
borderColor: `var(--ds-background-neutral-subtle, ${N0})`,
|
|
52
|
+
padding: "var(--ds-space-0, 0px)",
|
|
53
|
+
cursor: 'pointer',
|
|
54
|
+
outline: 'none'
|
|
55
|
+
});
|
|
56
|
+
const colorCardButtonStyles = css({
|
|
57
|
+
':hover': {
|
|
58
|
+
borderColor: `var(--ds-background-neutral-subtle, ${N0})`
|
|
59
|
+
},
|
|
60
|
+
':not(:focus):hover, :focus': {
|
|
61
|
+
borderColor: `var(--ds-border-focused, ${B100})`
|
|
21
62
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"aria-expanded": expanded,
|
|
36
|
-
"aria-haspopup": true,
|
|
37
|
-
type: "button"
|
|
38
|
-
}, /*#__PURE__*/React.createElement(ColorCardContent, {
|
|
39
|
-
color: value || 'transparent'
|
|
40
|
-
})));
|
|
41
|
-
}
|
|
42
|
-
}
|
|
63
|
+
});
|
|
64
|
+
const colorCardButtonFocusedStyles = css({
|
|
65
|
+
borderColor: `var(--ds-border-focused, ${B100})`
|
|
66
|
+
});
|
|
67
|
+
const colorCardContentStyles = css({
|
|
68
|
+
position: 'absolute',
|
|
69
|
+
top: '1px',
|
|
70
|
+
left: '1px',
|
|
71
|
+
width: "var(--ds-space-300, 24px)",
|
|
72
|
+
height: "var(--ds-space-300, 24px)",
|
|
73
|
+
borderRadius: "var(--ds-border-radius-100, 3px)",
|
|
74
|
+
boxShadow: `inset 0px 0px 0px 1px ${`var(--ds-background-inverse-subtle, ${DN600A})`}`
|
|
75
|
+
});
|