@telus-uds/components-base 1.21.0 → 1.22.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.
Files changed (33) hide show
  1. package/CHANGELOG.md +18 -2
  2. package/component-docs.json +455 -1
  3. package/lib/Button/ButtonGroup.js +9 -0
  4. package/lib/ExpandCollapse/Control.js +3 -1
  5. package/lib/Feedback/Feedback.js +3 -1
  6. package/lib/Fieldset/Fieldset.js +42 -13
  7. package/lib/Fieldset/FieldsetContainer.js +9 -3
  8. package/lib/QuickLinksFeature/QuickLinksFeature.js +91 -0
  9. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +157 -0
  10. package/lib/QuickLinksFeature/index.js +16 -0
  11. package/lib/RadioCard/RadioCardGroup.js +2 -0
  12. package/lib/index.js +9 -0
  13. package/lib-module/Button/ButtonGroup.js +9 -0
  14. package/lib-module/ExpandCollapse/Control.js +3 -1
  15. package/lib-module/Feedback/Feedback.js +3 -1
  16. package/lib-module/Fieldset/Fieldset.js +39 -12
  17. package/lib-module/Fieldset/FieldsetContainer.js +9 -3
  18. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +69 -0
  19. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +130 -0
  20. package/lib-module/QuickLinksFeature/index.js +4 -0
  21. package/lib-module/RadioCard/RadioCardGroup.js +2 -0
  22. package/lib-module/index.js +1 -0
  23. package/package.json +2 -2
  24. package/src/Button/ButtonGroup.jsx +10 -0
  25. package/src/ExpandCollapse/Control.jsx +3 -2
  26. package/src/Feedback/Feedback.jsx +2 -2
  27. package/src/Fieldset/Fieldset.jsx +40 -13
  28. package/src/Fieldset/FieldsetContainer.jsx +29 -12
  29. package/src/QuickLinksFeature/QuickLinksFeature.jsx +65 -0
  30. package/src/QuickLinksFeature/QuickLinksFeatureItem.jsx +114 -0
  31. package/src/QuickLinksFeature/index.js +6 -0
  32. package/src/RadioCard/RadioCardGroup.jsx +2 -0
  33. package/src/index.js +1 -0
package/CHANGELOG.md CHANGED
@@ -1,12 +1,28 @@
1
1
  # Change Log - @telus-uds/components-base
2
2
 
3
- This log was last generated on Wed, 23 Nov 2022 21:41:19 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 07 Dec 2022 15:09:47 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 1.22.0
8
+
9
+ Wed, 07 Dec 2022 15:09:47 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - QuickLinksFeature component implementation (tiagohldb@gmail.com)
14
+ - Adding iconPosition for ButtonGroup (tiagohldb@gmail.com)
15
+ - chore: new design for error feedback for radio card group (mauricio.batresmontejo@telus.com)
16
+ - feat: add inverse variant for StepTracker (ruslan.bredikhin@nearform.com)
17
+ - Bump @telus-uds/system-theme-tokens to v2.9.0
18
+
19
+ ### Patches
20
+
21
+ - fix expand collapse icon size (mauricio.batresmontejo@telus.com)
22
+
7
23
  ## 1.21.0
8
24
 
9
- Wed, 23 Nov 2022 21:41:19 GMT
25
+ Wed, 23 Nov 2022 21:42:51 GMT
10
26
 
11
27
  ### Minor changes
12
28
 
@@ -108,7 +108,9 @@
108
108
  "outerBorderColor": "color",
109
109
  "outerBorderWidth": "border",
110
110
  "outerBorderGap": "size",
111
- "outerBackgroundColor": "color"
111
+ "outerBackgroundColor": "color",
112
+ "iconSpace": "integer",
113
+ "iconSize": "size"
112
114
  },
