@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.
Files changed (48) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/components/ColorCard.js +88 -80
  3. package/dist/cjs/components/ColorPaletteMenu.js +88 -88
  4. package/dist/cjs/components/ColorPicker.js +12 -8
  5. package/dist/cjs/components/Trigger.js +72 -56
  6. package/dist/cjs/components/components.js +35 -27
  7. package/dist/cjs/utils.js +4 -2
  8. package/dist/es2019/components/ColorCard.js +93 -70
  9. package/dist/es2019/components/ColorPaletteMenu.js +89 -73
  10. package/dist/es2019/components/ColorPicker.js +14 -9
  11. package/dist/es2019/components/Trigger.js +72 -39
  12. package/dist/es2019/components/components.js +32 -22
  13. package/dist/es2019/utils.js +5 -1
  14. package/dist/esm/components/ColorCard.js +89 -85
  15. package/dist/esm/components/ColorPaletteMenu.js +89 -90
  16. package/dist/esm/components/ColorPicker.js +14 -9
  17. package/dist/esm/components/Trigger.js +71 -57
  18. package/dist/esm/components/components.js +35 -27
  19. package/dist/esm/utils.js +4 -2
  20. package/dist/types/components/ColorCard.d.ts +3 -9
  21. package/dist/types/components/ColorPaletteMenu.d.ts +8 -18
  22. package/dist/types/components/ColorPicker.d.ts +6 -4
  23. package/dist/types/components/Trigger.d.ts +3 -6
  24. package/dist/types/components/components.d.ts +4 -3
  25. package/dist/types/utils.d.ts +2 -2
  26. package/dist/types-ts4.5/components/ColorCard.d.ts +3 -9
  27. package/dist/types-ts4.5/components/ColorPaletteMenu.d.ts +8 -18
  28. package/dist/types-ts4.5/components/ColorPicker.d.ts +6 -4
  29. package/dist/types-ts4.5/components/Trigger.d.ts +3 -6
  30. package/dist/types-ts4.5/components/components.d.ts +4 -3
  31. package/dist/types-ts4.5/utils.d.ts +2 -2
  32. package/package.json +5 -5
  33. package/dist/cjs/styled/ColorCard.js +0 -40
  34. package/dist/cjs/styled/ColorPalette.js +0 -24
  35. package/dist/cjs/styled/ColorPicker.js +0 -11
  36. package/dist/es2019/styled/ColorCard.js +0 -72
  37. package/dist/es2019/styled/ColorPalette.js +0 -28
  38. package/dist/es2019/styled/ColorPicker.js +0 -4
  39. package/dist/esm/styled/ColorCard.js +0 -30
  40. package/dist/esm/styled/ColorPalette.js +0 -18
  41. package/dist/esm/styled/ColorPicker.js +0 -4
  42. package/dist/types/styled/ColorCard.d.ts +0 -13
  43. package/dist/types/styled/ColorPalette.d.ts +0 -13
  44. package/dist/types/styled/ColorPicker.d.ts +0 -2
  45. package/dist/types-ts4.5/styled/ColorCard.d.ts +0 -13
  46. package/dist/types-ts4.5/styled/ColorPalette.d.ts +0 -13
  47. package/dist/types-ts4.5/styled/ColorPicker.d.ts +0 -2
  48. 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 _ColorPalette = require("../styled/ColorPalette");
14
- var _excluded = ["cx", "selectProps", "innerRef"];
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 cx = props.cx,
17
- cols = props.selectProps.cols,
16
+ var cols = props.selectProps.cols,
18
17
  innerRef = props.innerRef,
