@pingux/astro 1.27.0-alpha.0 → 1.27.0-alpha.2
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/lib/cjs/components/ArrayField/ArrayField.stories.js +6 -6
- package/lib/cjs/components/FileInputField/FileInputField.js +8 -5
- package/lib/cjs/components/LinkSelectField/LinkSelectField.js +1 -1
- package/lib/cjs/components/ListBox/Option.js +4 -1
- package/lib/cjs/components/MenuItem/MenuItem.js +2 -1
- package/lib/cjs/components/Messages/Message.js +2 -1
- package/lib/cjs/components/PageHeader/PageHeader.js +7 -1
- package/lib/cjs/components/SelectField/SelectField.js +1 -1
- package/lib/cjs/components/Tab/Tab.js +15 -4
- package/lib/cjs/components/TabPicker/TabPicker.js +2 -2
- package/lib/cjs/hooks/useOverlayPanelState/useOverlayPanelState.test.js +3 -2
- package/lib/cjs/hooks/useSelectField/useSelectField.js +9 -1
- package/lib/cjs/recipes/CountryPicker.stories.js +25 -12
- package/lib/cjs/recipes/EditableInput.stories.js +55 -46
- package/lib/cjs/recipes/PageHeader.stories.js +73 -0
- package/lib/components/ArrayField/ArrayField.stories.js +6 -6
- package/lib/components/FileInputField/FileInputField.js +8 -5
- package/lib/components/LinkSelectField/LinkSelectField.js +1 -1
- package/lib/components/ListBox/Option.js +4 -1
- package/lib/components/MenuItem/MenuItem.js +2 -1
- package/lib/components/Messages/Message.js +2 -1
- package/lib/components/PageHeader/PageHeader.js +8 -1
- package/lib/components/SelectField/SelectField.js +1 -1
- package/lib/components/Tab/Tab.js +15 -4
- package/lib/components/TabPicker/TabPicker.js +2 -2
- package/lib/hooks/useOverlayPanelState/useOverlayPanelState.test.js +3 -2
- package/lib/hooks/useSelectField/useSelectField.js +9 -1
- package/lib/recipes/CountryPicker.stories.js +24 -12
- package/lib/recipes/EditableInput.stories.js +55 -46
- package/lib/recipes/PageHeader.stories.js +53 -0
- package/package.json +2 -2
@@ -207,26 +207,26 @@ var Controlled = function Controlled() {
|
|
207
207
|
fieldValues = _React$useState2[0],
|
208
208
|
setFieldValues = _React$useState2[1];
|
209
209
|
|
210
|
-
function handleOnChange(values) {
|
210
|
+
var handleOnChange = function handleOnChange(values) {
|
211
211
|
setFieldValues(values);
|
212
|
-
}
|
212
|
+
};
|
213
213
|
|
214
|
-
function handleOnAdd() {
|
214
|
+
var handleOnAdd = function handleOnAdd() {
|
215
215
|
setFieldValues(function (oldValues) {
|
216
216
|
var _context;
|
217
217
|
|
218
218
|
return (0, _concat["default"])(_context = []).call(_context, oldValues, [defaultEmptyField]);
|
219
219
|
});
|
220
|
-
}
|
220
|
+
};
|
221
221
|
|
222
|
-
function handleOnDelete(fieldId) {
|
222
|
+
var handleOnDelete = function handleOnDelete(fieldId) {
|
223
223
|
setFieldValues(function (oldValues) {
|
224
224
|
return (0, _filter["default"])(oldValues).call(oldValues, function (_ref2) {
|
225
225
|
var id = _ref2.id;
|
226
226
|
return id !== fieldId;
|
227
227
|
});
|
228
228
|
});
|
229
|
-
}
|
229
|
+
};
|
230
230
|
|
231
231
|
return (0, _react2.jsx)(_index.ArrayField, {
|
232
232
|
value: fieldValues,
|
@@ -230,7 +230,10 @@ var FileInputField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
230
230
|
variant: "boxes.fileInputFieldWrapper"
|
231
231
|
}, (0, _utils.mergeProps)(fieldContainerProps, others), {
|
232
232
|
className: classNames
|
233
|
-
}, getRootProps()
|
233
|
+
}, getRootProps(), {
|
234
|
+
// to pass accessibility test, this removes focusable dependents
|
235
|
+
role: "none"
|
236
|
+
}), (0, _react2.jsx)(_index.Input, (0, _extends2["default"])({}, (0, _utils.mergeProps)(visuallyHiddenProps, fieldControlProps, getInputProps()), {
|
234
237
|
"aria-label": "File Input",
|
235
238
|
multiple: isMultiple,
|
236
239
|
onChange: handleOnChange,
|
@@ -294,8 +297,8 @@ FileInputField.propTypes = {
|
|
294
297
|
* */
|
295
298
|
fileList: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
296
299
|
fileObj: _propTypes["default"].shape({}),
|
297
|
-
id: _propTypes["default"].string.
|
298
|
-
name: _propTypes["default"].string.
|
300
|
+
id: _propTypes["default"].string.isRequired,
|
301
|
+
name: _propTypes["default"].string.isRequired,
|
299
302
|
downloadLink: _propTypes["default"].string,
|
300
303
|
status: _propTypes["default"].oneOf((0, _values["default"])(_statuses["default"]))
|
301
304
|
})),
|
@@ -303,8 +306,8 @@ FileInputField.propTypes = {
|
|
303
306
|
/** Default array of objects for uploaded files. */
|
304
307
|
defaultFileList: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
305
308
|
fileObj: _propTypes["default"].shape({}),
|
306
|
-
id: _propTypes["default"].string.
|
307
|
-
name: _propTypes["default"].string.
|
309
|
+
id: _propTypes["default"].string.isRequired,
|
310
|
+
name: _propTypes["default"].string.isRequired,
|
308
311
|
downloadLink: _propTypes["default"].string,
|
309
312
|
status: _propTypes["default"].oneOf((0, _values["default"])(_statuses["default"]))
|
310
313
|
})),
|
@@ -168,7 +168,7 @@ LinkSelectField.propTypes = {
|
|
168
168
|
* *For performance reasons, use this prop instead of Array.map when iteratively rendering Items*.
|
169
169
|
* For use with [dynamic collections](https://react-spectrum.adobe.com/react-stately/collections.html#dynamic-collections).
|
170
170
|
*/
|
171
|
-
items: _propTypes["default"].arrayOf(_propTypes["default"].
|
171
|
+
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({})),
|
172
172
|
|
173
173
|
/** The label for the select element. */
|
174
174
|
label: _propTypes["default"].node,
|
@@ -124,7 +124,10 @@ Option.propTypes = {
|
|
124
124
|
hasVirtualFocus: _propTypes["default"].bool,
|
125
125
|
item: _propTypes["default"].shape({
|
126
126
|
key: _propTypes["default"].string,
|
127
|
-
props: _propTypes["default"].shape({
|
127
|
+
props: _propTypes["default"].shape({
|
128
|
+
'data-id': _propTypes["default"].string,
|
129
|
+
isSeparator: _propTypes["default"].bool
|
130
|
+
}),
|
128
131
|
rendered: _propTypes["default"].node
|
129
132
|
}),
|
130
133
|
state: _propTypes["default"].shape({
|
@@ -174,7 +174,8 @@ MenuItem.propTypes = {
|
|
174
174
|
key: _propTypes["default"].string,
|
175
175
|
props: _propTypes["default"].shape({
|
176
176
|
'data-id': _propTypes["default"].string,
|
177
|
-
isSeparator: _propTypes["default"].bool
|
177
|
+
isSeparator: _propTypes["default"].bool,
|
178
|
+
isPressed: _propTypes["default"].bool
|
178
179
|
}),
|
179
180
|
rendered: _propTypes["default"].node,
|
180
181
|
isDisabled: _propTypes["default"].bool
|
@@ -184,7 +184,8 @@ Message.propTypes = {
|
|
184
184
|
icon: _propTypes["default"].elementType,
|
185
185
|
|
186
186
|
/* Hides the message with an animated transition */
|
187
|
-
isHidden: _propTypes["default"].bool
|
187
|
+
isHidden: _propTypes["default"].bool,
|
188
|
+
'data-id': _propTypes["default"].string
|
188
189
|
})
|
189
190
|
}),
|
190
191
|
|
@@ -38,11 +38,17 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
38
38
|
|
39
39
|
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; }
|
40
40
|
|
41
|
+
/**
|
42
|
+
* A `Page Header` is a composed component using text and icon button.
|
43
|
+
* The component is separated from the body and appears at the top.
|
44
|
+
* For customization,
|
45
|
+
* please see [Page Header](./?path=/story/recipes-page-header--default) recipe docs.
|
46
|
+
*/
|
41
47
|
var PageHeader = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
42
48
|
var title = props.title,
|
43
49
|
children = props.children,
|
44
50
|
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
45
|
-
(0, _hooks.useDeprecationWarning)('The Page Header component will be deprecated in Astro-UI 2.0.0.');
|
51
|
+
(0, _hooks.useDeprecationWarning)('The Page Header component will be deprecated in Astro-UI 2.0.0. Use Page Header recipe instead.');
|
46
52
|
return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
47
53
|
isRow: true,
|
48
54
|
justifyContent: "space-between",
|
@@ -104,7 +104,7 @@ SelectField.propTypes = {
|
|
104
104
|
* *For performance reasons, use this prop instead of Array.map when iteratively rendering Items*.
|
105
105
|
* For use with [dynamic collections](https://react-spectrum.adobe.com/react-stately/collections.html#dynamic-collections).
|
106
106
|
*/
|
107
|
-
items: _propTypes["default"].arrayOf(_propTypes["default"].
|
107
|
+
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({})),
|
108
108
|
|
109
109
|
/** The label for the select element. */
|
110
110
|
label: _propTypes["default"].node,
|
@@ -46,7 +46,7 @@ var _ = require("../..");
|
|
46
46
|
|
47
47
|
var _react2 = require("@emotion/react");
|
48
48
|
|
49
|
-
var _excluded = ["icon", "isDisabled", "separator", "tabLabelProps", "tabLineProps", "content", "titleAttr"];
|
49
|
+
var _excluded = ["icon", "isDisabled", "separator", "tabLabelProps", "tabLineProps", "content", "titleAttr", "title"];
|
50
50
|
|
51
51
|
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); }
|
52
52
|
|
@@ -74,6 +74,7 @@ var CollectionTab = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
74
74
|
tabLineProps = itemProps.tabLineProps,
|
75
75
|
content = itemProps.content,
|
76
76
|
titleAttr = itemProps.titleAttr,
|
77
|
+
title = itemProps.title,
|
77
78
|
otherItemProps = (0, _objectWithoutProperties2["default"])(itemProps, _excluded);
|
78
79
|
var state = (0, _react.useContext)(_Tabs.TabsContext);
|
79
80
|
var isDisabled = tabsDisabled || tabDisabled || state.disabledKeys.has(key);
|
@@ -149,9 +150,19 @@ CollectionTab.propTypes = {
|
|
149
150
|
isDisabled: _propTypes["default"].bool,
|
150
151
|
item: _propTypes["default"].shape({
|
151
152
|
key: _propTypes["default"].string,
|
152
|
-
props: _propTypes["default"].shape({
|
153
|
-
|
154
|
-
|
153
|
+
props: _propTypes["default"].shape({
|
154
|
+
icon: _propTypes["default"].shape({}),
|
155
|
+
isDisabled: _propTypes["default"].bool,
|
156
|
+
textValue: _propTypes["default"].string,
|
157
|
+
tabLineProps: _propTypes["default"].shape({}),
|
158
|
+
tabLabelProps: _propTypes["default"].shape({}),
|
159
|
+
content: _propTypes["default"].shape({}),
|
160
|
+
titleAttr: _propTypes["default"].string,
|
161
|
+
title: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].string, _propTypes["default"].object]),
|
162
|
+
separator: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].bool]),
|
163
|
+
list: _propTypes["default"].arrayOf(_propTypes["default"].shape({}))
|
164
|
+
}),
|
165
|
+
rendered: _propTypes["default"].node
|
155
166
|
}),
|
156
167
|
mode: _propTypes["default"].oneOf(['default', 'tooltip', 'list']),
|
157
168
|
orientation: _propTypes["default"].oneOf(['horizontal', 'vertical']),
|
@@ -246,10 +246,10 @@ TabPicker.propTypes = {
|
|
246
246
|
state: _propTypes["default"].shape({
|
247
247
|
collection: _propTypes["default"].shape({}),
|
248
248
|
selectedKey: _propTypes["default"].string,
|
249
|
-
setSelectedKey: _propTypes["default"]
|
249
|
+
setSelectedKey: _propTypes["default"].func,
|
250
250
|
selectionManager: _propTypes["default"].shape({
|
251
251
|
focusedKey: _propTypes["default"].string,
|
252
|
-
setFocusedKey: _propTypes["default"]
|
252
|
+
setFocusedKey: _propTypes["default"].func
|
253
253
|
})
|
254
254
|
})
|
255
255
|
};
|
@@ -12,7 +12,7 @@ test('default useOverlayPanelState', function () {
|
|
12
12
|
}),
|
13
13
|
result = _renderHook.result;
|
14
14
|
|
15
|
-
|
15
|
+
var obj = {
|
16
16
|
state: {
|
17
17
|
open: expect.any(Function),
|
18
18
|
close: expect.any(Function),
|
@@ -20,5 +20,6 @@ test('default useOverlayPanelState', function () {
|
|
20
20
|
isOpen: expect.any(Boolean)
|
21
21
|
},
|
22
22
|
onClose: expect.any(Function)
|
23
|
-
}
|
23
|
+
};
|
24
|
+
expect(result.current).toEqual(obj);
|
24
25
|
});
|
@@ -143,7 +143,15 @@ var useSelectField = function useSelectField(props, ref) {
|
|
143
143
|
labelProps = _useSelect.labelProps,
|
144
144
|
triggerProps = _useSelect.triggerProps,
|
145
145
|
valueProps = _useSelect.valueProps,
|
146
|
-
menuProps = _useSelect.menuProps;
|
146
|
+
menuProps = _useSelect.menuProps; // The following props are being passed into multiple
|
147
|
+
// DOM elements that leads to multiple test failures
|
148
|
+
// and these props are never used in any components
|
149
|
+
// that depend on useSelectField
|
150
|
+
|
151
|
+
|
152
|
+
delete menuProps.shouldSelectOnPressUp;
|
153
|
+
delete menuProps.shouldFocusOnHover;
|
154
|
+
delete menuProps.disallowEmptySelection;
|
147
155
|
|
148
156
|
var _useField = (0, _.useField)(_objectSpread(_objectSpread({}, props), {}, {
|
149
157
|
placeholder: props.labelMode === _constants.modes.FLOAT ? '' : placeholder,
|
@@ -50,6 +50,28 @@ var validatePhoneNumber = function validatePhoneNumber(str) {
|
|
50
50
|
return reg.test(str);
|
51
51
|
};
|
52
52
|
|
53
|
+
var sx = {
|
54
|
+
wrapperBox: {
|
55
|
+
width: '100%',
|
56
|
+
maxWidth: 500,
|
57
|
+
position: 'relative'
|
58
|
+
},
|
59
|
+
comboBoxFieldWrapperOpen: {
|
60
|
+
position: 'absolute',
|
61
|
+
transition: '0.2s width ease',
|
62
|
+
width: '100%'
|
63
|
+
},
|
64
|
+
comboBoxFieldWrapperClose: {
|
65
|
+
position: 'absolute',
|
66
|
+
transition: '0.2s width ease',
|
67
|
+
width: '110px'
|
68
|
+
},
|
69
|
+
inputWrapper: {
|
70
|
+
width: '100%',
|
71
|
+
marginLeft: '110px'
|
72
|
+
}
|
73
|
+
};
|
74
|
+
|
53
75
|
var Default = function Default() {
|
54
76
|
var _useState = (0, _react.useState)(false),
|
55
77
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
@@ -117,22 +139,14 @@ var Default = function Default() {
|
|
117
139
|
|
118
140
|
return (0, _react2.jsx)(_Box["default"], {
|
119
141
|
isRow: true,
|
120
|
-
sx:
|
121
|
-
width: '100%',
|
122
|
-
maxWidth: 500,
|
123
|
-
position: 'relative'
|
124
|
-
}
|
142
|
+
sx: sx.wrapperBox
|
125
143
|
}, (0, _react2.jsx)(_ComboBoxField["default"], {
|
126
144
|
mt: -5,
|
127
145
|
width: "100%",
|
128
146
|
isOpen: isOpen,
|
129
147
|
onOpenChange: setIsOpen,
|
130
148
|
wrapperProps: {
|
131
|
-
sx:
|
132
|
-
position: 'absolute',
|
133
|
-
transition: '0.2s width ease',
|
134
|
-
width: isOpen ? '100%' : 110
|
135
|
-
}
|
149
|
+
sx: isOpen ? sx.comboBoxFieldWrapperOpen : sx.comboBoxFieldWrapperClose
|
136
150
|
},
|
137
151
|
controlProps: {
|
138
152
|
'aria-label': 'Country Picker'
|
@@ -151,8 +165,7 @@ var Default = function Default() {
|
|
151
165
|
key: item[0]
|
152
166
|
}, (0, _concat["default"])(_context = (0, _concat["default"])(_context2 = "".concat(item[1].name)).call(_context2, item[1].name !== item[1]["native"] ? " (".concat(item[1]["native"], ")") : '', " +")).call(_context, item[1].phone.split(',')[0]));
|
153
167
|
}), (0, _react2.jsx)(_Box["default"], {
|
154
|
-
|
155
|
-
ml: 110
|
168
|
+
sx: sx.inputWrapper
|
156
169
|
}, (0, _react2.jsx)(_Input["default"], {
|
157
170
|
placeholder: "Phone number...",
|
158
171
|
onChange: onPhoneNumberValueChange,
|
@@ -70,6 +70,48 @@ var inputProps = {
|
|
70
70
|
label: 'Example label',
|
71
71
|
ariaLabel: 'Example aria label'
|
72
72
|
};
|
73
|
+
var sx = {
|
74
|
+
editablePreview: {
|
75
|
+
whiteSpace: 'pre-line',
|
76
|
+
width: '100%',
|
77
|
+
overflowWrap: 'break-word',
|
78
|
+
minHeight: '45px',
|
79
|
+
paddingLeft: 'xs',
|
80
|
+
justifyContent: 'flex-end',
|
81
|
+
paddingBottom: 'xs',
|
82
|
+
borderBottomColor: 'active',
|
83
|
+
color: 'neutral.10',
|
84
|
+
fontSize: 'md',
|
85
|
+
fontWeight: 1,
|
86
|
+
lineHeight: '18px',
|
87
|
+
'&:focus': {
|
88
|
+
outline: 'none',
|
89
|
+
boxShadow: 'focus',
|
90
|
+
borderColor: 'active',
|
91
|
+
borderWidth: '1px',
|
92
|
+
borderStyle: 'solid'
|
93
|
+
}
|
94
|
+
},
|
95
|
+
editableInputWrapper: {
|
96
|
+
marginRight: '30px',
|
97
|
+
flexGrow: 1
|
98
|
+
},
|
99
|
+
editableInpuTextArea: {
|
100
|
+
maxHeight: '150px'
|
101
|
+
},
|
102
|
+
editableControlWrapper: {
|
103
|
+
position: 'absolute',
|
104
|
+
right: '0',
|
105
|
+
top: '27.5%',
|
106
|
+
alignItems: 'center',
|
107
|
+
justifyContent: 'space-between'
|
108
|
+
},
|
109
|
+
editableControlIconButton: {
|
110
|
+
marginRight: 'md',
|
111
|
+
width: '20px',
|
112
|
+
height: '20px'
|
113
|
+
}
|
114
|
+
};
|
73
115
|
|
74
116
|
var Default = function Default() {
|
75
117
|
return (0, _react2.jsx)(Editable, {
|
@@ -127,6 +169,13 @@ var EditablePreview = function EditablePreview() {
|
|
127
169
|
hasFocus = _useState4[0],
|
128
170
|
setFocus = _useState4[1];
|
129
171
|
|
172
|
+
var editablePreviewDynamicSx = {
|
173
|
+
backgroundColor: hasFocus ? 'accent.95' : 'white',
|
174
|
+
borderBottom: editableContext.isEditing ? '0px' : '1px dashed',
|
175
|
+
'&:hover': {
|
176
|
+
background: editableContext.isEditing ? 'white' : 'accent.95'
|
177
|
+
}
|
178
|
+
};
|
130
179
|
(0, _react.useEffect)(function () {
|
131
180
|
if (hasFocus && editableContext.isEditing) {
|
132
181
|
setFocus(false);
|
@@ -153,8 +202,8 @@ var EditablePreview = function EditablePreview() {
|
|
153
202
|
"aria-hidden": editableContext.isEditing,
|
154
203
|
onClick: handleClick,
|
155
204
|
onKeyDown: handleKeyDown,
|
156
|
-
"aria-readonly": "false",
|
157
205
|
"aria-label": "Inline editable text field",
|
206
|
+
role: "textbox",
|
158
207
|
onFocus: function onFocus() {
|
159
208
|
return setFocus(true);
|
160
209
|
},
|
@@ -162,32 +211,7 @@ var EditablePreview = function EditablePreview() {
|
|
162
211
|
return setFocus(false);
|
163
212
|
},
|
164
213
|
placeholder: "Click or press enter to edit text",
|
165
|
-
sx: {
|
166
|
-
whiteSpace: 'pre-line',
|
167
|
-
backgroundColor: hasFocus ? 'accent.95' : 'white',
|
168
|
-
width: '100%',
|
169
|
-
overflowWrap: 'break-word',
|
170
|
-
minHeight: '45px',
|
171
|
-
paddingLeft: 'xs',
|
172
|
-
justifyContent: 'flex-end',
|
173
|
-
paddingBottom: 'xs',
|
174
|
-
borderBottom: editableContext.isEditing ? '0px' : '1px dashed',
|
175
|
-
borderBottomColor: 'active',
|
176
|
-
color: 'neutral.10',
|
177
|
-
fontSize: 'md',
|
178
|
-
fontWeight: 1,
|
179
|
-
lineHeight: '18px',
|
180
|
-
'&:hover': {
|
181
|
-
background: editableContext.isEditing ? 'white' : 'accent.95'
|
182
|
-
},
|
183
|
-
'&:focus': {
|
184
|
-
outline: 'none',
|
185
|
-
boxShadow: 'focus',
|
186
|
-
borderColor: 'active',
|
187
|
-
borderWidth: '1px',
|
188
|
-
borderStyle: 'solid'
|
189
|
-
}
|
190
|
-
}
|
214
|
+
sx: _objectSpread(_objectSpread({}, editablePreviewDynamicSx), sx.editablePreview)
|
191
215
|
}, editableContext.value);
|
192
216
|
};
|
193
217
|
/**
|
@@ -256,10 +280,7 @@ var EditableInput = function EditableInput(props) {
|
|
256
280
|
return (0, _react2.jsx)(_index.Box, {
|
257
281
|
display: editableContext.isEditing ? 'flex' : 'none',
|
258
282
|
"aria-hidden": !editableContext.isEditing,
|
259
|
-
sx:
|
260
|
-
marginRight: '30px',
|
261
|
-
flexGrow: 1
|
262
|
-
}
|
283
|
+
sx: sx.editableInputWrapper
|
263
284
|
}, (0, _react2.jsx)(_index.TextAreaField, {
|
264
285
|
rows: 1,
|
265
286
|
ref: editableInput,
|
@@ -270,9 +291,7 @@ var EditableInput = function EditableInput(props) {
|
|
270
291
|
onKeyDown: handleKeyDown,
|
271
292
|
value: editingValue,
|
272
293
|
"aria-label": ariaLabel,
|
273
|
-
sx:
|
274
|
-
maxHeight: '150px'
|
275
|
-
},
|
294
|
+
sx: sx.editableInpuTextArea,
|
276
295
|
isUnresizable: true
|
277
296
|
}));
|
278
297
|
};
|
@@ -323,22 +342,12 @@ var EditableControl = function EditableControl(props) {
|
|
323
342
|
display: editableContext.isEditing ? 'flex' : 'none',
|
324
343
|
"aria-hidden": !editableContext.isEditing,
|
325
344
|
isRow: true,
|
326
|
-
sx:
|
327
|
-
position: 'absolute',
|
328
|
-
right: '0',
|
329
|
-
top: '27.5%',
|
330
|
-
alignItems: 'center',
|
331
|
-
justifyContent: 'space-between'
|
332
|
-
}
|
345
|
+
sx: sx.editableControlWrapper
|
333
346
|
}, (0, _react2.jsx)(_index.IconButton, {
|
334
347
|
onPress: handleSubmit,
|
335
348
|
"aria-label": confirmBtn.ariaLabel,
|
336
349
|
variant: confirmBtn.variant,
|
337
|
-
|
338
|
-
sx: {
|
339
|
-
width: '20px',
|
340
|
-
height: '20px'
|
341
|
-
}
|
350
|
+
sx: sx.editableControlIconButton
|
342
351
|
}, (0, _react2.jsx)(_index.Icon, {
|
343
352
|
icon: _CheckIcon["default"]
|
344
353
|
})), (0, _react2.jsx)(_index.IconButton, {
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
8
|
+
value: true
|
9
|
+
});
|
10
|
+
|
11
|
+
exports["default"] = exports.Default = void 0;
|
12
|
+
|
13
|
+
var _react = _interopRequireDefault(require("react"));
|
14
|
+
|
15
|
+
var _PlusIcon = _interopRequireDefault(require("mdi-react/PlusIcon"));
|
16
|
+
|
17
|
+
var _index = require("../index");
|
18
|
+
|
19
|
+
var _react2 = require("@emotion/react");
|
20
|
+
|
21
|
+
var _default = {
|
22
|
+
title: 'Recipes/Page Header'
|
23
|
+
};
|
24
|
+
exports["default"] = _default;
|
25
|
+
|
26
|
+
var Default = function Default() {
|
27
|
+
var heading = 'Title of the Page';
|
28
|
+
var description = 'The description of the page. The description of the page. The description of the page. The description of the page. The description of the page. The description of the page. The description of the page. The description of the page. The description of the page.';
|
29
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Box, {
|
30
|
+
align: "center",
|
31
|
+
isRow: true,
|
32
|
+
mb: "xs",
|
33
|
+
role: "heading",
|
34
|
+
"aria-level": "1"
|
35
|
+
}, (0, _react2.jsx)(_index.Text, {
|
36
|
+
variant: "title",
|
37
|
+
fontWeight: 3
|
38
|
+
}, heading), (0, _react2.jsx)(_index.Button, {
|
39
|
+
variant: "inlinePrimary",
|
40
|
+
ml: "sm"
|
41
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
42
|
+
icon: _PlusIcon["default"],
|
43
|
+
color: "white",
|
44
|
+
size: 13,
|
45
|
+
mr: "4px"
|
46
|
+
}), "\xA0", "Add")), (0, _react2.jsx)(_index.Text, {
|
47
|
+
variant: "bodyWeak"
|
48
|
+
}, description)), (0, _react2.jsx)(_index.Box, {
|
49
|
+
mt: "xl"
|
50
|
+
}, (0, _react2.jsx)(_index.Box, {
|
51
|
+
align: "center",
|
52
|
+
isRow: true,
|
53
|
+
mb: "xs",
|
54
|
+
role: "heading",
|
55
|
+
"aria-level": "1"
|
56
|
+
}, (0, _react2.jsx)(_index.Text, {
|
57
|
+
variant: "title",
|
58
|
+
fontWeight: 3
|
59
|
+
}, heading), (0, _react2.jsx)(_index.IconButton, {
|
60
|
+
"aria-label": "icon button",
|
61
|
+
ml: "sm",
|
62
|
+
mt: "3px",
|
63
|
+
variant: "inverted"
|
64
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
65
|
+
icon: _PlusIcon["default"],
|
66
|
+
color: "white",
|
67
|
+
size: 13
|
68
|
+
}))), (0, _react2.jsx)(_index.Text, {
|
69
|
+
variant: "bodyWeak"
|
70
|
+
}, description)));
|
71
|
+
};
|
72
|
+
|
73
|
+
exports.Default = Default;
|
@@ -182,26 +182,26 @@ export var Controlled = function Controlled() {
|
|
182
182
|
fieldValues = _React$useState2[0],
|
183
183
|
setFieldValues = _React$useState2[1];
|
184
184
|
|
185
|
-
function handleOnChange(values) {
|
185
|
+
var handleOnChange = function handleOnChange(values) {
|
186
186
|
setFieldValues(values);
|
187
|
-
}
|
187
|
+
};
|
188
188
|
|
189
|
-
function handleOnAdd() {
|
189
|
+
var handleOnAdd = function handleOnAdd() {
|
190
190
|
setFieldValues(function (oldValues) {
|
191
191
|
var _context;
|
192
192
|
|
193
193
|
return _concatInstanceProperty(_context = []).call(_context, oldValues, [defaultEmptyField]);
|
194
194
|
});
|
195
|
-
}
|
195
|
+
};
|
196
196
|
|
197
|
-
function handleOnDelete(fieldId) {
|
197
|
+
var handleOnDelete = function handleOnDelete(fieldId) {
|
198
198
|
setFieldValues(function (oldValues) {
|
199
199
|
return _filterInstanceProperty(oldValues).call(oldValues, function (_ref2) {
|
200
200
|
var id = _ref2.id;
|
201
201
|
return id !== fieldId;
|
202
202
|
});
|
203
203
|
});
|
204
|
-
}
|
204
|
+
};
|
205
205
|
|
206
206
|
return ___EmotionJSX(ArrayField, {
|
207
207
|
value: fieldValues,
|
@@ -180,7 +180,10 @@ var FileInputField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
180
180
|
variant: "boxes.fileInputFieldWrapper"
|
181
181
|
}, mergeProps(fieldContainerProps, others), {
|
182
182
|
className: classNames
|
183
|
-
}, getRootProps()
|
183
|
+
}, getRootProps(), {
|
184
|
+
// to pass accessibility test, this removes focusable dependents
|
185
|
+
role: "none"
|
186
|
+
}), ___EmotionJSX(Input, _extends({}, mergeProps(visuallyHiddenProps, fieldControlProps, getInputProps()), {
|
184
187
|
"aria-label": "File Input",
|
185
188
|
multiple: isMultiple,
|
186
189
|
onChange: handleOnChange,
|
@@ -244,8 +247,8 @@ FileInputField.propTypes = {
|
|
244
247
|
* */
|
245
248
|
fileList: PropTypes.arrayOf(PropTypes.shape({
|
246
249
|
fileObj: PropTypes.shape({}),
|
247
|
-
id: PropTypes.string.
|
248
|
-
name: PropTypes.string.
|
250
|
+
id: PropTypes.string.isRequired,
|
251
|
+
name: PropTypes.string.isRequired,
|
249
252
|
downloadLink: PropTypes.string,
|
250
253
|
status: PropTypes.oneOf(_Object$values(statuses))
|
251
254
|
})),
|
@@ -253,8 +256,8 @@ FileInputField.propTypes = {
|
|
253
256
|
/** Default array of objects for uploaded files. */
|
254
257
|
defaultFileList: PropTypes.arrayOf(PropTypes.shape({
|
255
258
|
fileObj: PropTypes.shape({}),
|
256
|
-
id: PropTypes.string.
|
257
|
-
name: PropTypes.string.
|
259
|
+
id: PropTypes.string.isRequired,
|
260
|
+
name: PropTypes.string.isRequired,
|
258
261
|
downloadLink: PropTypes.string,
|
259
262
|
status: PropTypes.oneOf(_Object$values(statuses))
|
260
263
|
})),
|
@@ -131,7 +131,7 @@ LinkSelectField.propTypes = {
|
|
131
131
|
* *For performance reasons, use this prop instead of Array.map when iteratively rendering Items*.
|
132
132
|
* For use with [dynamic collections](https://react-spectrum.adobe.com/react-stately/collections.html#dynamic-collections).
|
133
133
|
*/
|
134
|
-
items: PropTypes.arrayOf(PropTypes.
|
134
|
+
items: PropTypes.arrayOf(PropTypes.shape({})),
|
135
135
|
|
136
136
|
/** The label for the select element. */
|
137
137
|
label: PropTypes.node,
|
@@ -86,7 +86,10 @@ Option.propTypes = {
|
|
86
86
|
hasVirtualFocus: PropTypes.bool,
|
87
87
|
item: PropTypes.shape({
|
88
88
|
key: PropTypes.string,
|
89
|
-
props: PropTypes.shape({
|
89
|
+
props: PropTypes.shape({
|
90
|
+
'data-id': PropTypes.string,
|
91
|
+
isSeparator: PropTypes.bool
|
92
|
+
}),
|
90
93
|
rendered: PropTypes.node
|
91
94
|
}),
|
92
95
|
state: PropTypes.shape({
|
@@ -141,7 +141,8 @@ MenuItem.propTypes = {
|
|
141
141
|
key: PropTypes.string,
|
142
142
|
props: PropTypes.shape({
|
143
143
|
'data-id': PropTypes.string,
|
144
|
-
isSeparator: PropTypes.bool
|
144
|
+
isSeparator: PropTypes.bool,
|
145
|
+
isPressed: PropTypes.bool
|
145
146
|
}),
|
146
147
|
rendered: PropTypes.node,
|
147
148
|
isDisabled: PropTypes.bool
|
@@ -6,13 +6,20 @@ import PropTypes from 'prop-types';
|
|
6
6
|
import Text from '../Text/Text';
|
7
7
|
import Box from '../Box/Box';
|
8
8
|
import { useDeprecationWarning } from '../../hooks';
|
9
|
+
/**
|
10
|
+
* A `Page Header` is a composed component using text and icon button.
|
11
|
+
* The component is separated from the body and appears at the top.
|
12
|
+
* For customization,
|
13
|
+
* please see [Page Header](./?path=/story/recipes-page-header--default) recipe docs.
|
14
|
+
*/
|
15
|
+
|
9
16
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
10
17
|
var PageHeader = /*#__PURE__*/forwardRef(function (props, ref) {
|
11
18
|
var title = props.title,
|
12
19
|
children = props.children,
|
13
20
|
others = _objectWithoutProperties(props, _excluded);
|
14
21
|
|
15
|
-
useDeprecationWarning('The Page Header component will be deprecated in Astro-UI 2.0.0.');
|
22
|
+
useDeprecationWarning('The Page Header component will be deprecated in Astro-UI 2.0.0. Use Page Header recipe instead.');
|
16
23
|
return ___EmotionJSX(Box, _extends({
|
17
24
|
isRow: true,
|
18
25
|
justifyContent: "space-between",
|
@@ -75,7 +75,7 @@ SelectField.propTypes = {
|
|
75
75
|
* *For performance reasons, use this prop instead of Array.map when iteratively rendering Items*.
|
76
76
|
* For use with [dynamic collections](https://react-spectrum.adobe.com/react-stately/collections.html#dynamic-collections).
|
77
77
|
*/
|
78
|
-
items: PropTypes.arrayOf(PropTypes.
|
78
|
+
items: PropTypes.arrayOf(PropTypes.shape({})),
|
79
79
|
|
80
80
|
/** The label for the select element. */
|
81
81
|
label: PropTypes.node,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
2
2
|
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
3
|
-
var _excluded = ["icon", "isDisabled", "separator", "tabLabelProps", "tabLineProps", "content", "titleAttr"];
|
3
|
+
var _excluded = ["icon", "isDisabled", "separator", "tabLabelProps", "tabLineProps", "content", "titleAttr", "title"];
|
4
4
|
import React, { forwardRef, useContext, useImperativeHandle, useRef } from 'react';
|
5
5
|
import PropTypes from 'prop-types';
|
6
6
|
import { useTab } from '@react-aria/tabs';
|
@@ -38,6 +38,7 @@ export var CollectionTab = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
38
38
|
tabLineProps = itemProps.tabLineProps,
|
39
39
|
content = itemProps.content,
|
40
40
|
titleAttr = itemProps.titleAttr,
|
41
|
+
title = itemProps.title,
|
41
42
|
otherItemProps = _objectWithoutProperties(itemProps, _excluded);
|
42
43
|
|
43
44
|
var state = useContext(TabsContext);
|
@@ -113,9 +114,19 @@ CollectionTab.propTypes = {
|
|
113
114
|
isDisabled: PropTypes.bool,
|
114
115
|
item: PropTypes.shape({
|
115
116
|
key: PropTypes.string,
|
116
|
-
props: PropTypes.shape({
|
117
|
-
|
118
|
-
|
117
|
+
props: PropTypes.shape({
|
118
|
+
icon: PropTypes.shape({}),
|
119
|
+
isDisabled: PropTypes.bool,
|
120
|
+
textValue: PropTypes.string,
|
121
|
+
tabLineProps: PropTypes.shape({}),
|
122
|
+
tabLabelProps: PropTypes.shape({}),
|
123
|
+
content: PropTypes.shape({}),
|
124
|
+
titleAttr: PropTypes.string,
|
125
|
+
title: PropTypes.oneOfType([PropTypes.element, PropTypes.string, PropTypes.object]),
|
126
|
+
separator: PropTypes.oneOfType([PropTypes.element, PropTypes.bool]),
|
127
|
+
list: PropTypes.arrayOf(PropTypes.shape({}))
|
128
|
+
}),
|
129
|
+
rendered: PropTypes.node
|
119
130
|
}),
|
120
131
|
mode: PropTypes.oneOf(['default', 'tooltip', 'list']),
|
121
132
|
orientation: PropTypes.oneOf(['horizontal', 'vertical']),
|
@@ -207,10 +207,10 @@ TabPicker.propTypes = {
|
|
207
207
|
state: PropTypes.shape({
|
208
208
|
collection: PropTypes.shape({}),
|
209
209
|
selectedKey: PropTypes.string,
|
210
|
-
setSelectedKey: PropTypes
|
210
|
+
setSelectedKey: PropTypes.func,
|
211
211
|
selectionManager: PropTypes.shape({
|
212
212
|
focusedKey: PropTypes.string,
|
213
|
-
setFocusedKey: PropTypes
|
213
|
+
setFocusedKey: PropTypes.func
|
214
214
|
})
|
215
215
|
})
|
216
216
|
};
|
@@ -6,7 +6,7 @@ test('default useOverlayPanelState', function () {
|
|
6
6
|
}),
|
7
7
|
result = _renderHook.result;
|
8
8
|
|
9
|
-
|
9
|
+
var obj = {
|
10
10
|
state: {
|
11
11
|
open: expect.any(Function),
|
12
12
|
close: expect.any(Function),
|
@@ -14,5 +14,6 @@ test('default useOverlayPanelState', function () {
|
|
14
14
|
isOpen: expect.any(Boolean)
|
15
15
|
},
|
16
16
|
onClose: expect.any(Function)
|
17
|
-
}
|
17
|
+
};
|
18
|
+
expect(result.current).toEqual(obj);
|
18
19
|
});
|
@@ -103,7 +103,15 @@ var useSelectField = function useSelectField(props, ref) {
|
|
103
103
|
labelProps = _useSelect.labelProps,
|
104
104
|
triggerProps = _useSelect.triggerProps,
|
105
105
|
valueProps = _useSelect.valueProps,
|
106
|
-
menuProps = _useSelect.menuProps;
|
106
|
+
menuProps = _useSelect.menuProps; // The following props are being passed into multiple
|
107
|
+
// DOM elements that leads to multiple test failures
|
108
|
+
// and these props are never used in any components
|
109
|
+
// that depend on useSelectField
|
110
|
+
|
111
|
+
|
112
|
+
delete menuProps.shouldSelectOnPressUp;
|
113
|
+
delete menuProps.shouldFocusOnHover;
|
114
|
+
delete menuProps.disallowEmptySelection;
|
107
115
|
|
108
116
|
var _useField = useField(_objectSpread(_objectSpread({}, props), {}, {
|
109
117
|
placeholder: props.labelMode === modes.FLOAT ? '' : placeholder,
|
@@ -17,6 +17,27 @@ var validatePhoneNumber = function validatePhoneNumber(str) {
|
|
17
17
|
return reg.test(str);
|
18
18
|
};
|
19
19
|
|
20
|
+
var sx = {
|
21
|
+
wrapperBox: {
|
22
|
+
width: '100%',
|
23
|
+
maxWidth: 500,
|
24
|
+
position: 'relative'
|
25
|
+
},
|
26
|
+
comboBoxFieldWrapperOpen: {
|
27
|
+
position: 'absolute',
|
28
|
+
transition: '0.2s width ease',
|
29
|
+
width: '100%'
|
30
|
+
},
|
31
|
+
comboBoxFieldWrapperClose: {
|
32
|
+
position: 'absolute',
|
33
|
+
transition: '0.2s width ease',
|
34
|
+
width: '110px'
|
35
|
+
},
|
36
|
+
inputWrapper: {
|
37
|
+
width: '100%',
|
38
|
+
marginLeft: '110px'
|
39
|
+
}
|
40
|
+
};
|
20
41
|
export var Default = function Default() {
|
21
42
|
var _useState = useState(false),
|
22
43
|
_useState2 = _slicedToArray(_useState, 2),
|
@@ -84,22 +105,14 @@ export var Default = function Default() {
|
|
84
105
|
|
85
106
|
return ___EmotionJSX(Box, {
|
86
107
|
isRow: true,
|
87
|
-
sx:
|
88
|
-
width: '100%',
|
89
|
-
maxWidth: 500,
|
90
|
-
position: 'relative'
|
91
|
-
}
|
108
|
+
sx: sx.wrapperBox
|
92
109
|
}, ___EmotionJSX(ComboBoxField, {
|
93
110
|
mt: -5,
|
94
111
|
width: "100%",
|
95
112
|
isOpen: isOpen,
|
96
113
|
onOpenChange: setIsOpen,
|
97
114
|
wrapperProps: {
|
98
|
-
sx:
|
99
|
-
position: 'absolute',
|
100
|
-
transition: '0.2s width ease',
|
101
|
-
width: isOpen ? '100%' : 110
|
102
|
-
}
|
115
|
+
sx: isOpen ? sx.comboBoxFieldWrapperOpen : sx.comboBoxFieldWrapperClose
|
103
116
|
},
|
104
117
|
controlProps: {
|
105
118
|
'aria-label': 'Country Picker'
|
@@ -118,8 +131,7 @@ export var Default = function Default() {
|
|
118
131
|
key: item[0]
|
119
132
|
}, _concatInstanceProperty(_context = _concatInstanceProperty(_context2 = "".concat(item[1].name)).call(_context2, item[1].name !== item[1]["native"] ? " (".concat(item[1]["native"], ")") : '', " +")).call(_context, item[1].phone.split(',')[0]));
|
120
133
|
}), ___EmotionJSX(Box, {
|
121
|
-
|
122
|
-
ml: 110
|
134
|
+
sx: sx.inputWrapper
|
123
135
|
}, ___EmotionJSX(Input, {
|
124
136
|
placeholder: "Phone number...",
|
125
137
|
onChange: onPhoneNumberValueChange,
|
@@ -37,6 +37,48 @@ var inputProps = {
|
|
37
37
|
label: 'Example label',
|
38
38
|
ariaLabel: 'Example aria label'
|
39
39
|
};
|
40
|
+
var sx = {
|
41
|
+
editablePreview: {
|
42
|
+
whiteSpace: 'pre-line',
|
43
|
+
width: '100%',
|
44
|
+
overflowWrap: 'break-word',
|
45
|
+
minHeight: '45px',
|
46
|
+
paddingLeft: 'xs',
|
47
|
+
justifyContent: 'flex-end',
|
48
|
+
paddingBottom: 'xs',
|
49
|
+
borderBottomColor: 'active',
|
50
|
+
color: 'neutral.10',
|
51
|
+
fontSize: 'md',
|
52
|
+
fontWeight: 1,
|
53
|
+
lineHeight: '18px',
|
54
|
+
'&:focus': {
|
55
|
+
outline: 'none',
|
56
|
+
boxShadow: 'focus',
|
57
|
+
borderColor: 'active',
|
58
|
+
borderWidth: '1px',
|
59
|
+
borderStyle: 'solid'
|
60
|
+
}
|
61
|
+
},
|
62
|
+
editableInputWrapper: {
|
63
|
+
marginRight: '30px',
|
64
|
+
flexGrow: 1
|
65
|
+
},
|
66
|
+
editableInpuTextArea: {
|
67
|
+
maxHeight: '150px'
|
68
|
+
},
|
69
|
+
editableControlWrapper: {
|
70
|
+
position: 'absolute',
|
71
|
+
right: '0',
|
72
|
+
top: '27.5%',
|
73
|
+
alignItems: 'center',
|
74
|
+
justifyContent: 'space-between'
|
75
|
+
},
|
76
|
+
editableControlIconButton: {
|
77
|
+
marginRight: 'md',
|
78
|
+
width: '20px',
|
79
|
+
height: '20px'
|
80
|
+
}
|
81
|
+
};
|
40
82
|
export var Default = function Default() {
|
41
83
|
return ___EmotionJSX(Editable, {
|
42
84
|
value: "Some value..."
|
@@ -90,6 +132,13 @@ var EditablePreview = function EditablePreview() {
|
|
90
132
|
hasFocus = _useState4[0],
|
91
133
|
setFocus = _useState4[1];
|
92
134
|
|
135
|
+
var editablePreviewDynamicSx = {
|
136
|
+
backgroundColor: hasFocus ? 'accent.95' : 'white',
|
137
|
+
borderBottom: editableContext.isEditing ? '0px' : '1px dashed',
|
138
|
+
'&:hover': {
|
139
|
+
background: editableContext.isEditing ? 'white' : 'accent.95'
|
140
|
+
}
|
141
|
+
};
|
93
142
|
useEffect(function () {
|
94
143
|
if (hasFocus && editableContext.isEditing) {
|
95
144
|
setFocus(false);
|
@@ -116,8 +165,8 @@ var EditablePreview = function EditablePreview() {
|
|
116
165
|
"aria-hidden": editableContext.isEditing,
|
117
166
|
onClick: handleClick,
|
118
167
|
onKeyDown: handleKeyDown,
|
119
|
-
"aria-readonly": "false",
|
120
168
|
"aria-label": "Inline editable text field",
|
169
|
+
role: "textbox",
|
121
170
|
onFocus: function onFocus() {
|
122
171
|
return setFocus(true);
|
123
172
|
},
|
@@ -125,32 +174,7 @@ var EditablePreview = function EditablePreview() {
|
|
125
174
|
return setFocus(false);
|
126
175
|
},
|
127
176
|
placeholder: "Click or press enter to edit text",
|
128
|
-
sx: {
|
129
|
-
whiteSpace: 'pre-line',
|
130
|
-
backgroundColor: hasFocus ? 'accent.95' : 'white',
|
131
|
-
width: '100%',
|
132
|
-
overflowWrap: 'break-word',
|
133
|
-
minHeight: '45px',
|
134
|
-
paddingLeft: 'xs',
|
135
|
-
justifyContent: 'flex-end',
|
136
|
-
paddingBottom: 'xs',
|
137
|
-
borderBottom: editableContext.isEditing ? '0px' : '1px dashed',
|
138
|
-
borderBottomColor: 'active',
|
139
|
-
color: 'neutral.10',
|
140
|
-
fontSize: 'md',
|
141
|
-
fontWeight: 1,
|
142
|
-
lineHeight: '18px',
|
143
|
-
'&:hover': {
|
144
|
-
background: editableContext.isEditing ? 'white' : 'accent.95'
|
145
|
-
},
|
146
|
-
'&:focus': {
|
147
|
-
outline: 'none',
|
148
|
-
boxShadow: 'focus',
|
149
|
-
borderColor: 'active',
|
150
|
-
borderWidth: '1px',
|
151
|
-
borderStyle: 'solid'
|
152
|
-
}
|
153
|
-
}
|
177
|
+
sx: _objectSpread(_objectSpread({}, editablePreviewDynamicSx), sx.editablePreview)
|
154
178
|
}, editableContext.value);
|
155
179
|
};
|
156
180
|
/**
|
@@ -219,10 +243,7 @@ var EditableInput = function EditableInput(props) {
|
|
219
243
|
return ___EmotionJSX(Box, {
|
220
244
|
display: editableContext.isEditing ? 'flex' : 'none',
|
221
245
|
"aria-hidden": !editableContext.isEditing,
|
222
|
-
sx:
|
223
|
-
marginRight: '30px',
|
224
|
-
flexGrow: 1
|
225
|
-
}
|
246
|
+
sx: sx.editableInputWrapper
|
226
247
|
}, ___EmotionJSX(TextAreaField, {
|
227
248
|
rows: 1,
|
228
249
|
ref: editableInput,
|
@@ -233,9 +254,7 @@ var EditableInput = function EditableInput(props) {
|
|
233
254
|
onKeyDown: handleKeyDown,
|
234
255
|
value: editingValue,
|
235
256
|
"aria-label": ariaLabel,
|
236
|
-
sx:
|
237
|
-
maxHeight: '150px'
|
238
|
-
},
|
257
|
+
sx: sx.editableInpuTextArea,
|
239
258
|
isUnresizable: true
|
240
259
|
}));
|
241
260
|
};
|
@@ -286,22 +305,12 @@ var EditableControl = function EditableControl(props) {
|
|
286
305
|
display: editableContext.isEditing ? 'flex' : 'none',
|
287
306
|
"aria-hidden": !editableContext.isEditing,
|
288
307
|
isRow: true,
|
289
|
-
sx:
|
290
|
-
position: 'absolute',
|
291
|
-
right: '0',
|
292
|
-
top: '27.5%',
|
293
|
-
alignItems: 'center',
|
294
|
-
justifyContent: 'space-between'
|
295
|
-
}
|
308
|
+
sx: sx.editableControlWrapper
|
296
309
|
}, ___EmotionJSX(IconButton, {
|
297
310
|
onPress: handleSubmit,
|
298
311
|
"aria-label": confirmBtn.ariaLabel,
|
299
312
|
variant: confirmBtn.variant,
|
300
|
-
|
301
|
-
sx: {
|
302
|
-
width: '20px',
|
303
|
-
height: '20px'
|
304
|
-
}
|
313
|
+
sx: sx.editableControlIconButton
|
305
314
|
}, ___EmotionJSX(Icon, {
|
306
315
|
icon: CheckIcon
|
307
316
|
})), ___EmotionJSX(IconButton, {
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import PlusIcon from 'mdi-react/PlusIcon';
|
3
|
+
import { Box, Button, IconButton, Icon, Text } from '../index';
|
4
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
5
|
+
export default {
|
6
|
+
title: 'Recipes/Page Header'
|
7
|
+
};
|
8
|
+
export var Default = function Default() {
|
9
|
+
var heading = 'Title of the Page';
|
10
|
+
var description = 'The description of the page. The description of the page. The description of the page. The description of the page. The description of the page. The description of the page. The description of the page. The description of the page. The description of the page.';
|
11
|
+
return ___EmotionJSX(Box, null, ___EmotionJSX(Box, null, ___EmotionJSX(Box, {
|
12
|
+
align: "center",
|
13
|
+
isRow: true,
|
14
|
+
mb: "xs",
|
15
|
+
role: "heading",
|
16
|
+
"aria-level": "1"
|
17
|
+
}, ___EmotionJSX(Text, {
|
18
|
+
variant: "title",
|
19
|
+
fontWeight: 3
|
20
|
+
}, heading), ___EmotionJSX(Button, {
|
21
|
+
variant: "inlinePrimary",
|
22
|
+
ml: "sm"
|
23
|
+
}, ___EmotionJSX(Icon, {
|
24
|
+
icon: PlusIcon,
|
25
|
+
color: "white",
|
26
|
+
size: 13,
|
27
|
+
mr: "4px"
|
28
|
+
}), "\xA0", "Add")), ___EmotionJSX(Text, {
|
29
|
+
variant: "bodyWeak"
|
30
|
+
}, description)), ___EmotionJSX(Box, {
|
31
|
+
mt: "xl"
|
32
|
+
}, ___EmotionJSX(Box, {
|
33
|
+
align: "center",
|
34
|
+
isRow: true,
|
35
|
+
mb: "xs",
|
36
|
+
role: "heading",
|
37
|
+
"aria-level": "1"
|
38
|
+
}, ___EmotionJSX(Text, {
|
39
|
+
variant: "title",
|
40
|
+
fontWeight: 3
|
41
|
+
}, heading), ___EmotionJSX(IconButton, {
|
42
|
+
"aria-label": "icon button",
|
43
|
+
ml: "sm",
|
44
|
+
mt: "3px",
|
45
|
+
variant: "inverted"
|
46
|
+
}, ___EmotionJSX(Icon, {
|
47
|
+
icon: PlusIcon,
|
48
|
+
color: "white",
|
49
|
+
size: 13
|
50
|
+
}))), ___EmotionJSX(Text, {
|
51
|
+
variant: "bodyWeak"
|
52
|
+
}, description)));
|
53
|
+
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@pingux/astro",
|
3
|
-
"version": "1.27.0-alpha.
|
3
|
+
"version": "1.27.0-alpha.2",
|
4
4
|
"description": "PingUX themeable React component library",
|
5
5
|
"author": "ux-development@pingidentity.com",
|
6
6
|
"license": "Apache-2.0",
|
@@ -137,7 +137,7 @@
|
|
137
137
|
"emotion-normalize": "^11.0.1",
|
138
138
|
"lodash": "^4.17.21",
|
139
139
|
"mdi-react": "^7.4.0",
|
140
|
-
"moment": "^2.29.
|
140
|
+
"moment": "^2.29.4",
|
141
141
|
"prism-react-renderer": "1.2.1",
|
142
142
|
"prismjs": "^1.27.0",
|
143
143
|
"prop-types": "^15.7.2",
|