113
115
  "Card": {
114
116
  "flex": "integer",
@@ -212,6 +214,7 @@
212
214
  "iconColor": "color",
213
215
  "iconSize": "size",
214
216
  "iconGap": "size",
217
+ "iconPaddingTop": "size",
215
218
  "iconPosition": "position",
216
219
  "verticalAlign": "verticalAlign",
217
220
  "justifyContent": "flexJustifyContent",
@@ -534,6 +537,22 @@
534
537
  "iconSize": "size",
535
538
  "iconSpace": "integer"
536
539
  },
540
+ "QuickLinksFeature": {
541
+ "stackSpace": "integer",
542
+ "stackGap": "integer",
543
+ "stackJustify": "flexJustifyContent"
544
+ },
545
+ "QuickLinksFeatureItem": {
546
+ "color": "color",
547
+ "textLine": "textLine",
548
+ "imageDimension": "size",
549
+ "contentMaxDimension": "size",
550
+ "contentDirection": "direction",
551
+ "contentSpace": "integer",
552
+ "contentAlignItems": "flexAlign",
553
+ "textAlign": "textAlign",
554
+ "outerBorderColor": "color"
555
+ },
537
556
  "Radio": {
538
557
  "checkedBackgroundColor": "color",
539
558
  "checkedSize": "size",
@@ -1997,6 +2016,247 @@
1997
2016
  ]
1998
2017
  }
1999
2018
  }
