@telus-uds/components-base 1.33.0 → 1.34.1

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 CHANGED
@@ -1,12 +1,34 @@
1
1
  # Change Log - @telus-uds/components-base
2
2
 
3
- This log was last generated on Tue, 04 Apr 2023 19:53:51 GMT and should not be manually modified.
3
+ This log was last generated on Tue, 18 Apr 2023 11:46:09 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 1.34.1
8
+
9
+ Tue, 18 Apr 2023 11:46:09 GMT
10
+
11
+ ### Patches
12
+
13
+ - multi-select-filter not showing modal fix (srikanthkhari@gmail.com)
14
+
15
+ ## 1.34.0
16
+
17
+ Thu, 13 Apr 2023 05:59:09 GMT
18
+
19
+ ### Minor changes
20
+
21
+ - feature: standardize Radio for Allium, Public Mobile, Koodo (samuraix221@hotmail.com)
22
+ - select standardization (samuraix221@hotmail.com)
23
+ - Bump @telus-uds/system-theme-tokens to v2.18.0
24
+
25
+ ### Patches
26
+
27
+ - Fix where `Modal` clips long content (shahzaibkhalidmalik@outlook.com)
28
+
7
29
  ## 1.33.0
8
30
 
9
- Tue, 04 Apr 2023 19:53:51 GMT
31
+ Tue, 04 Apr 2023 20:00:31 GMT
10
32
 
11
33
  ### Minor changes
12
34
 
@@ -745,7 +767,7 @@ Wed, 30 Mar 2022 09:49:18 GMT
745
767
 
746
768
  ### Bug Fixes
747
769
 
