onekijs-ui 0.19.6 → 0.19.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.
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { PasswordProps } from '../typings';
3
- declare const PasswordComponent: React.FC<PasswordProps>;
4
- export default PasswordComponent;
3
+ declare const _default: import("styled-components").StyledComponent<React.FC<PasswordProps>, import("styled-components").DefaultTheme, {}, never>;
4
+ export default _default;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { ControllerSelectProps, SelectController, SelectItem, SelectState } from '../typings';
3
- declare const ControlledSelectComponent: <T = any, I extends SelectItem<T> = SelectItem<T>, S extends SelectState<T, I> = SelectState<T, I>, C extends SelectController<T, I, S> = SelectController<T, I, S>>({ attachDropdownToBody, className, placeholder, controller, InputComponent, IconComponent, OptionContentComponent, OptionComponent, OptionLoadingComponent, MultiOptionsComponent, NotFoundComponent, autoFocus, value, onChange, onBlur: forwardBlur, onFocus: forwardFocus, height, multiple, status, size, nullable, minChars, openOnFocus, searchable, dropdownWidthModifier, preload, increment, animationMs, disabled, defaultValue, defaultValueLoading, required, sameWidth, overscan, clickable, ListComponent, autoCompleteSearch, maxDisplayTokens, }: ControllerSelectProps<T, I, S, C>) => React.JSX.Element;
3
+ declare const ControlledSelectComponent: <T = any, I extends SelectItem<T> = SelectItem<T>, S extends SelectState<T, I> = SelectState<T, I>, C extends SelectController<T, I, S> = SelectController<T, I, S>>({ attachDropdownToBody, className, placeholder, controller, InputComponent, IconComponent, OptionContentComponent, OptionComponent, OptionLoadingComponent, MultiOptionsComponent, NotFoundComponent, autoFocus, value, onChange, onBlur: forwardBlur, onFocus: forwardFocus, height, multiple, status, size, nullable, minChars, openOnFocus, searchable, dropdownWidthModifier, preload, increment, animationMs, disabled, defaultValue, defaultValueLoading, required, sameWidth, overscan, clickable, ListComponent, autoCompleteSearch, maxDisplayTokens, validateValue, }: ControllerSelectProps<T, I, S, C>) => React.JSX.Element;
4
4
  export default ControlledSelectComponent;
@@ -118,6 +118,7 @@ export type SelectConfig<T = any, I extends SelectItem<T> = SelectItem<T>> = Omi
118
118
  ListComponent?: React.FC<SelectListComponentProps<T, I>>;
119
119
  autoCompleteSearch?: boolean;
120
120
  maxDisplayTokens?: number;
121
+ validateValue?: boolean;
121
122
  };
122
123
  export type SelectListComponentProps<T = any, I extends SelectItem<T> = SelectItem<T>> = CollectionListProps<T, I> & {
123
124
  optionsRef: React.RefObject<HTMLDivElement>;
package/dist/index.js CHANGED
@@ -1672,7 +1672,7 @@ const FormCardDisplayerComponent = (displayerProps) => {
1672
1672
  return (React.createElement("div", { className: addClassname('o-displayer-card', displayerProps.className) },
1673
1673
  React.createElement("div", { className: "o-displayer-card-title" }, displayerProps.name),
1674
1674
  Object.values(displayerProps.children ?? {}).map((field, index) => {
1675
- const Displayer = field.Displayer;
1675
+ const Displayer = field.Displayer ?? onekijsFramework.DefaultDisplayer;
1676
1676
  return React.createElement(Displayer, { ...field, index: index, key: `field-${index}`, first: index === 0, last: index === total - 1, format: displayerProps.format });
1677
1677
  })));
1678
1678
  };
@@ -1693,6 +1693,7 @@ const FormCard = ({ name, ...cardProps }) => {
1693
1693
  container: name,
1694
1694
  });
1695
1695
  const { hide, show, disable, enable } = fieldContainer;