2019
+ },
2020
+ "tokens": {
2021
+ "size": {
2022
+ "default": 0,
2023
+ "type": "Number|String|null",
2024
+ "nullable": true,
2025
+ "values": {
2026
+ "none": null,
2027
+ "full": "100%",
2028
+ "twoThirds": "66.67%",
2029
+ "zero": 0,
2030
+ "viewportXs": 0,
2031
+ "viewportSm": 576,
2032
+ "viewportMd": 768,
2033
+ "viewportLg": 992,
2034
+ "viewportXl": 1200
2035
+ }
2036
+ },
2037
+ "border": {
2038
+ "default": 0,
2039
+ "nullable": false,
2040
+ "values": {
2041
+ "zero": 0
2042
+ }
2043
+ },
2044
+ "color": {
2045
+ "default": null,
2046
+ "nullable": true,
2047
+ "type": "String|null",
2048
+ "values": {
2049
+ "transparent": "transparent",
2050
+ "none": null
2051
+ }
2052
+ },
2053
+ "radius": {
2054
+ "default": 0,
2055
+ "nullable": true,
2056
+ "type": "undefined|null",
2057
+ "values": {
2058
+ "zero": 0,
2059
+ "round": 99999999999999
2060
+ }
2061
+ },
2062
+ "shadow": {
2063
+ "default": null,
2064
+ "nullable": true,
2065
+ "type": "null|{\"blur\": Number, \"color\": String, \"inset\": Boolean, \"offsetX\": Number, \"offsetY\": Number, \"spread\": Number}|null",
2066
+ "values": {
2067
+ "none": null
2068
+ }
2069
+ },
2070
+ "fontSize": {
2071
+ "default": 16,
2072
+ "nullable": false,
2073
+ "type": "Number"
2074
+ },
2075
+ "lineHeight": {
2076
+ "default": 1,
2077
+ "nullable": false,
2078
+ "type": "Number"
2079
+ },
2080
+ "flexJustifyContent": {
2081
+ "default": "flex-start",
2082
+ "type": "'center'|'flex-start'|'space-between'",
2083
+ "nullable": false,
2084
+ "values": {
2085
+ "center": "center",
2086
+ "flexStart": "flex-start",
2087
+ "spaceBetween": "space-between"
2088
+ }
2089
+ },
2090
+ "flexAlign": {
2091
+ "default": "flex-start",
2092
+ "type": "'center'|'flex-start'|'stretch'",
2093
+ "nullable": false,
2094
+ "values": {
2095
+ "center": "center",
2096
+ "flexStart": "flex-start",
2097
+ "stretch": "stretch"
2098
+ }
2099
+ },
2100
+ "fontName": {
2101
+ "default": null,
2102
+ "nullable": true,
2103
+ "type": "null|String|null"
2104
+ },
2105
+ "fontWeight": {
2106
+ "default": "400",
2107
+ "nullable": false,
2108
+ "type": "String"
2109
+ },
2110
+ "fontStyle": {
2111
+ "default": "normal",
2112
+ "nullable": false,
2113
+ "type": "'normal'|'italic'",
2114
+ "values": {
2115
+ "normal": "normal",
2116
+ "italic": "italic"
2117
+ }
2118
+ },
2119
+ "opacity": {
2120
+ "default": 1,
2121
+ "nullable": false,
2122
+ "type": "Number",
2123
+ "values": {
2124
+ "opaque": 1
2125
+ }
2126
+ },
2127
+ "integer": {
2128
+ "default": null,
2129
+ "nullable": true,
2130
+ "type": "Number|null",
2131
+ "values": {}
2132
+ },
2133
+ "icon": {
2134
+ "default": null,
2135
+ "nullable": true,
2136
+ "type": "String|ReactNativeSVGComponent|null",
2137
+ "values": {
2138
+ "none": null
2139
+ }
2140
+ },
2141
+ "textLine": {
2142
+ "default": "none",
2143
+ "nullable": false,
2144
+ "type": "'none'|'underline'|'strikethrough'",
2145
+ "values": {
2146
+ "none": "none",
2147
+ "underline": "underline",
2148
+ "strikethrough": "strikethrough"
2149
+ }
2150
+ },
2151
+ "textLineStyle": {
2152
+ "default": "solid",
2153
+ "nullable": false,
2154
+ "type": "'solid'",
2155
+ "values": {
2156
+ "solid": "solid"
2157
+ }
2158
+ },
2159
+ "position": {
2160
+ "default": null,
2161
+ "nullable": true,
2162
+ "type": "'bottom'|'left'|'right'|'top'|null",
2163
+ "values": {
2164
+ "bottom": "bottom",
2165
+ "left": "left",
2166
+ "right": "right",
2167
+ "top": "top"
2168
+ }
2169
+ },
2170
+ "direction": {
2171
+ "default": "column",
2172
+ "nullable": false,
2173
+ "type": "'column'|'row'",
2174
+ "values": {
2175
+ "column": "column",
2176
+ "row": "row"
2177
+ }
2178
+ },
2179
+ "show": {
2180
+ "default": true,
2181
+ "nullable": false,
2182
+ "type": "Boolean",
2183
+ "values": {
2184
+ "true": true,
2185
+ "false": false
2186
+ }
2187
+ },
2188
+ "borderStyle": {
2189
+ "default": "solid",
2190
+ "nullable": false,
2191
+ "type": "'none'|'solid'",
2192
+ "values": {
2193
+ "none": "none",
2194
+ "solid": "solid"
2195
+ }
2196
+ },
2197
+ "letterSpacing": {
2198
+ "default": 0,
2199
+ "nullable": false,
2200
+ "type": "Number",
2201
+ "values": {
2202
+ "none": 0
2203
+ }
2204
+ },
2205
+ "verticalAlign": {
2206
+ "default": "baseline",
2207
+ "nullable": false,
2208
+ "type": "'top'|'middle'|'baseline'",
2209
+ "values": {
2210
+ "top": "top",
2211
+ "middle": "middle",
2212
+ "baseline": "baseline"
2213
+ }
2214
+ },
2215
+ "duration": {
2216
+ "default": 0,
2217
+ "nullable": false,
2218
+ "type": "Number",
2219
+ "values": {
2220
+ "zero": 0
2221
+ }
2222
+ },
2223
+ "iconScale": {
2224
+ "default": 1,
2225
+ "nullable": false,
2226
+ "type": "Number",
2227
+ "values": {
2228
+ "scale1": 1,
2229
+ "scale1_10": 1.1,
2230
+ "scale1_25": 1.25
2231
+ }
2232
+ },
2233
+ "textAlign": {
2234
+ "default": "left",
2235
+ "nullable": false,
2236
+ "type": "'left'|'center'|'right'",
2237
+ "values": {
2238
+ "left": "left",
2239
+ "center": "center",
2240
+ "right": "right"
2241
+ }
2242
+ },
2243
+ "gradient": {
2244
+ "default": null,
2245
+ "nullable": true,
2246
+ "type": "{\"type\": [\"linear\"|\"radial\"], \"angle\": Number, \"stops\": Array<{\"stop\": Number, \"color\": String }>}|null",
2247
+ "values": {
2248
+ "none": null
2249
+ }
2250
+ },
2251
+ "textTransform": {
2252
+ "default": "none",
2253
+ "type": "'none'|'uppercase'",
2254
+ "nullable": false,
2255
+ "values": {
2256
+ "none": "none",
2257
+ "uppercase": "uppercase"
2258
+ }
2259
+ }
2000
2260
  }
