@websolutespa/bom-mixer-ui 1.10.6 → 1.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/index.js +126 -50
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/esm/components/page-loader/page-loader.js +4 -0
  5. package/dist/esm/components/page-loader/page-loader.js.map +1 -1
  6. package/dist/esm/fields/field-accept.js +8 -4
  7. package/dist/esm/fields/field-accept.js.map +1 -1
  8. package/dist/esm/fields/field-autocomplete.js +5 -3
  9. package/dist/esm/fields/field-autocomplete.js.map +1 -1
  10. package/dist/esm/fields/field-card.js +6 -3
  11. package/dist/esm/fields/field-card.js.map +1 -1
  12. package/dist/esm/fields/field-checkbox.js +8 -4
  13. package/dist/esm/fields/field-checkbox.js.map +1 -1
  14. package/dist/esm/fields/field-combobox.js +9 -4
  15. package/dist/esm/fields/field-combobox.js.map +1 -1
  16. package/dist/esm/fields/field-consent.js +8 -4
  17. package/dist/esm/fields/field-consent.js.map +1 -1
  18. package/dist/esm/fields/field-error.js +14 -4
  19. package/dist/esm/fields/field-error.js.map +1 -1
  20. package/dist/esm/fields/field-implicit.js +3 -2
  21. package/dist/esm/fields/field-implicit.js.map +1 -1
  22. package/dist/esm/fields/field-password.js +10 -4
  23. package/dist/esm/fields/field-password.js.map +1 -1
  24. package/dist/esm/fields/field-radio.js +6 -3
  25. package/dist/esm/fields/field-radio.js.map +1 -1
  26. package/dist/esm/fields/field-select.js +11 -4
  27. package/dist/esm/fields/field-select.js.map +1 -1
  28. package/dist/esm/fields/field-text.js +14 -5
  29. package/dist/esm/fields/field-text.js.map +1 -1
  30. package/dist/esm/fields/field-textarea.js +9 -3
  31. package/dist/esm/fields/field-textarea.js.map +1 -1
  32. package/dist/esm/forms/input/input.js +3 -4
  33. package/dist/esm/forms/input/input.js.map +1 -1
  34. package/dist/esm/forms/select/select.js +8 -0
  35. package/dist/esm/forms/select/select.js.map +1 -1
  36. package/dist/esm/index.js +1 -1
  37. package/dist/types/components/page-loader/page-loader.d.ts.map +1 -1
  38. package/dist/types/fields/field-accept.d.ts.map +1 -1
  39. package/dist/types/fields/field-autocomplete.d.ts.map +1 -1
  40. package/dist/types/fields/field-card.d.ts.map +1 -1
  41. package/dist/types/fields/field-checkbox.d.ts.map +1 -1
  42. package/dist/types/fields/field-combobox.d.ts.map +1 -1
  43. package/dist/types/fields/field-consent.d.ts.map +1 -1
  44. package/dist/types/fields/field-error.d.ts +2 -1
  45. package/dist/types/fields/field-error.d.ts.map +1 -1
  46. package/dist/types/fields/field-implicit.d.ts.map +1 -1
  47. package/dist/types/fields/field-password.d.ts.map +1 -1
  48. package/dist/types/fields/field-radio.d.ts.map +1 -1
  49. package/dist/types/fields/field-select.d.ts.map +1 -1
  50. package/dist/types/fields/field-text.d.ts +3 -0
  51. package/dist/types/fields/field-text.d.ts.map +1 -1
  52. package/dist/types/fields/field-textarea.d.ts.map +1 -1
  53. package/dist/types/forms/input/input.d.ts.map +1 -1
  54. package/dist/types/forms/select/select.d.ts.map +1 -1
  55. package/package.json +1 -1
  56. package/src/components/page-loader/page-loader.tsx +4 -0
  57. package/src/fields/field-accept.tsx +14 -5
  58. package/src/fields/field-autocomplete.tsx +7 -4
  59. package/src/fields/field-card.tsx +8 -4
  60. package/src/fields/field-checkbox.tsx +7 -2
  61. package/src/fields/field-combobox.tsx +6 -3
  62. package/src/fields/field-consent.tsx +6 -3
  63. package/src/fields/field-error.tsx +11 -3
  64. package/src/fields/field-implicit.tsx +4 -1
  65. package/src/fields/field-password.tsx +11 -5
  66. package/src/fields/field-radio.tsx +5 -2
  67. package/src/fields/field-select.tsx +10 -4
  68. package/src/fields/field-text.tsx +17 -5
  69. package/src/fields/field-textarea.tsx +10 -4
  70. package/src/forms/input/input.tsx +0 -1
  71. package/src/forms/select/select.tsx +11 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @websolutespa/bom-mixer-ui
