sales-frontend-components 0.0.70 → 0.0.71

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.d.ts CHANGED
@@ -209,6 +209,29 @@ declare const useAddressComponent: () => {
209
209
  AddressSearchComponent: () => react_jsx_runtime.JSX.Element;
210
210
  };
211
211
 
212
+ interface BankStockItem {
213
+ label: string;
214
+ value: string;
215
+ Icon: React.ComponentType<React.SVGProps<SVGSVGElement>>;
216
+ }
217
+ interface BankStockSearchModalProps {
218
+ open: boolean;
219
+ onClose: () => void;
220
+ onSelect: (item: BankStockItem) => void;
221
+ }
222
+
223
+ declare function BankStockSearchModal({ open, onClose, onSelect }: BankStockSearchModalProps): react_jsx_runtime.JSX.Element;
224
+
225
+ declare function useBankStockSearch({ onSelect }: {
226
+ onSelect: (item: BankStockItem) => void;
227
+ }): {
228
+ searchKeyword: string;
229
+ setSearchKeyword: React$1.Dispatch<React$1.SetStateAction<string>>;
230
+ bankList: BankStockItem[];
231
+ stockList: BankStockItem[];
232
+ handleSelect: (item: BankStockItem) => void;
233
+ };
234
+
212
235
  declare function useJobVehicleSearchModal(): {
213
236
  selectedJob: sales_frontend_api_method.OccupationResponseDto | null;
214
237
  selectedVehicle: sales_frontend_api_method.VehicleTypeResponseDto | undefined;
@@ -224,5 +247,5 @@ interface JobSearchModalProps {
224
247
  }
225
248
  declare const JobSearchModal: React__default.FC<JobSearchModalProps>;
226
249
 
227
- export { Attachment, FormCheckbox, FormCheckboxButton, FormDatePicker, FormDateRangePicker, FormSearchJobField, FormSegmentGroup, FormSelect, FormTextField, JobSearchModal, StepIndicator, resize, testSignatureBase64Data, useAddressComponent, useCamera, useCanvasPaint, useJobVehicleSearchModal, useSearchAddress };
228
- export type { AttachedPhoto, AttachmentProps, DownloadProps, PaintProps, Pen, StepIndicatorProps, StepItem, cameraItemType, cameraOptions };
250
+ export { Attachment, BankStockSearchModal, FormCheckbox, FormCheckboxButton, FormDatePicker, FormDateRangePicker, FormSearchJobField, FormSegmentGroup, FormSelect, FormTextField, JobSearchModal, StepIndicator, resize, testSignatureBase64Data, useAddressComponent, useBankStockSearch, useCamera, useCanvasPaint, useJobVehicleSearchModal, useSearchAddress };
251
+ export type { AttachedPhoto, AttachmentProps, BankStockItem, BankStockSearchModalProps, DownloadProps, PaintProps, Pen, StepIndicatorProps, StepItem, cameraItemType, cameraOptions };
package/dist/index.esm.js CHANGED
@@ -1,14 +1,16 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { useController } from 'react-hook-form';
3
3
  import { CheckboxButton, Checkbox, DatePicker, DateRangePicker, Accordion, Radio, Table, Button, FormField, Select, Tab, Icon, useModalState, Modal, SegmentGroup, ModalUtils, FormCore, RadioGroup } from 'sales-frontend-design-system';
4
- import React, { useState, useEffect, useRef, useCallback } from 'react';
4
+ import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
5
5
  import { useSearchOccupationQuery, useSearchModalAddressQuery, useSearchVehicleQuery } from 'sales-frontend-api/method';
6
6
  import styles from './modal/pre-standard/job-search-modal/job-search-modal.module.scss';
7
7
  import styles$1 from './step-indicator/step-indicator.module.scss';
8
8
  import styles$2 from './camera/camera.module.scss';
9
9
  import styles$3 from './modal/standard/address-search/select-address.module.scss';
10
- import styles$4 from './modal/pre-standard/job-vehicle-search-modal/job-vehicle-search-modal.module.scss';
11
- import styles$5 from './modal/pre-standard/vehicle-search-modal/vehicle-search-modal.module.scss';
10
+ import styles$4 from './modal/standard/bank-stock-search/bank-stock-search-modal.module.scss';
11
+ import { IconGraphicsBankHsbc, IconGraphicsBankKebHana, IconGraphicsBankScJeil, IconGraphicsBankGyeongnam, IconGraphicsBankGwangju, IconGraphicsBankKukmin, IconGraphicsBankKiup, IconGraphicsBankJiyeokNonghyeop, IconGraphicsBankNhNonghyeop, IconGraphicsBankDaegu, IconGraphicsBankBusan, IconGraphicsBankSanlim, IconGraphicsBankSaneop, IconGraphicsBankSaemaulGeumgo, IconGraphicsBankSuhyeop, IconGraphicsBankSinhan, IconGraphicsBankSinhyeop, IconGraphicsBankOehwan, IconGraphicsBankWoori, IconGraphicsBankPost, IconGraphicsBankJeochuk, IconGraphicsBankJeonbuk, IconGraphicsBankJeju, IconGraphicsBankKakaoBank, IconGraphicsBankKBank, IconGraphicsBankHankookCity, IconGraphicsStockDbGeumyungTujajeungkwon, IconGraphicsStockKbJeungkwon, IconGraphicsStockNhWooriTujajeungkwon, IconGraphicsStockNhTujajeungkwon, IconGraphicsStockSkJeungkwon, IconGraphicsStockGyoboJeungkwon, IconGraphicsStockDaesinJeungkwon, IconGraphicsStockMeritzJeungkwon, IconGraphicsStockMiraeAssetJeungkwon, IconGraphicsStockBugukJeungkwon, IconGraphicsStockSamsungJeungkwon, IconGraphicsStockSinyeongJeungkwon, IconGraphicsStockSinhanTujajeungkwon, IconGraphicsStockYuantaJeungkwon, IconGraphicsStockYujinTujajeungkwon, IconGraphicsStockKiwoomJeungkwon, IconGraphicsStockHanaGeumyungTujajeungkwon, IconGraphicsStockHiTujajeungkwon, IconGraphicsStockHankookJeungkwonGeumyung, IconGraphicsStockHankookTujajeungkwon, IconGraphicsStockHanwhaTujajeungkwon, IconGraphicsStockHyundaiChaJeungkwon, IconGraphicsStockHochulEopsum } from 'sales-frontend-assets';
12
+ import styles$5 from './modal/pre-standard/job-vehicle-search-modal/job-vehicle-search-modal.module.scss';
13
+ import styles$6 from './modal/pre-standard/vehicle-search-modal/vehicle-search-modal.module.scss';
12
14
 
13
15
  const FormCheckboxButton = ({
14
16
  name,
@@ -1663,7 +1665,111 @@ const useAddressComponent = () => {
1663
1665
  };
1664
1666
  };
1665
1667
 
1666
- const cx$2 = classNames.bind(styles$4);
1668
+ const BANK_LIST = [
1669
+ { label: "HSBC", value: "HSBC", Icon: IconGraphicsBankHsbc },
1670
+ { label: "KEB\uD558\uB098", value: "KEB\uD558\uB098", Icon: IconGraphicsBankKebHana },
1671
+ { label: "SC\uC81C\uC77C", value: "SC\uC81C\uC77C", Icon: IconGraphicsBankScJeil },
1672
+ { label: "\uACBD\uB0A8", value: "\uACBD\uB0A8", Icon: IconGraphicsBankGyeongnam },
1673
+ { label: "\uAD11\uC8FC", value: "\uAD11\uC8FC", Icon: IconGraphicsBankGwangju },
1674
+ { label: "\uAD6D\uBBFC", value: "\uAD6D\uBBFC", Icon: IconGraphicsBankKukmin },
1675
+ { label: "\uAE30\uC5C5", value: "\uAE30\uC5C5", Icon: IconGraphicsBankKiup },
1676
+ { label: "\uC9C0\uC5ED\uB18D\uD611", value: "\uC9C0\uC5ED\uB18D\uD611", Icon: IconGraphicsBankJiyeokNonghyeop },
1677
+ { label: "NH\uB18D\uD611", value: "NH\uB18D\uD611", Icon: IconGraphicsBankNhNonghyeop },
1678
+ { label: "\uB300\uAD6C", value: "\uB300\uAD6C", Icon: IconGraphicsBankDaegu },
1679
+ { label: "\uBD80\uC0B0", value: "\uBD80\uC0B0", Icon: IconGraphicsBankBusan },
1680
+ { label: "\uC0B0\uB9BC\uC870\uD569", value: "\uC0B0\uB9BC\uC870\uD569", Icon: IconGraphicsBankSanlim },
1681
+ { label: "\uC0B0\uC5C5", value: "\uC0B0\uC5C5", Icon: IconGraphicsBankSaneop },
1682
+ { label: "\uC0C8\uB9C8\uC744\uAE08\uACE0", value: "\uC0C8\uB9C8\uC744\uAE08\uACE0", Icon: IconGraphicsBankSaemaulGeumgo },
1683
+ { label: "\uC218\uD611", value: "\uC218\uD611", Icon: IconGraphicsBankSuhyeop },
1684
+ { label: "\uC2E0\uD55C", value: "\uC2E0\uD55C", Icon: IconGraphicsBankSinhan },
1685
+ { label: "\uC2E0\uD611", value: "\uC2E0\uD611", Icon: IconGraphicsBankSinhyeop },
1686
+ { label: "\uC678\uD658", value: "\uC678\uD658", Icon: IconGraphicsBankOehwan },
1687
+ { label: "\uC6B0\uB9AC", value: "\uC6B0\uB9AC", Icon: IconGraphicsBankWoori },
1688
+ { label: "\uC6B0\uCCB4\uAD6D", value: "\uC6B0\uCCB4\uAD6D", Icon: IconGraphicsBankPost },
1689
+ { label: "\uC800\uCD95", value: "\uC800\uCD95", Icon: IconGraphicsBankJeochuk },
1690
+ { label: "\uC804\uBD81", value: "\uC804\uBD81", Icon: IconGraphicsBankJeonbuk },
1691
+ { label: "\uC81C\uC8FC", value: "\uC81C\uC8FC", Icon: IconGraphicsBankJeju },
1692
+ { label: "\uCE74\uCE74\uC624\uBC45\uD06C", value: "\uCE74\uCE74\uC624\uBC45\uD06C", Icon: IconGraphicsBankKakaoBank },
1693
+ { label: "\uCF00\uC774\uBC45\uD06C", value: "\uCF00\uC774\uBC45\uD06C", Icon: IconGraphicsBankKBank },
1694
+ { label: "\uD55C\uAD6D\uC528\uD2F0", value: "\uD55C\uAD6D\uC528\uD2F0", Icon: IconGraphicsBankHankookCity }
1695
+ ];
1696
+ const STOCK_LIST = [
1697
+ { label: "DB\uAE08\uC735\n\uD22C\uC790\uC99D\uAD8C", value: "DB\uAE08\uC735\uD22C\uC790", Icon: IconGraphicsStockDbGeumyungTujajeungkwon },
1698
+ { label: "KB\uC99D\uAD8C", value: "KB\uC99D\uAD8C", Icon: IconGraphicsStockKbJeungkwon },
1699
+ { label: "NH(\uC6B0\uB9AC)\n\uD22C\uC790\uC99D\uAD8C", value: "NH(\uC6B0\uB9AC)\uD22C\uC790\uC99D\uAD8C", Icon: IconGraphicsStockNhWooriTujajeungkwon },
1700
+ { label: "NH\n\uD22C\uC790\uC99D\uAD8C", value: "NH\uD22C\uC790\uC99D\uAD8C", Icon: IconGraphicsStockNhTujajeungkwon },
1701
+ { label: "SK\uC99D\uAD8C", value: "SK\uC99D\uAD8C", Icon: IconGraphicsStockSkJeungkwon },
1702
+ { label: "\uAD50\uBCF4\uC99D\uAD8C", value: "\uAD50\uBCF4\uC99D\uAD8C", Icon: IconGraphicsStockGyoboJeungkwon },
1703
+ { label: "\uB300\uC2E0\uC99D\uAD8C", value: "\uB300\uC2E0\uC99D\uAD8C", Icon: IconGraphicsStockDaesinJeungkwon },
1704
+ { label: "\uBA54\uB9AC\uCE20\uC99D\uAD8C", value: "\uBA54\uB9AC\uCE20\uC99D\uAD8C", Icon: IconGraphicsStockMeritzJeungkwon },
1705
+ { label: "\uBBF8\uB798\uC5D0\uC14B\n\uC99D\uAD8C", value: "\uBBF8\uB798\uC5D0\uC14B\uC99D\uAD8C", Icon: IconGraphicsStockMiraeAssetJeungkwon },
1706
+ { label: "\uBD80\uAD6D\uC99D\uAD8C", value: "\uBD80\uAD6D\uC99D\uAD8C", Icon: IconGraphicsStockBugukJeungkwon },
1707
+ { label: "\uC0BC\uC131\uC99D\uAD8C", value: "\uC0BC\uC131\uC99D\uAD8C", Icon: IconGraphicsStockSamsungJeungkwon },
1708
+ { label: "\uC2E0\uC601\uC99D\uAD8C", value: "\uC2E0\uC601\uC99D\uAD8C", Icon: IconGraphicsStockSinyeongJeungkwon },
1709
+ { label: "\uC2E0\uD55C\uAE08\uC735\n\uD22C\uC790\uC99D\uAD8C", value: "\uC2E0\uD55C\uAE08\uC735\uD22C\uC790\uC99D\uAD8C", Icon: IconGraphicsStockSinhanTujajeungkwon },
1710
+ { label: "\uC720\uC548\uD0C0\uC99D\uAD8C", value: "\uC720\uC548\uD0C0\uC99D\uAD8C", Icon: IconGraphicsStockYuantaJeungkwon },
1711
+ { label: "\uC720\uC9C4\n\uD22C\uC790\uC99D\uAD8C", value: "\uC720\uC9C4\uD22C\uC790\uC99D\uAD8C", Icon: IconGraphicsStockYujinTujajeungkwon },
1712
+ { label: "\uD0A4\uC6C0\uC99D\uAD8C", value: "\uD0A4\uC6C0\uC99D\uAD8C", Icon: IconGraphicsStockKiwoomJeungkwon },
1713
+ { label: "\uD558\uB098\uAE08\uC735\n\uD22C\uC790\uC99D\uAD8C", value: "\uD558\uB098\uAE08\uC735\uD22C\uC790\uC99D\uAD8C", Icon: IconGraphicsStockHanaGeumyungTujajeungkwon },
1714
+ { label: "\uD558\uC774\n\uD22C\uC790\uC99D\uAD8C", value: "\uD558\uC774\uD22C\uC790\uC99D\uAD8C", Icon: IconGraphicsStockHiTujajeungkwon },
1715
+ { label: "\uD55C\uAD6D\uC99D\uAD8C\n\uAE08\uC735", value: "\uD55C\uAD6D\uC99D\uAD8C\uAE08\uC735", Icon: IconGraphicsStockHankookJeungkwonGeumyung },
1716
+ { label: "\uD55C\uAD6D\n\uD22C\uC790\uC99D\uAD8C", value: "\uD55C\uAD6D\uD22C\uC790\uC99D\uAD8C", Icon: IconGraphicsStockHankookTujajeungkwon },
1717
+ { label: "\uD55C\uD654\n\uD22C\uC790\uC99D\uAD8C", value: "\uD55C\uD654\uD22C\uC790\uC99D\uAD8C", Icon: IconGraphicsStockHanwhaTujajeungkwon },
1718
+ { label: "\uD604\uB300\uCC28\uC99D\uAD8C", value: "\uD604\uB300\uCC28\uC99D\uAD8C", Icon: IconGraphicsStockHyundaiChaJeungkwon },
1719
+ { label: "\uD638\uCD9C\uC5C6\uC74C", value: "\uD638\uCD9C\uC5C6\uC74C", Icon: IconGraphicsStockHochulEopsum }
1720
+ ];
1721
+ function useBankStockSearch({ onSelect }) {
1722
+ const [searchKeyword, setSearchKeyword] = useState("");
1723
+ const bankList = useMemo(() => BANK_LIST.filter((bank) => bank.label.includes(searchKeyword)), [searchKeyword]);
1724
+ const stockList = useMemo(() => STOCK_LIST.filter((stock) => stock.label.includes(searchKeyword)), [searchKeyword]);
1725
+ const handleSelect = (item) => {
1726
+ onSelect(item);
1727
+ };
1728
+ return {
1729
+ searchKeyword,
1730
+ setSearchKeyword,
1731
+ bankList,
1732
+ stockList,
1733
+ handleSelect
1734
+ };
1735
+ }
1736
+
1737
+ function chunk(array, size) {
1738
+ return Array.from({ length: Math.ceil(array.length / size) }, (v, i) => array.slice(i * size, i * size + size));
1739
+ }
1740
+ function BankStockSearchModal({ open, onClose, onSelect }) {
1741
+ const { bankList, stockList, handleSelect } = useBankStockSearch({
1742
+ onSelect
1743
+ });
1744
+ const renderItems = (list) => {
1745
+ const chunkedList = chunk(list, 5);
1746
+ return /* @__PURE__ */ jsx("div", { className: styles$4["list-container"], children: chunkedList.map((chunk2, chunkIndex) => /* @__PURE__ */ jsxs("div", { className: styles$4.row, children: [
1747
+ chunk2.map((item) => /* @__PURE__ */ jsxs("div", { className: styles$4.item, onClick: () => handleSelect(item), children: [
1748
+ /* @__PURE__ */ jsx("div", { className: styles$4["icon-wrapper"], children: /* @__PURE__ */ jsx(item.Icon, {}) }),
1749
+ /* @__PURE__ */ jsx("span", { children: item.label })
1750
+ ] }, item.value)),
1751
+ chunk2.length < 5 && Array.from({ length: 5 - chunk2.length }).map((_, i) => /* @__PURE__ */ jsx("div", { className: styles$4.item, style: { visibility: "hidden" } }, `placeholder-${chunkIndex}-${i}`))
1752
+ ] }, chunkIndex)) });
1753
+ };
1754
+ return /* @__PURE__ */ jsxs(Modal.Root, { isOpen: open, onClose, modalSize: "full-screen", children: [
1755
+ /* @__PURE__ */ jsx(Modal.Overlay, {}),
1756
+ /* @__PURE__ */ jsxs(Modal.Content, { children: [
1757
+ /* @__PURE__ */ jsx(Modal.Header, { headerTitle: "\uC740\uD589/\uC99D\uAD8C\uC0AC \uC120\uD0DD", showCloseButton: true }),
1758
+ /* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsxs("div", { className: styles$4.container, children: [
1759
+ /* @__PURE__ */ jsxs("div", { className: styles$4.section, children: [
1760
+ /* @__PURE__ */ jsx("p", { className: styles$4["section-title"], children: "\uC740\uD589\uC0AC" }),
1761
+ renderItems(bankList)
1762
+ ] }),
1763
+ /* @__PURE__ */ jsxs("div", { className: styles$4.section, children: [
1764
+ /* @__PURE__ */ jsx("p", { className: styles$4["section-title"], children: "\uC99D\uAD8C\uC0AC" }),
1765
+ renderItems(stockList)
1766
+ ] })
1767
+ ] }) })
1768
+ ] })
1769
+ ] });
1770
+ }
1771
+
1772
+ const cx$2 = classNames.bind(styles$5);
1667
1773
  const JobVehicleSearchGrade = ({ riskGrade, hospitalizationGrade }) => {
1668
1774
  return /* @__PURE__ */ jsxs("div", { className: cx$2("grade-section"), children: [
1669
1775
  /* @__PURE__ */ jsxs("div", { className: cx$2("icon-title"), children: [
@@ -1684,7 +1790,7 @@ const JobVehicleSearchGrade = ({ riskGrade, hospitalizationGrade }) => {
1684
1790
  ] });
1685
1791
  };
1686
1792
 
1687
- const cx$1 = classNames.bind(styles$5);
1793
+ const cx$1 = classNames.bind(styles$6);
1688
1794
  function VehicleSearch({ vehicles, onVehicleSelect }) {
1689
1795
  return /* @__PURE__ */ jsxs("div", { className: cx$1("vehicle-search-section"), children: [
1690
1796
  /* @__PURE__ */ jsx("p", { children: "\uC6B4\uC804 \uCC28\uC885" }),
@@ -1750,7 +1856,7 @@ const useJobVehicleSearch = () => {
1750
1856
  };
1751
1857
  };
1752
1858
 
1753
- const cx = classNames.bind(styles$4);
1859
+ const cx = classNames.bind(styles$5);
1754
1860
  function useJobVehicleSearchModal() {
1755
1861
  const {
1756
1862
  selectedVehicle,
@@ -1855,5 +1961,5 @@ const JobSearchModal = ({ onClose }) => {
1855
1961
  ] });
1856
1962
  };
1857
1963
 
1858
- export { Attachment, FormCheckbox, FormCheckboxButton, FormDatePicker, FormDateRangePicker, FormSearchJobField, FormSegmentGroup, FormSelect, FormTextField, JobSearchModal, StepIndicator, resize, testSignatureBase64Data, useAddressComponent, useCamera, useCanvasPaint, useJobVehicleSearchModal, useSearchAddress };
1964
+ export { Attachment, BankStockSearchModal, FormCheckbox, FormCheckboxButton, FormDatePicker, FormDateRangePicker, FormSearchJobField, FormSegmentGroup, FormSelect, FormTextField, JobSearchModal, StepIndicator, resize, testSignatureBase64Data, useAddressComponent, useBankStockSearch, useCamera, useCanvasPaint, useJobVehicleSearchModal, useSearchAddress };
1859
1965
  //# sourceMappingURL=index.esm.js.map