748
- - same rnw dep specification for base as components-allium-web ([#642](https://github.com/telus/universal-design-system/issues/642)) ([d40a9a2](https://github.com/telus/universal-design-system/commit/d40a9a2eade0a6ab276f13d02758fff0a88c2ecd))
770
+ - same rnw dep specification for base as ds-allium ([#642](https://github.com/telus/universal-design-system/issues/642)) ([d40a9a2](https://github.com/telus/universal-design-system/commit/d40a9a2eade0a6ab276f13d02758fff0a88c2ecd))
749
771
 
750
772
  ### [0.0.2-prerelease.3](https://github.com/telus/universal-design-system/compare/@telus-uds/components-base/v0.0.2-prerelease.2...@telus-uds/components-base/v0.0.2-prerelease.3) (2021-10-12)
751
773
 
@@ -1,6 +1,60 @@
1
1
  {
2
2
  "schema": {
3
3
  "components": {
4
+ "Callout": {
5
+ "background": "color",
6
+ "gap": "size",
7
+ "borderRadius": "size",
8
+ "paddingLeft": "size",
9
+ "paddingRight": "size",
10
+ "paddingTop": "size",
11
+ "paddingBottom": "size",
12
+ "color": "color"
13
+ },
14
+ "FootnoteLink": {
15
+ "lineHeight": "lineHeight",
16
+ "paddingLeft": "size",
17
+ "paddingRight": "size"
18
+ },
19
+ "Footnote": {
20
+ "footnoteBackground": "color",
21
+ "footnoteBorderTopSizeMd": "border",
22
+ "footnoteBorderColorMd": "color",
23
+ "headerMargin": "size",
24
+ "footnoteBodyBackground": "color",
25
+ "footnoteBodyPaddingLeft": "size",
26
+ "footnoteBodyPaddingRight": "size",
27
+ "footnoteBodyPaddingTop": "size",
28
+ "footnoteBodyPaddingBottom": "size",
29
+ "listPaddingLeft": "size",
30
+ "listItemMarkerFontSize": "size",
31
+ "listItemMarkerLineHeight": "lineHeight",
32
+ "listItemColor": "color",
33
+ "listItemFontSize": "size",
34
+ "listItemLineHeight": "lineHeight",
35
+ "listItemPaddingLeft": "size",
36
+ "closeButtonBorderSize": "border",
37
+ "closeButtonBorderColor": "color",
38
+ "closeButtonHeight": "size",
39
+ "closeButtonMarginTop": "size",
40
+ "closeButtonMarginLeft": "size",
41
+ "closeButtonMarginRight": "size",
42
+ "closeButtonMarginBottom": "size",
43
+ "closeButtonWidth": "size",
44
+ "closeButtonIconSize": "size"
45
+ },
46
+ "PriceLockup": {
47
+ "footnoteMarginTop": "size",
48
+ "footnoteGap": "size",
49
+ "bottomTextMarginTop": "size",
50
+ "priceMarginBottom": "size",
51
+ "bottomLinksMarginLeft": "size",
52
+ "topTextMarginBottom": "size",
53
+ "strikeThroughHeight": "size",
54
+ "strikeThroughBackground": "color",
55
+ "fontColor": "color",
56
+ "dividerColor": "color"
57
+ },
4
58
  "ActivityIndicator": {
5
59
  "size": "size",
6
60
  "thickness": "border",
@@ -142,6 +196,21 @@
142
196
  "minWidth": "size",
143
197
  "shadow": "shadow"
144
198
  },
199
+ "PreviewCard": {
200
+ "flex": "integer",
201
+ "outerBorderColor": "color",
202
+ "outerBorderGap": "size",
203
+ "outerBorderWidth": "size",
204
+ "backgroundColor": "color",
205
+ "separatorColor": "color",
206
+ "borderColor": "color",
207
+ "borderRadius": "radius",
208
+ "borderWidth": "border",
209
+ "paddingBottom": "size",
210
+ "paddingLeft": "size",
211
+ "paddingRight": "size",
212
+ "paddingTop": "size"
213
+ },
145
214
  "Carousel": {
146
215
  "backgroundColor": "color",
147
216
  "nextIcon": "icon",
@@ -223,11 +292,69 @@
223
292
  "width": "size",
224
293
  "color": "color"
225
294
  },
295
+ "DatePicker": {
296
+ "hiddenInputFieldContainerHeight": "size",
297
+ "hiddenInputFieldContainerWidth": "size",
298
+ "previousIcon": "icon",
299
+ "nextIcon": "icon",
300
+ "singleDatePickerBorderColor": "color",
301
+ "singleDatePickerRadius": "radius",
302
+ "singleDatePickerPaddingTopBottom": "size",
303
+ "singleDatePickerLeftRight": "size",
304
+ "dateInputBorderColor": "color",
305
+ "dateInputBorderRadius": "radius",
306
+ "invalidInputMixin": "color",
307
+ "validInputMixin": "color",
308
+ "dateInputHoverBorderColor": "color",
309
+ "dateInputFocusBorderColor": "color",
310
+ "dateInputInsideBorderColor": "color",
311
+ "dateInputInsideColor": "color",
312
+ "dateInputStrokeColor": "color",
313
+ "calendarMonthCaptionColor": "color",
314
+ "calendarMonthCaptionFontSize": "fontSize",
315
+ "calendarMonthCaptionLineHeight": "lineHeight",
316
+ "calendarMonthCaptionPaddingBottom": "size",
317
+ "dayPickerNavigationButtonBorderColor": "color",
318
+ "dayPickerNavigationButtonBackgroundColor": "color",
319
+ "dayPickerNavigationButtonMaxHeight": "size",
320
+ "dayPickerNavigationButtonMaxWidth": "size",
321
+ "dayPickerNavigationButtonPadding": "size",
322
+ "dayPickerNavigationButtonChildLeft": "size",
323
+ "dayPickerNavigationButtonChildRight": "size",
324
+ "dayPickerNavigationButtonChildSvgFill": "color",
325
+ "dayPickerNavigationButtonDefaultHoverBorderColor": "color",
326
+ "dayPickerNavigationSVGHorizontalFill": "color",
327
+ "dayPickerWeekHeaderColor": "color",
328
+ "dayPickerWeekHeaderLineHeight": "lineHeight",
329
+ "dayPickerWeekHeaderSmall": "fontSize",
330
+ "calendarDayDefaultBorder": "border",
331
+ "calendarDayDefaultBorderColor": "color",
332
+ "calendarDayDefaultFontSize": "fontSize",
333
+ "calendarDayDefaultColor": "color",
334
+ "calendarDayDefaultBeforeHeight": "size",
335
+ "calendarDayDefaultBeforeWidth": "size",
336
+ "calendarDaySelectedHoverBorderColor": "color",
337
+ "calendarDaySelectedHoverColor": "color",
338
+ "calendarDaySelectedHoverBeforeBackground": "color",
339
+ "calendarDayDefaultCalendarDaySelectedHoverColor": "color",
340
+ "calendarDayDefaultCalendarDaySelectedHoverBackground": "color",
341
+ "calendarDayBlockedCalendarHoverBackground": "color",
342
+ "calendarDayBlockedCalendarHoverColor": "color",
343
+ "calendarMonthCaptionFontName": "fontName",
344
+ "dayPickerWeekHeaderFontName": "fontName",
345
+ "calendarDayDefaultFontName": "fontName",
346
+ "calendarMonthCaptionFontWeight": "fontWeight",
347
+ "dayPickerWeekHeaderFontWeight": "fontWeight",
348
+ "calendarDayDefaultFontWeight": "fontWeight"
349
+ },
226
350
  "ExpandCollapse": {
227
351
  "borderColor": "color",
228
352
  "borderWidth": "border",
229
353
  "borderStyle": "borderStyle"
230
354
  },
355
+ "ExpandCollapseMini": {
356
+ "borderWidth": "border"
357
+ },
231
358
  "ExpandCollapseControl": {
232
359
  "icon": "icon",
233
360
  "iconColor": "color",
@@ -245,6 +372,10 @@
245
372
  "borderColor": "color",
246
373
  "backgroundColor": "color"
247
374
  },
375
+ "ExpandCollapseMiniControl": {
376
+ "size": "size",
377
+ "icon": "icon"
378
+ },
248
379
  "ExpandCollapsePanel": {
249
380
  "expandDuration": "duration",
250
381
  "collapseDuration": "duration",
@@ -1005,6 +1136,12 @@
1005
1136
  "flexGrow": "integer",
1006
1137
  "flexShrink": "integer"
1007
1138
  },
1139
+ "Breadcrumbs": {
1140
+ "icon": "icon",
1141
+ "iconColor": "color",
1142
+ "iconPadding": "size",
1143
+ "listItemPadding": "size"
1144
+ },
1008
1145
  "Timeline": {
1009
1146
  "dotColor": "color",
1010
1147
  "dotWidth": "size",
@@ -1128,6 +1265,35 @@
1128
1265
  "type": "state"
1129
1266
  }
1130
1267
  },
1268
+ "PreviewCard": {
1269
+ "pressed": {
1270
+ "description": "Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.",
1271
+ "values": [
1272
+ true
1273
+ ],
1274
+ "type": "state"
1275
+ },
1276
+ "hover": {
1277
+ "description": "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1278
+ "values": [
1279
+ true
1280
+ ],
1281
+ "type": "state",
1282
+ "platforms": [
1283
+ "rn"
1284
+ ]
1285
+ },
1286
+ "focus": {
1287
+ "description": "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1288
+ "values": [
1289
+ true
1290
+ ],
1291
+ "type": "state",
1292
+ "platforms": [
1293
+ "rn"
1294
+ ]
1295
+ }
1296
+ },
1131
1297
  "ButtonDropdown": {
1132
1298
  "focus": {
1133
1299
  "description": "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
@@ -241,8 +241,9 @@ const staticStyles = _StyleSheet.default.create({
241
241
 
242
242
  },
243
243
  modal: {
244
- maxHeight: '100%' // so that the modal can expand vertically up to the sizing container's height (exclusive of its vertical padding)
245
-
244
+ maxHeight: '100%',
245
+ // so that the modal can expand vertically up to the sizing container's height (exclusive of its vertical padding)
246
+ overflow: 'auto'
246
247
  },
247
248
  closeButtonContainer: {
248
249
  position: 'absolute',
@@ -41,7 +41,6 @@ const staticStyles = _StyleSheet.default.create({
41
41
  // Grow to maxWidth when possible, shrink when not possible
42
42
  position: 'absolute',
43
43
  height: 330,
44
- paddingTop: 5,
45
44
  zIndex: 10000 // Position on top of all the other overlays, including backdrops and modals
46
45
 
47
46
  },
@@ -50,6 +49,11 @@ const staticStyles = _StyleSheet.default.create({
50
49
  top: 0,
51
50
  right: 0,
52
51
  zIndex: 1
52
+ },
53
+ hidden: {
54
+ // Use opacity not visibility to hide the dropdown during positioning
55
+ // so on web, children may be focused from the first render
56
+ opacity: 0
53
57
  }
54
58
  });
55
59
 
@@ -81,8 +85,11 @@ const selectPaddingContainerStyles = _ref2 => {
81
85
  const ModalOverlay = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
82
86
  let {
83
87
  children,
84
- tokens,
88
+ isReady = false,
89
+ overlaidPosition,
90
+ onLayout,
85
91
  variant,
92
+ tokens,
86
93
  copy,
87
94
  onClose
88
95
  } = _ref3;
@@ -100,26 +107,25 @@ const ModalOverlay = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
100
107
  copy
101
108
  });
102
109
  const closeLabel = getCopy('closeButton');
103
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
104
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_portal.Portal, {
110
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_portal.Portal, {
111
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
105
112
  ref: ref,
106
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
107
- style: [{
108
- minWidth: maxWidth
109
- }, staticStyles.positioner],
110
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Card.default, {
111
- tokens: selectPaddingContainerStyles(themeTokens),
112
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
113
- style: [staticStyles.closeButtonContainer, selectCloseButtonContainerStyles(themeTokens)],
114
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
115
- onPress: onClose,
116
- icon: CloseIconComponent,
117
- accessibilityRole: "button",
118
- accessibilityLabel: closeLabel,
119
- tokens: (0, _utils.selectTokens)('IconButton', themeTokens, 'close')
120
- })
121
- }), children]
122
- })
113
+ onLayout: onLayout,
114
+ style: [overlaidPosition, {
115
+ minWidth: maxWidth
116
+ }, staticStyles.positioner, !isReady && staticStyles.hidden],
117
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Card.default, {
118
+ tokens: selectPaddingContainerStyles(themeTokens),
119
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
120
+ style: [staticStyles.closeButtonContainer, selectCloseButtonContainerStyles(themeTokens)],
121
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
122
+ onPress: onClose,
123
+ icon: CloseIconComponent,
124
+ accessibilityRole: "button",
125
+ accessibilityLabel: closeLabel,
126
+ tokens: (0, _utils.selectTokens)('IconButton', themeTokens, 'close')
127
+ })
128
+ }), children]
123
129
  })