2
2
 
3
+ ## 1.10.8
4
+
5
+ ### Patch Changes
6
+
7
+ - Modified: form fields & errors a11y
8
+
9
+ ## 1.10.7
10
+
11
+ ### Patch Changes
12
+
13
+ - 7c2570a: Modified: PageLoader style
14
+
3
15
  ## 1.10.6
4
16
 
5
17
  ### Patch Changes
package/dist/cjs/index.js CHANGED
@@ -7005,6 +7005,10 @@ const StyledContent = styled__default.default.div`
7005
7005
  display: flex;
7006
7006
  justify-content: center;
7007
7007
  align-items: center;
7008
+
7009
+ [data-loading=true] > & {
7010
+ pointer-events: auto;
7011
+ }
7008
7012
  `;
7009
7013
  function PageLoader(_ref) {
7010
7014
  let {
@@ -11389,12 +11393,11 @@ const Input = /*#__PURE__*/React.forwardRef(function Input(_a, ref) {
11389
11393
  }, className, variant);
11390
11394
  const globalVariants = useVariants('input', inputVariants);
11391
11395
  variants = variants || globalVariants;
11392
- return jsxRuntime.jsxs(StyledInputContainer, Object.assign({
11396
+ return jsxRuntime.jsxs(StyledInputContainer, {
11393
11397
  className: classNames,
11394
11398
  variant: variant,
11395
11399
  variants: variants,
11396
- "data-focus-visible": focus || undefined
11397
- }, props, {
11400
+ "data-focus-visible": focus || undefined,
11398
11401
  children: [before, jsxRuntime.jsx(StyledInput, Object.assign({
11399
11402
  className: 'input',
11400
11403
  ref: ref,
@@ -11407,7 +11410,7 @@ const Input = /*#__PURE__*/React.forwardRef(function Input(_a, ref) {
11407
11410
  onFocus: onFocus_,
11408
11411
  onBlur: onBlur_
11409
11412
  }, props)), after]
11410
- }));
11413
+ });
11411
11414
  });
11412
11415
 
11413
11416
  const RadioContext = /*#__PURE__*/React.createContext(null);
@@ -12632,6 +12635,14 @@ function Select$1(_a) {
12632
12635
  // console.log('onChange_.setOuterValue', outerValue);
12633
12636
  }
12634
12637
  };
12638
+ /*
12639
+ const store = Ariakit.useSelectStore({
12640
+ // value: value,
12641
+ defaultValue: defaultValue,
12642
+ setValue: (value) => onChange_(value),
12643
+ });
12644
+ console.log('Select', value, defaultValue);
12645
+ */
12635
12646
  const onBlur_ = event => {
12636
12647
  onBlur && onBlur(event);
12637
12648
  };
@@ -13017,12 +13028,21 @@ const StyledFieldError = styled__default.default.div`
13017
13028
  function FieldError(_a) {
13018
13029
  var {
13019
13030
  state,
13031
+ label,
13020
13032
  className,
13021
13033
  variant = 'default',
13022
13034
  variants
13023
13035
  } = _a,
13024
- props = __rest(_a, ["state", "className", "variant", "variants"]);
13025
- const label = bomMixerHooks.useLabel();
13036
+ props = __rest(_a, ["state", "label", "className", "variant", "variants"]);
13037
+ const errorLabel = bomMixerHooks.useLabel();
13038
+ const getErrorLabel = error => {
13039
+ const text = label ? errorLabel(`error.${error.key}.label`, {
13040
+ label
13041
+ }) || errorLabel(`error.${error.key}`, {
13042
+ label
13043
+ }) : errorLabel(`error.${error.key}`);
13044
+ return text;
13045
+ };
13026
13046
  const classNames = bomCore.getClassNames('field-error', className, variant);
13027
13047
  const globalVariants = useVariants('fieldError', fieldErrorVariants);
13028
13048
  variants = variants || globalVariants;
@@ -13030,9 +13050,10 @@ function FieldError(_a) {
13030
13050
  children: state.flags.touched && state.errors.map(error => jsxRuntime.jsx(StyledFieldError, Object.assign({
13031
13051
  className: classNames,
13032
13052
  variant: variant,
13033
- variants: variants
13053
+ variants: variants,
13054
+ role: "alert"
13034
13055
  }, props, {
13035
- children: label(`error.${error.key}`)
13056
+ children: getErrorLabel(error)
13036
13057
  }), error.key))
13037
13058
  });
13038
13059
  }
@@ -13062,6 +13083,7 @@ function FieldAccept(_ref) {
13062
13083
  const onFocus = _ => {
13063
13084
  setFocus(true);
13064
13085
  };
13086
+ const controlLabel = control.label && label(control.label);
13065
13087
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13066
13088
  type: "hidden",
13067
13089
  value: state.value ? 'true' : 'false'
@@ -13081,7 +13103,9 @@ function FieldAccept(_ref) {
13081
13103
  value: "true",
13082
13104
  name: uniqueNameTrue,
13083
13105
  id: uniqueNameTrue,
13084
- disabled: state.flags.disabled || state.flags.readonly
13106
+ disabled: state.flags.disabled || state.flags.readonly,
13107
+ "aria-invalid": state.flags.invalid,
13108
+ "aria-describedby": `${uniqueName}-error`
13085
13109
  }), label('form.accept.true')]
13086
13110
  }), jsxRuntime.jsxs(Label, {
13087
13111
  name: uniqueNameFalse,
@@ -13093,10 +13117,11 @@ function FieldAccept(_ref) {
13093
13117
  disabled: state.flags.disabled || state.flags.readonly
13094
13118
  }), label('form.accept.false')]
13095
13119
  })]
13096
- }), control.label && jsxRuntime.jsx(Text, {
13097
- children: label(control.label)
13120
+ }), controlLabel && jsxRuntime.jsx(Text, {
13121
+ children: controlLabel
13098
13122
  }), jsxRuntime.jsx(FieldError, {
13099
- state: state
13123
+ state: state,
13124
+ id: `${uniqueName}-error`
13100
13125
  })]
13101
13126
  });
13102
13127
  }
@@ -13170,14 +13195,15 @@ function FieldAutocomplete(_ref) {
13170
13195
  }
13171
13196
  // eslint-disable-next-line react-hooks/exhaustive-deps
13172
13197
  }, []);
13198
+ const controlLabel = control.label && label(control.label);
13173
13199
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13174
13200
  type: "hidden",
13175
13201
  value: bomMixerForms.valueToString(state.value)
13176
13202
  }) : jsxRuntime.jsxs(Field, {
13177
13203
  state: state,
13178
- children: [jsxRuntime.jsx(Label, {
13204
+ children: [controlLabel && jsxRuntime.jsx(Label, {
13179
13205
  htmlFor: uniqueName,
13180
- children: control.label && label(control.label)
13206
+ children: controlLabel
13181
13207
  }), jsxRuntime.jsx(Autocomplete, {
13182
13208
  id: uniqueName,
13183
13209
  name: uniqueName,
@@ -13190,7 +13216,8 @@ function FieldAutocomplete(_ref) {
13190
13216
  background: "var(--color-neutral-100)",
13191
13217
  overflow: "hidden"
13192
13218
  }), jsxRuntime.jsx(FieldError, {
13193
- state: state
13219
+ state: state,
13220
+ id: `${uniqueName}-error`
13194
13221
  })]
13195
13222
  });
13196
13223
  }
@@ -13219,16 +13246,17 @@ function FieldCard(_a) {
13219
13246
  const onFocus = _ => {
13220
13247
  setFocus(true);
13221
13248
  };
13249
+ const controlLabel = control.label && label(control.label);
13222
13250
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13223
13251
  type: "hidden",
13224
13252
  value: state.value ? state.value.toString() : ''
13225
13253
  }) : jsxRuntime.jsxs(Field, Object.assign({
13226
13254
  state: state
13227
13255
  }, props, {
13228
- children: [jsxRuntime.jsx(Label, {
13256
+ children: [controlLabel && jsxRuntime.jsx(Label, {
13229
13257
  htmlFor: uniqueName,
13230
13258
  margin: "0",
13231
- children: control.label && label(control.label)
13259
+ children: controlLabel
13232
13260
  }), jsxRuntime.jsx(RadioCard.Group, {
13233
13261
  id: uniqueName,
13234
13262
  name: uniqueName,
@@ -13248,7 +13276,9 @@ function FieldCard(_a) {
13248
13276
  })]
13249
13277
  }, option.id))
13250
13278
  }), jsxRuntime.jsx(FieldError, {
13251
- state: state
13279
+ state: state,
13280
+ label: controlLabel,
13281
+ id: `${uniqueName}-error`
13252
13282
  })]
13253
13283
  }));
13254
13284
  }
@@ -13274,6 +13304,7 @@ function FieldCheckbox(_a) {
13274
13304
  const onFocus = _ => {
13275
13305
  setFocus(true);
13276
13306
  };
13307
+ const controlLabel = control.label && label(control.label);
13277
13308
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13278
13309
  type: "hidden",
13279
13310
  value: state.value ? state.value.toString() : ''
@@ -13290,14 +13321,17 @@ function FieldCheckbox(_a) {
13290
13321
  onBlur: onBlur,
13291
13322
  onFocus: onFocus,
13292
13323
  disabled: state.flags.disabled || state.flags.readonly,
13293
- checked: state.value === true
13294
- }), control.label && jsxRuntime.jsx("span", {
13324
+ checked: state.value === true,
13325
+ "aria-invalid": state.flags.invalid,
13326
+ "aria-describedby": `${uniqueName}-error`
13327
+ }), controlLabel && jsxRuntime.jsx("span", {
13295
13328
  dangerouslySetInnerHTML: {
13296
- __html: label(control.label)
13329
+ __html: controlLabel
13297
13330
  }
13298
13331
  })]
13299
13332
  }), jsxRuntime.jsx(FieldError, {
13300
- state: state
13333
+ state: state,
13334
+ id: `${uniqueName}-error`
13301
13335
  })]
13302
13336
  }));
13303
13337
  }
@@ -13324,6 +13358,7 @@ function FieldCombobox(_ref) {
13324
13358
  setValue(option);
13325
13359
  };
13326
13360
  // console.log('FieldCombobox', control.value);
13361
+ const controlLabel = control.label && label(control.label);
13327
13362
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13328
13363
  type: "hidden",
13329
13364
  value: bomMixerForms.valueToString(state.value)
@@ -13336,12 +13371,14 @@ function FieldCombobox(_ref) {
13336
13371
  onChange: onChange,
13337
13372
  onFocus: onFocus,
13338
13373
  onBlur: onBlur,
13339
- children: [control.label && jsxRuntime.jsx(Combobox.Label, {
13340
- children: label(control.label)
13374
+ children: [controlLabel && jsxRuntime.jsx(Combobox.Label, {
13375
+ children: controlLabel
13341
13376
  }), jsxRuntime.jsx(Combobox.Combobox, {
13342
13377
  after: icon || jsxRuntime.jsx(bomMixerIcons.IconChevronDown, {}),
13343
13378
  autoSelect: true,
13344
- placeholder: control.placeholder && label(control.placeholder)
13379
+ placeholder: control.placeholder && label(control.placeholder),
13380
+ "aria-invalid": state.flags.invalid,
13381
+ "aria-describedby": `${uniqueName}-error`
13345
13382
  }), jsxRuntime.jsx(Combobox.Popover, {
13346
13383
  gutter: 4,
13347
13384
  sameWidth: true,
@@ -13360,7 +13397,9 @@ function FieldCombobox(_ref) {
13360
13397
  }
13361
13398
  })]
13362
13399
  }), ((_a = control.customData) === null || _a === void 0 ? void 0 : _a.after) && control.customData.after, jsxRuntime.jsx(FieldError, {
13363
- state: state
13400
+ state: state,
13401
+ label: controlLabel,
13402
+ id: `${uniqueName}-error`
13364
13403
  })]
13365
13404
  });
13366
13405
  }
@@ -13403,6 +13442,7 @@ function FieldConsent(_ref) {
13403
13442
  };
13404
13443
  const detail = (_a = control.customData) === null || _a === void 0 ? void 0 : _a.detail;
13405
13444
  const [active, setActive] = React.useState(false);
13445
+ const controlLabel = control.label && label(control.label);
13406
13446
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13407
13447
  type: "hidden",
13408
13448
  value: state.value ? 'true' : 'false'
@@ -13415,9 +13455,9 @@ function FieldConsent(_ref) {
13415
13455
  borderBottom: "1px solid var(--color-neutral-200)",
13416
13456
  children: [jsxRuntime.jsxs("div", {
13417
13457
  className: "field-consent__description",
13418
- children: [control.label && jsxRuntime.jsx("span", {
13458
+ children: [controlLabel && jsxRuntime.jsx("span", {
13419
13459
  dangerouslySetInnerHTML: {
13420
- __html: label(control.label)
13460
+ __html: controlLabel
13421
13461
  }
13422
13462
  }), detail && jsxRuntime.jsxs(jsxRuntime.Fragment, {
13423
13463
  children: ["\u00A0", jsxRuntime.jsx(Button, {
@@ -13442,7 +13482,9 @@ function FieldConsent(_ref) {
13442
13482
  onBlur: onTrueBlur,
13443
13483
  onFocus: onTrueFocus,
13444
13484
  disabled: state.flags.disabled || state.flags.readonly,
13445
- checked: state.value === true
13485
+ checked: state.value === true,
13486
+ "aria-invalid": state.flags.invalid,
13487
+ "aria-describedby": `${uniqueName}-error`
13446
13488
  }), jsxRuntime.jsx("span", {
13447
13489
  children: label('form.consent.true')
13448
13490
  })]
@@ -13462,7 +13504,8 @@ function FieldConsent(_ref) {
13462
13504
  })]
13463
13505
  })]
13464
13506
  }), jsxRuntime.jsx(FieldError, {
13465
- state: state
13507
+ state: state,
13508
+ id: `${uniqueName}-error`
13466
13509
  })]
13467
13510
  });
13468
13511
  }
@@ -13478,6 +13521,7 @@ function FieldImplicit(_a) {
13478
13521
  const label = bomMixerHooks.useLabel();
13479
13522
  const uniqueName = `${control.name}-${uid}`;
13480
13523
  const [state, setValue, setTouched] = bomMixerForms.useControl(control);
13524
+ const controlLabel = control.label && label(control.label);
13481
13525
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13482
13526
  type: "hidden",
13483
13527
  value: state.value || ''
@@ -13491,9 +13535,9 @@ function FieldImplicit(_a) {
13491
13535
  id: uniqueName,
13492
13536
  name: uniqueName,
13493
13537
  value: String(state.value)
13494
- }), control.label && jsxRuntime.jsx("span", {
13538
+ }), controlLabel && jsxRuntime.jsx("span", {
13495
13539
  dangerouslySetInnerHTML: {
13496
- __html: label(control.label)
13540
+ __html: controlLabel
13497
13541
  }
13498
13542
  })]
13499
13543
  }), jsxRuntime.jsx(FieldError, {
@@ -13545,6 +13589,7 @@ function FieldPassword(_ref) {
13545
13589
  const onToggle = () => {
13546
13590
  setType(type === 'password' ? 'text' : 'password');
13547
13591
  };
13592
+ const controlLabel = control.label && label(control.label);
13548
13593
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13549
13594
  type: "hidden",
13550
13595
  value: state.value || ''
@@ -13553,9 +13598,9 @@ function FieldPassword(_ref) {
13553
13598
  className: bomCore.getClassNames({
13554
13599
  required: control.required && !control.disabled
13555
13600
  }),
13556
- children: [jsxRuntime.jsx(Label, {
13601
+ children: [controlLabel && jsxRuntime.jsx(Label, {
13557
13602
  htmlFor: uniqueName,
13558
- children: control.label && label(control.label)
13603
+ children: controlLabel
13559
13604
  }), jsxRuntime.jsx(Input, {
13560
13605
  width: "100%",
13561
13606
  ref: ref,
@@ -13567,15 +13612,20 @@ function FieldPassword(_ref) {
13567
13612
  onChange: onChange,
13568
13613
  onBlur: onBlur,
13569
13614
  onFocus: onFocus,
13615
+ required: state.errors.some(x => x.key === 'required'),
13570
13616
  disabled: state.flags.disabled,
13571
13617
  readOnly: state.flags.readonly,
13572
- autoComplete: control.name,
13618
+ "aria-invalid": state.flags.invalid,
13619
+ "aria-describedby": `${uniqueName}-error`,
13620
+ autoComplete: "on",
13573
13621
  after: jsxRuntime.jsx(Button, {
13574
13622
  onClick: () => onToggle(),
13575
13623
  children: icon(type)
13576
13624
  })
13577
13625
  }), jsxRuntime.jsx(FieldError, {
13578
- state: state
13626
+ state: state,
13627
+ label: controlLabel,
13628
+ id: `${uniqueName}-error`
13579
13629
  })]
13580
13630
  });
13581
13631
  }
@@ -13609,6 +13659,7 @@ function FieldRadio(_a) {
13609
13659
  const onFocus = _ => {
13610
13660
  setFocus(true);
13611
13661
  };
13662
+ const controlLabel = control.label && label(control.label);
13612
13663
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13613
13664
  type: "hidden",
13614
13665
  value: bomMixerForms.valueToString(state.value)
@@ -13620,8 +13671,8 @@ function FieldRadio(_a) {
13620
13671
  onChange: onChange,
13621
13672
  onBlur: onBlur,
13622
13673
  onFocus: onFocus,
13623
- children: [control.label && jsxRuntime.jsx(Radio.GroupLabel, {
13624
- children: label(control.label)
13674
+ children: [controlLabel && jsxRuntime.jsx(Radio.GroupLabel, {
13675
+ children: controlLabel
13625
13676
  }), (_b = control.options) === null || _b === void 0 ? void 0 : _b.map(option => {
13626
13677
  var _a;
13627
13678
  return jsxRuntime.jsxs(Label, {
@@ -13636,7 +13687,9 @@ function FieldRadio(_a) {
13636
13687
  }, getUniqueName(option));
13637
13688
  })]
13638
13689
  }), jsxRuntime.jsx(FieldError, {
13639
- state: state
13690
+ state: state,
13691
+ label: controlLabel,
13692
+ id: `${uniqueName}-error`
13640
13693
  })]
13641
13694
  }));
13642
13695
  }
@@ -13662,6 +13715,7 @@ function FieldSelect(_ref) {
13662
13715
  const onChange = option => {
13663
13716
  setValue(option);
13664
13717
  };
13718
+ const controlLabel = control.label && label(control.label);
13665
13719
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13666
13720
  type: "hidden",
13667
13721
  value: bomMixerForms.valueToString(state.value)
@@ -13678,10 +13732,14 @@ function FieldSelect(_ref) {
13678
13732
  onChange: onChange,
13679
13733
  onFocus: onFocus,
13680
13734
  onBlur: onBlur,
13681
- children: [control.label && jsxRuntime.jsx(Select.Label, {
13682
- children: label(control.label)
13735
+ children: [controlLabel && jsxRuntime.jsx(Select.Label, {
13736
+ htmlFor: uniqueName,
13737
+ children: controlLabel
13683
13738
  }), jsxRuntime.jsx(Select.Select, {
13684
- disabled: control.disabled,
13739
+ required: state.errors.some(x => x.key === 'required'),
13740
+ disabled: state.flags.disabled || state.flags.readonly,
13741
+ "aria-invalid": state.flags.invalid,
13742
+ "aria-describedby": `${uniqueName}-error`,
13685
13743
  children: icon || jsxRuntime.jsx(bomMixerIcons.IconChevronDown, {})
13686
13744
  }), jsxRuntime.jsx(Select.Popover, {
13687
13745
  gutter: 4,
@@ -13692,12 +13750,15 @@ function FieldSelect(_ref) {
13692
13750
  children: option.name
13693
13751
  }, i))
13694
13752
  }), jsxRuntime.jsx(FieldError, {
13695
- state: state
13753
+ state: state,
13754
+ label: controlLabel,
13755
+ id: `${uniqueName}-error`
13696
13756
  })]
13697
13757
  }), ((_a = control.customData) === null || _a === void 0 ? void 0 : _a.after) && control.customData.after]
13698
13758
  });
13699
13759
  }
13700
13760
 
13761
+ const INPUT_TYPES = Object.fromEntries(['button', 'checkbox', 'color', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week'].map(k => [k, k]));
13701
13762
  function FieldText(_a) {
13702
13763
  var {
13703
13764
  control,
@@ -13736,6 +13797,8 @@ function FieldText(_a) {
13736
13797
  const onFocus = _ => {
13737
13798
  setFocus(true);
13738
13799
  };
13800
+ const type = INPUT_TYPES[control.schema] || 'text';
13801
+ const controlLabel = control.label && label(control.label);
13739
13802
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13740
13803
  type: "hidden",
13741
13804
  value: state.value || ''
@@ -13744,27 +13807,33 @@ function FieldText(_a) {
13744
13807
  className: bomCore.getClassNames({
13745
13808
  required: control.required && !control.disabled
13746
13809
  }),
13747
- children: [jsxRuntime.jsx(Label, {
13810
+ children: [controlLabel && jsxRuntime.jsx(Label, {
13748
13811
  htmlFor: uniqueName,
13749
- children: control.label && label(control.label)
13812
+ children: controlLabel
13750
13813
  }), jsxRuntime.jsx(Input, Object.assign({
13751
13814
  width: "100%"
13752
13815
  }, props, {
13753
13816
  ref: ref,
13754
13817
  id: uniqueName,
13755
13818
  name: uniqueName,
13819
+ type: type,
13756
13820
  placeholder: label(control.placeholder || control.label || ''),
13757
13821
  defaultValue: state.value || '',
13758
13822
  onChange: onChange,
13759
13823
  onBlur: onBlur,
13760
13824
  onFocus: onFocus,
13825
+ required: state.errors.some(x => x.key === 'required'),
13761
13826
  disabled: state.flags.disabled,
13762
13827
  readOnly: state.flags.readonly,
13828
+ "aria-invalid": state.flags.invalid,
13829
+ "aria-describedby": `${uniqueName}-error`,
13763
13830
  before: before,
13764
13831
  after: after,
13765
- autoComplete: control.name
13832
+ autoComplete: "on"
13766
13833
  })), jsxRuntime.jsx(FieldError, {
13767
- state: state
13834
+ state: state,
13835
+ label: controlLabel,
13836
+ id: `${uniqueName}-error`
13768
13837
  })]
13769
13838
  });
13770
13839
  }
@@ -13790,14 +13859,15 @@ function FieldTextArea(_ref) {
13790
13859
  const onFocus = _ => {
13791
13860
  setFocus(true);
13792
13861
  };
13862
+ const controlLabel = control.label && label(control.label);
13793
13863
  return state.flags.hidden ? jsxRuntime.jsx("input", {
13794
13864
  type: "hidden",
13795
13865
  value: state.value || ''
13796
13866
  }) : jsxRuntime.jsxs(Field, {
13797
13867
  state: state,
13798
- children: [jsxRuntime.jsx(Label, {
13868
+ children: [controlLabel && jsxRuntime.jsx(Label, {
13799
13869
  htmlFor: uniqueName,
13800
- children: control.label && label(control.label)
13870
+ children: controlLabel
13801
13871
  }), jsxRuntime.jsx(TextArea, {
13802
13872
  id: uniqueName,
13803
13873
  name: uniqueName,
@@ -13806,11 +13876,16 @@ function FieldTextArea(_ref) {
13806
13876
  onChange: onChange,
13807
13877
  onBlur: onBlur,
13808
13878
  onFocus: onFocus,
13879
+ required: state.errors.some(x => x.key === 'required'),
13809
13880
  disabled: state.flags.disabled,
13810
13881
  readOnly: state.flags.readonly,
13882
+ "aria-invalid": state.flags.invalid,
13883
+ "aria-describedby": `${uniqueName}-error`,
13811
13884
  width: "100%"
13812
13885
  }), jsxRuntime.jsx(FieldError, {
13813
- state: state
13886
+ state: state,
13887
+ label: controlLabel,
13888
+ id: `${uniqueName}-error`
13814
13889
  })]
13815
13890
  });
13816
13891
  }
@@ -14703,6 +14778,7 @@ exports.Grid = Grid;
14703
14778
  exports.GridRow = GridRow;
14704
14779
  exports.Header = Header;
14705
14780
  exports.Highlight = Highlight;
14781
+ exports.INPUT_TYPES = INPUT_TYPES;
14706
14782
  exports.Icons = Icons;
14707
14783
  exports.InfiniteLoader = InfiniteLoader;
14708
14784
  exports.Input = Input;