@pingux/astro 2.102.0-alpha.4 → 2.102.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.
@@ -30,6 +30,7 @@ var _useField2 = _interopRequireDefault(require("../../hooks/useField"));
30
30
  var _pendoID = require("../../utils/devUtils/constants/pendoID");
31
31
  var _ariaAttributes = require("../../utils/docUtils/ariaAttributes");
32
32
  var _PopoverContainer = _interopRequireDefault(require("../PopoverContainer"));
33
+ var _ColorFieldPreviewButton = _interopRequireDefault(require("./ColorFieldPreviewButton"));
33
34
  var _react2 = require("@emotion/react");
34
35
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
36
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -48,7 +49,8 @@ var ColorField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
48
49
  label = props.label,
49
50
  labelProps = props.labelProps,
50
51
  imperativeOnChange = props.onChange,
51
- status = props.status;
52
+ status = props.status,
53
+ mode = props.mode;
52
54
  var _getAriaAttributeProp = (0, _ariaAttributes.getAriaAttributeProps)(props),
53
55
  ariaProps = _getAriaAttributeProp.ariaProps,
54
56
  nonAriaProps = _getAriaAttributeProp.nonAriaProps;
@@ -65,6 +67,14 @@ var ColorField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
65
67
  var _useColorField = (0, _color.useColorField)(nonAriaProps, state, colorRef),
66
68
  raLabelProps = _useColorField.labelProps,
67
69
  raInputProps = _useColorField.inputProps;
70
+ var isDetailedMode = mode === 'detailed-button-preview';
71
+ var sizeValues = isDetailedMode ? {
72
+ offset: 0,
73
+ width: 220
74
+ } : {
75
+ offset: 15,
76
+ width: undefined
77
+ };
68
78
  var _useVisuallyHidden = (0, _reactAria.useVisuallyHidden)(),
69
79
  visuallyHiddenProps = _useVisuallyHidden.visuallyHiddenProps;
