@stenajs-webui/forms 19.0.0-next.16 → 19.0.0-next.18

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/dist/index.es.js CHANGED
@@ -53,27 +53,28 @@ const dt = "_knob_1xijn_55", pt = "_filler_1xijn_60", ft = "_checked_1xijn_74",
53
53
  onValueChange: n,
54
54
  value: r = !1,
55
55
  size: c = "standard",
56
- ...i
57
- }, o) => {
58
- const l = j(), a = (p) => {
59
- l.current = p, l.current && (l.current.indeterminate = Boolean(t)), o && (typeof o == "function" ? o(p) : o.current = p);
60
- }, f = m(
56
+ className: i,
57
+ ...l
58
+ }, a) => {
59
+ const o = j(), f = (p) => {
60
+ o.current = p, o.current && (o.current.indeterminate = Boolean(t)), a && (typeof a == "function" ? a(p) : a.current = p);
61
+ }, _ = m(
61
62
  (p) => {
62
63
  e && e(p), n && n(p.target.checked);
63
64
  },
64
65
  [e, n]
65
66
  );
66
67
  return v(() => {
67
- l.current && (l.current.indeterminate = Boolean(t));
68
- }, [t, l]), /* @__PURE__ */ s(
68
+ o.current && (o.current.indeterminate = Boolean(t));
69
+ }, [t, o]), /* @__PURE__ */ s(
69
70
  "input",
70
71
  {
71
72
  type: "checkbox",
72
- className: I(P.checkbox, P[c]),
73
+ className: I(P.checkbox, P[c], i),
73
74
  checked: r,
74
- onChange: f,
75
- ref: a,
76
- ...i
75
+ onChange: _,
76
+ ref: f,
77
+ ...l
77
78
  }
78
79
  );
79
80
  }
@@ -95,9 +96,9 @@ const dt = "_knob_1xijn_55", pt = "_filler_1xijn_60", ft = "_checked_1xijn_74",
95
96
  small: It
96
97
  }, yt = $(
97
98
  ({ onChange: t, onValueChange: e, size: n = "standard", name: r, ...c }, i) => {
98
- const o = m(
99
- (l) => {
100
- t && t(l), e && e(l.target.value);
99
+ const l = m(
100
+ (a) => {
101
+ t && t(a), e && e(a.target.value);
101
102
  },
102
103
  [t, e]
103
104
  );
@@ -107,7 +108,7 @@ const dt = "_knob_1xijn_55", pt = "_filler_1xijn_60", ft = "_checked_1xijn_74",
107
108
  type: "radio",
108
109
  name: r,
109
110
  className: U.radiobutton + " " + U[n],
110
- onChange: o,
111
+ onChange: l,
111
112
  ref: i,
112
113
  ...c
113
114
  }
@@ -123,12 +124,12 @@ const dt = "_knob_1xijn_55", pt = "_filler_1xijn_60", ft = "_checked_1xijn_74",
123
124
  /* @__PURE__ */ s(yt, { ref: e, ...c }),
124
125
  /* @__PURE__ */ s(b, {}),
125
126
  /* @__PURE__ */ s(A, { color: r, userSelect: "none", children: t })
126
- ] }) }) }), Rt = (t, e, n, r, c, i, o, l) => {
127
- const a = j(!1), f = (u) => {
127
+ ] }) }) }), Rt = (t, e, n, r, c, i, l, a) => {
128
+ const o = j(!1), f = (u) => {
128
129
  var d;
129
- a.current || i == null || i((d = u.target.value) != null ? d : ""), o == null || o(u);
130
- }, p = (u) => {
131
- a.current = !1, l == null || l(u);
130
+ o.current || i == null || i((d = u.target.value) != null ? d : ""), l == null || l(u);
131
+ }, _ = (u) => {
132
+ o.current = !1, a == null || a(u);
132
133
  };
133
134
  return {
134
135
  onKeyDownHandler: m(
@@ -136,21 +137,21 @@ const dt = "_knob_1xijn_55", pt = "_filler_1xijn_60", ft = "_checked_1xijn_74",
136
137
  var g;
137
138
  const { key: d } = u;
138
139
  if (d === "Enter")
139
- a.current = !0, n == null || n(), i == null || i((g = u.currentTarget.value) != null ? g : "");
140
+ o.current = !0, n == null || n(), i == null || i((g = u.currentTarget.value) != null ? g : "");
140
141
  else if (d === "Escape")
141
- a.current = !0, r == null || r(), u.preventDefault(), u.stopPropagation();
142
+ o.current = !0, r == null || r(), u.preventDefault(), u.stopPropagation();
142
143
  else if (c) {
143
- const _ = (y, w) => {
144
- a.current = !0, t.current.blur(), c(y), w.preventDefault(), w.stopPropagation();
144
+ const h = (y, w) => {
145
+ o.current = !0, t.current.blur(), c(y), w.preventDefault(), w.stopPropagation();
145
146
  };
146
- u.shiftKey && d === "Tab" ? _("left", u) : d === "Tab" ? _("right", u) : d === "ArrowUp" ? _("up", u) : d === "ArrowDown" ? _("down", u) : d === "ArrowRight" ? t.current.value.length === t.current.selectionStart && _("right", u) : d === "ArrowLeft" && t.current.selectionStart === 0 && _("left", u);
147
+ u.shiftKey && d === "Tab" ? h("left", u) : d === "Tab" ? h("right", u) : d === "ArrowUp" ? h("up", u) : d === "ArrowDown" ? h("down", u) : d === "ArrowRight" ? t.current.value.length === t.current.selectionStart && h("right", u) : d === "ArrowLeft" && t.current.selectionStart === 0 && h("left", u);
147
148
  }
148
149
  e && e(u);
149
150
  },
150
151
  [r, c, e, t, n, i]
151
152
  ),
152
153
  onBlurHandler: f,
153
- onFocusHandler: p
154
+ onFocusHandler: _
154
155
  };
155
156
  };
