sprint-asia-custom-component 0.1.16 → 0.1.17

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/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.16",
4
+ "version": "0.1.17",
5
5
  "private": false,
6
6
  "dependencies": {
7
7
  "@headlessui/react": "^1.7.18",
@@ -4,18 +4,23 @@ import { PiFunnel, PiCaretRight } from 'react-icons/pi';
4
4
  const FilterDropdown = ({
5
5
  options = [
6
6
  {
7
- menu:"Loading...",
8
- submenu:["Loading..."]
7
+ menu:"Type",
8
+ submenu:["Type 1", "Type 2"],
9
+ type:"checkbox"
10
+ },
11
+ {
12
+ menu:"Status",
13
+ submenu:["Status 1", "Status 2"],
14
+ type:"radiobutton"
9
15
  },
10
16
  ],
11
- type = "radiobutton",
12
- selectedOptionMenu = null,
13
- setSelectedOptionMenu,
14
- selectedOptionSubmenu = [],
15
- setSelectedOptionSubmenu,
17
+ setDataFilterResult = () => {},
16
18
  }) => {
17
19
  const [showFilterMenu, setShowFilterMenu] = useState(false);
18
20
  const [showFilterSubmenu, setShowFilterSubmenu] = useState(false);
21
+ const [dataSelectionOptionMenu, setDataSelectionOptionMenu] = useState();
22
+ const [dataFilterCheckbox, setDataFilterCheckbox] = useState([]);
23
+ const [dataFilterStatus, setDataFilterStatus] = useState([]);
19
24
  const dropdownRef = useRef(null);
20
25
 
21
26
  useEffect(() => {
@@ -35,21 +40,34 @@ const FilterDropdown = ({
35
40
  };
36
41
  }, [showFilterMenu]);
37
42
 
43
+ useEffect(() => {
44
+ console.log("masuk bos")
45
+ setDataFilterResult({
46
+ role:dataFilterCheckbox,
47
+ status:dataFilterStatus
48
+ })
49
+ }, [dataFilterCheckbox, dataFilterStatus])
50
+
38
51
  const handleClickSubmenuCheckbox = (submenu) => {
39
- const updatedOptions = selectedOptionSubmenu.includes(submenu)
40
- ? selectedOptionSubmenu.filter((selected) => selected !== submenu)
41
- : [...selectedOptionSubmenu, submenu];
52
+ const updatedOptions = dataFilterCheckbox.includes(submenu)
53
+ ? dataFilterCheckbox.filter((selected) => selected !== submenu)
54
+ : [...dataFilterCheckbox, submenu];
42
55
 
43
- setSelectedOptionSubmenu(updatedOptions);
56
+ setDataFilterCheckbox(updatedOptions);
44
57
  }
45
58
 
46
59
  const handleClickSubmenuRadioButton = (submenu) => {
47
- setSelectedOptionSubmenu([submenu]);
60
+ if (submenu == dataFilterStatus[0]) {
61
+ setDataFilterStatus([])
62
+ }
63
+ else {
64
+ setDataFilterStatus([submenu]);
65
+ }
48
66
  }
49
67
 
50
68
  const buttonText =
51
- selectedOptionSubmenu.length > 0
52
- ? `${selectedOptionSubmenu.length} Filter Selected`
69
+ dataFilterCheckbox.length + dataFilterStatus.length > 0
70
+ ? `${dataFilterCheckbox.length + dataFilterStatus.length} Filter Selected`
53
71
  : 'Filter';
54
72
 
55
73
  return (
@@ -83,50 +101,63 @@ const FilterDropdown = ({
83
101
  className={`hover:bg-neutral20 bg-white py-2.5 px-4 my-0.5 rounded-md flex items-center cursor-pointer justify-between`}
84
102
  onClick={() => {
85
103
  setShowFilterSubmenu(true);
86
- setSelectedOptionMenu(option.menu);
104
+ setDataSelectionOptionMenu(option.menu);
87
105
  }}
88
106
  >
89
107
  <p>{option.menu}</p>
90
108
  {
91
- option.submenu.length > 0 &&
92
- <PiCaretRight size={16} className='text-neutral300' />
109
+ option.type == "checkbox" ?
110
+ dataFilterCheckbox.length == 0 ?
111
+ <PiCaretRight size={16} className='text-neutral300' />
112
+ : <div className='w-4 h-4 border border-primary500 rounded-full flex items-center justify-center text-primary500'><p style={{fontSize:"8px"}}>{dataFilterCheckbox.length}</p></div>
113
+ :
114
+ dataFilterStatus.length == 0 ?
115
+ <PiCaretRight size={16} className='text-neutral300' />
116
+ : <div className='w-4 h-4 border border-primary500 rounded-full flex items-center justify-center text-primary500'><p style={{fontSize:"8px"}}>{dataFilterStatus.length}</p></div>
93
117
  }
94
118
  </div>
95
119
  {
96
- showFilterSubmenu && option.submenu.length > 0 && selectedOptionMenu === option.menu &&
120
+ showFilterSubmenu && option.submenu.length > 0 && dataSelectionOptionMenu === option.menu &&
97
121
  <div className="bg-white p-3 shadow-md rounded-md max-w-[180px] w-full absolute -right-[185px] top-0 cursor-pointer">
98
122
  {
99
123
  option.submenu.map((submenu, subIndex) => (
100
124
  <div key={subIndex} className='flex bg-white hover:bg-neutral20 rounded-md py-2.5 px-4 my-0.5'
101
125
  onClick={() => {
102
- if (type === "checkbox") {
126
+ if (option.type === "checkbox") {
103
127
  handleClickSubmenuCheckbox(submenu);
104
- } else if (type === "radiobutton") {
128
+ } else if (option.type === "radiobutton") {
105
129
  handleClickSubmenuRadioButton(submenu);
106
130
  }
107
131
  }}
108
132
  >
109
133
  {
110
- type === "checkbox" &&
111
- <input
112
- type='checkbox'
113
- className='mr-2'
114
- checked={selectedOptionSubmenu.includes(submenu)}
115
- onChange={() => handleClickSubmenuCheckbox(submenu)}
116
- />
134
+ option.type === "checkbox" &&
135
+ <div className='flex items-center'>
136
+ <input
137
+ type='checkbox'
138
+ className='mr-2'
139
+ checked={dataFilterCheckbox.includes(submenu)}
140
+ onChange={() => handleClickSubmenuCheckbox(submenu)}
141
+ />
142
+ <p className={`text-sm ${dataFilterCheckbox.includes(submenu) ? 'text-primary500' : 'text-black'}`}>
143
+ {submenu}
144
+ </p>
145
+ </div>
117
146
  }
118
147
  {
119
- type === "radiobutton" &&
120
- <input
121
- type='radio'
122
- className='mr-2'
123
- checked={selectedOptionSubmenu.includes(submenu)}
124
- onChange={() => handleClickSubmenuRadioButton(submenu)}
125
- />
148
+ option.type === "radiobutton" &&
149
+ <div className='flex items-center'>
150
+ <input
151
+ type='radio'
152
+ className='mr-2'
153
+ checked={dataFilterStatus.includes(submenu)}
154
+ onChange={() => handleClickSubmenuRadioButton(submenu)}
155
+ />
156
+ <p className={`text-sm ${dataFilterStatus.includes(submenu) ? 'text-primary500' : 'text-black'}`}>
157
+ {submenu}
158
+ </p>
159
+ </div>
126
160
  }
127
- <p className={`text-sm ${selectedOptionSubmenu.includes(submenu) ? 'text-primary500' : 'text-black'}`}>
128
- {submenu}
129
- </p>
130
161
  </div>
131
162
  ))
132
163
  }
package/src/index.js CHANGED
@@ -1,71 +1,70 @@
1
- // import './index.css';
1
+ import './index.css';
2
2
 
3
- // import { BrowserRouter as Router } from 'react-router-dom';
3
+ import { BrowserRouter as Router } from 'react-router-dom';
4
4
 
5
- // import React from 'react';
6
- // import ReactDOM from 'react-dom/client';
7
- // import App from './App';
5
+ import React from 'react';
6
+ import ReactDOM from 'react-dom/client';
7
+ import App from './App';
8
8
 
9
- // const root = ReactDOM.createRoot(document.getElementById('root'));
10
- // root.render(
11
- // <React.StrictMode>
12
- // <Router> {/* Wrap your App component with Router */}
13
- // <App />
14
- // </Router>
15
- // </React.StrictMode>
16
- // );
9
+ const root = ReactDOM.createRoot(document.getElementById('root'));
10
+ root.render(
11
+ <React.StrictMode>
12
+ <Router> {/* Wrap your App component with Router */}
13
+ <App />
14
+ </Router>
15
+ </React.StrictMode>
16
+ );
17
17
 
18
18
 
19
- import './index.css';
20
- import Alert from './components/alert'
21
- import DangerButton from './components/button/dangerbutton'
22
- import OutlineButton from './components/button/outlinebutton'
23
- import PrimaryButton from './components/button/primarybutton'
24
- import CardInternalProduct from './components/card';
25
- import Chip from './components/chip'
26
- import CustomDatePicker from './components/datepicker';
27
- import Description from './components/description';
28
- import DropdownCard from './components/dropdown/dropdownCard';
29
- import DropdownChip from './components/dropdown/dropdownChip';
30
- import DropdownText from './components/dropdown/dropdownText';
31
- import DropzoneUploadFile from './components/dropzone/uploadfile';
32
- import DropzoneUploadPhoto from './components/dropzone/uploadphoto';
33
- import EmptyData from './components/emptystate/table/emptydata';
34
- import NotFound from './components/emptystate/table/notfound';
35
- import ExportToExcel from './components/export/excel';
36
- import FilterCheckbox from './components/filter/filterCheckbox';
37
- import FilterText from './components/filter/filterText';
38
- import Menu from './components/menu';
39
- import { PiCaretDown, PiCaretUp } from 'react-icons/pi';
40
- import ModalLoading from './components/modal/modalLoading';
41
- import ModalResult from './components/modal/modalResult';
42
- import ModalState from './components/modal/modalState';
43
- import Notification from './components/notification';
44
- import SearchInput from './components/searchinput';
45
- import Stepper from './components/stepper';
46
- import Switch from './components/switch';
47
- import ChipBar from './components/tabLayout/chipBar';
48
- import TabBar from './components/tabLayout/tabBar';
49
- import BillerList from './components/table/listTable/biller';
50
- import BillerProductList from './components/table/listTable/product/billerproduct';
51
- import InternalProductList from './components/table/listTable/product/internalproduct';
52
- import ReportList from './components/table/listTable/report/businessadmin';
53
- import ReportListClient from './components/table/listTable/report/clientadmin';
54
- import Pagination from './components/table/pagination';
55
- import TextInput from './components/textinput';
56
- import HeaderTable from './components/table/headerTable';
57
- import BillingList from './components/table/listTable/billing';
58
- import ModalBilling from './components/modal/modalBilling';
59
- import LimitList from './components/table/listTable/limit';
60
- import ModalLimit from './components/modal/modalLimit';
61
- import VerticalStepBar from './components/verticalstepbar';
62
- import DepositList from './components/table/listTable/deposit';
63
- import ModalDeposit from './components/modal/modalDeposit';
64
- import CellModelOne from './components/table/listTable/cellmodelone';
65
- import SearchDropdown from './components/searchdropdown';
66
- import FilterDropdown from './components/filter/filterDropdown';
19
+ // import './index.css';
20
+ // import Alert from './components/alert'
21
+ // import DangerButton from './components/button/dangerbutton'
22
+ // import OutlineButton from './components/button/outlinebutton'
23
+ // import PrimaryButton from './components/button/primarybutton'
24
+ // import CardInternalProduct from './components/card';
25
+ // import Chip from './components/chip'
26
+ // import CustomDatePicker from './components/datepicker';
27
+ // import Description from './components/description';
28
+ // import DropdownCard from './components/dropdown/dropdownCard';
29
+ // import DropdownChip from './components/dropdown/dropdownChip';
30
+ // import DropdownText from './components/dropdown/dropdownText';
31
+ // import DropzoneUploadFile from './components/dropzone/uploadfile';
32
+ // import DropzoneUploadPhoto from './components/dropzone/uploadphoto';
33
+ // import EmptyData from './components/emptystate/table/emptydata';
34
+ // import NotFound from './components/emptystate/table/notfound';
35
+ // import ExportToExcel from './components/export/excel';
36
+ // import FilterCheckbox from './components/filter/filterCheckbox';
37
+ // import FilterText from './components/filter/filterText';
38
+ // import Menu from './components/menu';
39
+ // import ModalLoading from './components/modal/modalLoading';
40
+ // import ModalResult from './components/modal/modalResult';
41
+ // import ModalState from './components/modal/modalState';
42
+ // import Notification from './components/notification';
43
+ // import SearchInput from './components/searchinput';
44
+ // import Stepper from './components/stepper';
45
+ // import Switch from './components/switch';
46
+ // import ChipBar from './components/tabLayout/chipBar';
47
+ // import TabBar from './components/tabLayout/tabBar';
48
+ // import BillerList from './components/table/listTable/biller';
49
+ // import BillerProductList from './components/table/listTable/product/billerproduct';
50
+ // import InternalProductList from './components/table/listTable/product/internalproduct';
51
+ // import ReportList from './components/table/listTable/report/businessadmin';
52
+ // import ReportListClient from './components/table/listTable/report/clientadmin';
53
+ // import Pagination from './components/table/pagination';
54
+ // import TextInput from './components/textinput';
55
+ // import HeaderTable from './components/table/headerTable';
56
+ // import BillingList from './components/table/listTable/billing';
57
+ // import ModalBilling from './components/modal/modalBilling';
58
+ // import LimitList from './components/table/listTable/limit';
59
+ // import ModalLimit from './components/modal/modalLimit';
60
+ // import VerticalStepBar from './components/verticalstepbar';
61
+ // import DepositList from './components/table/listTable/deposit';
62
+ // import ModalDeposit from './components/modal/modalDeposit';
63
+ // import CellModelOne from './components/table/listTable/cellmodelone';
64
+ // import SearchDropdown from './components/searchdropdown';
65
+ // import FilterDropdown from './components/filter/filterDropdown';
67
66
 
68
67
 
69
- export {CellModelOne, SearchDropdown, FilterDropdown, HeaderTable, TextInput, Pagination, ReportList, ReportListClient, InternalProductList, BillerProductList, BillerList, TabBar, ChipBar, Switch, Stepper,
70
- SearchInput, Notification, ModalState, ModalResult, ModalLoading, Menu, FilterText, FilterCheckbox, ExportToExcel, NotFound, EmptyData, DropzoneUploadPhoto, DropzoneUploadFile, DropdownText, DropdownChip, DropdownCard, Description, CustomDatePicker, Chip, CardInternalProduct, PrimaryButton, OutlineButton,
71
- DangerButton, Alert, BillingList, ModalBilling, LimitList, ModalLimit, VerticalStepBar, DepositList, ModalDeposit}
68
+ // export {CellModelOne, SearchDropdown, FilterDropdown, HeaderTable, TextInput, Pagination, ReportList, ReportListClient, InternalProductList, BillerProductList, BillerList, TabBar, ChipBar, Switch, Stepper,
69
+ // SearchInput, Notification, ModalState, ModalResult, ModalLoading, Menu, FilterText, FilterCheckbox, ExportToExcel, NotFound, EmptyData, DropzoneUploadPhoto, DropzoneUploadFile, DropdownText, DropdownChip, DropdownCard, Description, CustomDatePicker, Chip, CardInternalProduct, PrimaryButton, OutlineButton,
70
+ // DangerButton, Alert, BillingList, ModalBilling, LimitList, ModalLimit, VerticalStepBar, DepositList, ModalDeposit}
@@ -944,12 +944,14 @@ const Templates = () => {
944
944
  options = {[
945
945
  {
946
946
  menu:"Type",
947
- submenu:["Type 1", "Type 2"]
947
+ submenu:["Type 1", "Type 2"],
948
+ type:"checkbox"
948
949
  },
949
950
  {
950
- menu:"Company",
951
- submenu:["Company 1", "Company 2"]
952
- }
951
+ menu:"Status",
952
+ submenu:["Status 1", "Status 2"],
953
+ type:"radiobutton"
954
+ },
953
955
  ]}
954
956
  selectedOptionMenu={selectedMenuCheckbox}
955
957
  setSelectedOptionMenu={setSelectedMenuCheckbox}
@@ -957,25 +959,6 @@ const Templates = () => {
957
959
  setSelectedOptionSubmenu={setSelectedSubmenuCheckbox}
958
960
  />
959
961
 
960
- <div className='m-9'></div>
961
- <FilterDropdown
962
- type='radiobutton'
963
- options = {[
964
- {
965
- menu:"Type",
966
- submenu:["Type 1", "Type 2"]
967
- },
968
- {
969
- menu:"Company",
970
- submenu:["Company 1", "Company 2"]
971
- }
972
- ]}
973
- selectedOptionMenu={selectedMenuRadioButton}
974
- setSelectedOptionMenu={setSelectedMenuRadioButton}
975
- selectedOptionSubmenu={selectedSubmenuRadioButton}
976
- setSelectedOptionSubmenu={setSelectedSubmenuRadioButton}
977
- />
978
-
979
962
  <div className='m-9'></div>
980
963
  <p className='text-black font-bold text-2xl text-center py-2'>Menu</p>
981
964
  <div>