@automattic/vip-design-system 0.33.1 → 0.33.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/build/system/Form/RadioBoxGroup.js +45 -23
- package/build/system/Form/RadioBoxGroup.stories.js +22 -2
- package/build/system/Form/ToggleGroup.js +1 -1
- package/build/system/NewForm/FormAutocomplete.js +5 -3
- package/build/system/NewTabs/Tabs.js +4 -0
- package/build/system/NewTabs/Tabs.stories.js +64 -2
- package/build/system/NewTabs/TabsList.js +1 -1
- package/build/system/NewTabs/TabsTrigger.js +14 -11
- package/build/system/ResourceList/ResourceItem.js +89 -0
- package/build/system/ResourceList/ResourceList.js +140 -0
- package/build/system/ResourceList/ResourceList.stories.js +379 -0
- package/build/system/ResourceList/index.js +11 -0
- package/build/system/theme/generated/valet-theme.json +690 -240
- package/package.json +1 -1
- package/src/system/Form/RadioBoxGroup.js +42 -21
- package/src/system/Form/RadioBoxGroup.stories.jsx +16 -0
- package/src/system/NewForm/FormAutocomplete.js +2 -1
|
@@ -17,10 +17,12 @@ var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText"));
|
|
|
17
17
|
|
|
18
18
|
var _Label = require("./Label");
|
|
19
19
|
|
|
20
|
+
var _Validation = require("./Validation");
|
|
21
|
+
|
|
20
22
|
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
21
23
|
|
|
22
24
|
var _excluded = ["id", "value", "className", "label", "description", "labelProps"],
|
|
23
|
-
_excluded2 = ["optionWidth", "name", "onChange", "groupLabel", "defaultValue", "options", "disabled"];
|
|
25
|
+
_excluded2 = ["optionWidth", "name", "onChange", "groupLabel", "defaultValue", "options", "disabled", "errorMessage", "hasError", "required"];
|
|
24
26
|
|
|
25
27
|
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); }
|
|
26
28
|
|
|
@@ -137,6 +139,9 @@ var RadioBoxGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, f
|
|
|
137
139
|
defaultValue = _ref2.defaultValue,
|
|
138
140
|
options = _ref2.options,
|
|
139
141
|
disabled = _ref2.disabled,
|
|
142
|
+
errorMessage = _ref2.errorMessage,
|
|
143
|
+
hasError = _ref2.hasError,
|
|
144
|
+
required = _ref2.required,
|
|
140
145
|
props = (0, _objectWithoutPropertiesLoose2["default"])(_ref2, _excluded2);
|
|
141
146
|
var onChangeHandler = (0, _react.useCallback)(function (e) {
|
|
142
147
|
var optionTriggered = options.find(function (option) {
|
|
@@ -154,29 +159,42 @@ var RadioBoxGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, f
|
|
|
154
159
|
width: optionWidth
|
|
155
160
|
}, (option == null ? void 0 : option.id) || (option == null ? void 0 : option.value));
|
|
156
161
|
});
|
|
157
|
-
return (0, _jsxRuntime.jsxs)("
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}, props, {
|
|
164
|
-
children: [groupLabel ? (0, _jsxRuntime.jsx)(_Label.Label, {
|
|
165
|
-
as: "legend",
|
|
166
|
-
sx: {
|
|
162
|
+
return (0, _jsxRuntime.jsxs)("div", {
|
|
163
|
+
children: [(0, _jsxRuntime.jsxs)("fieldset", (0, _extends2["default"])({
|
|
164
|
+
sx: (0, _extends2["default"])({
|
|
165
|
+
border: 0,
|
|
166
|
+
p: hasError ? 2 : 0,
|
|
167
|
+
display: 'inline-block',
|
|
167
168
|
mb: 2
|
|
168
|
-
},
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
169
|
+
}, hasError ? {
|
|
170
|
+
border: '1px solid',
|
|
171
|
+
borderColor: 'input.border.error',
|
|
172
|
+
borderRadius: 2
|
|
173
|
+
} : {}),
|
|
174
|
+
ref: forwardRef
|
|
175
|
+
}, props, {
|
|
176
|
+
children: [groupLabel ? (0, _jsxRuntime.jsx)(_Label.Label, {
|
|
177
|
+
as: "legend",
|
|
178
|
+
sx: {
|
|
179
|
+
mb: 2
|
|
180
|
+
},
|
|
181
|
+
required: required,
|
|
182
|
+
children: groupLabel
|
|
183
|
+
}) : (0, _jsxRuntime.jsx)(_ScreenReaderText["default"], {
|
|
184
|
+
children: "Choose an option"
|
|
185
|
+
}), (0, _jsxRuntime.jsx)("div", {
|
|
186
|
+
sx: {
|
|
187
|
+
display: 'flex',
|
|
188
|
+
gap: 2
|
|
189
|
+
},
|
|
190
|
+
children: renderedOptions
|
|
191
|
+
})]
|
|
192
|
+
})), hasError && errorMessage && (0, _jsxRuntime.jsx)(_Validation.Validation, {
|
|
193
|
+
isValid: false,
|
|
194
|
+
describedId: groupLabel,
|
|
195
|
+
children: errorMessage
|
|
178
196
|
})]
|
|
179
|
-
})
|
|
197
|
+
});
|
|
180
198
|
});
|
|
181
199
|
|
|
182
200
|
exports.RadioBoxGroup = RadioBoxGroup;
|
|
@@ -188,5 +206,9 @@ RadioBoxGroup.propTypes = {
|
|
|
188
206
|
name: _propTypes["default"].string,
|
|
189
207
|
disabled: _propTypes["default"].bool,
|
|
190
208
|
groupLabel: _propTypes["default"].string,
|
|
191
|
-
|
|
209
|
+
id: _propTypes["default"].string,
|
|
210
|
+
optionWidth: _propTypes["default"].string,
|
|
211
|
+
errorMessage: _propTypes["default"].string,
|
|
212
|
+
hasError: _propTypes["default"].bool,
|
|
213
|
+
required: _propTypes["default"].bool
|
|
192
214
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports["default"] = exports.Default = void 0;
|
|
4
|
+
exports["default"] = exports.Errors = exports.Default = void 0;
|
|
5
5
|
|
|
6
6
|
var _react = require("react");
|
|
7
7
|
|
|
@@ -50,4 +50,24 @@ var Default = function Default() {
|
|
|
50
50
|
});
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
-
exports.Default = Default;
|
|
53
|
+
exports.Default = Default;
|
|
54
|
+
|
|
55
|
+
var Errors = function Errors() {
|
|
56
|
+
var _useState2 = (0, _react.useState)(null),
|
|
57
|
+
value = _useState2[0],
|
|
58
|
+
setValue = _useState2[1];
|
|
59
|
+
|
|
60
|
+
return (0, _jsxRuntime.jsx)(_.RadioBoxGroup, {
|
|
61
|
+
defaultValue: value,
|
|
62
|
+
onChange: function onChange(e) {
|
|
63
|
+
return setValue(e.target.value);
|
|
64
|
+
},
|
|
65
|
+
options: options,
|
|
66
|
+
required: true,
|
|
67
|
+
groupLabel: "Radio Box Group",
|
|
68
|
+
hasError: true,
|
|
69
|
+
errorMessage: "This is an error message"
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
exports.Errors = Errors;
|
|
@@ -37,7 +37,7 @@ var _Form = require("../Form");
|
|
|
37
37
|
|
|
38
38
|
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
39
39
|
|
|
40
|
-
var _excluded = ["autoFilter", "className", "debounce", "displayMenu", "dropdownArrow", "
|
|
40
|
+
var _excluded = ["autoFilter", "className", "debounce", "displayMenu", "dropdownArrow", "forLabel", "getOptionLabel", "getOptionValue", "errorMessage", "hasError", "isInline", "label", "loading", "minLength", "noOptionsMessage", "onChange", "onInputChange", "options", "required", "searchIcon", "showAllValues", "resetOnBlur", "source", "value"];
|
|
41
41
|
|
|
42
42
|
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); }
|
|
43
43
|
|
|
@@ -147,11 +147,11 @@ var FormAutocomplete = /*#__PURE__*/_react["default"].forwardRef(function (_ref,
|
|
|
147
147
|
displayMenu = _ref$displayMenu === void 0 ? 'overlay' : _ref$displayMenu,
|
|
148
148
|
_ref$dropdownArrow = _ref.dropdownArrow,
|
|
149
149
|
dropdownArrow = _ref$dropdownArrow === void 0 ? DefaultArrow : _ref$dropdownArrow,
|
|
150
|
-
errorMessage = _ref.errorMessage,
|
|
151
150
|
_ref$forLabel = _ref.forLabel,
|
|
152
151
|
forLabel = _ref$forLabel === void 0 ? 'vip-autocomplete' : _ref$forLabel,
|
|
153
152
|
getOptionLabel = _ref.getOptionLabel,
|
|
154
153
|
getOptionValue = _ref.getOptionValue,
|
|
154
|
+
errorMessage = _ref.errorMessage,
|
|
155
155
|
hasError = _ref.hasError,
|
|
156
156
|
isInline = _ref.isInline,
|
|
157
157
|
label = _ref.label,
|
|
@@ -345,7 +345,9 @@ var FormAutocomplete = /*#__PURE__*/_react["default"].forwardRef(function (_ref,
|
|
|
345
345
|
return (0, _jsxRuntime.jsxs)("div", {
|
|
346
346
|
className: (0, _classnames["default"])('vip-form-autocomplete-component', className),
|
|
347
347
|
children: [label && !isInline && (0, _jsxRuntime.jsx)(SelectLabel, {}), (0, _jsxRuntime.jsx)("div", {
|
|
348
|
-
sx: (0, _extends2["default"])({}, defaultStyles, isInline && inlineStyles, searchIcon && searchIconStyles
|
|
348
|
+
sx: (0, _extends2["default"])({}, defaultStyles, isInline && inlineStyles, searchIcon && searchIconStyles, hasError ? {
|
|
349
|
+
borderColor: 'input.border.error'
|
|
350
|
+
} : {}),
|
|
349
351
|
children: (0, _jsxRuntime.jsxs)(_FormSelectContent.FormSelectContent, {
|
|
350
352
|
isInline: inlineLabel,
|
|
351
353
|
label: inlineLabel ? (0, _jsxRuntime.jsx)(SelectLabel, {}) : null,
|
|
@@ -36,12 +36,15 @@ var NewTabs = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
36
36
|
onValueChange = _ref$onValueChange === void 0 ? undefined : _ref$onValueChange,
|
|
37
37
|
_ref$defaultValue = _ref.defaultValue,
|
|
38
38
|
defaultValue = _ref$defaultValue === void 0 ? undefined : _ref$defaultValue,
|
|
39
|
+
_ref$value = _ref.value,
|
|
40
|
+
value = _ref$value === void 0 ? undefined : _ref$value,
|
|
39
41
|
_ref$className = _ref.className,
|
|
40
42
|
className = _ref$className === void 0 ? null : _ref$className,
|
|
41
43
|
_ref$sx = _ref.sx,
|
|
42
44
|
sx = _ref$sx === void 0 ? {} : _ref$sx;
|
|
43
45
|
return (0, _jsxRuntime.jsx)(TabsPrimitive.Root, {
|
|
44
46
|
ref: ref,
|
|
47
|
+
value: value,
|
|
45
48
|
defaultValue: defaultValue,
|
|
46
49
|
onValueChange: onValueChange,
|
|
47
50
|
className: (0, _classnames["default"])('vip-tabs-component', className),
|
|
@@ -55,6 +58,7 @@ NewTabs.propTypes = {
|
|
|
55
58
|
className: _propTypes["default"].any,
|
|
56
59
|
sx: _propTypes["default"].object,
|
|
57
60
|
defaultValue: _propTypes["default"].node,
|
|
61
|
+
value: _propTypes["default"].node,
|
|
58
62
|
onValueChange: _propTypes["default"].func,
|
|
59
63
|
children: _propTypes["default"].node.isRequired
|
|
60
64
|
};
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
exports.__esModule = true;
|
|
4
|
-
exports["default"] = exports.Default = void 0;
|
|
6
|
+
exports["default"] = exports.SetActiveTab = exports.Default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
9
|
|
|
6
10
|
var _ = require("..");
|
|
7
11
|
|
|
8
12
|
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
9
13
|
|
|
14
|
+
/**
|
|
15
|
+
* External dependencies
|
|
16
|
+
*/
|
|
17
|
+
|
|
10
18
|
/**
|
|
11
19
|
* Internal dependencies
|
|
12
20
|
*/
|
|
@@ -58,4 +66,58 @@ var Default = function Default() {
|
|
|
58
66
|
});
|
|
59
67
|
};
|
|
60
68
|
|
|
61
|
-
exports.Default = Default;
|
|
69
|
+
exports.Default = Default;
|
|
70
|
+
|
|
71
|
+
var SetActiveTab = function SetActiveTab() {
|
|
72
|
+
var _React$useState = _react["default"].useState('all'),
|
|
73
|
+
activeTab = _React$useState[0],
|
|
74
|
+
setActiveTab = _React$useState[1];
|
|
75
|
+
|
|
76
|
+
return (0, _jsxRuntime.jsxs)(_.NewTabs, {
|
|
77
|
+
value: activeTab,
|
|
78
|
+
onValueChange: function onValueChange(val) {
|
|
79
|
+
return setActiveTab(val);
|
|
80
|
+
},
|
|
81
|
+
children: [(0, _jsxRuntime.jsxs)(_.TabsList, {
|
|
82
|
+
title: "See all the content",
|
|
83
|
+
children: [(0, _jsxRuntime.jsx)(_.TabsTrigger, {
|
|
84
|
+
value: "all",
|
|
85
|
+
children: "All (5)"
|
|
86
|
+
}), (0, _jsxRuntime.jsx)(_.TabsTrigger, {
|
|
87
|
+
value: "live",
|
|
88
|
+
children: "Live (2)"
|
|
89
|
+
}), (0, _jsxRuntime.jsx)(_.TabsTrigger, {
|
|
90
|
+
value: "dev",
|
|
91
|
+
children: "In Development (3)"
|
|
92
|
+
}), (0, _jsxRuntime.jsx)(_.TabsTrigger, {
|
|
93
|
+
value: "protect",
|
|
94
|
+
disabled: true,
|
|
95
|
+
children: "Not accessible"
|
|
96
|
+
})]
|
|
97
|
+
}), (0, _jsxRuntime.jsx)(_.TabsContent, {
|
|
98
|
+
value: "all",
|
|
99
|
+
children: (0, _jsxRuntime.jsx)(_.Text, {
|
|
100
|
+
children: (0, _jsxRuntime.jsx)("button", {
|
|
101
|
+
type: "button",
|
|
102
|
+
onClick: function onClick() {
|
|
103
|
+
return setActiveTab('live');
|
|
104
|
+
},
|
|
105
|
+
children: "Switch to live tab"
|
|
106
|
+
})
|
|
107
|
+
})
|
|
108
|
+
}), (0, _jsxRuntime.jsx)(_.TabsContent, {
|
|
109
|
+
value: "live",
|
|
110
|
+
children: "Live content"
|
|
111
|
+
}), (0, _jsxRuntime.jsx)(_.TabsContent, {
|
|
112
|
+
value: "dev",
|
|
113
|
+
children: (0, _jsxRuntime.jsxs)(_.Text, {
|
|
114
|
+
children: ["In Development content ", (0, _jsxRuntime.jsx)("button", {
|
|
115
|
+
type: "button",
|
|
116
|
+
children: "Hey I am a button"
|
|
117
|
+
}), ' ']
|
|
118
|
+
})
|
|
119
|
+
})]
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
exports.SetActiveTab = SetActiveTab;
|
|
@@ -33,7 +33,7 @@ var TabsList = function TabsList(_ref) {
|
|
|
33
33
|
return (0, _jsxRuntime.jsx)(TabsPrimitive.List, {
|
|
34
34
|
sx: (0, _extends2["default"])({
|
|
35
35
|
borderBottom: '1px solid',
|
|
36
|
-
borderColor: '
|
|
36
|
+
borderColor: 'borders.2',
|
|
37
37
|
display: 'flex'
|
|
38
38
|
}, sx),
|
|
39
39
|
"aria-label": title,
|
|
@@ -7,6 +7,8 @@ exports.TabsTrigger = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
10
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
13
|
|
|
12
14
|
var TabsPrimitive = _interopRequireWildcard(require("@radix-ui/react-tabs"));
|
|
@@ -36,19 +38,18 @@ var styles = {
|
|
|
36
38
|
px: 0,
|
|
37
39
|
pb: 3,
|
|
38
40
|
border: 'none',
|
|
39
|
-
color: '
|
|
41
|
+
color: 'heading',
|
|
40
42
|
'&[data-state="active"]': {
|
|
41
|
-
color: '
|
|
42
|
-
fontWeight: '
|
|
43
|
-
boxShadow:
|
|
44
|
-
|
|
45
|
-
}
|
|
43
|
+
color: 'link',
|
|
44
|
+
fontWeight: 'regular',
|
|
45
|
+
boxShadow: 'inset 0 -1px 0 0, 0 1px 0 0',
|
|
46
|
+
boxShadowColor: 'borders.accent'
|
|
46
47
|
},
|
|
47
48
|
'&:disabled': {
|
|
48
|
-
color: '
|
|
49
|
+
color: 'muted'
|
|
49
50
|
},
|
|
50
51
|
':hover': {
|
|
51
|
-
fontWeight: '
|
|
52
|
+
fontWeight: 'regular',
|
|
52
53
|
color: 'heading'
|
|
53
54
|
},
|
|
54
55
|
'&:focus': function focus(theme) {
|
|
@@ -59,7 +60,7 @@ var styles = {
|
|
|
59
60
|
}
|
|
60
61
|
};
|
|
61
62
|
|
|
62
|
-
var TabsTrigger = function
|
|
63
|
+
var TabsTrigger = /*#__PURE__*/_react["default"].forwardRef(function (_ref, forwardRef) {
|
|
63
64
|
var value = _ref.value,
|
|
64
65
|
_ref$disabled = _ref.disabled,
|
|
65
66
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
@@ -70,9 +71,10 @@ var TabsTrigger = function TabsTrigger(_ref) {
|
|
|
70
71
|
value: value,
|
|
71
72
|
disabled: disabled,
|
|
72
73
|
sx: (0, _extends2["default"])({}, styles, sx),
|
|
74
|
+
ref: forwardRef,
|
|
73
75
|
children: children
|
|
74
76
|
});
|
|
75
|
-
};
|
|
77
|
+
});
|
|
76
78
|
|
|
77
79
|
exports.TabsTrigger = TabsTrigger;
|
|
78
80
|
TabsTrigger.propTypes = {
|
|
@@ -80,4 +82,5 @@ TabsTrigger.propTypes = {
|
|
|
80
82
|
value: _propTypes["default"].string,
|
|
81
83
|
disabled: _propTypes["default"].bool,
|
|
82
84
|
children: _propTypes["default"].node.isRequired
|
|
83
|
-
};
|
|
85
|
+
};
|
|
86
|
+
TabsTrigger.displayName = 'TabsTrigger';
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.ResourceItem = void 0;
|
|
7
|
+
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
|
|
10
|
+
var _ = require("..");
|
|
11
|
+
|
|
12
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
13
|
+
|
|
14
|
+
/** @jsxImportSource theme-ui */
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* External dependencies
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Internal dependencies
|
|
22
|
+
*/
|
|
23
|
+
var ResourceItem = function ResourceItem(_ref) {
|
|
24
|
+
var children = _ref.children,
|
|
25
|
+
item = _ref.item,
|
|
26
|
+
renderActions = _ref.renderActions,
|
|
27
|
+
_ref$relativeTime = _ref.relativeTime,
|
|
28
|
+
relativeTime = _ref$relativeTime === void 0 ? false : _ref$relativeTime,
|
|
29
|
+
_ref$timeOnly = _ref.timeOnly,
|
|
30
|
+
timeOnly = _ref$timeOnly === void 0 ? false : _ref$timeOnly,
|
|
31
|
+
dateKey = _ref.dateKey,
|
|
32
|
+
_ref$icon = _ref.icon,
|
|
33
|
+
icon = _ref$icon === void 0 ? null : _ref$icon;
|
|
34
|
+
return (0, _jsxRuntime.jsxs)(_.Flex, {
|
|
35
|
+
sx: {
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
gap: 3
|
|
38
|
+
},
|
|
39
|
+
children: [icon, (0, _jsxRuntime.jsx)(_.Box, {
|
|
40
|
+
sx: {
|
|
41
|
+
flex: '1 1 auto'
|
|
42
|
+
},
|
|
43
|
+
children: children
|
|
44
|
+
}), (0, _jsxRuntime.jsxs)(_.Flex, {
|
|
45
|
+
sx: {
|
|
46
|
+
flex: '0 0 auto',
|
|
47
|
+
alignItems: 'center',
|
|
48
|
+
gap: 3
|
|
49
|
+
},
|
|
50
|
+
children: [(0, _jsxRuntime.jsx)(_.Time, {
|
|
51
|
+
className: "time",
|
|
52
|
+
relativeTime: relativeTime,
|
|
53
|
+
timeOnly: timeOnly,
|
|
54
|
+
time: item[dateKey],
|
|
55
|
+
sx: {
|
|
56
|
+
color: 'muted',
|
|
57
|
+
mb: 0,
|
|
58
|
+
textAlign: 'right',
|
|
59
|
+
flex: '0 0 auto'
|
|
60
|
+
}
|
|
61
|
+
}), renderActions && (0, _jsxRuntime.jsxs)(_.Flex, {
|
|
62
|
+
className: "actions",
|
|
63
|
+
sx: {
|
|
64
|
+
alignItems: 'center',
|
|
65
|
+
gap: 3
|
|
66
|
+
},
|
|
67
|
+
children: [(0, _jsxRuntime.jsx)(_.Box, {
|
|
68
|
+
sx: {
|
|
69
|
+
width: 4,
|
|
70
|
+
height: 4,
|
|
71
|
+
borderRadius: 4,
|
|
72
|
+
bg: 'border'
|
|
73
|
+
}
|
|
74
|
+
}), renderActions(item)]
|
|
75
|
+
})]
|
|
76
|
+
})]
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
exports.ResourceItem = ResourceItem;
|
|
81
|
+
ResourceItem.propTypes = {
|
|
82
|
+
children: _propTypes["default"].node,
|
|
83
|
+
item: _propTypes["default"].object,
|
|
84
|
+
icon: _propTypes["default"].node,
|
|
85
|
+
relativeTime: _propTypes["default"].bool,
|
|
86
|
+
timeOnly: _propTypes["default"].bool,
|
|
87
|
+
dateKey: _propTypes["default"].string,
|
|
88
|
+
renderActions: _propTypes["default"].func
|
|
89
|
+
};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.ResourceList = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
|
|
14
|
+
var _ = require("..");
|
|
15
|
+
|
|
16
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
17
|
+
|
|
18
|
+
/** @jsxImportSource theme-ui */
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* External dependencies
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Internal dependencies
|
|
26
|
+
*/
|
|
27
|
+
var formatterOptions = {
|
|
28
|
+
weekday: 'long',
|
|
29
|
+
year: 'numeric',
|
|
30
|
+
month: 'long',
|
|
31
|
+
day: 'numeric'
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
var formatDate = function formatDate(date) {
|
|
35
|
+
var today = new Date();
|
|
36
|
+
|
|
37
|
+
if (date.getFullYear() !== today.getFullYear()) {
|
|
38
|
+
return date.toLocaleDateString(formatterOptions);
|
|
39
|
+
} else if (date.getMonth() !== today.getMonth()) {
|
|
40
|
+
return date.toLocaleDateString(formatterOptions);
|
|
41
|
+
} else if (date.getDate() < today.getDate() - 1) {
|
|
42
|
+
return date.toLocaleDateString(formatterOptions);
|
|
43
|
+
} else if (date.getDate() === today.getDate() - 1) {
|
|
44
|
+
return 'Yesterday';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return 'Today';
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
var StyledListItem = function StyledListItem(props) {
|
|
51
|
+
return (0, _jsxRuntime.jsx)(_.Box, (0, _extends3["default"])({
|
|
52
|
+
as: "li",
|
|
53
|
+
sx: {
|
|
54
|
+
py: 2,
|
|
55
|
+
borderBottom: '1px solid',
|
|
56
|
+
borderColor: 'borders.2',
|
|
57
|
+
listStyleType: 'none',
|
|
58
|
+
margin: 0,
|
|
59
|
+
px: 0
|
|
60
|
+
}
|
|
61
|
+
}, props));
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
var ResourceList = function ResourceList(_ref) {
|
|
65
|
+
var _ref$groupedByDay = _ref.groupedByDay,
|
|
66
|
+
groupedByDay = _ref$groupedByDay === void 0 ? false : _ref$groupedByDay,
|
|
67
|
+
items = _ref.items,
|
|
68
|
+
renderItem = _ref.renderItem,
|
|
69
|
+
dateKey = _ref.dateKey;
|
|
70
|
+
var groupedItems = {};
|
|
71
|
+
|
|
72
|
+
if (groupedByDay) {
|
|
73
|
+
groupedItems = items == null ? void 0 : items.reduce(function (itemGroups, item) {
|
|
74
|
+
var _extends2;
|
|
75
|
+
|
|
76
|
+
var formattedDate = formatDate(item[dateKey]);
|
|
77
|
+
var itemsAtDate = itemGroups[formattedDate];
|
|
78
|
+
return (0, _extends3["default"])({}, itemGroups, (_extends2 = {}, _extends2[formattedDate] = itemsAtDate ? [].concat(itemsAtDate, [item]) : [item], _extends2));
|
|
79
|
+
}, {});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
var renderItemList = function renderItemList(itemsList) {
|
|
83
|
+
return itemsList.map(function (item, index) {
|
|
84
|
+
return (0, _jsxRuntime.jsx)(StyledListItem, {
|
|
85
|
+
children: renderItem(item)
|
|
86
|
+
}, index);
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
var renderGoupedItems = function renderGoupedItems() {
|
|
91
|
+
return (0, _react.useMemo)(function () {
|
|
92
|
+
return Object.keys(groupedItems).map(function (groupName, index) {
|
|
93
|
+
return (0, _jsxRuntime.jsxs)(_.Box, {
|
|
94
|
+
sx: {
|
|
95
|
+
mb: 4
|
|
96
|
+
},
|
|
97
|
+
as: "li",
|
|
98
|
+
children: [(0, _jsxRuntime.jsx)(_.Heading, {
|
|
99
|
+
variant: "h4",
|
|
100
|
+
as: "h4",
|
|
101
|
+
sx: {
|
|
102
|
+
mb: 3
|
|
103
|
+
},
|
|
104
|
+
children: groupName
|
|
105
|
+
}), (0, _jsxRuntime.jsx)(_.Box, {
|
|
106
|
+
as: "ul",
|
|
107
|
+
sx: {
|
|
108
|
+
listStyleType: 'none',
|
|
109
|
+
m: 0,
|
|
110
|
+
p: 0,
|
|
111
|
+
borderTop: '1px solid',
|
|
112
|
+
borderColor: 'border'
|
|
113
|
+
},
|
|
114
|
+
children: renderItemList(groupedItems[groupName])
|
|
115
|
+
})]
|
|
116
|
+
}, index);
|
|
117
|
+
});
|
|
118
|
+
}, [groupedItems]);
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
return (0, _jsxRuntime.jsx)(_.Box, {
|
|
122
|
+
as: "ul",
|
|
123
|
+
sx: {
|
|
124
|
+
listStyleType: 'none',
|
|
125
|
+
m: 0,
|
|
126
|
+
p: 0
|
|
127
|
+
},
|
|
128
|
+
className: "vip-resource-list-component",
|
|
129
|
+
children: groupedByDay ? renderGoupedItems(groupedItems) : renderItemList(items)
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
exports.ResourceList = ResourceList;
|
|
134
|
+
ResourceList.propTypes = {
|
|
135
|
+
groupedByDay: _propTypes["default"].bool,
|
|
136
|
+
items: _propTypes["default"].array,
|
|
137
|
+
renderItem: _propTypes["default"].func,
|
|
138
|
+
relativeTime: _propTypes["default"].bool,
|
|
139
|
+
dateKey: _propTypes["default"].string
|
|
140
|
+
};
|