@pingux/astro 2.30.0 → 2.31.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/Badge/Badge.styles.js +21 -12
- package/lib/cjs/components/TreeView/TreeView.js +10 -3
- package/lib/cjs/components/TreeView/TreeView.test.js +15 -0
- package/lib/cjs/components/TreeView/TreeViewItem.js +12 -3
- package/lib/cjs/components/TreeView/TreeViewSection.js +25 -10
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.js +8 -0
- package/lib/cjs/recipes/PanelContent.stories.js +496 -0
- package/lib/cjs/utils/designUtils/figmaLinks.js +4 -0
- package/lib/cjs/utils/devUtils/assets/UserImage.png +0 -0
- package/lib/components/Badge/Badge.styles.js +21 -12
- package/lib/components/TreeView/TreeView.js +10 -3
- package/lib/components/TreeView/TreeView.test.js +15 -0
- package/lib/components/TreeView/TreeViewItem.js +12 -3
- package/lib/components/TreeView/TreeViewSection.js +21 -6
- package/lib/index.js +1 -0
- package/lib/recipes/PanelContent.stories.js +477 -0
- package/lib/utils/designUtils/figmaLinks.js +4 -0
- package/lib/utils/devUtils/assets/UserImage.png +0 -0
- package/package.json +1 -1
@@ -0,0 +1,496 @@
|
|
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"] = exports.LabelValuePairs = exports.EditPanel = exports.DisplayPanel = exports.ColorBlockButton = exports.AddAttributeButton = void 0;
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
13
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
14
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
15
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
17
|
+
var _reactStately = require("react-stately");
|
18
|
+
var _PencilIcon = _interopRequireDefault(require("@pingux/mdi-react/PencilIcon"));
|
19
|
+
var _PlusIcon = _interopRequireDefault(require("@pingux/mdi-react/PlusIcon"));
|
20
|
+
var _hooks = require("../hooks");
|
21
|
+
var _index = require("../index");
|
22
|
+
var _figmaLinks = require("../utils/designUtils/figmaLinks.js");
|
23
|
+
var _UserImage = _interopRequireDefault(require("../utils/devUtils/assets/UserImage.png"));
|
24
|
+
var _statuses = _interopRequireDefault(require("../utils/devUtils/constants/statuses"));
|
25
|
+
var _react2 = require("@emotion/react");
|
26
|
+
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); }
|
27
|
+
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; }
|
28
|
+
var _default = {
|
29
|
+
title: 'Experimental/PanelContent',
|
30
|
+
parameters: {
|
31
|
+
docs: {
|
32
|
+
source: {
|
33
|
+
type: 'code'
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
37
|
+
};
|
38
|
+
exports["default"] = _default;
|
39
|
+
var colorBlockButtons = [{
|
40
|
+
text: 'Groups',
|
41
|
+
subtext: '21',
|
42
|
+
isConfigured: true
|
43
|
+
}, {
|
44
|
+
text: 'Population',
|
45
|
+
subtext: 'Denver',
|
46
|
+
isConfigured: true
|
47
|
+
}, {
|
48
|
+
text: 'MFA',
|
49
|
+
subtext: 'Enabled',
|
50
|
+
isConfigured: true
|
51
|
+
}, {
|
52
|
+
text: 'Roles',
|
53
|
+
subtext: '0'
|
54
|
+
}];
|
55
|
+
var data = {
|
56
|
+
contactInfo: {
|
57
|
+
label: 'Contact Info',
|
58
|
+
key: 'contactInfoKey',
|
59
|
+
fields: [{
|
60
|
+
label: 'Email',
|
61
|
+
value: 'ednepomuceno@pingidentity.com',
|
62
|
+
isVerified: true
|
63
|
+
}, {
|
64
|
+
label: 'Primary',
|
65
|
+
value: '+1 767-777-3333'
|
66
|
+
}, {
|
67
|
+
label: 'Address',
|
68
|
+
value: '1234 W California St, Denver CO 80101'
|
69
|
+
}]
|
70
|
+
},
|
71
|
+
personalInfo: {
|
72
|
+
label: 'Personal Info',
|
73
|
+
key: 'personalInfoKey',
|
74
|
+
image: _UserImage["default"],
|
75
|
+
fields: [{
|
76
|
+
label: 'Given Name',
|
77
|
+
value: 'Ed'
|
78
|
+
}, {
|
79
|
+
label: 'Famile Name',
|
80
|
+
value: 'Nepomuceno'
|
81
|
+
}]
|
82
|
+
},
|
83
|
+
companyInfo: {
|
84
|
+
label: 'Company Info',
|
85
|
+
key: 'companyInfoKey',
|
86
|
+
fields: [{
|
87
|
+
label: 'Tile',
|
88
|
+
value: 'Interaction Designer'
|
89
|
+
}]
|
90
|
+
},
|
91
|
+
customAttributes: {
|
92
|
+
label: 'Custom Attributes',
|
93
|
+
key: 'customAttributesKey',
|
94
|
+
fields: [{
|
95
|
+
label: 'T-Shirt Size',
|
96
|
+
value: 'Large'
|
97
|
+
}, {
|
98
|
+
label: 'Example Multi-Value Attribute',
|
99
|
+
value: 'value,value,value,value,value,value,value,value,value,value,value,value,value,value,value,value,value,value,value,'
|
100
|
+
}]
|
101
|
+
},
|
102
|
+
jsonAttributes: {
|
103
|
+
label: 'JSON Attributes',
|
104
|
+
key: 'jsonAttributesKey',
|
105
|
+
badges: ['Address', 'Contact', 'Another Json'],
|
106
|
+
fields: []
|
107
|
+
}
|
108
|
+
};
|
109
|
+
var OverlayWrapper = function OverlayWrapper(_ref) {
|
110
|
+
var children = _ref.children;
|
111
|
+
var _useOverlayPanelState = (0, _hooks.useOverlayPanelState)({
|
112
|
+
isDefaultOpen: true
|
113
|
+
}),
|
114
|
+
state = _useOverlayPanelState.state;
|
115
|
+
var triggerRef = (0, _react.useRef)();
|
116
|
+
return (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Button, {
|
117
|
+
ref: triggerRef,
|
118
|
+
onPress: state.open
|
119
|
+
}, "Open Panel"), (0, _react2.jsx)(_index.OverlayPanel, {
|
120
|
+
isOpen: state.isOpen,
|
121
|
+
isTransitioning: state.isTransitioning,
|
122
|
+
size: "large",
|
123
|
+
p: "0"
|
124
|
+
}, (0, _react2.jsx)(_index.PanelHeader, {
|
125
|
+
data: {
|
126
|
+
image: {
|
127
|
+
src: _UserImage["default"],
|
128
|
+
alt: 'user image'
|
129
|
+
},
|
130
|
+
text: data.personalInfo.fields[0].value,
|
131
|
+
subtext: data.personalInfo.fields[1].value
|
132
|
+
}
|
133
|
+
}, (0, _react2.jsx)(_index.PanelHeaderSwitchField, null), (0, _react2.jsx)(_index.PanelHeaderMenu, null), (0, _react2.jsx)(_index.PanelHeaderCloseButton, {
|
134
|
+
onPress: state.close
|
135
|
+
})), children));
|
136
|
+
};
|
137
|
+
var DisplayPanel = function DisplayPanel() {
|
138
|
+
var _context, _context2;
|
139
|
+
var renderProfileTab = (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_index.Box, {
|
140
|
+
isRow: true,
|
141
|
+
gap: "md",
|
142
|
+
mb: "20px"
|
143
|
+
}, (0, _map["default"])(colorBlockButtons).call(colorBlockButtons, function (tileData) {
|
144
|
+
return (0, _react2.jsx)(ColorBlockButton, {
|
145
|
+
buttonData: tileData,
|
146
|
+
key: "".concat(tileData.text, "-key")
|
147
|
+
});
|
148
|
+
})), (0, _react2.jsx)(_index.Box, {
|
149
|
+
isRow: true,
|
150
|
+
justifyContent: "space-between"
|
151
|
+
}, (0, _react2.jsx)(_index.AccordionGroup, {
|
152
|
+
defaultExpandedKeys: (0, _map["default"])(_context = (0, _keys["default"])(data)).call(_context, function (item) {
|
153
|
+
return data[item].key;
|
154
|
+
}),
|
155
|
+
labelHeadingTag: "h2"
|
156
|
+
}, (0, _map["default"])(_context2 = (0, _keys["default"])(data)).call(_context2, function (item) {
|
157
|
+
var _context3;
|
158
|
+
return (0, _react2.jsx)(_reactStately.Item, {
|
159
|
+
"data-id": data[item].label,
|
160
|
+
key: data[item].key,
|
161
|
+
label: data[item].label,
|
162
|
+
textValue: data[item].label
|
163
|
+
}, data[item].image ? (0, _react2.jsx)(_index.Box, {
|
164
|
+
isRow: true,
|
165
|
+
gap: "md"
|
166
|
+
}, (0, _react2.jsx)(_index.Image, {
|
167
|
+
src: _UserImage["default"],
|
168
|
+
alt: "user"
|
169
|
+
}), (0, _react2.jsx)(LabelValuePairs, {
|
170
|
+
fields: data[item].fields
|
171
|
+
})) : (0, _react2.jsx)(LabelValuePairs, {
|
172
|
+
fields: data[item].fields
|
173
|
+
}), data[item].badges && (0, _react2.jsx)(_index.Box, {
|
174
|
+
isRow: true,
|
175
|
+
gap: "sm"
|
176
|
+
}, (0, _map["default"])(_context3 = data[item].badges).call(_context3, function (badge) {
|
177
|
+
return (0, _react2.jsx)(_index.Badge, {
|
178
|
+
label: badge,
|
179
|
+
variant: "defaultBadge",
|
180
|
+
key: "".concat(badge, "-key")
|
181
|
+
});
|
182
|
+
})));
|
183
|
+
})), (0, _react2.jsx)(_index.EditButton, {
|
184
|
+
size: "lg"
|
185
|
+
})));
|
186
|
+
var tabs = [{
|
187
|
+
name: 'Profile',
|
188
|
+
children: renderProfileTab
|
189
|
+
}, {
|
190
|
+
name: 'Groups',
|
191
|
+
children: 'Groups'
|
192
|
+
}, {
|
193
|
+
name: 'Roles',
|
194
|
+
children: 'Roles'
|
195
|
+
}, {
|
196
|
+
name: 'Services',
|
197
|
+
list: [{
|
198
|
+
key: 'service1',
|
199
|
+
name: 'Service 1',
|
200
|
+
children: 'Service 1',
|
201
|
+
role: 'listitem'
|
202
|
+
}, {
|
203
|
+
key: 'service2',
|
204
|
+
name: 'Service 2',
|
205
|
+
children: 'Service 2',
|
206
|
+
role: 'listitem'
|
207
|
+
}]
|
208
|
+
}, {
|
209
|
+
name: 'API',
|
210
|
+
children: 'API'
|
211
|
+
}];
|
212
|
+
return (0, _react2.jsx)(OverlayWrapper, null, (0, _react2.jsx)(_index.Box, {
|
213
|
+
p: "lg",
|
214
|
+
pt: "xs"
|
215
|
+
}, (0, _react2.jsx)(_index.Tabs, {
|
216
|
+
items: tabs,
|
217
|
+
mode: "list",
|
218
|
+
tabListProps: {
|
219
|
+
justifyContent: 'center',
|
220
|
+
mb: 'lg'
|
221
|
+
}
|
222
|
+
}, function (item) {
|
223
|
+
return (0, _react2.jsx)(_index.Tab, (0, _extends2["default"])({
|
224
|
+
key: item.name,
|
225
|
+
title: item.name
|
226
|
+
}, item), item.children);
|
227
|
+
})));
|
228
|
+
};
|
229
|
+
exports.DisplayPanel = DisplayPanel;
|
230
|
+
DisplayPanel.parameters = {
|
231
|
+
design: {
|
232
|
+
type: 'figma',
|
233
|
+
url: _figmaLinks.FIGMA_LINKS.panelContent.displayPanel
|
234
|
+
},
|
235
|
+
a11y: {
|
236
|
+
config: {
|
237
|
+
rules: [{
|
238
|
+
id: 'color-contrast',
|
239
|
+
enabled: false
|
240
|
+
}]
|
241
|
+
}
|
242
|
+
}
|
243
|
+
};
|
244
|
+
var ColorBlockButton = function ColorBlockButton(_ref2) {
|
245
|
+
var _ref2$buttonData = _ref2.buttonData,
|
246
|
+
buttonData = _ref2$buttonData === void 0 ? colorBlockButtons[0] : _ref2$buttonData;
|
247
|
+
return (0, _react2.jsx)(_index.Button, {
|
248
|
+
variant: "colorBlock",
|
249
|
+
className: buttonData.isConfigured ? 'is-configured' : ''
|
250
|
+
}, (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Text, {
|
251
|
+
variant: "buttonTitle"
|
252
|
+
}, buttonData.text), (0, _react2.jsx)(_index.Text, {
|
253
|
+
variant: "buttonSubtitle"
|
254
|
+
}, buttonData.subtext)), (0, _react2.jsx)(_index.Icon, {
|
255
|
+
icon: _PencilIcon["default"],
|
256
|
+
title: {
|
257
|
+
name: 'Create Icon'
|
258
|
+
}
|
259
|
+
}));
|
260
|
+
};
|
261
|
+
exports.ColorBlockButton = ColorBlockButton;
|
262
|
+
var LabelValuePairs = function LabelValuePairs(_ref3) {
|
263
|
+
var _ref3$fields = _ref3.fields,
|
264
|
+
fields = _ref3$fields === void 0 ? data.contactInfo.fields : _ref3$fields;
|
265
|
+
return (0, _react2.jsx)(_index.Box, {
|
266
|
+
gap: "md",
|
267
|
+
maxWidth: "675px"
|
268
|
+
}, (0, _map["default"])(fields).call(fields, function (_ref4) {
|
269
|
+
var label = _ref4.label,
|
270
|
+
value = _ref4.value,
|
271
|
+
isVerified = _ref4.isVerified;
|
272
|
+
return (0, _react2.jsx)(_index.Box, {
|
273
|
+
gap: "xs",
|
274
|
+
key: "".concat(label, "-key")
|
275
|
+
}, (0, _react2.jsx)(_index.Text, {
|
276
|
+
variant: "h4"
|
277
|
+
}, label), (0, _react2.jsx)(_index.Box, {
|
278
|
+
isRow: true,
|
279
|
+
gap: "md"
|
280
|
+
}, (0, _react2.jsx)(_index.Text, null, value), isVerified && (0, _react2.jsx)(_index.Box, {
|
281
|
+
isRow: true,
|
282
|
+
gap: "xs"
|
283
|
+
}, (0, _react2.jsx)(_index.NoticeIcon, {
|
284
|
+
color: "success.dark",
|
285
|
+
status: _statuses["default"].SUCCESS,
|
286
|
+
"aria-label": "".concat(_statuses["default"].SUCCESS, "-icon"),
|
287
|
+
size: "xs"
|
288
|
+
}), (0, _react2.jsx)(_index.Text, {
|
289
|
+
variant: "listSubtitle",
|
290
|
+
color: "success.dark"
|
291
|
+
}, "Verified"))));
|
292
|
+
}));
|
293
|
+
};
|
294
|
+
exports.LabelValuePairs = LabelValuePairs;
|
295
|
+
var editData = {
|
296
|
+
personalInfo: {
|
297
|
+
label: 'Personal Info',
|
298
|
+
key: 'personalInfoKey',
|
299
|
+
image: _UserImage["default"],
|
300
|
+
fields: [{
|
301
|
+
label: 'Prefix',
|
302
|
+
value: ''
|
303
|
+
}, {
|
304
|
+
label: 'Given Name',
|
305
|
+
value: 'Ed'
|
306
|
+
}, {
|
307
|
+
label: 'Middle Name',
|
308
|
+
value: ''
|
309
|
+
}, {
|
310
|
+
label: 'Family Name',
|
311
|
+
value: 'Nepomuceno'
|
312
|
+
}, {
|
313
|
+
label: 'Suffix',
|
314
|
+
value: ''
|
315
|
+
}, {
|
316
|
+
label: 'Formatted',
|
317
|
+
value: ''
|
318
|
+
}, {
|
319
|
+
label: 'Nickname',
|
320
|
+
value: ''
|
321
|
+
}]
|
322
|
+
},
|
323
|
+
contactInfo: {
|
324
|
+
label: 'Contact Info',
|
325
|
+
key: 'contactInfoKey',
|
326
|
+
fields: [{
|
327
|
+
label: 'Email',
|
328
|
+
value: 'ednepomuceno@pingidentity.com',
|
329
|
+
slot: (0, _react2.jsx)(_index.CheckboxField, {
|
330
|
+
mt: "xs",
|
331
|
+
label: "Require Email to be Verified"
|
332
|
+
})
|
333
|
+
}, {
|
334
|
+
label: 'Phone Number',
|
335
|
+
value: '123-456-7890'
|
336
|
+
}, {
|
337
|
+
label: 'Street Address',
|
338
|
+
value: '123 Example St'
|
339
|
+
}, {
|
340
|
+
label: 'Country Code',
|
341
|
+
value: ''
|
342
|
+
}, {
|
343
|
+
label: 'Loality',
|
344
|
+
value: ''
|
345
|
+
}, {
|
346
|
+
label: 'Region',
|
347
|
+
value: ''
|
348
|
+
}, {
|
349
|
+
label: 'Zip Code',
|
350
|
+
value: '12345'
|
351
|
+
}]
|
352
|
+
},
|
353
|
+
companyInfo: {
|
354
|
+
label: 'Company Info',
|
355
|
+
key: 'companyInfoKey',
|
356
|
+
fields: [{
|
357
|
+
label: 'Account ID',
|
358
|
+
value: ''
|
359
|
+
}, {
|
360
|
+
label: 'Type',
|
361
|
+
value: ''
|
362
|
+
}, {
|
363
|
+
label: 'Title',
|
364
|
+
value: ''
|
365
|
+
}]
|
366
|
+
}
|
367
|
+
};
|
368
|
+
var EditPanel = function EditPanel() {
|
369
|
+
var _context4, _context5, _context6;
|
370
|
+
return (0, _react2.jsx)(OverlayWrapper, null, (0, _react2.jsx)(_index.Box, {
|
371
|
+
p: "lg",
|
372
|
+
pb: "0"
|
373
|
+
}, (0, _react2.jsx)(_index.Box, {
|
374
|
+
gap: "md",
|
375
|
+
mb: "20px",
|
376
|
+
width: "500px"
|
377
|
+
}, (0, _react2.jsx)(_index.TextField, {
|
378
|
+
defaultValue: "ednepomuceno",
|
379
|
+
isRequired: true,
|
380
|
+
label: "Username"
|
381
|
+
}), (0, _react2.jsx)(_index.SelectField, {
|
382
|
+
label: "Population",
|
383
|
+
isRequired: true,
|
384
|
+
defaultSelectedKey: "population"
|
385
|
+
}, (0, _react2.jsx)(_reactStately.Item, {
|
386
|
+
key: "population"
|
387
|
+
}, "Denver"))), (0, _react2.jsx)(_index.AccordionGroup, {
|
388
|
+
defaultExpandedKeys: (0, _concat["default"])(_context4 = []).call(_context4, (0, _map["default"])(_context5 = (0, _keys["default"])(editData)).call(_context5, function (item) {
|
389
|
+
return editData[item].key;
|
390
|
+
}), ['preferencesKey', 'customAttributesKey', 'jsonAttributesKey']),
|
391
|
+
labelHeadingTag: "h2"
|
392
|
+
}, (0, _map["default"])(_context6 = (0, _keys["default"])(editData)).call(_context6, function (item) {
|
393
|
+
var _context7;
|
394
|
+
return (0, _react2.jsx)(_reactStately.Item, {
|
395
|
+
"data-id": editData[item].label,
|
396
|
+
key: editData[item].key,
|
397
|
+
label: editData[item].label,
|
398
|
+
textValue: editData[item].label
|
399
|
+
}, (0, _react2.jsx)(_index.Box, {
|
400
|
+
gap: "md",
|
401
|
+
width: "500px"
|
402
|
+
}, editData[item].image && (0, _react2.jsx)(_index.ImageUploadField, {
|
403
|
+
label: "Photo",
|
404
|
+
previewHeight: 40,
|
405
|
+
previewWidth: 40,
|
406
|
+
previewImage: _UserImage["default"]
|
407
|
+
}), (0, _map["default"])(_context7 = editData[item].fields).call(_context7, function (_ref5) {
|
408
|
+
var label = _ref5.label,
|
409
|
+
value = _ref5.value,
|
410
|
+
slot = _ref5.slot;
|
411
|
+
return (0, _react2.jsx)(_index.Box, {
|
412
|
+
key: "".concat(label, "-key")
|
413
|
+
}, (0, _react2.jsx)(_index.TextField, {
|
414
|
+
label: label,
|
415
|
+
defaultValue: value
|
416
|
+
}), slot);
|
417
|
+
})));
|
418
|
+
}), (0, _react2.jsx)(_reactStately.Item, {
|
419
|
+
"data-id": "preferences",
|
420
|
+
key: "preferencesKey",
|
421
|
+
label: "Preferences",
|
422
|
+
textValue: "Preferences"
|
423
|
+
}, (0, _react2.jsx)(_index.Box, {
|
424
|
+
gap: "md",
|
425
|
+
width: "500px"
|
426
|
+
}, (0, _react2.jsx)(_index.SelectField, {
|
427
|
+
label: "Preferred Language",
|
428
|
+
defaultSelectedKey: "language"
|
429
|
+
}, (0, _react2.jsx)(_reactStately.Item, {
|
430
|
+
key: "language"
|
431
|
+
}, "Select a Language")), (0, _react2.jsx)(_index.SelectField, {
|
432
|
+
label: "Locale",
|
433
|
+
defaultSelectedKey: "language"
|
434
|
+
}, (0, _react2.jsx)(_reactStately.Item, {
|
435
|
+
key: "language"
|
436
|
+
}, "Select a locale")), (0, _react2.jsx)(_index.SelectField, {
|
437
|
+
label: "Timezone",
|
438
|
+
defaultSelectedKey: "language"
|
439
|
+
}, (0, _react2.jsx)(_reactStately.Item, {
|
440
|
+
key: "language"
|
441
|
+
}, "Select a timezone")))), (0, _react2.jsx)(_reactStately.Item, {
|
442
|
+
"data-id": "customAttributes",
|
443
|
+
key: "customAttributesKey",
|
444
|
+
label: "Custom Attributes",
|
445
|
+
textValue: "Custom Attributes"
|
446
|
+
}, (0, _react2.jsx)(AddAttributeButton, null), (0, _react2.jsx)(_index.Text, {
|
447
|
+
fontWeight: "-1",
|
448
|
+
fontSize: "md",
|
449
|
+
textAlign: "center"
|
450
|
+
}, "Click + Add to select a custom attribute")), (0, _react2.jsx)(_reactStately.Item, {
|
451
|
+
"data-id": "jsonAttributes",
|
452
|
+
key: "jsonAttributesKey",
|
453
|
+
label: "JSON Attributes",
|
454
|
+
textValue: "JSON Attributes"
|
455
|
+
}, (0, _react2.jsx)(AddAttributeButton, null), (0, _react2.jsx)(_index.Text, {
|
456
|
+
fontWeight: "-1",
|
457
|
+
fontSize: "md",
|
458
|
+
textAlign: "center"
|
459
|
+
}, "Click + Add to select a JSON attribute")))), (0, _react2.jsx)(_index.ButtonBar, null, (0, _react2.jsx)(_index.Button, {
|
460
|
+
variant: "primary"
|
461
|
+
}, "Save"), (0, _react2.jsx)(_index.Button, {
|
462
|
+
variant: "link"
|
463
|
+
}, "Cancel")));
|
464
|
+
};
|
465
|
+
exports.EditPanel = EditPanel;
|
466
|
+
EditPanel.parameters = {
|
467
|
+
design: {
|
468
|
+
type: 'figma',
|
469
|
+
url: _figmaLinks.FIGMA_LINKS.panelContent.editPanel
|
470
|
+
},
|
471
|
+
a11y: {
|
472
|
+
config: {
|
473
|
+
rules: [{
|
474
|
+
id: 'color-contrast',
|
475
|
+
enabled: false
|
476
|
+
}]
|
477
|
+
}
|
478
|
+
}
|
479
|
+
};
|
480
|
+
var AddAttributeButton = function AddAttributeButton() {
|
481
|
+
return (0, _react2.jsx)(_index.Box, {
|
482
|
+
sx: {
|
483
|
+
position: 'relative',
|
484
|
+
left: '700px',
|
485
|
+
top: '-35px',
|
486
|
+
width: 0,
|
487
|
+
height: 0
|
488
|
+
}
|
489
|
+
}, (0, _react2.jsx)(_index.Button, {
|
490
|
+
variant: "inlineWithIcon"
|
491
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
492
|
+
icon: _PlusIcon["default"],
|
493
|
+
size: "xs"
|
494
|
+
}), "Add"));
|
495
|
+
};
|
496
|
+
exports.AddAttributeButton = AddAttributeButton;
|
@@ -108,6 +108,10 @@ var FIGMA_LINKS = {
|
|
108
108
|
OnewayToBidirectionalArrow: {
|
109
109
|
"default": 'https://www.figma.com/file/bpbEw54gTTcdIiZs4PKK1p/Astro-Specs?type=design&node-id=43504-1214&mode=design&t=R4kdj0liRHxsqbV5-0'
|
110
110
|
},
|
111
|
+
panelContent: {
|
112
|
+
displayPanel: 'https://www.figma.com/file/bpbEw54gTTcdIiZs4PKK1p/Astro-Specs?node-id=43431%3A4249&mode=dev',
|
113
|
+
editPanel: 'https://www.figma.com/file/bpbEw54gTTcdIiZs4PKK1p/Astro-Specs?node-id=5013%3A15377&mode=dev'
|
114
|
+
},
|
111
115
|
panelHeader: {
|
112
116
|
"default": 'https://www.figma.com/file/bpbEw54gTTcdIiZs4PKK1p/Astro-Specs?type=design&node-id=44688%3A39612&mode=dev',
|
113
117
|
withSubtext: 'https://www.figma.com/file/bpbEw54gTTcdIiZs4PKK1p/Astro-Specs?node-id=44688%3A39651&mode=dev',
|
Binary file
|
@@ -34,6 +34,14 @@ export var baseBadge = {
|
|
34
34
|
}
|
35
35
|
}
|
36
36
|
};
|
37
|
+
var defaultBadge = _objectSpread(_objectSpread({}, baseBadge), {}, {
|
38
|
+
backgroundColor: 'white !important',
|
39
|
+
outline: '1px solid',
|
40
|
+
outlineColor: 'neutral.80',
|
41
|
+
'& span': {
|
42
|
+
color: 'text.primary'
|
43
|
+
}
|
44
|
+
});
|
37
45
|
var multivaluesBadge = _objectSpread(_objectSpread({}, baseBadge), {}, {
|
38
46
|
alignSelf: 'center',
|
39
47
|
cursor: 'default',
|
@@ -178,23 +186,24 @@ var activeStatusBadge = _objectSpread(_objectSpread({}, statusBadge), {}, {
|
|
178
186
|
backgroundColor: '#F7F8FD !important'
|
179
187
|
});
|
180
188
|
export default {
|
189
|
+
activeStatusBadge: activeStatusBadge,
|
190
|
+
badgeDeleteButton: badgeDeleteButton,
|
181
191
|
baseBadge: baseBadge,
|
192
|
+
convenienceDefault: convenienceDefault,
|
193
|
+
countBadge: countBadge,
|
194
|
+
countNeutral: countNeutral,
|
195
|
+
criticalStatusBadge: criticalStatusBadge,
|
196
|
+
defaultBadge: defaultBadge,
|
197
|
+
deleteButton: deleteButton,
|
182
198
|
environmentBadge: environmentBadge,
|
199
|
+
errorCalloutBadge: errorCalloutBadge,
|
200
|
+
healthyStatusBadge: healthyStatusBadge,
|
201
|
+
infoCalloutBadge: infoCalloutBadge,
|
183
202
|
itemBadgeWithSlot: itemBadgeWithSlot,
|
184
203
|
multivaluesBadge: multivaluesBadge,
|
185
204
|
readOnlyBadge: readOnlyBadge,
|
186
205
|
selectedItemBadge: selectedItemBadge,
|
187
|
-
deleteButton: deleteButton,
|
188
|
-
countBadge: countBadge,
|
189
|
-
countNeutral: countNeutral,
|
190
|
-
badgeDeleteButton: badgeDeleteButton,
|
191
|
-
convenienceDefault: convenienceDefault,
|
192
|
-
errorCalloutBadge: errorCalloutBadge,
|
193
|
-
warningCalloutBadge: warningCalloutBadge,
|
194
206
|
successCalloutBadge: successCalloutBadge,
|
195
|
-
|
196
|
-
|
197
|
-
warningStatusBadge: warningStatusBadge,
|
198
|
-
healthyStatusBadge: healthyStatusBadge,
|
199
|
-
activeStatusBadge: activeStatusBadge
|
207
|
+
warningCalloutBadge: warningCalloutBadge,
|
208
|
+
warningStatusBadge: warningStatusBadge
|
200
209
|
};
|
@@ -65,6 +65,7 @@ var TreeView = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
65
65
|
selectionMode: 'single',
|
66
66
|
disallowEmptySelection: true
|
67
67
|
}, others));
|
68
|
+
var level = 0;
|
68
69
|
var ariaLabel = props['aria-label'];
|
69
70
|
var listBoxOptions = {
|
70
71
|
disabledKeys: disabledKeys,
|
@@ -89,16 +90,22 @@ var TreeView = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
89
90
|
sx: {
|
90
91
|
overflow: 'hidden'
|
91
92
|
}
|
92
|
-
}, others), _mapInstanceProperty(_context = _Array$from(state.collection)).call(_context, function (item) {
|
93
|
+
}, others), _mapInstanceProperty(_context = _Array$from(state.collection)).call(_context, function (item, index) {
|
93
94
|
return SectionOrItemRender(item.props.items.length > 0, ___EmotionJSX(TreeViewSection, {
|
94
95
|
item: item,
|
95
96
|
items: item.props.items,
|
96
97
|
title: item.props.title,
|
97
|
-
key: item.props.title
|
98
|
+
key: item.props.title,
|
99
|
+
level: level + 1,
|
100
|
+
setSize: state.collection.size,
|
101
|
+
position: index
|
98
102
|
}), ___EmotionJSX(TreeViewItem, {
|
99
103
|
item: item,
|
100
104
|
title: item.value.value.title,
|
101
|
-
key: item.value.value.title
|
105
|
+
key: item.value.value.title,
|
106
|
+
level: level + 1,
|
107
|
+
position: index,
|
108
|
+
setSize: state.collection.size
|
102
109
|
}));
|
103
110
|
})));
|
104
111
|
});
|
@@ -148,6 +148,21 @@ test('disabledKeys prop disables items in the tree -- rendering them unclickable
|
|
148
148
|
expect(thisItem).not.toHaveClass('is-selected');
|
149
149
|
expect(thisItem).toHaveAttribute('aria-selected', 'false');
|
150
150
|
});
|
151
|
+
test('displays correct aria attributes', function () {
|
152
|
+
render(___EmotionJSX(TreeViewComponent, null));
|
153
|
+
var listItems = screen.getAllByRole('treeitem');
|
154
|
+
var lastTreeItem = listItems[2];
|
155
|
+
expect(lastTreeItem).toHaveAttribute('aria-level', '1');
|
156
|
+
expect(lastTreeItem).toHaveAttribute('aria-posinset', '3');
|
157
|
+
expect(lastTreeItem).toHaveAttribute('aria-setsize', '3');
|
158
|
+
var buttons = screen.queryAllByRole('button');
|
159
|
+
fireEvent.click(buttons[1]);
|
160
|
+
var expandedItems = screen.getAllByRole('treeitem');
|
161
|
+
var nestedItem = expandedItems[2];
|
162
|
+
expect(nestedItem).toHaveAttribute('aria-level', '2');
|
163
|
+
expect(nestedItem).toHaveAttribute('aria-posinset', '1');
|
164
|
+
expect(nestedItem).toHaveAttribute('aria-setsize', '1');
|
165
|
+
});
|
151
166
|
var firstJSX = ___EmotionJSX("p", null, "first");
|
152
167
|
var secondJSX = ___EmotionJSX("p", null, "second");
|
153
168
|
test('Section or Item Render renders first item if condition is true', function () {
|
@@ -9,7 +9,10 @@ import TreeViewRow from './TreeViewRow';
|
|
9
9
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
10
10
|
var TreeViewItem = /*#__PURE__*/forwardRef(function (props, ref) {
|
11
11
|
var item = props.item,
|
12
|
-
title = props.title
|
12
|
+
title = props.title,
|
13
|
+
level = props.level,
|
14
|
+
position = props.position,
|
15
|
+
setSize = props.setSize;
|
13
16
|
var key = item.key;
|
14
17
|
var treeItemRef = useRef();
|
15
18
|
/* istanbul ignore next */
|
@@ -29,7 +32,10 @@ var TreeViewItem = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
29
32
|
as: "li",
|
30
33
|
isRow: true,
|
31
34
|
ref: treeItemRef,
|
32
|
-
"aria-disabled": isDisabled
|
35
|
+
"aria-disabled": isDisabled,
|
36
|
+
"aria-level": level,
|
37
|
+
"aria-posinset": position + 1,
|
38
|
+
"aria-setsize": setSize
|
33
39
|
}, optionProps, {
|
34
40
|
role: "treeitem",
|
35
41
|
sx: {
|
@@ -54,6 +60,9 @@ TreeViewItem.propTypes = {
|
|
54
60
|
key: PropTypes.string
|
55
61
|
}),
|
56
62
|
name: PropTypes.string,
|
57
|
-
title: PropTypes.string
|
63
|
+
title: PropTypes.string,
|
64
|
+
level: PropTypes.number,
|
65
|
+
position: PropTypes.number,
|
66
|
+
setSize: PropTypes.number
|
58
67
|
};
|
59
68
|
export default TreeViewItem;
|