1696
+ const initializedRef = React.useRef(false);
1696
1697
  React.useEffect(() => {
1697
1698
  const visible = metadata.visible ?? true;
1698
1699
  const disabled = metadata.disabled ?? false;
@@ -1701,19 +1702,29 @@ const FormCard = ({ name, ...cardProps }) => {
1701
1702
  disable();
1702
1703
  }
1703
1704
  else {
1704
- enable();
1705
+ if (initializedRef.current === true) {
1706
+ // we only use the enable method if this is a change and not a initialization
1707
+ enable();
1708
+ }
1705
1709
  }
1706
1710
  hide();
1707
1711
  }
1708
1712
  else {
1709
- show();
1713
+ if (initializedRef.current === true) {
1714
+ // we only use the show method if this is a change and not a initialization
1715
+ show();
1716
+ }
1710
1717
  if (disabled) {
1711
1718
  disable();
1712
1719
  }
1713
1720
  else {
1714
- enable();
1721
+ if (initializedRef.current === true) {
1722
+ // we only use the enable method if this is a change and not a initialization
1723
+ enable();
1724
+ }
1715
1725
  }
1716
1726
  }
1727
+ initializedRef.current = true;
1717
1728
  }, [metadata.visible, metadata.disabled, hide, show, disable, enable]);
1718
1729
  if (metadata.visible === false) {
1719
1730
  return null;
@@ -4078,9 +4089,19 @@ const PasswordComponent = ({ className, value }) => {
4078
4089
  React.createElement(HideIcon, { onClick: () => setShow(false) })));
4079
4090
  }
4080
4091
  return (React.createElement("span", { className: addClassname('o-password o-password-obfuscated', className) },
4081
- React.createElement("span", { className: "o-password-text" }, value),
4092
+ React.createElement("span", { className: "o-password-text" }, "************"),
4082
4093
  React.createElement(ShowIcon, { onClick: () => setShow(true) })));
4083
4094
  };
4095
+ var PasswordComponent$1 = styled(PasswordComponent) `
4096
+ ${display('flex')}
4097
+ ${alignItems('center')}
4098
+ .o-icon-show, .o-icon-hide {
4099
+ ${color('primary')}
4100
+ ${marginLeft('sm')}
4101
+ ${cursor('pointer')}
4102
+ }
4103
+
4104
+ `;
4084
4105
 
4085
4106
  const passwordStyle = () => {
4086
4107
  return styled.css `
@@ -4098,7 +4119,7 @@ const passwordStyle = () => {
4098
4119
  `;
4099
4120
  };
4100
4121
 
4101
- const Password = styled(PasswordComponent) `
4122
+ const Password = styled(PasswordComponent$1) `
4102
4123
  ${passwordStyle}
