@websolutespa/bom-mixer-ui 1.8.15 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/index.js +140 -31
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/esm/components/submit/submit.js +11 -0
  5. package/dist/esm/components/submit/submit.js.map +1 -0
  6. package/dist/esm/fields/field-accept.js +1 -0
  7. package/dist/esm/fields/field-accept.js.map +1 -1
  8. package/dist/esm/fields/field-autocomplete.js +1 -0
  9. package/dist/esm/fields/field-autocomplete.js.map +1 -1
  10. package/dist/esm/fields/field-card.js +1 -0
  11. package/dist/esm/fields/field-card.js.map +1 -1
  12. package/dist/esm/fields/field-checkbox.js +1 -0
  13. package/dist/esm/fields/field-checkbox.js.map +1 -1
  14. package/dist/esm/fields/field-combobox.js +5 -3
  15. package/dist/esm/fields/field-combobox.js.map +1 -1
  16. package/dist/esm/fields/field-password.js +1 -0
  17. package/dist/esm/fields/field-password.js.map +1 -1
  18. package/dist/esm/fields/field-radio.js +1 -0
  19. package/dist/esm/fields/field-radio.js.map +1 -1
  20. package/dist/esm/fields/field-select.js +1 -0
  21. package/dist/esm/fields/field-select.js.map +1 -1
  22. package/dist/esm/fields/field-text.js +1 -0
  23. package/dist/esm/fields/field-text.js.map +1 -1
  24. package/dist/esm/fields/field-textarea.js +1 -0
  25. package/dist/esm/fields/field-textarea.js.map +1 -1
  26. package/dist/esm/forms/combobox/combobox-combobox.js +9 -0
  27. package/dist/esm/forms/combobox/combobox-combobox.js.map +1 -1
  28. package/dist/esm/forms/combobox/combobox.js +22 -5
  29. package/dist/esm/forms/combobox/combobox.js.map +1 -1
  30. package/dist/esm/forms/fieldset/fieldset.js +54 -0
  31. package/dist/esm/forms/fieldset/fieldset.js.map +1 -0
  32. package/dist/esm/forms/form/form.js +26 -5
  33. package/dist/esm/forms/form/form.js.map +1 -1
  34. package/dist/esm/forms/form-tester/form-tester.js +28 -20
  35. package/dist/esm/forms/form-tester/form-tester.js.map +1 -1
  36. package/dist/esm/index.js +2 -0
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/layouts/layout-default/layout-default.js +1 -0
  39. package/dist/esm/layouts/layout-default/layout-default.js.map +1 -1
  40. package/dist/esm/layouts/layout-fixed/layout-fixed.js +1 -0
  41. package/dist/esm/layouts/layout-fixed/layout-fixed.js.map +1 -1
  42. package/dist/esm/sections/icons/icons.js +1 -0
  43. package/dist/esm/sections/icons/icons.js.map +1 -1
  44. package/dist/types/components/index.d.ts +1 -0
  45. package/dist/types/components/index.d.ts.map +1 -1
  46. package/dist/types/components/submit/submit.d.ts +3 -0
  47. package/dist/types/components/submit/submit.d.ts.map +1 -0
  48. package/dist/types/fields/field-combobox.d.ts.map +1 -1
  49. package/dist/types/forms/combobox/combobox-combobox.d.ts.map +1 -1
  50. package/dist/types/forms/combobox/combobox.d.ts.map +1 -1
  51. package/dist/types/forms/fieldset/fieldset.d.ts +11 -0
  52. package/dist/types/forms/fieldset/fieldset.d.ts.map +1 -0
  53. package/dist/types/forms/form/form.d.ts +2 -2
  54. package/dist/types/forms/form/form.d.ts.map +1 -1
  55. package/dist/types/forms/form-tester/form-tester.d.ts +14 -8
  56. package/dist/types/forms/form-tester/form-tester.d.ts.map +1 -1
  57. package/dist/types/forms/index.d.ts +1 -0
  58. package/dist/types/forms/index.d.ts.map +1 -1
  59. package/package.json +1 -1
  60. package/src/components/index.ts +1 -0
  61. package/src/components/submit/submit.tsx +5 -0
  62. package/src/fields/field-combobox.tsx +4 -1
  63. package/src/forms/combobox/combobox-combobox.tsx +11 -1
  64. package/src/forms/combobox/combobox.tsx +21 -4
  65. package/src/forms/fieldset/fieldset.tsx +70 -0
  66. package/src/forms/form/form.tsx +25 -6
  67. package/src/forms/form-tester/form-tester.tsx +70 -54
  68. package/src/forms/index.ts +1 -0
  69. package/src/theme/global.vars.scss +220 -220
  70. package/src/theme/global.vars.ts +650 -650
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @websolutespa/bom-mixer-ui
2
2
 