2001
2261
  },
2002
2262
  "components": {
@@ -2246,6 +2506,7 @@
2246
2506
  "iconColor": "color",
2247
2507
  "iconSize": "size",
2248
2508
  "iconGap": "size",
2509
+ "iconPaddingTop": "size",
2249
2510
  "iconPosition": "position",
2250
2511
  "verticalAlign": "verticalAlign",
2251
2512
  "justifyContent": "flexJustifyContent",
@@ -3156,6 +3417,7 @@
3156
3417
  "iconColor": "color",
3157
3418
  "iconSize": "size",
3158
3419
  "iconGap": "size",
3420
+ "iconPaddingTop": "size",
3159
3421
  "iconPosition": "position",
3160
3422
  "verticalAlign": "verticalAlign",
3161
3423
  "justifyContent": "flexJustifyContent",
@@ -3333,6 +3595,28 @@
3333
3595
  "required": false,
3334
3596
  "description": "Position of the feedback block relative to the fieldset's content."
3335
3597
  },
3598
+ "showIcon": {
3599
+ "defaultValue": {
3600
+ "value": "false",
3601
+ "computed": false
3602
+ },
3603
+ "type": {
3604
+ "name": "bool"
3605
+ },
3606
+ "required": false,
3607
+ "description": "Use to show error or success icon in the feedback"
3608
+ },
3609
+ "showErrorBorder": {
3610
+ "defaultValue": {
3611
+ "value": "false",
3612
+ "computed": false
3613
+ },
3614
+ "type": {
3615
+ "name": "bool"
3616
+ },
3617
+ "required": false,
3618
+ "description": "Use to show border in case of error for a group of components"
3619
+ },
3336
3620
  "children": {
3337
3621
  "type": {
3338
3622
  "name": "union",
@@ -6519,6 +6803,159 @@
6519
6803
  }
6520
6804
  }
6521
6805
  },
