@spark-web/text-input 5.0.0 → 5.1.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,5 +1,33 @@
1
1
  # @spark-web/text-input
2
2
 
3
+ ## 5.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#621](https://github.com/brighte-labs/spark-web/pull/621)
8
+ [`bc2f972`](https://github.com/brighte-labs/spark-web/commit/bc2f97209f7207bb993aee971e9407d6fdd83751)
9
+ Thanks [@mkt-brighte](https://github.com/mkt-brighte)! - Update form field
10
+ border to meet minimum contrast requirement
11
+
12
+ - Updated dependencies
13
+ [[`bc2f972`](https://github.com/brighte-labs/spark-web/commit/bc2f97209f7207bb993aee971e9407d6fdd83751)]:
14
+ - @spark-web/theme@5.10.5
15
+
16
+ ## 5.1.0
17
+
18
+ ### Minor Changes
19
+
20
+ - [#600](https://github.com/brighte-labs/spark-web/pull/600)
21
+ [`8e0bb68`](https://github.com/brighte-labs/spark-web/commit/8e0bb683181ee4f56f9fdcf378e48d9adae9475e)
22
+ Thanks [@chrischua-brighte](https://github.com/chrischua-brighte)! - add
23
+ readonly and overflowstrategy
24
+
25
+ ### Patch Changes
26
+
27
+ - Updated dependencies
28
+ [[`8e0bb68`](https://github.com/brighte-labs/spark-web/commit/8e0bb683181ee4f56f9fdcf378e48d9adae9475e)]:
29
+ - @spark-web/field@5.1.0
30
+
3
31
  ## 5.0.0
4
32
 
5
33
  ### Major Changes
@@ -1,4 +1,5 @@
1
1
  import type { FieldState } from '@spark-web/field';
2
+ import type { TextOverflowStrategy } from '@spark-web/text';
2
3
  import type { DataAttributeMap } from '@spark-web/utils/internal';
3
4
  import type { InputHTMLAttributes } from 'react';
4
5
  import type { AdornmentsAsChildren } from "./children-to-adornments.js";
@@ -22,6 +23,8 @@ export declare type TextInputProps = {
22
23
  * otherwise it will not be rendered.
23
24
  */
24
25
  children?: AdornmentsAsChildren;
26
+ /** Manage how text behaves with regard to overflow. */
27
+ overflowStrategy?: TextOverflowStrategy;
25
28
  } & NativeInputProps;
26
29
  /** Organize and emphasize information quickly and effectively in a list of text elements. */
27
30
  export declare const TextInput: import("react").ForwardRefExoticComponent<{
@@ -41,22 +44,26 @@ export declare const TextInput: import("react").ForwardRefExoticComponent<{
41
44
  * otherwise it will not be rendered.
42
45
  */
43
46
  children?: AdornmentsAsChildren;
47
+ /** Manage how text behaves with regard to overflow. */
48
+ overflowStrategy?: "nowrap" | "truncate" | "breakword" | undefined;
44
49
  } & NativeInputProps & import("react").RefAttributes<HTMLInputElement>>;
45
50
  export declare type UseInputStylesProps = FieldState & {
46
51
  startAdornment?: boolean;
47
52
  endAdornment?: boolean;
53
+ readOnly?: boolean;
54
+ overflowStrategy?: TextOverflowStrategy;
48
55
  };
49
56
  /**
50
57
  * Returns a tuple where the first item is an object of props to spread onto the
51
58
  * underlying Box component that our inputs are created with, and the second
52
59
  * item is a CSS object to be passed to Emotion's `css` function
53
60
  **/
54
- export declare const useInputStyles: ({ disabled, startAdornment, endAdornment, }: UseInputStylesProps) => readonly [{
61
+ export declare const useInputStyles: ({ disabled, startAdornment, endAdornment, readOnly, overflowStrategy, }: UseInputStylesProps) => readonly [{
55
62
  readonly flex: 1;
56
63
  readonly position: "relative";
57
64
  readonly height: "medium";
58
- readonly paddingLeft: "none" | "medium";
59
- readonly paddingRight: "none" | "medium";
65
+ readonly paddingLeft: "medium" | "none";
66
+ readonly paddingRight: "medium" | "none";
60
67
  readonly width: "full";
61
68
  }, {
62
69
  readonly ':enabled': {
@@ -127,6 +127,7 @@ var InputContainer = function InputContainer(_ref) {
127
127
  };
128
128
  var FocusIndicator = function FocusIndicator(_ref2) {
129
129
  var invalid = _ref2.invalid;
130
+ var theme$1 = theme.useTheme();
130
131
  return jsxRuntime.jsx(box.Box, {
131
132
  "aria-hidden": "true",
132
133
  as: "span",
@@ -135,7 +136,7 @@ var FocusIndicator = function FocusIndicator(_ref2) {
135
136
  }
136
137
  // Styles
137
138
  ,
138
- border: invalid ? 'critical' : 'field',
139
+ border: invalid ? 'critical' : theme$1.components.textInput.borderColor,
139
140
  borderRadius: "small",
140
141
  position: "absolute",
141
142
  bottom: 0,
@@ -180,17 +181,19 @@ var childrenToAdornments = function childrenToAdornments(children) {
180
181
  };
181
182
  };
182
183
 
183
- var _excluded = ["children", "data"];
184
+ var _excluded = ["children", "data", "overflowStrategy"];
184
185
  /** Organize and emphasize information quickly and effectively in a list of text elements. */
185
186
  var TextInput = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
186
187
  var children = _ref.children,
187
188
  data = _ref.data,
189
+ overflowStrategy = _ref.overflowStrategy,
188
190
  consumerProps = _objectWithoutProperties(_ref, _excluded);
189
191
  var _useFieldContext = field.useFieldContext(),
190
192
  _useFieldContext2 = _slicedToArray(_useFieldContext, 2),
191
193
  _useFieldContext2$ = _useFieldContext2[0],
192
194
  disabled = _useFieldContext2$.disabled,
193
195
  invalid = _useFieldContext2$.invalid,
196
+ readOnly = _useFieldContext2$.readOnly,
194
197
  a11yProps = _useFieldContext2[1];
195
198
  var _childrenToAdornments = childrenToAdornments(children),
196
199
  startAdornment = _childrenToAdornments.startAdornment,
@@ -199,7 +202,9 @@ var TextInput = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
199
202
  disabled: disabled,
200
203
  invalid: invalid,
201
204
  startAdornment: Boolean(startAdornment),
202
- endAdornment: Boolean(endAdornment)
205
+ endAdornment: Boolean(endAdornment),
206
+ readOnly: readOnly,
207
+ overflowStrategy: overflowStrategy
203
208
  }),
204
209
  _useInputStyles2 = _slicedToArray(_useInputStyles, 2),
205
210
  boxProps = _useInputStyles2[0],
@@ -214,6 +219,7 @@ var TextInput = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
214
219
  css: react$1.css(inputStyles),
215
220
  data: data,
216
221
  disabled: disabled,
222
+ readOnly: readOnly,
217
223
  ref: forwardedRef
218
224
  }))
219
225
  });
@@ -227,15 +233,18 @@ TextInput.displayName = 'TextInput';
227
233
  var useInputStyles = function useInputStyles(_ref2) {
228
234
  var disabled = _ref2.disabled,
229
235
  startAdornment = _ref2.startAdornment,
230
- endAdornment = _ref2.endAdornment;
236
+ endAdornment = _ref2.endAdornment,
237
+ readOnly = _ref2.readOnly,
238
+ _ref2$overflowStrateg = _ref2.overflowStrategy,
239
+ overflowStrategy = _ref2$overflowStrateg === void 0 ? 'truncate' : _ref2$overflowStrateg;
231
240
  var theme$1 = theme.useTheme();
232
- var overflowStyles = text.useOverflowStrategy('truncate');
241
+ var overflowStyles = text.useOverflowStrategy(overflowStrategy);
233
242
  var focusRingStyles = a11y.useFocusRing({
234
243
  always: true
235
244
  });
236
245
  var textStyles = text.useText({
237
246
  baseline: false,
238
- tone: disabled ? 'disabled' : 'neutral',
247
+ tone: disabled || readOnly ? 'disabled' : 'neutral',
239
248
  size: 'standard',
240
249
  weight: 'regular'
241
250
  });
@@ -127,6 +127,7 @@ var InputContainer = function InputContainer(_ref) {
127
127
  };
128
128
  var FocusIndicator = function FocusIndicator(_ref2) {
129
129
  var invalid = _ref2.invalid;
130
+ var theme$1 = theme.useTheme();
130
131
  return jsxRuntime.jsx(box.Box, {
131
132
  "aria-hidden": "true",
132
133
  as: "span",
@@ -135,7 +136,7 @@ var FocusIndicator = function FocusIndicator(_ref2) {
135
136
  }
136
137
  // Styles
137
138
  ,
138
- border: invalid ? 'critical' : 'field',
139
+ border: invalid ? 'critical' : theme$1.components.textInput.borderColor,
139
140
  borderRadius: "small",
140
141
  position: "absolute",
141
142
  bottom: 0,
@@ -180,17 +181,19 @@ var childrenToAdornments = function childrenToAdornments(children) {
180
181
  };
181
182
  };
182
183
 
183
- var _excluded = ["children", "data"];
184
+ var _excluded = ["children", "data", "overflowStrategy"];
184
185
  /** Organize and emphasize information quickly and effectively in a list of text elements. */
185
186
  var TextInput = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
186
187
  var children = _ref.children,
187
188
  data = _ref.data,
189
+ overflowStrategy = _ref.overflowStrategy,
188
190
  consumerProps = _objectWithoutProperties(_ref, _excluded);
189
191
  var _useFieldContext = field.useFieldContext(),
190
192
  _useFieldContext2 = _slicedToArray(_useFieldContext, 2),
191
193
  _useFieldContext2$ = _useFieldContext2[0],
192
194
  disabled = _useFieldContext2$.disabled,
193
195
  invalid = _useFieldContext2$.invalid,
196
+ readOnly = _useFieldContext2$.readOnly,
194
197
  a11yProps = _useFieldContext2[1];
195
198
  var _childrenToAdornments = childrenToAdornments(children),
196
199
  startAdornment = _childrenToAdornments.startAdornment,
@@ -199,7 +202,9 @@ var TextInput = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
199
202
  disabled: disabled,
200
203
  invalid: invalid,
201
204
  startAdornment: Boolean(startAdornment),
202
- endAdornment: Boolean(endAdornment)
205
+ endAdornment: Boolean(endAdornment),
206
+ readOnly: readOnly,
207
+ overflowStrategy: overflowStrategy
203
208
  }),
204
209
  _useInputStyles2 = _slicedToArray(_useInputStyles, 2),
205
210
  boxProps = _useInputStyles2[0],
@@ -214,6 +219,7 @@ var TextInput = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
214
219
  css: react$1.css(inputStyles),
215
220
  data: data,
216
221
  disabled: disabled,
222
+ readOnly: readOnly,
217
223
  ref: forwardedRef
218
224
  }))
219
225
  });
@@ -227,15 +233,18 @@ TextInput.displayName = 'TextInput';
227
233
  var useInputStyles = function useInputStyles(_ref2) {
228
234
  var disabled = _ref2.disabled,
229
235
  startAdornment = _ref2.startAdornment,
230
- endAdornment = _ref2.endAdornment;
236
+ endAdornment = _ref2.endAdornment,
237
+ readOnly = _ref2.readOnly,
238
+ _ref2$overflowStrateg = _ref2.overflowStrategy,
239
+ overflowStrategy = _ref2$overflowStrateg === void 0 ? 'truncate' : _ref2$overflowStrateg;
231
240
  var theme$1 = theme.useTheme();
232
- var overflowStyles = text.useOverflowStrategy('truncate');
241
+ var overflowStyles = text.useOverflowStrategy(overflowStrategy);
233
242
  var focusRingStyles = a11y.useFocusRing({
234
243
  always: true
235
244
  });
236
245
  var textStyles = text.useText({
237
246
  baseline: false,
238
- tone: disabled ? 'disabled' : 'neutral',
247
+ tone: disabled || readOnly ? 'disabled' : 'neutral',
239
248
  size: 'standard',
240
249
  weight: 'regular'
241
250
  });
@@ -123,6 +123,7 @@ var InputContainer = function InputContainer(_ref) {
123
123
  };
124
124
  var FocusIndicator = function FocusIndicator(_ref2) {
125
125
  var invalid = _ref2.invalid;
126
+ var theme = useTheme();
126
127
  return jsx(Box, {
127
128
  "aria-hidden": "true",
128
129
  as: "span",
@@ -131,7 +132,7 @@ var FocusIndicator = function FocusIndicator(_ref2) {
131
132
  }
132
133
  // Styles
133
134
  ,
134
- border: invalid ? 'critical' : 'field',
135
+ border: invalid ? 'critical' : theme.components.textInput.borderColor,
135
136
  borderRadius: "small",
136
137
  position: "absolute",
137
138
  bottom: 0,
@@ -176,17 +177,19 @@ var childrenToAdornments = function childrenToAdornments(children) {
176
177
  };
177
178
  };
178
179
 
179
- var _excluded = ["children", "data"];
180
+ var _excluded = ["children", "data", "overflowStrategy"];
180
181
  /** Organize and emphasize information quickly and effectively in a list of text elements. */
181
182
  var TextInput = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
182
183
  var children = _ref.children,
183
184
  data = _ref.data,
185
+ overflowStrategy = _ref.overflowStrategy,
184
186
  consumerProps = _objectWithoutProperties(_ref, _excluded);
185
187
  var _useFieldContext = useFieldContext(),
186
188
  _useFieldContext2 = _slicedToArray(_useFieldContext, 2),
187
189
  _useFieldContext2$ = _useFieldContext2[0],
188
190
  disabled = _useFieldContext2$.disabled,
189
191
  invalid = _useFieldContext2$.invalid,
192
+ readOnly = _useFieldContext2$.readOnly,
190
193
  a11yProps = _useFieldContext2[1];
191
194
  var _childrenToAdornments = childrenToAdornments(children),
192
195
  startAdornment = _childrenToAdornments.startAdornment,
@@ -195,7 +198,9 @@ var TextInput = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
195
198
  disabled: disabled,
196
199
  invalid: invalid,
197
200
  startAdornment: Boolean(startAdornment),
198
- endAdornment: Boolean(endAdornment)
201
+ endAdornment: Boolean(endAdornment),
202
+ readOnly: readOnly,
203
+ overflowStrategy: overflowStrategy
199
204
  }),
200
205
  _useInputStyles2 = _slicedToArray(_useInputStyles, 2),
201
206
  boxProps = _useInputStyles2[0],
@@ -210,6 +215,7 @@ var TextInput = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
210
215
  css: css(inputStyles),
211
216
  data: data,
212
217
  disabled: disabled,
218
+ readOnly: readOnly,
213
219
  ref: forwardedRef
214
220
  }))
215
221
  });
@@ -223,15 +229,18 @@ TextInput.displayName = 'TextInput';
223
229
  var useInputStyles = function useInputStyles(_ref2) {
224
230
  var disabled = _ref2.disabled,
225
231
  startAdornment = _ref2.startAdornment,
226
- endAdornment = _ref2.endAdornment;
232
+ endAdornment = _ref2.endAdornment,
233
+ readOnly = _ref2.readOnly,
234
+ _ref2$overflowStrateg = _ref2.overflowStrategy,
235
+ overflowStrategy = _ref2$overflowStrateg === void 0 ? 'truncate' : _ref2$overflowStrateg;
227
236
  var theme = useTheme();
228
- var overflowStyles = useOverflowStrategy('truncate');
237
+ var overflowStyles = useOverflowStrategy(overflowStrategy);
229
238
  var focusRingStyles = useFocusRing({
230
239
  always: true
231
240
  });
232
241
  var textStyles = useText({
233
242
  baseline: false,
234
- tone: disabled ? 'disabled' : 'neutral',
243
+ tone: disabled || readOnly ? 'disabled' : 'neutral',
235
244
  size: 'standard',
236
245
  weight: 'regular'
237
246
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spark-web/text-input",
3
- "version": "5.0.0",
3
+ "version": "5.1.1",
4
4
  "homepage": "https://github.com/brighte-labs/spark-web#readme",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,16 +20,16 @@
20
20
  "@spark-web/a11y": "^5.0.0",
21
21
  "@spark-web/box": "^5.0.0",
22
22
  "@spark-web/text": "^5.0.0",
23
- "@spark-web/theme": "^5.0.0",
23
+ "@spark-web/theme": "^5.10.5",
24
24
  "@spark-web/utils": "^5.0.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@spark-web/field": "^5.0.0",
27
+ "@spark-web/field": "^5.1.0",
28
28
  "@types/react": "^18.2.0",
29
29
  "react": "^18.2.0"
30
30
  },
31
31
  "peerDependencies": {
32
- "@spark-web/field": "^5.0.0",
32
+ "@spark-web/field": "^5.1.0",
33
33
  "react": ">=17.0.2"
34
34
  },
35
35
  "engines": {