3
+ ## 1.9.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Modified: FieldCombobox, Combobox, FormTester, Form
8
+ - Updated dependencies
9
+ - @websolutespa/bom-mixer-forms@1.9.1
10
+
11
+ ## 1.9.0
12
+
13
+ ### Minor Changes
14
+
15
+ - Added: Fieldset, Submit
16
+ - Modified: FieldCombobox, FormTester, Form
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies
21
+ - @websolutespa/bom-mixer-forms@1.9.0
22
+
3
23
  ## 1.8.15
4
24
 
5
25
  ### Patch Changes
package/dist/cjs/index.js CHANGED
@@ -7559,6 +7559,12 @@ const Skeleton = _a => {
7559
7559
  }));
7560
7560
  };
7561
7561
 
7562
+ function Submit(props) {
7563
+ return jsxRuntime.jsx(Button, Object.assign({}, props, {
7564
+ type: "submit"
7565
+ }));
7566
+ }
7567
+
7562
7568
  const SvgAnimationStrategy = {
7563
7569
  Default: 'default',
7564
7570
  // autoplay
@@ -9363,28 +9369,45 @@ function Combobox$1(_a) {
9363
9369
  const value = outerToInnerSingleValue(outerValue);
9364
9370
  const defaultValue = outerToInnerSingleValue(outerDefaultValue) || '';
9365
9371
  const [innerValue, setInnerValue] = React.useState(value || defaultValue);
9366
- const selectedValue = outerToInnerValue(outerSelectedValue);
9372
+ outerToInnerValue(outerSelectedValue);
9367
9373
  const defaultSelectedValue = outerToInnerValue(outerDefaultSelectedValue) || (multiple ? [] : '');
9368
9374
  const [innerSelectedValue, setInnerSelectedValue] = React.useState();
9369
9375
  // console.log('value', value, 'defaultValue', defaultValue);
9370
9376
  React.useEffect(() => {
9377
+ const value = outerToInnerSingleValue(outerValue);
9371
9378
  if (innerValue !== value) {
9372
9379
  setInnerValue(value);
9373
9380
  }
9374
- }, [innerValue, value]);
9381
+ }, [innerValue, outerValue]);
9375
9382
  React.useEffect(() => {
9383
+ const selectedValue = outerToInnerValue(outerSelectedValue);
9376
9384
  if (innerSelectedValue !== selectedValue) {
9385
+ // const value = Array.isArray(selectedValue) ? selectedValue[0] : selectedValue;
9386
+ // setInnerValue(value);
9377
9387
  setInnerSelectedValue(selectedValue);
9388
+ if (selectedValue) {
9389
+ setInnerValue(Array.isArray(selectedValue) ? selectedValue[0] : selectedValue);
9390
+ } else {
9391
+ setInnerValue('');
9392
+ }
9393
+ // console.log('Combobox', innerSelectedValue, selectedValue);
9378
9394
  }
9379
- }, [innerSelectedValue, selectedValue]);
9395
+ }, [innerSelectedValue, outerSelectedValue]);
9380
9396
  const onBlur_ = event => {
9397
+ /*
9398
+ if (selectedValue) {
9399
+ setInnerValue(Array.isArray(selectedValue) ? selectedValue[0] : selectedValue);
9400
+ }
9401
+ */
9381
9402
  onBlur && onBlur(event);
9382
9403
  };
9383
9404
  const onFocus_ = event => {
9384
9405
  // console.log('onFocus_', selectedValue);
9406
+ /*
9385
9407
  if (selectedValue) {
9386
9408
  setInnerValue('');
9387
9409
  }
9410
+ */
9388
9411
  onFocus && onFocus(event);
9389
9412
  };