4103
4124
  `;
4104
4125
 
@@ -6538,7 +6559,7 @@ const SelectInputComponent = ({ setOpen, open, placeholder, loading, fetching, I
6538
6559
  multiple && React.createElement(SelectTokensComponent$1, { tokens: tokens, onRemove: onRemove, maxDisplayTokens: maxDisplayTokens }),
6539
6560
  React.createElement("div", { className: "o-select-input-wrapper" },
6540
6561
  React.createElement("span", { ref: autoSizeRef, className: "o-select-input-auto-sizer" }),
6541
- React.createElement("input", { ref: inputRef, placeholder: placeholder, className: "o-select-input", onFocus: onFocus, onBlur: onBlur, onChange: handleChange, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, value: searchable ? proxyValue : '', onClick: onClick, autoCapitalize: "none", autoComplete: "off", autoCorrect: "off", spellCheck: "false", disabled: disabled }),
6562
+ React.createElement("input", { ref: inputRef, placeholder: placeholder, className: "o-select-input", onFocus: onFocus, onBlur: onBlur, onChange: handleChange, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, value: searchable ? proxyValue : '', onClick: onClick, autoCapitalize: "none", autoComplete: "one-time-code", autoCorrect: "off", spellCheck: "false", disabled: disabled }),
6542
6563
  !searchable && (React.createElement("span", { className: "o-select-input o-select-input-text", onClick: onClick }, multiple ? '' : proxyValue || '')))),
6543
6564
  !multiple && nullable && value && !disabled && (React.createElement("div", { className: "o-select-remover", onClick: onNullify }, "\u2716")),
6544
6565
  React.createElement(IconComponent, { onClick: onIconClick, open: open, loading: loading, fetching: fetching })));
@@ -6614,7 +6635,7 @@ const SelectOptionComponent = (props) => {
6614
6635
  displayGroup && React.createElement(OptionGroupComponent, { ...props, key: "group" }),
6615
6636
  React.createElement("div", { className: classNames, onClick: () => onItemClick(item, index), onMouseEnter: () => hoverable && onMouseEnter && item && onMouseEnter(item, index), onMouseLeave: () => hoverable && onMouseLeave && item && onMouseLeave(item, index), key: "content" },
6616
6637
  React.createElement("div", { style: { display: 'flex' }, ref: ref },
6617
- service.config?.multiple && (React.createElement(Checkbox, { value: item?.selected ? true : false, onChange: () => onItemClick(item, index), color: "currentColor", className: "o-select-option-multiple-checkbox", key: "checkbox" })),
6638
+ service.config?.multiple && (React.createElement(Checkbox, { value: item?.selected ? true : false, onChange: () => onItemClick(item, index), color: "currentColor", className: "o-select-option-multiple-checkbox", key: "checkbox", disabled: item?.disabled })),
6618
6639
  React.createElement(OptionContentComponent, { ...props, onClick: () => onItemClick(item, index), key: "option_content" })))));
6619
6640
  };
6620
6641
  SelectOptionComponent.displayName = 'SelectOptionComponent';
@@ -6631,7 +6652,7 @@ const DefaultSelectListComponent = (props) => {
6631
6652
  });
6632
6653
  return (React.createElement(ListBodyComponent, { ...props, className: "o-select-options", bodyRef: props.optionsRef, items: selectItems, totalSize: totalSize, virtualItems: isVirtual ? virtualItems : undefined, scrollToIndex: scrollToIndex, keyboardNavigable: true, service: props.controller?.asService(), state: props.controller.state }));
6633
6654
  };
6634
- const ControlledSelectComponent = ({ attachDropdownToBody = false, className = '', placeholder, controller, InputComponent = SelectInputComponent$1, IconComponent, OptionContentComponent = SelectOptionContent, OptionComponent = SelectOptionComponent$1, OptionLoadingComponent = LoadingItem$1, MultiOptionsComponent = SelectOptionComponent$1, NotFoundComponent = SelectNotFoundComponent, autoFocus, value, onChange, onBlur: forwardBlur, onFocus: forwardFocus, height = 220, multiple = false, status = onekijsFramework.ValidationStatus.None, size = 'medium', nullable, minChars = 0, openOnFocus = false, searchable = true, dropdownWidthModifier = 'min', preload = 50, increment = 50, animationMs = 200, disabled, defaultValue, defaultValueLoading, required = false, sameWidth = true, overscan, clickable = true, ListComponent = DefaultSelectListComponent, autoCompleteSearch = true, maxDisplayTokens, }) => {
6655
+ const ControlledSelectComponent = ({ attachDropdownToBody = false, className = '', placeholder, controller, InputComponent = SelectInputComponent$1, IconComponent, OptionContentComponent = SelectOptionContent, OptionComponent = SelectOptionComponent$1, OptionLoadingComponent = LoadingItem$1, MultiOptionsComponent = SelectOptionComponent$1, NotFoundComponent = SelectNotFoundComponent, autoFocus, value, onChange, onBlur: forwardBlur, onFocus: forwardFocus, height = 220, multiple = false, status = onekijsFramework.ValidationStatus.None, size = 'medium', nullable, minChars = 0, openOnFocus = false, searchable = true, dropdownWidthModifier = 'min', preload = 50, increment = 50, animationMs = 200, disabled, defaultValue, defaultValueLoading, required = false, sameWidth = true, overscan, clickable = true, ListComponent = DefaultSelectListComponent, autoCompleteSearch = true, maxDisplayTokens, validateValue = true, }) => {
6635
6656
  if (nullable === undefined) {
6636
6657
  nullable = !required;
6637
6658
  }
@@ -6676,6 +6697,7 @@ const ControlledSelectComponent = ({ attachDropdownToBody = false, className = '
6676
6697
  overscan,
6677
6698
  autoCompleteSearch,
6678
6699
  maxDisplayTokens,
6700
+ validateValue,
6679
6701
  };
6680
6702
  }
6681
6703
  else {
@@ -6715,6 +6737,7 @@ const ControlledSelectComponent = ({ attachDropdownToBody = false, className = '
6715
6737
  overscan,
6716
6738
  autoCompleteSearch,
6717
6739
  maxDisplayTokens,
6740
+ validateValue,
6718
6741
  };
6719
6742
  }
6720
6743
  const id = React.useId();
@@ -6873,36 +6896,38 @@ const ControlledSelectComponent = ({ attachDropdownToBody = false, className = '
6873
6896
  // Manage the result of a check after a change of the value from the outside
6874
6897
  // if the selected item is invalid, do a onChange to remove the value
6875
6898
  React.useEffect(() => {
6876
- const search = service.getSearch();
6877
- const invalidItems = service.state.invalidItems || [];
6878
- if (!search && invalidItems.length > 0) {
6879
- if (multiple) {
6880
- const validTokens = [];
6881
- tokens.forEach((t) => {
6882
- const invalidToken = invalidItems.find((i) => t.uid === i.uid);
6883
- if (!invalidToken) {
6884
- validTokens.push(t);
6899
+ if (validateValue) {
6900
+ const search = service.getSearch();
6901
+ const invalidItems = service.state.invalidItems || [];
6902
+ if (!search && invalidItems.length > 0) {
6903
+ if (multiple) {
6904
+ const validTokens = [];
6905
+ tokens.forEach((t) => {
6906
+ const invalidToken = invalidItems.find((i) => t.uid === i.uid);
6907
+ if (!invalidToken) {
6908
+ validTokens.push(t);
6909
+ }
6910
+ });
6911
+ if (validTokens.length !== tokens.length && onChange) {
6912
+ let validData = validTokens.map((t) => t.data);
6913
+ if (validData.length === 0 && Array.isArray(service.state.validDefaultValue)) {
6914
+ validData = service.state.validDefaultValue;
6915
+ }
6916
+ onChange(validData);
6885
6917
  }
6886
- });
6887
- if (validTokens.length !== tokens.length && onChange) {
6888
- let validData = validTokens.map((t) => t.data);
6889
- if (validData.length === 0 && Array.isArray(service.state.validDefaultValue)) {
6890
- validData = service.state.validDefaultValue;
6918
+ }
6919
+ else {
6920
+ const currentItem = service.adapt(value);
6921
+ if (invalidItems.find((i) => i.id === currentItem.id)) {
6922
+ // set the defaultValue if it's a valid value otherwise set null
6923
+ onChange && onChange(service.state.validDefaultValue || null);
6891
6924
  }
6892
- onChange(validData);
6893
6925
  }
6894
6926
  }
6895
- else {
6896
- const currentItem = service.adapt(value);
6897
- if (invalidItems.find((i) => i.id === currentItem.id)) {
6898
- // set the defaultValue if it's a valid value otherwise set null
6899
- onChange && onChange(service.state.validDefaultValue || null);
6900
- }
6927
+ else if (!search && !nullable && !value && service.state.validDefaultValue) {
6928
+ onChange && onChange(service.state.validDefaultValue);
6901
6929
  }
6902
6930
  }
6903
- else if (!search && !nullable && !value && service.state.validDefaultValue) {
6904
- onChange && onChange(service.state.validDefaultValue);
6905
- }
6906
6931
  }, [
6907
6932
  service,
6908
6933
  multiple,
@@ -6912,6 +6937,7 @@ const ControlledSelectComponent = ({ attachDropdownToBody = false, className = '
6912
6937
  service.state.invalidItems,
6913
6938
  service.state.validDefaultValue,
6914
6939
  nullable,
6940
+ validateValue,
6915
6941
  ]);
6916
6942
  const onInputChange = (nextValue) => {
6917
6943
  showActiveRef.current = false;
@@ -11238,7 +11264,7 @@ const WizardSummaryComponent = ({ className }) => {
11238
11264
  const form = onekijsFramework.useForm();
11239
11265
  const tree = Object.values(form.getDisplayerTree());
11240
11266
  return (React.createElement(Accordion, { className: className }, tree.map((field, index) => {
11241
- const Displayer = field.Displayer;
11267
+ const Displayer = field.Displayer || onekijsFramework.DefaultDisplayer;
11242
11268
  return React.createElement(Displayer, { ...field, index: index, key: `field-${index}`, first: index === 0, last: index === tree.length - 1, format: "form_summary" });
11243
11269
  })));
11244
11270
  };
@@ -11303,7 +11329,7 @@ const FormStep = ({ name, disabled = false, visible = true, ...stepProps }) => {
11303
11329
  Displayer: (displayerProps) => {
11304
11330
  const total = Object.values(displayerProps.children ?? {}).length;
11305
11331
  return (React.createElement(AccordionPanel, { title: stepProps.title, initialActive: displayerProps.index === 0, initialExpand: displayerProps.index === 0 }, Object.values(displayerProps.children ?? {}).map((field, index) => {
11306
- const Displayer = field.Displayer;
11332
+ const Displayer = field.Displayer ?? onekijsFramework.DefaultDisplayer;
11307
11333
  return React.createElement(Displayer, { ...field, index: index, key: `field-${index}`, first: index === 0, last: index === total - 1, format: displayerProps.format });
11308
11334
  })));
11309
11335
  },
@@ -11317,6 +11343,7 @@ const FormStep = ({ name, disabled = false, visible = true, ...stepProps }) => {
11317
11343
  },
11318
11344
  });
11319
11345
  const { touchAllFields, hide, show, disable, enable } = fieldContainer;
11346
+ const initializedRef = React.useRef(false);
11320
11347
  React.useEffect(() => {
11321
11348
  const visible = metadata.visible ?? true;
11322
11349
  const disabled = metadata.disabled ?? false;
@@ -11327,44 +11354,51 @@ const FormStep = ({ name, disabled = false, visible = true, ...stepProps }) => {
11327
11354
  }
11328
11355
  else {
11329
11356
  service.enable(name);
11330
- enable();
11357
+ if (initializedRef.current === true) {
11358
+ // we only use the enable method if this is a change and not a initialization
11359
+ enable();
11360
+ }
11331
11361
  }
11332
11362
  service.hide(name);
11333
11363
  hide();
11334
11364
  }
11335
11365
  else {
11336
11366
  service.show(name);
11337
- show();
11367
+ if (initializedRef.current === true) {
11368
+ // we only use the show method if this is a change and not a initialization
11369
+ show();
11370
+ }
11338
11371
  if (disabled) {
11339
11372
  service.disable(name);
11340
11373
  disable();
11341
11374
  }
11342
11375
  else {
11343
11376
  service.enable(name);
11344
- enable();
11377
+ if (initializedRef.current === true) {
11378
+ // we only use the enable method if this is a change and not a initialization
11379
+ enable();
11380
+ }
11345
11381
  }
11346
11382
  }
11383
+ initializedRef.current = true;
11347
11384
  }, [name, metadata.visible, metadata.disabled]);
11348
- React.useEffect(() => {
11349
- if (!visible) {
11350
- if (disabled) {
11351
- disable();
11352
- }
11353
- else {
11354
- enable();
11355
- }
11356
- hide();
11357
- }
11358
- else {
11359
- show();
11360
- if (disabled) {
11361
- disable();
11362
- }
11363
- else {
11364
- enable();
11365
- }
11366
- }
11367
- }, [visible, disabled, hide, show, disable, enable]);
11385
+ // useEffect(() => {
11386
+ // if (!visible) {
11387
+ // if (disabled) {
11388
+ // disable();
11389
+ // } else {
11390
+ // enable();
11391
+ // }
11392
+ // hide();
11393
+ // } else {
11394
+ // show();
11395
+ // if (disabled) {
11396
+ // disable();
11397
+ // } else {
11398
+ // enable();
11399
+ // }
11400
+ // }
11401
+ // }, [visible, disabled, hide, show, disable, enable]);
11368
11402
  return (React.createElement(onekijsFramework.FormContext.Provider, { value: fieldContainer.context },
11369
11403
  React.createElement(Step, { ...stepProps, uid: name, onTouch: touchAllFields })));
11370
11404
  };
@@ -12338,7 +12372,7 @@ exports.NotificationComponent = NotificationComponent;
12338
12372
  exports.Notifications = Notifications;
12339
12373
  exports.NotificationsComponent = NotificationsComponent;
12340
12374
  exports.Password = Password;
12341
- exports.PasswordComponent = PasswordComponent;
12375
+ exports.PasswordComponent = PasswordComponent$1;
12342
12376
  exports.Properties = Properties;
12343
12377
  exports.PropertiesComponent = PropertiesComponent;
12344
12378
  exports.Property = Property;