124
130
  })
125
131
  });
@@ -127,6 +133,13 @@ const ModalOverlay = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
127
133
  ModalOverlay.displayName = 'ModalOverlay';
128
134
  ModalOverlay.propTypes = {
129
135
  children: _propTypes.default.node.isRequired,
136
+ isReady: _propTypes.default.bool,
137
+ overlaidPosition: _propTypes.default.shape({
138
+ top: _propTypes.default.number,
139
+ left: _propTypes.default.number,
140
+ width: _propTypes.default.number
141
+ }),
142
+ onLayout: _propTypes.default.func,
130
143
  variant: _utils.variantProp.propType,
131
144
  tokens: (0, _utils.getTokensPropType)('Modal'),
132
145
  copy: _utils.copyPropTypes,
@@ -72,7 +72,7 @@ const selectDividerToknes = _ref2 => {
72
72
  };
73
73
  };
74
74
 
75
- const MultiSelectFilter = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
75
+ const MultiSelectFilter = _ref3 => {
76
76
  let {
77
77
  label,
78
78
  subtitle,
@@ -136,9 +136,41 @@ const MultiSelectFilter = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
136
136
  setIsOpen(false);
137
137
  };
138
138
 
139
+ const {
140
+ align,
141
+ offsets
142
+ } = (0, _utils.useResponsiveProp)({
143
+ xs: {
144
+ align: {
145
+ top: 'top',
146
+ left: 'left',
147
+ bottom: 'bottom',
148
+ right: 'right'
149
+ }
150
+ },
151
+ sm: {
152
+ align: {
153
+ top: 'bottom',
154
+ left: 'left'
155
+ },
156
+ offsets: {
157
+ vertical: 4
158
+ }
159
+ }
160
+ });
161
+ const {
162
+ overlaidPosition,
163
+ onTargetLayout,
164
+ isReady,
165
+ sourceRef
166
+ } = (0, _utils.useOverlaidPosition)({
167
+ isShown: isOpen,
168
+ offsets,
169
+ align
170
+ });
139
171
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
140
172
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.ButtonDropdown, {
141
- ref: ref,
173
+ ref: sourceRef,
142
174
  ...pressHandlers,
143
175
  value: isOpen,
144
176
  selected: isSelected,
@@ -147,10 +179,15 @@ const MultiSelectFilter = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
147
179
  tokens: getButtonTokens,
148
180
  inactive: inactive
149
181
  }, id), isOpen && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ModalOverlay.default, {
182
+ overlaidPosition: overlaidPosition,
150
183
  variant: {
151
184
  width: colSize > 1 ? 'size576' : 's'
152
185
  },
153
186
  onClose: () => setIsOpen(false),
187
+ tokens: tokens,
188
+ copy: copy,
189
+ isReady: isReady,
190
+ onLayout: onTargetLayout,
154
191
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
155
192
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
156
193
  variant: {
@@ -216,7 +253,8 @@ const MultiSelectFilter = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
216
253
  })]
