sprint-asia-custom-component 0.1.54 → 0.1.55

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.js CHANGED
@@ -24034,10 +24034,7 @@
24034
24034
  };
24035
24035
 
24036
24036
  const DropdownText = ({
24037
- options = [{
24038
- option: "Name 1",
24039
- value: "Value 1"
24040
- }],
24037
+ options = [],
24041
24038
  onSelect,
24042
24039
  title = "Title Dropdown",
24043
24040
  placeholder = "Placeholder",
@@ -24045,13 +24042,9 @@
24045
24042
  isEdited = true,
24046
24043
  mode = "default",
24047
24044
  footer = null,
24048
- currentOption = {
24049
- option: "Name 1",
24050
- value: "Value 1"
24051
- }
24045
+ currentOption = ""
24052
24046
  }) => {
24053
24047
  const [isOpen, setIsOpen] = React.useState(false);
24054
- const [selectedOption, setSelectedOption] = React.useState(null);
24055
24048
  const dropdownRef = React.useRef(null);
24056
24049
  React.useEffect(() => {
24057
24050
  const handleOutsideClick = event => {
@@ -24060,17 +24053,16 @@
24060
24053
  }
24061
24054
  };
24062
24055
  if (isOpen) {
24063
- document.addEventListener('mousedown', handleOutsideClick);
24056
+ document.addEventListener("mousedown", handleOutsideClick);
24064
24057
  }
24065
24058
  return () => {
24066
- document.removeEventListener('mousedown', handleOutsideClick);
24059
+ document.removeEventListener("mousedown", handleOutsideClick);
24067
24060
  };
24068
24061
  }, [isOpen]);
24069
24062
  const handleToggleDropdownText = () => {
24070
24063
  setIsOpen(!isOpen);
24071
24064
  };
24072
24065
  const handleOptionClick = (option, value) => {
24073
- setSelectedOption(option);
24074
24066
  setIsOpen(false);
24075
24067
  if (onSelect) {
24076
24068
  onSelect({
@@ -24079,6 +24071,9 @@
24079
24071
  });
24080
24072
  }
24081
24073
  };