6806
+ "QuickLinksFeature": {
6807
+ "docs": {
6808
+ "description": "QuickLinksFeature renders a list of interactive items.\n - This is the base component that is used as a wrapper and accepts a List of `QuickLinksFeature.Item`",
6809
+ "props": {
6810
+ "tag": {
6811
+ "defaultValue": {
6812
+ "value": "'ul'",
6813
+ "computed": false
6814
+ },
6815
+ "type": {
6816
+ "name": "string"
6817
+ },
6818
+ "required": false,
6819
+ "description": "Default wrapper tag, by default it's \"ul\""
6820
+ },
6821
+ "tokens": {
6822
+ "type": {
6823
+ "name": "custom",
6824
+ "raw": {
6825
+ "stackSpace": "integer",
6826
+ "stackGap": "integer",
6827
+ "stackJustify": "flexJustifyContent"
6828
+ }
6829
+ },
6830
+ "required": false,
6831
+ "description": ""
6832
+ },
6833
+ "variant": {
6834
+ "type": {
6835
+ "name": "objectOf",
6836
+ "value": {
6837
+ "name": "union",
6838
+ "value": [
6839
+ {
6840
+ "name": "string"
6841
+ },
6842
+ {
6843
+ "name": "number"
6844
+ },
6845
+ {
6846
+ "name": "bool"
6847
+ }
6848
+ ]
6849
+ }
6850
+ },
6851
+ "required": false,
6852
+ "description": ""
6853
+ },
6854
+ "children": {
6855
+ "type": {
6856
+ "name": "node"
6857
+ },
6858
+ "required": false,
6859
+ "description": "QuickLinksFeature.Item component"
6860
+ }
6861
+ },
6862
+ "attributes": {
6863
+ "acceptsRNA11yProps": false
6864
+ }
6865
+ },
6866
+ "Item": {
6867
+ "docs": {
6868
+ "description": "Component export along with QuickLinksFeature to be used as children\n\nIt will receive a image source and a accessibility label and will render a link accordingly with the theme tokens",
6869
+ "props": {
6870
+ "LinkRouter": {
6871
+ "type": {
6872
+ "name": "elementType"
6873
+ },
6874
+ "required": false,
6875
+ "description": ""
6876
+ },
6877
+ "linkRouterProps": {
6878
+ "type": {
6879
+ "name": "object"
6880
+ },
6881
+ "required": false,
6882
+ "description": ""
6883
+ },
6884
+ "tokens": {
6885
+ "type": {
6886
+ "name": "custom",
6887
+ "raw": {
6888
+ "color": "color",
6889
+ "textLine": "textLine",
6890
+ "imageDimension": "size",
6891
+ "contentMaxDimension": "size",
6892
+ "contentDirection": "direction",
6893
+ "contentSpace": "integer",
6894
+ "contentAlignItems": "flexAlign",
6895
+ "textAlign": "textAlign",
6896
+ "outerBorderColor": "color"
6897
+ }
6898
+ },
6899
+ "required": false,
6900
+ "description": ""
6901
+ },
6902
+ "variant": {
6903
+ "type": {
6904
+ "name": "objectOf",
6905
+ "value": {
6906
+ "name": "union",
6907
+ "value": [
6908
+ {
6909
+ "name": "string"
6910
+ },
6911
+ {
6912
+ "name": "number"
6913
+ },
6914
+ {
6915
+ "name": "bool"
6916
+ }
6917
+ ]
6918
+ }
6919
+ },
6920
+ "required": false,
6921
+ "description": ""
6922
+ },
6923
+ "children": {
6924
+ "type": {
6925
+ "name": "node"
6926
+ },
6927
+ "required": true,
6928
+ "description": "Text which will be rendered within the Link"
6929
+ },
6930
+ "imageAccessibilityLabel": {
6931
+ "type": {
6932
+ "name": "string"
6933
+ },
6934
+ "required": true,
6935
+ "description": "Image accessibility label"
6936
+ },
6937
+ "imageSource": {
6938
+ "type": {
6939
+ "name": "union",
6940
+ "value": [
6941
+ {
6942
+ "name": "string"
6943
+ },
6944
+ {
6945
+ "name": "node"
6946
+ }
6947
+ ]
6948
+ },
6949
+ "required": true,
6950
+ "description": "Image node or Image url"
6951
+ }
6952
+ },
6953
+ "attributes": {
6954
+ "acceptsRNA11yProps": false
6955
+ }
6956
+ }
6957
+ }
6958
+ },
6522
6959
  "Radio": {
6523
6960
  "docs": {
6524
6961
  "description": "Basic Radio component.\n\n## Component API\n\nUse `label` prop to provide a label for the radio button. For a disabled `Radio` set the `inactive` prop to `true`.\n\n### Controlled version\n\nIf the radio button is controlled from outside, it needs to receive `checked` and `onChange` props.\n\n### Uncontrolled version\n\nIn case of uncontrolled radio button you can use `defaultChecked` prop to provide the initial value.\nWhenever the radio button gets toggled, it calls the `onChange` callback with the new value (boolean).\n\n### Using within forms\n\nYou can pass `name` and `value` props if you need a particular radio button to be a part of a radio group\non a form.\n\n### Validation\n\nYou can mark a radio button as failing validation by setting the `error` prop to `true`.\n\n## A11y guidelines\n\nRadio component accepts all the common accessibility props, but also sets some defaults, including\naccessibility role `'radio'` and accessibility state that depends on the other props (`checked`, `inactive`)\nor the internal state in case of uncontrolled radio button.",
@@ -9776,6 +10213,23 @@
9776
10213
  "required": false,
9777
10214
  "description": "If `values` is not passed, making the ButtonGroup an \"uncontrolled\" component\nmanaging its own selected state, a default set of selections may be provided.\nChanging the `initialValues` does not change the user's selections."
9778
10215
  },
10216
+ "iconPosition": {
10217
+ "type": {
10218
+ "name": "enum",
10219
+ "value": [
10220
+ {
10221
+ "value": "'left'",
10222
+ "computed": false
10223
+ },
10224
+ {
10225
+ "value": "'right'",
10226
+ "computed": false
10227
+ }
10228
+ ]
10229
+ },
10230
+ "required": false,
10231
+ "description": "Defines if the icon will be displayed on the right or left side of the label."
10232
+ },
9779
10233
  "legend": {
9780
10234
  "type": {
9781
10235
  "name": "string"
@@ -56,6 +56,7 @@ const ButtonGroup = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
56
56
  feedback,
57
57
  name: inputGroupName,
58
58
  copy,
59
+ iconPosition,
59
60
  accessibilityRole = maxValues === 1 ? 'radiogroup' // radiogroup is cross-platform; only web aria has generic groups
60
61
  : _Platform.default.select({
61
62
  web: 'group',
@@ -138,6 +139,7 @@ const ButtonGroup = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
138
139
  toggleOneValue(id, event);
139
140
  };
140
141
 
142
+ const iconProp = itemRest.icon || undefined;
141
143
  const itemA11y = {
142
144
  accessibilityState: {
143
145
  checked: isSelected
@@ -155,9 +157,11 @@ const ButtonGroup = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
155
157
  tokens: getButtonTokens,
156
158
  selected: isSelected,
157
159
  inactive: inactive,
160
+ icon: iconProp,
158
161
  ...selectItemProps({ ...itemRest,
159
162
  ...itemA11y
160
163
  }),
164
+ iconPosition: iconPosition,
161
165
  children: label
162
166
  }, id);
163
167
  })
@@ -226,6 +230,11 @@ ButtonGroup.propTypes = { ...selectedSystemPropTypes,
226
230
  */
227
231
  initialValues: _propTypes.default.arrayOf(_propTypes.default.string),
228
232
 
233
+ /**
234
+ * Defines if the icon will be displayed on the right or left side of the label.
235
+ */
236
+ iconPosition: _propTypes.default.oneOf(['left', 'right']),
237
+
229
238
  /**
230
239
  * Main text used to describe this group, used in Fieldset's Legend element.
231
240
  */
@@ -59,11 +59,13 @@ function selectContainerStyles(_ref) {
59
59
  function selectIconContainerStyles(_ref2) {
60
60
  let {
61
61
  iconGap,
62
+ iconPaddingTop,
62
63
  iconPosition
63
64
  } = _ref2;
64
65
  const paddingSide = iconPosition === 'right' ? 'paddingLeft' : 'paddingRight';
65
66
  return {
66
- [paddingSide]: iconGap
67
+ [paddingSide]: iconGap,
68
+ paddingTop: iconPaddingTop
67
69
  };
68
70
  }
69
71
 
@@ -105,10 +105,12 @@ const Feedback = /*#__PURE__*/(0, _react.forwardRef)((_ref5, ref) => {
105
105
  validation,
106
106
  tokens,
107
107
  variant,
108
+ icon,
108
109
  ...rest
109
110
  } = _ref5;
110
111
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('Feedback', tokens, { ...variant,
111
- validation
112
+ validation,
113
+ icon
112
114
  });
113
115
  const {
114
116
  space