217
254
  })]
218
255
  });
219
- });
256
+ };
257
+
220
258
  MultiSelectFilter.displayName = 'MultiSelectFilter';
221
259
  MultiSelectFilter.propTypes = {
222
260
  /**
@@ -67,10 +67,12 @@ const selectDescriptionStyles = _ref2 => {
67
67
  descriptionLineHeight,
68
68
  descriptionMarginLeft,
69
69
  inputSize,
70
+ fontColor,
70
71
  labelMarginLeft = 0
71
72
  } = _ref2;
72
73
  return {
73
74
  marginLeft: descriptionMarginLeft ?? containerPaddingLeft + inputSize + labelMarginLeft,
75
+ color: fontColor,
74
76
  ...(0, _ThemeProvider.applyTextStyles)({
75
77
  fontSize: descriptionFontSize,
76
78
  lineHeight: descriptionLineHeight
@@ -229,7 +231,9 @@ const Radio = /*#__PURE__*/(0, _react.forwardRef)((_ref4, ref) => {
229
231
  })
230
232
  })]
231
233
  }), Boolean(description) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
232
- style: selectDescriptionStyles(getTokens()),
234
+ style: selectDescriptionStyles({ ...getTokens(),
235
+ fontColor: labelStyles.color
236
+ }),
233
237
  children: description