156
157
  function St(t) {
@@ -169,23 +170,23 @@ const Tt = (t, e, n) => {
169
170
  onChange: r,
170
171
  onValueChange: c,
171
172
  selectAllOnMount: i,
172
- moveCursorToEndOnMount: o,
173
- onDone: l,
174
- onMove: a,
173
+ moveCursorToEndOnMount: l,
174
+ onDone: a,
175
+ onMove: o,
175
176
  onFocus: f,
176
- onBlur: p,
177
- onKeyDown: h,
177
+ onBlur: _,
178
+ onKeyDown: p,
178
179
  autoFocus: u
179
180
  }) => {
180
- Tt(t, !!o, !!i);
181
- const { onKeyDownHandler: d, onFocusHandler: g, onBlurHandler: _ } = Rt(
181
+ Tt(t, !!l, !!i);
182
+ const { onKeyDownHandler: d, onFocusHandler: g, onBlurHandler: h } = Rt(
182
183
  t,
183
- h,
184
+ p,
184
185
  e,
185
186
  n,
187
+ o,
186
188
  a,
187
- l,
188
- p,
189
+ _,
189
190
  f
190
191
  ), y = m(
191
192
  (w) => {
@@ -194,7 +195,7 @@ const Tt = (t, e, n) => {
194
195
  [r, c]
195
196
  );
196
197
  return {
197
- onBlur: _,
198
+ onBlur: h,
198
199
  onChange: y,
199
200
  onFocus: g,
200
201
  onKeyDown: d,
@@ -220,20 +221,20 @@ const Tt = (t, e, n) => {
220
221
  spaceOnLeft: r,
221
222
  spaceOnRight: c,
222
223
  disableContentPadding: i,
223
- disableContentPaddingLeft: o,
224
- disableContentPaddingRight: l,
225
- onClick: a
224
+ disableContentPaddingLeft: l,
225
+ disableContentPaddingRight: a,
226
+ onClick: o
226
227
  }) => !n && !t ? null : n ? /* @__PURE__ */ x(R, { children: [
227
- r && !(i || o) ? /* @__PURE__ */ s(b, {}) : null,
228
- a ? /* @__PURE__ */ s("span", { onClick: a, className: k.clickable, children: n || null }) : /* @__PURE__ */ s(R, { children: n || null }),
229
- c && !(i || l) ? /* @__PURE__ */ s(b, {}) : null
228
+ r && !(i || l) ? /* @__PURE__ */ s(b, {}) : null,
229
+ o ? /* @__PURE__ */ s("span", { onClick: o, className: k.clickable, children: n || null }) : /* @__PURE__ */ s(R, { children: n || null }),
230
+ c && !(i || a) ? /* @__PURE__ */ s(b, {}) : null
230
231
  ] }) : /* @__PURE__ */ x(R, { children: [
231
232
  r ? /* @__PURE__ */ s(b, {}) : null,
232
- t && /* @__PURE__ */ s(R, { children: a ? /* @__PURE__ */ s(
233
+ t && /* @__PURE__ */ s(R, { children: o ? /* @__PURE__ */ s(
233
234
  it,
234
235
  {
235
236
  type: "button",
236
- onClick: a,
237
+ onClick: o,
237
238
  leftIcon: t,
238
239
  size: "small"
239
240
  }
@@ -252,16 +253,16 @@ const Tt = (t, e, n) => {
252
253
  disabled: r,
253
254
  className: c,
254
255
  contentLeft: i,
255
- contentRight: o,
256
- disableContentPadding: l,
257
- disableContentPaddingLeft: a,
256
+ contentRight: l,
257
+ disableContentPadding: a,
258
+ disableContentPaddingLeft: o,
258
259
  disableContentPaddingRight: f,
259
- iconLeft: p,
260
- iconRight: h,
260
+ iconLeft: _,
261
+ iconRight: p,
261
262
  onClickLeft: u,
262
263
  onClickRight: d,
263
264
  moveCursorToEndOnMount: g,
264
- selectAllOnMount: _,
265
+ selectAllOnMount: h,
265
266
  autoFocus: y,
266
267
  onValueChange: w,
267
268
  wrapperClassName: W,
@@ -281,7 +282,7 @@ const Tt = (t, e, n) => {
281
282
  onEsc: X,
282
283
  onChange: G,
283
284
  onValueChange: w,
284
- selectAllOnMount: _,
285
+ selectAllOnMount: h,
285
286
  moveCursorToEndOnMount: g,
286
287
  onDone: z,
287
288
  onMove: q,
@@ -289,7 +290,7 @@ const Tt = (t, e, n) => {
289
290
  onBlur: Z,
290
291
  onKeyDown: J,
291
292
  autoFocus: y
292
- }), et = e === "success" ? F : e === "warning" || e === "error" ? K : h, nt = e === "loading" ? /* @__PURE__ */ s(M, {}) : o;
293
+ }), et = e === "success" ? F : e === "warning" || e === "error" ? K : p, nt = e === "loading" ? /* @__PURE__ */ s(M, {}) : l;
293
294
  return /* @__PURE__ */ x(
294
295
  "div",
295
296
  {
@@ -310,10 +311,10 @@ const Tt = (t, e, n) => {
310
311
  T,
311
312
  {
312
313
  content: i,
313
- disableContentPadding: l,
314
- disableContentPaddingLeft: a,
314
+ disableContentPadding: a,
315
+ disableContentPaddingLeft: o,
315
316
  disableContentPaddingRight: f,
316
- icon: p,
317
+ icon: _,
317
318
  spaceOnLeft: !0,
318
319
  onClick: u
319
320
  }
@@ -334,8 +335,8 @@ const Tt = (t, e, n) => {
334
335
  T,
335
336
  {
336
337
  content: nt,
337
- disableContentPadding: l,
338
- disableContentPaddingLeft: a,
338
+ disableContentPadding: a,
339
+ disableContentPaddingLeft: o,
339
340
  disableContentPaddingRight: f,
340
341
  icon: et,
341
342
  spaceOnRight: !0,
@@ -358,8 +359,8 @@ const Tt = (t, e, n) => {
358
359
  if (!e)
359
360
  t(String(N(n, r, c)));
360
361
  else {
361
- const o = (H(e) || 0) + n;
362
- t(String(N(o, r, c)));
362
+ const l = (H(e) || 0) + n;
363
+ t(String(N(l, r, c)));
363
364
  }
364
365
  }, zt = ({
365
366
  onValueChange: t,
@@ -384,17 +385,17 @@ const Tt = (t, e, n) => {
384
385
  min: r,
385
386
  step: c = 1,
386
387
  contentRight: i,
387
- disabled: o,
388
- className: l,
389
- hideButtons: a,
388
+ disabled: l,
389
+ className: a,
390
+ hideButtons: o,
390
391
  ...f
391
392
  }) => {
392
- const p = m(
393
+ const _ = m(
393
394
  (d) => {
394
395
  Ct({ onValueChange: e, value: t, numSteps: d, min: r, max: n });
395
396
  },
396
397
  [t, n, r, e]
397
- ), h = m(
398
+ ), p = m(
398
399
  (d) => {
399
400
  zt({ onValueChange: e, newValue: d, min: r, max: n });
400
401
  },
@@ -403,7 +404,7 @@ const Tt = (t, e, n) => {
403
404
  return /* @__PURE__ */ s(
404
405
  O,
405
406
  {
406
- contentRight: a ? i : /* @__PURE__ */ x(R, { children: [
407
+ contentRight: o ? i : /* @__PURE__ */ x(R, { children: [
407
408
  i && /* @__PURE__ */ x(R, { children: [
408
409
  i,
409
410
  /* @__PURE__ */ s(b, {})
@@ -411,22 +412,22 @@ const Tt = (t, e, n) => {
411
412
  /* @__PURE__ */ s(
412
413
  ot,
413
414
  {
414
- onClickUp: o ? void 0 : () => p(c),
415
- onClickDown: o ? void 0 : () => p(-c),
415
+ onClickUp: l ? void 0 : () => _(c),
416
+ onClickDown: l ? void 0 : () => _(-c),
416
417
  iconColor: "var(--swui-textinput-text-color)",
417
- disabled: o
418
+ disabled: l
418
419
  }
419
420
  )
420
421
  ] }),
421
422
  value: t,
422
- onValueChange: h,
423
- disableContentPaddingRight: !a,
423
+ onValueChange: p,
424
+ disableContentPaddingRight: !o,
424
425
  type: "number",
425
426
  min: r,
426
427
  max: n,
427
428
  step: c,
428
- className: I(Wt.numericTextInputInput, l),
429
- disabled: o,
429
+ className: I(Wt.numericTextInputInput, a),
430
+ disabled: l,
430
431
  ...f
431
432
  }
432
433
  );
@@ -469,16 +470,16 @@ const Tt = (t, e, n) => {
469
470
  wrapperStyle: r,
470
471
  contentLeft: c,
471
472
  contentRight: i,
472
- disableContentPadding: o,
473
- disableContentPaddingLeft: l,
474
- disableContentPaddingRight: a,
473
+ disableContentPadding: l,
474
+ disableContentPaddingLeft: a,
475
+ disableContentPaddingRight: o,
475
476
  iconRight: f,
476
- iconLeft: p,
477
- onClickLeft: h,
477
+ iconLeft: _,
478
+ onClickLeft: p,
478
479
  onClickRight: u,
479
480
  children: d
480
481
  }) => {
481
- const g = t === "success" ? F : t === "warning" || t === "error" ? K : f, _ = t === "loading" ? /* @__PURE__ */ s(M, {}) : i;
482
+ const g = t === "success" ? F : t === "warning" || t === "error" ? K : f, h = t === "loading" ? /* @__PURE__ */ s(M, {}) : i;
482
483
  return /* @__PURE__ */ x(
483
484
  "div",
484
485
  {
@@ -497,22 +498,22 @@ const Tt = (t, e, n) => {
497
498
  T,
498
499
  {
499
500
  content: c,
500
- disableContentPadding: o,
501
- disableContentPaddingLeft: l,
502
- disableContentPaddingRight: a,
503
- icon: p,
501
+ disableContentPadding: l,
502
+ disableContentPaddingLeft: a,
503
+ disableContentPaddingRight: o,
504
+ icon: _,
504
505
  spaceOnLeft: !0,
505
- onClick: h
506
+ onClick: p
506
507
  }
507
508
  ),
508
509
  /* @__PURE__ */ s(B, { alignItems: "center", children: d }),
509
510
  /* @__PURE__ */ s(
510
511
  T,
511
512
  {
512
- content: _,
513
- disableContentPadding: o,
514
- disableContentPaddingLeft: l,
515
- disableContentPaddingRight: a,
513
+ content: h,
514
+ disableContentPadding: l,
515
+ disableContentPaddingLeft: a,
516
+ disableContentPaddingRight: o,
516
517
  icon: g,
517
518
  spaceOnRight: !0,
518
519
  onClick: u
@@ -531,28 +532,28 @@ const Tt = (t, e, n) => {
531
532
  onChange: r,
532
533
  resize: c = "none",
533
534
  readOnly: i = !1,
534
- rows: o,
535
- disabled: l,
536
- ...a
535
+ rows: l,
536
+ disabled: a,
537
+ ...o
537
538
  }, f) => {
538
- const p = m(
539
- (h) => {
540
- r && r(h), n && n(h.target.value);
539
+ const _ = m(
540
+ (p) => {
541
+ r && r(p), n && n(p.target.value);
541
542
  },
542
543
  [r, n]
543
544
  );
544
545
  return /* @__PURE__ */ s(
545
546
  "textarea",
546
547
  {
547
- disabled: l,
548
- rows: o,
548
+ disabled: a,
549
+ rows: l,
549
550
  readOnly: i,
550
551
  className: I(Xt.textArea, t),
551
552
  style: { resize: c },
552
- onChange: p,
553
+ onChange: _,
553
554
  value: e,
554
555
  ref: f,
555
- ...a
556
+ ...o
556
557
  }
557
558
  );
558
559
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/components/ui/switch/Switch.tsx","../src/components/ui/switch/SwitchWithLabel.tsx","../src/components/ui/checkbox/Checkbox.tsx","../src/components/ui/checkbox/CheckboxWithLabel.tsx","../src/components/ui/radio/RadioButton.tsx","../src/components/ui/radio/RadioButtonWithLabel.tsx","../src/hooks/UseKeyboardNavigation.ts","../src/hooks/UseSelectAllOnMount.ts","../src/hooks/UseTextInput.ts","../src/components/ui/text-input/TextInputIcon.tsx","../src/components/ui/text-input/TextInput.tsx","../src/utils/NumericHelpers.ts","../src/components/ui/numeric-text-input/NumericTextInput.tsx","../src/components/ui/numeric-text-input/hooks/UseNumericInputValue.ts","../src/components/ui/password-input/PasswordInput.tsx","../src/components/ui/text-input/TextInputBox.tsx","../src/components/ui/text-area/TextArea.tsx"],"sourcesContent":["import { Ref } from \"react\";\nimport * as React from \"react\";\nimport { ButtonElementProps } from \"@stenajs-webui/core\";\nimport { ValueAndOnValueChangeProps } from \"../types\";\nimport styles from \"./Switch.module.css\";\n\nexport interface SwitchProps\n extends Omit<ButtonElementProps, \"value\">,\n ValueAndOnValueChangeProps<boolean> {\n wrapperRef?: Ref<HTMLDivElement>;\n}\n\nconst styleChecked = `${styles.switch} ${styles.checked}`;\n\nexport const Switch: React.FC<SwitchProps> = ({\n value,\n disabled,\n onValueChange,\n className,\n wrapperRef,\n ...restProps\n}) => {\n return (\n <div className={className} ref={wrapperRef}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n className={value ? styleChecked : styles.switch}\n disabled={disabled}\n onClick={() => onValueChange && onValueChange(!value)}\n {...restProps}\n >\n <div className={styles.filler} />\n <div className={styles.knob} />\n </button>\n </div>\n );\n};\n","import { Box, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Switch, SwitchProps } from \"./Switch\";\n\nexport interface SwitchWithLabelProps extends SwitchProps {\n label: string;\n textColor?: string;\n}\n\nexport const SwitchWithLabel: React.FC<SwitchWithLabelProps> = ({\n label,\n disabled,\n textColor,\n wrapperRef,\n ...switchProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Box row alignItems={\"center\"}>\n <Switch disabled={disabled} {...switchProps} />\n <Space />\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n </Box>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport cx from \"classnames\";\nimport styles from \"./Checkbox.module.css\";\n\nexport type CheckboxSize = \"standard\" | \"small\";\n\nexport interface CheckboxProps\n extends FullOnChangeProps<boolean, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n indeterminate?: boolean;\n size?: CheckboxSize;\n disabled?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n indeterminate = false,\n onChange,\n onValueChange,\n value = false,\n size = \"standard\",\n ...inputProps\n },\n ref\n ) => {\n const localRef = useRef<HTMLInputElement>();\n\n const setRef = (element: HTMLInputElement) => {\n localRef.current = element;\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n if (ref) {\n if (typeof ref === \"function\") {\n ref(element);\n } else {\n (ref as MutableRefObject<HTMLInputElement>).current = element;\n }\n }\n };\n\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.checked);\n }\n },\n [onChange, onValueChange]\n );\n\n useEffect(() => {\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate, localRef]);\n\n return (\n <input\n type={\"checkbox\"}\n className={cx(styles.checkbox, styles[size])}\n checked={value}\n onChange={handleInputChange}\n ref={setRef}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { Checkbox, CheckboxProps } from \"./Checkbox\";\n\nexport interface CheckboxWithLabelProps extends CheckboxProps {\n label?: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const CheckboxWithLabel: React.FC<CheckboxWithLabelProps> = ({\n children,\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...checkboxProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <Checkbox {...checkboxProps} ref={inputRef} />\n <Space />\n {label && (\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n )}\n {children}\n </Row>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./RadioButton.module.css\";\n\nexport type RadioButtonSize = \"standard\" | \"small\";\n\nexport interface RadioButtonProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n size?: RadioButtonSize;\n}\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (\n { onChange, onValueChange, size = \"standard\", name, ...inputProps },\n ref\n ) => {\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <input\n type={\"radio\"}\n name={name}\n className={styles.radiobutton + \" \" + styles[size]}\n onChange={handleInputChange}\n ref={ref}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { RadioButton, RadioButtonProps } from \"./RadioButton\";\n\nexport interface RadioButtonWithLabelProps extends RadioButtonProps {\n label: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const RadioButtonWithLabel: React.FC<RadioButtonWithLabelProps> = ({\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...radioButtonProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <RadioButton ref={inputRef} {...radioButtonProps} />\n <Space />\n <Text color={textColor} userSelect={\"none\"}>\n {label}\n </Text>\n </Row>\n </label>\n </div>\n );\n};\n","import {\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nexport type MoveDirection = \"right\" | \"left\" | \"down\" | \"up\";\nexport type TextInputElement = HTMLTextAreaElement | HTMLInputElement;\n\nexport const useKeyboardNavigation = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n /**\n * User-provided onKeyDown. Internal handler should forward calls to this.\n * */\n onKeyDown: KeyboardEventHandler<TElement> | undefined,\n onEnter: (() => void) | undefined,\n onEsc: (() => void) | undefined,\n /**\n * onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab.\n * */\n onMove: ((direction: MoveDirection) => void) | undefined,\n onDone: ((value: string) => void) | undefined,\n onBlur: FocusEventHandler<TElement> | undefined,\n onFocus: FocusEventHandler<TElement> | undefined\n) => {\n const wasHandled = useRef(false);\n\n const onBlurHandler: FocusEventHandler<TElement> = (ev) => {\n if (!wasHandled.current) {\n onDone?.(ev.target.value ?? \"\");\n }\n onBlur?.(ev);\n };\n\n const onFocusHandler: FocusEventHandler<TElement> = (ev) => {\n wasHandled.current = false;\n onFocus?.(ev);\n };\n\n const onKeyDownHandler: KeyboardEventHandler<TElement> = useCallback(\n (ev) => {\n const { key } = ev;\n if (key === \"Enter\") {\n wasHandled.current = true;\n onEnter?.();\n onDone?.(ev.currentTarget.value ?? \"\");\n } else if (key === \"Escape\") {\n wasHandled.current = true;\n onEsc?.();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (onMove) {\n const blurMoveAndCancel = (\n direction: MoveDirection,\n e: KeyboardEvent<TElement>\n ) => {\n wasHandled.current = true;\n ref.current!.blur();\n onMove(direction);\n e.preventDefault();\n e.stopPropagation();\n };\n\n if (ev.shiftKey && key === \"Tab\") {\n blurMoveAndCancel(\"left\", ev);\n } else if (key === \"Tab\") {\n blurMoveAndCancel(\"right\", ev);\n } else if (key === \"ArrowUp\") {\n blurMoveAndCancel(\"up\", ev);\n } else if (key === \"ArrowDown\") {\n blurMoveAndCancel(\"down\", ev);\n } else if (key === \"ArrowRight\") {\n if (ref.current!.value.length === ref.current!.selectionStart) {\n blurMoveAndCancel(\"right\", ev);\n }\n } else if (key === \"ArrowLeft\") {\n if (ref.current!.selectionStart === 0) {\n blurMoveAndCancel(\"left\", ev);\n }\n }\n }\n\n if (onKeyDown) {\n onKeyDown(ev);\n }\n },\n [onEsc, onMove, onKeyDown, ref, onEnter, onDone]\n );\n\n return {\n onKeyDownHandler,\n onBlurHandler,\n onFocusHandler,\n };\n};\n","import { RefObject, useEffect } from \"react\";\nimport { TextInputElement } from \"./UseKeyboardNavigation\";\n\nexport function elementHasSelectionRange(element: TextInputElement): boolean {\n if (element.tagName === \"TEXTAREA\") {\n return true;\n }\n\n if (\n element.tagName === \"INPUT\" &&\n (element.type === \"text\" ||\n element.type === \"search\" ||\n element.type === \"url\" ||\n element.type === \"tel\" ||\n element.type === \"password\")\n ) {\n return true;\n }\n\n return false;\n}\n\nexport const useSelectAllOnMount = (\n ref: RefObject<TextInputElement>,\n moveCursorToEnd: boolean,\n enabled: boolean\n) => {\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n /*\n `selectionStart`, `selectionEnd` properties and `setSelectionRange` method apply only to inputs of types text, search, URL, tel and password.\n Chrome, starting from version 33, throws an exception while accessing those properties and method on the rest of input types.\n https://html.spec.whatwg.org/multipage/input.html#concept-input-apply\n */\n if (!elementHasSelectionRange(ref.current)) {\n return;\n }\n\n if (enabled) {\n ref.current.setSelectionRange(0, ref.current.value.length);\n } else if (moveCursorToEnd) {\n ref.current.setSelectionRange(\n ref.current.value.length,\n ref.current.value.length\n );\n }\n }, [moveCursorToEnd, ref, enabled]);\n};\n","import {\n ChangeEvent,\n ChangeEventHandler,\n CSSProperties,\n FocusEventHandler,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n} from \"react\";\nimport { TextInputVariant } from \"../components/ui/text-input/TextInput\";\nimport {\n MoveDirection,\n TextInputElement,\n useKeyboardNavigation,\n} from \"./UseKeyboardNavigation\";\nimport { useSelectAllOnMount } from \"./UseSelectAllOnMount\";\nimport { FullOnChangeProps } from \"../components/ui/types\";\n\ninterface UseTextInputOptions<TElement extends TextInputElement>\n extends FullOnChangeProps<string, ChangeEvent<TElement>> {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n onFocus?: FocusEventHandler<TElement>;\n onBlur?: FocusEventHandler<TElement>;\n onKeyDown?: KeyboardEventHandler<TElement>;\n}\n\ninterface UseTextInputHookResult<TElement extends TextInputElement> {\n autoFocus?: boolean;\n onChange: ChangeEventHandler<TElement>;\n onFocus: FocusEventHandler<TElement>;\n onBlur: FocusEventHandler<TElement>;\n onKeyDown: KeyboardEventHandler<TElement>;\n}\n\nexport const useTextInput = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n }: UseTextInputOptions<TElement>\n): UseTextInputHookResult<TElement> => {\n useSelectAllOnMount(ref, !!moveCursorToEndOnMount, !!selectAllOnMount);\n\n const { onKeyDownHandler, onFocusHandler, onBlurHandler } =\n useKeyboardNavigation<TElement>(\n ref,\n onKeyDown,\n onEnter,\n onEsc,\n onMove,\n onDone,\n onBlur,\n onFocus\n );\n\n const onChangeHandler = useCallback<ChangeEventHandler<TElement>>(\n (ev) => {\n onChange?.(ev);\n onValueChange?.(ev.target.value);\n },\n [onChange, onValueChange]\n );\n\n return {\n onBlur: onBlurHandler,\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onKeyDown: onKeyDownHandler,\n autoFocus: selectAllOnMount || autoFocus,\n };\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { Space } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface TextInputIconProps {\n iconClassName?: string;\n content?: React.ReactNode;\n icon?: IconDefinition;\n spaceOnRight?: boolean;\n spaceOnLeft?: boolean;\n disableContentPadding?: boolean;\n disableContentPaddingLeft?: boolean;\n disableContentPaddingRight?: boolean;\n onClick?: () => void;\n}\n\nexport const TextInputIcon: React.FC<TextInputIconProps> = ({\n icon,\n iconClassName,\n content,\n spaceOnLeft,\n spaceOnRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n onClick,\n}) => {\n if (!content && !icon) {\n return null;\n }\n\n if (content) {\n return (\n <>\n {spaceOnLeft &&\n !(disableContentPadding || disableContentPaddingLeft) ? (\n <Space />\n ) : null}\n {onClick ? (\n <span onClick={onClick} className={styles.clickable}>\n {content || null}\n </span>\n ) : (\n <>{content || null}</>\n )}\n\n {spaceOnRight &&\n !(disableContentPadding || disableContentPaddingRight) ? (\n <Space />\n ) : null}\n </>\n );\n }\n\n return (\n <>\n {spaceOnLeft ? <Space /> : null}\n {icon && (\n <>\n {onClick ? (\n <FlatButton\n type={\"button\"}\n onClick={onClick}\n leftIcon={icon}\n size={\"small\"}\n />\n ) : (\n <FontAwesomeIcon\n icon={icon}\n className={cx(styles.icon, iconClassName)}\n />\n )}\n </>\n )}\n {spaceOnRight ? <Space /> : null}\n </>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { InputProps } from \"@stenajs-webui/core\";\nimport { InputSpinner } from \"@stenajs-webui/elements\";\nimport { stenaCheck, stenaExclamationTriangle } from \"@stenajs-webui/elements\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { ChangeEvent, CSSProperties, useRef } from \"react\";\nimport { MoveDirection } from \"../../../hooks/UseKeyboardNavigation\";\nimport { useTextInput } from \"../../../hooks/UseTextInput\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./TextInput.module.css\";\nimport { TextInputIcon } from \"./TextInputIcon\";\n\nexport type TextInputVariant =\n | \"standard\"\n | \"loading\"\n | \"warning\"\n | \"error\"\n | \"modified\"\n | \"success\";\n\ninterface ExtraContent {\n /** React node to put to the left. Left icon is ignored if this is set. */\n contentLeft?: React.ReactNode;\n /** React node to put to the right. Right icon is ignored if this is set. */\n contentRight?: React.ReactNode;\n /** If true, there will be no padding between contentLeft/contentRight and the border. */\n disableContentPadding?: boolean;\n /** If true, there will be no padding between contentLeft and the border. */\n disableContentPaddingLeft?: boolean;\n /** If true, there will be no padding between contentRight and the border. */\n disableContentPaddingRight?: boolean;\n /** Icon on the left side. */\n iconLeft?: IconDefinition;\n /** Icon on the right side. */\n iconRight?: IconDefinition;\n /** On click left. */\n onClickLeft?: () => void;\n /** On click right. */\n onClickRight?: () => void;\n}\n\nexport interface TextInputProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n InputProps,\n ExtraContent {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n}\n\nexport const TextInput: React.FC<TextInputProps> = (props) => {\n const {\n variant = \"standard\",\n inputRef,\n disabled,\n className,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconLeft,\n iconRight,\n onClickLeft,\n onClickRight,\n moveCursorToEndOnMount,\n selectAllOnMount,\n autoFocus,\n onValueChange,\n wrapperClassName,\n wrapperStyle,\n onDone,\n onEnter,\n onEsc,\n onMove,\n onChange,\n onKeyDown,\n hideBorder,\n onFocus,\n onBlur,\n ...inputProps\n } = props;\n const localRef = useRef<HTMLInputElement>(null);\n const refToUse = inputRef ?? localRef;\n const hookProps = useTextInput<HTMLInputElement>(refToUse, {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n });\n\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n {\n [styles.hideBorder]: hideBorder,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <input\n className={cx(styles.input, className)}\n type={\"text\"}\n disabled={disabled}\n ref={refToUse}\n autoFocus={autoFocus}\n {...inputProps}\n {...hookProps}\n />\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport const onStepValueChange = ({\n onValueChange,\n value,\n numSteps,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n value: string | undefined;\n numSteps: number;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (!value) {\n onValueChange(String(limitWithinRange(numSteps, min, max)));\n } else {\n const parsedValue = parseFloatElseUndefined(value);\n const newValue = (parsedValue || 0) + numSteps;\n onValueChange(String(limitWithinRange(newValue, min, max)));\n }\n }\n};\n\nexport const onTextValueChange = ({\n onValueChange,\n newValue,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n newValue: string;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (newValue === \"\") {\n onValueChange(\"\");\n } else {\n const parsedValue = parseFloatElseUndefined(newValue);\n const value = parsedValue || 0;\n onValueChange(String(limitWithinRange(value, min, max)));\n }\n }\n};\n\nconst limitWithinRange = (\n value: number,\n min?: number,\n max?: number\n): number => {\n let v = value;\n if (min != null) {\n v = Math.max(min, v);\n }\n if (max != null) {\n v = Math.min(max, v);\n }\n return v;\n};\n","import { Omit, Space } from \"@stenajs-webui/core\";\nimport { UpDownButtons } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport styles from \"./NumericTextInput.module.css\";\nimport cx from \"classnames\";\nimport {\n onStepValueChange,\n onTextValueChange,\n} from \"../../../utils/NumericHelpers\";\n\nexport interface NumericTextInputProps\n extends Omit<\n TextInputProps,\n | \"onChange\" // Omit onChange, since up down buttons don't generate HTMLInput event.\n | \"selectAllOnMount\" // Not supported by browser when input type='number'\n | \"moveCursorToEndOnMount\" // Not supported by browser when input type='number'\n > {\n max?: number;\n min?: number;\n step?: number;\n hideButtons?: boolean;\n}\n\nexport const NumericTextInput: React.FC<NumericTextInputProps> = ({\n value,\n onValueChange,\n max,\n min,\n step = 1,\n contentRight,\n disabled,\n className,\n hideButtons,\n ...restProps\n}) => {\n const onClick = useCallback(\n (numSteps: number) => {\n onStepValueChange({ onValueChange, value, numSteps, min, max });\n },\n [value, max, min, onValueChange]\n );\n const onChange = useCallback(\n (newValue: string) => {\n onTextValueChange({ onValueChange, newValue, min, max });\n },\n [max, min, onValueChange]\n );\n\n const contentRightToUse = hideButtons ? (\n contentRight\n ) : (\n <>\n {contentRight && (\n <>\n {contentRight}\n <Space />\n </>\n )}\n <UpDownButtons\n onClickUp={disabled ? undefined : () => onClick(step)}\n onClickDown={disabled ? undefined : () => onClick(-step)}\n iconColor={\"var(--swui-textinput-text-color)\"}\n disabled={disabled}\n />\n </>\n );\n\n return (\n <TextInput\n contentRight={contentRightToUse}\n value={value}\n onValueChange={onChange}\n disableContentPaddingRight={!hideButtons}\n type={\"number\"}\n min={min}\n max={max}\n step={step}\n className={cx(styles.numericTextInputInput, className)}\n disabled={disabled}\n {...restProps}\n />\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport { ValueAndOnValueChangeProps } from \"../../types\";\nimport { NumericTextInputProps } from \"../NumericTextInput\";\nimport { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport type NumericInputValueProps = ValueAndOnValueChangeProps<\n number | undefined\n>;\n\nexport const useNumericInputValue = (\n value: number | undefined,\n onValueChange?: (value: number | undefined) => void\n): Partial<NumericTextInputProps> => {\n const onValueChangeString = useCallback(\n (newValue: string) => {\n if (onValueChange) {\n if (!newValue) {\n onValueChange(undefined);\n } else {\n const n = parseFloatElseUndefined(newValue);\n if (n !== undefined) {\n onValueChange(n);\n }\n }\n }\n },\n [onValueChange]\n );\n\n const valueString = useMemo(() => {\n if (value === undefined) {\n return \"\";\n }\n return String(value);\n }, [value]);\n\n return {\n onValueChange: onValueChangeString,\n value: valueString,\n };\n};\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport { stenaEyeHide, stenaEyeShow } from \"@stenajs-webui/elements\";\n\nexport interface PasswordInputProps extends TextInputProps {\n visibleIcon?: IconDefinition;\n hiddenIcon?: IconDefinition;\n}\n\nexport const PasswordInput: React.FC<PasswordInputProps> = ({\n hiddenIcon = stenaEyeShow,\n visibleIcon = stenaEyeHide,\n ...props\n}) => {\n const [isPassword, setIsPassword] = useState(true);\n\n return (\n <TextInput\n iconRight={isPassword ? hiddenIcon : visibleIcon}\n onClickRight={() => setIsPassword((x) => !x)}\n type={isPassword ? \"password\" : \"text\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport cx from \"classnames\";\nimport { TextInputProps } from \"./TextInput\";\nimport { TextInputIcon } from \"./TextInputIcon\";\nimport {\n InputSpinner,\n stenaCheck,\n stenaExclamationTriangle,\n} from \"@stenajs-webui/elements\";\nimport { Row } from \"@stenajs-webui/core\";\n\nexport interface TextInputBoxProps\n extends Pick<\n TextInputProps,\n | \"variant\"\n | \"wrapperClassName\"\n | \"disabled\"\n | \"wrapperStyle\"\n | \"contentLeft\"\n | \"contentRight\"\n | \"disableContentPadding\"\n | \"disableContentPaddingLeft\"\n | \"disableContentPaddingRight\"\n | \"iconRight\"\n | \"iconLeft\"\n | \"onClickLeft\"\n | \"onClickRight\"\n > {\n children?: ReactNode;\n}\n\nexport const TextInputBox: React.FC<TextInputBoxProps> = ({\n variant = \"standard\",\n disabled,\n wrapperClassName,\n wrapperStyle,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconRight,\n iconLeft,\n onClickLeft,\n onClickRight,\n children,\n}) => {\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles.inputContainer,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <Row alignItems={\"center\"}>{children}</Row>\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./TextArea.module.css\";\nimport { FullOnChangeProps } from \"../types\";\n\ntype Resize =\n | \"none\"\n | \"both\"\n | \"horizontal\"\n | \"vertical\"\n | \"inherit\"\n | \"initial\"\n | \"revert\"\n | \"unset\";\n\nexport interface TextAreaProps\n extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"value\">,\n FullOnChangeProps<string, ChangeEvent<HTMLTextAreaElement>> {\n resize?: Resize;\n readOnly?: boolean;\n rows?: number;\n disabled?: boolean;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n value,\n onValueChange,\n onChange,\n resize = \"none\",\n readOnly = false,\n rows,\n disabled,\n ...textAreaProps\n },\n ref\n ) => {\n const onChangeHandler: ChangeEventHandler<HTMLTextAreaElement> =\n useCallback(\n (ev) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <textarea\n disabled={disabled}\n rows={rows}\n readOnly={readOnly}\n className={cx(styles.textArea, className)}\n style={{ resize }}\n onChange={onChangeHandler}\n value={value}\n ref={ref}\n {...textAreaProps}\n />\n );\n }\n);\n"],"names":["styleChecked","styles","Switch","value","disabled","onValueChange","className","wrapperRef","restProps","jsx","jsxs","SwitchWithLabel","label","textColor","switchProps","Box","Space","Text","Checkbox","forwardRef","indeterminate","onChange","size","inputProps","ref","localRef","useRef","setRef","element","handleInputChange","useCallback","ev","useEffect","cx","CheckboxWithLabel","children","inputRef","checkboxProps","Row","RadioButton","name","RadioButtonWithLabel","radioButtonProps","useKeyboardNavigation","onKeyDown","onEnter","onEsc","onMove","onDone","onBlur","onFocus","wasHandled","onBlurHandler","_a","onFocusHandler","key","blurMoveAndCancel","direction","e","elementHasSelectionRange","useSelectAllOnMount","moveCursorToEnd","enabled","useTextInput","selectAllOnMount","moveCursorToEndOnMount","autoFocus","onKeyDownHandler","onChangeHandler","TextInputIcon","icon","iconClassName","content","spaceOnLeft","spaceOnRight","disableContentPadding","disableContentPaddingLeft","disableContentPaddingRight","onClick","Fragment","FlatButton","FontAwesomeIcon","TextInput","props","variant","contentLeft","contentRight","iconLeft","iconRight","onClickLeft","onClickRight","wrapperClassName","wrapperStyle","hideBorder","refToUse","hookProps","currentIconRight","stenaCheck","stenaExclamationTriangle","currentContentRight","InputSpinner","onStepValueChange","numSteps","min","max","limitWithinRange","newValue","parseFloatElseUndefined","onTextValueChange","v","NumericTextInput","step","hideButtons","UpDownButtons","useNumericInputValue","onValueChangeString","n","valueString","useMemo","PasswordInput","hiddenIcon","stenaEyeShow","visibleIcon","stenaEyeHide","isPassword","setIsPassword","useState","x","TextInputBox","TextArea","resize","readOnly","rows","textAreaProps"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/components/ui/switch/Switch.tsx","../src/components/ui/switch/SwitchWithLabel.tsx","../src/components/ui/checkbox/Checkbox.tsx","../src/components/ui/checkbox/CheckboxWithLabel.tsx","../src/components/ui/radio/RadioButton.tsx","../src/components/ui/radio/RadioButtonWithLabel.tsx","../src/hooks/UseKeyboardNavigation.ts","../src/hooks/UseSelectAllOnMount.ts","../src/hooks/UseTextInput.ts","../src/components/ui/text-input/TextInputIcon.tsx","../src/components/ui/text-input/TextInput.tsx","../src/utils/NumericHelpers.ts","../src/components/ui/numeric-text-input/NumericTextInput.tsx","../src/components/ui/numeric-text-input/hooks/UseNumericInputValue.ts","../src/components/ui/password-input/PasswordInput.tsx","../src/components/ui/text-input/TextInputBox.tsx","../src/components/ui/text-area/TextArea.tsx"],"sourcesContent":["import { Ref } from \"react\";\nimport * as React from \"react\";\nimport { ButtonElementProps } from \"@stenajs-webui/core\";\nimport { ValueAndOnValueChangeProps } from \"../types\";\nimport styles from \"./Switch.module.css\";\n\nexport interface SwitchProps\n extends Omit<ButtonElementProps, \"value\">,\n ValueAndOnValueChangeProps<boolean> {\n wrapperRef?: Ref<HTMLDivElement>;\n}\n\nconst styleChecked = `${styles.switch} ${styles.checked}`;\n\nexport const Switch: React.FC<SwitchProps> = ({\n value,\n disabled,\n onValueChange,\n className,\n wrapperRef,\n ...restProps\n}) => {\n return (\n <div className={className} ref={wrapperRef}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n className={value ? styleChecked : styles.switch}\n disabled={disabled}\n onClick={() => onValueChange && onValueChange(!value)}\n {...restProps}\n >\n <div className={styles.filler} />\n <div className={styles.knob} />\n </button>\n </div>\n );\n};\n","import { Box, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Switch, SwitchProps } from \"./Switch\";\n\nexport interface SwitchWithLabelProps extends SwitchProps {\n label: string;\n textColor?: string;\n}\n\nexport const SwitchWithLabel: React.FC<SwitchWithLabelProps> = ({\n label,\n disabled,\n textColor,\n wrapperRef,\n ...switchProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Box row alignItems={\"center\"}>\n <Switch disabled={disabled} {...switchProps} />\n <Space />\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n </Box>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport cx from \"classnames\";\nimport styles from \"./Checkbox.module.css\";\n\nexport type CheckboxSize = \"standard\" | \"small\";\n\nexport interface CheckboxProps\n extends FullOnChangeProps<boolean, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n indeterminate?: boolean;\n size?: CheckboxSize;\n disabled?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n indeterminate = false,\n onChange,\n onValueChange,\n value = false,\n size = \"standard\",\n className,\n ...inputProps\n },\n ref\n ) => {\n const localRef = useRef<HTMLInputElement>();\n\n const setRef = (element: HTMLInputElement) => {\n localRef.current = element;\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n if (ref) {\n if (typeof ref === \"function\") {\n ref(element);\n } else {\n (ref as MutableRefObject<HTMLInputElement>).current = element;\n }\n }\n };\n\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.checked);\n }\n },\n [onChange, onValueChange]\n );\n\n useEffect(() => {\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate, localRef]);\n\n return (\n <input\n type={\"checkbox\"}\n className={cx(styles.checkbox, styles[size], className)}\n checked={value}\n onChange={handleInputChange}\n ref={setRef}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { Checkbox, CheckboxProps } from \"./Checkbox\";\n\nexport interface CheckboxWithLabelProps extends CheckboxProps {\n label?: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const CheckboxWithLabel: React.FC<CheckboxWithLabelProps> = ({\n children,\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...checkboxProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <Checkbox {...checkboxProps} ref={inputRef} />\n <Space />\n {label && (\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n )}\n {children}\n </Row>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./RadioButton.module.css\";\n\nexport type RadioButtonSize = \"standard\" | \"small\";\n\nexport interface RadioButtonProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n size?: RadioButtonSize;\n}\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (\n { onChange, onValueChange, size = \"standard\", name, ...inputProps },\n ref\n ) => {\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <input\n type={\"radio\"}\n name={name}\n className={styles.radiobutton + \" \" + styles[size]}\n onChange={handleInputChange}\n ref={ref}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { RadioButton, RadioButtonProps } from \"./RadioButton\";\n\nexport interface RadioButtonWithLabelProps extends RadioButtonProps {\n label: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const RadioButtonWithLabel: React.FC<RadioButtonWithLabelProps> = ({\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...radioButtonProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <RadioButton ref={inputRef} {...radioButtonProps} />\n <Space />\n <Text color={textColor} userSelect={\"none\"}>\n {label}\n </Text>\n </Row>\n </label>\n </div>\n );\n};\n","import {\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nexport type MoveDirection = \"right\" | \"left\" | \"down\" | \"up\";\nexport type TextInputElement = HTMLTextAreaElement | HTMLInputElement;\n\nexport const useKeyboardNavigation = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n /**\n * User-provided onKeyDown. Internal handler should forward calls to this.\n * */\n onKeyDown: KeyboardEventHandler<TElement> | undefined,\n onEnter: (() => void) | undefined,\n onEsc: (() => void) | undefined,\n /**\n * onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab.\n * */\n onMove: ((direction: MoveDirection) => void) | undefined,\n onDone: ((value: string) => void) | undefined,\n onBlur: FocusEventHandler<TElement> | undefined,\n onFocus: FocusEventHandler<TElement> | undefined\n) => {\n const wasHandled = useRef(false);\n\n const onBlurHandler: FocusEventHandler<TElement> = (ev) => {\n if (!wasHandled.current) {\n onDone?.(ev.target.value ?? \"\");\n }\n onBlur?.(ev);\n };\n\n const onFocusHandler: FocusEventHandler<TElement> = (ev) => {\n wasHandled.current = false;\n onFocus?.(ev);\n };\n\n const onKeyDownHandler: KeyboardEventHandler<TElement> = useCallback(\n (ev) => {\n const { key } = ev;\n if (key === \"Enter\") {\n wasHandled.current = true;\n onEnter?.();\n onDone?.(ev.currentTarget.value ?? \"\");\n } else if (key === \"Escape\") {\n wasHandled.current = true;\n onEsc?.();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (onMove) {\n const blurMoveAndCancel = (\n direction: MoveDirection,\n e: KeyboardEvent<TElement>\n ) => {\n wasHandled.current = true;\n ref.current!.blur();\n onMove(direction);\n e.preventDefault();\n e.stopPropagation();\n };\n\n if (ev.shiftKey && key === \"Tab\") {\n blurMoveAndCancel(\"left\", ev);\n } else if (key === \"Tab\") {\n blurMoveAndCancel(\"right\", ev);\n } else if (key === \"ArrowUp\") {\n blurMoveAndCancel(\"up\", ev);\n } else if (key === \"ArrowDown\") {\n blurMoveAndCancel(\"down\", ev);\n } else if (key === \"ArrowRight\") {\n if (ref.current!.value.length === ref.current!.selectionStart) {\n blurMoveAndCancel(\"right\", ev);\n }\n } else if (key === \"ArrowLeft\") {\n if (ref.current!.selectionStart === 0) {\n blurMoveAndCancel(\"left\", ev);\n }\n }\n }\n\n if (onKeyDown) {\n onKeyDown(ev);\n }\n },\n [onEsc, onMove, onKeyDown, ref, onEnter, onDone]\n );\n\n return {\n onKeyDownHandler,\n onBlurHandler,\n onFocusHandler,\n };\n};\n","import { RefObject, useEffect } from \"react\";\nimport { TextInputElement } from \"./UseKeyboardNavigation\";\n\nexport function elementHasSelectionRange(element: TextInputElement): boolean {\n if (element.tagName === \"TEXTAREA\") {\n return true;\n }\n\n if (\n element.tagName === \"INPUT\" &&\n (element.type === \"text\" ||\n element.type === \"search\" ||\n element.type === \"url\" ||\n element.type === \"tel\" ||\n element.type === \"password\")\n ) {\n return true;\n }\n\n return false;\n}\n\nexport const useSelectAllOnMount = (\n ref: RefObject<TextInputElement>,\n moveCursorToEnd: boolean,\n enabled: boolean\n) => {\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n /*\n `selectionStart`, `selectionEnd` properties and `setSelectionRange` method apply only to inputs of types text, search, URL, tel and password.\n Chrome, starting from version 33, throws an exception while accessing those properties and method on the rest of input types.\n https://html.spec.whatwg.org/multipage/input.html#concept-input-apply\n */\n if (!elementHasSelectionRange(ref.current)) {\n return;\n }\n\n if (enabled) {\n ref.current.setSelectionRange(0, ref.current.value.length);\n } else if (moveCursorToEnd) {\n ref.current.setSelectionRange(\n ref.current.value.length,\n ref.current.value.length\n );\n }\n }, [moveCursorToEnd, ref, enabled]);\n};\n","import {\n ChangeEvent,\n ChangeEventHandler,\n CSSProperties,\n FocusEventHandler,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n} from \"react\";\nimport { TextInputVariant } from \"../components/ui/text-input/TextInput\";\nimport {\n MoveDirection,\n TextInputElement,\n useKeyboardNavigation,\n} from \"./UseKeyboardNavigation\";\nimport { useSelectAllOnMount } from \"./UseSelectAllOnMount\";\nimport { FullOnChangeProps } from \"../components/ui/types\";\n\ninterface UseTextInputOptions<TElement extends TextInputElement>\n extends FullOnChangeProps<string, ChangeEvent<TElement>> {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n onFocus?: FocusEventHandler<TElement>;\n onBlur?: FocusEventHandler<TElement>;\n onKeyDown?: KeyboardEventHandler<TElement>;\n}\n\ninterface UseTextInputHookResult<TElement extends TextInputElement> {\n autoFocus?: boolean;\n onChange: ChangeEventHandler<TElement>;\n onFocus: FocusEventHandler<TElement>;\n onBlur: FocusEventHandler<TElement>;\n onKeyDown: KeyboardEventHandler<TElement>;\n}\n\nexport const useTextInput = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n }: UseTextInputOptions<TElement>\n): UseTextInputHookResult<TElement> => {\n useSelectAllOnMount(ref, !!moveCursorToEndOnMount, !!selectAllOnMount);\n\n const { onKeyDownHandler, onFocusHandler, onBlurHandler } =\n useKeyboardNavigation<TElement>(\n ref,\n onKeyDown,\n onEnter,\n onEsc,\n onMove,\n onDone,\n onBlur,\n onFocus\n );\n\n const onChangeHandler = useCallback<ChangeEventHandler<TElement>>(\n (ev) => {\n onChange?.(ev);\n onValueChange?.(ev.target.value);\n },\n [onChange, onValueChange]\n );\n\n return {\n onBlur: onBlurHandler,\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onKeyDown: onKeyDownHandler,\n autoFocus: selectAllOnMount || autoFocus,\n };\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { Space } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface TextInputIconProps {\n iconClassName?: string;\n content?: React.ReactNode;\n icon?: IconDefinition;\n spaceOnRight?: boolean;\n spaceOnLeft?: boolean;\n disableContentPadding?: boolean;\n disableContentPaddingLeft?: boolean;\n disableContentPaddingRight?: boolean;\n onClick?: () => void;\n}\n\nexport const TextInputIcon: React.FC<TextInputIconProps> = ({\n icon,\n iconClassName,\n content,\n spaceOnLeft,\n spaceOnRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n onClick,\n}) => {\n if (!content && !icon) {\n return null;\n }\n\n if (content) {\n return (\n <>\n {spaceOnLeft &&\n !(disableContentPadding || disableContentPaddingLeft) ? (\n <Space />\n ) : null}\n {onClick ? (\n <span onClick={onClick} className={styles.clickable}>\n {content || null}\n </span>\n ) : (\n <>{content || null}</>\n )}\n\n {spaceOnRight &&\n !(disableContentPadding || disableContentPaddingRight) ? (\n <Space />\n ) : null}\n </>\n );\n }\n\n return (\n <>\n {spaceOnLeft ? <Space /> : null}\n {icon && (\n <>\n {onClick ? (\n <FlatButton\n type={\"button\"}\n onClick={onClick}\n leftIcon={icon}\n size={\"small\"}\n />\n ) : (\n <FontAwesomeIcon\n icon={icon}\n className={cx(styles.icon, iconClassName)}\n />\n )}\n </>\n )}\n {spaceOnRight ? <Space /> : null}\n </>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { InputProps } from \"@stenajs-webui/core\";\nimport { InputSpinner } from \"@stenajs-webui/elements\";\nimport { stenaCheck, stenaExclamationTriangle } from \"@stenajs-webui/elements\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { ChangeEvent, CSSProperties, useRef } from \"react\";\nimport { MoveDirection } from \"../../../hooks/UseKeyboardNavigation\";\nimport { useTextInput } from \"../../../hooks/UseTextInput\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./TextInput.module.css\";\nimport { TextInputIcon } from \"./TextInputIcon\";\n\nexport type TextInputVariant =\n | \"standard\"\n | \"loading\"\n | \"warning\"\n | \"error\"\n | \"modified\"\n | \"success\";\n\ninterface ExtraContent {\n /** React node to put to the left. Left icon is ignored if this is set. */\n contentLeft?: React.ReactNode;\n /** React node to put to the right. Right icon is ignored if this is set. */\n contentRight?: React.ReactNode;\n /** If true, there will be no padding between contentLeft/contentRight and the border. */\n disableContentPadding?: boolean;\n /** If true, there will be no padding between contentLeft and the border. */\n disableContentPaddingLeft?: boolean;\n /** If true, there will be no padding between contentRight and the border. */\n disableContentPaddingRight?: boolean;\n /** Icon on the left side. */\n iconLeft?: IconDefinition;\n /** Icon on the right side. */\n iconRight?: IconDefinition;\n /** On click left. */\n onClickLeft?: () => void;\n /** On click right. */\n onClickRight?: () => void;\n}\n\nexport interface TextInputProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n InputProps,\n ExtraContent {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n}\n\nexport const TextInput: React.FC<TextInputProps> = (props) => {\n const {\n variant = \"standard\",\n inputRef,\n disabled,\n className,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconLeft,\n iconRight,\n onClickLeft,\n onClickRight,\n moveCursorToEndOnMount,\n selectAllOnMount,\n autoFocus,\n onValueChange,\n wrapperClassName,\n wrapperStyle,\n onDone,\n onEnter,\n onEsc,\n onMove,\n onChange,\n onKeyDown,\n hideBorder,\n onFocus,\n onBlur,\n ...inputProps\n } = props;\n const localRef = useRef<HTMLInputElement>(null);\n const refToUse = inputRef ?? localRef;\n const hookProps = useTextInput<HTMLInputElement>(refToUse, {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n });\n\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n {\n [styles.hideBorder]: hideBorder,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <input\n className={cx(styles.input, className)}\n type={\"text\"}\n disabled={disabled}\n ref={refToUse}\n autoFocus={autoFocus}\n {...inputProps}\n {...hookProps}\n />\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport const onStepValueChange = ({\n onValueChange,\n value,\n numSteps,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n value: string | undefined;\n numSteps: number;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (!value) {\n onValueChange(String(limitWithinRange(numSteps, min, max)));\n } else {\n const parsedValue = parseFloatElseUndefined(value);\n const newValue = (parsedValue || 0) + numSteps;\n onValueChange(String(limitWithinRange(newValue, min, max)));\n }\n }\n};\n\nexport const onTextValueChange = ({\n onValueChange,\n newValue,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n newValue: string;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (newValue === \"\") {\n onValueChange(\"\");\n } else {\n const parsedValue = parseFloatElseUndefined(newValue);\n const value = parsedValue || 0;\n onValueChange(String(limitWithinRange(value, min, max)));\n }\n }\n};\n\nconst limitWithinRange = (\n value: number,\n min?: number,\n max?: number\n): number => {\n let v = value;\n if (min != null) {\n v = Math.max(min, v);\n }\n if (max != null) {\n v = Math.min(max, v);\n }\n return v;\n};\n","import { Omit, Space } from \"@stenajs-webui/core\";\nimport { UpDownButtons } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport styles from \"./NumericTextInput.module.css\";\nimport cx from \"classnames\";\nimport {\n onStepValueChange,\n onTextValueChange,\n} from \"../../../utils/NumericHelpers\";\n\nexport interface NumericTextInputProps\n extends Omit<\n TextInputProps,\n | \"onChange\" // Omit onChange, since up down buttons don't generate HTMLInput event.\n | \"selectAllOnMount\" // Not supported by browser when input type='number'\n | \"moveCursorToEndOnMount\" // Not supported by browser when input type='number'\n > {\n max?: number;\n min?: number;\n step?: number;\n hideButtons?: boolean;\n}\n\nexport const NumericTextInput: React.FC<NumericTextInputProps> = ({\n value,\n onValueChange,\n max,\n min,\n step = 1,\n contentRight,\n disabled,\n className,\n hideButtons,\n ...restProps\n}) => {\n const onClick = useCallback(\n (numSteps: number) => {\n onStepValueChange({ onValueChange, value, numSteps, min, max });\n },\n [value, max, min, onValueChange]\n );\n const onChange = useCallback(\n (newValue: string) => {\n onTextValueChange({ onValueChange, newValue, min, max });\n },\n [max, min, onValueChange]\n );\n\n const contentRightToUse = hideButtons ? (\n contentRight\n ) : (\n <>\n {contentRight && (\n <>\n {contentRight}\n <Space />\n </>\n )}\n <UpDownButtons\n onClickUp={disabled ? undefined : () => onClick(step)}\n onClickDown={disabled ? undefined : () => onClick(-step)}\n iconColor={\"var(--swui-textinput-text-color)\"}\n disabled={disabled}\n />\n </>\n );\n\n return (\n <TextInput\n contentRight={contentRightToUse}\n value={value}\n onValueChange={onChange}\n disableContentPaddingRight={!hideButtons}\n type={\"number\"}\n min={min}\n max={max}\n step={step}\n className={cx(styles.numericTextInputInput, className)}\n disabled={disabled}\n {...restProps}\n />\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport { ValueAndOnValueChangeProps } from \"../../types\";\nimport { NumericTextInputProps } from \"../NumericTextInput\";\nimport { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport type NumericInputValueProps = ValueAndOnValueChangeProps<\n number | undefined\n>;\n\nexport const useNumericInputValue = (\n value: number | undefined,\n onValueChange?: (value: number | undefined) => void\n): Partial<NumericTextInputProps> => {\n const onValueChangeString = useCallback(\n (newValue: string) => {\n if (onValueChange) {\n if (!newValue) {\n onValueChange(undefined);\n } else {\n const n = parseFloatElseUndefined(newValue);\n if (n !== undefined) {\n onValueChange(n);\n }\n }\n }\n },\n [onValueChange]\n );\n\n const valueString = useMemo(() => {\n if (value === undefined) {\n return \"\";\n }\n return String(value);\n }, [value]);\n\n return {\n onValueChange: onValueChangeString,\n value: valueString,\n };\n};\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport { stenaEyeHide, stenaEyeShow } from \"@stenajs-webui/elements\";\n\nexport interface PasswordInputProps extends TextInputProps {\n visibleIcon?: IconDefinition;\n hiddenIcon?: IconDefinition;\n}\n\nexport const PasswordInput: React.FC<PasswordInputProps> = ({\n hiddenIcon = stenaEyeShow,\n visibleIcon = stenaEyeHide,\n ...props\n}) => {\n const [isPassword, setIsPassword] = useState(true);\n\n return (\n <TextInput\n iconRight={isPassword ? hiddenIcon : visibleIcon}\n onClickRight={() => setIsPassword((x) => !x)}\n type={isPassword ? \"password\" : \"text\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport cx from \"classnames\";\nimport { TextInputProps } from \"./TextInput\";\nimport { TextInputIcon } from \"./TextInputIcon\";\nimport {\n InputSpinner,\n stenaCheck,\n stenaExclamationTriangle,\n} from \"@stenajs-webui/elements\";\nimport { Row } from \"@stenajs-webui/core\";\n\nexport interface TextInputBoxProps\n extends Pick<\n TextInputProps,\n | \"variant\"\n | \"wrapperClassName\"\n | \"disabled\"\n | \"wrapperStyle\"\n | \"contentLeft\"\n | \"contentRight\"\n | \"disableContentPadding\"\n | \"disableContentPaddingLeft\"\n | \"disableContentPaddingRight\"\n | \"iconRight\"\n | \"iconLeft\"\n | \"onClickLeft\"\n | \"onClickRight\"\n > {\n children?: ReactNode;\n}\n\nexport const TextInputBox: React.FC<TextInputBoxProps> = ({\n variant = \"standard\",\n disabled,\n wrapperClassName,\n wrapperStyle,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconRight,\n iconLeft,\n onClickLeft,\n onClickRight,\n children,\n}) => {\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles.inputContainer,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <Row alignItems={\"center\"}>{children}</Row>\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./TextArea.module.css\";\nimport { FullOnChangeProps } from \"../types\";\n\ntype Resize =\n | \"none\"\n | \"both\"\n | \"horizontal\"\n | \"vertical\"\n | \"inherit\"\n | \"initial\"\n | \"revert\"\n | \"unset\";\n\nexport interface TextAreaProps\n extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"value\">,\n FullOnChangeProps<string, ChangeEvent<HTMLTextAreaElement>> {\n resize?: Resize;\n readOnly?: boolean;\n rows?: number;\n disabled?: boolean;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n value,\n onValueChange,\n onChange,\n resize = \"none\",\n readOnly = false,\n rows,\n disabled,\n ...textAreaProps\n },\n ref\n ) => {\n const onChangeHandler: ChangeEventHandler<HTMLTextAreaElement> =\n useCallback(\n (ev) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <textarea\n disabled={disabled}\n rows={rows}\n readOnly={readOnly}\n className={cx(styles.textArea, className)}\n style={{ resize }}\n onChange={onChangeHandler}\n value={value}\n ref={ref}\n {...textAreaProps}\n />\n );\n }\n);\n"],"names":["styleChecked","styles","Switch","value","disabled","onValueChange","className","wrapperRef","restProps","jsx","jsxs","SwitchWithLabel","label","textColor","switchProps","Box","Space","Text","Checkbox","forwardRef","indeterminate","onChange","size","inputProps","ref","localRef","useRef","setRef","element","handleInputChange","useCallback","ev","useEffect","cx","CheckboxWithLabel","children","inputRef","checkboxProps","Row","RadioButton","name","RadioButtonWithLabel","radioButtonProps","useKeyboardNavigation","onKeyDown","onEnter","onEsc","onMove","onDone","onBlur","onFocus","wasHandled","onBlurHandler","_a","onFocusHandler","key","blurMoveAndCancel","direction","e","elementHasSelectionRange","useSelectAllOnMount","moveCursorToEnd","enabled","useTextInput","selectAllOnMount","moveCursorToEndOnMount","autoFocus","onKeyDownHandler","onChangeHandler","TextInputIcon","icon","iconClassName","content","spaceOnLeft","spaceOnRight","disableContentPadding","disableContentPaddingLeft","disableContentPaddingRight","onClick","Fragment","FlatButton","FontAwesomeIcon","TextInput","props","variant","contentLeft","contentRight","iconLeft","iconRight","onClickLeft","onClickRight","wrapperClassName","wrapperStyle","hideBorder","refToUse","hookProps","currentIconRight","stenaCheck","stenaExclamationTriangle","currentContentRight","InputSpinner","onStepValueChange","numSteps","min","max","limitWithinRange","newValue","parseFloatElseUndefined","onTextValueChange","v","NumericTextInput","step","hideButtons","UpDownButtons","useNumericInputValue","onValueChangeString","n","valueString","useMemo","PasswordInput","hiddenIcon","stenaEyeShow","visibleIcon","stenaEyeHide","isPassword","setIsPassword","useState","x","TextInputBox","TextArea","resize","readOnly","rows","textAreaProps"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  (function(){"use strict";try{var r=document.createElement("style");r.appendChild(document.createTextNode('._switch_1xijn_1{--swui-switch-width: 50px;--swui-switch-height: var(--swui-field-box-size-medium);--swui-switch-animation-time: var(--swui-animation-time-medium);--swui-switch-selected-highlight-color: var(--lhds-color-blue-500);--swui-switch-knob-width: calc(var(--swui-switch-height) - 2px);--swui-switch-knob-bg-color-enabled: var(--swui-handle-bg-enabled-color);--swui-switch-knob-bg-color-disabled: var(--swui-handle-bg-disabled-color);--swui-switch-container-bg-color-enabled: var(--swui-field-bg-enabled);--swui-switch-container-bg-color-disabled: var(--swui-field-bg-disabled);--swui-switch-knob-border-color-enabled: var(--swui-separator-color);--swui-switch-container-border-color: var(--swui-field-border-color);--swui-switch-container-border-color-hover: var( --swui-field-border-color-hover );--swui-switch-container-border-color-disabled: var( --swui-field-border-color-disabled );--swui-switch-knob-shadow-color: var(--swui-field-shadow-color);display:flex;flex-direction:row;border:1px solid var(--swui-switch-container-border-color);box-sizing:border-box;background-color:var(--swui-switch-container-bg-color-enabled);height:var(--swui-switch-height);width:var(--swui-switch-width);border-radius:calc(var(--swui-switch-height) / 2);padding:0;margin:0;cursor:pointer;transition:background-color var(--swui-switch-animation-time)}._switch_1xijn_1:focus{outline:0}._switch_1xijn_1:focus-visible{border:1px solid var(--swui-switch-selected-highlight-color);box-shadow:inset var(--swui-switch-selected-highlight-color) 0 0 4px 0}._switch_1xijn_1:hover{border:1px solid var(--swui-switch-selected-highlight-color)}._switch_1xijn_1:disabled{cursor:default;background-color:var(--swui-switch-container-bg-color-disabled);border:1px solid var(--swui-switch-container-border-color-disabled)}._switch_1xijn_1:disabled ._knob_1xijn_55{background-color:var(--swui-switch-knob-bg-color-disabled)}._switch_1xijn_1 ._filler_1xijn_60{flex:none;transition:flex var(--swui-switch-animation-time)}._switch_1xijn_1 ._knob_1xijn_55{width:var(--swui-switch-knob-width);height:var(--swui-switch-knob-width);border-radius:50%;background-color:var(--swui-switch-knob-bg-color-enabled);box-shadow:var(--swui-switch-knob-shadow-color) 0 0 4px 1px}._checked_1xijn_74{border:1px solid var(--swui-switch-selected-highlight-color);background-color:var(--swui-switch-selected-highlight-color)}._checked_1xijn_74 ._filler_1xijn_60{flex:1}._checkbox_1ijku_1{--swui-checkbox-height: var(--swui-field-box-size-medium);--swui-checkbox-height-small: var(--swui-field-box-size-small);--swui-checkbox-border-radius: var(--swui-field-border-radius);--swui-checkbox-animation-time: var(--swui-animation-time-medium);--swui-checkbox-icon-color: var(--swui-field-indicator-active-color);--swui-checkbox-disabled-icon-color: var(--swui-text-disabled-color);--swui-checkbox-unchecked-icon-color: var( --swui-field-indicator-inactive-color );--swui-checkbox-unchecked-bg-color: var(--swui-white);--swui-checkbox-checked-bg-color: var(--lhds-color-blue-500);--swui-checkbox-disabled-bg-color: var(--swui-field-bg-disabled);--swui-checkbox-disabled-checked-bg-color: var(--swui-field-bg-disabled);--swui-checkbox-border-color: var(--swui-field-border-color);--swui-checkbox-border-hover-color: var(--swui-field-border-color-hover);--swui-checkbox-disabled-border-color: var(--swui-checkbox-disabled-bg-color);--swui-checkbox-checked-focus-shadow: var(--swui-field-focus-shadow-inverted);--swui-checkbox-unchecked-focus-shadow: var(--swui-field-focus-shadow);-webkit-appearance:none;-moz-appearance:none;border-radius:var(--swui-checkbox-border-radius);outline:none;display:inline-block;vertical-align:top;position:relative;margin:0;cursor:pointer;border:1px solid var(--current-border-color, var(--swui-checkbox-border-color));background:var(--current-bg-color, var(--swui-checkbox-unchecked-bg-color));transition:background var(--swui-checkbox-animation-time),border-color var(--swui-checkbox-animation-time),box-shadow var(--swui-checkbox-animation-time);flex-shrink:0}._checkbox_1ijku_1._standard_1ijku_44{width:var(--swui-checkbox-height);height:var(--swui-checkbox-height)}._checkbox_1ijku_1._standard_1ijku_44:after{width:3px;height:6px;left:9px;top:6px}._checkbox_1ijku_1._small_1ijku_56{width:var(--swui-checkbox-height-small);height:var(--swui-checkbox-height-small)}._checkbox_1ijku_1._small_1ijku_56:after{width:3px;height:6px;left:5px;top:2px}._checkbox_1ijku_1:after{content:"";display:block;position:absolute;transition:opacity var(--swui-checkbox-animation-time),width var(--swui-checkbox-animation-time),top var(--swui-checkbox-animation-time),-webkit-transform var(--swui-checkbox-animation-time) var(--d-t-e, ease);transition:transform var(--swui-checkbox-animation-time) var(--d-t-e, ease),opacity var(--swui-checkbox-animation-time),width var(--swui-checkbox-animation-time),top var(--swui-checkbox-animation-time);transition:transform var(--swui-checkbox-animation-time) var(--d-t-e, ease),opacity var(--swui-checkbox-animation-time),width var(--swui-checkbox-animation-time),top var(--swui-checkbox-animation-time),-webkit-transform var(--swui-checkbox-animation-time) var(--d-t-e, ease);border:2px solid var( --current-checkbox-icon-color, var(--swui-checkbox-unchecked-icon-color) );border-top:0;border-left:0;-webkit-transform:rotate(var(--current-check-rotation, 20deg));transform:rotate(var(--current-check-rotation, 20deg));box-sizing:content-box}._checkbox_1ijku_1:checked{--current-check-rotation: 43deg;--current-bg-color: var(--swui-checkbox-checked-bg-color);--current-border-color: var(--swui-checkbox-checked-bg-color);--d-t-e: cubic-bezier(.2, .85, .32, 1.2)}._checkbox_1ijku_1:checked:after{--current-checkbox-icon-color: var(--swui-checkbox-icon-color)}._checkbox_1ijku_1:disabled:not(:checked){--current-bg-color: var(--swui-checkbox-disabled-bg-color);--current-border-color: var(--swui-checkbox-disabled-border-color)}._checkbox_1ijku_1:disabled:not(:checked):after{--current-checkbox-icon-color: --swui-checkbox-unchecked-icon-color}._checkbox_1ijku_1:disabled:checked{--current-bg-color: var(--swui-checkbox-disabled-checked-bg-color);--current-border-color: var(--swui-checkbox-disabled-border-color)}._checkbox_1ijku_1:disabled:checked:after{--current-checkbox-icon-color: var(--swui-checkbox-disabled-icon-color)}._checkbox_1ijku_1:indeterminate{--current-check-rotation: 43deg;--current-bg-color: var(--swui-checkbox-checked-bg-color);--current-border-color: var(--swui-checkbox-checked-bg-color);--d-t-e: cubic-bezier(.2, .85, .32, 1.2)}._checkbox_1ijku_1:indeterminate:after{--current-checkbox-icon-color: var(--swui-checkbox-icon-color);border-right:0;-webkit-transform:rotate(0deg);transform:rotate(0);width:6px}._checkbox_1ijku_1:indeterminate._standard_1ijku_44:after{top:4px;left:8px}._checkbox_1ijku_1:indeterminate._small_1ijku_56:after{top:0;left:4px}._checkbox_1ijku_1:indeterminate:disabled:after{--current-checkbox-icon-color: var(--swui-checkbox-disabled-icon-color)}._checkbox_1ijku_1:hover:not(:checked):not(:disabled){--current-border-color: var(--swui-checkbox-border-hover-color)}._checkbox_1ijku_1:focus-visible:checked{box-shadow:var(--swui-checkbox-checked-focus-shadow)}._checkbox_1ijku_1:focus-visible:not(:checked){box-shadow:var(--swui-checkbox-unchecked-focus-shadow)}._checkbox_1ijku_1+label{font-size:1.4rem;line-height:var(--swui-checkbox-height);display:inline-block;vertical-align:top;cursor:pointer;margin-left:4px}._radiobutton_19uv3_1{--swui-radiobutton-size-standard: var(--swui-field-box-size-medium);--swui-radiobutton-size-small: var(--swui-field-box-size-small);--swui-radiobutton-animation-time: var(--swui-animation-time-medium);--swui-radiobutton-icon-color: var(--swui-field-indicator-active-color);--swui-radiobutton-disabled-icon-color: var(--swui-field-text-color-disabled);--swui-radiobutton-unchecked-icon-color: var( --swui-field-indicator-inactive-color );--swui-radiobutton-checked-bg-color: var(--lhds-color-blue-500);--swui-radiobutton-checked-disabled-bg-color: var(--swui-field-bg-disabled);--swui-radiobutton-unchecked-bg-color: var(--swui-white);--swui-radiobutton-unchecked-disabled-bg-color: var(--swui-field-bg-disabled);--swui-radiobutton-unchecked-border-color: var(--swui-field-border-color);--swui-radiobutton-unchecked-hover-border-color: var( --swui-field-border-color-hover );--swui-radiobutton-disabled-border-color: var( --swui-radiobutton-checked-disabled-bg-color );--swui-radiobutton-checked-focus-shadow: var( --swui-field-focus-shadow-inverted );--swui-radiobutton-unchecked-focus-shadow: var(--swui-field-focus-shadow);-webkit-appearance:none;-moz-appearance:none;outline:none;display:inline-block;vertical-align:top;position:relative;margin:0;flex:none;cursor:pointer;border:1px solid var(--current-border-color, var(--swui-radiobutton-unchecked-border-color));border-radius:50%;background:var( --current-bg-color, var(--swui-radiobutton-unchecked-bg-color) );transition:background var(--swui-radiobutton-animation-time),border-color var(--swui-radiobutton-animation-time),box-shadow var(--swui-radiobutton-animation-time)}._radiobutton_19uv3_1._standard_19uv3_52{height:var(--swui-radiobutton-size-standard);width:var(--swui-radiobutton-size-standard)}._radiobutton_19uv3_1._standard_19uv3_52:after{left:7px;top:7px}._radiobutton_19uv3_1._small_19uv3_62{height:var(--swui-radiobutton-size-small);width:var(--swui-radiobutton-size-small)}._radiobutton_19uv3_1._small_19uv3_62:after{left:3px;top:3px}._radiobutton_19uv3_1:after{content:"";display:block;position:absolute;transition:opacity var(--current-opacity-time, var(--swui-radiobutton-animation-time)) var(--current-transform-type, ease),-webkit-transform var(--current-transform-time, var(--swui-radiobutton-animation-time)) var(--current-transform-type, ease);transition:transform var(--current-transform-time, var(--swui-radiobutton-animation-time)) var(--current-transform-type, ease),opacity var(--current-opacity-time, var(--swui-radiobutton-animation-time)) var(--current-transform-type, ease);transition:transform var(--current-transform-time, var(--swui-radiobutton-animation-time)) var(--current-transform-type, ease),opacity var(--current-opacity-time, var(--swui-radiobutton-animation-time)) var(--current-transform-type, ease),-webkit-transform var(--current-transform-time, var(--swui-radiobutton-animation-time)) var(--current-transform-type, ease);-webkit-transform:scale(var(--current-scale, 0));transform:scale(var(--current-scale, 0));width:8px;height:8px;border-radius:50%;background:var( --current-icon-color, var(--swui-radiobutton-unchecked-icon-color) );opacity:var(--current-opacity, 0)}._radiobutton_19uv3_1:checked{--current-bg-color: var(--swui-radiobutton-checked-bg-color);--current-border-color: var(--swui-radiobutton-checked-bg-color);--current-opacity-time: var(--swui-radiobutton-animation-time);--current-transform-time: .6s;--current-transform-type: cubic-bezier(.2, .85, .32, 1.2);--current-opacity: 1;--current-scale: 1}._radiobutton_19uv3_1:checked:after{--current-icon-color: var(--swui-radiobutton-icon-color)}._radiobutton_19uv3_1:disabled{--current-bg-color: var(--swui-radiobutton-unchecked-disabled-bg-color);--current-border-color: var(--swui-radiobutton-disabled-border-color)}._radiobutton_19uv3_1:disabled:checked{--current-bg-color: var(--swui-radiobutton-checked-disabled-bg-color)}._radiobutton_19uv3_1:disabled:checked:after{--current-icon-color: var(--swui-radiobutton-disabled-icon-color)}._radiobutton_19uv3_1:hover:not(:checked):not(:disabled){--current-border-color: var( --swui-radiobutton-unchecked-hover-border-color )}._radiobutton_19uv3_1:focus-visible:checked{box-shadow:var(--swui-radiobutton-checked-focus-shadow)}._radiobutton_19uv3_1:focus-visible:not(:checked){box-shadow:var(--swui-radiobutton-unchecked-focus-shadow)}._radiobutton_19uv3_1+label{font-size:1.4rem;line-height:var(--swui-radiobutton-size-standard);display:inline-block;vertical-align:top;cursor:pointer;margin-left:4px}._textInput_1n9ka_1{--swui-textinput-text-color: var(--swui-field-text-color);--swui-textinput-text-color-disabled: var(--swui-field-text-color-disabled);--swui-textinput-letter-spacing: var(--swui-field-letter-spacing);--swui-textinput-line-height: var(--swui-field-text-line-height);--swui-textinput-indent: var(--swui-metrics-indent);--swui-textinput-spacing: calc(var(--swui-field-text-spacing) - 1px);--swui-textinput-font-size: var(--swui-font-size-inputs);--swui-textinput-font-family: var(--swui-font-input);--swui-textinput-font-weight: var(--swui-font-weight-inputs);--swui-textinput-placeholder-color: var(--swui-field-placeholder-color);--swui-textinput-placeholder-font-weight: var( --swui-field-placeholder-font-weight );--swui-textinput-animation-time: var(--swui-animation-time-medium);--swui-textinput-icon-color: var(--swui-field-icon-color);--swui-textinput-icon-hover-color: var(--swui-primary-action-color);--swui-textinput-icon-size: var(--swui-field-icon-size);--swui-textinput-icon-color-success: var(--swui-state-success-color);--swui-textinput-bg-loading: var(--swui-state-loading-light-color);--swui-textinput-border-color-loading: var(--swui-state-loading-color);--swui-textinput-bg-modified: var(--swui-state-modified-light-color);--swui-textinput-border-color-modified: var( --swui-state-modified-light-color );--swui-textinput-bg-warning: var(--swui-state-alert-light-color);--swui-textinput-border-color-warning: var(--swui-state-alert-light-color);--swui-textinput-bg-error: var(--swui-state-error-light-color);--swui-textinput-border-color-error: var(--swui-state-error-light-color);--swui-textinput-bg-color-disabled: var(--swui-field-bg-disabled);--swui-textinput-border-color-disabled: var(--swui-field-bg-disabled);--swui-textinput-bg-color: var(--swui-field-bg-enabled);--swui-textinput-border-radius: var(--swui-field-border-radius);--swui-textinput-border-color: var(--swui-field-border-color);--swui-textinput-border-color-hover: var(--swui-field-border-color-hover);--swui-textinput-focus-shadow: var(--swui-field-focus-shadow);--current-bg: var(--swui-textinput-bg-color);--current-border-color: var(--swui-textinput-border-color);--current-icon-color: var(--swui-textinput-icon-color);display:flex;width:100%;align-items:center;background:var(--current-bg);border:1px solid var(--current-border-color);border-radius:var(--swui-textinput-border-radius);transition:all var(--swui-textinput-animation-time)}._textInput_1n9ka_1._textInput_1n9ka_1:focus-within:not(._disabled_1n9ka_65){box-shadow:var(--swui-textinput-focus-shadow);--current-border-color: var(--swui-textinput-border-color-hover);--current-bg: var(--swui-textinput-bg-color)}._textInput_1n9ka_1 ._input_1n9ka_71{letter-spacing:var(--swui-textinput-letter-spacing);line-height:var(--swui-textinput-line-height);width:100%;padding:var(--swui-textinput-spacing) var(--swui-textinput-indent);color:var(--swui-textinput-text-color);font-size:var(--swui-textinput-font-size);font-family:var(--swui-textinput-font-family);font-weight:var(--swui-textinput-font-weight);background:var(--swui-hidden);border:none;min-width:0;margin:0}._textInput_1n9ka_1 ._input_1n9ka_71:disabled{color:var(--swui-textinput-text-color-disabled)}._textInput_1n9ka_1 ._input_1n9ka_71::-webkit-input-placeholder{color:var(--swui-textinput-placeholder-color);font-weight:var(--swui-textinput-placeholder-font-weight)}._textInput_1n9ka_1 ._input_1n9ka_71::placeholder{color:var(--swui-textinput-placeholder-color);font-weight:var(--swui-textinput-placeholder-font-weight)}._textInput_1n9ka_1 ._input_1n9ka_71:focus::-webkit-input-placeholder{opacity:0}._textInput_1n9ka_1 ._input_1n9ka_71:focus::placeholder{opacity:0}._textInput_1n9ka_1 ._input_1n9ka_71:focus{outline:none}._textInput_1n9ka_1 ._input_1n9ka_71::-webkit-calendar-picker-indicator{display:none}._textInput_1n9ka_1._standard_1n9ka_111:hover:not(._disabled_1n9ka_65),._textInput_1n9ka_1._success_1n9ka_112:hover:not(._disabled_1n9ka_65){--current-border-color: var(--swui-textinput-border-color-hover)}._textInput_1n9ka_1._success_1n9ka_112{--current-icon-color: var(--swui-textinput-icon-color-success)}._textInput_1n9ka_1._loading_1n9ka_124{--current-bg: var(--swui-textinput-bg-loading);--current-border-color: var(--swui-textinput-border-color-loading)}._textInput_1n9ka_1._modified_1n9ka_129{--current-bg: var(--swui-textinput-bg-modified);--current-border-color: var(--swui-textinput-border-color-modified);--current-icon-color: var(--lhds-color-blue-300)}._textInput_1n9ka_1._error_1n9ka_135{--current-bg: var(--swui-textinput-bg-error);--current-border-color: var(--swui-textinput-border-color-error);--current-icon-color: var(--swui-textinput-border-color-error)}._textInput_1n9ka_1._warning_1n9ka_141{--current-bg: var(--swui-textinput-bg-warning);--current-border-color: var(--swui-textinput-border-color-warning);--current-icon-color: var(--swui-textinput-border-color-warning)}._textInput_1n9ka_1._disabled_1n9ka_65{--current-bg: var(--swui-textinput-bg-color-disabled);--current-border-color: var(--swui-textinput-border-color-disabled)}._textInput_1n9ka_1._textInput_1n9ka_1._hideBorder_1n9ka_152{border:none;box-shadow:none;background:none}._textInput_1n9ka_1 ._clickable_1n9ka_158:hover{--current-icon-color: var(--swui-textinput-icon-hover-color);cursor:pointer}._textInput_1n9ka_1 ._icon_1n9ka_163{transition:color var(--swui-textinput-animation-time);color:var(--current-icon-color);font-size:var(--swui-textinput-icon-size)}._numericTextInputInput_1tnr6_1{-moz-appearance:textfield}._numericTextInputInput_1tnr6_1::-webkit-outer-spin-button,._numericTextInputInput_1tnr6_1::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}._textArea_1ta4a_1{--swui-textarea-text-color: var(--swui-field-text-color);--swui-textarea-text-color-disabled: var(--swui-field-text-color-disabled);--swui-textarea-letter-spacing: var(--swui-field-letter-spacing);--swui-textarea-line-height: var(--swui-field-text-line-height);--swui-textarea-indent: var(--swui-metrics-indent);--swui-textarea-spacing: calc(var(--swui-field-text-spacing) - 1px);--swui-textarea-font-size: var(--swui-font-size-inputs);--swui-textarea-font-family: var(--swui-font-input);--swui-textarea-font-weight: var(--swui-font-weight-inputs);--swui-textarea-placeholder-color: var(--swui-text-disabled-color);--swui-textarea-animation-time: var(--swui-animation-time-medium);--swui-textarea-icon-color: var(--swui-field-border-color-disabled);--swui-textarea-icon-size: var(--swui-field-icon-size);--swui-textarea-icon-color-success: var(--swui-state-success-color);--swui-textarea-bg-loading: var(--swui-state-loading-light-color);--swui-textarea-border-color-loading: var(--swui-state-loading-color);--swui-textarea-bg-modified: var(--swui-state-modified-light-color);--swui-textarea-border-color-modified: var(--swui-state-modified-color);--swui-textarea-bg-warning: var(--swui-state-alert-light-color);--swui-textarea-border-color-warning: var(--swui-state-alert-color);--swui-textarea-bg-error: var(--swui-state-error-light-color);--swui-textarea-border-color-error: var(--swui-state-error-color);--swui-textarea-bg-color: var(--swui-field-bg-enabled);--swui-textarea-bg-color-disabled: var(--swui-field-bg-disabled);--swui-textarea-border-radius: var(--swui-field-border-radius);--swui-textarea-border-color: var(--swui-field-border-color);--swui-textarea-border-color-hover: var(--swui-field-border-color-hover);--swui-textarea-border-color-disabled: var( --swui-field-border-color-disabled );--swui-textarea-focus-shadow: var(--swui-field-focus-shadow);max-width:100%;letter-spacing:var(--swui-textarea-letter-spacing);line-height:var(--swui-textarea-line-height);padding:var(--swui-textarea-spacing) var(--swui-textarea-indent);color:var(--swui-textarea-text-color);font-size:var(--swui-textarea-font-size);font-family:var(--swui-textarea-font-family);font-weight:var(--swui-textarea-font-weight);background:var(--current-bg, var(--swui-textarea-bg-color));border:1px solid var(--current-border-color, var(--swui-textarea-border-color));border-radius:var(--swui-textarea-border-radius);transition:border var(--swui-textarea-animation-time);--current-icon-color: var(--swui-textarea-icon-color)}._textArea_1ta4a_1:focus{outline:none;box-shadow:var(--swui-textarea-focus-shadow);--current-border-color: var(--swui-textarea-border-color-hover);--current-bg: var(--swui-textarea-bg-color)}._textArea_1ta4a_1:disabled{color:var(--swui-textarea-text-color-disabled);--current-bg: var(--swui-textarea-bg-color-disabled);--current-border-color: var(--swui-textarea-border-color-disabled)}')),document.head.appendChild(r)}catch(i){console.error("vite-plugin-css-injected-by-js",i)}})();
2
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),f=require("@stenajs-webui/core"),p=require("react"),nt=require("classnames"),b=require("@stenajs-webui/elements"),st=require("@fortawesome/react-fontawesome"),rt=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},m=rt(nt),ct="_knob_1xijn_55",at="_filler_1xijn_60",it="_checked_1xijn_74",S={switch:"_switch_1xijn_1",knob:ct,filler:at,checked:it},ot=`${S.switch} ${S.checked}`,C=({value:t,disabled:e,onValueChange:s,className:r,wrapperRef:c,...a})=>n.jsx("div",{className:r,ref:c,children:n.jsxs("button",{type:"button",role:"switch","aria-checked":t,className:t?ot:S.switch,disabled:e,onClick:()=>s&&s(!t),...a,children:[n.jsx("div",{className:S.filler}),n.jsx("div",{className:S.knob})]})}),lt=({label:t,disabled:e,textColor:s,wrapperRef:r,...c})=>n.jsx("div",{ref:r,children:n.jsx("label",{children:n.jsxs(f.Box,{row:!0,alignItems:"center",children:[n.jsx(C,{disabled:e,...c}),n.jsx(f.Space,{}),n.jsx(f.Text,{userSelect:"none",color:s,children:t})]})})}),ut="_checkbox_1ijku_1",dt="_standard_1ijku_44",xt="_small_1ijku_56",A={checkbox:ut,standard:dt,small:xt},F=p.forwardRef(({indeterminate:t=!1,onChange:e,onValueChange:s,value:r=!1,size:c="standard",...a},i)=>{const o=p.useRef(),l=x=>{o.current=x,o.current&&(o.current.indeterminate=Boolean(t)),i&&(typeof i=="function"?i(x):i.current=x)},_=p.useCallback(x=>{e&&e(x),s&&s(x.target.checked)},[e,s]);return p.useEffect(()=>{o.current&&(o.current.indeterminate=Boolean(t))},[t,o]),n.jsx("input",{type:"checkbox",className:m.default(A.checkbox,A[c]),checked:r,onChange:_,ref:l,...a})}),ft=({children:t,label:e,inputRef:s,wrapperRef:r,textColor:c,...a})=>n.jsx("div",{ref:r,children:n.jsx("label",{children:n.jsxs(f.Row,{alignItems:"center",children:[n.jsx(F,{...a,ref:s}),n.jsx(f.Space,{}),e&&n.jsx(f.Text,{userSelect:"none",color:c,children:e}),t]})})}),pt="_radiobutton_19uv3_1",_t="_standard_19uv3_52",ht="_small_19uv3_62",B={radiobutton:pt,standard:_t,small:ht},H=p.forwardRef(({onChange:t,onValueChange:e,size:s="standard",name:r,...c},a)=>{const i=p.useCallback(o=>{t&&t(o),e&&e(o.target.value)},[t,e]);return n.jsx("input",{type:"radio",name:r,className:B.radiobutton+" "+B[s],onChange:i,ref:a,...c})}),jt=({label:t,inputRef:e,wrapperRef:s,textColor:r,...c})=>n.jsx("div",{ref:s,children:n.jsx("label",{children:n.jsxs(f.Row,{alignItems:"center",children:[n.jsx(H,{ref:e,...c}),n.jsx(f.Space,{}),n.jsx(f.Text,{color:r,userSelect:"none",children:t})]})})}),L=(t,e,s,r,c,a,i,o)=>{const l=p.useRef(!1),_=u=>{var d;l.current||a==null||a((d=u.target.value)!=null?d:""),i==null||i(u)},x=u=>{l.current=!1,o==null||o(u)};return{onKeyDownHandler:p.useCallback(u=>{var g;const{key:d}=u;if(d==="Enter")l.current=!0,s==null||s(),a==null||a((g=u.currentTarget.value)!=null?g:"");else if(d==="Escape")l.current=!0,r==null||r(),u.preventDefault(),u.stopPropagation();else if(c){const h=(I,w)=>{l.current=!0,t.current.blur(),c(I),w.preventDefault(),w.stopPropagation()};u.shiftKey&&d==="Tab"?h("left",u):d==="Tab"?h("right",u):d==="ArrowUp"?h("up",u):d==="ArrowDown"?h("down",u):d==="ArrowRight"?t.current.value.length===t.current.selectionStart&&h("right",u):d==="ArrowLeft"&&t.current.selectionStart===0&&h("left",u)}e&&e(u)},[r,c,e,t,s,a]),onBlurHandler:_,onFocusHandler:x}};function v(t){return t.tagName==="TEXTAREA"||t.tagName==="INPUT"&&(t.type==="text"||t.type==="search"||t.type==="url"||t.type==="tel"||t.type==="password")}const P=(t,e,s)=>{p.useEffect(()=>{!t.current||!v(t.current)||(s?t.current.setSelectionRange(0,t.current.value.length):e&&t.current.setSelectionRange(t.current.value.length,t.current.value.length))},[e,t,s])},$=(t,{onEnter:e,onEsc:s,onChange:r,onValueChange:c,selectAllOnMount:a,moveCursorToEndOnMount:i,onDone:o,onMove:l,onFocus:_,onBlur:x,onKeyDown:j,autoFocus:u})=>{P(t,!!i,!!a);const{onKeyDownHandler:d,onFocusHandler:g,onBlurHandler:h}=L(t,j,e,s,l,o,x,_),I=p.useCallback(w=>{r==null||r(w),c==null||c(w.target.value)},[r,c]);return{onBlur:h,onChange:I,onFocus:g,onKeyDown:d,autoFocus:a||u}},kt="_textInput_1n9ka_1",bt="_disabled_1n9ka_65",gt="_input_1n9ka_71",wt="_standard_1n9ka_111",mt="_success_1n9ka_112",It="_loading_1n9ka_124",St="_modified_1n9ka_129",yt="_error_1n9ka_135",Rt="_warning_1n9ka_141",Tt="_hideBorder_1n9ka_152",Nt="_clickable_1n9ka_158",At="_icon_1n9ka_163",k={textInput:kt,disabled:bt,input:gt,standard:wt,success:mt,loading:It,modified:St,error:yt,warning:Rt,hideBorder:Tt,clickable:Nt,icon:At},y=({icon:t,iconClassName:e,content:s,spaceOnLeft:r,spaceOnRight:c,disableContentPadding:a,disableContentPaddingLeft:i,disableContentPaddingRight:o,onClick:l})=>!s&&!t?null:s?n.jsxs(n.Fragment,{children:[r&&!(a||i)?n.jsx(f.Space,{}):null,l?n.jsx("span",{onClick:l,className:k.clickable,children:s||null}):n.jsx(n.Fragment,{children:s||null}),c&&!(a||o)?n.jsx(f.Space,{}):null]}):n.jsxs(n.Fragment,{children:[r?n.jsx(f.Space,{}):null,t&&n.jsx(n.Fragment,{children:l?n.jsx(b.FlatButton,{type:"button",onClick:l,leftIcon:t,size:"small"}):n.jsx(st.FontAwesomeIcon,{icon:t,className:m.default(k.icon,e)})}),c?n.jsx(f.Space,{}):null]}),T=t=>{const{variant:e="standard",inputRef:s,disabled:r,className:c,contentLeft:a,contentRight:i,disableContentPadding:o,disableContentPaddingLeft:l,disableContentPaddingRight:_,iconLeft:x,iconRight:j,onClickLeft:u,onClickRight:d,moveCursorToEndOnMount:g,selectAllOnMount:h,autoFocus:I,onValueChange:w,wrapperClassName:W,wrapperStyle:q,onDone:K,onEnter:O,onEsc:E,onMove:z,onChange:X,onKeyDown:D,hideBorder:G,onFocus:J,onBlur:Q,...Y}=t,Z=p.useRef(null),N=s!=null?s:Z,V=$(N,{onEnter:O,onEsc:E,onChange:X,onValueChange:w,selectAllOnMount:h,moveCursorToEndOnMount:g,onDone:K,onMove:z,onFocus:J,onBlur:Q,onKeyDown:D,autoFocus:I}),tt=e==="success"?b.stenaCheck:e==="warning"||e==="error"?b.stenaExclamationTriangle:j,et=e==="loading"?n.jsx(b.InputSpinner,{}):i;return n.jsxs("div",{className:m.default(k.textInput,k[e],{[k.disabled]:r},{[k.hideBorder]:G},W),style:q,children:[n.jsx(y,{content:a,disableContentPadding:o,disableContentPaddingLeft:l,disableContentPaddingRight:_,icon:x,spaceOnLeft:!0,onClick:u}),n.jsx("input",{className:m.default(k.input,c),type:"text",disabled:r,ref:N,autoFocus:I,...Y,...V}),n.jsx(y,{content:et,disableContentPadding:o,disableContentPaddingLeft:l,disableContentPaddingRight:_,icon:tt,spaceOnRight:!0,onClick:d})]})},Bt="_numericTextInputInput_1tnr6_1",Ct={numericTextInputInput:Bt},U=({onValueChange:t,value:e,numSteps:s,min:r,max:c})=>{if(t)if(!e)t(String(R(s,r,c)));else{const i=(f.parseFloatElseUndefined(e)||0)+s;t(String(R(i,r,c)))}},M=({onValueChange:t,newValue:e,min:s,max:r})=>{if(t)if(e==="")t("");else{const a=f.parseFloatElseUndefined(e)||0;t(String(R(a,s,r)))}},R=(t,e,s)=>{let r=t;return e!=null&&(r=Math.max(e,r)),s!=null&&(r=Math.min(s,r)),r},Ft=({value:t,onValueChange:e,max:s,min:r,step:c=1,contentRight:a,disabled:i,className:o,hideButtons:l,..._})=>{const x=p.useCallback(d=>{U({onValueChange:e,value:t,numSteps:d,min:r,max:s})},[t,s,r,e]),j=p.useCallback(d=>{M({onValueChange:e,newValue:d,min:r,max:s})},[s,r,e]),u=l?a:n.jsxs(n.Fragment,{children:[a&&n.jsxs(n.Fragment,{children:[a,n.jsx(f.Space,{})]}),n.jsx(b.UpDownButtons,{onClickUp:i?void 0:()=>x(c),onClickDown:i?void 0:()=>x(-c),iconColor:"var(--swui-textinput-text-color)",disabled:i})]});return n.jsx(T,{contentRight:u,value:t,onValueChange:j,disableContentPaddingRight:!l,type:"number",min:r,max:s,step:c,className:m.default(Ct.numericTextInputInput,o),disabled:i,..._})},Ht=(t,e)=>{const s=p.useCallback(c=>{if(e)if(!c)e(void 0);else{const a=f.parseFloatElseUndefined(c);a!==void 0&&e(a)}},[e]),r=p.useMemo(()=>t===void 0?"":String(t),[t]);return{onValueChange:s,value:r}},Lt=({hiddenIcon:t=b.stenaEyeShow,visibleIcon:e=b.stenaEyeHide,...s})=>{const[r,c]=p.useState(!0);return n.jsx(T,{iconRight:r?t:e,onClickRight:()=>c(a=>!a),type:r?"password":"text",...s})},vt=({variant:t="standard",disabled:e,wrapperClassName:s,wrapperStyle:r,contentLeft:c,contentRight:a,disableContentPadding:i,disableContentPaddingLeft:o,disableContentPaddingRight:l,iconRight:_,iconLeft:x,onClickLeft:j,onClickRight:u,children:d})=>{const g=t==="success"?b.stenaCheck:t==="warning"||t==="error"?b.stenaExclamationTriangle:_,h=t==="loading"?n.jsx(b.InputSpinner,{}):a;return n.jsxs("div",{className:m.default(k.textInput,k.inputContainer,k[t],{[k.disabled]:e},s),style:r,children:[n.jsx(y,{content:c,disableContentPadding:i,disableContentPaddingLeft:o,disableContentPaddingRight:l,icon:x,spaceOnLeft:!0,onClick:j}),n.jsx(f.Row,{alignItems:"center",children:d}),n.jsx(y,{content:h,disableContentPadding:i,disableContentPaddingLeft:o,disableContentPaddingRight:l,icon:g,spaceOnRight:!0,onClick:u})]})},Pt="_textArea_1ta4a_1",$t={textArea:Pt},Ut=p.forwardRef(({className:t,value:e,onValueChange:s,onChange:r,resize:c="none",readOnly:a=!1,rows:i,disabled:o,...l},_)=>{const x=p.useCallback(j=>{r&&r(j),s&&s(j.target.value)},[r,s]);return n.jsx("textarea",{disabled:o,rows:i,readOnly:a,className:m.default($t.textArea,t),style:{resize:c},onChange:x,value:e,ref:_,...l})});exports.Checkbox=F;exports.CheckboxWithLabel=ft;exports.NumericTextInput=Ft;exports.PasswordInput=Lt;exports.RadioButton=H;exports.RadioButtonWithLabel=jt;exports.Switch=C;exports.SwitchWithLabel=lt;exports.TextArea=Ut;exports.TextInput=T;exports.TextInputBox=vt;exports.elementHasSelectionRange=v;exports.onStepValueChange=U;exports.onTextValueChange=M;exports.useKeyboardNavigation=L;exports.useNumericInputValue=Ht;exports.useSelectAllOnMount=P;exports.useTextInput=$;
2
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),f=require("@stenajs-webui/core"),p=require("react"),nt=require("classnames"),b=require("@stenajs-webui/elements"),st=require("@fortawesome/react-fontawesome"),rt=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},m=rt(nt),ct="_knob_1xijn_55",at="_filler_1xijn_60",it="_checked_1xijn_74",S={switch:"_switch_1xijn_1",knob:ct,filler:at,checked:it},ot=`${S.switch} ${S.checked}`,C=({value:t,disabled:e,onValueChange:s,className:r,wrapperRef:c,...a})=>n.jsx("div",{className:r,ref:c,children:n.jsxs("button",{type:"button",role:"switch","aria-checked":t,className:t?ot:S.switch,disabled:e,onClick:()=>s&&s(!t),...a,children:[n.jsx("div",{className:S.filler}),n.jsx("div",{className:S.knob})]})}),lt=({label:t,disabled:e,textColor:s,wrapperRef:r,...c})=>n.jsx("div",{ref:r,children:n.jsx("label",{children:n.jsxs(f.Box,{row:!0,alignItems:"center",children:[n.jsx(C,{disabled:e,...c}),n.jsx(f.Space,{}),n.jsx(f.Text,{userSelect:"none",color:s,children:t})]})})}),ut="_checkbox_1ijku_1",dt="_standard_1ijku_44",xt="_small_1ijku_56",A={checkbox:ut,standard:dt,small:xt},F=p.forwardRef(({indeterminate:t=!1,onChange:e,onValueChange:s,value:r=!1,size:c="standard",className:a,...o},l)=>{const i=p.useRef(),_=x=>{i.current=x,i.current&&(i.current.indeterminate=Boolean(t)),l&&(typeof l=="function"?l(x):l.current=x)},h=p.useCallback(x=>{e&&e(x),s&&s(x.target.checked)},[e,s]);return p.useEffect(()=>{i.current&&(i.current.indeterminate=Boolean(t))},[t,i]),n.jsx("input",{type:"checkbox",className:m.default(A.checkbox,A[c],a),checked:r,onChange:h,ref:_,...o})}),ft=({children:t,label:e,inputRef:s,wrapperRef:r,textColor:c,...a})=>n.jsx("div",{ref:r,children:n.jsx("label",{children:n.jsxs(f.Row,{alignItems:"center",children:[n.jsx(F,{...a,ref:s}),n.jsx(f.Space,{}),e&&n.jsx(f.Text,{userSelect:"none",color:c,children:e}),t]})})}),pt="_radiobutton_19uv3_1",_t="_standard_19uv3_52",ht="_small_19uv3_62",B={radiobutton:pt,standard:_t,small:ht},H=p.forwardRef(({onChange:t,onValueChange:e,size:s="standard",name:r,...c},a)=>{const o=p.useCallback(l=>{t&&t(l),e&&e(l.target.value)},[t,e]);return n.jsx("input",{type:"radio",name:r,className:B.radiobutton+" "+B[s],onChange:o,ref:a,...c})}),jt=({label:t,inputRef:e,wrapperRef:s,textColor:r,...c})=>n.jsx("div",{ref:s,children:n.jsx("label",{children:n.jsxs(f.Row,{alignItems:"center",children:[n.jsx(H,{ref:e,...c}),n.jsx(f.Space,{}),n.jsx(f.Text,{color:r,userSelect:"none",children:t})]})})}),L=(t,e,s,r,c,a,o,l)=>{const i=p.useRef(!1),_=u=>{var d;i.current||a==null||a((d=u.target.value)!=null?d:""),o==null||o(u)},h=u=>{i.current=!1,l==null||l(u)};return{onKeyDownHandler:p.useCallback(u=>{var g;const{key:d}=u;if(d==="Enter")i.current=!0,s==null||s(),a==null||a((g=u.currentTarget.value)!=null?g:"");else if(d==="Escape")i.current=!0,r==null||r(),u.preventDefault(),u.stopPropagation();else if(c){const j=(I,w)=>{i.current=!0,t.current.blur(),c(I),w.preventDefault(),w.stopPropagation()};u.shiftKey&&d==="Tab"?j("left",u):d==="Tab"?j("right",u):d==="ArrowUp"?j("up",u):d==="ArrowDown"?j("down",u):d==="ArrowRight"?t.current.value.length===t.current.selectionStart&&j("right",u):d==="ArrowLeft"&&t.current.selectionStart===0&&j("left",u)}e&&e(u)},[r,c,e,t,s,a]),onBlurHandler:_,onFocusHandler:h}};function v(t){return t.tagName==="TEXTAREA"||t.tagName==="INPUT"&&(t.type==="text"||t.type==="search"||t.type==="url"||t.type==="tel"||t.type==="password")}const P=(t,e,s)=>{p.useEffect(()=>{!t.current||!v(t.current)||(s?t.current.setSelectionRange(0,t.current.value.length):e&&t.current.setSelectionRange(t.current.value.length,t.current.value.length))},[e,t,s])},$=(t,{onEnter:e,onEsc:s,onChange:r,onValueChange:c,selectAllOnMount:a,moveCursorToEndOnMount:o,onDone:l,onMove:i,onFocus:_,onBlur:h,onKeyDown:x,autoFocus:u})=>{P(t,!!o,!!a);const{onKeyDownHandler:d,onFocusHandler:g,onBlurHandler:j}=L(t,x,e,s,i,l,h,_),I=p.useCallback(w=>{r==null||r(w),c==null||c(w.target.value)},[r,c]);return{onBlur:j,onChange:I,onFocus:g,onKeyDown:d,autoFocus:a||u}},kt="_textInput_1n9ka_1",bt="_disabled_1n9ka_65",gt="_input_1n9ka_71",wt="_standard_1n9ka_111",mt="_success_1n9ka_112",It="_loading_1n9ka_124",St="_modified_1n9ka_129",yt="_error_1n9ka_135",Rt="_warning_1n9ka_141",Tt="_hideBorder_1n9ka_152",Nt="_clickable_1n9ka_158",At="_icon_1n9ka_163",k={textInput:kt,disabled:bt,input:gt,standard:wt,success:mt,loading:It,modified:St,error:yt,warning:Rt,hideBorder:Tt,clickable:Nt,icon:At},y=({icon:t,iconClassName:e,content:s,spaceOnLeft:r,spaceOnRight:c,disableContentPadding:a,disableContentPaddingLeft:o,disableContentPaddingRight:l,onClick:i})=>!s&&!t?null:s?n.jsxs(n.Fragment,{children:[r&&!(a||o)?n.jsx(f.Space,{}):null,i?n.jsx("span",{onClick:i,className:k.clickable,children:s||null}):n.jsx(n.Fragment,{children:s||null}),c&&!(a||l)?n.jsx(f.Space,{}):null]}):n.jsxs(n.Fragment,{children:[r?n.jsx(f.Space,{}):null,t&&n.jsx(n.Fragment,{children:i?n.jsx(b.FlatButton,{type:"button",onClick:i,leftIcon:t,size:"small"}):n.jsx(st.FontAwesomeIcon,{icon:t,className:m.default(k.icon,e)})}),c?n.jsx(f.Space,{}):null]}),T=t=>{const{variant:e="standard",inputRef:s,disabled:r,className:c,contentLeft:a,contentRight:o,disableContentPadding:l,disableContentPaddingLeft:i,disableContentPaddingRight:_,iconLeft:h,iconRight:x,onClickLeft:u,onClickRight:d,moveCursorToEndOnMount:g,selectAllOnMount:j,autoFocus:I,onValueChange:w,wrapperClassName:W,wrapperStyle:q,onDone:K,onEnter:O,onEsc:E,onMove:z,onChange:X,onKeyDown:D,hideBorder:G,onFocus:J,onBlur:Q,...Y}=t,Z=p.useRef(null),N=s!=null?s:Z,V=$(N,{onEnter:O,onEsc:E,onChange:X,onValueChange:w,selectAllOnMount:j,moveCursorToEndOnMount:g,onDone:K,onMove:z,onFocus:J,onBlur:Q,onKeyDown:D,autoFocus:I}),tt=e==="success"?b.stenaCheck:e==="warning"||e==="error"?b.stenaExclamationTriangle:x,et=e==="loading"?n.jsx(b.InputSpinner,{}):o;return n.jsxs("div",{className:m.default(k.textInput,k[e],{[k.disabled]:r},{[k.hideBorder]:G},W),style:q,children:[n.jsx(y,{content:a,disableContentPadding:l,disableContentPaddingLeft:i,disableContentPaddingRight:_,icon:h,spaceOnLeft:!0,onClick:u}),n.jsx("input",{className:m.default(k.input,c),type:"text",disabled:r,ref:N,autoFocus:I,...Y,...V}),n.jsx(y,{content:et,disableContentPadding:l,disableContentPaddingLeft:i,disableContentPaddingRight:_,icon:tt,spaceOnRight:!0,onClick:d})]})},Bt="_numericTextInputInput_1tnr6_1",Ct={numericTextInputInput:Bt},U=({onValueChange:t,value:e,numSteps:s,min:r,max:c})=>{if(t)if(!e)t(String(R(s,r,c)));else{const o=(f.parseFloatElseUndefined(e)||0)+s;t(String(R(o,r,c)))}},M=({onValueChange:t,newValue:e,min:s,max:r})=>{if(t)if(e==="")t("");else{const a=f.parseFloatElseUndefined(e)||0;t(String(R(a,s,r)))}},R=(t,e,s)=>{let r=t;return e!=null&&(r=Math.max(e,r)),s!=null&&(r=Math.min(s,r)),r},Ft=({value:t,onValueChange:e,max:s,min:r,step:c=1,contentRight:a,disabled:o,className:l,hideButtons:i,..._})=>{const h=p.useCallback(d=>{U({onValueChange:e,value:t,numSteps:d,min:r,max:s})},[t,s,r,e]),x=p.useCallback(d=>{M({onValueChange:e,newValue:d,min:r,max:s})},[s,r,e]),u=i?a:n.jsxs(n.Fragment,{children:[a&&n.jsxs(n.Fragment,{children:[a,n.jsx(f.Space,{})]}),n.jsx(b.UpDownButtons,{onClickUp:o?void 0:()=>h(c),onClickDown:o?void 0:()=>h(-c),iconColor:"var(--swui-textinput-text-color)",disabled:o})]});return n.jsx(T,{contentRight:u,value:t,onValueChange:x,disableContentPaddingRight:!i,type:"number",min:r,max:s,step:c,className:m.default(Ct.numericTextInputInput,l),disabled:o,..._})},Ht=(t,e)=>{const s=p.useCallback(c=>{if(e)if(!c)e(void 0);else{const a=f.parseFloatElseUndefined(c);a!==void 0&&e(a)}},[e]),r=p.useMemo(()=>t===void 0?"":String(t),[t]);return{onValueChange:s,value:r}},Lt=({hiddenIcon:t=b.stenaEyeShow,visibleIcon:e=b.stenaEyeHide,...s})=>{const[r,c]=p.useState(!0);return n.jsx(T,{iconRight:r?t:e,onClickRight:()=>c(a=>!a),type:r?"password":"text",...s})},vt=({variant:t="standard",disabled:e,wrapperClassName:s,wrapperStyle:r,contentLeft:c,contentRight:a,disableContentPadding:o,disableContentPaddingLeft:l,disableContentPaddingRight:i,iconRight:_,iconLeft:h,onClickLeft:x,onClickRight:u,children:d})=>{const g=t==="success"?b.stenaCheck:t==="warning"||t==="error"?b.stenaExclamationTriangle:_,j=t==="loading"?n.jsx(b.InputSpinner,{}):a;return n.jsxs("div",{className:m.default(k.textInput,k.inputContainer,k[t],{[k.disabled]:e},s),style:r,children:[n.jsx(y,{content:c,disableContentPadding:o,disableContentPaddingLeft:l,disableContentPaddingRight:i,icon:h,spaceOnLeft:!0,onClick:x}),n.jsx(f.Row,{alignItems:"center",children:d}),n.jsx(y,{content:j,disableContentPadding:o,disableContentPaddingLeft:l,disableContentPaddingRight:i,icon:g,spaceOnRight:!0,onClick:u})]})},Pt="_textArea_1ta4a_1",$t={textArea:Pt},Ut=p.forwardRef(({className:t,value:e,onValueChange:s,onChange:r,resize:c="none",readOnly:a=!1,rows:o,disabled:l,...i},_)=>{const h=p.useCallback(x=>{r&&r(x),s&&s(x.target.value)},[r,s]);return n.jsx("textarea",{disabled:l,rows:o,readOnly:a,className:m.default($t.textArea,t),style:{resize:c},onChange:h,value:e,ref:_,...i})});exports.Checkbox=F;exports.CheckboxWithLabel=ft;exports.NumericTextInput=Ft;exports.PasswordInput=Lt;exports.RadioButton=H;exports.RadioButtonWithLabel=jt;exports.Switch=C;exports.SwitchWithLabel=lt;exports.TextArea=Ut;exports.TextInput=T;exports.TextInputBox=vt;exports.elementHasSelectionRange=v;exports.onStepValueChange=U;exports.onTextValueChange=M;exports.useKeyboardNavigation=L;exports.useNumericInputValue=Ht;exports.useSelectAllOnMount=P;exports.useTextInput=$;
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/ui/switch/Switch.tsx","../src/components/ui/switch/SwitchWithLabel.tsx","../src/components/ui/checkbox/Checkbox.tsx","../src/components/ui/checkbox/CheckboxWithLabel.tsx","../src/components/ui/radio/RadioButton.tsx","../src/components/ui/radio/RadioButtonWithLabel.tsx","../src/hooks/UseKeyboardNavigation.ts","../src/hooks/UseSelectAllOnMount.ts","../src/hooks/UseTextInput.ts","../src/components/ui/text-input/TextInputIcon.tsx","../src/components/ui/text-input/TextInput.tsx","../src/utils/NumericHelpers.ts","../src/components/ui/numeric-text-input/NumericTextInput.tsx","../src/components/ui/numeric-text-input/hooks/UseNumericInputValue.ts","../src/components/ui/password-input/PasswordInput.tsx","../src/components/ui/text-input/TextInputBox.tsx","../src/components/ui/text-area/TextArea.tsx"],"sourcesContent":["import { Ref } from \"react\";\nimport * as React from \"react\";\nimport { ButtonElementProps } from \"@stenajs-webui/core\";\nimport { ValueAndOnValueChangeProps } from \"../types\";\nimport styles from \"./Switch.module.css\";\n\nexport interface SwitchProps\n extends Omit<ButtonElementProps, \"value\">,\n ValueAndOnValueChangeProps<boolean> {\n wrapperRef?: Ref<HTMLDivElement>;\n}\n\nconst styleChecked = `${styles.switch} ${styles.checked}`;\n\nexport const Switch: React.FC<SwitchProps> = ({\n value,\n disabled,\n onValueChange,\n className,\n wrapperRef,\n ...restProps\n}) => {\n return (\n <div className={className} ref={wrapperRef}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n className={value ? styleChecked : styles.switch}\n disabled={disabled}\n onClick={() => onValueChange && onValueChange(!value)}\n {...restProps}\n >\n <div className={styles.filler} />\n <div className={styles.knob} />\n </button>\n </div>\n );\n};\n","import { Box, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Switch, SwitchProps } from \"./Switch\";\n\nexport interface SwitchWithLabelProps extends SwitchProps {\n label: string;\n textColor?: string;\n}\n\nexport const SwitchWithLabel: React.FC<SwitchWithLabelProps> = ({\n label,\n disabled,\n textColor,\n wrapperRef,\n ...switchProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Box row alignItems={\"center\"}>\n <Switch disabled={disabled} {...switchProps} />\n <Space />\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n </Box>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport cx from \"classnames\";\nimport styles from \"./Checkbox.module.css\";\n\nexport type CheckboxSize = \"standard\" | \"small\";\n\nexport interface CheckboxProps\n extends FullOnChangeProps<boolean, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n indeterminate?: boolean;\n size?: CheckboxSize;\n disabled?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n indeterminate = false,\n onChange,\n onValueChange,\n value = false,\n size = \"standard\",\n ...inputProps\n },\n ref\n ) => {\n const localRef = useRef<HTMLInputElement>();\n\n const setRef = (element: HTMLInputElement) => {\n localRef.current = element;\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n if (ref) {\n if (typeof ref === \"function\") {\n ref(element);\n } else {\n (ref as MutableRefObject<HTMLInputElement>).current = element;\n }\n }\n };\n\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.checked);\n }\n },\n [onChange, onValueChange]\n );\n\n useEffect(() => {\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate, localRef]);\n\n return (\n <input\n type={\"checkbox\"}\n className={cx(styles.checkbox, styles[size])}\n checked={value}\n onChange={handleInputChange}\n ref={setRef}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { Checkbox, CheckboxProps } from \"./Checkbox\";\n\nexport interface CheckboxWithLabelProps extends CheckboxProps {\n label?: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const CheckboxWithLabel: React.FC<CheckboxWithLabelProps> = ({\n children,\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...checkboxProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <Checkbox {...checkboxProps} ref={inputRef} />\n <Space />\n {label && (\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n )}\n {children}\n </Row>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./RadioButton.module.css\";\n\nexport type RadioButtonSize = \"standard\" | \"small\";\n\nexport interface RadioButtonProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n size?: RadioButtonSize;\n}\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (\n { onChange, onValueChange, size = \"standard\", name, ...inputProps },\n ref\n ) => {\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <input\n type={\"radio\"}\n name={name}\n className={styles.radiobutton + \" \" + styles[size]}\n onChange={handleInputChange}\n ref={ref}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { RadioButton, RadioButtonProps } from \"./RadioButton\";\n\nexport interface RadioButtonWithLabelProps extends RadioButtonProps {\n label: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const RadioButtonWithLabel: React.FC<RadioButtonWithLabelProps> = ({\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...radioButtonProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <RadioButton ref={inputRef} {...radioButtonProps} />\n <Space />\n <Text color={textColor} userSelect={\"none\"}>\n {label}\n </Text>\n </Row>\n </label>\n </div>\n );\n};\n","import {\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nexport type MoveDirection = \"right\" | \"left\" | \"down\" | \"up\";\nexport type TextInputElement = HTMLTextAreaElement | HTMLInputElement;\n\nexport const useKeyboardNavigation = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n /**\n * User-provided onKeyDown. Internal handler should forward calls to this.\n * */\n onKeyDown: KeyboardEventHandler<TElement> | undefined,\n onEnter: (() => void) | undefined,\n onEsc: (() => void) | undefined,\n /**\n * onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab.\n * */\n onMove: ((direction: MoveDirection) => void) | undefined,\n onDone: ((value: string) => void) | undefined,\n onBlur: FocusEventHandler<TElement> | undefined,\n onFocus: FocusEventHandler<TElement> | undefined\n) => {\n const wasHandled = useRef(false);\n\n const onBlurHandler: FocusEventHandler<TElement> = (ev) => {\n if (!wasHandled.current) {\n onDone?.(ev.target.value ?? \"\");\n }\n onBlur?.(ev);\n };\n\n const onFocusHandler: FocusEventHandler<TElement> = (ev) => {\n wasHandled.current = false;\n onFocus?.(ev);\n };\n\n const onKeyDownHandler: KeyboardEventHandler<TElement> = useCallback(\n (ev) => {\n const { key } = ev;\n if (key === \"Enter\") {\n wasHandled.current = true;\n onEnter?.();\n onDone?.(ev.currentTarget.value ?? \"\");\n } else if (key === \"Escape\") {\n wasHandled.current = true;\n onEsc?.();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (onMove) {\n const blurMoveAndCancel = (\n direction: MoveDirection,\n e: KeyboardEvent<TElement>\n ) => {\n wasHandled.current = true;\n ref.current!.blur();\n onMove(direction);\n e.preventDefault();\n e.stopPropagation();\n };\n\n if (ev.shiftKey && key === \"Tab\") {\n blurMoveAndCancel(\"left\", ev);\n } else if (key === \"Tab\") {\n blurMoveAndCancel(\"right\", ev);\n } else if (key === \"ArrowUp\") {\n blurMoveAndCancel(\"up\", ev);\n } else if (key === \"ArrowDown\") {\n blurMoveAndCancel(\"down\", ev);\n } else if (key === \"ArrowRight\") {\n if (ref.current!.value.length === ref.current!.selectionStart) {\n blurMoveAndCancel(\"right\", ev);\n }\n } else if (key === \"ArrowLeft\") {\n if (ref.current!.selectionStart === 0) {\n blurMoveAndCancel(\"left\", ev);\n }\n }\n }\n\n if (onKeyDown) {\n onKeyDown(ev);\n }\n },\n [onEsc, onMove, onKeyDown, ref, onEnter, onDone]\n );\n\n return {\n onKeyDownHandler,\n onBlurHandler,\n onFocusHandler,\n };\n};\n","import { RefObject, useEffect } from \"react\";\nimport { TextInputElement } from \"./UseKeyboardNavigation\";\n\nexport function elementHasSelectionRange(element: TextInputElement): boolean {\n if (element.tagName === \"TEXTAREA\") {\n return true;\n }\n\n if (\n element.tagName === \"INPUT\" &&\n (element.type === \"text\" ||\n element.type === \"search\" ||\n element.type === \"url\" ||\n element.type === \"tel\" ||\n element.type === \"password\")\n ) {\n return true;\n }\n\n return false;\n}\n\nexport const useSelectAllOnMount = (\n ref: RefObject<TextInputElement>,\n moveCursorToEnd: boolean,\n enabled: boolean\n) => {\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n /*\n `selectionStart`, `selectionEnd` properties and `setSelectionRange` method apply only to inputs of types text, search, URL, tel and password.\n Chrome, starting from version 33, throws an exception while accessing those properties and method on the rest of input types.\n https://html.spec.whatwg.org/multipage/input.html#concept-input-apply\n */\n if (!elementHasSelectionRange(ref.current)) {\n return;\n }\n\n if (enabled) {\n ref.current.setSelectionRange(0, ref.current.value.length);\n } else if (moveCursorToEnd) {\n ref.current.setSelectionRange(\n ref.current.value.length,\n ref.current.value.length\n );\n }\n }, [moveCursorToEnd, ref, enabled]);\n};\n","import {\n ChangeEvent,\n ChangeEventHandler,\n CSSProperties,\n FocusEventHandler,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n} from \"react\";\nimport { TextInputVariant } from \"../components/ui/text-input/TextInput\";\nimport {\n MoveDirection,\n TextInputElement,\n useKeyboardNavigation,\n} from \"./UseKeyboardNavigation\";\nimport { useSelectAllOnMount } from \"./UseSelectAllOnMount\";\nimport { FullOnChangeProps } from \"../components/ui/types\";\n\ninterface UseTextInputOptions<TElement extends TextInputElement>\n extends FullOnChangeProps<string, ChangeEvent<TElement>> {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n onFocus?: FocusEventHandler<TElement>;\n onBlur?: FocusEventHandler<TElement>;\n onKeyDown?: KeyboardEventHandler<TElement>;\n}\n\ninterface UseTextInputHookResult<TElement extends TextInputElement> {\n autoFocus?: boolean;\n onChange: ChangeEventHandler<TElement>;\n onFocus: FocusEventHandler<TElement>;\n onBlur: FocusEventHandler<TElement>;\n onKeyDown: KeyboardEventHandler<TElement>;\n}\n\nexport const useTextInput = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n }: UseTextInputOptions<TElement>\n): UseTextInputHookResult<TElement> => {\n useSelectAllOnMount(ref, !!moveCursorToEndOnMount, !!selectAllOnMount);\n\n const { onKeyDownHandler, onFocusHandler, onBlurHandler } =\n useKeyboardNavigation<TElement>(\n ref,\n onKeyDown,\n onEnter,\n onEsc,\n onMove,\n onDone,\n onBlur,\n onFocus\n );\n\n const onChangeHandler = useCallback<ChangeEventHandler<TElement>>(\n (ev) => {\n onChange?.(ev);\n onValueChange?.(ev.target.value);\n },\n [onChange, onValueChange]\n );\n\n return {\n onBlur: onBlurHandler,\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onKeyDown: onKeyDownHandler,\n autoFocus: selectAllOnMount || autoFocus,\n };\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { Space } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface TextInputIconProps {\n iconClassName?: string;\n content?: React.ReactNode;\n icon?: IconDefinition;\n spaceOnRight?: boolean;\n spaceOnLeft?: boolean;\n disableContentPadding?: boolean;\n disableContentPaddingLeft?: boolean;\n disableContentPaddingRight?: boolean;\n onClick?: () => void;\n}\n\nexport const TextInputIcon: React.FC<TextInputIconProps> = ({\n icon,\n iconClassName,\n content,\n spaceOnLeft,\n spaceOnRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n onClick,\n}) => {\n if (!content && !icon) {\n return null;\n }\n\n if (content) {\n return (\n <>\n {spaceOnLeft &&\n !(disableContentPadding || disableContentPaddingLeft) ? (\n <Space />\n ) : null}\n {onClick ? (\n <span onClick={onClick} className={styles.clickable}>\n {content || null}\n </span>\n ) : (\n <>{content || null}</>\n )}\n\n {spaceOnRight &&\n !(disableContentPadding || disableContentPaddingRight) ? (\n <Space />\n ) : null}\n </>\n );\n }\n\n return (\n <>\n {spaceOnLeft ? <Space /> : null}\n {icon && (\n <>\n {onClick ? (\n <FlatButton\n type={\"button\"}\n onClick={onClick}\n leftIcon={icon}\n size={\"small\"}\n />\n ) : (\n <FontAwesomeIcon\n icon={icon}\n className={cx(styles.icon, iconClassName)}\n />\n )}\n </>\n )}\n {spaceOnRight ? <Space /> : null}\n </>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { InputProps } from \"@stenajs-webui/core\";\nimport { InputSpinner } from \"@stenajs-webui/elements\";\nimport { stenaCheck, stenaExclamationTriangle } from \"@stenajs-webui/elements\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { ChangeEvent, CSSProperties, useRef } from \"react\";\nimport { MoveDirection } from \"../../../hooks/UseKeyboardNavigation\";\nimport { useTextInput } from \"../../../hooks/UseTextInput\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./TextInput.module.css\";\nimport { TextInputIcon } from \"./TextInputIcon\";\n\nexport type TextInputVariant =\n | \"standard\"\n | \"loading\"\n | \"warning\"\n | \"error\"\n | \"modified\"\n | \"success\";\n\ninterface ExtraContent {\n /** React node to put to the left. Left icon is ignored if this is set. */\n contentLeft?: React.ReactNode;\n /** React node to put to the right. Right icon is ignored if this is set. */\n contentRight?: React.ReactNode;\n /** If true, there will be no padding between contentLeft/contentRight and the border. */\n disableContentPadding?: boolean;\n /** If true, there will be no padding between contentLeft and the border. */\n disableContentPaddingLeft?: boolean;\n /** If true, there will be no padding between contentRight and the border. */\n disableContentPaddingRight?: boolean;\n /** Icon on the left side. */\n iconLeft?: IconDefinition;\n /** Icon on the right side. */\n iconRight?: IconDefinition;\n /** On click left. */\n onClickLeft?: () => void;\n /** On click right. */\n onClickRight?: () => void;\n}\n\nexport interface TextInputProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n InputProps,\n ExtraContent {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n}\n\nexport const TextInput: React.FC<TextInputProps> = (props) => {\n const {\n variant = \"standard\",\n inputRef,\n disabled,\n className,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconLeft,\n iconRight,\n onClickLeft,\n onClickRight,\n moveCursorToEndOnMount,\n selectAllOnMount,\n autoFocus,\n onValueChange,\n wrapperClassName,\n wrapperStyle,\n onDone,\n onEnter,\n onEsc,\n onMove,\n onChange,\n onKeyDown,\n hideBorder,\n onFocus,\n onBlur,\n ...inputProps\n } = props;\n const localRef = useRef<HTMLInputElement>(null);\n const refToUse = inputRef ?? localRef;\n const hookProps = useTextInput<HTMLInputElement>(refToUse, {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n });\n\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n {\n [styles.hideBorder]: hideBorder,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <input\n className={cx(styles.input, className)}\n type={\"text\"}\n disabled={disabled}\n ref={refToUse}\n autoFocus={autoFocus}\n {...inputProps}\n {...hookProps}\n />\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport const onStepValueChange = ({\n onValueChange,\n value,\n numSteps,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n value: string | undefined;\n numSteps: number;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (!value) {\n onValueChange(String(limitWithinRange(numSteps, min, max)));\n } else {\n const parsedValue = parseFloatElseUndefined(value);\n const newValue = (parsedValue || 0) + numSteps;\n onValueChange(String(limitWithinRange(newValue, min, max)));\n }\n }\n};\n\nexport const onTextValueChange = ({\n onValueChange,\n newValue,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n newValue: string;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (newValue === \"\") {\n onValueChange(\"\");\n } else {\n const parsedValue = parseFloatElseUndefined(newValue);\n const value = parsedValue || 0;\n onValueChange(String(limitWithinRange(value, min, max)));\n }\n }\n};\n\nconst limitWithinRange = (\n value: number,\n min?: number,\n max?: number\n): number => {\n let v = value;\n if (min != null) {\n v = Math.max(min, v);\n }\n if (max != null) {\n v = Math.min(max, v);\n }\n return v;\n};\n","import { Omit, Space } from \"@stenajs-webui/core\";\nimport { UpDownButtons } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport styles from \"./NumericTextInput.module.css\";\nimport cx from \"classnames\";\nimport {\n onStepValueChange,\n onTextValueChange,\n} from \"../../../utils/NumericHelpers\";\n\nexport interface NumericTextInputProps\n extends Omit<\n TextInputProps,\n | \"onChange\" // Omit onChange, since up down buttons don't generate HTMLInput event.\n | \"selectAllOnMount\" // Not supported by browser when input type='number'\n | \"moveCursorToEndOnMount\" // Not supported by browser when input type='number'\n > {\n max?: number;\n min?: number;\n step?: number;\n hideButtons?: boolean;\n}\n\nexport const NumericTextInput: React.FC<NumericTextInputProps> = ({\n value,\n onValueChange,\n max,\n min,\n step = 1,\n contentRight,\n disabled,\n className,\n hideButtons,\n ...restProps\n}) => {\n const onClick = useCallback(\n (numSteps: number) => {\n onStepValueChange({ onValueChange, value, numSteps, min, max });\n },\n [value, max, min, onValueChange]\n );\n const onChange = useCallback(\n (newValue: string) => {\n onTextValueChange({ onValueChange, newValue, min, max });\n },\n [max, min, onValueChange]\n );\n\n const contentRightToUse = hideButtons ? (\n contentRight\n ) : (\n <>\n {contentRight && (\n <>\n {contentRight}\n <Space />\n </>\n )}\n <UpDownButtons\n onClickUp={disabled ? undefined : () => onClick(step)}\n onClickDown={disabled ? undefined : () => onClick(-step)}\n iconColor={\"var(--swui-textinput-text-color)\"}\n disabled={disabled}\n />\n </>\n );\n\n return (\n <TextInput\n contentRight={contentRightToUse}\n value={value}\n onValueChange={onChange}\n disableContentPaddingRight={!hideButtons}\n type={\"number\"}\n min={min}\n max={max}\n step={step}\n className={cx(styles.numericTextInputInput, className)}\n disabled={disabled}\n {...restProps}\n />\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport { ValueAndOnValueChangeProps } from \"../../types\";\nimport { NumericTextInputProps } from \"../NumericTextInput\";\nimport { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport type NumericInputValueProps = ValueAndOnValueChangeProps<\n number | undefined\n>;\n\nexport const useNumericInputValue = (\n value: number | undefined,\n onValueChange?: (value: number | undefined) => void\n): Partial<NumericTextInputProps> => {\n const onValueChangeString = useCallback(\n (newValue: string) => {\n if (onValueChange) {\n if (!newValue) {\n onValueChange(undefined);\n } else {\n const n = parseFloatElseUndefined(newValue);\n if (n !== undefined) {\n onValueChange(n);\n }\n }\n }\n },\n [onValueChange]\n );\n\n const valueString = useMemo(() => {\n if (value === undefined) {\n return \"\";\n }\n return String(value);\n }, [value]);\n\n return {\n onValueChange: onValueChangeString,\n value: valueString,\n };\n};\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport { stenaEyeHide, stenaEyeShow } from \"@stenajs-webui/elements\";\n\nexport interface PasswordInputProps extends TextInputProps {\n visibleIcon?: IconDefinition;\n hiddenIcon?: IconDefinition;\n}\n\nexport const PasswordInput: React.FC<PasswordInputProps> = ({\n hiddenIcon = stenaEyeShow,\n visibleIcon = stenaEyeHide,\n ...props\n}) => {\n const [isPassword, setIsPassword] = useState(true);\n\n return (\n <TextInput\n iconRight={isPassword ? hiddenIcon : visibleIcon}\n onClickRight={() => setIsPassword((x) => !x)}\n type={isPassword ? \"password\" : \"text\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport cx from \"classnames\";\nimport { TextInputProps } from \"./TextInput\";\nimport { TextInputIcon } from \"./TextInputIcon\";\nimport {\n InputSpinner,\n stenaCheck,\n stenaExclamationTriangle,\n} from \"@stenajs-webui/elements\";\nimport { Row } from \"@stenajs-webui/core\";\n\nexport interface TextInputBoxProps\n extends Pick<\n TextInputProps,\n | \"variant\"\n | \"wrapperClassName\"\n | \"disabled\"\n | \"wrapperStyle\"\n | \"contentLeft\"\n | \"contentRight\"\n | \"disableContentPadding\"\n | \"disableContentPaddingLeft\"\n | \"disableContentPaddingRight\"\n | \"iconRight\"\n | \"iconLeft\"\n | \"onClickLeft\"\n | \"onClickRight\"\n > {\n children?: ReactNode;\n}\n\nexport const TextInputBox: React.FC<TextInputBoxProps> = ({\n variant = \"standard\",\n disabled,\n wrapperClassName,\n wrapperStyle,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconRight,\n iconLeft,\n onClickLeft,\n onClickRight,\n children,\n}) => {\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles.inputContainer,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <Row alignItems={\"center\"}>{children}</Row>\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./TextArea.module.css\";\nimport { FullOnChangeProps } from \"../types\";\n\ntype Resize =\n | \"none\"\n | \"both\"\n | \"horizontal\"\n | \"vertical\"\n | \"inherit\"\n | \"initial\"\n | \"revert\"\n | \"unset\";\n\nexport interface TextAreaProps\n extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"value\">,\n FullOnChangeProps<string, ChangeEvent<HTMLTextAreaElement>> {\n resize?: Resize;\n readOnly?: boolean;\n rows?: number;\n disabled?: boolean;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n value,\n onValueChange,\n onChange,\n resize = \"none\",\n readOnly = false,\n rows,\n disabled,\n ...textAreaProps\n },\n ref\n ) => {\n const onChangeHandler: ChangeEventHandler<HTMLTextAreaElement> =\n useCallback(\n (ev) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <textarea\n disabled={disabled}\n rows={rows}\n readOnly={readOnly}\n className={cx(styles.textArea, className)}\n style={{ resize }}\n onChange={onChangeHandler}\n value={value}\n ref={ref}\n {...textAreaProps}\n />\n );\n }\n);\n"],"names":["styleChecked","styles","Switch","value","disabled","onValueChange","className","wrapperRef","restProps","jsx","jsxs","SwitchWithLabel","label","textColor","switchProps","Box","Space","Text","Checkbox","forwardRef","indeterminate","onChange","size","inputProps","ref","localRef","useRef","setRef","element","handleInputChange","useCallback","ev","useEffect","cx","CheckboxWithLabel","children","inputRef","checkboxProps","Row","RadioButton","name","RadioButtonWithLabel","radioButtonProps","useKeyboardNavigation","onKeyDown","onEnter","onEsc","onMove","onDone","onBlur","onFocus","wasHandled","onBlurHandler","_a","onFocusHandler","key","blurMoveAndCancel","direction","e","elementHasSelectionRange","useSelectAllOnMount","moveCursorToEnd","enabled","useTextInput","selectAllOnMount","moveCursorToEndOnMount","autoFocus","onKeyDownHandler","onChangeHandler","TextInputIcon","icon","iconClassName","content","spaceOnLeft","spaceOnRight","disableContentPadding","disableContentPaddingLeft","disableContentPaddingRight","onClick","Fragment","FlatButton","FontAwesomeIcon","TextInput","props","variant","contentLeft","contentRight","iconLeft","iconRight","onClickLeft","onClickRight","wrapperClassName","wrapperStyle","hideBorder","refToUse","hookProps","currentIconRight","stenaCheck","stenaExclamationTriangle","currentContentRight","InputSpinner","onStepValueChange","numSteps","min","max","limitWithinRange","newValue","parseFloatElseUndefined","onTextValueChange","v","NumericTextInput","step","hideButtons","contentRightToUse","UpDownButtons","useNumericInputValue","onValueChangeString","n","valueString","useMemo","PasswordInput","hiddenIcon","stenaEyeShow","visibleIcon","stenaEyeHide","isPassword","setIsPassword","useState","x","TextInputBox","TextArea","resize","readOnly","rows","textAreaProps"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/ui/switch/Switch.tsx","../src/components/ui/switch/SwitchWithLabel.tsx","../src/components/ui/checkbox/Checkbox.tsx","../src/components/ui/checkbox/CheckboxWithLabel.tsx","../src/components/ui/radio/RadioButton.tsx","../src/components/ui/radio/RadioButtonWithLabel.tsx","../src/hooks/UseKeyboardNavigation.ts","../src/hooks/UseSelectAllOnMount.ts","../src/hooks/UseTextInput.ts","../src/components/ui/text-input/TextInputIcon.tsx","../src/components/ui/text-input/TextInput.tsx","../src/utils/NumericHelpers.ts","../src/components/ui/numeric-text-input/NumericTextInput.tsx","../src/components/ui/numeric-text-input/hooks/UseNumericInputValue.ts","../src/components/ui/password-input/PasswordInput.tsx","../src/components/ui/text-input/TextInputBox.tsx","../src/components/ui/text-area/TextArea.tsx"],"sourcesContent":["import { Ref } from \"react\";\nimport * as React from \"react\";\nimport { ButtonElementProps } from \"@stenajs-webui/core\";\nimport { ValueAndOnValueChangeProps } from \"../types\";\nimport styles from \"./Switch.module.css\";\n\nexport interface SwitchProps\n extends Omit<ButtonElementProps, \"value\">,\n ValueAndOnValueChangeProps<boolean> {\n wrapperRef?: Ref<HTMLDivElement>;\n}\n\nconst styleChecked = `${styles.switch} ${styles.checked}`;\n\nexport const Switch: React.FC<SwitchProps> = ({\n value,\n disabled,\n onValueChange,\n className,\n wrapperRef,\n ...restProps\n}) => {\n return (\n <div className={className} ref={wrapperRef}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n className={value ? styleChecked : styles.switch}\n disabled={disabled}\n onClick={() => onValueChange && onValueChange(!value)}\n {...restProps}\n >\n <div className={styles.filler} />\n <div className={styles.knob} />\n </button>\n </div>\n );\n};\n","import { Box, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Switch, SwitchProps } from \"./Switch\";\n\nexport interface SwitchWithLabelProps extends SwitchProps {\n label: string;\n textColor?: string;\n}\n\nexport const SwitchWithLabel: React.FC<SwitchWithLabelProps> = ({\n label,\n disabled,\n textColor,\n wrapperRef,\n ...switchProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Box row alignItems={\"center\"}>\n <Switch disabled={disabled} {...switchProps} />\n <Space />\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n </Box>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport cx from \"classnames\";\nimport styles from \"./Checkbox.module.css\";\n\nexport type CheckboxSize = \"standard\" | \"small\";\n\nexport interface CheckboxProps\n extends FullOnChangeProps<boolean, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n indeterminate?: boolean;\n size?: CheckboxSize;\n disabled?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n indeterminate = false,\n onChange,\n onValueChange,\n value = false,\n size = \"standard\",\n className,\n ...inputProps\n },\n ref\n ) => {\n const localRef = useRef<HTMLInputElement>();\n\n const setRef = (element: HTMLInputElement) => {\n localRef.current = element;\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n if (ref) {\n if (typeof ref === \"function\") {\n ref(element);\n } else {\n (ref as MutableRefObject<HTMLInputElement>).current = element;\n }\n }\n };\n\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.checked);\n }\n },\n [onChange, onValueChange]\n );\n\n useEffect(() => {\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate, localRef]);\n\n return (\n <input\n type={\"checkbox\"}\n className={cx(styles.checkbox, styles[size], className)}\n checked={value}\n onChange={handleInputChange}\n ref={setRef}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { Checkbox, CheckboxProps } from \"./Checkbox\";\n\nexport interface CheckboxWithLabelProps extends CheckboxProps {\n label?: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const CheckboxWithLabel: React.FC<CheckboxWithLabelProps> = ({\n children,\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...checkboxProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <Checkbox {...checkboxProps} ref={inputRef} />\n <Space />\n {label && (\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n )}\n {children}\n </Row>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./RadioButton.module.css\";\n\nexport type RadioButtonSize = \"standard\" | \"small\";\n\nexport interface RadioButtonProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n size?: RadioButtonSize;\n}\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (\n { onChange, onValueChange, size = \"standard\", name, ...inputProps },\n ref\n ) => {\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <input\n type={\"radio\"}\n name={name}\n className={styles.radiobutton + \" \" + styles[size]}\n onChange={handleInputChange}\n ref={ref}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { RadioButton, RadioButtonProps } from \"./RadioButton\";\n\nexport interface RadioButtonWithLabelProps extends RadioButtonProps {\n label: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const RadioButtonWithLabel: React.FC<RadioButtonWithLabelProps> = ({\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...radioButtonProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <RadioButton ref={inputRef} {...radioButtonProps} />\n <Space />\n <Text color={textColor} userSelect={\"none\"}>\n {label}\n </Text>\n </Row>\n </label>\n </div>\n );\n};\n","import {\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nexport type MoveDirection = \"right\" | \"left\" | \"down\" | \"up\";\nexport type TextInputElement = HTMLTextAreaElement | HTMLInputElement;\n\nexport const useKeyboardNavigation = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n /**\n * User-provided onKeyDown. Internal handler should forward calls to this.\n * */\n onKeyDown: KeyboardEventHandler<TElement> | undefined,\n onEnter: (() => void) | undefined,\n onEsc: (() => void) | undefined,\n /**\n * onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab.\n * */\n onMove: ((direction: MoveDirection) => void) | undefined,\n onDone: ((value: string) => void) | undefined,\n onBlur: FocusEventHandler<TElement> | undefined,\n onFocus: FocusEventHandler<TElement> | undefined\n) => {\n const wasHandled = useRef(false);\n\n const onBlurHandler: FocusEventHandler<TElement> = (ev) => {\n if (!wasHandled.current) {\n onDone?.(ev.target.value ?? \"\");\n }\n onBlur?.(ev);\n };\n\n const onFocusHandler: FocusEventHandler<TElement> = (ev) => {\n wasHandled.current = false;\n onFocus?.(ev);\n };\n\n const onKeyDownHandler: KeyboardEventHandler<TElement> = useCallback(\n (ev) => {\n const { key } = ev;\n if (key === \"Enter\") {\n wasHandled.current = true;\n onEnter?.();\n onDone?.(ev.currentTarget.value ?? \"\");\n } else if (key === \"Escape\") {\n wasHandled.current = true;\n onEsc?.();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (onMove) {\n const blurMoveAndCancel = (\n direction: MoveDirection,\n e: KeyboardEvent<TElement>\n ) => {\n wasHandled.current = true;\n ref.current!.blur();\n onMove(direction);\n e.preventDefault();\n e.stopPropagation();\n };\n\n if (ev.shiftKey && key === \"Tab\") {\n blurMoveAndCancel(\"left\", ev);\n } else if (key === \"Tab\") {\n blurMoveAndCancel(\"right\", ev);\n } else if (key === \"ArrowUp\") {\n blurMoveAndCancel(\"up\", ev);\n } else if (key === \"ArrowDown\") {\n blurMoveAndCancel(\"down\", ev);\n } else if (key === \"ArrowRight\") {\n if (ref.current!.value.length === ref.current!.selectionStart) {\n blurMoveAndCancel(\"right\", ev);\n }\n } else if (key === \"ArrowLeft\") {\n if (ref.current!.selectionStart === 0) {\n blurMoveAndCancel(\"left\", ev);\n }\n }\n }\n\n if (onKeyDown) {\n onKeyDown(ev);\n }\n },\n [onEsc, onMove, onKeyDown, ref, onEnter, onDone]\n );\n\n return {\n onKeyDownHandler,\n onBlurHandler,\n onFocusHandler,\n };\n};\n","import { RefObject, useEffect } from \"react\";\nimport { TextInputElement } from \"./UseKeyboardNavigation\";\n\nexport function elementHasSelectionRange(element: TextInputElement): boolean {\n if (element.tagName === \"TEXTAREA\") {\n return true;\n }\n\n if (\n element.tagName === \"INPUT\" &&\n (element.type === \"text\" ||\n element.type === \"search\" ||\n element.type === \"url\" ||\n element.type === \"tel\" ||\n element.type === \"password\")\n ) {\n return true;\n }\n\n return false;\n}\n\nexport const useSelectAllOnMount = (\n ref: RefObject<TextInputElement>,\n moveCursorToEnd: boolean,\n enabled: boolean\n) => {\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n /*\n `selectionStart`, `selectionEnd` properties and `setSelectionRange` method apply only to inputs of types text, search, URL, tel and password.\n Chrome, starting from version 33, throws an exception while accessing those properties and method on the rest of input types.\n https://html.spec.whatwg.org/multipage/input.html#concept-input-apply\n */\n if (!elementHasSelectionRange(ref.current)) {\n return;\n }\n\n if (enabled) {\n ref.current.setSelectionRange(0, ref.current.value.length);\n } else if (moveCursorToEnd) {\n ref.current.setSelectionRange(\n ref.current.value.length,\n ref.current.value.length\n );\n }\n }, [moveCursorToEnd, ref, enabled]);\n};\n","import {\n ChangeEvent,\n ChangeEventHandler,\n CSSProperties,\n FocusEventHandler,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n} from \"react\";\nimport { TextInputVariant } from \"../components/ui/text-input/TextInput\";\nimport {\n MoveDirection,\n TextInputElement,\n useKeyboardNavigation,\n} from \"./UseKeyboardNavigation\";\nimport { useSelectAllOnMount } from \"./UseSelectAllOnMount\";\nimport { FullOnChangeProps } from \"../components/ui/types\";\n\ninterface UseTextInputOptions<TElement extends TextInputElement>\n extends FullOnChangeProps<string, ChangeEvent<TElement>> {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n onFocus?: FocusEventHandler<TElement>;\n onBlur?: FocusEventHandler<TElement>;\n onKeyDown?: KeyboardEventHandler<TElement>;\n}\n\ninterface UseTextInputHookResult<TElement extends TextInputElement> {\n autoFocus?: boolean;\n onChange: ChangeEventHandler<TElement>;\n onFocus: FocusEventHandler<TElement>;\n onBlur: FocusEventHandler<TElement>;\n onKeyDown: KeyboardEventHandler<TElement>;\n}\n\nexport const useTextInput = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n }: UseTextInputOptions<TElement>\n): UseTextInputHookResult<TElement> => {\n useSelectAllOnMount(ref, !!moveCursorToEndOnMount, !!selectAllOnMount);\n\n const { onKeyDownHandler, onFocusHandler, onBlurHandler } =\n useKeyboardNavigation<TElement>(\n ref,\n onKeyDown,\n onEnter,\n onEsc,\n onMove,\n onDone,\n onBlur,\n onFocus\n );\n\n const onChangeHandler = useCallback<ChangeEventHandler<TElement>>(\n (ev) => {\n onChange?.(ev);\n onValueChange?.(ev.target.value);\n },\n [onChange, onValueChange]\n );\n\n return {\n onBlur: onBlurHandler,\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onKeyDown: onKeyDownHandler,\n autoFocus: selectAllOnMount || autoFocus,\n };\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { Space } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface TextInputIconProps {\n iconClassName?: string;\n content?: React.ReactNode;\n icon?: IconDefinition;\n spaceOnRight?: boolean;\n spaceOnLeft?: boolean;\n disableContentPadding?: boolean;\n disableContentPaddingLeft?: boolean;\n disableContentPaddingRight?: boolean;\n onClick?: () => void;\n}\n\nexport const TextInputIcon: React.FC<TextInputIconProps> = ({\n icon,\n iconClassName,\n content,\n spaceOnLeft,\n spaceOnRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n onClick,\n}) => {\n if (!content && !icon) {\n return null;\n }\n\n if (content) {\n return (\n <>\n {spaceOnLeft &&\n !(disableContentPadding || disableContentPaddingLeft) ? (\n <Space />\n ) : null}\n {onClick ? (\n <span onClick={onClick} className={styles.clickable}>\n {content || null}\n </span>\n ) : (\n <>{content || null}</>\n )}\n\n {spaceOnRight &&\n !(disableContentPadding || disableContentPaddingRight) ? (\n <Space />\n ) : null}\n </>\n );\n }\n\n return (\n <>\n {spaceOnLeft ? <Space /> : null}\n {icon && (\n <>\n {onClick ? (\n <FlatButton\n type={\"button\"}\n onClick={onClick}\n leftIcon={icon}\n size={\"small\"}\n />\n ) : (\n <FontAwesomeIcon\n icon={icon}\n className={cx(styles.icon, iconClassName)}\n />\n )}\n </>\n )}\n {spaceOnRight ? <Space /> : null}\n </>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { InputProps } from \"@stenajs-webui/core\";\nimport { InputSpinner } from \"@stenajs-webui/elements\";\nimport { stenaCheck, stenaExclamationTriangle } from \"@stenajs-webui/elements\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { ChangeEvent, CSSProperties, useRef } from \"react\";\nimport { MoveDirection } from \"../../../hooks/UseKeyboardNavigation\";\nimport { useTextInput } from \"../../../hooks/UseTextInput\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./TextInput.module.css\";\nimport { TextInputIcon } from \"./TextInputIcon\";\n\nexport type TextInputVariant =\n | \"standard\"\n | \"loading\"\n | \"warning\"\n | \"error\"\n | \"modified\"\n | \"success\";\n\ninterface ExtraContent {\n /** React node to put to the left. Left icon is ignored if this is set. */\n contentLeft?: React.ReactNode;\n /** React node to put to the right. Right icon is ignored if this is set. */\n contentRight?: React.ReactNode;\n /** If true, there will be no padding between contentLeft/contentRight and the border. */\n disableContentPadding?: boolean;\n /** If true, there will be no padding between contentLeft and the border. */\n disableContentPaddingLeft?: boolean;\n /** If true, there will be no padding between contentRight and the border. */\n disableContentPaddingRight?: boolean;\n /** Icon on the left side. */\n iconLeft?: IconDefinition;\n /** Icon on the right side. */\n iconRight?: IconDefinition;\n /** On click left. */\n onClickLeft?: () => void;\n /** On click right. */\n onClickRight?: () => void;\n}\n\nexport interface TextInputProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n InputProps,\n ExtraContent {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n}\n\nexport const TextInput: React.FC<TextInputProps> = (props) => {\n const {\n variant = \"standard\",\n inputRef,\n disabled,\n className,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconLeft,\n iconRight,\n onClickLeft,\n onClickRight,\n moveCursorToEndOnMount,\n selectAllOnMount,\n autoFocus,\n onValueChange,\n wrapperClassName,\n wrapperStyle,\n onDone,\n onEnter,\n onEsc,\n onMove,\n onChange,\n onKeyDown,\n hideBorder,\n onFocus,\n onBlur,\n ...inputProps\n } = props;\n const localRef = useRef<HTMLInputElement>(null);\n const refToUse = inputRef ?? localRef;\n const hookProps = useTextInput<HTMLInputElement>(refToUse, {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n });\n\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n {\n [styles.hideBorder]: hideBorder,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <input\n className={cx(styles.input, className)}\n type={\"text\"}\n disabled={disabled}\n ref={refToUse}\n autoFocus={autoFocus}\n {...inputProps}\n {...hookProps}\n />\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport const onStepValueChange = ({\n onValueChange,\n value,\n numSteps,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n value: string | undefined;\n numSteps: number;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (!value) {\n onValueChange(String(limitWithinRange(numSteps, min, max)));\n } else {\n const parsedValue = parseFloatElseUndefined(value);\n const newValue = (parsedValue || 0) + numSteps;\n onValueChange(String(limitWithinRange(newValue, min, max)));\n }\n }\n};\n\nexport const onTextValueChange = ({\n onValueChange,\n newValue,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n newValue: string;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (newValue === \"\") {\n onValueChange(\"\");\n } else {\n const parsedValue = parseFloatElseUndefined(newValue);\n const value = parsedValue || 0;\n onValueChange(String(limitWithinRange(value, min, max)));\n }\n }\n};\n\nconst limitWithinRange = (\n value: number,\n min?: number,\n max?: number\n): number => {\n let v = value;\n if (min != null) {\n v = Math.max(min, v);\n }\n if (max != null) {\n v = Math.min(max, v);\n }\n return v;\n};\n","import { Omit, Space } from \"@stenajs-webui/core\";\nimport { UpDownButtons } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport styles from \"./NumericTextInput.module.css\";\nimport cx from \"classnames\";\nimport {\n onStepValueChange,\n onTextValueChange,\n} from \"../../../utils/NumericHelpers\";\n\nexport interface NumericTextInputProps\n extends Omit<\n TextInputProps,\n | \"onChange\" // Omit onChange, since up down buttons don't generate HTMLInput event.\n | \"selectAllOnMount\" // Not supported by browser when input type='number'\n | \"moveCursorToEndOnMount\" // Not supported by browser when input type='number'\n > {\n max?: number;\n min?: number;\n step?: number;\n hideButtons?: boolean;\n}\n\nexport const NumericTextInput: React.FC<NumericTextInputProps> = ({\n value,\n onValueChange,\n max,\n min,\n step = 1,\n contentRight,\n disabled,\n className,\n hideButtons,\n ...restProps\n}) => {\n const onClick = useCallback(\n (numSteps: number) => {\n onStepValueChange({ onValueChange, value, numSteps, min, max });\n },\n [value, max, min, onValueChange]\n );\n const onChange = useCallback(\n (newValue: string) => {\n onTextValueChange({ onValueChange, newValue, min, max });\n },\n [max, min, onValueChange]\n );\n\n const contentRightToUse = hideButtons ? (\n contentRight\n ) : (\n <>\n {contentRight && (\n <>\n {contentRight}\n <Space />\n </>\n )}\n <UpDownButtons\n onClickUp={disabled ? undefined : () => onClick(step)}\n onClickDown={disabled ? undefined : () => onClick(-step)}\n iconColor={\"var(--swui-textinput-text-color)\"}\n disabled={disabled}\n />\n </>\n );\n\n return (\n <TextInput\n contentRight={contentRightToUse}\n value={value}\n onValueChange={onChange}\n disableContentPaddingRight={!hideButtons}\n type={\"number\"}\n min={min}\n max={max}\n step={step}\n className={cx(styles.numericTextInputInput, className)}\n disabled={disabled}\n {...restProps}\n />\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport { ValueAndOnValueChangeProps } from \"../../types\";\nimport { NumericTextInputProps } from \"../NumericTextInput\";\nimport { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport type NumericInputValueProps = ValueAndOnValueChangeProps<\n number | undefined\n>;\n\nexport const useNumericInputValue = (\n value: number | undefined,\n onValueChange?: (value: number | undefined) => void\n): Partial<NumericTextInputProps> => {\n const onValueChangeString = useCallback(\n (newValue: string) => {\n if (onValueChange) {\n if (!newValue) {\n onValueChange(undefined);\n } else {\n const n = parseFloatElseUndefined(newValue);\n if (n !== undefined) {\n onValueChange(n);\n }\n }\n }\n },\n [onValueChange]\n );\n\n const valueString = useMemo(() => {\n if (value === undefined) {\n return \"\";\n }\n return String(value);\n }, [value]);\n\n return {\n onValueChange: onValueChangeString,\n value: valueString,\n };\n};\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport { stenaEyeHide, stenaEyeShow } from \"@stenajs-webui/elements\";\n\nexport interface PasswordInputProps extends TextInputProps {\n visibleIcon?: IconDefinition;\n hiddenIcon?: IconDefinition;\n}\n\nexport const PasswordInput: React.FC<PasswordInputProps> = ({\n hiddenIcon = stenaEyeShow,\n visibleIcon = stenaEyeHide,\n ...props\n}) => {\n const [isPassword, setIsPassword] = useState(true);\n\n return (\n <TextInput\n iconRight={isPassword ? hiddenIcon : visibleIcon}\n onClickRight={() => setIsPassword((x) => !x)}\n type={isPassword ? \"password\" : \"text\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport cx from \"classnames\";\nimport { TextInputProps } from \"./TextInput\";\nimport { TextInputIcon } from \"./TextInputIcon\";\nimport {\n InputSpinner,\n stenaCheck,\n stenaExclamationTriangle,\n} from \"@stenajs-webui/elements\";\nimport { Row } from \"@stenajs-webui/core\";\n\nexport interface TextInputBoxProps\n extends Pick<\n TextInputProps,\n | \"variant\"\n | \"wrapperClassName\"\n | \"disabled\"\n | \"wrapperStyle\"\n | \"contentLeft\"\n | \"contentRight\"\n | \"disableContentPadding\"\n | \"disableContentPaddingLeft\"\n | \"disableContentPaddingRight\"\n | \"iconRight\"\n | \"iconLeft\"\n | \"onClickLeft\"\n | \"onClickRight\"\n > {\n children?: ReactNode;\n}\n\nexport const TextInputBox: React.FC<TextInputBoxProps> = ({\n variant = \"standard\",\n disabled,\n wrapperClassName,\n wrapperStyle,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconRight,\n iconLeft,\n onClickLeft,\n onClickRight,\n children,\n}) => {\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles.inputContainer,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <Row alignItems={\"center\"}>{children}</Row>\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./TextArea.module.css\";\nimport { FullOnChangeProps } from \"../types\";\n\ntype Resize =\n | \"none\"\n | \"both\"\n | \"horizontal\"\n | \"vertical\"\n | \"inherit\"\n | \"initial\"\n | \"revert\"\n | \"unset\";\n\nexport interface TextAreaProps\n extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"value\">,\n FullOnChangeProps<string, ChangeEvent<HTMLTextAreaElement>> {\n resize?: Resize;\n readOnly?: boolean;\n rows?: number;\n disabled?: boolean;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n value,\n onValueChange,\n onChange,\n resize = \"none\",\n readOnly = false,\n rows,\n disabled,\n ...textAreaProps\n },\n ref\n ) => {\n const onChangeHandler: ChangeEventHandler<HTMLTextAreaElement> =\n useCallback(\n (ev) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <textarea\n disabled={disabled}\n rows={rows}\n readOnly={readOnly}\n className={cx(styles.textArea, className)}\n style={{ resize }}\n onChange={onChangeHandler}\n value={value}\n ref={ref}\n {...textAreaProps}\n />\n );\n }\n);\n"],"names":["styleChecked","styles","Switch","value","disabled","onValueChange","className","wrapperRef","restProps","jsx","jsxs","SwitchWithLabel","label","textColor","switchProps","Box","Space","Text","Checkbox","forwardRef","indeterminate","onChange","size","inputProps","ref","localRef","useRef","setRef","element","handleInputChange","useCallback","ev","useEffect","cx","CheckboxWithLabel","children","inputRef","checkboxProps","Row","RadioButton","name","RadioButtonWithLabel","radioButtonProps","useKeyboardNavigation","onKeyDown","onEnter","onEsc","onMove","onDone","onBlur","onFocus","wasHandled","onBlurHandler","_a","onFocusHandler","key","blurMoveAndCancel","direction","e","elementHasSelectionRange","useSelectAllOnMount","moveCursorToEnd","enabled","useTextInput","selectAllOnMount","moveCursorToEndOnMount","autoFocus","onKeyDownHandler","onChangeHandler","TextInputIcon","icon","iconClassName","content","spaceOnLeft","spaceOnRight","disableContentPadding","disableContentPaddingLeft","disableContentPaddingRight","onClick","Fragment","FlatButton","FontAwesomeIcon","TextInput","props","variant","contentLeft","contentRight","iconLeft","iconRight","onClickLeft","onClickRight","wrapperClassName","wrapperStyle","hideBorder","refToUse","hookProps","currentIconRight","stenaCheck","stenaExclamationTriangle","currentContentRight","InputSpinner","onStepValueChange","numSteps","min","max","limitWithinRange","newValue","parseFloatElseUndefined","onTextValueChange","v","NumericTextInput","step","hideButtons","contentRightToUse","UpDownButtons","useNumericInputValue","onValueChangeString","n","valueString","useMemo","PasswordInput","hiddenIcon","stenaEyeShow","visibleIcon","stenaEyeHide","isPassword","setIsPassword","useState","x","TextInputBox","TextArea","resize","readOnly","rows","textAreaProps"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stenajs-webui/forms",
3
- "version": "19.0.0-next.16",
3
+ "version": "19.0.0-next.18",
4
4
  "description": "",
5
5
  "author": "mattias800",
6
6
  "license": "MIT",
@@ -26,9 +26,9 @@
26
26
  "deploy": "gh-pages -d example/build"
27
27
  },
28
28
  "dependencies": {
29
- "@stenajs-webui/core": "19.0.0-next.16",
30
- "@stenajs-webui/elements": "19.0.0-next.16",
31
- "@stenajs-webui/tooltip": "19.0.0-next.16",
29
+ "@stenajs-webui/core": "19.0.0-next.18",
30
+ "@stenajs-webui/elements": "19.0.0-next.18",
31
+ "@stenajs-webui/tooltip": "19.0.0-next.18",
32
32
  "classnames": "^2.3.1",
33
33
  "date-fns": "2.26.0"
34
34
  },
@@ -74,5 +74,5 @@
74
74
  "files": [
75
75
  "dist"
76
76
  ],
77
- "gitHead": "08682295f0b9afcb6fb555ef536bb08417f5215a"
77
+ "gitHead": "89c522919922198955a3e68fb7c60066c56de4dd"
78
78
  }