@telus-uds/components-web 1.11.0 → 1.12.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/CHANGELOG.md +23 -2
- package/lib/DatePicker/CalendarContainer.js +60 -71
- package/lib/DatePicker/DatePicker.js +66 -22
- package/lib/List/List.js +11 -0
- package/lib/List/ListItem.js +48 -0
- package/lib/List/index.js +16 -0
- package/lib/PriceLockup/PriceLockup.js +27 -13
- package/lib/SkeletonProvider/SkeletonImage.js +55 -0
- package/lib/SkeletonProvider/SkeletonProvider.js +84 -0
- package/lib/SkeletonProvider/SkeletonTypography.js +54 -0
- package/lib/SkeletonProvider/index.js +13 -0
- package/lib/Table/Table.js +14 -5
- package/lib/Toast/Toast.js +1 -1
- package/lib/index.js +19 -1
- package/lib-module/DatePicker/CalendarContainer.js +61 -72
- package/lib-module/DatePicker/DatePicker.js +67 -23
- package/lib-module/List/List.js +2 -0
- package/lib-module/List/ListItem.js +31 -0
- package/lib-module/List/index.js +4 -0
- package/lib-module/PriceLockup/PriceLockup.js +27 -13
- package/lib-module/SkeletonProvider/SkeletonImage.js +42 -0
- package/lib-module/SkeletonProvider/SkeletonProvider.js +65 -0
- package/lib-module/SkeletonProvider/SkeletonTypography.js +41 -0
- package/lib-module/SkeletonProvider/index.js +2 -0
- package/lib-module/Table/Table.js +14 -5
- package/lib-module/Toast/Toast.js +1 -1
- package/lib-module/index.js +2 -0
- package/package.json +3 -3
- package/src/DatePicker/CalendarContainer.jsx +61 -71
- package/src/DatePicker/DatePicker.jsx +47 -19
- package/src/List/List.jsx +3 -0
- package/src/List/ListItem.jsx +21 -0
- package/src/List/index.js +6 -0
- package/src/PriceLockup/PriceLockup.jsx +13 -7
- package/src/SkeletonProvider/SkeletonImage.jsx +33 -0
- package/src/SkeletonProvider/SkeletonProvider.jsx +62 -0
- package/src/SkeletonProvider/SkeletonTypography.jsx +31 -0
- package/src/SkeletonProvider/index.js +3 -0
- package/src/Table/Table.jsx +7 -4
- package/src/Toast/Toast.jsx +1 -0
- package/src/index.js +2 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _componentsBase = require("@telus-uds/components-base");
|
|
13
|
+
|
|
14
|
+
var _Image = _interopRequireDefault(require("../Image"));
|
|
15
|
+
|
|
16
|
+
var _SkeletonTypography = _interopRequireDefault(require("./SkeletonTypography"));
|
|
17
|
+
|
|
18
|
+
var _SkeletonImage = _interopRequireDefault(require("./SkeletonImage"));
|
|
19
|
+
|
|
20
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
+
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
|
|
24
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
+
|
|
26
|
+
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; }
|
|
27
|
+
|
|
28
|
+
const SkeletonProvider = _ref => {
|
|
29
|
+
let {
|
|
30
|
+
children,
|
|
31
|
+
show
|
|
32
|
+
} = _ref;
|
|
33
|
+
|
|
34
|
+
if (!show) {
|
|
35
|
+
return children;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const mapChild = child => {
|
|
39
|
+
if (!child) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
let childElement = child;
|
|
44
|
+
|
|
45
|
+
if (childElement.props && 'children' in childElement.props) {
|
|
46
|
+
const {
|
|
47
|
+
children: elementChildren
|
|
48
|
+
} = childElement.props;
|
|
49
|
+
const mappedChildren = Array.isArray(elementChildren) ? elementChildren.map(mapChild) : mapChild(elementChildren);
|
|
50
|
+
childElement = /*#__PURE__*/(0, _react.cloneElement)(childElement, {
|
|
51
|
+
children: mappedChildren
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (childElement.type === _componentsBase.Typography) {
|
|
56
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SkeletonTypography.default, { ...childElement.props.skeleton,
|
|
57
|
+
show: show,
|
|
58
|
+
children: childElement
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (childElement.type === _Image.default) {
|
|
63
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SkeletonImage.default, { ...childElement.props.skeleton,
|
|
64
|
+
imgHeight: childElement.props.height,
|
|
65
|
+
rounded: childElement.props.rounded,
|
|
66
|
+
show: show,
|
|
67
|
+
children: childElement
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return childElement;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
75
|
+
children: _react.Children.map(children, mapChild)
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
SkeletonProvider.propTypes = {
|
|
80
|
+
show: _propTypes.default.bool.isRequired,
|
|
81
|
+
children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.arrayOf(_propTypes.default.node)]).isRequired
|
|
82
|
+
};
|
|
83
|
+
var _default = SkeletonProvider;
|
|
84
|
+
exports.default = _default;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _componentsBase = require("@telus-uds/components-base");
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
var _Skeleton$propTypes, _Skeleton$propTypes2, _Skeleton$propTypes3, _Skeleton$propTypes4, _Skeleton$propTypes5;
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
const SkeletonTypography = _ref => {
|
|
21
|
+
let {
|
|
22
|
+
show,
|
|
23
|
+
size,
|
|
24
|
+
sizeIndex,
|
|
25
|
+
sizePixels,
|
|
26
|
+
characters,
|
|
27
|
+
lines,
|
|
28
|
+
children
|
|
29
|
+
} = _ref;
|
|
30
|
+
|
|
31
|
+
if (!show) {
|
|
32
|
+
return children;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.Skeleton, {
|
|
36
|
+
size: size,
|
|
37
|
+
sizeIndex: sizeIndex,
|
|
38
|
+
sizePixels: sizePixels,
|
|
39
|
+
characters: characters,
|
|
40
|
+
lines: lines
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
SkeletonTypography.propTypes = {
|
|
45
|
+
show: _propTypes.default.bool.isRequired,
|
|
46
|
+
children: _propTypes.default.node,
|
|
47
|
+
size: (_Skeleton$propTypes = _componentsBase.Skeleton.propTypes) === null || _Skeleton$propTypes === void 0 ? void 0 : _Skeleton$propTypes.size,
|
|
48
|
+
sizeIndex: (_Skeleton$propTypes2 = _componentsBase.Skeleton.propTypes) === null || _Skeleton$propTypes2 === void 0 ? void 0 : _Skeleton$propTypes2.sizeIndex,
|
|
49
|
+
sizePixels: (_Skeleton$propTypes3 = _componentsBase.Skeleton.propTypes) === null || _Skeleton$propTypes3 === void 0 ? void 0 : _Skeleton$propTypes3.sizePixels,
|
|
50
|
+
characters: (_Skeleton$propTypes4 = _componentsBase.Skeleton.propTypes) === null || _Skeleton$propTypes4 === void 0 ? void 0 : _Skeleton$propTypes4.characters,
|
|
51
|
+
lines: (_Skeleton$propTypes5 = _componentsBase.Skeleton.propTypes) === null || _Skeleton$propTypes5 === void 0 ? void 0 : _Skeleton$propTypes5.lines
|
|
52
|
+
};
|
|
53
|
+
var _default = SkeletonTypography;
|
|
54
|
+
exports.default = _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _SkeletonProvider = _interopRequireDefault(require("./SkeletonProvider"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
var _default = _SkeletonProvider.default;
|
|
13
|
+
exports.default = _default;
|
package/lib/Table/Table.js
CHANGED
|
@@ -35,7 +35,12 @@ const StyledContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
|
|
|
35
35
|
const StyledTable = /*#__PURE__*/_styledComponents.default.table.withConfig({
|
|
36
36
|
displayName: "Table__StyledTable",
|
|
37
37
|
componentId: "components-web__sc-10d9q3m-1"
|
|
38
|
-
})(["margin:0;padding:0;"]
|
|
38
|
+
})(["margin:0;padding:0;width:", ";"], _ref => {
|
|
39
|
+
let {
|
|
40
|
+
tableWidth
|
|
41
|
+
} = _ref;
|
|
42
|
+
return `${tableWidth}px`;
|
|
43
|
+
});
|
|
39
44
|
|
|
40
45
|
const TableContext = /*#__PURE__*/_react.default.createContext({});
|
|
41
46
|
|
|
@@ -58,14 +63,15 @@ const useTableContext = () => (0, _react.useContext)(TableContext);
|
|
|
58
63
|
|
|
59
64
|
exports.useTableContext = useTableContext;
|
|
60
65
|
|
|
61
|
-
const Table =
|
|
66
|
+
const Table = _ref2 => {
|
|
62
67
|
let {
|
|
63
68
|
children,
|
|
69
|
+
fullWidth = false,
|
|
64
70
|
text = 'medium',
|
|
65
71
|
tokens,
|
|
66
72
|
variant,
|
|
67
73
|
...rest
|
|
68
|
-
} =
|
|
74
|
+
} = _ref2;
|
|
69
75
|
const {
|
|
70
76
|
tablePaddingBottom
|
|
71
77
|
} = (0, _componentsBase.useThemeTokens)('Table', tokens, variant);
|
|
@@ -75,8 +81,10 @@ const Table = _ref => {
|
|
|
75
81
|
const [tableWidth, setTableWidth] = (0, _react.useState)(0);
|
|
76
82
|
(0, _componentsBase.useSafeLayoutEffect)(() => {
|
|
77
83
|
const updateDimensions = () => {
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
const containerClientWidth = containerRef.current.clientWidth;
|
|
85
|
+
const responsiveTableWidth = fullWidth ? containerClientWidth : tableRef.current.clientWidth;
|
|
86
|
+
setContainerWidth(containerClientWidth);
|
|
87
|
+
setTableWidth(responsiveTableWidth);
|
|
80
88
|
};
|
|
81
89
|
|
|
82
90
|
const throttledUpdateDimensions = (0, _lodash.default)(updateDimensions, 100, {
|
|
@@ -105,6 +113,7 @@ const Table = _ref => {
|
|
|
105
113
|
variant
|
|
106
114
|
},
|
|
107
115
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledTable, {
|
|
116
|
+
tableWidth: tableWidth,
|
|
108
117
|
cellSpacing: 0,
|
|
109
118
|
ref: tableRef,
|
|
110
119
|
children: children
|
package/lib/Toast/Toast.js
CHANGED
|
@@ -39,7 +39,7 @@ const animation = props => (0, _styledComponents.css)(["", " 1s ease-in-out 2s f
|
|
|
39
39
|
const ToastContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
|
|
40
40
|
displayName: "Toast__ToastContainer",
|
|
41
41
|
componentId: "components-web__sc-p78jdh-0"
|
|
42
|
-
})(["display:flex;justify-content:center;align-items:center;background:", ";gap:", ";height:0;overflow:hidden;animation:", ";"], _ref => {
|
|
42
|
+
})(["display:flex;justify-content:center;align-items:center;flex-wrap:wrap;background:", ";gap:", ";height:0;overflow:hidden;animation:", ";"], _ref => {
|
|
43
43
|
let {
|
|
44
44
|
containerBackgroundColor
|
|
45
45
|
} = _ref;
|
package/lib/index.js
CHANGED
|
@@ -38,9 +38,11 @@ var _exportNames = {
|
|
|
38
38
|
StoryCard: true,
|
|
39
39
|
Disclaimer: true,
|
|
40
40
|
Card: true,
|
|
41
|
+
List: true,
|
|
41
42
|
TermsAndConditions: true,
|
|
42
43
|
NavigationBar: true,
|
|
43
|
-
Progress: true
|
|
44
|
+
Progress: true,
|
|
45
|
+
SkeletonProvider: true
|
|
44
46
|
};
|
|
45
47
|
Object.defineProperty(exports, "Autocomplete", {
|
|
46
48
|
enumerable: true,
|
|
@@ -120,6 +122,12 @@ Object.defineProperty(exports, "Image", {
|
|
|
120
122
|
return _Image.default;
|
|
121
123
|
}
|
|
122
124
|
});
|
|
125
|
+
Object.defineProperty(exports, "List", {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
get: function () {
|
|
128
|
+
return _List.default;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
123
131
|
Object.defineProperty(exports, "Listbox", {
|
|
124
132
|
enumerable: true,
|
|
125
133
|
get: function () {
|
|
@@ -192,6 +200,12 @@ Object.defineProperty(exports, "Ribbon", {
|
|
|
192
200
|
return _Ribbon.default;
|
|
193
201
|
}
|
|
194
202
|
});
|
|
203
|
+
Object.defineProperty(exports, "SkeletonProvider", {
|
|
204
|
+
enumerable: true,
|
|
205
|
+
get: function () {
|
|
206
|
+
return _SkeletonProvider.default;
|
|
207
|
+
}
|
|
208
|
+
});
|
|
195
209
|
Object.defineProperty(exports, "Span", {
|
|
196
210
|
enumerable: true,
|
|
197
211
|
get: function () {
|
|
@@ -333,12 +347,16 @@ var _Disclaimer = _interopRequireDefault(require("./Disclaimer"));
|
|
|
333
347
|
|
|
334
348
|
var _Card = _interopRequireDefault(require("./Card"));
|
|
335
349
|
|
|
350
|
+
var _List = _interopRequireDefault(require("./List"));
|
|
351
|
+
|
|
336
352
|
var _TermsAndConditions = _interopRequireDefault(require("./TermsAndConditions"));
|
|
337
353
|
|
|
338
354
|
var _NavigationBar = _interopRequireDefault(require("./NavigationBar"));
|
|
339
355
|
|
|
340
356
|
var _Progress = _interopRequireDefault(require("./Progress"));
|
|
341
357
|
|
|
358
|
+
var _SkeletonProvider = _interopRequireDefault(require("./SkeletonProvider"));
|
|
359
|
+
|
|
342
360
|
var _baseExports = require("./baseExports");
|
|
343
361
|
|
|
344
362
|
Object.keys(_baseExports).forEach(function (key) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import styled from 'styled-components';
|
|
2
|
-
import defaultReactDatesCss from './reactDatesCss';
|
|
2
|
+
import defaultReactDatesCss from './reactDatesCss'; // calendarDayDefaultHeight and calendarDayDefaultWidth
|
|
3
|
+
// refer to circle size when selected, focused, or hovered and is passed with getResponsiveCircleSize in DatePicker
|
|
4
|
+
|
|
3
5
|
const CalendarContainer = /*#__PURE__*/styled.div.withConfig({
|
|
4
6
|
displayName: "CalendarContainer",
|
|
5
7
|
componentId: "components-web__sc-qdc1tg-0"
|
|
@@ -9,7 +11,9 @@ const CalendarContainer = /*#__PURE__*/styled.div.withConfig({
|
|
|
9
11
|
validation,
|
|
10
12
|
remainingTokens,
|
|
11
13
|
calendarMonthFontTokens,
|
|
12
|
-
|
|
14
|
+
calendarDayDefaultHeight,
|
|
15
|
+
calendarDayDefaultWidth,
|
|
16
|
+
calendarWeekFontTokens,
|
|
13
17
|
defaultFontTokens
|
|
14
18
|
} = _ref;
|
|
15
19
|
return `
|
|
@@ -22,24 +26,25 @@ const CalendarContainer = /*#__PURE__*/styled.div.withConfig({
|
|
|
22
26
|
display: block;
|
|
23
27
|
}
|
|
24
28
|
.SingleDatePicker_picker {
|
|
29
|
+
background-color: ${remainingTokens.calendarBackgroundColor};
|
|
25
30
|
box-shadow: none;
|
|
26
31
|
border: 1px solid ${remainingTokens.singleDatePickerBorderColor};
|
|
27
|
-
border-radius: ${remainingTokens.singleDatePickerRadius};
|
|
32
|
+
border-radius: ${remainingTokens.singleDatePickerRadius}px;
|
|
28
33
|
padding: ${remainingTokens.singleDatePickerPaddingTopBottom}px ${remainingTokens.singleDatePickerLeftRight}px;
|
|
29
34
|
z-index: 3;
|
|
30
35
|
}
|
|
31
36
|
.DateInput {
|
|
32
37
|
width: 100%;
|
|
33
38
|
border: 2px solid ${remainingTokens.dateInputBorderColor};
|
|
34
|
-
border-radius: ${remainingTokens.dateInputBorderRadius};
|
|
35
39
|
${validation === 'error' && `input { border-color: ${remainingTokens.invalidInputMixin}; }`};
|
|
36
40
|
${validation === 'success' && `input { border-color: ${remainingTokens.validInputMixin}; }`};
|
|
37
41
|
}
|
|
38
42
|
.DateInput:hover {
|
|
43
|
+
border-radius: ${remainingTokens.dateInputBorderRadius}px;
|
|
39
44
|
border: 2px solid ${remainingTokens.dateInputHoverBorderColor};
|
|
40
45
|
}
|
|
41
|
-
.
|
|
42
|
-
border:
|
|
46
|
+
.DateInput_input:focus {
|
|
47
|
+
border: 3px solid ${remainingTokens.dateInputFocusBorderColor};
|
|
43
48
|
}
|
|
44
49
|
.SingleDatePickerInput__withBorder {
|
|
45
50
|
border: 0 !important;
|
|
@@ -60,94 +65,63 @@ const CalendarContainer = /*#__PURE__*/styled.div.withConfig({
|
|
|
60
65
|
z-index: 4;
|
|
61
66
|
left: ${(daySize * 8.5 - 20) / 2}px;
|
|
62
67
|
}
|
|
68
|
+
.DateInput_fangShape {
|
|
69
|
+
fill: ${remainingTokens.calendarBackgroundColor}
|
|
70
|
+
}
|
|
63
71
|
.DateInput_fangStroke {
|
|
64
72
|
stroke: ${remainingTokens.dateInputStrokeColor};
|
|
65
73
|
}
|
|
66
74
|
.CalendarMonth_caption {
|
|
67
75
|
color: ${remainingTokens.calendarMonthCaptionColor};
|
|
68
76
|
font-family: ${calendarMonthFontTokens.fontFamily};
|
|
69
|
-
font-size: ${remainingTokens.calendarMonthCaptionFontSize};
|
|
77
|
+
font-size: ${remainingTokens.calendarMonthCaptionFontSize}px;
|
|
70
78
|
font-weight: ${calendarMonthFontTokens.fontWeight};
|
|
71
79
|
line-height: ${remainingTokens.calendarMonthCaptionLineHeight};
|
|
72
80
|
padding-bottom: ${remainingTokens.calendarMonthCaptionPaddingBottom}px;
|
|
73
81
|
}
|
|
82
|
+
.DayPicker{
|
|
83
|
+
background-color: ${remainingTokens.calendarBackgroundColor};
|
|
84
|
+
}
|
|
74
85
|
.DayPicker__withBorder {
|
|
75
86
|
box-shadow: none;
|
|
76
87
|
}
|
|
77
|
-
.
|
|
78
|
-
align-items: center;
|
|
88
|
+
.DayPickerNavigation {
|
|
79
89
|
display: flex;
|
|
80
|
-
justify-content:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1);
|
|
85
|
-
max-height: ${remainingTokens.dayPickerNavigationButtonMaxHeight}px;
|
|
86
|
-
max-width: ${remainingTokens.dayPickerNavigationButtonMaxWidth}px;
|
|
87
|
-
position: absolute;
|
|
88
|
-
top: 18px;
|
|
89
|
-
line-height: 0.78;
|
|
90
|
-
padding: ${remainingTokens.dayPickerNavigationButtonPadding}px;
|
|
91
|
-
cursor: pointer;
|
|
92
|
-
user-select: none;
|
|
93
|
-
&:nth-child(1) {
|
|
94
|
-
left: ${remainingTokens.dayPickerNavigationButtonChildLeft}px;
|
|
95
|
-
}
|
|
96
|
-
&:nth-child(2) {
|
|
97
|
-
right: ${remainingTokens.dayPickerNavigationButtonChildRight}px;
|
|
98
|
-
i {
|
|
99
|
-
font-family: 'TELUS Core Icons';
|
|
100
|
-
display: inline-block;
|
|
101
|
-
font-weight: normal;
|
|
102
|
-
font-style: normal;
|
|
103
|
-
speak: none;
|
|
104
|
-
text-decoration: inherit;
|
|
105
|
-
text-transform: none;
|
|
106
|
-
text-rendering: auto;
|
|
107
|
-
-webkit-font-smoothing: antialiased;
|
|
108
|
-
-moz-osx-font-smoothing: grayscale;
|
|
109
|
-
line-height: 1;
|
|
110
|
-
vertical-align: middle;
|
|
111
|
-
&:before {
|
|
112
|
-
content: '\\F107';
|
|
113
|
-
display: inline-block;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
& svg {
|
|
118
|
-
fill: ${remainingTokens.dayPickerNavigationButtonChildSvgFill};
|
|
119
|
-
}
|
|
90
|
+
justify-content: space-between;
|
|
91
|
+
align-self: center;
|
|
92
|
+
top: 23px;
|
|
93
|
+
padding: 0px ${remainingTokens.dayPickerNavigationButtonPadding}px;
|
|
120
94
|
}
|
|
121
95
|
.DayPickerNavigation_button__default:focus,
|
|
122
|
-
.
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
.DayPickerNavigation_svg__horizontal {
|
|
126
|
-
fill: ${remainingTokens.dayPickerNavigationSVGHorizontalFill};
|
|
127
|
-
}
|
|
96
|
+
.DayPickerNavigation_button:hover,
|
|
97
|
+
.DayPickerNavigation_svg__horizontal,
|
|
128
98
|
.DayPicker_weekHeader {
|
|
129
99
|
color: ${remainingTokens.dayPickerWeekHeaderColor};
|
|
130
|
-
font-family: ${
|
|
131
|
-
font-weight: ${dayPickerNavigationButtonTokens.fontWeight};
|
|
100
|
+
font-family: ${calendarWeekFontTokens.fontFamily};
|
|
132
101
|
font-feature-settings: 'ss01' on, 'ss03' on, 'ss08' on;
|
|
133
102
|
line-height: ${remainingTokens.dayPickerWeekHeaderLineHeight};
|
|
134
|
-
& small {
|
|
135
|
-
font-size: ${remainingTokens.dayPickerWeekHeaderSmall};
|
|
136
|
-
}
|
|
137
103
|
& li {
|
|
104
|
+
font-size: ${remainingTokens.dayPickerWeekHeaderSmall}px;
|
|
138
105
|
max-width: ${daySize}px !important;
|
|
139
106
|
}
|
|
140
107
|
}
|
|
108
|
+
.CalendarMonthGrid {
|
|
109
|
+
background-color: ${remainingTokens.calendarBackgroundColor};
|
|
110
|
+
}
|
|
111
|
+
.CalendarMonth {
|
|
112
|
+
background-color: ${remainingTokens.calendarBackgroundColor};
|
|
113
|
+
}
|
|
141
114
|
.CalendarDay__default {
|
|
142
115
|
padding: 0px;
|
|
143
116
|
position: relative;
|
|
117
|
+
background: ${remainingTokens.calendarDayDefaultBackgroundColor};
|
|
144
118
|
background-clip: padding-box;
|
|
145
|
-
border: ${remainingTokens.calendarDayDefaultBorder} solid ${remainingTokens.calendarDayDefaultBorderColor};
|
|
119
|
+
border: ${remainingTokens.calendarDayDefaultBorder}px solid ${remainingTokens.calendarDayDefaultBorderColor};
|
|
146
120
|
vertical-align: middle;
|
|
147
121
|
font-family: ${defaultFontTokens.fontFamily};
|
|
148
122
|
font-weight: ${defaultFontTokens.fontWeight}
|
|
149
123
|
font-feature-settings: 'ss01' on, 'ss03' on, 'ss08' on;
|
|
150
|
-
font-size: ${remainingTokens.calendarDayDefaultFontSize};
|
|
124
|
+
font-size: ${remainingTokens.calendarDayDefaultFontSize}px;
|
|
151
125
|
line-height: ${daySize - 3}px !important;
|
|
152
126
|
color: ${remainingTokens.calendarDayDefaultColor};
|
|
153
127
|
text-decoration: none;
|
|
@@ -158,36 +132,51 @@ const CalendarContainer = /*#__PURE__*/styled.div.withConfig({
|
|
|
158
132
|
top: 50%;
|
|
159
133
|
left: 50%;
|
|
160
134
|
transform: translate(-50%, -50%);
|
|
161
|
-
height: ${
|
|
162
|
-
width: ${
|
|
135
|
+
height: ${calendarDayDefaultHeight}px;
|
|
136
|
+
width: ${calendarDayDefaultWidth}px;
|
|
163
137
|
border-radius: 50%;
|
|
164
138
|
background: transparent;
|
|
165
139
|
transition: all 0.3s;
|
|
166
140
|
z-index: -1;
|
|
167
141
|
}
|
|
168
142
|
}
|
|
169
|
-
.CalendarDay__default:hover
|
|
170
|
-
|
|
171
|
-
.CalendarDay__selected:active,
|
|
172
|
-
.CalendarDay__selected:hover {
|
|
173
|
-
background: none;
|
|
143
|
+
.CalendarDay__default:hover {
|
|
144
|
+
background: ${remainingTokens.calendarDaySelectedHoverBackground};
|
|
174
145
|
border: 1px solid ${remainingTokens.calendarDaySelectedHoverBorderColor};
|
|
175
146
|
color: ${remainingTokens.calendarDaySelectedHoverColor};
|
|
176
147
|
text-decoration: none;
|
|
177
148
|
z-index: 0;
|
|
178
149
|
&:before {
|
|
150
|
+
border: 1px solid ${remainingTokens.calendarDaySelectedHoverBeforeBorderColor};
|
|
179
151
|
background: ${remainingTokens.calendarDaySelectedHoverBeforeBackground};
|
|
180
152
|
}
|
|
181
153
|
}
|
|
154
|
+
.CalendarDay__default:focus{
|
|
155
|
+
background: ${remainingTokens.calendarDaySelectedHoverBackground};
|
|
156
|
+
border: 1px solid ${remainingTokens.calendarDaySelectedHoverBorderColor};
|
|
157
|
+
color: ${remainingTokens.calendarDaySelectedHoverColor};
|
|
158
|
+
text-decoration: none;
|
|
159
|
+
z-index: 0;
|
|
160
|
+
&:before {
|
|
161
|
+
border: 1px solid ${remainingTokens.calendarDaySelectedHoverBeforeBorderColor};
|
|
162
|
+
background: ${remainingTokens.calendarDaySelectedFocusBeforeBackground};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
.CalendarDay__selected,
|
|
166
|
+
.CalendarDay__selected:active,
|
|
167
|
+
.CalendarDay__selected:hover
|
|
182
168
|
.CalendarDay__default.CalendarDay__selected,
|
|
183
169
|
.CalendarDay__default.CalendarDay__selected:active
|
|
184
|
-
.CalendarDay__default.CalendarDay__selected:hover
|
|
170
|
+
.CalendarDay__default.CalendarDay__selected:hover{
|
|
171
|
+
background: ${remainingTokens.calendarDayDefaultCalendarDaySelectedHoverBackground};
|
|
172
|
+
border: 1px solid ${remainingTokens.calendarDaySelectedHoverBorderColor};
|
|
185
173
|
color: ${remainingTokens.calendarDayDefaultCalendarDaySelectedHoverColor};
|
|
186
174
|
text-decoration: none;
|
|
175
|
+
z-index: 0;
|
|
187
176
|
&:before {
|
|
188
|
-
background: ${remainingTokens.
|
|
189
|
-
}
|
|
177
|
+
background: ${remainingTokens.calendarDayDefaultCalendarDaySelectedHoverBeforeBackground};
|
|
190
178
|
}
|
|
179
|
+
}
|
|
191
180
|
.CalendarDay__blocked_out_of_range,
|
|
192
181
|
.CalendarDay__blocked_out_of_range:active,
|
|
193
182
|
.CalendarDay__blocked_out_of_range:hover,
|
|
@@ -5,7 +5,7 @@ import momentPropTypes from 'react-moment-proptypes';
|
|
|
5
5
|
import 'react-dates/initialize';
|
|
6
6
|
import SingleDatePicker from 'react-dates/lib/components/SingleDatePicker';
|
|
7
7
|
import DayPickerSingleDateController from 'react-dates/lib/components/DayPickerSingleDateController';
|
|
8
|
-
import {
|
|
8
|
+
import { IconButton, InputSupports, selectSystemProps, useCopy, useViewport, useThemeTokens, applyTextStyles } from '@telus-uds/components-base';
|
|
9
9
|
import CalendarContainer from './CalendarContainer';
|
|
10
10
|
import dictionary from './dictionary';
|
|
11
11
|
import { htmlAttrs } from '../utils';
|
|
@@ -28,12 +28,19 @@ const getResponsiveDaySize = function () {
|
|
|
28
28
|
return responsiveDaySize;
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
const getResponsiveCircleSize = function () {
|
|
32
|
+
let inline = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
33
|
+
let viewport = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'md';
|
|
34
|
+
let responsiveCircleSize;
|
|
35
|
+
|
|
36
|
+
if (viewport === 'xs') {
|
|
37
|
+
responsiveCircleSize = 26;
|
|
38
|
+
} else {
|
|
39
|
+
responsiveCircleSize = inline ? 44 : 26;
|
|
35
40
|
}
|
|
36
|
-
|
|
41
|
+
|
|
42
|
+
return responsiveCircleSize;
|
|
43
|
+
};
|
|
37
44
|
|
|
38
45
|
const MonthCenterContainer = /*#__PURE__*/styled.div.withConfig({
|
|
39
46
|
displayName: "DatePicker__MonthCenterContainer",
|
|
@@ -105,6 +112,7 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
105
112
|
|
|
106
113
|
const viewport = useViewport();
|
|
107
114
|
const daySize = getResponsiveDaySize(inline, viewport);
|
|
115
|
+
const circleSize = getResponsiveCircleSize(inline, viewport);
|
|
108
116
|
const value = date ?? inputDate;
|
|
109
117
|
const HiddenInputFieldContainer = /*#__PURE__*/styled.div.withConfig({
|
|
110
118
|
displayName: "DatePicker__HiddenInputFieldContainer",
|
|
@@ -116,7 +124,9 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
116
124
|
previousIcon,
|
|
117
125
|
nextIcon,
|
|
118
126
|
...remainingTokens
|
|
119
|
-
} = useThemeTokens('DatePicker', tokens, variant,
|
|
127
|
+
} = useThemeTokens('DatePicker', tokens, { ...variant,
|
|
128
|
+
inline
|
|
129
|
+
}, {
|
|
120
130
|
viewport
|
|
121
131
|
});
|
|
122
132
|
const defaultFontTokens = applyTextStyles({
|
|
@@ -127,16 +137,50 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
127
137
|
fontName: remainingTokens.calendarMonthCaptionFontName,
|
|
128
138
|
fontWeight: remainingTokens.calendarMonthCaptionFontWeight
|
|
129
139
|
});
|
|
130
|
-
const
|
|
140
|
+
const calendarWeekFontTokens = applyTextStyles({
|
|
131
141
|
fontName: remainingTokens.dayPickerWeekHeaderFontName,
|
|
132
142
|
fontWeight: remainingTokens.dayPickerWeekHeaderFontWeight
|
|
133
143
|
});
|
|
144
|
+
|
|
145
|
+
const renderPrevButton = _ref3 => {
|
|
146
|
+
let {
|
|
147
|
+
onClick
|
|
148
|
+
} = _ref3;
|
|
149
|
+
return /*#__PURE__*/_jsx(IconButton, {
|
|
150
|
+
onPress: () => {
|
|
151
|
+
onClick();
|
|
152
|
+
},
|
|
153
|
+
icon: previousIcon,
|
|
154
|
+
variant: {
|
|
155
|
+
size: 'small'
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
const renderNextButton = _ref4 => {
|
|
161
|
+
let {
|
|
162
|
+
onClick
|
|
163
|
+
} = _ref4;
|
|
164
|
+
return /*#__PURE__*/_jsx(IconButton, {
|
|
165
|
+
onPress: () => {
|
|
166
|
+
onClick();
|
|
167
|
+
},
|
|
168
|
+
icon: nextIcon,
|
|
169
|
+
variant: {
|
|
170
|
+
size: 'small'
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
|
|
134
175
|
return /*#__PURE__*/_jsx(CalendarContainer, { ...selectProps(rest),
|
|
135
176
|
daySize: daySize,
|
|
136
177
|
validation: validation,
|
|
137
|
-
remainingTokens: remainingTokens
|
|
178
|
+
remainingTokens: { ...remainingTokens
|
|
179
|
+
},
|
|
180
|
+
calendarDayDefaultHeight: circleSize,
|
|
181
|
+
calendarDayDefaultWidth: circleSize,
|
|
138
182
|
calendarMonthFontTokens: calendarMonthFontTokens,
|
|
139
|
-
|
|
183
|
+
calendarWeekFontTokens: calendarWeekFontTokens,
|
|
140
184
|
defaultFontTokens: defaultFontTokens,
|
|
141
185
|
children: /*#__PURE__*/_jsx(InputSupports, {
|
|
142
186
|
copy: copy,
|
|
@@ -167,14 +211,14 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
167
211
|
hideKeyboardShortcutsPanel: true,
|
|
168
212
|
keepOpenOnDateSelect: false,
|
|
169
213
|
daySize: daySize,
|
|
170
|
-
|
|
171
|
-
|
|
214
|
+
renderNavPrevButton: renderPrevButton,
|
|
215
|
+
renderNavNextButton: renderNextButton,
|
|
172
216
|
isOutsideRange: isDayDisabled,
|
|
173
217
|
phrases: getCopy(),
|
|
174
|
-
renderMonthElement:
|
|
218
|
+
renderMonthElement: _ref5 => {
|
|
175
219
|
let {
|
|
176
220
|
month
|
|
177
|
-
} =
|
|
221
|
+
} = _ref5;
|
|
178
222
|
return /*#__PURE__*/_jsx(MonthCenterContainer, {
|
|
179
223
|
children: /*#__PURE__*/_jsxs("div", {
|
|
180
224
|
children: [dictionary[copy] ? dictionary[copy].months[month.month()] : month.format('MMMM'), ' ', month.year()]
|
|
@@ -186,26 +230,26 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
186
230
|
})
|
|
187
231
|
})]
|
|
188
232
|
}) : /*#__PURE__*/_jsx(SingleDatePicker, {
|
|
189
|
-
ref: ref,
|
|
190
|
-
id: id,
|
|
191
233
|
date: value,
|
|
192
234
|
onDateChange: onChange,
|
|
193
235
|
focused: isFocused,
|
|
194
236
|
onFocusChange: onFocusChange,
|
|
195
237
|
numberOfMonths: 1,
|
|
196
238
|
hideKeyboardShortcutsPanel: true,
|
|
197
|
-
|
|
198
|
-
placeholder: "DD / MM / YYYY",
|
|
199
|
-
keepOpenOnDateSelect: false,
|
|
239
|
+
keepOpenOnDateSelect: true,
|
|
200
240
|
daySize: daySize,
|
|
201
|
-
|
|
202
|
-
|
|
241
|
+
ref: ref,
|
|
242
|
+
renderNavPrevButton: renderPrevButton,
|
|
203
243
|
isOutsideRange: isDayDisabled,
|
|
204
244
|
phrases: getCopy(),
|
|
205
|
-
|
|
245
|
+
id: id,
|
|
246
|
+
displayFormat: "DD / MM / YYYY",
|
|
247
|
+
placeholder: "DD / MM / YYYY",
|
|
248
|
+
renderNavNextButton: renderNextButton,
|
|
249
|
+
renderMonthElement: _ref6 => {
|
|
206
250
|
let {
|
|
207
251
|
month
|
|
208
|
-
} =
|
|
252
|
+
} = _ref6;
|
|
209
253
|
return /*#__PURE__*/_jsx(MonthCenterContainer, {
|
|
210
254
|
children: /*#__PURE__*/_jsxs("div", {
|
|
211
255
|
children: [dictionary[copy] ? dictionary[copy].months[month.month()] : month.format('MMMM'), ' ', month.year()]
|