234
238
  })]
235
239
  });
@@ -9,6 +9,7 @@ var _exportNames = {
9
9
  useHash: true,
10
10
  useSpacingScale: true,
11
11
  useResponsiveProp: true,
12
+ useOverlaidPosition: true,
12
13
  useSafeLayoutEffect: true,
13
14
  useScrollBlocking: true,
14
15
  useUniqueId: true,
@@ -46,6 +47,12 @@ Object.defineProperty(exports, "useHash", {
46
47
  return _useHash.default;
47
48
  }
48
49
  });
50
+ Object.defineProperty(exports, "useOverlaidPosition", {
51
+ enumerable: true,
52
+ get: function () {
53
+ return _useOverlaidPosition.default;
54
+ }
55
+ });
49
56
  Object.defineProperty(exports, "useResponsiveProp", {
50
57
  enumerable: true,
51
58
  get: function () {
@@ -189,6 +196,8 @@ Object.keys(_useResponsiveProp).forEach(function (key) {
189
196
  });
190
197
  });
191
198
 
199
+ var _useOverlaidPosition = _interopRequireDefault(require("./useOverlaidPosition"));
200
+
192
201
  var _useSafeLayoutEffect = _interopRequireDefault(require("./useSafeLayoutEffect"));
193
202
 
194
203
  var _useScrollBlocking = _interopRequireDefault(require("./useScrollBlocking"));