24074
+ const selectedValue = options.filter(val => {
24075
+ return val.value === currentOption;
24076
+ });
24082
24077
  return /*#__PURE__*/React__default["default"].createElement("div", {
24083
24078
  className: "relative inline-block text-left w-full",
24084
24079
  ref: dropdownRef
@@ -24093,14 +24088,14 @@
24093
24088
  }, /*#__PURE__*/React__default["default"].createElement("button", {
24094
24089
  type: "button",
24095
24090
  className: `
24096
- ${isEdited == false && "bg-neutral30 cursor-not-allowed"}
24097
- ${mode == "default" && "border-neutral50 bg-neutral20 cursor-pointer"}
24098
- ${mode == "danger" && "border-danger500 bg-danger50 cursor-pointer"}
24091
+ ${!isEdited && "bg-neutral30 cursor-not-allowed"}
24092
+ ${mode === "default" && "border-neutral50 bg-neutral20 cursor-pointer"}
24093
+ ${mode === "danger" && "border-danger500 bg-danger50 cursor-pointer"}
24099
24094
  flex items-center w-full py-2.5 text-left px-4 font-normal text-sm text-neutral300 rounded-md border focus:outline-none overflow-hidden`,
24100
24095
  onClick: () => isEdited && handleToggleDropdownText()
24101
24096
  }, /*#__PURE__*/React__default["default"].createElement("span", {
24102
24097
  className: "flex-grow overflow-hidden"
24103
- }, selectedOption ? selectedOption : currentOption.option ? currentOption.option : placeholder), /*#__PURE__*/React__default["default"].createElement("span", {
24098
+ }, selectedValue?.length ? selectedValue[0]?.option : placeholder), /*#__PURE__*/React__default["default"].createElement("span", {
24104
24099
  className: "ml-2"
24105
24100
  }, isOpen ? /*#__PURE__*/React__default["default"].createElement(PiCaretUp, {
24106
24101
  size: 16,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sprint-asia-custom-component",
3
3
  "main": "dist/index.js",
4
- "version": "0.1.54",
4
+ "version": "0.1.55",
5
5
  "private": false,
6
6
  "dependencies": {
7
7
  "@headlessui/react": "^1.7.18",
@@ -1,124 +1,125 @@
1
- import React, { useState, useEffect, useRef } from 'react';
2
- import { PiCaretDown, PiCaretUp, PiInfo } from 'react-icons/pi';
1
+ import React, { useState, useEffect, useRef } from "react";
2
+ import { PiCaretDown, PiCaretUp, PiInfo } from "react-icons/pi";
3
3
 
4
- const DropdownText = ({
5
- options = [
6
- {
7
- option: "Name 1",
8
- value: "Value 1"
9
- }
10
- ],
11
- onSelect,
12
- title = "Title Dropdown",
13
- placeholder = "Placeholder",
14
- isRequired = true,
15
- isEdited = true,
16
- mode = "default",
17
- footer = null,
18
- currentOption = {option : "Name 1", value:"Value 1"},
4
+ const DropdownText = ({
5
+ options = [],
6
+ onSelect,
7
+ title = "Title Dropdown",
8
+ placeholder = "Placeholder",
9
+ isRequired = true,
10
+ isEdited = true,
11
+ mode = "default",
12
+ footer = null,
13
+ currentOption = "",
19
14
  }) => {
20
- const [isOpen, setIsOpen] = useState(false);
21
- const [selectedOption, setSelectedOption] = useState(null);
22
- const dropdownRef = useRef(null);
15
+ const [isOpen, setIsOpen] = useState(false);
16
+ const dropdownRef = useRef(null);
23
17
 
24
- useEffect(() => {
25
- const handleOutsideClick = (event) => {
26
- if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
27
- setIsOpen(false);
28
- }
29
- };
30
-
31
- if (isOpen) {
32
- document.addEventListener('mousedown', handleOutsideClick);
33
- }
18
+ useEffect(() => {
19
+ const handleOutsideClick = (event) => {
20
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
21
+ setIsOpen(false);
22
+ }
23
+ };
34
24
 
35
- return () => {
36
- document.removeEventListener('mousedown', handleOutsideClick);
37
- };
38
- }, [isOpen]);
25
+ if (isOpen) {
26
+ document.addEventListener("mousedown", handleOutsideClick);
27
+ }
39
28
 
40
- const handleToggleDropdownText = () => {
41
- setIsOpen(!isOpen);
29
+ return () => {
30
+ document.removeEventListener("mousedown", handleOutsideClick);
42
31
  };
32
+ }, [isOpen]);
43
33
 
44
- const handleOptionClick = (option, value) => {
45
- setSelectedOption(option);
46
- setIsOpen(false);
47
- if (onSelect) {
48
- onSelect({option: option, value: value});
49
- }
50
- };
34
+ const handleToggleDropdownText = () => {
35
+ setIsOpen(!isOpen);
36
+ };
37
+
38
+ const handleOptionClick = (option, value) => {
39
+ setIsOpen(false);
40
+ if (onSelect) {
41
+ onSelect({ option: option, value: value });
42
+ }
43
+ };
44
+
45
+ const selectedValue = options.filter((val) => {
46
+ return val.value === currentOption;
47
+ });
51
48
 
52
49
  return (
53
- <div className='relative inline-block text-left w-full' ref={dropdownRef}>
54
- {title &&
55
- <div className='flex'>
56
- <p className="text-sm font-normal text-black mb-1">{title}</p>
57
- {
58
- isRequired && <p className="text-sm font-normal text-danger500 ml-1">*</p>
59
- }
60
- </div>
61
- }
62
- <div>
63
- <span className='rounded-md shadow-sm'>
64
- <button
65
- type='button'
66
- className={`
67
- ${isEdited == false && "bg-neutral30 cursor-not-allowed"}
68
- ${mode == "default" && "border-neutral50 bg-neutral20 cursor-pointer"}
69
- ${mode == "danger" && "border-danger500 bg-danger50 cursor-pointer"}
50
+ <div className="relative inline-block text-left w-full" ref={dropdownRef}>
51
+ {title && (
52
+ <div className="flex">
53
+ <p className="text-sm font-normal text-black mb-1">{title}</p>
54
+ {isRequired && <p className="text-sm font-normal text-danger500 ml-1">*</p>}
55
+ </div>
56
+ )}
57
+ <div>
58
+ <span className="rounded-md shadow-sm">
59
+ <button
60
+ type="button"
61
+ className={`
62
+ ${!isEdited && "bg-neutral30 cursor-not-allowed"}
63
+ ${mode === "default" && "border-neutral50 bg-neutral20 cursor-pointer"}
64
+ ${mode === "danger" && "border-danger500 bg-danger50 cursor-pointer"}
70
65
  flex items-center w-full py-2.5 text-left px-4 font-normal text-sm text-neutral300 rounded-md border focus:outline-none overflow-hidden`}
71
- onClick={() => isEdited && handleToggleDropdownText()}
72
- >
73
- <span className='flex-grow overflow-hidden'>{selectedOption ? selectedOption : currentOption.option ? currentOption.option : placeholder}</span>
74
- <span className='ml-2'>
75
- {isOpen ? <PiCaretUp size={16} className='text-neutral300' /> : <PiCaretDown size={16} className='text-neutral300' />}
76
- </span>
77
- </button>
66
+ onClick={() => isEdited && handleToggleDropdownText()}
67
+ >
68
+ <span className="flex-grow overflow-hidden">
69
+ {selectedValue?.length ? selectedValue[0]?.option : placeholder}
78
70
  </span>
79
- </div>
71
+ <span className="ml-2">
72
+ {isOpen ? (
73
+ <PiCaretUp size={16} className="text-neutral300" />
74
+ ) : (
75
+ <PiCaretDown size={16} className="text-neutral300" />
76
+ )}
77
+ </span>
78
+ </button>
79
+ </span>
80
+ </div>
80
81
 
81
- {isOpen && isEdited && (
82
- <div
83
- className='z-10 origin-top-right absolute left-0 mt-2 w-full rounded-md shadow-md bg-white ring-1 ring-black ring-opacity-5 focus:outline-none overflow-hidden'
84
- role='menu'
85
- aria-orientation='vertical'
86
- aria-labelledby='options-menu'
87
- >
88
- <div className='px-1 py-2 max-h-40 overflow-y-auto'>
89
- {options.map((option, index) => (
90
- <div
91
- key={index}
92
- className='hover:bg-neutral20 bg-white py-2.5 px-4 my-0.5 rounded-md'
93
- onClick={() => {
94
- if (option.option !== "Loading...") {
95
- handleOptionClick(option.option, option.value)
96
- }
97
- }}
98
- >
99
- <p className='text-sm text-black'>{option.option}</p>
100
- </div>
101
- ))}
102
- </div>
103
- </div>
104
- )}
82
+ {isOpen && isEdited && (
83
+ <div
84
+ className="z-10 origin-top-right absolute left-0 mt-2 w-full rounded-md shadow-md bg-white ring-1 ring-black ring-opacity-5 focus:outline-none overflow-hidden"
85
+ role="menu"
86
+ aria-orientation="vertical"
87
+ aria-labelledby="options-menu"
88
+ >
89
+ <div className="px-1 py-2 max-h-40 overflow-y-auto">
90
+ {options.map((option, index) => (
91
+ <div
92
+ key={index}
93
+ className="hover:bg-neutral20 bg-white py-2.5 px-4 my-0.5 rounded-md"
94
+ onClick={() => {
95
+ if (option.option !== "Loading...") {
96
+ handleOptionClick(option.option, option.value);
97
+ }
98
+ }}
99
+ >
100
+ <p className="text-sm text-black">{option.option}</p>
101
+ </div>
102
+ ))}
103
+ </div>
104
+ </div>
105
+ )}
105
106
 
106
- {footer && (
107
- <div className='mt-1'>
108
- {mode === "danger" ? (
109
- <div className='flex'>
110
- <div>
111
- <PiInfo size={16} className='text-danger500' />
112
- </div>
113
- <p className="text-danger500 text-xs ml-1">{footer}</p>
114
- </div>
115
- ) : (
116
- <p className="text-black text-xs">{footer}</p>
117
- )}
107
+ {footer && (
108
+ <div className="mt-1">
109
+ {mode === "danger" ? (
110
+ <div className="flex">
111
+ <div>
112
+ <PiInfo size={16} className="text-danger500" />
113
+ </div>
114
+ <p className="text-danger500 text-xs ml-1">{footer}</p>
118
115
  </div>
119
- )}
116
+ ) : (
117
+ <p className="text-black text-xs">{footer}</p>
118
+ )}
119
+ </div>
120
+ )}
120
121
  </div>
121
122
  );
122
123
  };
123
124
 
124
- export default DropdownText;
125
+ export default DropdownText;