9390
9413
  const onSetValue = value => {
@@ -9402,11 +9425,11 @@ function Combobox$1(_a) {
9402
9425
  const globalVariants = useVariants('combobox', comboboxVariants);
9403
9426
  variants = variants || globalVariants;
9404
9427
  return jsxRuntime.jsx(Ariakit__namespace.ComboboxProvider, Object.assign({
9405
- value: innerValue,
9406
9428
  defaultValue: defaultValue,
9429
+ value: innerValue,
9407
9430
  setValue: onSetValue,
9408
- selectedValue: innerSelectedValue,
9409
9431
  defaultSelectedValue: defaultSelectedValue,
9432
+ selectedValue: innerSelectedValue,
9410
9433
  setSelectedValue: onSetSelectedValue
9411
9434
  }, props, {
9412
9435
  children: jsxRuntime.jsx(ComboboxContext.Provider, {
@@ -9518,6 +9541,13 @@ const ComboboxCombobox = /*#__PURE__*/React.forwardRef(function ComboboxCombobox
9518
9541
  if (!store) {
9519
9542
  return;
9520
9543
  }
9544
+ const onPointerDown = () => {
9545
+ // store.setValue('');
9546
+ };
9547
+ const onBlur = () => {
9548
+ // store.setValue(Array.isArray(selectedValue) ? selectedValue[0] : selectedValue);
9549
+ };
9550
+ // console.log('selectedValue', selectedValue);
9521
9551
  const classNames = bomCore.getClassNames('combobox__combobox', {
9522
9552
  empty: isEmptyValue(selectedValue)
9523
9553
  }, className);
@@ -9528,6 +9558,8 @@ const ComboboxCombobox = /*#__PURE__*/React.forwardRef(function ComboboxCombobox
9528
9558
  variants: variants || context.variants,
9529
9559
  children: jsxRuntime.jsxs("div", {
9530
9560
  className: "combobox__input-group",
9561
+ onPointerDown: onPointerDown,
9562
+ onBlur: onBlur,
9531
9563
  children: [before, jsxRuntime.jsx(ComboboxInputStyle, Object.assign({
9532
9564
  ref: ref,
9533
9565
  className: bomCore.getClassNames('combobox__input'),
@@ -10365,6 +10397,51 @@ const Field = /*#__PURE__*/React.forwardRef((_a, ref) => {
10365
10397
  });
10366
10398
  Field.displayName = 'Field';
10367
10399
 
10400
+ // ${props => getVariantKey('fieldset', props.variant, props.variants)}
10401
+ const StyledFieldset = styled__default.default.fieldset`
10402
+ display: flex;
10403
+ flex-wrap: wrap;
10404
+ gap: 1rem;
10405
+
10406
+ & > * {
10407
+ flex: 1 1 340px;
10408
+ }
10409
+
10410
+ // reset
10411
+ border: 0;
10412
+ padding: 0.001em 0 0 0;
10413
+ margin: 0;
10414
+ min-width: 0;
10415
+
10416
+ legend {
10417
+ padding: 0;
10418
+ display: table;
10419
+ }
10420
+
10421
+ ${props => getCssResponsive(props)}
10422
+ `;
10423
+ const Fieldset = /*#__PURE__*/React.forwardRef(function Fieldset(_a, ref) {
10424
+ var {
10425
+ as = 'fieldset',
10426
+ className,
10427
+ before,
10428
+ children,
10429
+ after
10430
+ } = _a,
10431
+ // variant = 'default',
10432
+ // variants,
10433
+ props = __rest(_a, ["as", "className", "before", "children", "after"]);
10434
+ // const globalVariants = useVariants('fieldset', fieldsetVariants);
10435
+ // variants = variants || globalVariants;
10436
+ // const classNames = getClassNames('fieldset', className, variant);
10437
+ const classNames = bomCore.getClassNames('fieldset', className);
10438
+ return jsxRuntime.jsxs(StyledFieldset, Object.assign({
10439
+ className: classNames
10440
+ }, props, {
10441
+ children: [before, children, after]
10442
+ }));
10443
+ });
10444
+
10368
10445
  const CssFormErrorDefault = styled.css`
10369
10446
  font-size: var(--form-error-font-size, 0.9rem);
10370
10447
  font-weight: var(--form-error-font-weight, 500);
@@ -10446,33 +10523,42 @@ const StyledFormTester = styled__default.default.div`
10446
10523
  ${props => getVariant(props.variant, props.variants)}
10447
10524
  ${props => getCssResponsive(props)}
10448
10525
  `;
10449
- const FormTester = /*#__PURE__*/React.forwardRef((_a, ref) => {
10526
+ const FormTester = /*#__PURE__*/React.forwardRef(function FormTester(_a, ref) {
10450
10527
  var {
10451
10528
  className,
10452
10529
  form,
10453
- onReset,
10454
- onTest,
10530
+ test,
10455
10531
  variant = 'default',
10456
10532
  variants
10457
10533
  } = _a,
10458
- props = __rest(_a, ["className", "form", "onReset", "onTest", "variant", "variants"]);
10534
+ props = __rest(_a, ["className", "form", "test", "variant", "variants"]);
10459
10535
  const label = bomMixerHooks.useLabel();
10460
10536
  const globalVariants = useVariants('formTester', formTesterVariants);
10461
10537
  variants = variants || globalVariants;
10538
+ const [json, setJson] = React.useState(form ? JSON.stringify(form.value, null, 2) : null);
10539
+ React.useEffect(() => {
10540
+ const onChange = value => {
10541
+ // console.log('FormTesterComponent.onChange', value);
10542
+ setJson(JSON.stringify(value, null, 2));
10543
+ };
10544
+ form.on('change', onChange);
10545
+ return () => form.off('change', onChange);
10546
+ }, [form]);
10547
+ const onReset = () => {
10548
+ form.reset();
10549
+ props.onReset && props.onReset();
10550
+ };
10551
+ const onTest = () => {
10552
+ form.patch(test);
10553
+ props.onTest && props.onTest();
10554
+ };
10555
+ const classNames = bomCore.getClassNames('input', className, variant);
10462
10556
  const {
10463
10557
  enabled
10464
10558
  } = useFormTester();
10465
10559
  if (!enabled) {
10466
10560
  return null;
10467
10561
  }
10468
- const onReset_ = event => {
10469
- onReset && onReset(event);
10470
- };
10471
- const onTest_ = event => {
10472
- onTest && onTest(event);
10473
- };
10474
- const json = form ? JSON.stringify(form.value, null, 2) : null;
10475
- const classNames = bomCore.getClassNames('input', className, variant);
10476
10562
  return jsxRuntime.jsx(StyledFormTester, Object.assign({
10477
10563
  ref: ref,
10478
10564
  className: classNames,
@@ -10489,25 +10575,25 @@ const FormTester = /*#__PURE__*/React.forwardRef((_a, ref) => {
10489
10575
  }), jsxRuntime.jsx(Text, {
10490
10576
  variant: "paragraph30",
10491
10577
  lineHeight: "1.3",
10492
- children: "this component is visible only during development."
10578
+ children: "this component is only visible during development."
10493
10579
  })]
10494
10580
  }), json && jsxRuntime.jsx("code", {
10495
10581
  children: json
10496
- }), (onReset || onTest) && jsxRuntime.jsxs(Flex.Row, {
10582
+ }), jsxRuntime.jsxs(Flex.Row, {
10497
10583
  className: "actions",
10498
10584
  justifyContent: "space-between",
10499
10585
  children: [jsxRuntime.jsx(Flex, {
10500
- children: onReset && jsxRuntime.jsx(Button, {
10586
+ children: jsxRuntime.jsx(Button, {
10501
10587
  variant: "outline",
10502
10588
  size: "sm",
10503
- onClick: onReset_,
10589
+ onClick: () => onReset(),
10504
10590
  children: label('form.reset')
10505
10591
  })
10506
10592
  }), jsxRuntime.jsx(Flex, {
10507
- children: onTest && jsxRuntime.jsx(Button, {
10593
+ children: jsxRuntime.jsx(Button, {
10508
10594
  variant: "primary",
10509
10595
  size: "sm",
10510
- onClick: onTest_,
10596
+ onClick: () => onTest(),
10511
10597
  children: label('form.test')
10512
10598
  })
10513
10599
  })]
@@ -10515,7 +10601,6 @@ const FormTester = /*#__PURE__*/React.forwardRef((_a, ref) => {
10515
10601
  })
10516
10602
  }));
10517
10603
  });
10518
- FormTester.displayName = 'FormTester';
10519
10604
 
10520
10605
  const StyledForm = styled__default.default.div`
10521
10606
  ${props => getForm(props)}
@@ -10524,13 +10609,33 @@ const StyledForm = styled__default.default.div`
10524
10609
  const Form = /*#__PURE__*/React.forwardRef((_a, ref) => {
10525
10610
  var {
10526
10611
  className,
10527
- state,
10612
+ form,
10528
10613
  variant
10529
10614
  } = _a,
10530
- props = __rest(_a, ["className", "state", "variant"]);
10531
- const classNames = bomCore.getClassNames('form', className, state === null || state === void 0 ? void 0 : state.flags, variant);
10615
+ props = __rest(_a, ["className", "form", "variant"]);
10616
+ const innerRef = React.useRef(null);
10617
+ React.useImperativeHandle(ref, () => innerRef.current);
10618
+ React.useEffect(() => {
10619
+ if (form) {
10620
+ const onChange = value => {
10621
+ // console.log('FormComponent.onChange', form.state);
10622
+ if (innerRef.current !== null) {
10623
+ const formElement = innerRef.current;
10624
+ Object.entries(bomMixerForms.mapState_(form.state)).forEach(_ref => {
10625
+ let [k, v] = _ref;
10626
+ formElement.classList.toggle(k, v);
10627
+ });
10628
+ }
10629
+ };
10630
+ form.on('change', onChange);
10631
+ return () => form.off('change', onChange);
10632
+ }
10633
+ return;
10634
+ // eslint-disable-next-line react-hooks/exhaustive-deps
10635
+ }, [form]);
10636
+ const classNames = bomCore.getClassNames('form', className, variant);
10532
10637
  return jsxRuntime.jsx(StyledForm, Object.assign({
10533
- ref: ref,
10638
+ ref: innerRef,
10534
10639
  className: classNames,
10535
10640
  as: "form",
10536
10641
  variant: variant
@@ -12579,6 +12684,7 @@ function FieldCombobox(_ref) {
12579
12684
  const onChange = option => {
12580
12685
  setValue(option);
12581
12686
  };
12687
+ // console.log('FieldCombobox', control.value);
12582
12688
  return state.flags.hidden ? jsxRuntime.jsx("input", {
12583
12689
  type: "hidden",
12584
12690
  value: bomMixerForms.valueToString(state.value)
@@ -12595,6 +12701,7 @@ function FieldCombobox(_ref) {
12595
12701
  children: label(control.label)
12596
12702
  }), jsxRuntime.jsx(Combobox.Combobox, {
12597
12703
  after: icon || jsxRuntime.jsx(bomMixerIcons.IconChevronDown, {}),
12704
+ autoSelect: true,
12598
12705
  placeholder: control.placeholder && label(control.placeholder)
12599
12706
  }), jsxRuntime.jsx(Combobox.Popover, {
12600
12707
  gutter: 4,
@@ -12612,10 +12719,10 @@ function FieldCombobox(_ref) {
12612
12719
  children: label('noResults')
12613
12720
  });
12614
12721
  }
12615
- }), jsxRuntime.jsx(FieldError, {
12616
- state: state
12617
12722
  })]
12618
- }), ((_a = control.customData) === null || _a === void 0 ? void 0 : _a.after) && control.customData.after]
12723
+ }), ((_a = control.customData) === null || _a === void 0 ? void 0 : _a.after) && control.customData.after, jsxRuntime.jsx(FieldError, {
12724
+ state: state
12725
+ })]
12619
12726
  });
12620
12727
  }
12621
12728
 
@@ -13768,6 +13875,7 @@ exports.FieldRadio = FieldRadio;
13768
13875
  exports.FieldSelect = FieldSelect;
13769
13876
  exports.FieldText = FieldText;
13770
13877
  exports.FieldTextArea = FieldTextArea;
13878
+ exports.Fieldset = Fieldset;
13771
13879
  exports.Flex = Flex;
13772
13880
  exports.FlexRow = FlexRow;
13773
13881
  exports.Footer = Footer;
@@ -13857,6 +13965,7 @@ exports.SelectSelectCss = SelectSelectCss;
13857
13965
  exports.SelectValueCss = SelectValueCss;
13858
13966
  exports.Skeleton = Skeleton;
13859
13967
  exports.StyledContainer = StyledContainer;
13968
+ exports.Submit = Submit;
13860
13969
  exports.Svg = Svg;
13861
13970
  exports.SvgAnimation = SvgAnimation;
13862
13971
  exports.SwiperComponent = SwiperComponent;