@telus-uds/components-web 2.26.0 → 2.28.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 +31 -2
- package/lib/DatePicker/DatePicker.js +129 -69
- package/lib/Image/Image.js +20 -44
- package/lib/Image/index.js +11 -1
- package/lib/Image/server.js +12 -0
- package/lib/OptimizeImage/OptimizeImage.js +1 -1
- package/lib/OptimizeImage/utils/getFallbackUrl.js +2 -2
- package/lib/Table/Cell.js +14 -5
- package/lib/baseExports.js +6 -0
- package/lib/index.js +12 -2
- package/lib/server.js +13 -0
- package/lib/utils/theming/get-theme-from-server.js +24 -0
- package/lib/utils/theming/with-client-theme.js +32 -0
- package/lib/utils/theming/with-server-theme.js +34 -0
- package/lib-module/DatePicker/DatePicker.js +132 -72
- package/lib-module/Image/Image.js +17 -41
- package/lib-module/Image/index.js +6 -1
- package/lib-module/Image/server.js +4 -0
- package/lib-module/OptimizeImage/OptimizeImage.js +1 -1
- package/lib-module/OptimizeImage/utils/getFallbackUrl.js +2 -2
- package/lib-module/Table/Cell.js +14 -5
- package/lib-module/baseExports.js +1 -1
- package/lib-module/index.js +3 -1
- package/lib-module/server.js +5 -0
- package/lib-module/utils/theming/get-theme-from-server.js +16 -0
- package/lib-module/utils/theming/with-client-theme.js +24 -0
- package/lib-module/utils/theming/with-server-theme.js +26 -0
- package/package.json +25 -4
- package/src/DatePicker/DatePicker.jsx +125 -63
- package/src/Image/Image.jsx +15 -24
- package/src/Image/index.js +6 -1
- package/src/Image/server.js +5 -0
- package/src/OptimizeImage/OptimizeImage.jsx +1 -1
- package/src/OptimizeImage/utils/getFallbackUrl.js +2 -2
- package/src/Table/Cell.jsx +9 -2
- package/src/baseExports.js +1 -0
- package/src/index.js +3 -1
- package/src/server.js +5 -0
- package/src/utils/theming/get-theme-from-server.js +22 -0
- package/src/utils/theming/with-client-theme.jsx +20 -0
- package/src/utils/theming/with-server-theme.jsx +21 -0
- package/types/WebVideo.d.ts +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,41 @@
|
|
|
1
1
|
# Change Log - @telus-uds/components-web
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Mon, 08 Jan 2024 20:08:06 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 2.28.0
|
|
8
|
+
|
|
9
|
+
Mon, 08 Jan 2024 20:08:06 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- Get a theme wrapper to grab thteme from either server or client (wlsdud194@hotmail.com)
|
|
14
|
+
- Update eslintrc (wlsdud194@hotmail.com)
|
|
15
|
+
- update badge story to include subtle variant (evander.owusu@telus.com)
|
|
16
|
+
- add the display token to the table component (guillermo.peitzner@telus.com)
|
|
17
|
+
- Bump @telus-uds/components-base to v1.73.0
|
|
18
|
+
- Bump @telus-uds/system-theme-tokens to v2.49.0
|
|
19
|
+
|
|
20
|
+
## 2.27.0
|
|
21
|
+
|
|
22
|
+
Wed, 13 Dec 2023 21:24:24 GMT
|
|
23
|
+
|
|
24
|
+
### Minor changes
|
|
25
|
+
|
|
26
|
+
- fixed WebVideo youtube callback type by adding event params (kristina.kirpichnikova@telus.com)
|
|
27
|
+
- Bump @telus-uds/components-base to v1.72.0
|
|
28
|
+
- Bump @telus-uds/system-theme-tokens to v2.48.0
|
|
29
|
+
|
|
30
|
+
### Patches
|
|
31
|
+
|
|
32
|
+
- `DatePicker`: Fix stacking context and positioning issue (shahzaibkhalidmalik@outlook.com)
|
|
33
|
+
- fixes the size-by-height property (guillermo.peitzner@telus.com)
|
|
34
|
+
- adding colour toggle to imports (mauricio.batresmontejo@telus.com)
|
|
35
|
+
|
|
7
36
|
## 2.26.0
|
|
8
37
|
|
|
9
|
-
Fri, 01 Dec 2023
|
|
38
|
+
Fri, 01 Dec 2023 21:08:36 GMT
|
|
10
39
|
|
|
11
40
|
### Minor changes
|
|
12
41
|
|
|
@@ -54,6 +54,24 @@ const DateInputWrapper = /*#__PURE__*/_styledComponents.default.div.withConfig({
|
|
|
54
54
|
display: 'flex',
|
|
55
55
|
flexDirection: 'column'
|
|
56
56
|
});
|
|
57
|
+
const PortalPositionedContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
|
|
58
|
+
displayName: "DatePicker__PortalPositionedContainer",
|
|
59
|
+
componentId: "components-web__sc-mz8fi3-2"
|
|
60
|
+
})({
|
|
61
|
+
position: 'absolute',
|
|
62
|
+
left: _ref => {
|
|
63
|
+
let {
|
|
64
|
+
left
|
|
65
|
+
} = _ref;
|
|
66
|
+
return `${left}px`;
|
|
67
|
+
},
|
|
68
|
+
top: _ref2 => {
|
|
69
|
+
let {
|
|
70
|
+
top
|
|
71
|
+
} = _ref2;
|
|
72
|
+
return `${top}px`;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
57
75
|
|
|
58
76
|
/**
|
|
59
77
|
* Use DatePicker to select a date on a calendar.
|
|
@@ -76,7 +94,7 @@ const DateInputWrapper = /*#__PURE__*/_styledComponents.default.div.withConfig({
|
|
|
76
94
|
* - Optimized for keyboard interaction and tablet touch
|
|
77
95
|
* - Recommended for viewports greater than or equal to 576px
|
|
78
96
|
*/
|
|
79
|
-
const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((
|
|
97
|
+
const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
|
|
80
98
|
var _dictionary$copy;
|
|
81
99
|
let {
|
|
82
100
|
copy = 'en',
|
|
@@ -97,9 +115,33 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
97
115
|
prevTestID,
|
|
98
116
|
nextTestID,
|
|
99
117
|
...rest
|
|
100
|
-
} =
|
|
118
|
+
} = _ref3;
|
|
101
119
|
const [inputDate, setInputDate] = (0, _react.useState)(date instanceof _moment.default ? date : undefined);
|
|
102
120
|
const [inputText, setInputText] = (0, _react.useState)(date instanceof _moment.default ? date.format(dateFormat) : '');
|
|
121
|
+
const textInputRef = (0, _react.useRef)();
|
|
122
|
+
const [datePickerPosition, setDatePickerPosition] = (0, _react.useState)({
|
|
123
|
+
left: 0,
|
|
124
|
+
top: 0
|
|
125
|
+
});
|
|
126
|
+
(0, _componentsBase.useSafeLayoutEffect)(() => {
|
|
127
|
+
const updateDimensions = () => {
|
|
128
|
+
if (inline) return;
|
|
129
|
+
const {
|
|
130
|
+
left,
|
|
131
|
+
top
|
|
132
|
+
} = textInputRef.current.getBoundingClientRect();
|
|
133
|
+
setDatePickerPosition({
|
|
134
|
+
left,
|
|
135
|
+
top: top + textInputRef.current.offsetHeight
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
const throttledUpdateDimensions = (0, _lodash.throttle)(updateDimensions, 100, {
|
|
139
|
+
leading: false
|
|
140
|
+
});
|
|
141
|
+
updateDimensions();
|
|
142
|
+
window.addEventListener('resize', throttledUpdateDimensions);
|
|
143
|
+
return () => window.removeEventListener('resize', throttledUpdateDimensions);
|
|
144
|
+
}, []);
|
|
103
145
|
const [isFocused, setIsFocused] = (0, _react.useState)(false);
|
|
104
146
|
const [isClickedInside, setIsClickedInside] = (0, _react.useState)(false);
|
|
105
147
|
const getCopy = (0, _componentsBase.useCopy)({
|
|
@@ -116,10 +158,10 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
116
158
|
setInputText(date instanceof _moment.default ? date.format(dateFormat) : '');
|
|
117
159
|
}
|
|
118
160
|
}, [date, inputDate]);
|
|
119
|
-
const onFocusChange =
|
|
161
|
+
const onFocusChange = _ref4 => {
|
|
120
162
|
let {
|
|
121
163
|
focused
|
|
122
|
-
} =
|
|
164
|
+
} = _ref4;
|
|
123
165
|
if (!isClickedInside) {
|
|
124
166
|
setIsFocused(focused);
|
|
125
167
|
}
|
|
@@ -164,7 +206,7 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
164
206
|
const circleSize = getResponsiveCircleSize(inline, viewport);
|
|
165
207
|
const HiddenInputFieldContainer = /*#__PURE__*/_styledComponents.default.div.withConfig({
|
|
166
208
|
displayName: "DatePicker__HiddenInputFieldContainer",
|
|
167
|
-
componentId: "components-web__sc-mz8fi3-
|
|
209
|
+
componentId: "components-web__sc-mz8fi3-3"
|
|
168
210
|
})(["height:", ";width:", ";overflow:hidden;"], props => props.height, props => props.width);
|
|
169
211
|
const {
|
|
170
212
|
hiddenInputFieldContainerHeight,
|
|
@@ -190,10 +232,10 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
190
232
|
fontName: remainingTokens.dayPickerWeekHeaderFontName,
|
|
191
233
|
fontWeight: remainingTokens.dayPickerWeekHeaderFontWeight
|
|
192
234
|
});
|
|
193
|
-
const renderPrevButton =
|
|
235
|
+
const renderPrevButton = _ref5 => {
|
|
194
236
|
let {
|
|
195
237
|
onClick
|
|
196
|
-
} =
|
|
238
|
+
} = _ref5;
|
|
197
239
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.IconButton, {
|
|
198
240
|
onPress: () => {
|
|
199
241
|
onClick();
|
|
@@ -205,10 +247,10 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
205
247
|
testID: prevTestID
|
|
206
248
|
});
|
|
207
249
|
};
|
|
208
|
-
const renderNextButton =
|
|
250
|
+
const renderNextButton = _ref6 => {
|
|
209
251
|
let {
|
|
210
252
|
onClick
|
|
211
|
-
} =
|
|
253
|
+
} = _ref6;
|
|
212
254
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.IconButton, {
|
|
213
255
|
onPress: () => {
|
|
214
256
|
onClick();
|
|
@@ -220,18 +262,7 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
220
262
|
testID: nextTestID
|
|
221
263
|
});
|
|
222
264
|
};
|
|
223
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
224
|
-
...selectProps(rest),
|
|
225
|
-
daySize: daySize,
|
|
226
|
-
validation: validation,
|
|
227
|
-
remainingTokens: {
|
|
228
|
-
...remainingTokens
|
|
229
|
-
},
|
|
230
|
-
calendarDayDefaultHeight: circleSize,
|
|
231
|
-
calendarDayDefaultWidth: circleSize,
|
|
232
|
-
calendarMonthFontTokens: calendarMonthFontTokens,
|
|
233
|
-
calendarWeekFontTokens: calendarWeekFontTokens,
|
|
234
|
-
defaultFontTokens: defaultFontTokens,
|
|
265
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
235
266
|
children: inline ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
236
267
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(HiddenInputFieldContainer, {
|
|
237
268
|
height: hiddenInputFieldContainerHeight,
|
|
@@ -243,68 +274,33 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
243
274
|
value: inputText,
|
|
244
275
|
readOnly: true
|
|
245
276
|
})
|
|
246
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
247
|
-
|
|
248
|
-
onDateChange: onChange,
|
|
249
|
-
focused: isFocused,
|
|
250
|
-
onFocusChange: onFocusChange,
|
|
251
|
-
numberOfMonths: 1,
|
|
252
|
-
hideKeyboardShortcutsPanel: true,
|
|
253
|
-
keepOpenOnDateSelect: false,
|
|
277
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CalendarContainer.default, {
|
|
278
|
+
...selectProps(rest),
|
|
254
279
|
daySize: daySize,
|
|
255
|
-
renderNavPrevButton: renderPrevButton,
|
|
256
|
-
renderNavNextButton: renderNextButton,
|
|
257
|
-
isOutsideRange: isDayDisabled,
|
|
258
|
-
phrases: getCopy(),
|
|
259
|
-
renderMonthElement: _ref5 => {
|
|
260
|
-
let {
|
|
261
|
-
month
|
|
262
|
-
} = _ref5;
|
|
263
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(MonthCenterContainer, {
|
|
264
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
265
|
-
children: [_dictionary.default[copy] ? _dictionary.default[copy].months[month.month()] : month.format('MMMM'), ' ', month.year()]
|
|
266
|
-
})
|
|
267
|
-
});
|
|
268
|
-
},
|
|
269
|
-
renderWeekHeaderElement: day => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
270
|
-
children: _dictionary.default[copy] ? _dictionary.default[copy].weekDays[day] : day
|
|
271
|
-
})
|
|
272
|
-
})]
|
|
273
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(DateInputWrapper, {
|
|
274
|
-
onMouseDown: handleMouseDown,
|
|
275
|
-
onFocus: handleFocus,
|
|
276
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.TextInput, {
|
|
277
|
-
copy: copy,
|
|
278
|
-
feedback: feedback,
|
|
279
|
-
hint: hint,
|
|
280
|
-
placeholder: "DD / MM / YYYY",
|
|
281
|
-
onChange: onChangeInput,
|
|
282
|
-
tooltip: tooltip,
|
|
283
|
-
hintPosition: hintPosition,
|
|
284
|
-
label: ((_dictionary$copy = _dictionary.default[copy]) === null || _dictionary$copy === void 0 ? void 0 : _dictionary$copy.roleDescription) ?? label,
|
|
285
|
-
value: inputText,
|
|
286
280
|
validation: validation,
|
|
287
|
-
|
|
288
|
-
|
|
281
|
+
remainingTokens: remainingTokens,
|
|
282
|
+
calendarDayDefaultHeight: circleSize,
|
|
283
|
+
calendarDayDefaultWidth: circleSize,
|
|
284
|
+
calendarMonthFontTokens: calendarMonthFontTokens,
|
|
285
|
+
calendarWeekFontTokens: calendarWeekFontTokens,
|
|
286
|
+
defaultFontTokens: defaultFontTokens,
|
|
287
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DayPickerSingleDateController.default, {
|
|
289
288
|
date: inputDate,
|
|
290
|
-
disabled: disabled,
|
|
291
289
|
onDateChange: onChange,
|
|
292
290
|
focused: isFocused,
|
|
293
291
|
onFocusChange: onFocusChange,
|
|
294
292
|
numberOfMonths: 1,
|
|
295
293
|
hideKeyboardShortcutsPanel: true,
|
|
296
|
-
keepOpenOnDateSelect:
|
|
294
|
+
keepOpenOnDateSelect: false,
|
|
297
295
|
daySize: daySize,
|
|
298
|
-
ref: ref,
|
|
299
296
|
renderNavPrevButton: renderPrevButton,
|
|
297
|
+
renderNavNextButton: renderNextButton,
|
|
300
298
|
isOutsideRange: isDayDisabled,
|
|
301
299
|
phrases: getCopy(),
|
|
302
|
-
|
|
303
|
-
renderNavNextButton: renderNextButton,
|
|
304
|
-
renderMonthElement: _ref6 => {
|
|
300
|
+
renderMonthElement: _ref7 => {
|
|
305
301
|
let {
|
|
306
302
|
month
|
|
307
|
-
} =
|
|
303
|
+
} = _ref7;
|
|
308
304
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(MonthCenterContainer, {
|
|
309
305
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
310
306
|
children: [_dictionary.default[copy] ? _dictionary.default[copy].months[month.month()] : month.format('MMMM'), ' ', month.year()]
|
|
@@ -315,6 +311,70 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
315
311
|
children: _dictionary.default[copy] ? _dictionary.default[copy].weekDays[day] : day
|
|
316
312
|
})
|
|
317
313
|
})
|
|
314
|
+
})]
|
|
315
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(DateInputWrapper, {
|
|
316
|
+
onMouseDown: handleMouseDown,
|
|
317
|
+
onFocus: handleFocus,
|
|
318
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.TextInput, {
|
|
319
|
+
copy: copy,
|
|
320
|
+
feedback: feedback,
|
|
321
|
+
hint: hint,
|
|
322
|
+
placeholder: "DD / MM / YYYY",
|
|
323
|
+
onChange: onChangeInput,
|
|
324
|
+
tooltip: tooltip,
|
|
325
|
+
hintPosition: hintPosition,
|
|
326
|
+
label: ((_dictionary$copy = _dictionary.default[copy]) === null || _dictionary$copy === void 0 ? void 0 : _dictionary$copy.roleDescription) ?? label,
|
|
327
|
+
value: inputText,
|
|
328
|
+
validation: validation,
|
|
329
|
+
inactive: disabled,
|
|
330
|
+
ref: textInputRef,
|
|
331
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_componentsBase.Portal, {
|
|
332
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PortalPositionedContainer, {
|
|
333
|
+
top: datePickerPosition.top,
|
|
334
|
+
left: datePickerPosition.left,
|
|
335
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CalendarContainer.default, {
|
|
336
|
+
...selectProps(rest),
|
|
337
|
+
daySize: daySize,
|
|
338
|
+
validation: validation,
|
|
339
|
+
remainingTokens: remainingTokens,
|
|
340
|
+
calendarDayDefaultHeight: circleSize,
|
|
341
|
+
calendarDayDefaultWidth: circleSize,
|
|
342
|
+
calendarMonthFontTokens: calendarMonthFontTokens,
|
|
343
|
+
calendarWeekFontTokens: calendarWeekFontTokens,
|
|
344
|
+
defaultFontTokens: defaultFontTokens,
|
|
345
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SingleDatePicker.default, {
|
|
346
|
+
date: inputDate,
|
|
347
|
+
disabled: disabled,
|
|
348
|
+
onDateChange: onChange,
|
|
349
|
+
focused: isFocused,
|
|
350
|
+
onFocusChange: onFocusChange,
|
|
351
|
+
numberOfMonths: 1,
|
|
352
|
+
hideKeyboardShortcutsPanel: true,
|
|
353
|
+
keepOpenOnDateSelect: true,
|
|
354
|
+
daySize: daySize,
|
|
355
|
+
ref: ref,
|
|
356
|
+
renderNavPrevButton: renderPrevButton,
|
|
357
|
+
isOutsideRange: isDayDisabled,
|
|
358
|
+
phrases: getCopy(),
|
|
359
|
+
id: id,
|
|
360
|
+
renderNavNextButton: renderNextButton,
|
|
361
|
+
renderMonthElement: _ref8 => {
|
|
362
|
+
let {
|
|
363
|
+
month
|
|
364
|
+
} = _ref8;
|
|
365
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(MonthCenterContainer, {
|
|
366
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
367
|
+
children: [_dictionary.default[copy] ? _dictionary.default[copy].months[month.month()] : month.format('MMMM'), ' ', month.year()]
|
|
368
|
+
})
|
|
369
|
+
});
|
|
370
|
+
},
|
|
371
|
+
renderWeekHeaderElement: day => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
372
|
+
children: _dictionary.default[copy] ? _dictionary.default[copy].weekDays[day] : day
|
|
373
|
+
})
|
|
374
|
+
})
|
|
375
|
+
})
|
|
376
|
+
})
|
|
377
|
+
})
|
|
318
378
|
})
|
|
319
379
|
})
|
|
320
380
|
});
|
package/lib/Image/Image.js
CHANGED
|
@@ -6,40 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var _utils = require("../utils");
|
|
9
|
+
var _server = require("@telus-uds/components-base/server");
|
|
10
|
+
var _logger = require("../utils/logger");
|
|
12
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
-
const [selectProps, selectedSystemPropTypes] = (0,
|
|
15
|
-
const
|
|
16
|
-
displayName: "Image__StyledImage",
|
|
17
|
-
componentId: "components-web__sc-blwu4l-0"
|
|
18
|
-
})(_ref => {
|
|
19
|
-
let {
|
|
20
|
-
height
|
|
21
|
-
} = _ref;
|
|
22
|
-
return {
|
|
23
|
-
height: height ?? 'auto',
|
|
24
|
-
maxWidth: '100%'
|
|
25
|
-
};
|
|
26
|
-
});
|
|
27
|
-
const StyledRoundedImage = /*#__PURE__*/(0, _styledComponents.default)(StyledImage).withConfig({
|
|
28
|
-
displayName: "Image__StyledRoundedImage",
|
|
29
|
-
componentId: "components-web__sc-blwu4l-1"
|
|
30
|
-
})(["border-radius:", "px;"], _ref2 => {
|
|
31
|
-
let {
|
|
32
|
-
borderRadius
|
|
33
|
-
} = _ref2;
|
|
34
|
-
return borderRadius;
|
|
35
|
-
});
|
|
36
|
-
const StyledCircularImage = /*#__PURE__*/(0, _styledComponents.default)(StyledImage).withConfig({
|
|
37
|
-
displayName: "Image__StyledCircularImage",
|
|
38
|
-
componentId: "components-web__sc-blwu4l-2"
|
|
39
|
-
})({
|
|
40
|
-
borderRadius: '50%'
|
|
41
|
-
});
|
|
42
|
-
const Image = _ref3 => {
|
|
13
|
+
const [selectProps, selectedSystemPropTypes] = (0, _server.selectSystemProps)([_server.htmlAttrs]);
|
|
14
|
+
const Image = _ref => {
|
|
43
15
|
let {
|
|
44
16
|
src,
|
|
45
17
|
width,
|
|
@@ -48,29 +20,32 @@ const Image = _ref3 => {
|
|
|
48
20
|
rounded,
|
|
49
21
|
loading = 'eager',
|
|
50
22
|
tokens,
|
|
23
|
+
theme,
|
|
51
24
|
variant,
|
|
52
25
|
...rest
|
|
53
|
-
} =
|
|
54
|
-
|
|
26
|
+
} = _ref;
|
|
27
|
+
let {
|
|
55
28
|
borderRadius
|
|
56
|
-
} =
|
|
29
|
+
} = theme;
|
|
57
30
|
const isCircle = rounded === 'circle';
|
|
58
31
|
const isCorners = rounded === 'corners';
|
|
59
32
|
const isSquare = width === height;
|
|
60
33
|
if (isCircle && !isSquare) {
|
|
61
|
-
(0,
|
|
34
|
+
(0, _logger.warn)('Image', 'rounded="circle" is not supported for non-square images. Please provide a square image, otherwise the resulting shape will not be a circle.');
|
|
62
35
|
}
|
|
63
|
-
let ImageComponent;
|
|
64
36
|
if (isCircle) {
|
|
65
|
-
|
|
37
|
+
borderRadius = '50%';
|
|
66
38
|
} else if (isCorners) {
|
|
67
|
-
|
|
68
|
-
} else {
|
|
69
|
-
ImageComponent = StyledImage;
|
|
39
|
+
borderRadius = '4px';
|
|
70
40
|
}
|
|
71
|
-
|
|
41
|
+
const style = {
|
|
42
|
+
borderRadius,
|
|
43
|
+
height: height ?? 'auto',
|
|
44
|
+
maxWidth: '100%'
|
|
45
|
+
};
|
|
46
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
72
47
|
...selectProps(rest),
|
|
73
|
-
|
|
48
|
+
style: style,
|
|
74
49
|
src: src,
|
|
75
50
|
width: width,
|
|
76
51
|
height: height,
|
|
@@ -107,7 +82,8 @@ Image.propTypes = {
|
|
|
107
82
|
* Make image render as a circle or with rounded corners.
|
|
108
83
|
*/
|
|
109
84
|
rounded: _propTypes.default.oneOf(['circle', 'corners']),
|
|
110
|
-
tokens: (0,
|
|
85
|
+
tokens: (0, _server.getTokensPropType)('Image')
|
|
111
86
|
};
|
|
87
|
+
Image.displayName = 'Image';
|
|
112
88
|
var _default = Image;
|
|
113
89
|
exports.default = _default;
|
package/lib/Image/index.js
CHANGED
|
@@ -3,8 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "DefaultImage", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _Image.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
exports.default = void 0;
|
|
7
13
|
var _Image = _interopRequireDefault(require("./Image"));
|
|
14
|
+
var _withClientTheme = _interopRequireDefault(require("../utils/theming/with-client-theme"));
|
|
8
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
-
|
|
16
|
+
// Exporting the unwrapped component separately for react-docgen to extract info for docsite
|
|
17
|
+
|
|
18
|
+
const ClientThemedImage = (0, _withClientTheme.default)(_Image.default);
|
|
19
|
+
var _default = ClientThemedImage;
|
|
10
20
|
exports.default = _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _withServerTheme = _interopRequireDefault(require("../utils/theming/with-server-theme"));
|
|
8
|
+
var _Image = _interopRequireDefault(require("./Image"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const ServerThemedImage = (0, _withServerTheme.default)(_Image.default, 'Image');
|
|
11
|
+
var _default = ServerThemedImage;
|
|
12
|
+
exports.default = _default;
|
|
@@ -42,7 +42,7 @@ const OptimizeImage = _ref => {
|
|
|
42
42
|
mdSrc: (0, _utils.getOptimizedUrl)(contentfulAssetUrl, dimension, md, quality, disableRetina, supportsWebp),
|
|
43
43
|
lgSrc: (0, _utils.getOptimizedUrl)(contentfulAssetUrl, dimension, lg, quality, disableRetina, supportsWebp),
|
|
44
44
|
xlSrc: (0, _utils.getOptimizedUrl)(contentfulAssetUrl, dimension, xl, quality, disableRetina, supportsWebp),
|
|
45
|
-
fallbackSrc: (0, _utils.getFallbackUrl)(contentfulAssetUrl, xl, quality)
|
|
45
|
+
fallbackSrc: (0, _utils.getFallbackUrl)(contentfulAssetUrl, dimension, xl, quality)
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
48
|
}, [contentfulAssetUrl, dimension, disableRetina, lg, md, quality, sm, xl, xs]);
|
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = getFallbackUrl;
|
|
7
7
|
var _isSvgUrl = _interopRequireDefault(require("./isSvgUrl"));
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
-
function getFallbackUrl(url,
|
|
9
|
+
function getFallbackUrl(url, dimension, size, quality) {
|
|
10
10
|
if (!(0, _isSvgUrl.default)(url)) {
|
|
11
|
-
return `${url}
|
|
11
|
+
return `${url}?${dimension}=${size}&q=${quality}`;
|
|
12
12
|
}
|
|
13
13
|
return url;
|
|
14
14
|
}
|
package/lib/Table/Cell.js
CHANGED
|
@@ -49,23 +49,30 @@ const sharedStyles = /*#__PURE__*/(0, _styledComponents.css)(["", ""], _ref2 =>
|
|
|
49
49
|
const createStyledCell = htmlElement => _styledComponents.default[htmlElement].withConfig({
|
|
50
50
|
displayName: "Cell__createStyledCell",
|
|
51
51
|
componentId: "components-web__sc-ltgfic-0"
|
|
52
|
-
})(["", ";box-shadow:", ";"], sharedStyles, _ref3 => {
|
|
52
|
+
})(["", ";box-shadow:", ";", ""], sharedStyles, _ref3 => {
|
|
53
53
|
let {
|
|
54
54
|
cellBoxShadowColor,
|
|
55
55
|
type
|
|
56
56
|
} = _ref3;
|
|
57
57
|
return type === HEADER_TYPE.HEADING ? `inset 0 1px 0 ${cellBoxShadowColor}, inset 0 -1px 0 ${cellBoxShadowColor}` : `inset 0 1px 0 ${cellBoxShadowColor}`;
|
|
58
|
+
}, _ref4 => {
|
|
59
|
+
let {
|
|
60
|
+
display
|
|
61
|
+
} = _ref4;
|
|
62
|
+
return display && `*:not(:empty) {
|
|
63
|
+
display: ${display};
|
|
64
|
+
}`;
|
|
58
65
|
});
|
|
59
66
|
const StyledHeaderCell = createStyledCell('th');
|
|
60
67
|
const StyledDataCell = createStyledCell('td');
|
|
61
|
-
const Cell =
|
|
68
|
+
const Cell = _ref5 => {
|
|
62
69
|
let {
|
|
63
70
|
children,
|
|
64
71
|
isFirstInRow,
|
|
65
72
|
align = 'left',
|
|
66
73
|
tokens: cellTokens,
|
|
67
74
|
type = 'default'
|
|
68
|
-
} =
|
|
75
|
+
} = _ref5;
|
|
69
76
|
const {
|
|
70
77
|
text,
|
|
71
78
|
isScrollable: isTableScrollable,
|
|
@@ -90,7 +97,8 @@ const Cell = _ref4 => {
|
|
|
90
97
|
fontSize,
|
|
91
98
|
lineHeight,
|
|
92
99
|
stickyBackgroundColor,
|
|
93
|
-
fontColor
|
|
100
|
+
fontColor,
|
|
101
|
+
display
|
|
94
102
|
} = (0, _componentsBase.useThemeTokens)('Table', themeTokens, {
|
|
95
103
|
spacing,
|
|
96
104
|
type,
|
|
@@ -107,7 +115,8 @@ const Cell = _ref4 => {
|
|
|
107
115
|
cellPaddingLeft,
|
|
108
116
|
cellPaddingBottom,
|
|
109
117
|
stickyBackgroundColor,
|
|
110
|
-
cellBoxShadowColor
|
|
118
|
+
cellBoxShadowColor,
|
|
119
|
+
display
|
|
111
120
|
};
|
|
112
121
|
const typographyTokens = {
|
|
113
122
|
fontName,
|
package/lib/baseExports.js
CHANGED
|
@@ -93,6 +93,12 @@ Object.defineProperty(exports, "ChevronLink", {
|
|
|
93
93
|
return _componentsBase.ChevronLink;
|
|
94
94
|
}
|
|
95
95
|
});
|
|
96
|
+
Object.defineProperty(exports, "ColourToggle", {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
get: function () {
|
|
99
|
+
return _componentsBase.ColourToggle;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
96
102
|
Object.defineProperty(exports, "Divider", {
|
|
97
103
|
enumerable: true,
|
|
98
104
|
get: function () {
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
'use client';
|
|
2
3
|
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
@@ -19,6 +20,8 @@ var _exportNames = {
|
|
|
19
20
|
Footnote: true,
|
|
20
21
|
QuantitySelector: true,
|
|
21
22
|
IconButton: true,
|
|
23
|
+
Image: true,
|
|
24
|
+
DefaultImage: true,
|
|
22
25
|
transformGradient: true,
|
|
23
26
|
ssrStyles: true,
|
|
24
27
|
Breadcrumbs: true,
|
|
@@ -27,7 +30,6 @@ var _exportNames = {
|
|
|
27
30
|
Testimonial: true,
|
|
28
31
|
Toast: true,
|
|
29
32
|
Table: true,
|
|
30
|
-
Image: true,
|
|
31
33
|
WebVideo: true,
|
|
32
34
|
WaffleGrid: true,
|
|
33
35
|
Spinner: true,
|
|
@@ -85,6 +87,12 @@ Object.defineProperty(exports, "DatePicker", {
|
|
|
85
87
|
return _DatePicker.default;
|
|
86
88
|
}
|
|
87
89
|
});
|
|
90
|
+
Object.defineProperty(exports, "DefaultImage", {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
get: function () {
|
|
93
|
+
return _Image.DefaultImage;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
88
96
|
Object.defineProperty(exports, "Disclaimer", {
|
|
89
97
|
enumerable: true,
|
|
90
98
|
get: function () {
|
|
@@ -286,6 +294,7 @@ var _PriceLockup = _interopRequireDefault(require("./PriceLockup"));
|
|
|
286
294
|
var _Footnote = _interopRequireDefault(require("./Footnote"));
|
|
287
295
|
var _QuantitySelector = _interopRequireDefault(require("./QuantitySelector"));
|
|
288
296
|
var _IconButton = _interopRequireDefault(require("./IconButton"));
|
|
297
|
+
var _Image = _interopRequireWildcard(require("./Image"));
|
|
289
298
|
var _utils = require("./utils");
|
|
290
299
|
var _Breadcrumbs = _interopRequireDefault(require("./Breadcrumbs"));
|
|
291
300
|
var _BlockQuote = _interopRequireDefault(require("./BlockQuote"));
|
|
@@ -293,7 +302,6 @@ var _OptimizeImage = _interopRequireDefault(require("./OptimizeImage"));
|
|
|
293
302
|
var _Testimonial = _interopRequireDefault(require("./Testimonial"));
|
|
294
303
|
var _Toast = _interopRequireDefault(require("./Toast"));
|
|
295
304
|
var _Table = _interopRequireDefault(require("./Table"));
|
|
296
|
-
var _Image = _interopRequireDefault(require("./Image"));
|
|
297
305
|
var _WebVideo = _interopRequireDefault(require("./WebVideo"));
|
|
298
306
|
var _WaffleGrid = _interopRequireDefault(require("./WaffleGrid"));
|
|
299
307
|
var _Spinner = _interopRequireDefault(require("./Spinner"));
|
|
@@ -320,4 +328,6 @@ Object.keys(_baseExports).forEach(function (key) {
|
|
|
320
328
|
}
|
|
321
329
|
});
|
|
322
330
|
});
|
|
331
|
+
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); }
|
|
332
|
+
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; }
|
|
323
333
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
package/lib/server.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "Image", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _server.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _server = _interopRequireDefault(require("./Image/server"));
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = getTheme;
|
|
7
|
+
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); }
|
|
8
|
+
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; }
|
|
9
|
+
const cachedTheme = {};
|
|
10
|
+
const theme = process.env.UDS_THEME;
|
|
11
|
+
async function importTheme(componentName) {
|
|
12
|
+
try {
|
|
13
|
+
cachedTheme[componentName] = await Promise.resolve(`@telus-uds/theme-${theme}/build/rn/${componentName}.js`).then(s => _interopRequireWildcard(require(s)));
|
|
14
|
+
} catch (_) {
|
|
15
|
+
throw new Error(`An error occurred while trying to import theme-${process.env.UDS_THEME}. Please check that the theme has been installed in your app or that you are not importing a server component inside a client component.`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function getTheme(componentName) {
|
|
19
|
+
if (cachedTheme[componentName]) {
|
|
20
|
+
return cachedTheme[componentName];
|
|
21
|
+
}
|
|
22
|
+
await importTheme(componentName);
|
|
23
|
+
return cachedTheme[componentName];
|
|
24
|
+
}
|