pesona-ui 1.0.21 → 1.0.23

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.esm.js CHANGED
@@ -7938,7 +7938,7 @@ function v4(options, buf, offset) {
7938
7938
  return unsafeStringify(rnds);
7939
7939
  }
7940
7940
 
7941
- const Checkbox = forwardRef(({ name, label, error, checked = false, onChange, ...rest }, ref) => {
7941
+ const Checkbox = forwardRef(({ name, label, message, error, checked = false, onChange, ...rest }, ref) => {
7942
7942
  const uniqueCheckboxId = v4();
7943
7943
  const handleChange = (event) => {
7944
7944
  onChange(event);
@@ -7948,10 +7948,7 @@ const Checkbox = forwardRef(({ name, label, error, checked = false, onChange, ..
7948
7948
  React.createElement("input", { className: "form-control", type: "checkbox", id: uniqueCheckboxId, name: name, ref: ref, role: "checkbox", checked: checked, onChange: handleChange, ...rest }),
7949
7949
  React.createElement("span", { className: "checkmark" }),
7950
7950
  label && React.createElement("span", { className: rest.required ? 'required' : '' }, label)),
7951
- error && React.createElement("small", { className: "form-message" },
7952
- " (",
7953
- error,
7954
- ")")));
7951
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
7955
7952
  });
7956
7953
  Checkbox.displayName = 'Checkbox';
7957
7954
 
@@ -8179,7 +8176,7 @@ const useDropdownPositionAndScroll = (isOpen, dropdownOptionsRef) => {
8179
8176
  }, [isOpen, dropdownOptionsRef]);
8180
8177
  };
8181
8178
 
8182
- const Select = forwardRef(({ name, label, selectLabel, size = 'md', floatingLabel = false, error, options, value = '', onChange, required, disabled, }, ref) => {
8179
+ const Select = forwardRef(({ name, label, message, selectLabel, size = 'md', floatingLabel = false, error, options, value = '', onChange, required, disabled, }, ref) => {
8183
8180
  const [isOpen, setIsOpen] = useState(false);
8184
8181
  const dropdownRef = useRef(null);
8185
8182
  const dropdownOptionsRef = useRef(null);
@@ -8217,11 +8214,11 @@ const Select = forwardRef(({ name, label, selectLabel, size = 'md', floatingLabe
8217
8214
  label,
8218
8215
  " ",
8219
8216
  required && React.createElement("span", { className: "text-danger" }, "*"))),
8220
- error && React.createElement("small", { className: "form-message" }, error)));
8217
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8221
8218
  });
8222
8219
  Select.displayName = 'Select';
8223
8220
 
8224
- const DropdownDatePicker = React.forwardRef(({ name, label, floatingLabel, locale = 'id', error, value, ...rest }, ref) => {
8221
+ const DropdownDatePicker = React.forwardRef(({ name, label, message, floatingLabel, locale = 'id', error, value, ...rest }, ref) => {
8225
8222
  // Helper function to safely parse date
8226
8223
  const parseDate = (dateString) => {
8227
8224
  if (!dateString)
@@ -8291,7 +8288,7 @@ const DropdownDatePicker = React.forwardRef(({ name, label, floatingLabel, local
8291
8288
  React.createElement("div", { className: "col-md-4" },
8292
8289
  React.createElement(Select, { name: `${name}-year`, disabled: rest.disabled, options: yearOptions, value: dateValues.year.toString(), onChange: (e) => handleChange('year', e.target.value), "aria-label": "Year" }))),
8293
8290
  floatingLabel && renderLabel,
8294
- error && React.createElement("small", { className: "form-message text-danger" }, error)));
8291
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8295
8292
  });
8296
8293
  DropdownDatePicker.displayName = 'DropdownDatePicker';
8297
8294
 
@@ -8299,7 +8296,7 @@ const ClearInput = ({ type = 'text', className, ...rest }) => {
8299
8296
  return (React.createElement("input", { type: type, className: `clear ${className}`, ...rest }));
8300
8297
  };
8301
8298
 
8302
- const Input = React.forwardRef(({ className, name, label, floatingLabel, error, ...rest }, ref) => {
8299
+ const Input = React.forwardRef(({ className, name, label, message, floatingLabel, error, ...rest }, ref) => {
8303
8300
  return (React.createElement(React.Fragment, null,
8304
8301
  !floatingLabel && label && (React.createElement("label", { htmlFor: name },
8305
8302
  label,
@@ -8310,17 +8307,23 @@ const Input = React.forwardRef(({ className, name, label, floatingLabel, error,
8310
8307
  label,
8311
8308
  " ",
8312
8309
  rest.required && React.createElement("span", { className: "text-danger" }, "*"))),
8313
- error !== undefined && React.createElement("small", { className: "form-message" }, error)));
8310
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8314
8311
  });
8315
8312
 
8316
- const InputDate = React.forwardRef(({ name, label, floatingLabel, value = '', error, ...rest }, ref) => {
8313
+ const InputDate = React.forwardRef(({ name, label, message, floatingLabel, value = '', error, ...rest }, ref) => {
8317
8314
  const [showDatePicker, setShowDatePicker] = useState(false);
8318
- const [selectedDate, setSelectedDate] = useState(value);
8315
+ const [selectedDate, setSelectedDate] = useState(value ?? '');
8319
8316
  const datePickerRef = useRef(null);
8317
+ // Sync when external value changes
8318
+ React.useEffect(() => {
8319
+ setSelectedDate(value);
8320
+ }, [value]);
8321
+ // Helper function to safely parse date
8320
8322
  const toggleDatePicker = (e) => {
8321
8323
  e.stopPropagation();
8322
8324
  setShowDatePicker((prevState) => !prevState);
8323
8325
  };
8326
+ // Handle date selection from the date picker
8324
8327
  const handleDateSelect = (date) => {
8325
8328
  setSelectedDate(date);
8326
8329
  setShowDatePicker(false);
@@ -8330,6 +8333,7 @@ const InputDate = React.forwardRef(({ name, label, floatingLabel, value = '', er
8330
8333
  });
8331
8334
  }
8332
8335
  };
8336
+ // Close date picker when clicking outside
8333
8337
  useOutsideClick([datePickerRef], () => {
8334
8338
  setShowDatePicker(false);
8335
8339
  });
@@ -8339,7 +8343,7 @@ const InputDate = React.forwardRef(({ name, label, floatingLabel, value = '', er
8339
8343
  " ",
8340
8344
  rest.required && React.createElement("span", { className: "text-danger" }, "*"))),
8341
8345
  React.createElement("div", { className: "input-group-icon" },
8342
- React.createElement("input", { type: "text", className: "form-control", id: name, name: name, placeholder: !floatingLabel ? ' ' : '', ref: ref, value: selectedDate, ...rest }),
8346
+ React.createElement(Input, { type: "text", className: "form-control", id: name, name: name, placeholder: !floatingLabel ? ' ' : '', ref: ref, value: selectedDate, ...rest }),
8343
8347
  React.createElement("span", { role: "button", className: "icon", onClick: toggleDatePicker },
8344
8348
  React.createElement(MdCalendarMonth, null)),
8345
8349
  showDatePicker && (React.createElement("div", { ref: datePickerRef },
@@ -8348,11 +8352,11 @@ const InputDate = React.forwardRef(({ name, label, floatingLabel, value = '', er
8348
8352
  label,
8349
8353
  " ",
8350
8354
  rest.required && React.createElement("span", { className: "text-danger" }, "*"))),
8351
- error && React.createElement("small", { className: "form-message" }, error)));
8355
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8352
8356
  });
8353
8357
  InputDate.displayName = 'InputDate';
8354
8358
 
8355
- const InputFile = forwardRef(({ name, label, accept, error, onChange, ...rest }, ref) => {
8359
+ const InputFile = forwardRef(({ name, label, message, accept, error, onChange, ...rest }, ref) => {
8356
8360
  const handleChange = (event) => {
8357
8361
  if (onChange) {
8358
8362
  onChange(event);
@@ -8364,7 +8368,7 @@ const InputFile = forwardRef(({ name, label, accept, error, onChange, ...rest },
8364
8368
  " ",
8365
8369
  rest.required && React.createElement("span", { className: "text-danger" }, "*"))),
8366
8370
  React.createElement("input", { type: "file", className: "form-control", id: name, name: name, accept: accept, onChange: handleChange, ref: ref, ...rest }),
8367
- error !== undefined && React.createElement("small", { className: "form-message" }, error)));
8371
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8368
8372
  });
8369
8373
  InputFile.displayName = 'InputFile';
8370
8374
 
@@ -8372,7 +8376,7 @@ const InputImageSize = () => {
8372
8376
  return (React.createElement("div", null, "InputImageSize"));
8373
8377
  };
8374
8378
 
8375
- const InputTextArea = React.forwardRef(({ name, label, floatingLabel, error, ...rest }, ref) => {
8379
+ const InputTextArea = React.forwardRef(({ name, label, message, floatingLabel, error, ...rest }, ref) => {
8376
8380
  return (React.createElement(React.Fragment, null,
8377
8381
  !floatingLabel && (React.createElement("label", { htmlFor: name },
8378
8382
  label,
@@ -8383,7 +8387,7 @@ const InputTextArea = React.forwardRef(({ name, label, floatingLabel, error, ...
8383
8387
  label,
8384
8388
  " ",
8385
8389
  rest.required && React.createElement("span", { className: "text-danger" }, "*"))),
8386
- error !== undefined && React.createElement("small", { className: "form-message" }, error)));
8390
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8387
8391
  });
8388
8392
  InputTextArea.displayName = 'InputTextArea';
8389
8393
 
@@ -8394,7 +8398,7 @@ const commands = [
8394
8398
  { name: 'insertUnorderedList', label: 'Bullet List', icon: React.createElement(MdFormatListBulleted, { className: "icon" }) },
8395
8399
  { name: 'insertOrderedList', label: 'Number List', icon: React.createElement(MdFormatListNumbered, { className: "icon" }) },
8396
8400
  ];
8397
- const InputWysiwyg = forwardRef(({ name, label, floatingLabel, error, value, ...rest }, ref) => {
8401
+ const InputWysiwyg = forwardRef(({ name, label, message, floatingLabel, error, value, ...rest }, ref) => {
8398
8402
  const editorRef = useRef(null);
8399
8403
  const [history, setHistory] = useState(['']);
8400
8404
  const [historyIndex, setHistoryIndex] = useState(0);
@@ -8505,11 +8509,11 @@ const InputWysiwyg = forwardRef(({ name, label, floatingLabel, error, value, ...
8505
8509
  label,
8506
8510
  " ",
8507
8511
  error && React.createElement("span", { className: "text-danger" }, "*"))),
8508
- error && React.createElement("small", { className: "form-message" }, error)));
8512
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8509
8513
  });
8510
8514
  InputWysiwyg.displayName = 'InputWysiwyg';
8511
8515
 
8512
- const Radio = React.forwardRef(({ name, label, options, error, ...rest }, ref) => {
8516
+ const Radio = React.forwardRef(({ name, label, message, options, error, ...rest }, ref) => {
8513
8517
  return (React.createElement(React.Fragment, null,
8514
8518
  label && (React.createElement("label", { htmlFor: name },
8515
8519
  label,
@@ -8523,10 +8527,10 @@ const Radio = React.forwardRef(({ name, label, options, error, ...rest }, ref) =
8523
8527
  ref: ref, ...rest }),
8524
8528
  React.createElement("label", { htmlFor: uniqueRadioId }, option.label)));
8525
8529
  })),
8526
- error && React.createElement("small", { className: "form-message" }, error)));
8530
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8527
8531
  });
8528
8532
 
8529
- const RadioButtonGroup = React.forwardRef(({ name, label, size = 'md', options, selectedValue, error, required, ...rest }, ref) => {
8533
+ const RadioButtonGroup = React.forwardRef(({ name, label, message, size = 'md', options, selectedValue, error, required, ...rest }, ref) => {
8530
8534
  return (React.createElement(React.Fragment, null,
8531
8535
  label && (React.createElement("label", { htmlFor: name },
8532
8536
  label,
@@ -8535,11 +8539,11 @@ const RadioButtonGroup = React.forwardRef(({ name, label, size = 'md', options,
8535
8539
  React.createElement("div", { className: "btn-group", "data-toggle": "buttons" }, options.map((option) => (React.createElement("label", { key: option.value, className: `btn auto btn-default btn-${size} ${option.value === selectedValue ? 'active' : ''}` },
8536
8540
  React.createElement("input", { type: "radio", id: option.value.toString(), name: name, value: option.value, ref: ref, ...rest }),
8537
8541
  React.createElement("span", null, option.label))))),
8538
- error !== undefined && React.createElement("small", { className: "form-message" }, error)));
8542
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8539
8543
  });
8540
8544
  RadioButtonGroup.displayName = 'RadioButtonGroup';
8541
8545
 
8542
- const SelectMultiple = forwardRef(({ name, label, selectLabel, floatingLabel = false, error, options, value = [], onChange, required, disabled, className, }, ref) => {
8546
+ const SelectMultiple = forwardRef(({ name, label, message, selectLabel, floatingLabel = false, error, options, value = [], onChange, required, disabled, className, }, ref) => {
8543
8547
  const [isOpen, setIsOpen] = useState(false);
8544
8548
  const [selectedValues, setSelectedValues] = useState(value);
8545
8549
  const dropdownRef = useRef(null);
@@ -8584,11 +8588,11 @@ const SelectMultiple = forwardRef(({ name, label, selectLabel, floatingLabel = f
8584
8588
  label,
8585
8589
  " ",
8586
8590
  required && React.createElement("span", { className: "text-danger" }, "*"))),
8587
- error && React.createElement("small", { className: "form-message" }, error)));
8591
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8588
8592
  });
8589
8593
  SelectMultiple.displayName = 'SelectMultiple';
8590
8594
 
8591
- const SelectWithSearch = forwardRef(({ name, label, selectLabel, size = 'md', floatingLabel = false, error, options = [], value = '', onChange, required, disabled, selectSearch = '', setSelectSearch, isLoading = false, }, ref) => {
8595
+ const SelectWithSearch = forwardRef(({ name, label, message, selectLabel, size = 'md', floatingLabel = false, error, options = [], value = '', onChange, required, disabled, selectSearch = '', setSelectSearch, isLoading = false, }, ref) => {
8592
8596
  const [isOpen, setIsOpen] = useState(false);
8593
8597
  const dropdownRef = useRef(null);
8594
8598
  const dropdownOptionsRef = useRef(null);
@@ -8608,7 +8612,6 @@ const SelectWithSearch = forwardRef(({ name, label, selectLabel, size = 'md', fl
8608
8612
  const displayText = value
8609
8613
  ? options.find((option) => option.value === value)?.label
8610
8614
  : selectLabel || 'Select an option';
8611
- console.log(isLoading);
8612
8615
  return (React.createElement(React.Fragment, null,
8613
8616
  label && !floatingLabel && (React.createElement("label", { htmlFor: name },
8614
8617
  label,
@@ -8626,7 +8629,7 @@ const SelectWithSearch = forwardRef(({ name, label, selectLabel, size = 'md', fl
8626
8629
  label,
8627
8630
  " ",
8628
8631
  required && React.createElement("span", { className: "text-danger" }, "*"))),
8629
- error && React.createElement("small", { className: "form-message" }, error)));
8632
+ error ? (React.createElement("small", { className: "form-message text-danger" }, error)) : (message && React.createElement("small", { className: "form-message text-muted" }, message))));
8630
8633
  });
8631
8634
  SelectWithSearch.displayName = 'SelectWithSearch';
8632
8635