@selfcommunity/react-ui 0.10.0-alpha.1 → 0.10.0-alpha.2

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.
@@ -48,13 +48,13 @@ const TagAutocomplete = (inProps) => {
48
48
  name: PREFIX
49
49
  });
50
50
  // Props
51
- const { onChange, defaultValue = null, TextFieldProps = {
51
+ const { onChange, multiple = true, defaultValue = multiple ? [] : null, TextFieldProps = {
52
52
  variant: 'outlined',
53
53
  label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.tags.label", defaultMessage: "ui.composer.layer.audience.tags.label" })
54
- }, TagChipProps = {} } = props, rest = tslib_1.__rest(props, ["onChange", "defaultValue", "TextFieldProps", "TagChipProps"]);
54
+ }, TagChipProps = {} } = props, rest = tslib_1.__rest(props, ["onChange", "multiple", "defaultValue", "TextFieldProps", "TagChipProps"]);
55
55
  // State
56
56
  const [open, setOpen] = (0, react_1.useState)(false);
57
- const [value, setValue] = (0, react_1.useState)(defaultValue || []);
57
+ const [value, setValue] = (0, react_1.useState)(typeof defaultValue === 'string' ? null : defaultValue);
58
58
  // HOOKS
59
59
  const { scAddressingTags } = (0, react_core_1.useSCFetchAddressingTagList)({ fetch: open });
60
60
  (0, react_1.useEffect)(() => {
@@ -63,6 +63,11 @@ const TagAutocomplete = (inProps) => {
63
63
  }
64
64
  onChange && onChange(value);
65
65
  }, [value]);
66
+ (0, react_1.useEffect)(() => {
67
+ if (typeof defaultValue === 'string') {
68
+ setValue(multiple ? scAddressingTags.filter((t) => t.id === Number(defaultValue)) : scAddressingTags.find((t) => t.id === Number(defaultValue)));
69
+ }
70
+ }, [defaultValue]);
66
71
  // Handlers
67
72
  const handleOpen = () => {
68
73
  setOpen(true);
@@ -74,7 +79,7 @@ const TagAutocomplete = (inProps) => {
74
79
  setValue(newValue);
75
80
  };
76
81
  // Render
77
- return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: classes.root, open: open, onOpen: handleOpen, onClose: handleClose, multiple: true, options: scAddressingTags || [], getOptionLabel: (option) => option.name || '', value: value, selectOnFocus: true, clearOnBlur: true, handleHomeEndKeys: true, clearIcon: null, noOptionsText: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.tags.empty", defaultMessage: "ui.composer.layer.audience.tags.empty" }), onChange: handleChange, isOptionEqualToValue: (option, value) => value.id === option.id, renderTags: (value, getTagProps) => {
82
+ return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: classes.root, multiple: multiple, open: open, onOpen: handleOpen, onClose: handleClose, options: scAddressingTags || [], getOptionLabel: (option) => option.name || '', value: value, selectOnFocus: true, clearOnBlur: true, handleHomeEndKeys: true, clearIcon: null, noOptionsText: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.tags.empty", defaultMessage: "ui.composer.layer.audience.tags.empty" }), onChange: handleChange, isOptionEqualToValue: (option, value) => value.id === option.id, renderTags: (value, getTagProps) => {
78
83
  return value.map((option, index) => (0, jsx_runtime_1.jsx)(TagChip_1.default, Object.assign({ tag: option }, getTagProps({ index })), option.id));
79
84
  }, renderOption: (props, option, { selected, inputValue }) => {
80
85
  const matches = (0, match_1.default)(option.name, inputValue);
@@ -46,13 +46,13 @@ const TagAutocomplete = (inProps) => {
46
46
  name: PREFIX
47
47
  });
48
48
  // Props
49
- const { onChange, defaultValue = null, TextFieldProps = {
49
+ const { onChange, multiple = true, defaultValue = multiple ? [] : null, TextFieldProps = {
50
50
  variant: 'outlined',
51
51
  label: _jsx(FormattedMessage, { id: "ui.composer.layer.audience.tags.label", defaultMessage: "ui.composer.layer.audience.tags.label" })
52
- }, TagChipProps = {} } = props, rest = __rest(props, ["onChange", "defaultValue", "TextFieldProps", "TagChipProps"]);
52
+ }, TagChipProps = {} } = props, rest = __rest(props, ["onChange", "multiple", "defaultValue", "TextFieldProps", "TagChipProps"]);
53
53
  // State
54
54
  const [open, setOpen] = useState(false);
55
- const [value, setValue] = useState(defaultValue || []);
55
+ const [value, setValue] = useState(typeof defaultValue === 'string' ? null : defaultValue);
56
56
  // HOOKS
57
57
  const { scAddressingTags } = useSCFetchAddressingTagList({ fetch: open });
58
58
  useEffect(() => {
@@ -61,6 +61,11 @@ const TagAutocomplete = (inProps) => {
61
61
  }
62
62
  onChange && onChange(value);
63
63
  }, [value]);
64
+ useEffect(() => {
65
+ if (typeof defaultValue === 'string') {
66
+ setValue(multiple ? scAddressingTags.filter((t) => t.id === Number(defaultValue)) : scAddressingTags.find((t) => t.id === Number(defaultValue)));
67
+ }
68
+ }, [defaultValue]);
64
69
  // Handlers
65
70
  const handleOpen = () => {
66
71
  setOpen(true);
@@ -72,7 +77,7 @@ const TagAutocomplete = (inProps) => {
72
77
  setValue(newValue);
73
78
  };
74
79
  // Render
75
- return (_jsx(Root, Object.assign({ className: classes.root, open: open, onOpen: handleOpen, onClose: handleClose, multiple: true, options: scAddressingTags || [], getOptionLabel: (option) => option.name || '', value: value, selectOnFocus: true, clearOnBlur: true, handleHomeEndKeys: true, clearIcon: null, noOptionsText: _jsx(FormattedMessage, { id: "ui.composer.layer.audience.tags.empty", defaultMessage: "ui.composer.layer.audience.tags.empty" }), onChange: handleChange, isOptionEqualToValue: (option, value) => value.id === option.id, renderTags: (value, getTagProps) => {
80
+ return (_jsx(Root, Object.assign({ className: classes.root, multiple: multiple, open: open, onOpen: handleOpen, onClose: handleClose, options: scAddressingTags || [], getOptionLabel: (option) => option.name || '', value: value, selectOnFocus: true, clearOnBlur: true, handleHomeEndKeys: true, clearIcon: null, noOptionsText: _jsx(FormattedMessage, { id: "ui.composer.layer.audience.tags.empty", defaultMessage: "ui.composer.layer.audience.tags.empty" }), onChange: handleChange, isOptionEqualToValue: (option, value) => value.id === option.id, renderTags: (value, getTagProps) => {
76
81
  return value.map((option, index) => _jsx(TagChip, Object.assign({ tag: option }, getTagProps({ index })), option.id));
77
82
  }, renderOption: (props, option, { selected, inputValue }) => {
78
83
  const matches = match(option.name, inputValue);