19
- rest = (0, _objectWithoutProperties2.default)(props, _excluded);
20
- return /*#__PURE__*/_react.default.createElement(_ColorPalette.ColorPaletteContainer, (0, _extends2.default)({
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
- innerRef: innerRef
26
- }, rest));
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
- /*#__PURE__*/
41
- // @ts-expect-error - known issue: https://github.com/mui/material-ui/issues/13921. TS treats styled components to be different from HTMLDivElement
42
- _react.default.createElement(_ColorPalette.ColorCardWrapper, innerProps, /*#__PURE__*/_react.default.createElement(_ColorCard.default, {
43
- label: label,
44
- value: value,
45
- checkMarkColor: checkMarkColor,
46
- isOption: true,
47
- focused: isFocused,
48
- selected: isSelected,
49
- onKeyDown: function onKeyDown(value) {
50
- return onOptionKeyDown(value);
51
- },
52
- isTabbing: isTabbing
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
- return cols * (_constants.COLOR_CARD_SIZE + (0, _theme.gridSize)() / 2);
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
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
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 { ColorCardOption, ColorCardContent, ColorCardContentCheckMark } from '../styled/ColorCard';
10
- import { KEY_SPACE, KEY_ENTER } from '../constants';
11
- export default class ColorCard extends PureComponent {
12
- constructor(...args) {
13
- super(...args);
14
- _defineProperty(this, "onMouseDown", event => {
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
- _defineProperty(this, "onClick", event => {
18
- const {
19
- onClick,
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
- value,
49
- label,
50
- selected,
51
- focused,
52
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
53
- checkMarkColor = colors.N0,
54
- isTabbing
55
- } = this.props;
56
- return /*#__PURE__*/React.createElement(Tooltip, {
57
- content: label
58
- }, /*#__PURE__*/React.createElement(ColorCardOption, {
59
- onClick: this.onClick,
60
- onMouseDown: this.onMouseDown,
61
- focused: focused,
62
- role: "radio",
63
- "aria-checked": selected,
64
- "aria-label": label,
65
- tabIndex: 0,
66
- onKeyDown: this.onKeyDown,
67
- isTabbing: isTabbing
68
- }, /*#__PURE__*/React.createElement(ColorCardContent, {
69
- color: value || 'transparent'
70
- }, selected && /*#__PURE__*/React.createElement(ColorCardContentCheckMark, null, /*#__PURE__*/React.createElement(EditorDoneIcon, {
71
- primaryColor: checkMarkColor,
72
- label: ""
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
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import React from 'react';
1
+ /** @jsx jsx */
3
2
  import { Mode } from '../types';
4
- import { withAnalyticsEvents, withAnalyticsContext, createAndFireEvent } from '@atlaskit/analytics-next';
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
- export class ColorPaletteMenuWithoutAnalytics extends React.Component {
9
- constructor(...args) {
10
- super(...args);
11
- _defineProperty(this, "createAndFireEventOnAtlaskit", createAndFireEvent('atlaskit'));
12
- _defineProperty(this, "changeAnalyticsCaller", () => {
13
- const {
14
- createAnalyticsEvent
15
- } = this.props;
16
- if (createAnalyticsEvent) {
17
- return this.createAndFireEventOnAtlaskit({
18
- action: 'clicked',
19
- actionSubject: 'color-palette-menu',
20
- attributes: {
21
- componentName: 'color-picker',
22
- packageName: "@atlaskit/color-picker",
23
- packageVersion: "3.1.8"
24
- }
25
- })(createAnalyticsEvent);
26
- }
27
- return undefined;
28
- });
29
- _defineProperty(this, "onChange", value => {
30
- this.props.onChange(value, this.changeAnalyticsCaller());
31
- });
32
- }
33
- render() {
34
- const {
35
- palette,
36
- selectedColor,
37
- checkMarkColor,
38
- cols,
39
- label = 'Color picker',
40
- mode
41
- } = this.props;
42
- const {
43
- options,
44
- value: selectedValue
45
- } = getOptions(palette, selectedColor);
46
- const fullLabel = `${label}, ${selectedValue.label} selected`;
47
- return /*#__PURE__*/React.createElement(ColorPaletteMenu, {
48
- cols: cols,
49
- "aria-label": fullLabel,
50
- mode: mode,
51
- role: "radiogroup"
52
- }, /*#__PURE__*/React.createElement(ColorPaletteContainer, {
53
- mode: mode
54
- }, options.map(({
55
- label,
56
- value
57
- }) => /*#__PURE__*/React.createElement(ColorCardWrapper, {
58
- key: value
59
- }, /*#__PURE__*/React.createElement(ColorCard, {
60
- label: label,
61
- value: value,
62
- checkMarkColor: checkMarkColor,
63
- isOption: true,
64
- selected: value === selectedValue.value,
65
- onClick: this.onChange,
66
- onKeyDown: this.onChange
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.1.8"
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 { KEY_ARROW_UP, KEY_ARROW_DOWN, KEY_TAB } from '../constants';
8
- import { withAnalyticsEvents, withAnalyticsContext, createAndFireEvent } from '@atlaskit/analytics-next';
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.1.8";
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 /*#__PURE__*/React.createElement(PopupSelect, {
81
+ return jsx(PopupSelect, {
81
82
  target: ({
82
83
  ref,
83
84
  isOpen
84
- }) => /*#__PURE__*/React.createElement(ColorCardWrapper, {
85
- innerRef: ref
86
- }, /*#__PURE__*/React.createElement(Trigger, _extends({}, value, {
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
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import React from 'react';
3
- import { ColorCardButton, ColorCardContent } from '../styled/ColorCard';
1
+ /** @jsx jsx */
2
+ import { useCallback } from 'react';
4
3
  import Tooltip from '@atlaskit/tooltip';
5
- export default class ColorCard extends React.PureComponent {
6
- constructor(...args) {
7
- super(...args);
8
- _defineProperty(this, "onMouseDown", event => {
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
- _defineProperty(this, "onClick", event => {
12
- const {
13
- onClick
14
- } = this.props;
15
- event.currentTarget.focus();
16
- if (onClick) {
17
- event.preventDefault();
18
- onClick();
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
- render() {
23
- const {
24
- value,
25
- label,
26
- expanded
27
- } = this.props;
28
- return /*#__PURE__*/React.createElement(Tooltip, {
29
- content: label
30
- }, /*#__PURE__*/React.createElement(ColorCardButton, {
31
- onClick: this.onClick,
32
- onMouseDown: this.onMouseDown,
33
- focused: expanded,
34
- "aria-label": label,
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
+ });