70
80
  var _useField = (0, _useField2["default"])(_objectSpread(_objectSpread({}, nonAriaProps), {}, {
@@ -79,7 +89,7 @@ var ColorField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
79
89
  targetRef: triggerRef,
80
90
  overlayRef: overlayRef,
81
91
  placement: (0, _concat["default"])(_context = "".concat(direction, " ")).call(_context, align),
82
- offset: 15,
92
+ offset: sizeValues.offset,
83
93
  isOpen: popoverState.isOpen,
84
94
  onClose: popoverState.close,
85
95
  shouldUpdatePosition: true
@@ -100,13 +110,23 @@ var ColorField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
100
110
  var colorValue = _ref.colorValue;
101
111
  return (0, _concat["default"])(_context2 = (0, _concat["default"])(_context3 = (0, _concat["default"])(_context4 = "rgba(".concat(colorValue === null || colorValue === void 0 ? void 0 : colorValue.red, ", ")).call(_context4, colorValue === null || colorValue === void 0 ? void 0 : colorValue.green, ", ")).call(_context3, colorValue === null || colorValue === void 0 ? void 0 : colorValue.blue, ", ")).call(_context2, colorValue === null || colorValue === void 0 ? void 0 : colorValue.alpha, ")");
102
112
  }, []);
103
- return (0, _react2.jsx)(_.Box, (0, _extends2["default"])({}, (0, _pendoID.getPendoID)(displayName), fieldContainerProps), label && (0, _react2.jsx)(_.Label, fieldLabelProps), (0, _react2.jsx)(_.Button, (0, _extends2["default"])({
113
+ var defaultButtonProps = {
114
+ 'aria-label': 'Select color',
115
+ bg: getRgbaFromState(state),
116
+ onPress: handleButtonPress,
117
+ ref: triggerRef
118
+ };
119
+ return (0, _react2.jsx)(_.Box, (0, _extends2["default"])({}, (0, _pendoID.getPendoID)(displayName), fieldContainerProps), isDetailedMode ? (0, _react2.jsx)(_ColorFieldPreviewButton["default"], (0, _extends2["default"])({
120
+ isOpen: popoverState.isOpen,
121
+ colorValue: state.colorValue.toString('hex'),
122
+ label: label
123
+ }, (0, _reactAria.mergeProps)(defaultButtonProps, buttonProps, ariaProps, triggerProps))) : (0, _react2.jsx)(_react["default"].Fragment, null, label && (0, _react2.jsx)(_.Label, fieldLabelProps), (0, _react2.jsx)(_.Button, (0, _extends2["default"])({
104
124
  "aria-label": "Select color",
105
125
  bg: getRgbaFromState(state),
106
126
  onPress: handleButtonPress,
107
127
  ref: triggerRef,
108
128
  variant: "forms.colorField.container"
109
- }, (0, _reactAria.mergeProps)(buttonProps, ariaProps, triggerProps))), (0, _react2.jsx)(_.Box, fieldControlWrapperProps, (0, _react2.jsx)(_.Input, (0, _extends2["default"])({}, visuallyHiddenProps, fieldControlInputProps, {
129
+ }, (0, _reactAria.mergeProps)(buttonProps, ariaProps, triggerProps)))), (0, _react2.jsx)(_.Box, fieldControlWrapperProps, (0, _react2.jsx)(_.Input, (0, _extends2["default"])({}, visuallyHiddenProps, fieldControlInputProps, {
110
130
  role: "textbox",
111
131
  ref: colorRef,
112
132
  sx: {
@@ -129,6 +149,7 @@ var ColorField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
129
149
  contain: true,
130
150
  autoFocus: true
131
151
  }, (0, _react2.jsx)(_reactColor.SketchPicker, {
152
+ width: sizeValues.width,
132
153
  color: getRgbaFromState(state),
133
154
  onChange: handleColorChange
134
155
  }))));
@@ -3,3 +3,4 @@ import { ColorFieldProps } from '../../types';
3
3
  declare const _default: import("@storybook/types").ComponentAnnotations<import("@storybook/react/dist/types-0a347bb9").R, import("@storybook/types").Args>;
4
4
  export default _default;
5
5
  export declare const Default: StoryFn<ColorFieldProps>;
6
+ export declare const DetailedButtonPreview: StoryFn<ColorFieldProps>;
@@ -14,7 +14,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
14
14
  _Object$defineProperty(exports, "__esModule", {
15
15
  value: true
16
16
  });
17
- exports["default"] = exports.Default = void 0;
17
+ exports["default"] = exports.DetailedButtonPreview = exports.Default = void 0;
18
18
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
19
19
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
20
20
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
@@ -30,7 +30,7 @@ var _react2 = require("@emotion/react");
30
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
31
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
32
32
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
33
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context4, _context5; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context4 = ownKeys(Object(source), !0)).call(_context4, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context5 = ownKeys(Object(source))).call(_context5, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
33
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context7, _context8; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context7 = ownKeys(Object(source), !0)).call(_context7, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context8 = ownKeys(Object(source))).call(_context8, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
34
34
  var _default = {
35
35
  title: 'Form/ColorField',
36
36
  component: _index.ColorField,
@@ -109,4 +109,33 @@ var Default = function Default(args) {
109
109
  })))
110
110
  );
111
111
  };
112
- exports.Default = Default;
112
+ exports.Default = Default;
113
+ var DetailedButtonPreview = function DetailedButtonPreview(args) {
114
+ var _useState3 = (0, _react.useState)('rgba(127, 0, 127, 1)'),
115
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
116
+ color = _useState4[0],
117
+ setColor = _useState4[1];
118
+ var handleChange = (0, _react.useCallback)(function (colorVal) {
119
+ if (typeof colorVal === 'string') {
120
+ setColor(colorVal);
121
+ } else if (colorVal.rgb) {
122
+ var _context4, _context5, _context6;
123
+ var rgb = colorVal.rgb;
124
+ var r = rgb.r,
125
+ b = rgb.b,
126
+ g = rgb.g,
127
+ a = rgb.a;
128
+ setColor((0, _concat["default"])(_context4 = (0, _concat["default"])(_context5 = (0, _concat["default"])(_context6 = "rgba(".concat(r, ", ")).call(_context6, g, ", ")).call(_context5, b, ", ")).call(_context4, a, ")"));
129
+ }
130
+ }, []);
131
+ return (
132
+ // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
133
+ // readers when an overlay opens.
134
+ (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.ColorField, (0, _extends2["default"])({}, args, {
135
+ value: color,
136
+ onChange: handleChange,
137
+ mode: "detailed-button-preview"
138
+ })))
139
+ );
140
+ };
141
+ exports.DetailedButtonPreview = DetailedButtonPreview;
@@ -10,5 +10,58 @@ declare const _default: {
10
10
  outlineOffset: string;
11
11
  };
12
12
  };
13
+ detailedPreviewButton: {
14
+ height: string;
15
+ minWidth: string;
16
+ borderColor: string;
17
+ '&.is-focused': {
18
+ boxShadow: string;
19
+ };
20
+ '&.is-pressed': {
21
+ backgroundColor: string;
22
+ color: string;
23
+ boxShadow: string;
24
+ path: {
25
+ fill: string;
26
+ };
27
+ };
28
+ '&.is-disabled': {
29
+ outline: string;
30
+ outlineColor: string;
31
+ outlineOffset: string;
32
+ };
33
+ bg: string;
34
+ border: string;
35
+ '&.is-hovered': {
36
+ bg: string;
37
+ border: string;
38
+ borderColor: string;
39
+ color: string;
40
+ boxShadow: string;
41
+ };
42
+ fontSize: string;
43
+ fontWeight: number;
44
+ color: string;
45
+ fontFamily: string;
46
+ display: string;
47
+ overflowWrap: import("../..").overflowWrap;
48
+ maxWidth: string;
49
+ wordWrap: import("../..").wordWrap;
50
+ wordBreak: import("../..").wordBreak;
51
+ cursor: string;
52
+ lineHeight: string;
53
+ padding: string;
54
+ outline: string;
55
+ alignItems: string;
56
+ justifyContent: string;
57
+ borderRadius: string;
58
+ flexShrink: number;
59
+ whiteSpace: string;
60
+ };
61
+ detailedColorView: {
62
+ height: string;
63
+ width: string;
64
+ borderRadius: string;
65
+ };
13
66
  };
14
67
  export default _default;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
3
4
  var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
4
5
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
5
6
  var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
@@ -8,6 +9,7 @@ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/in
8
9
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
9
10
  var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
10
11
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
12
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
11
13
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
12
14
  _Object$defineProperty(exports, "__esModule", {
13
15
  value: true
@@ -15,7 +17,9 @@ _Object$defineProperty(exports, "__esModule", {
15
17
  exports["default"] = void 0;
16
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
17
19
  var _colors = require("../../styles/colors");
18
- var _Buttons = require("../Button/Buttons.styles");
20
+ var _Buttons = _interopRequireWildcard(require("../Button/Buttons.styles"));
21
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
23
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
24
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
21
25
  var container = {
@@ -25,7 +29,31 @@ var container = {
25
29
  },
26
30
  '&.is-focused': _objectSpread({}, _Buttons.defaultFocus)
27
31
  };
32
+ var detailedColorView = {
33
+ height: '28px',
34
+ width: '28px',
35
+ borderRadius: '1px'
36
+ };
37
+ var detailedPreviewButton = _objectSpread(_objectSpread({}, _Buttons["default"]["default"]), {}, {
38
+ height: '52px !important',
39
+ minWidth: '240px',
40
+ borderColor: 'neutral.90',
41
+ '&.is-focused': {
42
+ boxShadow: '0 1px 3px 0px rgba(0,0,0, 0.13)'
43
+ },
44
+ '&.is-pressed': {
45
+ backgroundColor: 'accent.30',
46
+ color: 'white',
47
+ boxShadow: 'unset',
48
+ 'path': {
49
+ fill: 'white'
50
+ }
51
+ },
52
+ '&.is-disabled': _objectSpread({}, _Buttons.defaultFocus)
53
+ });
28
54
  var _default = {
29
- container: container
55
+ container: container,
56
+ detailedPreviewButton: detailedPreviewButton,
57
+ detailedColorView: detailedColorView
30
58
  };
31
59
  exports["default"] = _default;
@@ -68,4 +68,23 @@ test('clicking within the popover does not close it', function () {
68
68
  // click the popover container, which has caused closing in regressions
69
69
  _userEvent["default"].click(_testWrapper.screen.getByRole('presentation'));
70
70
  expect(_testWrapper.screen.getByRole('presentation')).toBeInTheDocument();
71
+ });
72
+ test('renders detailed button preview mode correctly', function () {
73
+ getComponent({
74
+ mode: 'detailed-button-preview',
75
+ value: testColor1
76
+ });
77
+ expect(_testWrapper.screen.getByText(testLabel)).toBeInTheDocument();
78
+ expect(_testWrapper.screen.getByText(testColor1.toLocaleUpperCase())).toBeInTheDocument();
79
+ });
80
+ test('renders MenuUp / MenuDown icon correctly', function () {
81
+ getComponent({
82
+ mode: 'detailed-button-preview',
83
+ value: testColor1
84
+ });
85
+ var button = _testWrapper.screen.getByRole('button');
86
+ _userEvent["default"].click(button);
87
+ expect(_testWrapper.screen.getByTitle('menu-up')).toBeInTheDocument();
88
+ _userEvent["default"].click(button);
89
+ expect(_testWrapper.screen.getByTitle('menu-down')).toBeInTheDocument();
71
90
  });
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ColorFieldPreviewButtonProps } from '../../index';
3
+ declare const ColorFieldPreviewButton: React.ForwardRefExoticComponent<Omit<ColorFieldPreviewButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
4
+ export default ColorFieldPreviewButton;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
8
+ _Object$defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports["default"] = void 0;
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
13
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _hooks = require("../../hooks");
16
+ var _index = require("../../index");
17
+ var _react2 = require("@emotion/react");
18
+ var _excluded = ["isOpen", "bg", "label", "colorValue"];
19
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+ var ColorFieldPreviewButton = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
22
+ var isOpen = props.isOpen,
23
+ bg = props.bg,
24
+ label = props.label,
25
+ colorValue = props.colorValue,
26
+ others = (0, _objectWithoutProperties2["default"])(props, _excluded);
27
+ var _useGetTheme = (0, _hooks.useGetTheme)(),
28
+ icons = _useGetTheme.icons;
29
+ var MenuUp = icons.MenuUp,
30
+ MenuDown = icons.MenuDown;
31
+ var buttonRef = (0, _hooks.useLocalOrForwardRef)(ref);
32
+ return (0, _react2.jsx)(_index.Button, (0, _extends2["default"])({}, others, {
33
+ ref: buttonRef,
34
+ variant: "forms.colorField.detailedPreviewButton"
35
+ }), (0, _react2.jsx)(_index.Box, {
36
+ isRow: true,
37
+ alignItems: "center",
38
+ gap: "md",
39
+ minWidth: "100%",
40
+ flexGrow: "1"
41
+ }, (0, _react2.jsx)(_index.Box, {
42
+ bg: bg,
43
+ variant: "forms.colorField.detailedColorView"
44
+ }), (0, _react2.jsx)(_index.Box, {
45
+ textAlign: "left",
46
+ gap: "xs"
47
+ }, (0, _react2.jsx)(_index.Text, {
48
+ variant: "colorFieldButtonLabel"
49
+ }, label), (0, _react2.jsx)(_index.Text, {
50
+ variant: "colorFieldButtonColor"
51
+ }, colorValue)), (0, _react2.jsx)(_index.Box, {
52
+ sx: {
53
+ ml: 'auto'
54
+ },
55
+ flexGrow: "1"
56
+ }, (0, _react2.jsx)(_index.Icon, {
57
+ ml: "auto",
58
+ title: {
59
+ name: isOpen ? 'menu-up' : 'menu-down'
60
+ },
61
+ icon: isOpen ? MenuUp : MenuDown
62
+ }))));
63
+ });
64
+ var _default = ColorFieldPreviewButton;
65
+ exports["default"] = _default;
@@ -1201,6 +1201,28 @@ export declare const text: {
1201
1201
  wordWrap: wordWrapText;
1202
1202
  wordBreak: wordBreak;
1203
1203
  };
1204
+ colorFieldButtonLabel: {
1205
+ fontSize: string;
1206
+ fontWeight: number;
1207
+ lineHeight: string;
1208
+ fontFamily: string;
1209
+ display: string;
1210
+ overflowWrap: overflowWrap;
1211
+ maxWidth: string;
1212
+ wordWrap: wordWrapText;
1213
+ wordBreak: wordBreak;
1214
+ };
1215
+ colorFieldButtonColor: {
1216
+ fontSize: string;
1217
+ fontWeight: number;
1218
+ lineHeight: string;
1219
+ fontFamily: string;
1220
+ display: string;
1221
+ overflowWrap: overflowWrap;
1222
+ maxWidth: string;
1223
+ wordWrap: wordWrapText;
1224
+ wordBreak: wordBreak;
1225
+ };
1204
1226
  environmentBreadcrumb: {
1205
1227
  fontSize: string;
1206
1228
  fontWeight: number;
@@ -162,6 +162,18 @@ var text = _objectSpread(_objectSpread(_objectSpread({
162
162
  textTransform: 'uppercase',
163
163
  fontFamily: 'standard'
164
164
  }),
165
+ colorFieldButtonLabel: _objectSpread(_objectSpread({}, wordWrap), {}, {
166
+ fontSize: 'sm',
167
+ fontWeight: 0,
168
+ lineHeight: '12.65px',
169
+ fontFamily: 'standard'
170
+ }),
171
+ colorFieldButtonColor: _objectSpread(_objectSpread({}, wordWrap), {}, {
172
+ fontSize: 'sm',
173
+ fontWeight: 1,
174
+ lineHeight: '12.65px',
175
+ fontFamily: 'standard'
176
+ }),
165
177
  environmentBreadcrumb: environmentBreadcrumb
166
178
  }, hTags), HTags), {}, {
167
179
  inputValue: {
@@ -41,4 +41,11 @@ export interface ColorFieldProps extends TestingAttributes {
41
41
  status?: Status;
42
42
  controlProps?: ControlProps;
43
43
  labelProps?: LabelProps;
44
+ mode?: string;
45
+ }
46
+ export interface ColorFieldPreviewButtonProps extends ButtonProps {
47
+ isOpen: boolean;
48
+ bg: string;
49
+ label: string | React.ReactNode;
50
+ colorValue: string;
44
51
  }
@@ -23,6 +23,7 @@ import useField from '../../hooks/useField';
23
23
  import { getPendoID } from '../../utils/devUtils/constants/pendoID';
24
24
  import { getAriaAttributeProps } from '../../utils/docUtils/ariaAttributes';
25
25
  import PopoverContainer from '../PopoverContainer';
26
+ import ColorFieldPreviewButton from './ColorFieldPreviewButton';
26
27
  import { jsx as ___EmotionJSX } from "@emotion/react";
27
28
  var displayName = 'ColorField';
28
29
  var ColorField = /*#__PURE__*/forwardRef(function (props, ref) {
@@ -37,7 +38,8 @@ var ColorField = /*#__PURE__*/forwardRef(function (props, ref) {
37
38
  label = props.label,
38
39
  labelProps = props.labelProps,
39
40
  imperativeOnChange = props.onChange,
40
- status = props.status;
41
+ status = props.status,
42
+ mode = props.mode;
41
43
  var _getAriaAttributeProp = getAriaAttributeProps(props),
42
44
  ariaProps = _getAriaAttributeProp.ariaProps,
43
45
  nonAriaProps = _getAriaAttributeProp.nonAriaProps;
@@ -54,6 +56,14 @@ var ColorField = /*#__PURE__*/forwardRef(function (props, ref) {
54
56
  var _useColorField = useColorField(nonAriaProps, state, colorRef),
55
57
  raLabelProps = _useColorField.labelProps,
56
58
  raInputProps = _useColorField.inputProps;
59
+ var isDetailedMode = mode === 'detailed-button-preview';
60
+ var sizeValues = isDetailedMode ? {
61
+ offset: 0,
62
+ width: 220
63
+ } : {
64
+ offset: 15,
65
+ width: undefined
66
+ };
57
67
  var _useVisuallyHidden = useVisuallyHidden(),
58
68
  visuallyHiddenProps = _useVisuallyHidden.visuallyHiddenProps;
59
69
  var _useField = useField(_objectSpread(_objectSpread({}, nonAriaProps), {}, {
@@ -68,7 +78,7 @@ var ColorField = /*#__PURE__*/forwardRef(function (props, ref) {
68
78
  targetRef: triggerRef,
69
79
  overlayRef: overlayRef,
70
80
  placement: _concatInstanceProperty(_context = "".concat(direction, " ")).call(_context, align),
71
- offset: 15,
81
+ offset: sizeValues.offset,
72
82
  isOpen: popoverState.isOpen,
73
83
  onClose: popoverState.close,
74
84
  shouldUpdatePosition: true
@@ -89,13 +99,23 @@ var ColorField = /*#__PURE__*/forwardRef(function (props, ref) {
89
99
  var colorValue = _ref.colorValue;
90
100
  return _concatInstanceProperty(_context2 = _concatInstanceProperty(_context3 = _concatInstanceProperty(_context4 = "rgba(".concat(colorValue === null || colorValue === void 0 ? void 0 : colorValue.red, ", ")).call(_context4, colorValue === null || colorValue === void 0 ? void 0 : colorValue.green, ", ")).call(_context3, colorValue === null || colorValue === void 0 ? void 0 : colorValue.blue, ", ")).call(_context2, colorValue === null || colorValue === void 0 ? void 0 : colorValue.alpha, ")");
91
101
  }, []);
92
- return ___EmotionJSX(Box, _extends({}, getPendoID(displayName), fieldContainerProps), label && ___EmotionJSX(Label, fieldLabelProps), ___EmotionJSX(Button, _extends({
102
+ var defaultButtonProps = {
103
+ 'aria-label': 'Select color',
104
+ bg: getRgbaFromState(state),
105
+ onPress: handleButtonPress,
106
+ ref: triggerRef
107
+ };
108
+ return ___EmotionJSX(Box, _extends({}, getPendoID(displayName), fieldContainerProps), isDetailedMode ? ___EmotionJSX(ColorFieldPreviewButton, _extends({
109
+ isOpen: popoverState.isOpen,
110
+ colorValue: state.colorValue.toString('hex'),
111
+ label: label
112
+ }, mergeProps(defaultButtonProps, buttonProps, ariaProps, triggerProps))) : ___EmotionJSX(React.Fragment, null, label && ___EmotionJSX(Label, fieldLabelProps), ___EmotionJSX(Button, _extends({
93
113
  "aria-label": "Select color",
94
114
  bg: getRgbaFromState(state),
95
115
  onPress: handleButtonPress,
96
116
  ref: triggerRef,
97
117
  variant: "forms.colorField.container"
98
- }, mergeProps(buttonProps, ariaProps, triggerProps))), ___EmotionJSX(Box, fieldControlWrapperProps, ___EmotionJSX(Input, _extends({}, visuallyHiddenProps, fieldControlInputProps, {
118
+ }, mergeProps(buttonProps, ariaProps, triggerProps)))), ___EmotionJSX(Box, fieldControlWrapperProps, ___EmotionJSX(Input, _extends({}, visuallyHiddenProps, fieldControlInputProps, {
99
119
  role: "textbox",
100
120
  ref: colorRef,
101
121
  sx: {
@@ -118,6 +138,7 @@ var ColorField = /*#__PURE__*/forwardRef(function (props, ref) {
118
138
  contain: true,
119
139
  autoFocus: true
120
140
  }, ___EmotionJSX(SketchPicker, {
141
+ width: sizeValues.width,
121
142
  color: getRgbaFromState(state),
122
143
  onChange: handleColorChange
123
144
  }))));
@@ -11,7 +11,7 @@ import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
11
11
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
12
12
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
13
13
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context4, _context5; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context4 = ownKeys(Object(source), !0)).call(_context4, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context5 = ownKeys(Object(source))).call(_context5, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context7, _context8; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context7 = ownKeys(Object(source), !0)).call(_context7, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context8 = ownKeys(Object(source))).call(_context8, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
15
15
  import React, { useCallback, useState } from 'react';
16
16
  import DocsLayout from '../../../.storybook/storybookDocsLayout';
17
17
  import { ColorField, OverlayProvider } from '../../index';
@@ -96,4 +96,32 @@ export var Default = function Default(args) {
96
96
  onChange: handleChange
97
97
  })))
98
98
  );
99
+ };
100
+ export var DetailedButtonPreview = function DetailedButtonPreview(args) {
101
+ var _useState3 = useState('rgba(127, 0, 127, 1)'),
102
+ _useState4 = _slicedToArray(_useState3, 2),
103
+ color = _useState4[0],
104
+ setColor = _useState4[1];
105
+ var handleChange = useCallback(function (colorVal) {
106
+ if (typeof colorVal === 'string') {
107
+ setColor(colorVal);
108
+ } else if (colorVal.rgb) {
109
+ var _context4, _context5, _context6;
110
+ var rgb = colorVal.rgb;
111
+ var r = rgb.r,
112
+ b = rgb.b,
113
+ g = rgb.g,
114
+ a = rgb.a;
115
+ setColor(_concatInstanceProperty(_context4 = _concatInstanceProperty(_context5 = _concatInstanceProperty(_context6 = "rgba(".concat(r, ", ")).call(_context6, g, ", ")).call(_context5, b, ", ")).call(_context4, a, ")"));
116
+ }
117
+ }, []);
118
+ return (
119
+ // Application must be wrapped in an OverlayProvider so that it can be hidden from screen
120
+ // readers when an overlay opens.
121
+ ___EmotionJSX(OverlayProvider, null, ___EmotionJSX(ColorField, _extends({}, args, {
122
+ value: color,
123
+ onChange: handleChange,
124
+ mode: "detailed-button-preview"
125
+ })))
126
+ );
99
127
  };
@@ -10,7 +10,7 @@ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
10
10
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
11
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
12
12
  import { neutral } from '../../styles/colors';
13
- import { defaultFocus } from '../Button/Buttons.styles';
13
+ import ButtonsStyles, { defaultFocus } from '../Button/Buttons.styles';
14
14
  var container = {
15
15
  border: "1px solid ".concat(neutral['80']),
16
16
  '&:focus-visible': {
@@ -18,6 +18,30 @@ var container = {
18
18
  },
19
19
  '&.is-focused': _objectSpread({}, defaultFocus)
20
20
  };
21
+ var detailedColorView = {
22
+ height: '28px',
23
+ width: '28px',
24
+ borderRadius: '1px'
25
+ };
26
+ var detailedPreviewButton = _objectSpread(_objectSpread({}, ButtonsStyles["default"]), {}, {
27
+ height: '52px !important',
28
+ minWidth: '240px',
29
+ borderColor: 'neutral.90',
30
+ '&.is-focused': {
31
+ boxShadow: '0 1px 3px 0px rgba(0,0,0, 0.13)'
32
+ },
33
+ '&.is-pressed': {
34
+ backgroundColor: 'accent.30',
35
+ color: 'white',
36
+ boxShadow: 'unset',
37
+ 'path': {
38
+ fill: 'white'
39
+ }
40
+ },
41
+ '&.is-disabled': _objectSpread({}, defaultFocus)
42
+ });
21
43
  export default {
22
- container: container
44
+ container: container,
45
+ detailedPreviewButton: detailedPreviewButton,
46
+ detailedColorView: detailedColorView
23
47
  };
@@ -65,4 +65,23 @@ test('clicking within the popover does not close it', function () {
65
65
  // click the popover container, which has caused closing in regressions
66
66
  userEvent.click(screen.getByRole('presentation'));
67
67
  expect(screen.getByRole('presentation')).toBeInTheDocument();
68
+ });
69
+ test('renders detailed button preview mode correctly', function () {
70
+ getComponent({
71
+ mode: 'detailed-button-preview',
72
+ value: testColor1
73
+ });
74
+ expect(screen.getByText(testLabel)).toBeInTheDocument();
75
+ expect(screen.getByText(testColor1.toLocaleUpperCase())).toBeInTheDocument();
76
+ });
77
+ test('renders MenuUp / MenuDown icon correctly', function () {
78
+ getComponent({
79
+ mode: 'detailed-button-preview',
80
+ value: testColor1
81
+ });
82
+ var button = screen.getByRole('button');
83
+ userEvent.click(button);
84
+ expect(screen.getByTitle('menu-up')).toBeInTheDocument();
85
+ userEvent.click(button);
86
+ expect(screen.getByTitle('menu-down')).toBeInTheDocument();
68
87
  });
@@ -0,0 +1,51 @@
1
+ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
3
+ var _excluded = ["isOpen", "bg", "label", "colorValue"];
4
+ import React, { forwardRef } from 'react';
5
+ import { useGetTheme, useLocalOrForwardRef } from '../../hooks';
6
+ import { Box, Button, Icon, Text } from '../../index';
7
+ import { jsx as ___EmotionJSX } from "@emotion/react";
8
+ var ColorFieldPreviewButton = /*#__PURE__*/forwardRef(function (props, ref) {
9
+ var isOpen = props.isOpen,
10
+ bg = props.bg,
11
+ label = props.label,
12
+ colorValue = props.colorValue,
13
+ others = _objectWithoutProperties(props, _excluded);
14
+ var _useGetTheme = useGetTheme(),
15
+ icons = _useGetTheme.icons;
16
+ var MenuUp = icons.MenuUp,
17
+ MenuDown = icons.MenuDown;
18
+ var buttonRef = useLocalOrForwardRef(ref);
19
+ return ___EmotionJSX(Button, _extends({}, others, {
20
+ ref: buttonRef,
21
+ variant: "forms.colorField.detailedPreviewButton"
22
+ }), ___EmotionJSX(Box, {
23
+ isRow: true,
24
+ alignItems: "center",
25
+ gap: "md",
26
+ minWidth: "100%",
27
+ flexGrow: "1"
28
+ }, ___EmotionJSX(Box, {
29
+ bg: bg,
30
+ variant: "forms.colorField.detailedColorView"
31
+ }), ___EmotionJSX(Box, {
32
+ textAlign: "left",
33
+ gap: "xs"
34
+ }, ___EmotionJSX(Text, {
35
+ variant: "colorFieldButtonLabel"
36
+ }, label), ___EmotionJSX(Text, {
37
+ variant: "colorFieldButtonColor"
38
+ }, colorValue)), ___EmotionJSX(Box, {
39
+ sx: {
40
+ ml: 'auto'
41
+ },
42
+ flexGrow: "1"
43
+ }, ___EmotionJSX(Icon, {
44
+ ml: "auto",
45
+ title: {
46
+ name: isOpen ? 'menu-up' : 'menu-down'
47
+ },
48
+ icon: isOpen ? MenuUp : MenuDown
49
+ }))));
50
+ });
51
+ export default ColorFieldPreviewButton;
@@ -153,6 +153,18 @@ export var text = _objectSpread(_objectSpread(_objectSpread({
153
153
  textTransform: 'uppercase',
154
154
  fontFamily: 'standard'
155
155
  }),
156
+ colorFieldButtonLabel: _objectSpread(_objectSpread({}, wordWrap), {}, {
157
+ fontSize: 'sm',
158
+ fontWeight: 0,
159
+ lineHeight: '12.65px',
160
+ fontFamily: 'standard'
161
+ }),
162
+ colorFieldButtonColor: _objectSpread(_objectSpread({}, wordWrap), {}, {
163
+ fontSize: 'sm',
164
+ fontWeight: 1,
165
+ lineHeight: '12.65px',
166
+ fontFamily: 'standard'
167
+ }),
156
168
  environmentBreadcrumb: environmentBreadcrumb
157
169
  }, hTags), HTags), {}, {
158
170
  inputValue: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "2.102.0-alpha.4",
3
+ "version": "2.102.0",
4
4
  "description": "React component library for Ping Identity's design system",
5
5
  "repository": {
6
6
  "type": "git",