@sellmate/design-system 1.0.75 → 1.0.77
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/cjs/design-system.cjs.js +2 -2
- package/dist/cjs/{index-Dptupbm0.js → index-CaGGRpd8.js} +1 -1
- package/dist/cjs/index.cjs.js +5 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/sd-action-modal.cjs.entry.js +2 -2
- package/dist/cjs/sd-badge.cjs.entry.js +2 -2
- package/dist/cjs/sd-barcode-input.cjs.entry.js +2 -2
- package/dist/cjs/sd-button-v2_2.cjs.entry.js +3 -3
- package/dist/cjs/sd-button_4.cjs.entry.js +10 -13
- package/dist/cjs/sd-calendar.cjs.entry.js +1 -1
- package/dist/cjs/sd-card.cjs.entry.js +2 -2
- package/dist/cjs/sd-checkbox.cjs.entry.js +7 -4
- package/dist/cjs/sd-chip.cjs.entry.js +2 -2
- package/dist/cjs/sd-circle-progress.cjs.entry.js +3 -3
- package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +4 -4
- package/dist/cjs/sd-date-box.cjs.entry.js +1 -1
- package/dist/cjs/sd-date-picker-calendar.cjs.entry.js +2 -2
- package/dist/cjs/sd-date-picker-trigger.cjs.entry.js +3 -3
- package/dist/cjs/sd-date-picker.cjs.entry.js +3 -3
- package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +2 -2
- package/dist/cjs/sd-date-range-picker.cjs.entry.js +1 -1
- package/dist/cjs/sd-dropdown-button.cjs.entry.js +94 -7
- package/dist/cjs/sd-file-picker.cjs.entry.js +2 -2
- package/dist/cjs/sd-form.cjs.entry.js +1 -1
- package/dist/cjs/sd-ghost-button.cjs.entry.js +11 -6
- package/dist/cjs/sd-guide.cjs.entry.js +2 -2
- package/dist/cjs/{sd-input_2.cjs.entry.js → sd-input.cjs.entry.js} +3 -43
- package/dist/cjs/sd-linear-progress.cjs.entry.js +3 -3
- package/dist/cjs/sd-loading-container.cjs.entry.js +3 -3
- package/dist/cjs/sd-modal-container.cjs.entry.js +77 -69
- package/dist/cjs/sd-number-input.cjs.entry.js +4 -4
- package/dist/cjs/sd-pagination_5.cjs.entry.js +921 -0
- package/dist/cjs/sd-popover.cjs.entry.js +2 -2
- package/dist/cjs/sd-portal.cjs.entry.js +2 -2
- package/dist/cjs/sd-radio-button.cjs.entry.js +7 -2
- package/dist/cjs/sd-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/sd-radio.cjs.entry.js +1 -1
- package/dist/cjs/{sd-select-v2-list-item_4.cjs.entry.js → sd-select-list-item_4.cjs.entry.js} +108 -48
- package/dist/cjs/sd-switch.cjs.entry.js +2 -2
- package/dist/cjs/sd-table.cjs.entry.js +178 -21
- package/dist/cjs/sd-table.config-hnNodd18.js +105 -0
- package/dist/cjs/sd-tabs.cjs.entry.js +2 -2
- package/dist/cjs/sd-tag.cjs.entry.js +3 -3
- package/dist/cjs/sd-td.cjs.entry.js +54 -2
- package/dist/cjs/sd-text-link.cjs.entry.js +4 -4
- package/dist/cjs/sd-textarea.cjs.entry.js +2 -2
- package/dist/cjs/sd-toast-container.cjs.entry.js +2 -2
- package/dist/cjs/sd-toast.cjs.entry.js +3 -3
- package/dist/cjs/sd-toggle.cjs.entry.js +2 -2
- package/dist/cjs/{system-BbCUNhDJ.js → system-DRemSdU1.js} +7 -1
- package/dist/cjs/{tooltipArrow-DuANjCfc.js → tooltipArrow-BEff0q3z.js} +1 -1
- package/dist/collection/collection-manifest.json +11 -21
- package/dist/collection/components/sd-action-modal/sd-action-modal.js +1 -1
- package/dist/collection/components/sd-badge/sd-badge.js +1 -1
- package/dist/collection/components/sd-barcode-input/sd-barcode-input.js +1 -1
- package/dist/collection/components/sd-button-v2/sd-button-v2.js +2 -2
- package/dist/collection/components/sd-card/sd-card.js +1 -1
- package/dist/collection/components/sd-checkbox/sd-checkbox.js +6 -3
- package/dist/collection/components/sd-chip/sd-chip.js +1 -1
- package/dist/collection/components/sd-circle-progress/sd-circle-progress.js +1 -1
- package/dist/collection/components/sd-confirm-modal/sd-confirm-modal.js +2 -2
- package/dist/collection/components/sd-date-picker/sd-date-picker-calendar/sd-date-picker-calendar.js +1 -1
- package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +2 -2
- package/dist/collection/components/sd-date-picker/sd-date-picker.js +2 -2
- package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +1 -1
- package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.js +3 -3
- package/dist/collection/components/sd-field/sd-field.js +5 -8
- package/dist/collection/components/sd-file-picker/sd-file-picker.js +1 -1
- package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +1 -1
- package/dist/collection/components/sd-ghost-button/sd-ghost-button.js +10 -5
- package/dist/collection/components/sd-input/sd-input.js +2 -2
- package/dist/collection/components/sd-linear-progress/sd-linear-progress.js +1 -1
- package/dist/collection/components/sd-loading-container/sd-loading-container.js +2 -2
- package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +1 -1
- package/dist/collection/components/sd-modal-container/sd-modal-container.js +77 -71
- package/dist/collection/components/sd-number-input/sd-number-input.js +3 -3
- package/dist/collection/components/sd-pagination/sd-pagination.js +3 -3
- package/dist/collection/components/sd-portal/sd-portal.js +1 -1
- package/dist/collection/components/sd-radio-button/sd-radio-button.js +6 -1
- package/dist/collection/components/{sd-select-v2/sd-select-v2-list-item/sd-select-v2-list-item.css → sd-select/sd-select-list-item/sd-select-list-item.css} +13 -13
- package/dist/collection/components/{sd-select-v2/sd-select-v2-list-item/sd-select-v2-list-item.js → sd-select/sd-select-list-item/sd-select-list-item.js} +28 -28
- package/dist/collection/components/{sd-select-v2/sd-select-v2-list-item-search/sd-select-v2-list-item-search.css → sd-select/sd-select-list-item-search/sd-select-list-item-search.css} +11 -11
- package/dist/collection/components/{sd-select-v2/sd-select-v2-list-item-search/sd-select-v2-list-item-search.js → sd-select/sd-select-list-item-search/sd-select-list-item-search.js} +13 -13
- package/dist/collection/components/{sd-select-v2/sd-select-v2-listbox/sd-select-v2-listbox.css → sd-select/sd-select-listbox/sd-select-listbox.css} +3 -3
- package/dist/collection/components/{sd-select-v2/sd-select-v2-listbox/sd-select-v2-listbox.js → sd-select/sd-select-listbox/sd-select-listbox.js} +133 -33
- package/dist/collection/components/{sd-select-v2/sd-select-v2-trigger/sd-select-v2-trigger.css → sd-select/sd-select-trigger/sd-select-trigger.css} +7 -7
- package/dist/collection/components/{sd-select-v2/sd-select-v2-trigger/sd-select-v2-trigger.js → sd-select/sd-select-trigger/sd-select-trigger.js} +12 -12
- package/dist/collection/components/sd-select/sd-select.css +3 -47
- package/dist/collection/components/sd-select/sd-select.js +413 -294
- package/dist/collection/components/sd-switch/sd-switch.js +1 -1
- package/dist/collection/components/sd-table/sd-table.config.js +81 -0
- package/dist/collection/components/sd-table/sd-table.css +17 -9
- package/dist/collection/components/sd-table/sd-table.js +179 -21
- package/dist/collection/components/sd-table/sd-tbody/sd-tbody.css +0 -8
- package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +9 -5
- package/dist/collection/components/sd-table/sd-td/sd-td.js +91 -1
- package/dist/collection/components/sd-table/sd-thead/sd-thead.css +16 -12
- package/dist/collection/components/sd-table/sd-thead/sd-thead.js +58 -9
- package/dist/collection/components/sd-table/sd-tr/sd-tr.css +11 -3
- package/dist/collection/components/sd-table/sd-tr/sd-tr.js +75 -12
- package/dist/collection/components/sd-tabs/sd-tabs.js +1 -1
- package/dist/collection/components/sd-tag/sd-tag.js +2 -2
- package/dist/collection/components/sd-text-link/sd-text-link.js +3 -3
- package/dist/collection/components/sd-textarea/sd-textarea.js +1 -1
- package/dist/collection/components/sd-toast/sd-toast.js +2 -2
- package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
- package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
- package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
- package/dist/collection/utils/modal.js +5 -0
- package/dist/collection/utils/testing/index.js +2 -0
- package/dist/collection/utils/testing/mocks.js +35 -0
- package/dist/components/index.js +1 -1
- package/dist/components/p-B6KZfiQ5.js +1 -0
- package/dist/components/{p-CTwEbxRN.js → p-BEOrkEV1.js} +1 -1
- package/dist/components/p-BJJvCBQs.js +1 -0
- package/dist/components/p-BM_PRj8W.js +1 -0
- package/dist/components/p-BR_ZAr48.js +1 -0
- package/dist/components/p-BeNJfxnb.js +1 -0
- package/dist/components/{p-BLwIhCdO.js → p-BfoLbEZx.js} +1 -1
- package/dist/components/p-Bm8Fue-a.js +1 -0
- package/dist/components/{p-DaAhgdib.js → p-BynnUMVZ.js} +1 -1
- package/dist/components/{p-D5HLYqT-.js → p-C52iEAqd.js} +1 -1
- package/dist/components/p-C8Dy_x5h.js +1 -0
- package/dist/components/{p-C3dI7f7C.js → p-CJAQuJik.js} +1 -1
- package/dist/components/{p-iAWNMLXh.js → p-CJqZcEqD.js} +1 -1
- package/dist/components/{p-H-9uoufd.js → p-CNm5Qbf-.js} +1 -1
- package/dist/components/{p-B3xZdEDI.js → p-CQy5JErK.js} +1 -1
- package/dist/components/{p-BgFLSKqC.js → p-CZxeqYuw.js} +1 -1
- package/dist/components/{p-SDBnyM8D.js → p-CkgQbCMR.js} +1 -1
- package/dist/components/p-CvnC61M9.js +1 -0
- package/dist/components/{p-6LtMeKKA.js → p-D1SJ2TMu.js} +1 -1
- package/dist/components/{p-BXdEjuI_.js → p-D2FOkhao.js} +1 -1
- package/dist/components/p-D66nhMt3.js +1 -0
- package/dist/components/p-DDDZWrWj.js +1 -0
- package/dist/components/p-DK3vj3bG.js +1 -0
- package/dist/components/{p-CZPR_5mk.js → p-DcuLMUdl.js} +1 -1
- package/dist/components/p-DxXwz3cY.js +1 -0
- package/dist/components/p-NlCzTjK4.js +1 -0
- package/dist/components/{p-BZm6KN1s.js → p-RpjjrX78.js} +1 -1
- package/dist/components/{p-BM0sVq5Z.js → p-ZH78tQXS.js} +1 -1
- package/dist/components/{p-DQfNwvwx.js → p-ZLsQA11g.js} +1 -1
- package/dist/components/{p-DdJyzIYe.js → p-eGToaKCt.js} +1 -1
- package/dist/components/p-hTUSl23P.js +1 -0
- package/dist/components/p-mqa9-iql.js +1 -0
- package/dist/components/sd-action-modal.js +1 -1
- package/dist/components/sd-badge.js +1 -1
- package/dist/components/sd-barcode-input.js +1 -1
- package/dist/components/sd-button-v2.js +1 -1
- package/dist/components/sd-button.js +1 -1
- package/dist/components/sd-calendar.js +1 -1
- package/dist/components/sd-card.js +1 -1
- package/dist/components/sd-checkbox.js +1 -1
- package/dist/components/sd-chip.js +1 -1
- package/dist/components/sd-circle-progress.js +1 -1
- package/dist/components/sd-confirm-modal.js +1 -1
- package/dist/components/sd-date-box.js +1 -1
- package/dist/components/sd-date-picker-calendar.js +1 -1
- package/dist/components/sd-date-picker-trigger.js +1 -1
- package/dist/components/sd-date-picker.js +1 -1
- package/dist/components/sd-date-range-picker-calendar.js +1 -1
- package/dist/components/sd-date-range-picker.js +1 -1
- package/dist/components/sd-dropdown-button.js +1 -1
- package/dist/components/sd-field.js +1 -1
- package/dist/components/sd-file-picker.js +1 -1
- package/dist/components/sd-floating-portal.js +1 -1
- package/dist/components/sd-form.js +1 -1
- package/dist/components/sd-ghost-button.js +1 -1
- package/dist/components/sd-guide.js +1 -1
- package/dist/components/sd-icon.js +1 -1
- package/dist/components/sd-input.js +1 -1
- package/dist/components/sd-linear-progress.js +1 -1
- package/dist/components/sd-loading-container.js +1 -1
- package/dist/components/sd-loading-modal.js +1 -1
- package/dist/components/sd-modal-container.js +1 -1
- package/dist/components/sd-number-input.js +1 -1
- package/dist/components/sd-pagination.js +1 -1
- package/dist/components/sd-popover.js +1 -1
- package/dist/components/sd-portal.js +1 -1
- package/dist/components/sd-radio-button.js +1 -1
- package/dist/components/sd-radio-group.js +1 -1
- package/dist/components/sd-radio.js +1 -1
- package/dist/components/sd-select-list-item-search.d.ts +11 -0
- package/dist/components/sd-select-list-item-search.js +1 -0
- package/dist/components/{sd-select-multiple.d.ts → sd-select-list-item.d.ts} +4 -4
- package/dist/components/sd-select-list-item.js +1 -0
- package/dist/components/{sd-select-option.d.ts → sd-select-listbox.d.ts} +4 -4
- package/dist/components/sd-select-listbox.js +1 -0
- package/dist/components/{sd-select-group.d.ts → sd-select-trigger.d.ts} +4 -4
- package/dist/components/sd-select-trigger.js +1 -0
- package/dist/components/sd-select.js +1 -1
- package/dist/components/sd-switch.js +1 -1
- package/dist/components/sd-table.js +1 -1
- package/dist/components/sd-tabs.js +1 -1
- package/dist/components/sd-tag.js +1 -1
- package/dist/components/sd-tbody.js +1 -1
- package/dist/components/sd-td.js +1 -1
- package/dist/components/sd-text-link.js +1 -1
- package/dist/components/sd-textarea.js +1 -1
- package/dist/components/sd-thead.js +1 -1
- package/dist/components/sd-toast-container.js +1 -1
- package/dist/components/sd-toast.js +1 -1
- package/dist/components/sd-toggle.js +1 -1
- package/dist/components/sd-tooltip.js +1 -1
- package/dist/components/sd-tr.js +1 -1
- package/dist/design-system/design-system.css +1 -1
- package/dist/design-system/design-system.esm.js +1 -1
- package/dist/design-system/index.esm.js +1 -1
- package/dist/design-system/{p-dad07e1a.entry.js → p-120df622.entry.js} +1 -1
- package/dist/design-system/{p-6af9e663.entry.js → p-28b727df.entry.js} +1 -1
- package/dist/design-system/{p-05a1c092.entry.js → p-2cd2fb76.entry.js} +1 -1
- package/dist/design-system/p-3f9d60a0.entry.js +1 -0
- package/dist/design-system/p-400b3676.entry.js +1 -0
- package/dist/design-system/{p-2eb910ec.entry.js → p-41ea33fb.entry.js} +1 -1
- package/dist/design-system/{p-c7bcb232.entry.js → p-42906763.entry.js} +1 -1
- package/dist/design-system/p-42a8f8a2.entry.js +1 -0
- package/dist/design-system/{p-fdcfaa7c.entry.js → p-43ffe7b0.entry.js} +1 -1
- package/dist/design-system/p-4ad9a5b8.entry.js +1 -0
- package/dist/design-system/{p-3a9559ee.entry.js → p-504033e8.entry.js} +1 -1
- package/dist/design-system/p-64d3c984.entry.js +1 -0
- package/dist/design-system/{p-ce3d0f9c.entry.js → p-67f88b1a.entry.js} +1 -1
- package/dist/design-system/{p-6a3f8588.entry.js → p-68d0fa15.entry.js} +1 -1
- package/dist/design-system/p-6dc47f4c.entry.js +1 -0
- package/dist/design-system/{p-d6896893.entry.js → p-6f9b0b32.entry.js} +1 -1
- package/dist/design-system/{p-3ca5c303.entry.js → p-704dc1f1.entry.js} +1 -1
- package/dist/design-system/{p-17cd3a33.entry.js → p-732ee178.entry.js} +1 -1
- package/dist/design-system/{p-8200b5f2.entry.js → p-7d892b68.entry.js} +1 -1
- package/dist/design-system/{p-16a15368.entry.js → p-809e616c.entry.js} +1 -1
- package/dist/design-system/p-80c51996.entry.js +1 -0
- package/dist/design-system/{p-b745cd95.entry.js → p-889971bc.entry.js} +1 -1
- package/dist/design-system/{p-33bec0e3.entry.js → p-8abc2413.entry.js} +1 -1
- package/dist/design-system/{p-bb492ba7.entry.js → p-970f9ea5.entry.js} +1 -1
- package/dist/design-system/p-BHmXH7dZ.js +2 -0
- package/dist/design-system/{p-BgFLSKqC.js → p-CZxeqYuw.js} +1 -1
- package/dist/design-system/p-DDDZWrWj.js +1 -0
- package/dist/design-system/p-DG7d45mX.js +1 -0
- package/dist/design-system/{p-280dc548.entry.js → p-a69d6a99.entry.js} +1 -1
- package/dist/design-system/{p-49f78122.entry.js → p-ab5a94c8.entry.js} +1 -1
- package/dist/design-system/{p-f4a00276.entry.js → p-ae626d30.entry.js} +1 -1
- package/dist/design-system/p-b9a870bf.entry.js +1 -0
- package/dist/design-system/{p-97ebf578.entry.js → p-bab814c5.entry.js} +1 -1
- package/dist/design-system/{p-eb29dc9f.entry.js → p-c21f30de.entry.js} +1 -1
- package/dist/design-system/p-c863a31d.entry.js +1 -0
- package/dist/design-system/{p-a8bde8d9.entry.js → p-cab35b9a.entry.js} +1 -1
- package/dist/design-system/p-cea424f6.entry.js +1 -0
- package/dist/design-system/p-d8bb2cb4.entry.js +1 -0
- package/dist/design-system/p-dd63e10f.entry.js +1 -0
- package/dist/design-system/p-e04302a2.entry.js +1 -0
- package/dist/design-system/{p-5f6379e9.entry.js → p-e84d1bac.entry.js} +1 -1
- package/dist/design-system/p-ebbffddb.entry.js +1 -0
- package/dist/design-system/{p-d1dfa0e1.entry.js → p-ec02b3e8.entry.js} +1 -1
- package/dist/design-system/{p-8ff967f7.entry.js → p-ed1c4625.entry.js} +1 -1
- package/dist/design-system/{p-2d154fe0.entry.js → p-f06038fd.entry.js} +1 -1
- package/dist/design-system/{p-2cd2f2dd.entry.js → p-f80d10ad.entry.js} +1 -1
- package/dist/design-system/p-fbb7e090.entry.js +1 -0
- package/dist/design-system/{p-a9fc2c21.entry.js → p-feb84f87.entry.js} +1 -1
- package/dist/esm/design-system.js +3 -3
- package/dist/esm/{index-Bp7ytJz5.js → index-BHmXH7dZ.js} +1 -1
- package/dist/esm/index.js +5 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/sd-action-modal.entry.js +2 -2
- package/dist/esm/sd-badge.entry.js +2 -2
- package/dist/esm/sd-barcode-input.entry.js +2 -2
- package/dist/esm/sd-button-v2_2.entry.js +3 -3
- package/dist/esm/sd-button_4.entry.js +10 -13
- package/dist/esm/sd-calendar.entry.js +1 -1
- package/dist/esm/sd-card.entry.js +2 -2
- package/dist/esm/sd-checkbox.entry.js +7 -4
- package/dist/esm/sd-chip.entry.js +2 -2
- package/dist/esm/sd-circle-progress.entry.js +3 -3
- package/dist/esm/sd-confirm-modal_2.entry.js +4 -4
- package/dist/esm/sd-date-box.entry.js +1 -1
- package/dist/esm/sd-date-picker-calendar.entry.js +2 -2
- package/dist/esm/sd-date-picker-trigger.entry.js +3 -3
- package/dist/esm/sd-date-picker.entry.js +3 -3
- package/dist/esm/sd-date-range-picker-calendar.entry.js +2 -2
- package/dist/esm/sd-date-range-picker.entry.js +1 -1
- package/dist/esm/sd-dropdown-button.entry.js +93 -6
- package/dist/esm/sd-file-picker.entry.js +2 -2
- package/dist/esm/sd-form.entry.js +1 -1
- package/dist/esm/sd-ghost-button.entry.js +11 -6
- package/dist/esm/sd-guide.entry.js +2 -2
- package/dist/esm/{sd-input_2.entry.js → sd-input.entry.js} +4 -43
- package/dist/esm/sd-linear-progress.entry.js +3 -3
- package/dist/esm/sd-loading-container.entry.js +3 -3
- package/dist/esm/sd-modal-container.entry.js +77 -69
- package/dist/esm/sd-number-input.entry.js +4 -4
- package/dist/esm/sd-pagination_5.entry.js +915 -0
- package/dist/esm/sd-popover.entry.js +2 -2
- package/dist/esm/sd-portal.entry.js +2 -2
- package/dist/esm/sd-radio-button.entry.js +7 -2
- package/dist/esm/sd-radio-group.entry.js +1 -1
- package/dist/esm/sd-radio.entry.js +1 -1
- package/dist/esm/{sd-select-v2-list-item_4.entry.js → sd-select-list-item_4.entry.js} +105 -45
- package/dist/esm/sd-switch.entry.js +2 -2
- package/dist/esm/sd-table.config-DKkzCQwJ.js +94 -0
- package/dist/esm/sd-table.entry.js +178 -21
- package/dist/esm/sd-tabs.entry.js +2 -2
- package/dist/esm/sd-tag.entry.js +3 -3
- package/dist/esm/sd-td.entry.js +54 -2
- package/dist/esm/sd-text-link.entry.js +4 -4
- package/dist/esm/sd-textarea.entry.js +2 -2
- package/dist/esm/sd-toast-container.entry.js +2 -2
- package/dist/esm/sd-toast.entry.js +3 -3
- package/dist/esm/sd-toggle.entry.js +2 -2
- package/dist/esm/{system-BgFLSKqC.js → system-CZxeqYuw.js} +7 -1
- package/dist/esm/{tooltipArrow-BHRQVawd.js → tooltipArrow-DZ-N5HBq.js} +1 -1
- package/dist/types/components/sd-ghost-button/sd-ghost-button.d.ts +1 -0
- package/dist/types/components/sd-modal-container/sd-modal-container.config.d.ts +1 -1
- package/dist/types/components/sd-modal-container/sd-modal-container.d.ts +6 -4
- package/dist/types/components/sd-radio-button/sd-radio-button.d.ts +1 -0
- package/dist/types/components/{sd-select-v2/sd-select-v2-list-item/sd-select-v2-list-item.d.ts → sd-select/sd-select-list-item/sd-select-list-item.d.ts} +4 -4
- package/dist/types/components/{sd-select-v2/sd-select-v2-list-item-search/sd-select-v2-list-item-search.d.ts → sd-select/sd-select-list-item-search/sd-select-list-item-search.d.ts} +1 -1
- package/dist/types/components/{sd-select-v2/sd-select-v2-listbox/sd-select-v2-listbox.d.ts → sd-select/sd-select-listbox/sd-select-listbox.d.ts} +15 -6
- package/dist/types/components/{sd-select-v2/sd-select-v2-trigger/sd-select-v2-trigger.d.ts → sd-select/sd-select-trigger/sd-select-trigger.d.ts} +1 -1
- package/dist/types/components/{sd-select-v2/sd-select-v2.config.d.ts → sd-select/sd-select.config.d.ts} +12 -12
- package/dist/types/components/sd-select/sd-select.d.ts +56 -84
- package/dist/types/components/sd-table/constants.d.ts +4 -1
- package/dist/types/components/sd-table/sd-table.config.d.ts +64 -0
- package/dist/types/components/sd-table/sd-table.d.ts +17 -0
- package/dist/types/components/sd-table/sd-td/sd-td.d.ts +8 -0
- package/dist/types/components/sd-table/sd-thead/sd-thead.d.ts +5 -0
- package/dist/types/components/sd-table/sd-tr/sd-tr.d.ts +4 -0
- package/dist/types/components.d.ts +1012 -2402
- package/dist/types/utils/testing/index.d.ts +2 -0
- package/dist/types/utils/testing/mocks.d.ts +4 -0
- package/hydrate/index.js +821 -2272
- package/hydrate/index.mjs +821 -2272
- package/package.json +1 -1
- package/dist/cjs/base-dropdown-event-BTPlZ1KF.js +0 -91
- package/dist/cjs/sd-pagination_2.cjs.entry.js +0 -427
- package/dist/cjs/sd-progress.cjs.entry.js +0 -63
- package/dist/cjs/sd-select-dropdown_2.cjs.entry.js +0 -231
- package/dist/cjs/sd-select-group.cjs.entry.js +0 -332
- package/dist/cjs/sd-select-multiple-group.cjs.entry.js +0 -458
- package/dist/cjs/sd-select-multiple.cjs.entry.js +0 -191
- package/dist/cjs/sd-select-option-group.cjs.entry.js +0 -68
- package/dist/cjs/sd-select.cjs.entry.js +0 -181
- package/dist/cjs/sd-tbody.cjs.entry.js +0 -66
- package/dist/cjs/sd-thead.cjs.entry.js +0 -179
- package/dist/cjs/sd-tr.cjs.entry.js +0 -171
- package/dist/cjs/select-keyboard-navigation-CErfIrGV.js +0 -27
- package/dist/cjs/table-test.cjs.entry.js +0 -96
- package/dist/collection/components/sd-progress/sd-progress.css +0 -63
- package/dist/collection/components/sd-progress/sd-progress.js +0 -186
- package/dist/collection/components/sd-select/sd-select-dropdown/sd-select-dropdown.css +0 -30
- package/dist/collection/components/sd-select/sd-select-dropdown/sd-select-dropdown.js +0 -444
- package/dist/collection/components/sd-select/sd-select-option/sd-select-option.css +0 -36
- package/dist/collection/components/sd-select/sd-select-option/sd-select-option.js +0 -257
- package/dist/collection/components/sd-select/sd-select-search-input/sd-select-search-input.css +0 -23
- package/dist/collection/components/sd-select/sd-select-search-input/sd-select-search-input.js +0 -161
- package/dist/collection/components/sd-select-group/sd-select-group.css +0 -81
- package/dist/collection/components/sd-select-group/sd-select-group.js +0 -1061
- package/dist/collection/components/sd-select-multiple/sd-select-multiple.css +0 -54
- package/dist/collection/components/sd-select-multiple/sd-select-multiple.js +0 -770
- package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.css +0 -79
- package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.js +0 -1183
- package/dist/collection/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.css +0 -75
- package/dist/collection/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.js +0 -305
- package/dist/collection/components/sd-select-v2/sd-select-v2.css +0 -11
- package/dist/collection/components/sd-select-v2/sd-select-v2.js +0 -819
- package/dist/collection/components/table-test/table-test.css +0 -59
- package/dist/collection/components/table-test/table-test.js +0 -316
- package/dist/components/p-9ZtJl4s6.js +0 -1
- package/dist/components/p-BALOEavB.js +0 -1
- package/dist/components/p-BZc6lwGD.js +0 -1
- package/dist/components/p-Bbs5Ws0k.js +0 -1
- package/dist/components/p-Bp0B8tcl.js +0 -1
- package/dist/components/p-Btx5sC7s.js +0 -1
- package/dist/components/p-CHFGWh0m.js +0 -1
- package/dist/components/p-CNAzAL53.js +0 -1
- package/dist/components/p-CWEeXx2E.js +0 -1
- package/dist/components/p-CgL8_FSD.js +0 -1
- package/dist/components/p-CqghR1aS.js +0 -1
- package/dist/components/p-Cy6HMEsK.js +0 -1
- package/dist/components/p-D8fG9Yt7.js +0 -1
- package/dist/components/p-DBex-RJU.js +0 -1
- package/dist/components/p-DEBakAhm.js +0 -1
- package/dist/components/p-DWMY9O2B.js +0 -1
- package/dist/components/p-DuMkBStM.js +0 -1
- package/dist/components/p-vQDL-PZ8.js +0 -1
- package/dist/components/sd-progress.d.ts +0 -11
- package/dist/components/sd-progress.js +0 -1
- package/dist/components/sd-select-dropdown.d.ts +0 -11
- package/dist/components/sd-select-dropdown.js +0 -1
- package/dist/components/sd-select-group.js +0 -1
- package/dist/components/sd-select-multiple-group.d.ts +0 -11
- package/dist/components/sd-select-multiple-group.js +0 -1
- package/dist/components/sd-select-multiple.js +0 -1
- package/dist/components/sd-select-option-group.d.ts +0 -11
- package/dist/components/sd-select-option-group.js +0 -1
- package/dist/components/sd-select-option.js +0 -1
- package/dist/components/sd-select-search-input.d.ts +0 -11
- package/dist/components/sd-select-search-input.js +0 -1
- package/dist/components/sd-select-v2-list-item-search.d.ts +0 -11
- package/dist/components/sd-select-v2-list-item-search.js +0 -1
- package/dist/components/sd-select-v2-list-item.d.ts +0 -11
- package/dist/components/sd-select-v2-list-item.js +0 -1
- package/dist/components/sd-select-v2-listbox.d.ts +0 -11
- package/dist/components/sd-select-v2-listbox.js +0 -1
- package/dist/components/sd-select-v2-trigger.d.ts +0 -11
- package/dist/components/sd-select-v2-trigger.js +0 -1
- package/dist/components/sd-select-v2.d.ts +0 -11
- package/dist/components/sd-select-v2.js +0 -1
- package/dist/components/table-test.d.ts +0 -11
- package/dist/components/table-test.js +0 -1
- package/dist/design-system/p-00612047.entry.js +0 -1
- package/dist/design-system/p-07adda3c.entry.js +0 -1
- package/dist/design-system/p-1573f415.entry.js +0 -1
- package/dist/design-system/p-1b9f6cef.entry.js +0 -1
- package/dist/design-system/p-1cc7d81f.entry.js +0 -1
- package/dist/design-system/p-1fa6c17f.entry.js +0 -1
- package/dist/design-system/p-380198bc.entry.js +0 -1
- package/dist/design-system/p-4114eea3.entry.js +0 -1
- package/dist/design-system/p-5e300b77.entry.js +0 -1
- package/dist/design-system/p-6b537e2f.entry.js +0 -1
- package/dist/design-system/p-6e90fb80.entry.js +0 -1
- package/dist/design-system/p-711c59fc.entry.js +0 -1
- package/dist/design-system/p-7b77c65c.entry.js +0 -1
- package/dist/design-system/p-850de8d4.entry.js +0 -1
- package/dist/design-system/p-8f88bd67.entry.js +0 -1
- package/dist/design-system/p-9fee77f0.entry.js +0 -1
- package/dist/design-system/p-BPGLtKk5.js +0 -1
- package/dist/design-system/p-Bp7ytJz5.js +0 -2
- package/dist/design-system/p-CRdYeSBK.js +0 -1
- package/dist/design-system/p-Cy6HMEsK.js +0 -1
- package/dist/design-system/p-ba5fea6f.entry.js +0 -1
- package/dist/design-system/p-be54d6bd.entry.js +0 -1
- package/dist/design-system/p-c3379a6e.entry.js +0 -1
- package/dist/design-system/p-cc62c180.entry.js +0 -1
- package/dist/design-system/p-ce2210ad.entry.js +0 -1
- package/dist/design-system/p-d52f25c6.entry.js +0 -1
- package/dist/design-system/p-dbcbbf1e.entry.js +0 -1
- package/dist/design-system/p-dc07d618.entry.js +0 -1
- package/dist/design-system/p-ef09409c.entry.js +0 -1
- package/dist/design-system/p-f8237991.entry.js +0 -1
- package/dist/esm/base-dropdown-event-CRdYeSBK.js +0 -89
- package/dist/esm/sd-pagination_2.entry.js +0 -424
- package/dist/esm/sd-progress.entry.js +0 -61
- package/dist/esm/sd-select-dropdown_2.entry.js +0 -228
- package/dist/esm/sd-select-group.entry.js +0 -330
- package/dist/esm/sd-select-multiple-group.entry.js +0 -456
- package/dist/esm/sd-select-multiple.entry.js +0 -189
- package/dist/esm/sd-select-option-group.entry.js +0 -66
- package/dist/esm/sd-select.entry.js +0 -179
- package/dist/esm/sd-tbody.entry.js +0 -64
- package/dist/esm/sd-thead.entry.js +0 -177
- package/dist/esm/sd-tr.entry.js +0 -169
- package/dist/esm/select-keyboard-navigation-Cy6HMEsK.js +0 -25
- package/dist/esm/table-test.entry.js +0 -94
- package/dist/types/components/sd-progress/sd-progress.d.ts +0 -15
- package/dist/types/components/sd-select/sd-select-dropdown/sd-select-dropdown.d.ts +0 -41
- package/dist/types/components/sd-select/sd-select-option/sd-select-option.d.ts +0 -23
- package/dist/types/components/sd-select/sd-select-search-input/sd-select-search-input.d.ts +0 -11
- package/dist/types/components/sd-select-group/sd-select-group.d.ts +0 -86
- package/dist/types/components/sd-select-multiple/sd-select-multiple.d.ts +0 -64
- package/dist/types/components/sd-select-multiple-group/sd-select-multiple-group.d.ts +0 -110
- package/dist/types/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.d.ts +0 -29
- package/dist/types/components/sd-select-v2/sd-select-v2.d.ts +0 -71
- package/dist/types/components/table-test/table-test.d.ts +0 -46
- /package/dist/collection/components/{sd-select-v2/sd-select-v2.config.js → sd-select/sd-select.config.js} +0 -0
package/hydrate/index.js
CHANGED
|
@@ -136,7 +136,7 @@ var node_crypto = require('node:crypto');
|
|
|
136
136
|
const NAMESPACE = 'design-system';
|
|
137
137
|
const BUILD = /* design-system */ { hotModuleReplacement: false, hydratedSelectorName: "hydrated", slotRelocation: true, state: true, updatable: true};
|
|
138
138
|
|
|
139
|
-
const globalStyles = ":root{--color-primary:#051D36;--sd-primary:#051D36;--color-secondary:#555555;--sd-secondary:#555555;--color-accent:#9C27B0;--sd-accent:#9C27B0;--color-positive:#0075FF;--sd-positive:#0075FF;--color-negative:#E30000;--sd-negative:#E30000;--color-info:#00CD52;--sd-info:#00CD52;--color-warning:#F2C037;--sd-warning:#F2C037;--color-caution_bg:#FEF1F1;--sd-caution_bg:#FEF1F1;--color-caution_icon:#FD9595;--sd-caution_icon:#FD9595;--color-header_alert:#FF7A00;--sd-header_alert:#FF7A00;--color-white:#FFFFFF;--sd-white:#FFFFFF;--color-black:#000000;--sd-black:#000000;--color-grey_10:#F6F6F6;--sd-grey_10:#F6F6F6;--color-grey_20:#EEEEEE;--sd-grey_20:#EEEEEE;--color-grey_25:#E5E5E5;--sd-grey_25:#E5E5E5;--color-grey_30:#E1E1E1;--sd-grey_30:#E1E1E1;--color-grey_35:#D8D8D8;--sd-grey_35:#D8D8D8;--color-grey_45:#CCCCCC;--sd-grey_45:#CCCCCC;--color-grey_50:#BBBBBB;--sd-grey_50:#BBBBBB;--color-grey_55:#AAAAAA;--sd-grey_55:#AAAAAA;--color-grey_60:#999999;--sd-grey_60:#999999;--color-grey_65:#888888;--sd-grey_65:#888888;--color-grey_70:#737373;--sd-grey_70:#737373;--color-grey_80:#555555;--sd-grey_80:#555555;--color-grey_85:#444444;--sd-grey_85:#444444;--color-grey_90:#333333;--sd-grey_90:#333333;--color-grey_95:#222222;--sd-grey_95:#222222;--color-grey_05:#F9F9F9;--sd-grey_05:#F9F9F9;--color-red_15:#FCEFEF;--sd-red_15:#FCEFEF;--color-red_20:#FCE6E6;--sd-red_20:#FCE6E6;--color-red_30:#FFD3D3;--sd-red_30:#FFD3D3;--color-red_45:#FFB5B5;--sd-red_45:#FFB5B5;--color-red_60:#FF7C7C;--sd-red_60:#FF7C7C;--color-red_70:#FB4444;--sd-red_70:#FB4444;--color-red_75:#E30000;--sd-red_75:#E30000;--color-red_75_006:#E30000;--sd-red_75_006:#E30000;--color-red_80:#AD0000;--sd-red_80:#AD0000;--color-red_85:#820000;--sd-red_85:#820000;--color-red_90:#5E0000;--sd-red_90:#5E0000;--color-red_95:#440000;--sd-red_95:#440000;--color-red_99:#220000;--sd-red_99:#220000;--color-orange_10:#FEF1EA;--sd-orange_10:#FEF1EA;--color-orange_20:#FFEAD7;--sd-orange_20:#FFEAD7;--color-orange_35:#FFD5AF;--sd-orange_35:#FFD5AF;--color-orange_45:#FFBC81;--sd-orange_45:#FFBC81;--color-orange_55:#FFA452;--sd-orange_55:#FFA452;--color-orange_60:#FF7F22;--sd-orange_60:#FF7F22;--color-orange_65:#FF6B00;--sd-orange_65:#FF6B00;--color-orange_75:#CE4900;--sd-orange_75:#CE4900;--color-orange_85:#9B3700;--sd-orange_85:#9B3700;--color-orange_90:#752A00;--sd-orange_90:#752A00;--color-orange_95:#4D1B00;--sd-orange_95:#4D1B00;--color-orange_99:#2F1100;--sd-orange_99:#2F1100;--color-yellow_10:#FFF7DD;--sd-yellow_10:#FFF7DD;--color-yellow_20:#FEF1C4;--sd-yellow_20:#FEF1C4;--color-yellow_25:#FFE99E;--sd-yellow_25:#FFE99E;--color-yellow_30:#FEE17C;--sd-yellow_30:#FEE17C;--color-yellow_40:#FFD643;--sd-yellow_40:#FFD643;--color-yellow_45:#FFC700;--sd-yellow_45:#FFC700;--color-yellow_50:#EBB110;--sd-yellow_50:#EBB110;--color-yellow_60:#CA9612;--sd-yellow_60:#CA9612;--color-yellow_70:#916C0D;--sd-yellow_70:#916C0D;--color-yellow_80:#6C5002;--sd-yellow_80:#6C5002;--color-yellow_90:#453602;--sd-yellow_90:#453602;--color-yellow_95:#322700;--sd-yellow_95:#322700;--color-olive_10:#FBFBBF;--sd-olive_10:#FBFBBF;--color-olive_15:#FAFAA1;--sd-olive_15:#FAFAA1;--color-olive_20:#F6F65F;--sd-olive_20:#F6F65F;--color-olive_30:#EEEE37;--sd-olive_30:#EEEE37;--color-olive_45:#DDDD12;--sd-olive_45:#DDDD12;--color-olive_55:#C7C700;--sd-olive_55:#C7C700;--color-olive_65:#A5A500;--sd-olive_65:#A5A500;--color-olive_70:#838300;--sd-olive_70:#838300;--color-olive_80:#636300;--sd-olive_80:#636300;--color-olive_90:#454500;--sd-olive_90:#454500;--color-olive_95:#2C2C00;--sd-olive_95:#2C2C00;--color-olive_05:#FEFED9;--sd-olive_05:#FEFED9;--color-green_15:#E8F9EF;--sd-green_15:#E8F9EF;--color-green_25:#D4FAE3;--sd-green_25:#D4FAE3;--color-green_45:#ACF4C9;--sd-green_45:#ACF4C9;--color-green_55:#6DE39C;--sd-green_55:#6DE39C;--color-green_65:#2BCE6C;--sd-green_65:#2BCE6C;--color-green_70:#12B553;--sd-green_70:#12B553;--color-green_75:#00973C;--sd-green_75:#00973C;--color-green_80:#007B31;--sd-green_80:#007B31;--color-green_85:#006629;--sd-green_85:#006629;--color-green_90:#00461C;--sd-green_90:#00461C;--color-green_95:#003013;--sd-green_95:#003013;--color-green_99:#001D0B;--sd-green_99:#001D0B;--color-steelblue_10:#ECF8FD;--sd-steelblue_10:#ECF8FD;--color-steelblue_25:#D9F2FD;--sd-steelblue_25:#D9F2FD;--color-steelblue_45:#A4E2FD;--sd-steelblue_45:#A4E2FD;--color-steelblue_60:#50BFF0;--sd-steelblue_60:#50BFF0;--color-steelblue_65:#229FD7;--sd-steelblue_65:#229FD7;--color-steelblue_70:#128FC7;--sd-steelblue_70:#128FC7;--color-steelblue_75:#066D9B;--sd-steelblue_75:#066D9B;--color-steelblue_80:#06587D;--sd-steelblue_80:#06587D;--color-steelblue_85:#033F59;--sd-steelblue_85:#033F59;--color-steelblue_90:#032D40;--sd-steelblue_90:#032D40;--color-steelblue_95:#02212F;--sd-steelblue_95:#02212F;--color-steelblue_99:#021A25;--sd-steelblue_99:#021A25;--color-oceanblue_15:#EAF5FE;--sd-oceanblue_15:#EAF5FE;--color-oceanblue_25:#D5EBFE;--sd-oceanblue_25:#D5EBFE;--color-oceanblue_50:#9CD1FC;--sd-oceanblue_50:#9CD1FC;--color-oceanblue_60:#5CB0F3;--sd-oceanblue_60:#5CB0F3;--color-oceanblue_65:#1F8AE1;--sd-oceanblue_65:#1F8AE1;--color-oceanblue_70:#006AC1;--sd-oceanblue_70:#006AC1;--color-oceanblue_75:#025497;--sd-oceanblue_75:#025497;--color-oceanblue_80:#004177;--sd-oceanblue_80:#004177;--color-oceanblue_85:#07284A;--sd-oceanblue_85:#07284A;--color-oceanblue_90:#051D36;--sd-oceanblue_90:#051D36;--color-oceanblue_95:#03172D;--sd-oceanblue_95:#03172D;--color-oceanblue_99:#011428;--sd-oceanblue_99:#011428;--color-brilliantblue_10:#EFF6FF;--sd-brilliantblue_10:#EFF6FF;--color-brilliantblue_20:#E6F1FF;--sd-brilliantblue_20:#E6F1FF;--color-brilliantblue_25:#D9EAFF;--sd-brilliantblue_25:#D9EAFF;--color-brilliantblue_40:#BBDAFF;--sd-brilliantblue_40:#BBDAFF;--color-brilliantblue_50:#93C4FF;--sd-brilliantblue_50:#93C4FF;--color-brilliantblue_60:#64ABFF;--sd-brilliantblue_60:#64ABFF;--color-brilliantblue_70:#2D8DFF;--sd-brilliantblue_70:#2D8DFF;--color-brilliantblue_75:#0075FF;--sd-brilliantblue_75:#0075FF;--color-brilliantblue_80:#005CC9;--sd-brilliantblue_80:#005CC9;--color-brilliantblue_85:#004290;--sd-brilliantblue_85:#004290;--color-brilliantblue_90:#002B5E;--sd-brilliantblue_90:#002B5E;--color-brilliantblue_95:#001B39;--sd-brilliantblue_95:#001B39;--color-brilliantblue_99:#001226;--sd-brilliantblue_99:#001226;--color-brilliantblue_05:#F5FAFF;--sd-brilliantblue_05:#F5FAFF;--sd-system-typography-control-xs-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-xs-default-font-size:12px;--sd-system-typography-control-xs-default-font-weight:400;--sd-system-typography-control-xs-default-text-decoration:none;--sd-system-typography-control-xs-default-line-height:20px;--sd-system-typography-control-xs-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-xs-medium-font-size:12px;--sd-system-typography-control-xs-medium-font-weight:500;--sd-system-typography-control-xs-medium-text-decoration:none;--sd-system-typography-control-xs-medium-line-height:20px;--sd-system-typography-control-xs-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-xs-bold-font-weight:700;--sd-system-typography-control-xs-bold-font-size:12px;--sd-system-typography-control-xs-bold-line-height:20px;--sd-system-typography-control-xs-bold-text-decoration:none;--sd-system-typography-control-sm-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-sm-default-font-size:12px;--sd-system-typography-control-sm-default-font-weight:500;--sd-system-typography-control-sm-default-text-decoration:none;--sd-system-typography-control-sm-default-line-height:20px;--sd-system-typography-control-sm-underline-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-sm-underline-font-size:12px;--sd-system-typography-control-sm-underline-font-weight:500;--sd-system-typography-control-sm-underline-text-decoration:underline;--sd-system-typography-control-sm-underline-line-height:22px;--sd-system-typography-control-md-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-md-font-size:16px;--sd-system-typography-control-md-font-weight:500;--sd-system-typography-control-md-text-decoration:none;--sd-system-typography-control-md-line-height:26px;--sd-system-typography-control-lg-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-lg-font-size:18px;--sd-system-typography-control-lg-font-weight:500;--sd-system-typography-control-lg-text-decoration:none;--sd-system-typography-control-lg-line-height:30px;--sd-system-typography-feedback-xs-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-xs-font-size:11px;--sd-system-typography-feedback-xs-font-weight:500;--sd-system-typography-feedback-xs-line-height:18px;--sd-system-typography-feedback-xs-text-decoration:none;--sd-system-typography-feedback-sm-regular-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-sm-regular-font-size:12px;--sd-system-typography-feedback-sm-regular-font-weight:400;--sd-system-typography-feedback-sm-regular-line-height:20px;--sd-system-typography-feedback-sm-regular-text-decoration:none;--sd-system-typography-feedback-sm-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-sm-medium-font-size:12px;--sd-system-typography-feedback-sm-medium-font-weight:500;--sd-system-typography-feedback-sm-medium-line-height:20px;--sd-system-typography-feedback-sm-medium-text-decoration:none;--sd-system-typography-feedback-sm-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-sm-bold-font-size:12px;--sd-system-typography-feedback-sm-bold-font-weight:700;--sd-system-typography-feedback-sm-bold-text-decoration:none;--sd-system-typography-feedback-sm-bold-line-height:20px;--sd-system-typography-feedback-sm-underline-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-sm-underline-font-size:12px;--sd-system-typography-feedback-sm-underline-font-weight:500;--sd-system-typography-feedback-sm-underline-line-height:20px;--sd-system-typography-feedback-sm-underline-text-decoration:underline;--sd-system-typography-feedback-md-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-md-bold-font-size:14px;--sd-system-typography-feedback-md-bold-font-weight:700;--sd-system-typography-feedback-md-bold-line-height:24px;--sd-system-typography-feedback-md-bold-text-decoration:none;--sd-system-typography-feedback-md-underline-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-md-underline-font-size:14px;--sd-system-typography-feedback-md-underline-font-weight:700;--sd-system-typography-feedback-md-underline-line-height:24px;--sd-system-typography-feedback-md-underline-text-decoration:underline;--sd-system-typography-heading-sm-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-heading-sm-font-weight:700;--sd-system-typography-heading-sm-font-size:14px;--sd-system-typography-heading-sm-line-height:24px;--sd-system-typography-heading-sm-text-decoration:none;--sd-system-typography-heading-md-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-heading-md-font-weight:700;--sd-system-typography-heading-md-font-size:16px;--sd-system-typography-heading-md-text-decoration:none;--sd-system-typography-heading-md-line-height:26px;--sd-system-typography-heading-lg-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-heading-lg-font-weight:700;--sd-system-typography-heading-lg-font-size:18px;--sd-system-typography-heading-lg-line-height:30px;--sd-system-typography-heading-lg-text-decoration:none;--sd-system-typography-field-sm-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-sm-default-font-weight:400;--sd-system-typography-field-sm-default-font-size:12px;--sd-system-typography-field-sm-default-line-height:20px;--sd-system-typography-field-sm-default-text-decoration:none;--sd-system-typography-field-sm-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-sm-medium-font-weight:500;--sd-system-typography-field-sm-medium-font-size:12px;--sd-system-typography-field-sm-medium-text-decoration:none;--sd-system-typography-field-sm-medium-line-height:20px;--sd-system-typography-field-sm-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-sm-bold-font-weight:700;--sd-system-typography-field-sm-bold-font-size:12px;--sd-system-typography-field-sm-bold-text-decoration:none;--sd-system-typography-field-sm-bold-line-height:20px;--sd-system-typography-field-md-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-md-default-font-weight:400;--sd-system-typography-field-md-default-font-size:14px;--sd-system-typography-field-md-default-text-decoration:none;--sd-system-typography-field-md-default-line-height:24px;--sd-system-typography-field-md-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-md-medium-font-weight:500;--sd-system-typography-field-md-medium-font-size:14px;--sd-system-typography-field-md-medium-text-decoration:none;--sd-system-typography-field-md-medium-line-height:24px;--sd-system-typography-field-md-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-md-bold-font-weight:700;--sd-system-typography-field-md-bold-font-size:14px;--sd-system-typography-field-md-bold-text-decoration:none;--sd-system-typography-field-md-bold-line-height:24px;--sd-system-typography-field-lg-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-lg-default-font-weight:400;--sd-system-typography-field-lg-default-font-size:16px;--sd-system-typography-field-lg-default-line-height:26px;--sd-system-typography-field-lg-default-text-decoration:none;--sd-system-typography-field-lg-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-lg-medium-font-weight:500;--sd-system-typography-field-lg-medium-font-size:16px;--sd-system-typography-field-lg-medium-line-height:26px;--sd-system-typography-field-lg-medium-text-decoration:none;--sd-system-typography-field-lg-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-lg-bold-font-weight:700;--sd-system-typography-field-lg-bold-font-size:16px;--sd-system-typography-field-lg-bold-line-height:26px;--sd-system-typography-field-lg-bold-text-decoration:none;--sd-system-typography-navigation-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-navigation-default-font-weight:400;--sd-system-typography-navigation-default-font-size:12px;--sd-system-typography-navigation-default-line-height:20px;--sd-system-typography-navigation-default-text-decoration:none;--sd-system-typography-navigation-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-navigation-bold-font-weight:700;--sd-system-typography-navigation-bold-font-size:12px;--sd-system-typography-navigation-bold-line-height:20px;--sd-system-typography-navigation-bold-text-decoration:none;--sd-system-size-control-xs-height:24px;--sd-system-size-control-sm-height:28px;--sd-system-size-control-md-height:36px;--sd-system-size-control-lg-height:62px;--sd-system-size-icon-xxxs:8px;--sd-system-size-icon-xxs:10px;--sd-system-size-icon-xs:12px;--sd-system-size-icon-sm:16px;--sd-system-size-icon-md:20px;--sd-system-size-icon-lg:24px;--sd-system-size-icon-xl:32px;--sd-system-size-feedback-arrow-width:16px;--sd-system-size-feedback-arrow-height:12px;--sd-system-size-feedback-xs-height:20px;--sd-system-size-feedback-sm-height:24px;--sd-system-size-feedback-md-height:28px;--sd-system-size-field-control:16px;--sd-system-size-field-icon:12px;--sd-system-size-field-sm-height:28px;--sd-system-size-field-md-height:36px;--sd-system-size-navigation-lg-height:44px;--sd-system-size-navigation-md-height:36px;--sd-system-space-control-xs-padding-x:8px;--sd-system-space-control-xs-gap:4px;--sd-system-space-control-sm-padding-x:12px;--sd-system-space-control-sm-gap:6px;--sd-system-space-control-md-padding-x:20px;--sd-system-space-control-md-gap:8px;--sd-system-space-control-lg-padding-x:28px;--sd-system-space-control-lg-gap:12px;--sd-system-space-feedback-xs-padding-x:6px;--sd-system-space-feedback-xs-gap:4px;--sd-system-space-feedback-sm-padding-x:8px;--sd-system-space-feedback-sm-gap:6px;--sd-system-space-feedback-md-padding-x:12px;--sd-system-space-feedback-md-gap:8px;--sd-system-space-stack-gap-tight:2px;--sd-system-space-stack-gap-normal:4px;--sd-system-space-stack-gap-relaxed:8px;--sd-system-space-field-sm-padding-x:12px;--sd-system-space-field-sm-padding-y:4px;--sd-system-space-field-sm-container-gap:8px;--sd-system-space-field-sm-gap:12px;--sd-system-space-field-md-padding-x:16px;--sd-system-space-field-md-container-gap:12px;--sd-system-space-field-md-gap:16px;--sd-system-space-navigation-lg-padding-x:32px;--sd-system-space-navigation-md-padding-x:24px;--sd-system-radius-control-sm:4px;--sd-system-radius-control-md:6px;--sd-system-radius-feedback-xs-square:6px;--sd-system-radius-feedback-sm-square:8px;--sd-system-radius-feedback-pill:9999px;--sd-system-radius-field-sm:4px;--sd-system-radius-field-md:6px;--sd-system-radius-navigation:6px;--sd-system-border-width-control-default:1px;--sd-system-border-width-field-default:1px;--sd-system-border-width-navigation-default:1px;--sd-system-color-bg-screen:#EEEEEE;--sd-system-color-bg-frame:#FFFFFF;--sd-system-color-bg-brand:#025497;--sd-system-color-bg-subtle:#1F8AE1;--sd-system-color-bg-accent-default:#0075FF;--sd-system-color-bg-accent-light:#F5FAFF;--sd-system-color-bg-accent-light-default:#2D8DFF;--sd-system-color-bg-accent-light-light:#F5FAFF;--sd-system-color-bg-accent-bright-default:#D9EAFF;--sd-system-color-bg-accent-bright-light:#F5FAFF;--sd-system-color-bg-deep:#07284A;--sd-system-color-bg-danger-default:#E30000;--sd-system-color-bg-danger-light:#FCEFEF;--sd-system-color-bg-danger-light-default:#FB4444;--sd-system-color-bg-danger-light-light:#FCEFEF;--sd-system-color-bg-warning:#FF6B00;--sd-system-color-bg-caution:#FFC700;--sd-system-color-bg-progress:#0075FF;--sd-system-color-bg-success-default:#00973C;--sd-system-color-bg-success-light:#12B553;--sd-system-color-bg-success-light:#12B553;--sd-system-color-bg-disabled:#E1E1E1;--sd-system-color-bg-neutral-light:#F6F6F6;--sd-system-color-content-primary:#222222;--sd-system-color-content-secondary:#555555;--sd-system-color-content-tertiary:#888888;--sd-system-color-content-quaternary:#AAAAAA;--sd-system-color-content-brand:#005CC9;--sd-system-color-content-subtle:#066D9B;--sd-system-color-content-accent:#0075FF;--sd-system-color-content-danger-default:#E30000;--sd-system-color-content-danger-light:#FB4444;--sd-system-color-content-danger-light:#FB4444;--sd-system-color-content-warning:#FF6B00;--sd-system-color-content-inverse:#FFFFFF;--sd-system-color-text-disabled:#888888;--sd-system-color-link-accent:#006AC1;--sd-system-color-icon-brand:#025497;--sd-system-color-icon-accent:#0075FF;--sd-system-color-icon-danger:#E30000;--sd-system-color-icon-warning:#FF6B00;--sd-system-color-icon-success:#00973C;--sd-system-color-icon-inverse:#FFFFFF;--sd-system-color-icon-disabled:#BBBBBB;--sd-system-color-border-default:#E1E1E1;--sd-system-color-border-accent:#0075FF;--sd-system-color-border-danger:#FB4444;--sd-system-color-border-success:#12B553;--sd-system-color-border-disabled:#CCCCCC;--sd-system-color-red-strong:#FB4444;--sd-system-color-red-subtle:#FCEFEF;--sd-system-color-orange-strong:#FF6B00;--sd-system-color-orange-subtle:#FEF1EA;--sd-system-color-yellow-strong:#916C0D;--sd-system-color-yellow-moderate:#FFC700;--sd-system-color-yellow-subtle:#FFF7DD;--sd-system-color-green-strong:#00973C;--sd-system-color-green-subtle:#E8F9EF;--sd-system-color-blue-strong:#0075FF;--sd-system-color-blue-subtle:#E6F1FF;--sd-system-color-darkblue-strong:#006AC1;--sd-system-color-darkblue-subtle:#EAF5FE;--sd-system-color-indigo-strong:#004290;--sd-system-color-indigo-subtle:#EFF6FF;--sd-system-color-grey-strong:#737373;--sd-system-color-grey-subtle:#EEEEEE;--sd-system-color-field-bg-default:#FFFFFF;--sd-system-color-field-bg-hover:#0075FF;--sd-system-color-field-border-default:#AAAAAA;--sd-system-color-field-border-focus:#0075FF;--sd-system-color-field-border-hover:#0075FF;--sd-system-color-field-border-danger:#FB4444;--sd-system-color-field-border-success:#12B553;--sd-system-color-field-text-default:#222222;--sd-system-color-field-text-placeholder:#AAAAAA;--sd-system-color-field-icon-default:#888888;--sd-system-color-divider-default:#E1E1E1;--sd-system-color-control-bg-inverse-hover:#0075FF;--sd-button-button-xs-height:24px;--sd-button-button-xs-padding-x:8px;--sd-button-button-xs-gap:4px;--sd-button-button-xs-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-button-button-xs-typography-font-size:12px;--sd-button-button-xs-typography-font-weight:500;--sd-button-button-xs-typography-text-decoration:none;--sd-button-button-xs-typography-line-height:20px;--sd-button-button-xs-icon:12px;--sd-button-button-sm-height:28px;--sd-button-button-sm-padding-x:12px;--sd-button-button-sm-gap:6px;--sd-button-button-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-button-button-sm-typography-font-size:12px;--sd-button-button-sm-typography-font-weight:500;--sd-button-button-sm-typography-text-decoration:none;--sd-button-button-sm-typography-line-height:20px;--sd-button-button-sm-icon:16px;--sd-button-button-md-height:36px;--sd-button-button-md-padding-x:20px;--sd-button-button-md-gap:8px;--sd-button-button-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-button-button-md-typography-font-size:16px;--sd-button-button-md-typography-font-weight:500;--sd-button-button-md-typography-text-decoration:none;--sd-button-button-md-typography-line-height:26px;--sd-button-button-md-icon:20px;--sd-button-button-lg-height:62px;--sd-button-button-lg-padding-x:28px;--sd-button-button-lg-gap:12px;--sd-button-button-lg-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-button-button-lg-typography-font-size:18px;--sd-button-button-lg-typography-font-weight:500;--sd-button-button-lg-typography-text-decoration:none;--sd-button-button-lg-typography-line-height:30px;--sd-button-button-lg-icon:24px;--sd-button-button-radius-sm:4px;--sd-button-button-radius-md:6px;--sd-button-button-border-width-default:1px;--sd-button-button-border-disabled:#CCCCCC;--sd-button-button-icon-only-xs-width:24px;--sd-button-button-icon-only-sm-width:28px;--sd-button-button-icon-only-md-width:36px;--sd-button-button-icon-only-lg-width:62px;--sd-button-button-bg-disabled:#E1E1E1;--sd-button-button-text-disabled:#888888;--sd-button-button-icon-disabled:#BBBBBB;--sd-button-button-brand-strong-bg-default:#025497;--sd-button-button-brand-strong-bg-hover:#004177;--sd-button-button-brand-strong-content:#FFFFFF;--sd-button-button-brand-strong-dropdown-divider:#006AC1;--sd-button-button-brand-subtle-bg-default:#1F8AE1;--sd-button-button-brand-subtle-bg-hover:#006AC1;--sd-button-button-brand-subtle-content:#FFFFFF;--sd-button-button-brand-subtle-dropdown-divider:#5CB0F3;--sd-button-button-brand-outline-bg-default:#FFFFFF;--sd-button-button-brand-outline-bg-hover:#EAF5FE;--sd-button-button-brand-outline-border:#025497;--sd-button-button-brand-outline-content:#025497;--sd-button-button-neutral-outline-bg-default:#FFFFFF;--sd-button-button-neutral-outline-bg-hover:#EEEEEE;--sd-button-button-neutral-outline-border:#888888;--sd-button-button-neutral-outline-content:#222222;--sd-button-button-danger-strong-bg-default:#E30000;--sd-button-button-danger-strong-bg-hover:#AD0000;--sd-button-button-danger-strong-content:#FFFFFF;--sd-button-button-danger-strong-dropdown-divider:#FF7C7C;--sd-button-button-danger-outline-bg-default:#FFFFFF;--sd-button-button-danger-outline-bg-hover:#FCEFEF;--sd-button-button-danger-outline-border:#E30000;--sd-button-button-danger-outline-content:#E30000;--sd-ghost-button-ghost-button-xxs-size:16px;--sd-ghost-button-ghost-button-xxs-icon:12px;--sd-ghost-button-ghost-button-xs-size:24px;--sd-ghost-button-ghost-button-xs-icon:16px;--sd-ghost-button-ghost-button-sm-size:28px;--sd-ghost-button-ghost-button-sm-icon:20px;--sd-ghost-button-ghost-button-md-size:36px;--sd-ghost-button-ghost-button-md-icon:24px;--sd-ghost-button-ghost-button-lg-size:62px;--sd-ghost-button-ghost-button-lg-icon:32px;--sd-ghost-button-ghost-button-radius-sm:4px;--sd-ghost-button-ghost-button-radius-md:6px;--sd-ghost-button-ghost-button-hover-opacity:5%;--sd-ghost-button-ghost-button-icon-disabled:#BBBBBB;--sd-ghost-button-ghost-button-default-content:#888888;--sd-ghost-button-ghost-button-default-hover-bg:#222222;--sd-ghost-button-ghost-button-danger-content:#E30000;--sd-ghost-button-ghost-button-danger-hover-bg:#E30000;--sd-ghost-button-ghost-button-action-content:#025497;--sd-ghost-button-ghost-button-action-hover-bg:#0075FF;--sd-ghost-button-ghost-button-inverse-content:#FFFFFF;--sd-ghost-button-ghost-button-inverse-disabled:#E1E1E1;--sd-ghost-button-ghost-button-inverse-hover-bg:#FFFFFF;--sd-text-link-text-link-gap:4px;--sd-text-link-text-link-size-icon:16px;--sd-text-link-text-link-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-text-link-text-link-typography-default-font-size:12px;--sd-text-link-text-link-typography-default-font-weight:500;--sd-text-link-text-link-typography-default-text-decoration:none;--sd-text-link-text-link-typography-default-line-height:20px;--sd-text-link-text-link-typography-underline-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-text-link-text-link-typography-underline-font-size:12px;--sd-text-link-text-link-typography-underline-font-weight:500;--sd-text-link-text-link-typography-underline-text-decoration:underline;--sd-text-link-text-link-typography-underline-line-height:22px;--sd-text-link-text-link-content-default:#222222;--sd-text-link-text-link-content-disabled:#888888;--sd-text-link-text-link-icon-default:#006AC1;--sd-text-link-text-link-icon-disabled:#BBBBBB;--sd-switch-switch-width:32px;--sd-switch-switch-height:20px;--sd-switch-switch-padding-x-y:2px;--sd-switch-switch-radius:9999px;--sd-switch-switch-knob-size:16px;--sd-switch-switch-knob-bg:#FFFFFF;--sd-switch-switch-bg-on:#0075FF;--sd-switch-switch-bg-off:#CCCCCC;--sd-switch-switch-bg-disabled-on:#BBDAFF;--sd-switch-switch-bg-disabled-off:#E1E1E1;--sd-switch-switch-label-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-switch-switch-label-typography-font-weight:500;--sd-switch-switch-label-typography-font-size:12px;--sd-switch-switch-label-typography-text-decoration:none;--sd-switch-switch-label-typography-line-height:20px;--sd-switch-switch-gap:6px;--sd-toggle-toggle-height:28px;--sd-toggle-toggle-padding-x:12px;--sd-toggle-toggle-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-toggle-toggle-typography-font-size:12px;--sd-toggle-toggle-typography-font-weight:500;--sd-toggle-toggle-typography-text-decoration:none;--sd-toggle-toggle-typography-line-height:20px;--sd-toggle-toggle-radius:9999px;--sd-toggle-toggle-border-width:1px;--sd-toggle-toggle-border-default:#CCCCCC;--sd-toggle-toggle-border-select:#0075FF;--sd-toggle-toggle-border-disabled:#CCCCCC;--sd-toggle-toggle-bg-default:#FFFFFF;--sd-toggle-toggle-bg-hover:#0075FF;--sd-toggle-toggle-bg-select:#FFFFFF;--sd-toggle-toggle-bg-disabled:#E1E1E1;--sd-toggle-toggle-content-default:#555555;--sd-toggle-toggle-content-hover:#FFFFFF;--sd-toggle-toggle-content-select:#0075FF;--sd-toggle-toggle-content-disabled:#888888;--sd-checkbox-checkbox-size:16px;--sd-checkbox-checkbox-radius:2px;--sd-checkbox-checkbox-border-width:1px;--sd-checkbox-checkbox-gap:8px;--sd-checkbox-checkbox-icon:12px;--sd-checkbox-checkbox-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-checkbox-checkbox-typography-font-weight:400;--sd-checkbox-checkbox-typography-font-size:12px;--sd-checkbox-checkbox-typography-line-height:20px;--sd-checkbox-checkbox-typography-text-decoration:none;--sd-checkbox-checkbox-unchecked-bg-default:#FFFFFF;--sd-checkbox-checkbox-unchecked-bg-hover:#D9EAFF;--sd-checkbox-checkbox-unchecked-border-default:#AAAAAA;--sd-checkbox-checkbox-unchecked-border-hover:#0075FF;--sd-checkbox-checkbox-checked-bg-default:#0075FF;--sd-checkbox-checkbox-checked-icon-default:#FFFFFF;--sd-checkbox-checkbox-checked-icon-disabled:#BBBBBB;--sd-checkbox-checkbox-checked-icon-inverse:#FFFFFF;--sd-checkbox-checkbox-checked-border-inverse:#FFFFFF;--sd-checkbox-checkbox-label-default:#222222;--sd-checkbox-checkbox-label-inverse:#FFFFFF;--sd-checkbox-checkbox-bg-disabled:#E1E1E1;--sd-checkbox-checkbox-border-disabled:#CCCCCC;--sd-radio-radio-size:16px;--sd-radio-radio-radius:9999px;--sd-radio-radio-border-width:1px;--sd-radio-radio-gap:8px;--sd-radio-radio-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-radio-radio-typography-font-weight:400;--sd-radio-radio-typography-font-size:12px;--sd-radio-radio-typography-line-height:20px;--sd-radio-radio-typography-text-decoration:none;--sd-radio-radio-bg-default:#FFFFFF;--sd-radio-radio-bg-disabled:#E1E1E1;--sd-radio-radio-bg-hover:#D9EAFF;--sd-radio-radio-border-default:#AAAAAA;--sd-radio-radio-border-hover:#0075FF;--sd-radio-radio-border-active:#0075FF;--sd-radio-radio-border-disabled:#CCCCCC;--sd-radio-radio-dot-default:#0075FF;--sd-radio-radio-dot-disabled:#CCCCCC;--sd-radio-radio-dot-size:10px;--sd-radio-radio-label-default:#222222;--sd-radio-button-radio-button-xs-height:24px;--sd-radio-button-radio-button-xs-padding-x:8px;--sd-radio-button-radio-button-xs-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-radio-button-radio-button-xs-typography-font-size:12px;--sd-radio-button-radio-button-xs-typography-font-weight:500;--sd-radio-button-radio-button-xs-typography-text-decoration:none;--sd-radio-button-radio-button-xs-typography-line-height:20px;--sd-radio-button-radio-button-sm-height:28px;--sd-radio-button-radio-button-sm-padding-x:12px;--sd-radio-button-radio-button-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-radio-button-radio-button-sm-typography-font-size:12px;--sd-radio-button-radio-button-sm-typography-font-weight:500;--sd-radio-button-radio-button-sm-typography-text-decoration:none;--sd-radio-button-radio-button-sm-typography-line-height:20px;--sd-radio-button-radio-button-radius:4px;--sd-radio-button-radio-button-border-width:1px;--sd-radio-button-radio-button-border-default:#CCCCCC;--sd-radio-button-radio-button-border-select:#0075FF;--sd-radio-button-radio-button-border-disabled:#CCCCCC;--sd-radio-button-radio-button-bg-default:#FFFFFF;--sd-radio-button-radio-button-bg-hover:#0075FF;--sd-radio-button-radio-button-bg-select:#FFFFFF;--sd-radio-button-radio-button-bg-disabled:#E1E1E1;--sd-radio-button-radio-button-content-default:#555555;--sd-radio-button-radio-button-content-hover:#FFFFFF;--sd-radio-button-radio-button-content-select:#0075FF;--sd-radio-button-radio-button-content-disabled:#888888;--sd-radio-button-radio-button-group-gap:-1px;--sd-list-item-list-item-padding-y:4px;--sd-list-item-list-item-padding-right:12px;--sd-list-item-list-item-gap:8px;--sd-list-item-list-item-padding-left-depth1:12px;--sd-list-item-list-item-padding-left-depth2:20px;--sd-list-item-list-item-padding-left-depth3:28px;--sd-list-item-list-item-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-typography-default-font-weight:400;--sd-list-item-list-item-typography-default-font-size:12px;--sd-list-item-list-item-typography-default-line-height:20px;--sd-list-item-list-item-typography-default-text-decoration:none;--sd-list-item-list-item-typography-selected-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-typography-selected-font-weight:700;--sd-list-item-list-item-typography-selected-font-size:12px;--sd-list-item-list-item-typography-selected-text-decoration:none;--sd-list-item-list-item-typography-selected-line-height:20px;--sd-list-item-list-item-bg-default:#FFFFFF;--sd-list-item-list-item-bg-hover:#0075FF;--sd-list-item-list-item-content-default:#222222;--sd-list-item-list-item-content-hover:#FFFFFF;--sd-list-item-list-item-content-disabled:#888888;--sd-list-item-list-item-content-selected:#0075FF;--sd-list-item-list-item-indeterminate-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-indeterminate-typography-font-weight:700;--sd-list-item-list-item-indeterminate-typography-font-size:12px;--sd-list-item-list-item-indeterminate-typography-text-decoration:none;--sd-list-item-list-item-indeterminate-typography-line-height:20px;--sd-list-item-list-item-depth1-bg-default:#EFF6FF;--sd-list-item-list-item-depth1-bg-disabled:#EEEEEE;--sd-list-item-list-item-depth1-border-color:#E1E1E1;--sd-list-item-list-item-depth1-border-width:1px;--sd-list-item-list-item-depth1-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-depth1-title-typography-font-weight:700;--sd-list-item-list-item-depth1-title-typography-font-size:12px;--sd-list-item-list-item-depth1-title-typography-text-decoration:none;--sd-list-item-list-item-depth1-title-typography-line-height:20px;--sd-list-item-list-item-depth2-middle-bg:#F6F6F6;--sd-list-item-list-item-depth2-middle-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-depth2-middle-title-typography-font-weight:500;--sd-list-item-list-item-depth2-middle-title-typography-font-size:12px;--sd-list-item-list-item-depth2-middle-title-typography-text-decoration:none;--sd-list-item-list-item-depth2-middle-title-typography-line-height:20px;--sd-list-item-list-item-count-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-count-typography-font-weight:500;--sd-list-item-list-item-count-typography-font-size:12px;--sd-list-item-list-item-count-typography-text-decoration:none;--sd-list-item-list-item-count-typography-line-height:20px;--sd-list-item-list-item-count-color:#888888;--sd-list-box-list-box-radius:4px;--sd-list-box-list-box-bg:#FFFFFF;--sd-list-box-list-box-chip-padding-x-y:8px;--sd-list-box-list-box-chip-gap:8px;--sd-select-select-height:28px;--sd-select-select-radius:4px;--sd-select-select-border-width:1px;--sd-select-select-padding-x:12px;--sd-select-select-icon-default:#888888;--sd-select-select-icon-disabled:#BBBBBB;--sd-select-select-gap:8px;--sd-select-select-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-select-select-typography-font-weight:400;--sd-select-select-typography-font-size:12px;--sd-select-select-typography-line-height:20px;--sd-select-select-typography-text-decoration:none;--sd-select-select-border-default:#AAAAAA;--sd-select-select-border-hover:#0075FF;--sd-select-select-border-danger:#FB4444;--sd-select-select-border-disabled:#CCCCCC;--sd-select-select-bg-default:#FFFFFF;--sd-select-select-bg-disabled:#E1E1E1;--sd-select-select-text-default:#222222;--sd-select-select-text-disabled:#888888;--sd-select-select-size-icon:16px;--sd-field-field-label-sm-height:28px;--sd-field-field-label-sm-gap:6px;--sd-field-field-label-sm-icon:12px;--sd-field-field-label-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-field-field-label-sm-typography-font-weight:700;--sd-field-field-label-sm-typography-font-size:12px;--sd-field-field-label-sm-typography-text-decoration:none;--sd-field-field-label-sm-typography-line-height:20px;--sd-field-field-label-md-height:36px;--sd-field-field-label-md-gap:8px;--sd-field-field-label-md-icon:16px;--sd-field-field-label-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-field-field-label-md-typography-font-weight:700;--sd-field-field-label-md-typography-font-size:14px;--sd-field-field-label-md-typography-text-decoration:none;--sd-field-field-label-md-typography-line-height:24px;--sd-field-field-addon-label-height:28px;--sd-field-field-addon-label-gap:6px;--sd-field-field-addon-label-padding-x:12px;--sd-field-field-addon-label-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-field-field-addon-label-typography-font-weight:500;--sd-field-field-addon-label-typography-font-size:12px;--sd-field-field-addon-label-typography-text-decoration:none;--sd-field-field-addon-label-typography-line-height:20px;--sd-field-field-addon-label-bg:#F6F6F6;--sd-field-field-addon-label-border-default:#AAAAAA;--sd-field-field-addon-label-border-disabled:#CCCCCC;--sd-field-field-addon-label-border-width:1px;--sd-textinput-textinput-sm-height:28px;--sd-textinput-textinput-sm-padding-x:12px;--sd-textinput-textinput-sm-padding-y:4px;--sd-textinput-textinput-sm-gap:8px;--sd-textinput-textinput-sm-radius:4px;--sd-textinput-textinput-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-textinput-textinput-sm-typography-font-weight:400;--sd-textinput-textinput-sm-typography-font-size:12px;--sd-textinput-textinput-sm-typography-line-height:20px;--sd-textinput-textinput-sm-typography-text-decoration:none;--sd-textinput-textinput-md-height:36px;--sd-textinput-textinput-md-padding-x:16px;--sd-textinput-textinput-md-gap:12px;--sd-textinput-textinput-md-radius:6px;--sd-textinput-textinput-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-textinput-textinput-md-typography-font-weight:400;--sd-textinput-textinput-md-typography-font-size:14px;--sd-textinput-textinput-md-typography-text-decoration:none;--sd-textinput-textinput-md-typography-line-height:24px;--sd-textinput-textinput-border-width:1px;--sd-textinput-textinput-border-default:#AAAAAA;--sd-textinput-textinput-border-focus:#0075FF;--sd-textinput-textinput-border-danger:#FB4444;--sd-textinput-textinput-border-success:#12B553;--sd-textinput-textinput-border-disabled:#CCCCCC;--sd-textinput-textinput-bg-default:#FFFFFF;--sd-textinput-textinput-bg-disabled:#E1E1E1;--sd-textinput-textinput-bg-barcode:#FAFAA1;--sd-textinput-textinput-text-default:#222222;--sd-textinput-textinput-text-placeholder:#AAAAAA;--sd-textinput-textinput-text-disabled:#888888;--sd-textinput-textinput-text-hint:#555555;--sd-textinput-textinput-text-error-message:#E30000;--sd-textinput-textinput-size-icon:16px;--sd-textinput-textinput-icon-default:#888888;--sd-textinput-textinput-unit-color:#888888;--sd-textinput-textinput-hint-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-textinput-textinput-hint-typography-font-weight:400;--sd-textinput-textinput-hint-typography-font-size:12px;--sd-textinput-textinput-hint-typography-line-height:20px;--sd-textinput-textinput-hint-typography-text-decoration:none;--sd-textinput-textinput-error-message-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-textinput-textinput-error-message-typography-font-weight:400;--sd-textinput-textinput-error-message-typography-font-size:12px;--sd-textinput-textinput-error-message-typography-line-height:20px;--sd-textinput-textinput-error-message-typography-text-decoration:none;--sd-textinput-textinput-contents-gap:4px;--sd-textinput-textinput-resizer-size:12px;--sd-textinput-textinput-resizer-color:#AAAAAA;--sd-number-input-number-input-sm-height:28px;--sd-number-input-number-input-sm-padding-x:6px;--sd-number-input-number-input-sm-radius:4px;--sd-number-input-number-input-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-number-input-number-input-sm-typography-font-weight:400;--sd-number-input-number-input-sm-typography-font-size:12px;--sd-number-input-number-input-sm-typography-line-height:20px;--sd-number-input-number-input-sm-typography-text-decoration:none;--sd-number-input-number-input-md-height:36px;--sd-number-input-number-input-md-padding-x:8px;--sd-number-input-number-input-md-radius:6px;--sd-number-input-number-input-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-number-input-number-input-md-typography-font-weight:400;--sd-number-input-number-input-md-typography-font-size:14px;--sd-number-input-number-input-md-typography-text-decoration:none;--sd-number-input-number-input-md-typography-line-height:24px;--sd-number-input-number-input-border-width:1px;--sd-number-input-number-input-contents-gap:4px;--sd-number-input-number-input-border-default:#AAAAAA;--sd-number-input-number-input-border-focus:#0075FF;--sd-number-input-number-input-border-danger:#FB4444;--sd-number-input-number-input-border-success:#12B553;--sd-number-input-number-input-border-disabled:#CCCCCC;--sd-number-input-number-input-bg-default:#FFFFFF;--sd-number-input-number-input-bg-disabled:#E1E1E1;--sd-number-input-number-input-text-default:#222222;--sd-number-input-number-input-text-placeholder:#AAAAAA;--sd-number-input-number-input-text-disabled:#888888;--sd-number-input-number-input-hint-color:#555555;--sd-number-input-number-input-hint-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-number-input-number-input-hint-typography-font-weight:400;--sd-number-input-number-input-hint-typography-font-size:12px;--sd-number-input-number-input-hint-typography-line-height:20px;--sd-number-input-number-input-hint-typography-text-decoration:none;--sd-number-input-number-input-error-message-color:#E30000;--sd-number-input-number-input-error-message-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-number-input-number-input-error-message-typography-font-weight:400;--sd-number-input-number-input-error-message-typography-font-size:12px;--sd-number-input-number-input-error-message-typography-line-height:20px;--sd-number-input-number-input-error-message-typography-text-decoration:none;--sd-number-input-number-input-stepper-sm-size:20px;--sd-number-input-number-input-stepper-md-size:24px;--sd-number-input-number-input-stepper-radius:4px;--sd-number-input-number-input-stepper-bg-default:#EFF6FF;--sd-number-input-number-input-stepper-bg-disabled:#EEEEEE;--sd-number-input-number-input-stepper-icon-default:#0075FF;--sd-number-input-number-input-stepper-icon-disabled:#BBBBBB;--sd-filepicker-filepicker-height:28px;--sd-filepicker-filepicker-padding-x:12px;--sd-filepicker-filepicker-gap:8px;--sd-filepicker-filepicker-radius:4px;--sd-filepicker-filepicker-border-width:1px;--sd-filepicker-filepicker-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-filepicker-filepicker-typography-font-weight:400;--sd-filepicker-filepicker-typography-font-size:12px;--sd-filepicker-filepicker-typography-line-height:20px;--sd-filepicker-filepicker-typography-text-decoration:none;--sd-filepicker-filepicker-size-icon:16px;--sd-filepicker-filepicker-contents-gap:4px;--sd-filepicker-filepicker-border-default:#AAAAAA;--sd-filepicker-filepicker-border-disabled:#CCCCCC;--sd-filepicker-filepicker-bg-default:#FFFFFF;--sd-filepicker-filepicker-bg-disabled:#E1E1E1;--sd-filepicker-filepicker-text-default:#222222;--sd-filepicker-filepicker-text-placeholder:#AAAAAA;--sd-filepicker-filepicker-text-disabled:#888888;--sd-filepicker-filepicker-icon-disabled:#BBBBBB;--sd-datepicker-datepicker-sm-height:28px;--sd-datepicker-datepicker-sm-padding-x:12px;--sd-datepicker-datepicker-sm-gap:8px;--sd-datepicker-datepicker-sm-icon:16px;--sd-datepicker-datepicker-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-sm-typography-font-weight:400;--sd-datepicker-datepicker-sm-typography-font-size:12px;--sd-datepicker-datepicker-sm-typography-line-height:20px;--sd-datepicker-datepicker-sm-typography-text-decoration:none;--sd-datepicker-datepicker-sm-radius:4px;--sd-datepicker-datepicker-sm-date-gap:4px;--sd-datepicker-datepicker-md-height:36px;--sd-datepicker-datepicker-md-padding-x:16px;--sd-datepicker-datepicker-md-gap:12px;--sd-datepicker-datepicker-md-icon:20px;--sd-datepicker-datepicker-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-md-typography-font-weight:400;--sd-datepicker-datepicker-md-typography-font-size:14px;--sd-datepicker-datepicker-md-typography-text-decoration:none;--sd-datepicker-datepicker-md-typography-line-height:24px;--sd-datepicker-datepicker-md-radius:6px;--sd-datepicker-datepicker-md-date-gap:6px;--sd-datepicker-datepicker-border-width:1px;--sd-datepicker-datepicker-border-default:#AAAAAA;--sd-datepicker-datepicker-border-focus:#0075FF;--sd-datepicker-datepicker-border-disabled:#CCCCCC;--sd-datepicker-datepicker-bg-default:#FFFFFF;--sd-datepicker-datepicker-bg-disabled:#E1E1E1;--sd-datepicker-datepicker-icon-default:#888888;--sd-datepicker-datepicker-icon-disabled:#BBBBBB;--sd-datepicker-datepicker-text-default:#222222;--sd-datepicker-datepicker-text-hint:#555555;--sd-datepicker-datepicker-text-disabled:#888888;--sd-datepicker-datepicker-contents-gap:4px;--sd-datepicker-datepicker-hint-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-hint-typography-font-weight:400;--sd-datepicker-datepicker-hint-typography-font-size:12px;--sd-datepicker-datepicker-hint-typography-line-height:20px;--sd-datepicker-datepicker-hint-typography-text-decoration:none;--sd-datepicker-datepicker-calendar-bg:#FFFFFF;--sd-datepicker-datepicker-calendar-padding-x-y:24px;--sd-datepicker-datepicker-calendar-gap:12px;--sd-datepicker-datepicker-calendar-radius:8px;--sd-datepicker-datepicker-calendar-header-gap:8px;--sd-datepicker-datepicker-calendar-header-divider:#E1E1E1;--sd-datepicker-datepicker-calendar-header-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-calendar-header-typography-font-weight:500;--sd-datepicker-datepicker-calendar-header-typography-font-size:14px;--sd-datepicker-datepicker-calendar-header-typography-text-decoration:none;--sd-datepicker-datepicker-calendar-header-typography-line-height:24px;--sd-datepicker-datepicker-calendar-week-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-calendar-week-typography-font-weight:400;--sd-datepicker-datepicker-calendar-week-typography-font-size:12px;--sd-datepicker-datepicker-calendar-week-typography-line-height:20px;--sd-datepicker-datepicker-calendar-week-typography-text-decoration:none;--sd-datepicker-datepicker-calendar-week-color:#888888;--sd-datepicker-datepicker-calendar-grid-row-gap:4px;--sd-datepicker-datepicker-calendar-day-width:40px;--sd-datepicker-datepicker-calendar-day-circle-size:32px;--sd-datepicker-datepicker-calendar-day-circle-radius:9999px;--sd-datepicker-datepicker-calendar-day-default-text:#222222;--sd-datepicker-datepicker-calendar-day-hover-text:#222222;--sd-datepicker-datepicker-calendar-day-hover-border:#0075FF;--sd-datepicker-datepicker-calendar-day-select-bg:#0075FF;--sd-datepicker-datepicker-calendar-day-select-text:#FFFFFF;--sd-datepicker-datepicker-calendar-day-disabled-text:#BBBBBB;--sd-datepicker-datepicker-calendar-day-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-calendar-day-typography-default-font-weight:400;--sd-datepicker-datepicker-calendar-day-typography-default-font-size:14px;--sd-datepicker-datepicker-calendar-day-typography-default-text-decoration:none;--sd-datepicker-datepicker-calendar-day-typography-default-line-height:24px;--sd-datepicker-datepicker-calendar-day-typography-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-calendar-day-typography-bold-font-weight:700;--sd-datepicker-datepicker-calendar-day-typography-bold-font-size:14px;--sd-datepicker-datepicker-calendar-day-typography-bold-text-decoration:none;--sd-datepicker-datepicker-calendar-day-typography-bold-line-height:24px;--sd-datepicker-datepicker-calendar-day-dot-size:6px;--sd-datepicker-datepicker-calendar-day-dot-gap:2px;--sd-datepicker-datepicker-calendar-day-dot-padding-y:4px;--sd-datepicker-datepicker-calendar-range-bg:#D9EAFF;--sd-datepicker-datepicker-calendar-range-height:32px;--sd-datepicker-datepicker-calendar-range-panel-gap:24px;--sd-datepicker-datepicker-calendar-range-divider:#E1E1E1;--sd-datepicker-datepicker-calendar-range-width:20px;--sd-chip-chip-height:24px;--sd-chip-chip-padding-x:8px;--sd-chip-chip-gap:4px;--sd-chip-chip-radius:9999px;--sd-chip-chip-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-chip-chip-typography-default-font-size:12px;--sd-chip-chip-typography-default-font-weight:500;--sd-chip-chip-typography-default-text-decoration:none;--sd-chip-chip-typography-default-line-height:20px;--sd-chip-chip-typography-focus-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-chip-chip-typography-focus-font-size:12px;--sd-chip-chip-typography-focus-font-weight:400;--sd-chip-chip-typography-focus-text-decoration:none;--sd-chip-chip-typography-focus-line-height:20px;--sd-chip-chip-bg-default:#F6F6F6;--sd-chip-chip-bg-error:#FCEFEF;--sd-chip-chip-bg-focus:#FFFFFF;--sd-chip-chip-content-default:#888888;--sd-chip-chip-content-error:#E30000;--sd-chip-chip-content-focus:#555555;--sd-chip-chip-border-focus:#E1E1E1;--sd-chip-chip-border-width:1px;--sd-tag-tag-xs-height:20px;--sd-tag-tag-xs-padding-x:8px;--sd-tag-tag-xs-gap:4px;--sd-tag-tag-xs-icon:12px;--sd-tag-tag-xs-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tag-tag-xs-typography-font-size:11px;--sd-tag-tag-xs-typography-font-weight:500;--sd-tag-tag-xs-typography-line-height:18px;--sd-tag-tag-xs-typography-text-decoration:none;--sd-tag-tag-xs-radius:6px;--sd-tag-tag-sm-height:24px;--sd-tag-tag-sm-padding-x:8px;--sd-tag-tag-sm-gap:4px;--sd-tag-tag-sm-icon:16px;--sd-tag-tag-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tag-tag-sm-typography-font-size:12px;--sd-tag-tag-sm-typography-font-weight:700;--sd-tag-tag-sm-typography-text-decoration:none;--sd-tag-tag-sm-typography-line-height:20px;--sd-tag-tag-sm-radius:6px;--sd-tag-tag-md-height:28px;--sd-tag-tag-md-padding-x:12px;--sd-tag-tag-md-gap:6px;--sd-tag-tag-md-icon:16px;--sd-tag-tag-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tag-tag-md-typography-font-size:14px;--sd-tag-tag-md-typography-font-weight:700;--sd-tag-tag-md-typography-line-height:24px;--sd-tag-tag-md-typography-text-decoration:none;--sd-tag-tag-md-radius:8px;--sd-tag-tag-red-content:#FB4444;--sd-tag-tag-red-bg:#FCEFEF;--sd-tag-tag-orange-content:#FF6B00;--sd-tag-tag-orange-bg:#FEF1EA;--sd-tag-tag-yellow-content:#916C0D;--sd-tag-tag-yellow-bg:#FFF7DD;--sd-tag-tag-green-content:#00973C;--sd-tag-tag-green-bg:#E8F9EF;--sd-tag-tag-blue-content:#0075FF;--sd-tag-tag-blue-bg:#E6F1FF;--sd-tag-tag-darkblue-content:#006AC1;--sd-tag-tag-darkblue-bg:#EAF5FE;--sd-tag-tag-indigo-content:#004290;--sd-tag-tag-indigo-bg:#EFF6FF;--sd-tag-tag-grey-content:#737373;--sd-tag-tag-grey-bg:#EEEEEE;--sd-badge-badge-size:6px;--sd-badge-badge-radius:9999px;--sd-badge-badge-red:#FB4444;--sd-badge-badge-orange:#FF6B00;--sd-badge-badge-yellow:#FFC700;--sd-badge-badge-green:#00973C;--sd-badge-badge-blue:#0075FF;--sd-badge-badge-darkblue:#006AC1;--sd-badge-badge-indigo:#004290;--sd-badge-badge-grey:#737373;--sd-tooltip-tooltip-radius:6px;--sd-tooltip-tooltip-padding-y:12px;--sd-tooltip-tooltip-padding-x:16px;--sd-tooltip-tooltip-gap:12px;--sd-tooltip-tooltip-arrow-width:16px;--sd-tooltip-tooltip-arrow-height:12px;--sd-tooltip-tooltip-default-bg:#07284A;--sd-tooltip-tooltip-default-content:#FFFFFF;--sd-tooltip-tooltip-default-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tooltip-tooltip-default-typography-font-size:12px;--sd-tooltip-tooltip-default-typography-font-weight:500;--sd-tooltip-tooltip-default-typography-line-height:20px;--sd-tooltip-tooltip-default-typography-text-decoration:none;--sd-tooltip-tooltip-danger-bg:#FCEFEF;--sd-tooltip-tooltip-danger-content:#FB4444;--sd-tooltip-tooltip-danger-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tooltip-tooltip-danger-typography-font-size:12px;--sd-tooltip-tooltip-danger-typography-font-weight:700;--sd-tooltip-tooltip-danger-typography-text-decoration:none;--sd-tooltip-tooltip-danger-typography-line-height:20px;--sd-tooltip-tooltip-warning-bg:#FEF1EA;--sd-tooltip-tooltip-warning-content:#FF6B00;--sd-tooltip-tooltip-warning-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tooltip-tooltip-warning-typography-font-size:12px;--sd-tooltip-tooltip-warning-typography-font-weight:700;--sd-tooltip-tooltip-warning-typography-text-decoration:none;--sd-tooltip-tooltip-warning-typography-line-height:20px;--sd-tooltip-tooltip-accent-bg:#E6F1FF;--sd-tooltip-tooltip-accent-content:#0075FF;--sd-tooltip-tooltip-accent-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tooltip-tooltip-accent-typography-font-size:12px;--sd-tooltip-tooltip-accent-typography-font-weight:700;--sd-tooltip-tooltip-accent-typography-text-decoration:none;--sd-tooltip-tooltip-accent-typography-line-height:20px;--sd-popover-popover-radius:6px;--sd-popover-popover-padding-y:16px;--sd-popover-popover-padding-x:20px;--sd-popover-popover-gap:12px;--sd-popover-popover-body-gap:12px;--sd-popover-popover-contents-gap:4px;--sd-popover-popover-arrow-width:16px;--sd-popover-popover-arrow-height:12px;--sd-popover-popover-bg:#07284A;--sd-popover-popover-title-color:#FFFFFF;--sd-popover-popover-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-popover-popover-title-typography-font-size:14px;--sd-popover-popover-title-typography-font-weight:700;--sd-popover-popover-title-typography-line-height:24px;--sd-popover-popover-title-typography-text-decoration:none;--sd-popover-popover-description-color:#FFFFFF;--sd-popover-popover-description-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-popover-popover-description-typography-font-size:12px;--sd-popover-popover-description-typography-font-weight:500;--sd-popover-popover-description-typography-line-height:20px;--sd-popover-popover-description-typography-text-decoration:none;--sd-popover-popover-sub-action-color:#D8D8D8;--sd-popover-popover-sub-action-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-popover-popover-sub-action-typography-font-size:12px;--sd-popover-popover-sub-action-typography-font-weight:700;--sd-popover-popover-sub-action-typography-text-decoration:none;--sd-popover-popover-sub-action-typography-line-height:20px;--sd-toast-toast-radius:8px;--sd-toast-toast-padding-y:12px;--sd-toast-toast-padding-x:24px;--sd-toast-toast-gap:16px;--sd-toast-toast-icon:16px;--sd-toast-toast-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-toast-toast-typography-default-font-size:14px;--sd-toast-toast-typography-default-font-weight:700;--sd-toast-toast-typography-default-line-height:24px;--sd-toast-toast-typography-default-text-decoration:none;--sd-toast-toast-typography-link-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-toast-toast-typography-link-font-size:14px;--sd-toast-toast-typography-link-font-weight:700;--sd-toast-toast-typography-link-line-height:24px;--sd-toast-toast-typography-link-text-decoration:underline;--sd-toast-toast-default-bg:#07284A;--sd-toast-toast-default-content:#FFFFFF;--sd-toast-toast-danger-bg:#FB4444;--sd-toast-toast-danger-content:#FFFFFF;--sd-toast-toast-caution-bg:#FFC700;--sd-toast-toast-caution-content:#222222;--sd-toast-toast-complete-bg:#00973C;--sd-toast-toast-complete-content:#FFFFFF;--sd-toast-toast-accent-bg:#005CC9;--sd-toast-toast-accent-content:#FFFFFF;--sd-modal-modal-radius:8px;--sd-modal-modal-confirm-padding-x:32px;--sd-modal-modal-confirm-padding-y:40px;--sd-modal-modal-confirm-gap:40px;--sd-modal-modal-confirm-body-gap:20px;--sd-modal-modal-confirm-title-gap:12px;--sd-modal-modal-confirm-title-color:#222222;--sd-modal-modal-confirm-title-icon:32px;--sd-modal-modal-confirm-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-modal-modal-confirm-title-typography-font-weight:700;--sd-modal-modal-confirm-title-typography-font-size:18px;--sd-modal-modal-confirm-title-typography-line-height:30px;--sd-modal-modal-confirm-title-typography-text-decoration:none;--sd-modal-modal-confirm-button-gap:8px;--sd-modal-modal-confirm-message-color:#222222;--sd-modal-modal-confirm-message-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-modal-modal-confirm-message-typography-font-size:12px;--sd-modal-modal-confirm-message-typography-font-weight:400;--sd-modal-modal-confirm-message-typography-line-height:20px;--sd-modal-modal-confirm-message-typography-text-decoration:none;--sd-modal-modal-confirm-positive-icon:#0075FF;--sd-modal-modal-confirm-negative-icon:#E30000;--sd-modal-modal-bg:#FFFFFF;--sd-modal-modal-action-header-padding-x:24px;--sd-modal-modal-action-header-padding-y:20px;--sd-modal-modal-action-header-gap:12px;--sd-modal-modal-action-title-color:#033F59;--sd-modal-modal-action-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-modal-modal-action-title-typography-font-weight:700;--sd-modal-modal-action-title-typography-font-size:16px;--sd-modal-modal-action-title-typography-text-decoration:none;--sd-modal-modal-action-title-typography-line-height:26px;--sd-modal-modal-action-body-padding-x:20px;--sd-modal-modal-action-body-padding-bottom:20px;--sd-modal-modal-action-footer-padding-x:20px;--sd-modal-modal-action-footer-padding-y:8px;--sd-modal-modal-action-footer-gap:16px;--sd-modal-modal-action-footer-bg:#F6F6F6;--sd-modal-modal-action-footer-border:#E1E1E1;--sd-modal-modal-loading-width:520px;--sd-modal-modal-loading-height:320px;--sd-modal-modal-loading-gap:20px;--sd-modal-modal-loading-content:80px;--sd-modal-modal-loading-message-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-modal-modal-loading-message-typography-font-size:12px;--sd-modal-modal-loading-message-typography-font-weight:400;--sd-modal-modal-loading-message-typography-line-height:20px;--sd-modal-modal-loading-message-typography-text-decoration:none;--sd-modal-modal-loading-message-color:#888888;--sd-spinner-spinner-size:80px;--sd-spinner-spinner-color-track:#EEEEEE;--sd-spinner-spinner-color-arc:#2D8DFF;--sd-guide-guide-gap:4px;--sd-guide-guide-button-height:28px;--sd-guide-guide-button-padding-x:12px;--sd-guide-guide-button-radius:9999px;--sd-guide-guide-button-gap:6px;--sd-guide-guide-button-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-guide-guide-button-typography-font-size:12px;--sd-guide-guide-button-typography-font-weight:500;--sd-guide-guide-button-typography-text-decoration:none;--sd-guide-guide-button-typography-line-height:20px;--sd-guide-guide-button-icon-size:16px;--sd-guide-guide-button-icon-default:#00973C;--sd-guide-guide-button-icon-active:#FFFFFF;--sd-guide-guide-button-border-width:1px;--sd-guide-guide-button-border-default:#E1E1E1;--sd-guide-guide-button-bg-default:#FFFFFF;--sd-guide-guide-button-bg-tip:#00973C;--sd-guide-guide-button-bg-notion:#1F8AE1;--sd-guide-guide-button-text-default:#222222;--sd-guide-guide-button-text-active:#FFFFFF;--sd-guide-guide-contents-padding-x:24px;--sd-guide-guide-contents-padding-y:20px;--sd-guide-guide-contents-gap:12px;--sd-guide-guide-contents-title-gap:8px;--sd-guide-guide-contents-row-gap:8px;--sd-guide-guide-contents-body-gap:2px;--sd-guide-guide-contents-typography-title-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-guide-guide-contents-typography-title-font-weight:700;--sd-guide-guide-contents-typography-title-font-size:16px;--sd-guide-guide-contents-typography-title-text-decoration:none;--sd-guide-guide-contents-typography-title-line-height:26px;--sd-guide-guide-contents-typography-body-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-guide-guide-contents-typography-body-font-weight:400;--sd-guide-guide-contents-typography-body-font-size:12px;--sd-guide-guide-contents-typography-body-line-height:20px;--sd-guide-guide-contents-typography-body-text-decoration:none;--sd-guide-guide-contents-typography-color:#222222;--sd-guide-guide-contents-icon:#00973C;--sd-guide-guide-contents-radius:8px;--sd-guide-guide-contents-depth-padding-left:32px;--sd-progress-progress-linear-height:20px;--sd-progress-progress-linear-radius:9999px;--sd-progress-progress-linear-gap:12px;--sd-progress-progress-linear-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-progress-progress-linear-typography-font-size:12px;--sd-progress-progress-linear-typography-font-weight:700;--sd-progress-progress-linear-typography-text-decoration:none;--sd-progress-progress-linear-typography-line-height:20px;--sd-progress-progress-circular-size:80px;--sd-progress-progress-circular-gap:8px;--sd-progress-progress-circular-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-progress-progress-circular-typography-font-weight:700;--sd-progress-progress-circular-typography-font-size:16px;--sd-progress-progress-circular-typography-text-decoration:none;--sd-progress-progress-circular-typography-line-height:26px;--sd-progress-progress-label-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-progress-progress-label-typography-font-size:12px;--sd-progress-progress-label-typography-font-weight:400;--sd-progress-progress-label-typography-line-height:20px;--sd-progress-progress-label-typography-text-decoration:none;--sd-progress-progress-color-track:#EEEEEE;--sd-progress-progress-color-label:#555555;--sd-progress-progress-active-color:#2D8DFF;--sd-progress-progress-success-color:#12B553;--sd-progress-progress-error-color:#FB4444;--sd-progress-progress-bar-text:#FFFFFF;--sd-pagination-pagination-height:24px;--sd-pagination-pagination-padding-x:6px;--sd-pagination-pagination-radius:6px;--sd-pagination-pagination-gap:12px;--sd-pagination-pagination-move-gap:4px;--sd-pagination-pagination-icon:12px;--sd-pagination-pagination-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-pagination-pagination-typography-default-font-size:12px;--sd-pagination-pagination-typography-default-font-weight:500;--sd-pagination-pagination-typography-default-text-decoration:none;--sd-pagination-pagination-typography-default-line-height:20px;--sd-pagination-pagination-typography-default-selected-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-pagination-pagination-typography-default-selected-font-weight:700;--sd-pagination-pagination-typography-default-selected-font-size:12px;--sd-pagination-pagination-typography-default-selected-line-height:20px;--sd-pagination-pagination-typography-default-selected-text-decoration:none;--sd-pagination-pagination-typography-selected-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-pagination-pagination-typography-selected-font-weight:700;--sd-pagination-pagination-typography-selected-font-size:12px;--sd-pagination-pagination-typography-selected-line-height:20px;--sd-pagination-pagination-typography-selected-text-decoration:none;--sd-pagination-pagination-typography-selected-selected-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-pagination-pagination-typography-selected-selected-font-weight:700;--sd-pagination-pagination-typography-selected-selected-font-size:12px;--sd-pagination-pagination-typography-selected-selected-line-height:20px;--sd-pagination-pagination-typography-selected-selected-text-decoration:none;--sd-pagination-pagination-item-bg-hover:#EEEEEE;--sd-pagination-pagination-item-bg-selected:#E6F1FF;--sd-pagination-pagination-item-content-default:#555555;--sd-pagination-pagination-item-content-hover:#004290;--sd-pagination-pagination-item-content-selected:#004290;--sd-tab-tab-main-lg-height:44px;--sd-tab-tab-main-lg-padding-x:32px;--sd-tab-tab-main-md-height:36px;--sd-tab-tab-main-md-padding-x:24px;--sd-tab-tab-main-gap:8px;--sd-tab-tab-main-container-gap:4px;--sd-tab-tab-main-radius:6px;--sd-tab-tab-main-border-width:1px;--sd-tab-tab-main-selected-bg:#FFFFFF;--sd-tab-tab-main-selected-text:#0075FF;--sd-tab-tab-main-selected-border:#0075FF;--sd-tab-tab-main-selected-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tab-tab-main-selected-typography-font-weight:700;--sd-tab-tab-main-selected-typography-font-size:12px;--sd-tab-tab-main-selected-typography-line-height:20px;--sd-tab-tab-main-selected-typography-text-decoration:none;--sd-tab-tab-main-default-bg:#F6F6F6;--sd-tab-tab-main-default-text:#888888;--sd-tab-tab-main-default-border:#CCCCCC;--sd-tab-tab-main-default-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tab-tab-main-default-typography-font-weight:400;--sd-tab-tab-main-default-typography-font-size:12px;--sd-tab-tab-main-default-typography-line-height:20px;--sd-tab-tab-main-default-typography-text-decoration:none;--sd-tab-tab-sub-selected-text:#0075FF;--sd-tab-tab-sub-selected-line:#0075FF;--sd-tab-tab-sub-selected-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tab-tab-sub-selected-typography-font-weight:700;--sd-tab-tab-sub-selected-typography-font-size:12px;--sd-tab-tab-sub-selected-typography-line-height:20px;--sd-tab-tab-sub-selected-typography-text-decoration:none;--sd-tab-tab-sub-default-text:#222222;--sd-tab-tab-sub-default-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tab-tab-sub-default-typography-font-weight:400;--sd-tab-tab-sub-default-typography-font-size:12px;--sd-tab-tab-sub-default-typography-line-height:20px;--sd-tab-tab-sub-default-typography-text-decoration:none;--sd-tab-tab-sub-border-width:1px;--sd-tab-tab-sub-gap:24px;--sd-tab-tab-sub-content-gap:4px}.bg-primary{background-color:var(--color-primary, #051d36)}.bg-secondary{background-color:var(--color-secondary, #555555)}.bg-accent{background-color:var(--color-accent, #9c27b0)}.bg-positive{background-color:var(--color-positive, #0075ff)}.bg-negative{background-color:var(--color-negative, #e30000)}.bg-info{background-color:var(--color-info, #00cd52)}.bg-warning{background-color:var(--color-warning, #f2c037)}.bg-red_99{background-color:var(--color-red_99, #220000)}.bg-red_95{background-color:var(--color-red_95, #440000)}.bg-red_90{background-color:var(--color-red_90, #5E0000)}.bg-red_85{background-color:var(--color-red_85, #820000)}.bg-red_80{background-color:var(--color-red_80, #AD0000)}.bg-red_75{background-color:var(--color-red_75, #E30000)}.bg-red_70{background-color:var(--color-red_70, #FB4444)}.bg-red_60{background-color:var(--color-red_60, #FF7C7C)}.bg-red_45{background-color:var(--color-red_45, #FFB5B5)}.bg-red_30{background-color:var(--color-red_30, #FFD3D3)}.bg-red_20{background-color:var(--color-red_20, #FCE6E6)}.bg-red_15{background-color:var(--color-red_15, #FCEFEF)}.bg-caution_bg{background-color:var(--color-caution_bg, #FEF1F1)}.bg-caution_icon{background-color:var(--color-caution_icon, #fd9595)}.bg-orange_99{background-color:var(--color-orange_99, #2F1100)}.bg-orange_95{background-color:var(--color-orange_95, #4D1B00)}.bg-orange_90{background-color:var(--color-orange_90, #752A00)}.bg-orange_85{background-color:var(--color-orange_85, #9B3700)}.bg-orange_75{background-color:var(--color-orange_75, #CE4900)}.bg-orange_65{background-color:var(--color-orange_65, #FF6B00)}.bg-orange_60{background-color:var(--color-orange_60, #FF7F22)}.bg-orange_55{background-color:var(--color-orange_55, #FFA452)}.bg-orange_45{background-color:var(--color-orange_45, #FFBC81)}.bg-orange_35{background-color:var(--color-orange_35, #FFD5AF)}.bg-orange_20{background-color:var(--color-orange_20, #FFEAD7)}.bg-orange_10{background-color:var(--color-orange_10, #FEF1EA)}.bg-header_alert{background-color:var(--color-header_alert, #FF7A00)}.bg-yellow_95{background-color:var(--color-yellow_95, #322700)}.bg-yellow_90{background-color:var(--color-yellow_90, #453702)}.bg-yellow_80{background-color:var(--color-yellow_80, #6C5602)}.bg-yellow_70{background-color:var(--color-yellow_70, #9C7A00)}.bg-yellow_60{background-color:var(--color-yellow_60, #C49900)}.bg-yellow_50{background-color:var(--color-yellow_50, #EBB800)}.bg-yellow_45{background-color:var(--color-yellow_45, #FFC700)}.bg-yellow_40{background-color:var(--color-yellow_40, #FFD643)}.bg-yellow_30{background-color:var(--color-yellow_30, #FEE17C)}.bg-yellow_25{background-color:var(--color-yellow_25, #FFE99E)}.bg-yellow_20{background-color:var(--color-yellow_20, #FEF1C4)}.bg-yellow_10{background-color:var(--color-yellow_10, #FFF7DD)}.bg-olive_95{background-color:var(--color-olive_95, #2C2C00)}.bg-olive_90{background-color:var(--color-olive_90, #454500)}.bg-olive_80{background-color:var(--color-olive_80, #636300)}.bg-olive_70{background-color:var(--color-olive_70, #838300)}.bg-olive_65{background-color:var(--color-olive_65, #A5A500)}.bg-olive_55{background-color:var(--color-olive_55, #C7C700)}.bg-olive_45{background-color:var(--color-olive_45, #DDDD12)}.bg-olive_30{background-color:var(--color-olive_30, #EEEE37)}.bg-olive_20{background-color:var(--color-olive_20, #F6F65F)}.bg-olive_15{background-color:var(--color-olive_15, #FAFAA1)}.bg-olive_10{background-color:var(--color-olive_10, #FBFBBF)}.bg-olive_05{background-color:var(--color-olive_05, #FEFED9)}.bg-green_99{background-color:var(--color-green_99, #001D0B)}.bg-green_95{background-color:var(--color-green_95, #003013)}.bg-green_90{background-color:var(--color-green_90, #00461C)}.bg-green_85{background-color:var(--color-green_85, #006629)}.bg-green_80{background-color:var(--color-green_80, #007B31)}.bg-green_75{background-color:var(--color-green_75, #00973C)}.bg-green_70{background-color:var(--color-green_70, #12B553)}.bg-green_65{background-color:var(--color-green_65, #2BCE6C)}.bg-green_55{background-color:var(--color-green_55, #6DE39C)}.bg-green_45{background-color:var(--color-green_45, #ACF4C9)}.bg-green_25{background-color:var(--color-green_25, #D4FAE3)}.bg-green_15{background-color:var(--color-green_15, #E8F9EF)}.bg-steelblue_99{background-color:var(--color-steelblue_99, #021a25)}.bg-steelblue_95{background-color:var(--color-steelblue_95, #02212f)}.bg-steelblue_90{background-color:var(--color-steelblue_90, #032d40)}.bg-steelblue_85{background-color:var(--color-steelblue_85, #033f59)}.bg-steelblue_80{background-color:var(--color-steelblue_80, #06587d)}.bg-steelblue_75{background-color:var(--color-steelblue_75, #066d9b)}.bg-steelblue_70{background-color:var(--color-steelblue_70, #128fc7)}.bg-steelblue_65{background-color:var(--color-steelblue_65, #229fd7)}.bg-steelblue_60{background-color:var(--color-steelblue_60, #50bff0)}.bg-steelblue_45{background-color:var(--color-steelblue_45, #a4e2fd)}.bg-steelblue_25{background-color:var(--color-steelblue_25, #d9f2fd)}.bg-steelblue_10{background-color:var(--color-steelblue_10, #ecf8fd)}.bg-oceanblue_99{background-color:var(--color-oceanblue_99, #011428)}.bg-oceanblue_95{background-color:var(--color-oceanblue_95, #03172d)}.bg-oceanblue_90{background-color:var(--color-oceanblue_90, #051d36)}.bg-oceanblue_85{background-color:var(--color-oceanblue_85, #07284a)}.bg-oceanblue_80{background-color:var(--color-oceanblue_80, #004177)}.bg-oceanblue_75{background-color:var(--color-oceanblue_75, #025497)}.bg-oceanblue_70{background-color:var(--color-oceanblue_70, #006ac1)}.bg-oceanblue_65{background-color:var(--color-oceanblue_65, #1f8ae1)}.bg-oceanblue_60{background-color:var(--color-oceanblue_60, #5cb0f3)}.bg-oceanblue_50{background-color:var(--color-oceanblue_50, #9cd1fc)}.bg-oceanblue_25{background-color:var(--color-oceanblue_25, #d5ebfe)}.bg-oceanblue_15{background-color:var(--color-oceanblue_15, #eaf5fe)}.bg-brilliantblue_99{background-color:var(--color-brilliantblue_99, #001226)}.bg-brilliantblue_95{background-color:var(--color-brilliantblue_95, #001b39)}.bg-brilliantblue_90{background-color:var(--color-brilliantblue_90, #002b5e)}.bg-brilliantblue_85{background-color:var(--color-brilliantblue_85, #004290)}.bg-brilliantblue_80{background-color:var(--color-brilliantblue_80, #005cc9)}.bg-brilliantblue_75{background-color:var(--color-brilliantblue_75, #0075ff)}.bg-brilliantblue_70{background-color:var(--color-brilliantblue_70, #2d8dff)}.bg-brilliantblue_60{background-color:var(--color-brilliantblue_60, #64abff)}.bg-brilliantblue_50{background-color:var(--color-brilliantblue_50, #93c4ff)}.bg-brilliantblue_40{background-color:var(--color-brilliantblue_40, #bbdaff)}.bg-brilliantblue_25{background-color:var(--color-brilliantblue_25, #d9eaff)}.bg-brilliantblue_20{background-color:var(--color-brilliantblue_20, #e6f1ff)}.bg-brilliantblue_10{background-color:var(--color-brilliantblue_10, #eff6ff)}.bg-brilliantblue_05{background-color:var(--color-brilliantblue_05, #f5faff)}.bg-grey_95{background-color:var(--color-grey_95, #222222)}.bg-grey_90{background-color:var(--color-grey_90, #333333)}.bg-grey_85{background-color:var(--color-grey_85, #444444)}.bg-grey_80{background-color:var(--color-grey_80, #555555)}.bg-grey_70{background-color:var(--color-grey_70, #737373)}.bg-grey_65{background-color:var(--color-grey_65, #888888)}.bg-grey_60{background-color:var(--color-grey_60, #999999)}.bg-grey_55{background-color:var(--color-grey_55, #aaaaaa)}.bg-grey_50{background-color:var(--color-grey_50, #bbbbbb)}.bg-grey_45{background-color:var(--color-grey_45, #cccccc)}.bg-grey_35{background-color:var(--color-grey_35, #D8D8D8)}.bg-grey_30{background-color:var(--color-grey_30, #e1e1e1)}.bg-grey_25{background-color:var(--color-grey_25, #E5E5E5)}.bg-grey_20{background-color:var(--color-grey_20, #eeeeee)}.bg-grey_10{background-color:var(--color-grey_10, #f6f6f6)}.bg-grey_05{background-color:var(--color-grey_05, #f9f9f9)}.bg-white{background-color:var(--color-white, #ffffff)}.bg-black{background-color:var(--color-black, #000000)}.text-primary{color:var(--color-primary, #051d36)}.text-secondary{color:var(--color-secondary, #555555)}.text-accent{color:var(--color-accent, #9c27b0)}.text-positive{color:var(--color-positive, #0075ff)}.text-negative{color:var(--color-negative, #e30000)}.text-info{color:var(--color-info, #00cd52)}.text-warning{color:var(--color-warning, #f2c037)}.text-red_99{color:var(--color-red_99, #220000)}.text-red_95{color:var(--color-red_95, #440000)}.text-red_90{color:var(--color-red_90, #5E0000)}.text-red_85{color:var(--color-red_85, #820000)}.text-red_80{color:var(--color-red_80, #AD0000)}.text-red_75{color:var(--color-red_75, #E30000)}.text-red_70{color:var(--color-red_70, #FB4444)}.text-red_60{color:var(--color-red_60, #FF7C7C)}.text-red_45{color:var(--color-red_45, #FFB5B5)}.text-red_30{color:var(--color-red_30, #FFD3D3)}.text-red_20{color:var(--color-red_20, #FCE6E6)}.text-red_15{color:var(--color-red_15, #FCEFEF)}.text-caution_bg{color:var(--color-caution_bg, #FEF1F1)}.text-caution_icon{color:var(--color-caution_icon, #fd9595)}.text-orange_99{color:var(--color-orange_99, #2F1100)}.text-orange_95{color:var(--color-orange_95, #4D1B00)}.text-orange_90{color:var(--color-orange_90, #752A00)}.text-orange_85{color:var(--color-orange_85, #9B3700)}.text-orange_75{color:var(--color-orange_75, #CE4900)}.text-orange_65{color:var(--color-orange_65, #FF6B00)}.text-orange_60{color:var(--color-orange_60, #FF7F22)}.text-orange_55{color:var(--color-orange_55, #FFA452)}.text-orange_45{color:var(--color-orange_45, #FFBC81)}.text-orange_35{color:var(--color-orange_35, #FFD5AF)}.text-orange_20{color:var(--color-orange_20, #FFEAD7)}.text-orange_10{color:var(--color-orange_10, #FEF1EA)}.text-header_alert{color:var(--color-header_alert, #FF7A00)}.text-yellow_95{color:var(--color-yellow_95, #322700)}.text-yellow_90{color:var(--color-yellow_90, #453702)}.text-yellow_80{color:var(--color-yellow_80, #6C5602)}.text-yellow_70{color:var(--color-yellow_70, #9C7A00)}.text-yellow_60{color:var(--color-yellow_60, #C49900)}.text-yellow_50{color:var(--color-yellow_50, #EBB800)}.text-yellow_45{color:var(--color-yellow_45, #FFC700)}.text-yellow_40{color:var(--color-yellow_40, #FFD643)}.text-yellow_30{color:var(--color-yellow_30, #FEE17C)}.text-yellow_25{color:var(--color-yellow_25, #FFE99E)}.text-yellow_20{color:var(--color-yellow_20, #FEF1C4)}.text-yellow_10{color:var(--color-yellow_10, #FFF7DD)}.text-olive_95{color:var(--color-olive_95, #2C2C00)}.text-olive_90{color:var(--color-olive_90, #454500)}.text-olive_80{color:var(--color-olive_80, #636300)}.text-olive_70{color:var(--color-olive_70, #838300)}.text-olive_65{color:var(--color-olive_65, #A5A500)}.text-olive_55{color:var(--color-olive_55, #C7C700)}.text-olive_45{color:var(--color-olive_45, #DDDD12)}.text-olive_30{color:var(--color-olive_30, #EEEE37)}.text-olive_20{color:var(--color-olive_20, #F6F65F)}.text-olive_15{color:var(--color-olive_15, #FAFAA1)}.text-olive_10{color:var(--color-olive_10, #FBFBBF)}.text-olive_05{color:var(--color-olive_05, #FEFED9)}.text-green_99{color:var(--color-green_99, #001D0B)}.text-green_95{color:var(--color-green_95, #003013)}.text-green_90{color:var(--color-green_90, #00461C)}.text-green_85{color:var(--color-green_85, #006629)}.text-green_80{color:var(--color-green_80, #007B31)}.text-green_75{color:var(--color-green_75, #00973C)}.text-green_70{color:var(--color-green_70, #12B553)}.text-green_65{color:var(--color-green_65, #2BCE6C)}.text-green_55{color:var(--color-green_55, #6DE39C)}.text-green_45{color:var(--color-green_45, #ACF4C9)}.text-green_25{color:var(--color-green_25, #D4FAE3)}.text-green_15{color:var(--color-green_15, #E8F9EF)}.text-steelblue_99{color:var(--color-steelblue_99, #021a25)}.text-steelblue_95{color:var(--color-steelblue_95, #02212f)}.text-steelblue_90{color:var(--color-steelblue_90, #032d40)}.text-steelblue_85{color:var(--color-steelblue_85, #033f59)}.text-steelblue_80{color:var(--color-steelblue_80, #06587d)}.text-steelblue_75{color:var(--color-steelblue_75, #066d9b)}.text-steelblue_70{color:var(--color-steelblue_70, #128fc7)}.text-steelblue_65{color:var(--color-steelblue_65, #229fd7)}.text-steelblue_60{color:var(--color-steelblue_60, #50bff0)}.text-steelblue_45{color:var(--color-steelblue_45, #a4e2fd)}.text-steelblue_25{color:var(--color-steelblue_25, #d9f2fd)}.text-steelblue_10{color:var(--color-steelblue_10, #ecf8fd)}.text-oceanblue_99{color:var(--color-oceanblue_99, #011428)}.text-oceanblue_95{color:var(--color-oceanblue_95, #03172d)}.text-oceanblue_90{color:var(--color-oceanblue_90, #051d36)}.text-oceanblue_85{color:var(--color-oceanblue_85, #07284a)}.text-oceanblue_80{color:var(--color-oceanblue_80, #004177)}.text-oceanblue_75{color:var(--color-oceanblue_75, #025497)}.text-oceanblue_70{color:var(--color-oceanblue_70, #006ac1)}.text-oceanblue_65{color:var(--color-oceanblue_65, #1f8ae1)}.text-oceanblue_60{color:var(--color-oceanblue_60, #5cb0f3)}.text-oceanblue_50{color:var(--color-oceanblue_50, #9cd1fc)}.text-oceanblue_25{color:var(--color-oceanblue_25, #d5ebfe)}.text-oceanblue_15{color:var(--color-oceanblue_15, #eaf5fe)}.text-brilliantblue_99{color:var(--color-brilliantblue_99, #001226)}.text-brilliantblue_95{color:var(--color-brilliantblue_95, #001b39)}.text-brilliantblue_90{color:var(--color-brilliantblue_90, #002b5e)}.text-brilliantblue_85{color:var(--color-brilliantblue_85, #004290)}.text-brilliantblue_80{color:var(--color-brilliantblue_80, #005cc9)}.text-brilliantblue_75{color:var(--color-brilliantblue_75, #0075ff)}.text-brilliantblue_70{color:var(--color-brilliantblue_70, #2d8dff)}.text-brilliantblue_60{color:var(--color-brilliantblue_60, #64abff)}.text-brilliantblue_50{color:var(--color-brilliantblue_50, #93c4ff)}.text-brilliantblue_40{color:var(--color-brilliantblue_40, #bbdaff)}.text-brilliantblue_25{color:var(--color-brilliantblue_25, #d9eaff)}.text-brilliantblue_20{color:var(--color-brilliantblue_20, #e6f1ff)}.text-brilliantblue_10{color:var(--color-brilliantblue_10, #eff6ff)}.text-brilliantblue_05{color:var(--color-brilliantblue_05, #f5faff)}.text-grey_95{color:var(--color-grey_95, #222222)}.text-grey_90{color:var(--color-grey_90, #333333)}.text-grey_85{color:var(--color-grey_85, #444444)}.text-grey_80{color:var(--color-grey_80, #555555)}.text-grey_70{color:var(--color-grey_70, #737373)}.text-grey_65{color:var(--color-grey_65, #888888)}.text-grey_60{color:var(--color-grey_60, #999999)}.text-grey_55{color:var(--color-grey_55, #aaaaaa)}.text-grey_50{color:var(--color-grey_50, #bbbbbb)}.text-grey_45{color:var(--color-grey_45, #cccccc)}.text-grey_35{color:var(--color-grey_35, #D8D8D8)}.text-grey_30{color:var(--color-grey_30, #e1e1e1)}.text-grey_25{color:var(--color-grey_25, #E5E5E5)}.text-grey_20{color:var(--color-grey_20, #eeeeee)}.text-grey_10{color:var(--color-grey_10, #f6f6f6)}.text-grey_05{color:var(--color-grey_05, #f9f9f9)}.text-white{color:var(--color-white, #ffffff)}.text-black{color:var(--color-black, #000000)}*,*::before,*::after{box-sizing:border-box}*{scroll-behavior:smooth}*::-webkit-scrollbar{opacity:0;width:8px;background:#E5E5E5}*::-webkit-scrollbar:horizontal{height:8px}*::-webkit-scrollbar-thumb{height:80px;background-color:#CCCCCC;border-radius:4px}*::-webkit-scrollbar-track{background-color:#E5E5E5}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin-block-end:0}ul[role=list],ol[role=list]{list-style:none}body{min-height:100vh;line-height:1.5}h1,h2,h3,h4,button,input,label{line-height:1}h1,h2,h3,h4{text-wrap:balance}a:not([class]){text-decoration-skip-ink:auto;color:currentColor}img,picture{max-width:100%;display:block}input,button,textarea,select{font-size:inherit}:target{scroll-margin-block:5ex}button{background:none;border:none;cursor:pointer;padding:0;outline:0}button:focus{outline:0 !important}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-text-fill-color:#000;-webkit-box-shadow:0 0 0px 1000px #fff inset;box-shadow:0 0 0px 1000px #fff inset;transition:background-color 5000s ease-in-out 0s}input:autofill,input:autofill:hover,input:autofill:focus,input:autofill:active{-webkit-text-fill-color:#000;-webkit-box-shadow:0 0 0px 1000px #fff inset;box-shadow:0 0 0px 1000px #fff inset;transition:background-color 5000s ease-in-out 0s}:host{display:inline-block;height:fit-content;line-height:0}.text-center{text-align:center}.text-right{text-align:right}.text-left{text-align:left}input[type=text],input[type=number],input[type=password],input[type=email],input[type=tel],textarea{padding-block:0px;padding-inline:0px}.sd-hoverable:hover>.sd-focus-helper{background:currentColor;opacity:0.15}.sd-hoverable:hover>.sd-focus-helper:before{opacity:0.1}.sd-hoverable:hover>.sd-focus-helper:after{opacity:0.4}.sd-focus-helper{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:inherit;opacity:0;transition:background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.4s cubic-bezier(0.25, 0.8, 0.5, 1)}.sd-focus-helper:before,.sd-focus-helper:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;border-radius:inherit;transition:background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.6s cubic-bezier(0.25, 0.8, 0.5, 1)}.sd-focus-helper:before{background:#000000}.sd-focus-helper:after{background:#ffffff}";
|
|
139
|
+
const globalStyles = ":root{--color-primary:#051D36;--sd-primary:#051D36;--color-secondary:#555555;--sd-secondary:#555555;--color-accent:#9C27B0;--sd-accent:#9C27B0;--color-positive:#0075FF;--sd-positive:#0075FF;--color-negative:#E30000;--sd-negative:#E30000;--color-info:#00CD52;--sd-info:#00CD52;--color-warning:#F2C037;--sd-warning:#F2C037;--color-caution_bg:#FEF1F1;--sd-caution_bg:#FEF1F1;--color-caution_icon:#FD9595;--sd-caution_icon:#FD9595;--color-header_alert:#FF7A00;--sd-header_alert:#FF7A00;--color-white:#FFFFFF;--sd-white:#FFFFFF;--color-black:#000000;--sd-black:#000000;--color-grey_10:#F6F6F6;--sd-grey_10:#F6F6F6;--color-grey_20:#EEEEEE;--sd-grey_20:#EEEEEE;--color-grey_25:#E5E5E5;--sd-grey_25:#E5E5E5;--color-grey_30:#E1E1E1;--sd-grey_30:#E1E1E1;--color-grey_35:#D8D8D8;--sd-grey_35:#D8D8D8;--color-grey_45:#CCCCCC;--sd-grey_45:#CCCCCC;--color-grey_50:#BBBBBB;--sd-grey_50:#BBBBBB;--color-grey_55:#AAAAAA;--sd-grey_55:#AAAAAA;--color-grey_60:#999999;--sd-grey_60:#999999;--color-grey_65:#888888;--sd-grey_65:#888888;--color-grey_70:#737373;--sd-grey_70:#737373;--color-grey_80:#555555;--sd-grey_80:#555555;--color-grey_85:#444444;--sd-grey_85:#444444;--color-grey_90:#333333;--sd-grey_90:#333333;--color-grey_95:#222222;--sd-grey_95:#222222;--color-grey_05:#F9F9F9;--sd-grey_05:#F9F9F9;--color-red_15:#FCEFEF;--sd-red_15:#FCEFEF;--color-red_20:#FCE6E6;--sd-red_20:#FCE6E6;--color-red_30:#FFD3D3;--sd-red_30:#FFD3D3;--color-red_45:#FFB5B5;--sd-red_45:#FFB5B5;--color-red_60:#FF7C7C;--sd-red_60:#FF7C7C;--color-red_70:#FB4444;--sd-red_70:#FB4444;--color-red_75:#E30000;--sd-red_75:#E30000;--color-red_75_006:#E30000;--sd-red_75_006:#E30000;--color-red_80:#AD0000;--sd-red_80:#AD0000;--color-red_85:#820000;--sd-red_85:#820000;--color-red_90:#5E0000;--sd-red_90:#5E0000;--color-red_95:#440000;--sd-red_95:#440000;--color-red_99:#220000;--sd-red_99:#220000;--color-orange_10:#FEF1EA;--sd-orange_10:#FEF1EA;--color-orange_20:#FFEAD7;--sd-orange_20:#FFEAD7;--color-orange_35:#FFD5AF;--sd-orange_35:#FFD5AF;--color-orange_45:#FFBC81;--sd-orange_45:#FFBC81;--color-orange_55:#FFA452;--sd-orange_55:#FFA452;--color-orange_60:#FF7F22;--sd-orange_60:#FF7F22;--color-orange_65:#FF6B00;--sd-orange_65:#FF6B00;--color-orange_75:#CE4900;--sd-orange_75:#CE4900;--color-orange_85:#9B3700;--sd-orange_85:#9B3700;--color-orange_90:#752A00;--sd-orange_90:#752A00;--color-orange_95:#4D1B00;--sd-orange_95:#4D1B00;--color-orange_99:#2F1100;--sd-orange_99:#2F1100;--color-yellow_10:#FFF7DD;--sd-yellow_10:#FFF7DD;--color-yellow_20:#FEF1C4;--sd-yellow_20:#FEF1C4;--color-yellow_25:#FFE99E;--sd-yellow_25:#FFE99E;--color-yellow_30:#FEE17C;--sd-yellow_30:#FEE17C;--color-yellow_40:#FFD643;--sd-yellow_40:#FFD643;--color-yellow_45:#FFC700;--sd-yellow_45:#FFC700;--color-yellow_50:#EBB110;--sd-yellow_50:#EBB110;--color-yellow_60:#CA9612;--sd-yellow_60:#CA9612;--color-yellow_70:#916C0D;--sd-yellow_70:#916C0D;--color-yellow_80:#6C5002;--sd-yellow_80:#6C5002;--color-yellow_90:#453602;--sd-yellow_90:#453602;--color-yellow_95:#322700;--sd-yellow_95:#322700;--color-olive_10:#FBFBBF;--sd-olive_10:#FBFBBF;--color-olive_15:#FAFAA1;--sd-olive_15:#FAFAA1;--color-olive_20:#F6F65F;--sd-olive_20:#F6F65F;--color-olive_30:#EEEE37;--sd-olive_30:#EEEE37;--color-olive_45:#DDDD12;--sd-olive_45:#DDDD12;--color-olive_55:#C7C700;--sd-olive_55:#C7C700;--color-olive_65:#A5A500;--sd-olive_65:#A5A500;--color-olive_70:#838300;--sd-olive_70:#838300;--color-olive_80:#636300;--sd-olive_80:#636300;--color-olive_90:#454500;--sd-olive_90:#454500;--color-olive_95:#2C2C00;--sd-olive_95:#2C2C00;--color-olive_05:#FEFED9;--sd-olive_05:#FEFED9;--color-green_15:#E8F9EF;--sd-green_15:#E8F9EF;--color-green_25:#D4FAE3;--sd-green_25:#D4FAE3;--color-green_45:#ACF4C9;--sd-green_45:#ACF4C9;--color-green_55:#6DE39C;--sd-green_55:#6DE39C;--color-green_65:#2BCE6C;--sd-green_65:#2BCE6C;--color-green_70:#12B553;--sd-green_70:#12B553;--color-green_75:#00973C;--sd-green_75:#00973C;--color-green_80:#007B31;--sd-green_80:#007B31;--color-green_85:#006629;--sd-green_85:#006629;--color-green_90:#00461C;--sd-green_90:#00461C;--color-green_95:#003013;--sd-green_95:#003013;--color-green_99:#001D0B;--sd-green_99:#001D0B;--color-steelblue_10:#ECF8FD;--sd-steelblue_10:#ECF8FD;--color-steelblue_25:#D9F2FD;--sd-steelblue_25:#D9F2FD;--color-steelblue_45:#A4E2FD;--sd-steelblue_45:#A4E2FD;--color-steelblue_60:#50BFF0;--sd-steelblue_60:#50BFF0;--color-steelblue_65:#229FD7;--sd-steelblue_65:#229FD7;--color-steelblue_70:#128FC7;--sd-steelblue_70:#128FC7;--color-steelblue_75:#066D9B;--sd-steelblue_75:#066D9B;--color-steelblue_80:#06587D;--sd-steelblue_80:#06587D;--color-steelblue_85:#033F59;--sd-steelblue_85:#033F59;--color-steelblue_90:#032D40;--sd-steelblue_90:#032D40;--color-steelblue_95:#02212F;--sd-steelblue_95:#02212F;--color-steelblue_99:#021A25;--sd-steelblue_99:#021A25;--color-oceanblue_15:#EAF5FE;--sd-oceanblue_15:#EAF5FE;--color-oceanblue_25:#D5EBFE;--sd-oceanblue_25:#D5EBFE;--color-oceanblue_50:#9CD1FC;--sd-oceanblue_50:#9CD1FC;--color-oceanblue_60:#5CB0F3;--sd-oceanblue_60:#5CB0F3;--color-oceanblue_65:#1F8AE1;--sd-oceanblue_65:#1F8AE1;--color-oceanblue_70:#006AC1;--sd-oceanblue_70:#006AC1;--color-oceanblue_75:#025497;--sd-oceanblue_75:#025497;--color-oceanblue_80:#004177;--sd-oceanblue_80:#004177;--color-oceanblue_85:#07284A;--sd-oceanblue_85:#07284A;--color-oceanblue_90:#051D36;--sd-oceanblue_90:#051D36;--color-oceanblue_95:#03172D;--sd-oceanblue_95:#03172D;--color-oceanblue_99:#011428;--sd-oceanblue_99:#011428;--color-brilliantblue_10:#EFF6FF;--sd-brilliantblue_10:#EFF6FF;--color-brilliantblue_20:#E6F1FF;--sd-brilliantblue_20:#E6F1FF;--color-brilliantblue_25:#D9EAFF;--sd-brilliantblue_25:#D9EAFF;--color-brilliantblue_40:#BBDAFF;--sd-brilliantblue_40:#BBDAFF;--color-brilliantblue_50:#93C4FF;--sd-brilliantblue_50:#93C4FF;--color-brilliantblue_60:#64ABFF;--sd-brilliantblue_60:#64ABFF;--color-brilliantblue_70:#2D8DFF;--sd-brilliantblue_70:#2D8DFF;--color-brilliantblue_75:#0075FF;--sd-brilliantblue_75:#0075FF;--color-brilliantblue_80:#005CC9;--sd-brilliantblue_80:#005CC9;--color-brilliantblue_85:#004290;--sd-brilliantblue_85:#004290;--color-brilliantblue_90:#002B5E;--sd-brilliantblue_90:#002B5E;--color-brilliantblue_95:#001B39;--sd-brilliantblue_95:#001B39;--color-brilliantblue_99:#001226;--sd-brilliantblue_99:#001226;--color-brilliantblue_05:#F5FAFF;--sd-brilliantblue_05:#F5FAFF;--sd-system-typography-control-xs-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-xs-default-font-size:12px;--sd-system-typography-control-xs-default-font-weight:400;--sd-system-typography-control-xs-default-text-decoration:none;--sd-system-typography-control-xs-default-line-height:20px;--sd-system-typography-control-xs-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-xs-medium-font-size:12px;--sd-system-typography-control-xs-medium-font-weight:500;--sd-system-typography-control-xs-medium-text-decoration:none;--sd-system-typography-control-xs-medium-line-height:20px;--sd-system-typography-control-xs-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-xs-bold-font-weight:700;--sd-system-typography-control-xs-bold-font-size:12px;--sd-system-typography-control-xs-bold-line-height:20px;--sd-system-typography-control-xs-bold-text-decoration:none;--sd-system-typography-control-sm-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-sm-default-font-size:12px;--sd-system-typography-control-sm-default-font-weight:500;--sd-system-typography-control-sm-default-text-decoration:none;--sd-system-typography-control-sm-default-line-height:20px;--sd-system-typography-control-sm-underline-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-sm-underline-font-size:12px;--sd-system-typography-control-sm-underline-font-weight:500;--sd-system-typography-control-sm-underline-text-decoration:underline;--sd-system-typography-control-sm-underline-line-height:22px;--sd-system-typography-control-md-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-md-font-size:16px;--sd-system-typography-control-md-font-weight:500;--sd-system-typography-control-md-text-decoration:none;--sd-system-typography-control-md-line-height:26px;--sd-system-typography-control-lg-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-control-lg-font-size:18px;--sd-system-typography-control-lg-font-weight:500;--sd-system-typography-control-lg-text-decoration:none;--sd-system-typography-control-lg-line-height:30px;--sd-system-typography-feedback-xs-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-xs-font-size:11px;--sd-system-typography-feedback-xs-font-weight:500;--sd-system-typography-feedback-xs-line-height:18px;--sd-system-typography-feedback-xs-text-decoration:none;--sd-system-typography-feedback-sm-regular-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-sm-regular-font-size:12px;--sd-system-typography-feedback-sm-regular-font-weight:400;--sd-system-typography-feedback-sm-regular-line-height:20px;--sd-system-typography-feedback-sm-regular-text-decoration:none;--sd-system-typography-feedback-sm-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-sm-medium-font-size:12px;--sd-system-typography-feedback-sm-medium-font-weight:500;--sd-system-typography-feedback-sm-medium-line-height:20px;--sd-system-typography-feedback-sm-medium-text-decoration:none;--sd-system-typography-feedback-sm-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-sm-bold-font-size:12px;--sd-system-typography-feedback-sm-bold-font-weight:700;--sd-system-typography-feedback-sm-bold-text-decoration:none;--sd-system-typography-feedback-sm-bold-line-height:20px;--sd-system-typography-feedback-sm-underline-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-sm-underline-font-size:12px;--sd-system-typography-feedback-sm-underline-font-weight:500;--sd-system-typography-feedback-sm-underline-line-height:20px;--sd-system-typography-feedback-sm-underline-text-decoration:underline;--sd-system-typography-feedback-md-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-md-bold-font-size:14px;--sd-system-typography-feedback-md-bold-font-weight:700;--sd-system-typography-feedback-md-bold-line-height:24px;--sd-system-typography-feedback-md-bold-text-decoration:none;--sd-system-typography-feedback-md-underline-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-feedback-md-underline-font-size:14px;--sd-system-typography-feedback-md-underline-font-weight:700;--sd-system-typography-feedback-md-underline-line-height:24px;--sd-system-typography-feedback-md-underline-text-decoration:underline;--sd-system-typography-heading-sm-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-heading-sm-font-weight:700;--sd-system-typography-heading-sm-font-size:14px;--sd-system-typography-heading-sm-line-height:24px;--sd-system-typography-heading-sm-text-decoration:none;--sd-system-typography-heading-md-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-heading-md-font-weight:700;--sd-system-typography-heading-md-font-size:16px;--sd-system-typography-heading-md-text-decoration:none;--sd-system-typography-heading-md-line-height:26px;--sd-system-typography-heading-lg-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-heading-lg-font-weight:700;--sd-system-typography-heading-lg-font-size:18px;--sd-system-typography-heading-lg-line-height:30px;--sd-system-typography-heading-lg-text-decoration:none;--sd-system-typography-field-sm-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-sm-default-font-weight:400;--sd-system-typography-field-sm-default-font-size:12px;--sd-system-typography-field-sm-default-line-height:20px;--sd-system-typography-field-sm-default-text-decoration:none;--sd-system-typography-field-sm-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-sm-medium-font-weight:500;--sd-system-typography-field-sm-medium-font-size:12px;--sd-system-typography-field-sm-medium-text-decoration:none;--sd-system-typography-field-sm-medium-line-height:20px;--sd-system-typography-field-sm-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-sm-bold-font-weight:700;--sd-system-typography-field-sm-bold-font-size:12px;--sd-system-typography-field-sm-bold-text-decoration:none;--sd-system-typography-field-sm-bold-line-height:20px;--sd-system-typography-field-md-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-md-default-font-weight:400;--sd-system-typography-field-md-default-font-size:14px;--sd-system-typography-field-md-default-text-decoration:none;--sd-system-typography-field-md-default-line-height:24px;--sd-system-typography-field-md-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-md-medium-font-weight:500;--sd-system-typography-field-md-medium-font-size:14px;--sd-system-typography-field-md-medium-text-decoration:none;--sd-system-typography-field-md-medium-line-height:24px;--sd-system-typography-field-md-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-md-bold-font-weight:700;--sd-system-typography-field-md-bold-font-size:14px;--sd-system-typography-field-md-bold-text-decoration:none;--sd-system-typography-field-md-bold-line-height:24px;--sd-system-typography-field-lg-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-lg-default-font-weight:400;--sd-system-typography-field-lg-default-font-size:16px;--sd-system-typography-field-lg-default-line-height:26px;--sd-system-typography-field-lg-default-text-decoration:none;--sd-system-typography-field-lg-medium-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-lg-medium-font-weight:500;--sd-system-typography-field-lg-medium-font-size:16px;--sd-system-typography-field-lg-medium-line-height:26px;--sd-system-typography-field-lg-medium-text-decoration:none;--sd-system-typography-field-lg-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-field-lg-bold-font-weight:700;--sd-system-typography-field-lg-bold-font-size:16px;--sd-system-typography-field-lg-bold-line-height:26px;--sd-system-typography-field-lg-bold-text-decoration:none;--sd-system-typography-navigation-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-navigation-default-font-weight:400;--sd-system-typography-navigation-default-font-size:12px;--sd-system-typography-navigation-default-line-height:20px;--sd-system-typography-navigation-default-text-decoration:none;--sd-system-typography-navigation-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-navigation-bold-font-weight:700;--sd-system-typography-navigation-bold-font-size:12px;--sd-system-typography-navigation-bold-line-height:20px;--sd-system-typography-navigation-bold-text-decoration:none;--sd-system-typography-table-header-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-table-header-font-weight:500;--sd-system-typography-table-header-font-size:12px;--sd-system-typography-table-header-line-height:20px;--sd-system-typography-table-header-text-decoration:none;--sd-system-typography-table-body-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-table-body-font-weight:400;--sd-system-typography-table-body-font-size:12px;--sd-system-typography-table-body-line-height:20px;--sd-system-typography-table-body-text-decoration:none;--sd-system-typography-table-accent-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-system-typography-table-accent-font-weight:700;--sd-system-typography-table-accent-font-size:12px;--sd-system-typography-table-accent-line-height:20px;--sd-system-typography-table-accent-text-decoration:none;--sd-system-size-control-xs-height:24px;--sd-system-size-control-sm-height:28px;--sd-system-size-control-md-height:36px;--sd-system-size-control-lg-height:62px;--sd-system-size-icon-xxxs:8px;--sd-system-size-icon-xxs:10px;--sd-system-size-icon-xs:12px;--sd-system-size-icon-sm:16px;--sd-system-size-icon-md:20px;--sd-system-size-icon-lg:24px;--sd-system-size-icon-xl:32px;--sd-system-size-feedback-arrow-width:16px;--sd-system-size-feedback-arrow-height:12px;--sd-system-size-feedback-xs-height:20px;--sd-system-size-feedback-sm-height:24px;--sd-system-size-feedback-md-height:28px;--sd-system-size-field-control:16px;--sd-system-size-field-icon:12px;--sd-system-size-field-sm-height:28px;--sd-system-size-field-md-height:36px;--sd-system-size-navigation-lg-height:44px;--sd-system-size-navigation-md-height:36px;--sd-system-size-table-height-xs:32px;--sd-system-size-table-height-sm:36px;--sd-system-size-table-height-md:44px;--sd-system-space-control-xs-padding-x:8px;--sd-system-space-control-xs-gap:4px;--sd-system-space-control-sm-padding-x:12px;--sd-system-space-control-sm-gap:6px;--sd-system-space-control-md-padding-x:20px;--sd-system-space-control-md-gap:8px;--sd-system-space-control-lg-padding-x:28px;--sd-system-space-control-lg-gap:12px;--sd-system-space-feedback-xs-padding-x:6px;--sd-system-space-feedback-xs-gap:4px;--sd-system-space-feedback-sm-padding-x:8px;--sd-system-space-feedback-sm-gap:6px;--sd-system-space-feedback-md-padding-x:12px;--sd-system-space-feedback-md-gap:8px;--sd-system-space-feedback-lg-padding-x:16px;--sd-system-space-feedback-lg-gap:12px;--sd-system-space-stack-gap-tight:2px;--sd-system-space-stack-gap-normal:4px;--sd-system-space-stack-gap-relaxed:8px;--sd-system-space-field-sm-padding-x:12px;--sd-system-space-field-sm-padding-y:4px;--sd-system-space-field-sm-container-gap:8px;--sd-system-space-field-sm-gap:12px;--sd-system-space-field-md-padding-x:16px;--sd-system-space-field-md-container-gap:12px;--sd-system-space-field-md-gap:16px;--sd-system-space-navigation-lg-padding-x:32px;--sd-system-space-navigation-md-padding-x:24px;--sd-system-space-table-padding-sm:8px;--sd-system-space-table-padding-md:16px;--sd-system-radius-control-sm:4px;--sd-system-radius-control-md:6px;--sd-system-radius-feedback-xs-square:6px;--sd-system-radius-feedback-sm-square:8px;--sd-system-radius-feedback-pill:9999px;--sd-system-radius-field-sm:4px;--sd-system-radius-field-md:6px;--sd-system-radius-navigation:6px;--sd-system-border-width-control-default:1px;--sd-system-border-width-field-default:1px;--sd-system-border-width-navigation-default:1px;--sd-system-color-bg-screen:#EEEEEE;--sd-system-color-bg-frame:#FFFFFF;--sd-system-color-bg-brand:#025497;--sd-system-color-bg-subtle:#1F8AE1;--sd-system-color-bg-accent-default:#0075FF;--sd-system-color-bg-accent-light:#F5FAFF;--sd-system-color-bg-accent-light-default:#2D8DFF;--sd-system-color-bg-accent-light-light:#F5FAFF;--sd-system-color-bg-accent-bright-default:#D9EAFF;--sd-system-color-bg-accent-bright-light:#F5FAFF;--sd-system-color-bg-deep:#07284A;--sd-system-color-bg-danger-default:#E30000;--sd-system-color-bg-danger-light:#FCEFEF;--sd-system-color-bg-danger-light-default:#FB4444;--sd-system-color-bg-danger-light-light:#FCEFEF;--sd-system-color-bg-warning:#FF6B00;--sd-system-color-bg-caution:#FFC700;--sd-system-color-bg-progress:#0075FF;--sd-system-color-bg-success-default:#00973C;--sd-system-color-bg-success-light:#12B553;--sd-system-color-bg-success-light:#12B553;--sd-system-color-bg-disabled:#E1E1E1;--sd-system-color-bg-neutral-light:#F6F6F6;--sd-system-color-bg-table-header:#F5FAFF;--sd-system-color-content-primary:#222222;--sd-system-color-content-secondary:#555555;--sd-system-color-content-tertiary:#888888;--sd-system-color-content-quaternary:#AAAAAA;--sd-system-color-content-brand:#005CC9;--sd-system-color-content-subtle:#066D9B;--sd-system-color-content-accent:#0075FF;--sd-system-color-content-danger-default:#E30000;--sd-system-color-content-danger-light:#FB4444;--sd-system-color-content-danger-light:#FB4444;--sd-system-color-content-warning:#FF6B00;--sd-system-color-content-inverse:#FFFFFF;--sd-system-color-text-disabled:#888888;--sd-system-color-link-accent:#006AC1;--sd-system-color-icon-brand:#025497;--sd-system-color-icon-accent:#0075FF;--sd-system-color-icon-danger:#E30000;--sd-system-color-icon-warning:#FF6B00;--sd-system-color-icon-success:#00973C;--sd-system-color-icon-inverse:#FFFFFF;--sd-system-color-icon-disabled:#BBBBBB;--sd-system-color-border-default:#E1E1E1;--sd-system-color-border-accent:#0075FF;--sd-system-color-border-danger:#FB4444;--sd-system-color-border-success:#12B553;--sd-system-color-border-disabled:#CCCCCC;--sd-system-color-red-strong:#FB4444;--sd-system-color-red-subtle:#FCEFEF;--sd-system-color-orange-strong:#FF6B00;--sd-system-color-orange-subtle:#FEF1EA;--sd-system-color-yellow-strong:#916C0D;--sd-system-color-yellow-moderate:#FFC700;--sd-system-color-yellow-subtle:#FFF7DD;--sd-system-color-green-strong:#00973C;--sd-system-color-green-subtle:#E8F9EF;--sd-system-color-blue-strong:#0075FF;--sd-system-color-blue-subtle:#E6F1FF;--sd-system-color-darkblue-strong:#006AC1;--sd-system-color-darkblue-subtle:#EAF5FE;--sd-system-color-indigo-strong:#004290;--sd-system-color-indigo-subtle:#EFF6FF;--sd-system-color-grey-strong:#737373;--sd-system-color-grey-subtle:#EEEEEE;--sd-system-color-field-bg-default:#FFFFFF;--sd-system-color-field-bg-hover:#0075FF;--sd-system-color-field-border-default:#AAAAAA;--sd-system-color-field-border-focus:#0075FF;--sd-system-color-field-border-hover:#0075FF;--sd-system-color-field-border-danger:#FB4444;--sd-system-color-field-border-success:#12B553;--sd-system-color-field-text-default:#222222;--sd-system-color-field-text-placeholder:#AAAAAA;--sd-system-color-field-icon-default:#888888;--sd-system-color-divider-default:#E1E1E1;--sd-system-color-control-bg-inverse-hover:#0075FF;--sd-button-button-xs-height:24px;--sd-button-button-xs-padding-x:8px;--sd-button-button-xs-gap:4px;--sd-button-button-xs-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-button-button-xs-typography-font-size:12px;--sd-button-button-xs-typography-font-weight:500;--sd-button-button-xs-typography-text-decoration:none;--sd-button-button-xs-typography-line-height:20px;--sd-button-button-xs-icon:12px;--sd-button-button-sm-height:28px;--sd-button-button-sm-padding-x:12px;--sd-button-button-sm-gap:6px;--sd-button-button-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-button-button-sm-typography-font-size:12px;--sd-button-button-sm-typography-font-weight:500;--sd-button-button-sm-typography-text-decoration:none;--sd-button-button-sm-typography-line-height:20px;--sd-button-button-sm-icon:16px;--sd-button-button-md-height:36px;--sd-button-button-md-padding-x:20px;--sd-button-button-md-gap:8px;--sd-button-button-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-button-button-md-typography-font-size:16px;--sd-button-button-md-typography-font-weight:500;--sd-button-button-md-typography-text-decoration:none;--sd-button-button-md-typography-line-height:26px;--sd-button-button-md-icon:20px;--sd-button-button-lg-height:62px;--sd-button-button-lg-padding-x:28px;--sd-button-button-lg-gap:12px;--sd-button-button-lg-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-button-button-lg-typography-font-size:18px;--sd-button-button-lg-typography-font-weight:500;--sd-button-button-lg-typography-text-decoration:none;--sd-button-button-lg-typography-line-height:30px;--sd-button-button-lg-icon:24px;--sd-button-button-radius-sm:4px;--sd-button-button-radius-md:6px;--sd-button-button-border-width-default:1px;--sd-button-button-border-disabled:#CCCCCC;--sd-button-button-icon-only-xs-width:24px;--sd-button-button-icon-only-sm-width:28px;--sd-button-button-icon-only-md-width:36px;--sd-button-button-icon-only-lg-width:62px;--sd-button-button-bg-disabled:#E1E1E1;--sd-button-button-text-disabled:#888888;--sd-button-button-icon-disabled:#BBBBBB;--sd-button-button-brand-strong-bg-default:#025497;--sd-button-button-brand-strong-bg-hover:#004177;--sd-button-button-brand-strong-content:#FFFFFF;--sd-button-button-brand-strong-dropdown-divider:#006AC1;--sd-button-button-brand-subtle-bg-default:#1F8AE1;--sd-button-button-brand-subtle-bg-hover:#006AC1;--sd-button-button-brand-subtle-content:#FFFFFF;--sd-button-button-brand-subtle-dropdown-divider:#5CB0F3;--sd-button-button-brand-outline-bg-default:#FFFFFF;--sd-button-button-brand-outline-bg-hover:#EAF5FE;--sd-button-button-brand-outline-border:#025497;--sd-button-button-brand-outline-content:#025497;--sd-button-button-neutral-outline-bg-default:#FFFFFF;--sd-button-button-neutral-outline-bg-hover:#EEEEEE;--sd-button-button-neutral-outline-border:#888888;--sd-button-button-neutral-outline-content:#222222;--sd-button-button-danger-strong-bg-default:#E30000;--sd-button-button-danger-strong-bg-hover:#AD0000;--sd-button-button-danger-strong-content:#FFFFFF;--sd-button-button-danger-strong-dropdown-divider:#FF7C7C;--sd-button-button-danger-outline-bg-default:#FFFFFF;--sd-button-button-danger-outline-bg-hover:#FCEFEF;--sd-button-button-danger-outline-border:#E30000;--sd-button-button-danger-outline-content:#E30000;--sd-ghost-button-ghost-button-xxs-size:16px;--sd-ghost-button-ghost-button-xxs-icon:12px;--sd-ghost-button-ghost-button-xs-size:24px;--sd-ghost-button-ghost-button-xs-icon:16px;--sd-ghost-button-ghost-button-sm-size:28px;--sd-ghost-button-ghost-button-sm-icon:20px;--sd-ghost-button-ghost-button-md-size:36px;--sd-ghost-button-ghost-button-md-icon:24px;--sd-ghost-button-ghost-button-lg-size:62px;--sd-ghost-button-ghost-button-lg-icon:32px;--sd-ghost-button-ghost-button-radius-sm:4px;--sd-ghost-button-ghost-button-radius-md:6px;--sd-ghost-button-ghost-button-hover-opacity:5%;--sd-ghost-button-ghost-button-icon-disabled:#BBBBBB;--sd-ghost-button-ghost-button-default-content:#888888;--sd-ghost-button-ghost-button-default-hover-bg:#222222;--sd-ghost-button-ghost-button-danger-content:#E30000;--sd-ghost-button-ghost-button-danger-hover-bg:#E30000;--sd-ghost-button-ghost-button-action-content:#025497;--sd-ghost-button-ghost-button-action-hover-bg:#0075FF;--sd-ghost-button-ghost-button-inverse-content:#FFFFFF;--sd-ghost-button-ghost-button-inverse-disabled:#E1E1E1;--sd-ghost-button-ghost-button-inverse-hover-bg:#FFFFFF;--sd-text-link-text-link-gap:4px;--sd-text-link-text-link-size-icon:16px;--sd-text-link-text-link-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-text-link-text-link-typography-default-font-size:12px;--sd-text-link-text-link-typography-default-font-weight:500;--sd-text-link-text-link-typography-default-text-decoration:none;--sd-text-link-text-link-typography-default-line-height:20px;--sd-text-link-text-link-typography-underline-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-text-link-text-link-typography-underline-font-size:12px;--sd-text-link-text-link-typography-underline-font-weight:500;--sd-text-link-text-link-typography-underline-text-decoration:underline;--sd-text-link-text-link-typography-underline-line-height:22px;--sd-text-link-text-link-content-default:#222222;--sd-text-link-text-link-content-disabled:#888888;--sd-text-link-text-link-icon-default:#006AC1;--sd-text-link-text-link-icon-disabled:#BBBBBB;--sd-switch-switch-width:32px;--sd-switch-switch-height:20px;--sd-switch-switch-padding-x-y:2px;--sd-switch-switch-radius:9999px;--sd-switch-switch-knob-size:16px;--sd-switch-switch-knob-bg:#FFFFFF;--sd-switch-switch-bg-on:#0075FF;--sd-switch-switch-bg-off:#CCCCCC;--sd-switch-switch-bg-disabled-on:#BBDAFF;--sd-switch-switch-bg-disabled-off:#E1E1E1;--sd-switch-switch-label-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-switch-switch-label-typography-font-weight:500;--sd-switch-switch-label-typography-font-size:12px;--sd-switch-switch-label-typography-text-decoration:none;--sd-switch-switch-label-typography-line-height:20px;--sd-switch-switch-gap:6px;--sd-toggle-toggle-height:28px;--sd-toggle-toggle-padding-x:12px;--sd-toggle-toggle-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-toggle-toggle-typography-font-size:12px;--sd-toggle-toggle-typography-font-weight:500;--sd-toggle-toggle-typography-text-decoration:none;--sd-toggle-toggle-typography-line-height:20px;--sd-toggle-toggle-radius:9999px;--sd-toggle-toggle-border-width:1px;--sd-toggle-toggle-border-default:#CCCCCC;--sd-toggle-toggle-border-select:#0075FF;--sd-toggle-toggle-border-disabled:#CCCCCC;--sd-toggle-toggle-bg-default:#FFFFFF;--sd-toggle-toggle-bg-hover:#0075FF;--sd-toggle-toggle-bg-select:#FFFFFF;--sd-toggle-toggle-bg-disabled:#E1E1E1;--sd-toggle-toggle-content-default:#555555;--sd-toggle-toggle-content-hover:#FFFFFF;--sd-toggle-toggle-content-select:#0075FF;--sd-toggle-toggle-content-disabled:#888888;--sd-checkbox-checkbox-size:16px;--sd-checkbox-checkbox-radius:2px;--sd-checkbox-checkbox-border-width:1px;--sd-checkbox-checkbox-gap:8px;--sd-checkbox-checkbox-icon:12px;--sd-checkbox-checkbox-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-checkbox-checkbox-typography-font-weight:400;--sd-checkbox-checkbox-typography-font-size:12px;--sd-checkbox-checkbox-typography-line-height:20px;--sd-checkbox-checkbox-typography-text-decoration:none;--sd-checkbox-checkbox-unchecked-bg-default:#FFFFFF;--sd-checkbox-checkbox-unchecked-bg-hover:#D9EAFF;--sd-checkbox-checkbox-unchecked-border-default:#AAAAAA;--sd-checkbox-checkbox-unchecked-border-hover:#0075FF;--sd-checkbox-checkbox-checked-bg-default:#0075FF;--sd-checkbox-checkbox-checked-icon-default:#FFFFFF;--sd-checkbox-checkbox-checked-icon-disabled:#BBBBBB;--sd-checkbox-checkbox-checked-icon-inverse:#FFFFFF;--sd-checkbox-checkbox-checked-border-inverse:#FFFFFF;--sd-checkbox-checkbox-label-default:#222222;--sd-checkbox-checkbox-label-inverse:#FFFFFF;--sd-checkbox-checkbox-bg-disabled:#E1E1E1;--sd-checkbox-checkbox-border-disabled:#CCCCCC;--sd-radio-radio-size:16px;--sd-radio-radio-radius:9999px;--sd-radio-radio-border-width:1px;--sd-radio-radio-gap:8px;--sd-radio-radio-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-radio-radio-typography-font-weight:400;--sd-radio-radio-typography-font-size:12px;--sd-radio-radio-typography-line-height:20px;--sd-radio-radio-typography-text-decoration:none;--sd-radio-radio-bg-default:#FFFFFF;--sd-radio-radio-bg-disabled:#E1E1E1;--sd-radio-radio-bg-hover:#D9EAFF;--sd-radio-radio-border-default:#AAAAAA;--sd-radio-radio-border-hover:#0075FF;--sd-radio-radio-border-active:#0075FF;--sd-radio-radio-border-disabled:#CCCCCC;--sd-radio-radio-dot-default:#0075FF;--sd-radio-radio-dot-disabled:#CCCCCC;--sd-radio-radio-dot-size:10px;--sd-radio-radio-label-default:#222222;--sd-radio-button-radio-button-xs-height:24px;--sd-radio-button-radio-button-xs-padding-x:8px;--sd-radio-button-radio-button-xs-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-radio-button-radio-button-xs-typography-font-size:12px;--sd-radio-button-radio-button-xs-typography-font-weight:500;--sd-radio-button-radio-button-xs-typography-text-decoration:none;--sd-radio-button-radio-button-xs-typography-line-height:20px;--sd-radio-button-radio-button-sm-height:28px;--sd-radio-button-radio-button-sm-padding-x:12px;--sd-radio-button-radio-button-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-radio-button-radio-button-sm-typography-font-size:12px;--sd-radio-button-radio-button-sm-typography-font-weight:500;--sd-radio-button-radio-button-sm-typography-text-decoration:none;--sd-radio-button-radio-button-sm-typography-line-height:20px;--sd-radio-button-radio-button-radius:4px;--sd-radio-button-radio-button-border-width:1px;--sd-radio-button-radio-button-border-default:#CCCCCC;--sd-radio-button-radio-button-border-select:#0075FF;--sd-radio-button-radio-button-border-disabled:#CCCCCC;--sd-radio-button-radio-button-bg-default:#FFFFFF;--sd-radio-button-radio-button-bg-hover:#0075FF;--sd-radio-button-radio-button-bg-select:#FFFFFF;--sd-radio-button-radio-button-bg-disabled:#E1E1E1;--sd-radio-button-radio-button-content-default:#555555;--sd-radio-button-radio-button-content-hover:#FFFFFF;--sd-radio-button-radio-button-content-select:#0075FF;--sd-radio-button-radio-button-content-disabled:#888888;--sd-radio-button-radio-button-group-gap:-1px;--sd-list-item-list-item-padding-y:4px;--sd-list-item-list-item-padding-right:12px;--sd-list-item-list-item-gap:8px;--sd-list-item-list-item-padding-left-depth1:12px;--sd-list-item-list-item-padding-left-depth2:20px;--sd-list-item-list-item-padding-left-depth3:28px;--sd-list-item-list-item-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-typography-default-font-weight:400;--sd-list-item-list-item-typography-default-font-size:12px;--sd-list-item-list-item-typography-default-line-height:20px;--sd-list-item-list-item-typography-default-text-decoration:none;--sd-list-item-list-item-typography-selected-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-typography-selected-font-weight:700;--sd-list-item-list-item-typography-selected-font-size:12px;--sd-list-item-list-item-typography-selected-text-decoration:none;--sd-list-item-list-item-typography-selected-line-height:20px;--sd-list-item-list-item-bg-default:#FFFFFF;--sd-list-item-list-item-bg-hover:#0075FF;--sd-list-item-list-item-content-default:#222222;--sd-list-item-list-item-content-hover:#FFFFFF;--sd-list-item-list-item-content-disabled:#888888;--sd-list-item-list-item-content-selected:#0075FF;--sd-list-item-list-item-indeterminate-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-indeterminate-typography-font-weight:700;--sd-list-item-list-item-indeterminate-typography-font-size:12px;--sd-list-item-list-item-indeterminate-typography-text-decoration:none;--sd-list-item-list-item-indeterminate-typography-line-height:20px;--sd-list-item-list-item-depth1-bg-default:#EFF6FF;--sd-list-item-list-item-depth1-bg-disabled:#EEEEEE;--sd-list-item-list-item-depth1-border-color:#E1E1E1;--sd-list-item-list-item-depth1-border-width:1px;--sd-list-item-list-item-depth1-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-depth1-title-typography-font-weight:700;--sd-list-item-list-item-depth1-title-typography-font-size:12px;--sd-list-item-list-item-depth1-title-typography-text-decoration:none;--sd-list-item-list-item-depth1-title-typography-line-height:20px;--sd-list-item-list-item-depth2-middle-bg:#F6F6F6;--sd-list-item-list-item-depth2-middle-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-depth2-middle-title-typography-font-weight:500;--sd-list-item-list-item-depth2-middle-title-typography-font-size:12px;--sd-list-item-list-item-depth2-middle-title-typography-text-decoration:none;--sd-list-item-list-item-depth2-middle-title-typography-line-height:20px;--sd-list-item-list-item-count-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-list-item-list-item-count-typography-font-weight:500;--sd-list-item-list-item-count-typography-font-size:12px;--sd-list-item-list-item-count-typography-text-decoration:none;--sd-list-item-list-item-count-typography-line-height:20px;--sd-list-item-list-item-count-color:#888888;--sd-list-box-list-box-radius:4px;--sd-list-box-list-box-bg:#FFFFFF;--sd-list-box-list-box-chip-padding-x-y:8px;--sd-list-box-list-box-chip-gap:8px;--sd-select-select-height:28px;--sd-select-select-radius:4px;--sd-select-select-border-width:1px;--sd-select-select-padding-x:12px;--sd-select-select-icon-default:#888888;--sd-select-select-icon-disabled:#BBBBBB;--sd-select-select-gap:8px;--sd-select-select-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-select-select-typography-font-weight:400;--sd-select-select-typography-font-size:12px;--sd-select-select-typography-line-height:20px;--sd-select-select-typography-text-decoration:none;--sd-select-select-border-default:#AAAAAA;--sd-select-select-border-hover:#0075FF;--sd-select-select-border-danger:#FB4444;--sd-select-select-border-disabled:#CCCCCC;--sd-select-select-bg-default:#FFFFFF;--sd-select-select-bg-disabled:#E1E1E1;--sd-select-select-text-default:#222222;--sd-select-select-text-disabled:#888888;--sd-select-select-size-icon:16px;--sd-field-field-label-sm-height:28px;--sd-field-field-label-sm-gap:6px;--sd-field-field-label-sm-icon:12px;--sd-field-field-label-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-field-field-label-sm-typography-font-weight:700;--sd-field-field-label-sm-typography-font-size:12px;--sd-field-field-label-sm-typography-text-decoration:none;--sd-field-field-label-sm-typography-line-height:20px;--sd-field-field-label-md-height:36px;--sd-field-field-label-md-gap:8px;--sd-field-field-label-md-icon:16px;--sd-field-field-label-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-field-field-label-md-typography-font-weight:700;--sd-field-field-label-md-typography-font-size:14px;--sd-field-field-label-md-typography-text-decoration:none;--sd-field-field-label-md-typography-line-height:24px;--sd-field-field-addon-label-height:28px;--sd-field-field-addon-label-gap:6px;--sd-field-field-addon-label-padding-x:12px;--sd-field-field-addon-label-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-field-field-addon-label-typography-font-weight:500;--sd-field-field-addon-label-typography-font-size:12px;--sd-field-field-addon-label-typography-text-decoration:none;--sd-field-field-addon-label-typography-line-height:20px;--sd-field-field-addon-label-bg:#F6F6F6;--sd-field-field-addon-label-border-default:#AAAAAA;--sd-field-field-addon-label-border-disabled:#CCCCCC;--sd-field-field-addon-label-border-width:1px;--sd-textinput-textinput-sm-height:28px;--sd-textinput-textinput-sm-padding-x:12px;--sd-textinput-textinput-sm-padding-y:4px;--sd-textinput-textinput-sm-gap:8px;--sd-textinput-textinput-sm-radius:4px;--sd-textinput-textinput-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-textinput-textinput-sm-typography-font-weight:400;--sd-textinput-textinput-sm-typography-font-size:12px;--sd-textinput-textinput-sm-typography-line-height:20px;--sd-textinput-textinput-sm-typography-text-decoration:none;--sd-textinput-textinput-md-height:36px;--sd-textinput-textinput-md-padding-x:16px;--sd-textinput-textinput-md-gap:12px;--sd-textinput-textinput-md-radius:6px;--sd-textinput-textinput-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-textinput-textinput-md-typography-font-weight:400;--sd-textinput-textinput-md-typography-font-size:14px;--sd-textinput-textinput-md-typography-text-decoration:none;--sd-textinput-textinput-md-typography-line-height:24px;--sd-textinput-textinput-border-width:1px;--sd-textinput-textinput-border-default:#AAAAAA;--sd-textinput-textinput-border-focus:#0075FF;--sd-textinput-textinput-border-danger:#FB4444;--sd-textinput-textinput-border-success:#12B553;--sd-textinput-textinput-border-disabled:#CCCCCC;--sd-textinput-textinput-bg-default:#FFFFFF;--sd-textinput-textinput-bg-disabled:#E1E1E1;--sd-textinput-textinput-bg-barcode:#FAFAA1;--sd-textinput-textinput-text-default:#222222;--sd-textinput-textinput-text-placeholder:#AAAAAA;--sd-textinput-textinput-text-disabled:#888888;--sd-textinput-textinput-text-hint:#555555;--sd-textinput-textinput-text-error-message:#E30000;--sd-textinput-textinput-size-icon:16px;--sd-textinput-textinput-icon-default:#888888;--sd-textinput-textinput-unit-color:#888888;--sd-textinput-textinput-hint-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-textinput-textinput-hint-typography-font-weight:400;--sd-textinput-textinput-hint-typography-font-size:12px;--sd-textinput-textinput-hint-typography-line-height:20px;--sd-textinput-textinput-hint-typography-text-decoration:none;--sd-textinput-textinput-error-message-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-textinput-textinput-error-message-typography-font-weight:400;--sd-textinput-textinput-error-message-typography-font-size:12px;--sd-textinput-textinput-error-message-typography-line-height:20px;--sd-textinput-textinput-error-message-typography-text-decoration:none;--sd-textinput-textinput-contents-gap:4px;--sd-textinput-textinput-resizer-size:12px;--sd-textinput-textinput-resizer-color:#AAAAAA;--sd-number-input-number-input-sm-height:28px;--sd-number-input-number-input-sm-padding-x:6px;--sd-number-input-number-input-sm-radius:4px;--sd-number-input-number-input-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-number-input-number-input-sm-typography-font-weight:400;--sd-number-input-number-input-sm-typography-font-size:12px;--sd-number-input-number-input-sm-typography-line-height:20px;--sd-number-input-number-input-sm-typography-text-decoration:none;--sd-number-input-number-input-md-height:36px;--sd-number-input-number-input-md-padding-x:8px;--sd-number-input-number-input-md-radius:6px;--sd-number-input-number-input-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-number-input-number-input-md-typography-font-weight:400;--sd-number-input-number-input-md-typography-font-size:14px;--sd-number-input-number-input-md-typography-text-decoration:none;--sd-number-input-number-input-md-typography-line-height:24px;--sd-number-input-number-input-border-width:1px;--sd-number-input-number-input-contents-gap:4px;--sd-number-input-number-input-border-default:#AAAAAA;--sd-number-input-number-input-border-focus:#0075FF;--sd-number-input-number-input-border-danger:#FB4444;--sd-number-input-number-input-border-success:#12B553;--sd-number-input-number-input-border-disabled:#CCCCCC;--sd-number-input-number-input-bg-default:#FFFFFF;--sd-number-input-number-input-bg-disabled:#E1E1E1;--sd-number-input-number-input-text-default:#222222;--sd-number-input-number-input-text-placeholder:#AAAAAA;--sd-number-input-number-input-text-disabled:#888888;--sd-number-input-number-input-hint-color:#555555;--sd-number-input-number-input-hint-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-number-input-number-input-hint-typography-font-weight:400;--sd-number-input-number-input-hint-typography-font-size:12px;--sd-number-input-number-input-hint-typography-line-height:20px;--sd-number-input-number-input-hint-typography-text-decoration:none;--sd-number-input-number-input-error-message-color:#E30000;--sd-number-input-number-input-error-message-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-number-input-number-input-error-message-typography-font-weight:400;--sd-number-input-number-input-error-message-typography-font-size:12px;--sd-number-input-number-input-error-message-typography-line-height:20px;--sd-number-input-number-input-error-message-typography-text-decoration:none;--sd-number-input-number-input-stepper-sm-size:20px;--sd-number-input-number-input-stepper-md-size:24px;--sd-number-input-number-input-stepper-radius:4px;--sd-number-input-number-input-stepper-bg-default:#EFF6FF;--sd-number-input-number-input-stepper-bg-disabled:#EEEEEE;--sd-number-input-number-input-stepper-icon-default:#0075FF;--sd-number-input-number-input-stepper-icon-disabled:#BBBBBB;--sd-filepicker-filepicker-height:28px;--sd-filepicker-filepicker-padding-x:12px;--sd-filepicker-filepicker-gap:8px;--sd-filepicker-filepicker-radius:4px;--sd-filepicker-filepicker-border-width:1px;--sd-filepicker-filepicker-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-filepicker-filepicker-typography-font-weight:400;--sd-filepicker-filepicker-typography-font-size:12px;--sd-filepicker-filepicker-typography-line-height:20px;--sd-filepicker-filepicker-typography-text-decoration:none;--sd-filepicker-filepicker-size-icon:16px;--sd-filepicker-filepicker-contents-gap:4px;--sd-filepicker-filepicker-border-default:#AAAAAA;--sd-filepicker-filepicker-border-disabled:#CCCCCC;--sd-filepicker-filepicker-bg-default:#FFFFFF;--sd-filepicker-filepicker-bg-disabled:#E1E1E1;--sd-filepicker-filepicker-text-default:#222222;--sd-filepicker-filepicker-text-placeholder:#AAAAAA;--sd-filepicker-filepicker-text-disabled:#888888;--sd-filepicker-filepicker-icon-disabled:#BBBBBB;--sd-datepicker-datepicker-sm-height:28px;--sd-datepicker-datepicker-sm-padding-x:12px;--sd-datepicker-datepicker-sm-gap:8px;--sd-datepicker-datepicker-sm-icon:16px;--sd-datepicker-datepicker-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-sm-typography-font-weight:400;--sd-datepicker-datepicker-sm-typography-font-size:12px;--sd-datepicker-datepicker-sm-typography-line-height:20px;--sd-datepicker-datepicker-sm-typography-text-decoration:none;--sd-datepicker-datepicker-sm-radius:4px;--sd-datepicker-datepicker-sm-date-gap:4px;--sd-datepicker-datepicker-md-height:36px;--sd-datepicker-datepicker-md-padding-x:16px;--sd-datepicker-datepicker-md-gap:12px;--sd-datepicker-datepicker-md-icon:20px;--sd-datepicker-datepicker-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-md-typography-font-weight:400;--sd-datepicker-datepicker-md-typography-font-size:14px;--sd-datepicker-datepicker-md-typography-text-decoration:none;--sd-datepicker-datepicker-md-typography-line-height:24px;--sd-datepicker-datepicker-md-radius:6px;--sd-datepicker-datepicker-md-date-gap:6px;--sd-datepicker-datepicker-border-width:1px;--sd-datepicker-datepicker-border-default:#AAAAAA;--sd-datepicker-datepicker-border-focus:#0075FF;--sd-datepicker-datepicker-border-disabled:#CCCCCC;--sd-datepicker-datepicker-bg-default:#FFFFFF;--sd-datepicker-datepicker-bg-disabled:#E1E1E1;--sd-datepicker-datepicker-icon-default:#888888;--sd-datepicker-datepicker-icon-disabled:#BBBBBB;--sd-datepicker-datepicker-text-default:#222222;--sd-datepicker-datepicker-text-hint:#555555;--sd-datepicker-datepicker-text-disabled:#888888;--sd-datepicker-datepicker-contents-gap:4px;--sd-datepicker-datepicker-hint-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-hint-typography-font-weight:400;--sd-datepicker-datepicker-hint-typography-font-size:12px;--sd-datepicker-datepicker-hint-typography-line-height:20px;--sd-datepicker-datepicker-hint-typography-text-decoration:none;--sd-datepicker-datepicker-calendar-bg:#FFFFFF;--sd-datepicker-datepicker-calendar-padding-x-y:24px;--sd-datepicker-datepicker-calendar-gap:12px;--sd-datepicker-datepicker-calendar-radius:8px;--sd-datepicker-datepicker-calendar-header-gap:8px;--sd-datepicker-datepicker-calendar-header-divider:#E1E1E1;--sd-datepicker-datepicker-calendar-header-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-calendar-header-typography-font-weight:500;--sd-datepicker-datepicker-calendar-header-typography-font-size:14px;--sd-datepicker-datepicker-calendar-header-typography-text-decoration:none;--sd-datepicker-datepicker-calendar-header-typography-line-height:24px;--sd-datepicker-datepicker-calendar-week-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-calendar-week-typography-font-weight:400;--sd-datepicker-datepicker-calendar-week-typography-font-size:12px;--sd-datepicker-datepicker-calendar-week-typography-line-height:20px;--sd-datepicker-datepicker-calendar-week-typography-text-decoration:none;--sd-datepicker-datepicker-calendar-week-color:#888888;--sd-datepicker-datepicker-calendar-grid-row-gap:4px;--sd-datepicker-datepicker-calendar-day-width:40px;--sd-datepicker-datepicker-calendar-day-circle-size:32px;--sd-datepicker-datepicker-calendar-day-circle-radius:9999px;--sd-datepicker-datepicker-calendar-day-default-text:#222222;--sd-datepicker-datepicker-calendar-day-hover-text:#222222;--sd-datepicker-datepicker-calendar-day-hover-border:#0075FF;--sd-datepicker-datepicker-calendar-day-select-bg:#0075FF;--sd-datepicker-datepicker-calendar-day-select-text:#FFFFFF;--sd-datepicker-datepicker-calendar-day-disabled-text:#BBBBBB;--sd-datepicker-datepicker-calendar-day-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-calendar-day-typography-default-font-weight:400;--sd-datepicker-datepicker-calendar-day-typography-default-font-size:14px;--sd-datepicker-datepicker-calendar-day-typography-default-text-decoration:none;--sd-datepicker-datepicker-calendar-day-typography-default-line-height:24px;--sd-datepicker-datepicker-calendar-day-typography-bold-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-datepicker-datepicker-calendar-day-typography-bold-font-weight:700;--sd-datepicker-datepicker-calendar-day-typography-bold-font-size:14px;--sd-datepicker-datepicker-calendar-day-typography-bold-text-decoration:none;--sd-datepicker-datepicker-calendar-day-typography-bold-line-height:24px;--sd-datepicker-datepicker-calendar-day-dot-size:6px;--sd-datepicker-datepicker-calendar-day-dot-gap:2px;--sd-datepicker-datepicker-calendar-day-dot-padding-y:4px;--sd-datepicker-datepicker-calendar-range-bg:#D9EAFF;--sd-datepicker-datepicker-calendar-range-height:32px;--sd-datepicker-datepicker-calendar-range-panel-gap:24px;--sd-datepicker-datepicker-calendar-range-divider:#E1E1E1;--sd-datepicker-datepicker-calendar-range-width:20px;--sd-chip-chip-height:24px;--sd-chip-chip-padding-x:8px;--sd-chip-chip-gap:4px;--sd-chip-chip-radius:9999px;--sd-chip-chip-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-chip-chip-typography-default-font-size:12px;--sd-chip-chip-typography-default-font-weight:500;--sd-chip-chip-typography-default-text-decoration:none;--sd-chip-chip-typography-default-line-height:20px;--sd-chip-chip-typography-focus-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-chip-chip-typography-focus-font-size:12px;--sd-chip-chip-typography-focus-font-weight:400;--sd-chip-chip-typography-focus-text-decoration:none;--sd-chip-chip-typography-focus-line-height:20px;--sd-chip-chip-bg-default:#F6F6F6;--sd-chip-chip-bg-error:#FCEFEF;--sd-chip-chip-bg-focus:#FFFFFF;--sd-chip-chip-content-default:#888888;--sd-chip-chip-content-error:#E30000;--sd-chip-chip-content-focus:#555555;--sd-chip-chip-border-focus:#E1E1E1;--sd-chip-chip-border-width:1px;--sd-tag-tag-xs-height:20px;--sd-tag-tag-xs-padding-x:8px;--sd-tag-tag-xs-gap:4px;--sd-tag-tag-xs-icon:12px;--sd-tag-tag-xs-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tag-tag-xs-typography-font-size:11px;--sd-tag-tag-xs-typography-font-weight:500;--sd-tag-tag-xs-typography-line-height:18px;--sd-tag-tag-xs-typography-text-decoration:none;--sd-tag-tag-xs-radius:6px;--sd-tag-tag-sm-height:24px;--sd-tag-tag-sm-padding-x:8px;--sd-tag-tag-sm-gap:4px;--sd-tag-tag-sm-icon:16px;--sd-tag-tag-sm-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tag-tag-sm-typography-font-size:12px;--sd-tag-tag-sm-typography-font-weight:700;--sd-tag-tag-sm-typography-text-decoration:none;--sd-tag-tag-sm-typography-line-height:20px;--sd-tag-tag-sm-radius:6px;--sd-tag-tag-md-height:28px;--sd-tag-tag-md-padding-x:12px;--sd-tag-tag-md-gap:6px;--sd-tag-tag-md-icon:16px;--sd-tag-tag-md-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tag-tag-md-typography-font-size:14px;--sd-tag-tag-md-typography-font-weight:700;--sd-tag-tag-md-typography-line-height:24px;--sd-tag-tag-md-typography-text-decoration:none;--sd-tag-tag-md-radius:8px;--sd-tag-tag-red-content:#FB4444;--sd-tag-tag-red-bg:#FCEFEF;--sd-tag-tag-orange-content:#FF6B00;--sd-tag-tag-orange-bg:#FEF1EA;--sd-tag-tag-yellow-content:#916C0D;--sd-tag-tag-yellow-bg:#FFF7DD;--sd-tag-tag-green-content:#00973C;--sd-tag-tag-green-bg:#E8F9EF;--sd-tag-tag-blue-content:#0075FF;--sd-tag-tag-blue-bg:#E6F1FF;--sd-tag-tag-darkblue-content:#006AC1;--sd-tag-tag-darkblue-bg:#EAF5FE;--sd-tag-tag-indigo-content:#004290;--sd-tag-tag-indigo-bg:#EFF6FF;--sd-tag-tag-grey-content:#737373;--sd-tag-tag-grey-bg:#EEEEEE;--sd-badge-badge-size:6px;--sd-badge-badge-radius:9999px;--sd-badge-badge-red:#FB4444;--sd-badge-badge-orange:#FF6B00;--sd-badge-badge-yellow:#FFC700;--sd-badge-badge-green:#00973C;--sd-badge-badge-blue:#0075FF;--sd-badge-badge-darkblue:#006AC1;--sd-badge-badge-indigo:#004290;--sd-badge-badge-grey:#737373;--sd-tooltip-tooltip-radius:6px;--sd-tooltip-tooltip-padding-y:12px;--sd-tooltip-tooltip-padding-x:16px;--sd-tooltip-tooltip-gap:12px;--sd-tooltip-tooltip-arrow-width:16px;--sd-tooltip-tooltip-arrow-height:12px;--sd-tooltip-tooltip-default-bg:#07284A;--sd-tooltip-tooltip-default-content:#FFFFFF;--sd-tooltip-tooltip-default-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tooltip-tooltip-default-typography-font-size:12px;--sd-tooltip-tooltip-default-typography-font-weight:500;--sd-tooltip-tooltip-default-typography-line-height:20px;--sd-tooltip-tooltip-default-typography-text-decoration:none;--sd-tooltip-tooltip-danger-bg:#FCEFEF;--sd-tooltip-tooltip-danger-content:#FB4444;--sd-tooltip-tooltip-danger-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tooltip-tooltip-danger-typography-font-size:12px;--sd-tooltip-tooltip-danger-typography-font-weight:700;--sd-tooltip-tooltip-danger-typography-text-decoration:none;--sd-tooltip-tooltip-danger-typography-line-height:20px;--sd-tooltip-tooltip-warning-bg:#FEF1EA;--sd-tooltip-tooltip-warning-content:#FF6B00;--sd-tooltip-tooltip-warning-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tooltip-tooltip-warning-typography-font-size:12px;--sd-tooltip-tooltip-warning-typography-font-weight:700;--sd-tooltip-tooltip-warning-typography-text-decoration:none;--sd-tooltip-tooltip-warning-typography-line-height:20px;--sd-tooltip-tooltip-accent-bg:#E6F1FF;--sd-tooltip-tooltip-accent-content:#0075FF;--sd-tooltip-tooltip-accent-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tooltip-tooltip-accent-typography-font-size:12px;--sd-tooltip-tooltip-accent-typography-font-weight:700;--sd-tooltip-tooltip-accent-typography-text-decoration:none;--sd-tooltip-tooltip-accent-typography-line-height:20px;--sd-popover-popover-radius:6px;--sd-popover-popover-padding-y:16px;--sd-popover-popover-padding-x:20px;--sd-popover-popover-gap:12px;--sd-popover-popover-body-gap:12px;--sd-popover-popover-contents-gap:4px;--sd-popover-popover-arrow-width:16px;--sd-popover-popover-arrow-height:12px;--sd-popover-popover-bg:#07284A;--sd-popover-popover-title-color:#FFFFFF;--sd-popover-popover-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-popover-popover-title-typography-font-size:14px;--sd-popover-popover-title-typography-font-weight:700;--sd-popover-popover-title-typography-line-height:24px;--sd-popover-popover-title-typography-text-decoration:none;--sd-popover-popover-description-color:#FFFFFF;--sd-popover-popover-description-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-popover-popover-description-typography-font-size:12px;--sd-popover-popover-description-typography-font-weight:500;--sd-popover-popover-description-typography-line-height:20px;--sd-popover-popover-description-typography-text-decoration:none;--sd-popover-popover-sub-action-color:#D8D8D8;--sd-popover-popover-sub-action-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-popover-popover-sub-action-typography-font-size:12px;--sd-popover-popover-sub-action-typography-font-weight:700;--sd-popover-popover-sub-action-typography-text-decoration:none;--sd-popover-popover-sub-action-typography-line-height:20px;--sd-toast-toast-radius:8px;--sd-toast-toast-padding-y:12px;--sd-toast-toast-padding-x:24px;--sd-toast-toast-gap:16px;--sd-toast-toast-icon:16px;--sd-toast-toast-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-toast-toast-typography-default-font-size:14px;--sd-toast-toast-typography-default-font-weight:700;--sd-toast-toast-typography-default-line-height:24px;--sd-toast-toast-typography-default-text-decoration:none;--sd-toast-toast-typography-link-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-toast-toast-typography-link-font-size:14px;--sd-toast-toast-typography-link-font-weight:700;--sd-toast-toast-typography-link-line-height:24px;--sd-toast-toast-typography-link-text-decoration:underline;--sd-toast-toast-default-bg:#07284A;--sd-toast-toast-default-content:#FFFFFF;--sd-toast-toast-danger-bg:#FB4444;--sd-toast-toast-danger-content:#FFFFFF;--sd-toast-toast-caution-bg:#FFC700;--sd-toast-toast-caution-content:#222222;--sd-toast-toast-complete-bg:#00973C;--sd-toast-toast-complete-content:#FFFFFF;--sd-toast-toast-accent-bg:#005CC9;--sd-toast-toast-accent-content:#FFFFFF;--sd-modal-modal-radius:8px;--sd-modal-modal-confirm-padding-x:32px;--sd-modal-modal-confirm-padding-y:40px;--sd-modal-modal-confirm-gap:40px;--sd-modal-modal-confirm-body-gap:20px;--sd-modal-modal-confirm-title-gap:12px;--sd-modal-modal-confirm-title-color:#222222;--sd-modal-modal-confirm-title-icon:32px;--sd-modal-modal-confirm-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-modal-modal-confirm-title-typography-font-weight:700;--sd-modal-modal-confirm-title-typography-font-size:18px;--sd-modal-modal-confirm-title-typography-line-height:30px;--sd-modal-modal-confirm-title-typography-text-decoration:none;--sd-modal-modal-confirm-button-gap:8px;--sd-modal-modal-confirm-message-color:#222222;--sd-modal-modal-confirm-message-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-modal-modal-confirm-message-typography-font-size:12px;--sd-modal-modal-confirm-message-typography-font-weight:400;--sd-modal-modal-confirm-message-typography-line-height:20px;--sd-modal-modal-confirm-message-typography-text-decoration:none;--sd-modal-modal-confirm-positive-icon:#0075FF;--sd-modal-modal-confirm-negative-icon:#E30000;--sd-modal-modal-bg:#FFFFFF;--sd-modal-modal-action-header-padding-x:24px;--sd-modal-modal-action-header-padding-y:20px;--sd-modal-modal-action-header-gap:12px;--sd-modal-modal-action-title-color:#033F59;--sd-modal-modal-action-title-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-modal-modal-action-title-typography-font-weight:700;--sd-modal-modal-action-title-typography-font-size:16px;--sd-modal-modal-action-title-typography-text-decoration:none;--sd-modal-modal-action-title-typography-line-height:26px;--sd-modal-modal-action-body-padding-x:20px;--sd-modal-modal-action-body-padding-bottom:20px;--sd-modal-modal-action-footer-padding-x:20px;--sd-modal-modal-action-footer-padding-y:8px;--sd-modal-modal-action-footer-gap:16px;--sd-modal-modal-action-footer-bg:#F6F6F6;--sd-modal-modal-action-footer-border:#E1E1E1;--sd-modal-modal-loading-width:520px;--sd-modal-modal-loading-height:320px;--sd-modal-modal-loading-gap:20px;--sd-modal-modal-loading-content:80px;--sd-modal-modal-loading-message-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-modal-modal-loading-message-typography-font-size:12px;--sd-modal-modal-loading-message-typography-font-weight:400;--sd-modal-modal-loading-message-typography-line-height:20px;--sd-modal-modal-loading-message-typography-text-decoration:none;--sd-modal-modal-loading-message-color:#888888;--sd-spinner-spinner-size:80px;--sd-spinner-spinner-color-track:#EEEEEE;--sd-spinner-spinner-color-arc:#2D8DFF;--sd-guide-guide-gap:4px;--sd-guide-guide-button-height:28px;--sd-guide-guide-button-padding-x:12px;--sd-guide-guide-button-radius:9999px;--sd-guide-guide-button-gap:6px;--sd-guide-guide-button-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-guide-guide-button-typography-font-size:12px;--sd-guide-guide-button-typography-font-weight:500;--sd-guide-guide-button-typography-text-decoration:none;--sd-guide-guide-button-typography-line-height:20px;--sd-guide-guide-button-icon-size:16px;--sd-guide-guide-button-icon-default:#00973C;--sd-guide-guide-button-icon-active:#FFFFFF;--sd-guide-guide-button-border-width:1px;--sd-guide-guide-button-border-default:#E1E1E1;--sd-guide-guide-button-bg-default:#FFFFFF;--sd-guide-guide-button-bg-tip:#00973C;--sd-guide-guide-button-bg-notion:#1F8AE1;--sd-guide-guide-button-text-default:#222222;--sd-guide-guide-button-text-active:#FFFFFF;--sd-guide-guide-contents-padding-x:24px;--sd-guide-guide-contents-padding-y:20px;--sd-guide-guide-contents-gap:12px;--sd-guide-guide-contents-title-gap:8px;--sd-guide-guide-contents-row-gap:8px;--sd-guide-guide-contents-body-gap:2px;--sd-guide-guide-contents-typography-title-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-guide-guide-contents-typography-title-font-weight:700;--sd-guide-guide-contents-typography-title-font-size:16px;--sd-guide-guide-contents-typography-title-text-decoration:none;--sd-guide-guide-contents-typography-title-line-height:26px;--sd-guide-guide-contents-typography-body-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-guide-guide-contents-typography-body-font-weight:400;--sd-guide-guide-contents-typography-body-font-size:12px;--sd-guide-guide-contents-typography-body-line-height:20px;--sd-guide-guide-contents-typography-body-text-decoration:none;--sd-guide-guide-contents-typography-color:#222222;--sd-guide-guide-contents-icon:#00973C;--sd-guide-guide-contents-radius:8px;--sd-guide-guide-contents-depth-padding-left:32px;--sd-progress-progress-linear-height:20px;--sd-progress-progress-linear-radius:9999px;--sd-progress-progress-linear-gap:12px;--sd-progress-progress-linear-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-progress-progress-linear-typography-font-size:12px;--sd-progress-progress-linear-typography-font-weight:700;--sd-progress-progress-linear-typography-text-decoration:none;--sd-progress-progress-linear-typography-line-height:20px;--sd-progress-progress-circular-size:80px;--sd-progress-progress-circular-gap:8px;--sd-progress-progress-circular-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-progress-progress-circular-typography-font-weight:700;--sd-progress-progress-circular-typography-font-size:16px;--sd-progress-progress-circular-typography-text-decoration:none;--sd-progress-progress-circular-typography-line-height:26px;--sd-progress-progress-label-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-progress-progress-label-typography-font-size:12px;--sd-progress-progress-label-typography-font-weight:400;--sd-progress-progress-label-typography-line-height:20px;--sd-progress-progress-label-typography-text-decoration:none;--sd-progress-progress-color-track:#EEEEEE;--sd-progress-progress-color-label:#555555;--sd-progress-progress-active-color:#2D8DFF;--sd-progress-progress-success-color:#12B553;--sd-progress-progress-error-color:#FB4444;--sd-progress-progress-bar-text:#FFFFFF;--sd-pagination-pagination-height:24px;--sd-pagination-pagination-padding-x:6px;--sd-pagination-pagination-radius:6px;--sd-pagination-pagination-gap:12px;--sd-pagination-pagination-move-gap:4px;--sd-pagination-pagination-icon:12px;--sd-pagination-pagination-typography-default-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-pagination-pagination-typography-default-font-size:12px;--sd-pagination-pagination-typography-default-font-weight:500;--sd-pagination-pagination-typography-default-text-decoration:none;--sd-pagination-pagination-typography-default-line-height:20px;--sd-pagination-pagination-typography-default-selected-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-pagination-pagination-typography-default-selected-font-weight:700;--sd-pagination-pagination-typography-default-selected-font-size:12px;--sd-pagination-pagination-typography-default-selected-line-height:20px;--sd-pagination-pagination-typography-default-selected-text-decoration:none;--sd-pagination-pagination-typography-selected-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-pagination-pagination-typography-selected-font-weight:700;--sd-pagination-pagination-typography-selected-font-size:12px;--sd-pagination-pagination-typography-selected-line-height:20px;--sd-pagination-pagination-typography-selected-text-decoration:none;--sd-pagination-pagination-typography-selected-selected-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-pagination-pagination-typography-selected-selected-font-weight:700;--sd-pagination-pagination-typography-selected-selected-font-size:12px;--sd-pagination-pagination-typography-selected-selected-line-height:20px;--sd-pagination-pagination-typography-selected-selected-text-decoration:none;--sd-pagination-pagination-item-bg-hover:#EEEEEE;--sd-pagination-pagination-item-bg-selected:#E6F1FF;--sd-pagination-pagination-item-content-default:#555555;--sd-pagination-pagination-item-content-hover:#004290;--sd-pagination-pagination-item-content-selected:#004290;--sd-tab-tab-main-lg-height:44px;--sd-tab-tab-main-lg-padding-x:32px;--sd-tab-tab-main-md-height:36px;--sd-tab-tab-main-md-padding-x:24px;--sd-tab-tab-main-gap:8px;--sd-tab-tab-main-container-gap:4px;--sd-tab-tab-main-radius:6px;--sd-tab-tab-main-border-width:1px;--sd-tab-tab-main-selected-bg:#FFFFFF;--sd-tab-tab-main-selected-text:#0075FF;--sd-tab-tab-main-selected-border:#0075FF;--sd-tab-tab-main-selected-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tab-tab-main-selected-typography-font-weight:700;--sd-tab-tab-main-selected-typography-font-size:12px;--sd-tab-tab-main-selected-typography-line-height:20px;--sd-tab-tab-main-selected-typography-text-decoration:none;--sd-tab-tab-main-default-bg:#F6F6F6;--sd-tab-tab-main-default-text:#888888;--sd-tab-tab-main-default-border:#CCCCCC;--sd-tab-tab-main-default-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tab-tab-main-default-typography-font-weight:400;--sd-tab-tab-main-default-typography-font-size:12px;--sd-tab-tab-main-default-typography-line-height:20px;--sd-tab-tab-main-default-typography-text-decoration:none;--sd-tab-tab-sub-selected-text:#0075FF;--sd-tab-tab-sub-selected-line:#0075FF;--sd-tab-tab-sub-selected-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tab-tab-sub-selected-typography-font-weight:700;--sd-tab-tab-sub-selected-typography-font-size:12px;--sd-tab-tab-sub-selected-typography-line-height:20px;--sd-tab-tab-sub-selected-typography-text-decoration:none;--sd-tab-tab-sub-default-text:#222222;--sd-tab-tab-sub-default-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-tab-tab-sub-default-typography-font-weight:400;--sd-tab-tab-sub-default-typography-font-size:12px;--sd-tab-tab-sub-default-typography-line-height:20px;--sd-tab-tab-sub-default-typography-text-decoration:none;--sd-tab-tab-sub-border-width:1px;--sd-tab-tab-sub-gap:24px;--sd-tab-tab-sub-content-gap:4px;--sd-table-table-header-height:36px;--sd-table-table-header-padding-x:16px;--sd-table-table-header-gap:4px;--sd-table-table-header-bg:#F5FAFF;--sd-table-table-header-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-table-table-header-typography-font-weight:500;--sd-table-table-header-typography-font-size:12px;--sd-table-table-header-typography-line-height:20px;--sd-table-table-header-typography-text-decoration:none;--sd-table-table-header-resizing-bar-color:#CCCCCC;--sd-table-table-header-resizing-bar-height:16px;--sd-table-table-body-default-height:44px;--sd-table-table-body-default-padding-y:8px;--sd-table-table-body-dense-height:32px;--sd-table-table-body-dense-padding-y:6px;--sd-table-table-body-padding-x:16px;--sd-table-table-body-frame-padding:8px;--sd-table-table-body-typography-font-family:Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;--sd-table-table-body-typography-font-weight:400;--sd-table-table-body-typography-font-size:12px;--sd-table-table-body-typography-line-height:20px;--sd-table-table-body-typography-text-decoration:none;--sd-table-table-border-default:#E1E1E1;--sd-table-table-border-width-width:1px;--sd-table-table-content-gap:8px;--sd-table-table-bar-section-gap:12px;--sd-table-table-bar-divider-height:20px;--sd-table-table-bar-height:44px;--sd-table-table-bar-count-total:#066D9B;--sd-table-table-bar-count-null:#888888;--sd-table-table-radius:8px;--sd-table-table-key-value-body-padding:8px;--sd-table-table-key-vlaue-height:44px}.bg-primary{background-color:var(--color-primary, #051d36)}.bg-secondary{background-color:var(--color-secondary, #555555)}.bg-accent{background-color:var(--color-accent, #9c27b0)}.bg-positive{background-color:var(--color-positive, #0075ff)}.bg-negative{background-color:var(--color-negative, #e30000)}.bg-info{background-color:var(--color-info, #00cd52)}.bg-warning{background-color:var(--color-warning, #f2c037)}.bg-red_99{background-color:var(--color-red_99, #220000)}.bg-red_95{background-color:var(--color-red_95, #440000)}.bg-red_90{background-color:var(--color-red_90, #5E0000)}.bg-red_85{background-color:var(--color-red_85, #820000)}.bg-red_80{background-color:var(--color-red_80, #AD0000)}.bg-red_75{background-color:var(--color-red_75, #E30000)}.bg-red_70{background-color:var(--color-red_70, #FB4444)}.bg-red_60{background-color:var(--color-red_60, #FF7C7C)}.bg-red_45{background-color:var(--color-red_45, #FFB5B5)}.bg-red_30{background-color:var(--color-red_30, #FFD3D3)}.bg-red_20{background-color:var(--color-red_20, #FCE6E6)}.bg-red_15{background-color:var(--color-red_15, #FCEFEF)}.bg-caution_bg{background-color:var(--color-caution_bg, #FEF1F1)}.bg-caution_icon{background-color:var(--color-caution_icon, #fd9595)}.bg-orange_99{background-color:var(--color-orange_99, #2F1100)}.bg-orange_95{background-color:var(--color-orange_95, #4D1B00)}.bg-orange_90{background-color:var(--color-orange_90, #752A00)}.bg-orange_85{background-color:var(--color-orange_85, #9B3700)}.bg-orange_75{background-color:var(--color-orange_75, #CE4900)}.bg-orange_65{background-color:var(--color-orange_65, #FF6B00)}.bg-orange_60{background-color:var(--color-orange_60, #FF7F22)}.bg-orange_55{background-color:var(--color-orange_55, #FFA452)}.bg-orange_45{background-color:var(--color-orange_45, #FFBC81)}.bg-orange_35{background-color:var(--color-orange_35, #FFD5AF)}.bg-orange_20{background-color:var(--color-orange_20, #FFEAD7)}.bg-orange_10{background-color:var(--color-orange_10, #FEF1EA)}.bg-header_alert{background-color:var(--color-header_alert, #FF7A00)}.bg-yellow_95{background-color:var(--color-yellow_95, #322700)}.bg-yellow_90{background-color:var(--color-yellow_90, #453702)}.bg-yellow_80{background-color:var(--color-yellow_80, #6C5602)}.bg-yellow_70{background-color:var(--color-yellow_70, #9C7A00)}.bg-yellow_60{background-color:var(--color-yellow_60, #C49900)}.bg-yellow_50{background-color:var(--color-yellow_50, #EBB800)}.bg-yellow_45{background-color:var(--color-yellow_45, #FFC700)}.bg-yellow_40{background-color:var(--color-yellow_40, #FFD643)}.bg-yellow_30{background-color:var(--color-yellow_30, #FEE17C)}.bg-yellow_25{background-color:var(--color-yellow_25, #FFE99E)}.bg-yellow_20{background-color:var(--color-yellow_20, #FEF1C4)}.bg-yellow_10{background-color:var(--color-yellow_10, #FFF7DD)}.bg-olive_95{background-color:var(--color-olive_95, #2C2C00)}.bg-olive_90{background-color:var(--color-olive_90, #454500)}.bg-olive_80{background-color:var(--color-olive_80, #636300)}.bg-olive_70{background-color:var(--color-olive_70, #838300)}.bg-olive_65{background-color:var(--color-olive_65, #A5A500)}.bg-olive_55{background-color:var(--color-olive_55, #C7C700)}.bg-olive_45{background-color:var(--color-olive_45, #DDDD12)}.bg-olive_30{background-color:var(--color-olive_30, #EEEE37)}.bg-olive_20{background-color:var(--color-olive_20, #F6F65F)}.bg-olive_15{background-color:var(--color-olive_15, #FAFAA1)}.bg-olive_10{background-color:var(--color-olive_10, #FBFBBF)}.bg-olive_05{background-color:var(--color-olive_05, #FEFED9)}.bg-green_99{background-color:var(--color-green_99, #001D0B)}.bg-green_95{background-color:var(--color-green_95, #003013)}.bg-green_90{background-color:var(--color-green_90, #00461C)}.bg-green_85{background-color:var(--color-green_85, #006629)}.bg-green_80{background-color:var(--color-green_80, #007B31)}.bg-green_75{background-color:var(--color-green_75, #00973C)}.bg-green_70{background-color:var(--color-green_70, #12B553)}.bg-green_65{background-color:var(--color-green_65, #2BCE6C)}.bg-green_55{background-color:var(--color-green_55, #6DE39C)}.bg-green_45{background-color:var(--color-green_45, #ACF4C9)}.bg-green_25{background-color:var(--color-green_25, #D4FAE3)}.bg-green_15{background-color:var(--color-green_15, #E8F9EF)}.bg-steelblue_99{background-color:var(--color-steelblue_99, #021a25)}.bg-steelblue_95{background-color:var(--color-steelblue_95, #02212f)}.bg-steelblue_90{background-color:var(--color-steelblue_90, #032d40)}.bg-steelblue_85{background-color:var(--color-steelblue_85, #033f59)}.bg-steelblue_80{background-color:var(--color-steelblue_80, #06587d)}.bg-steelblue_75{background-color:var(--color-steelblue_75, #066d9b)}.bg-steelblue_70{background-color:var(--color-steelblue_70, #128fc7)}.bg-steelblue_65{background-color:var(--color-steelblue_65, #229fd7)}.bg-steelblue_60{background-color:var(--color-steelblue_60, #50bff0)}.bg-steelblue_45{background-color:var(--color-steelblue_45, #a4e2fd)}.bg-steelblue_25{background-color:var(--color-steelblue_25, #d9f2fd)}.bg-steelblue_10{background-color:var(--color-steelblue_10, #ecf8fd)}.bg-oceanblue_99{background-color:var(--color-oceanblue_99, #011428)}.bg-oceanblue_95{background-color:var(--color-oceanblue_95, #03172d)}.bg-oceanblue_90{background-color:var(--color-oceanblue_90, #051d36)}.bg-oceanblue_85{background-color:var(--color-oceanblue_85, #07284a)}.bg-oceanblue_80{background-color:var(--color-oceanblue_80, #004177)}.bg-oceanblue_75{background-color:var(--color-oceanblue_75, #025497)}.bg-oceanblue_70{background-color:var(--color-oceanblue_70, #006ac1)}.bg-oceanblue_65{background-color:var(--color-oceanblue_65, #1f8ae1)}.bg-oceanblue_60{background-color:var(--color-oceanblue_60, #5cb0f3)}.bg-oceanblue_50{background-color:var(--color-oceanblue_50, #9cd1fc)}.bg-oceanblue_25{background-color:var(--color-oceanblue_25, #d5ebfe)}.bg-oceanblue_15{background-color:var(--color-oceanblue_15, #eaf5fe)}.bg-brilliantblue_99{background-color:var(--color-brilliantblue_99, #001226)}.bg-brilliantblue_95{background-color:var(--color-brilliantblue_95, #001b39)}.bg-brilliantblue_90{background-color:var(--color-brilliantblue_90, #002b5e)}.bg-brilliantblue_85{background-color:var(--color-brilliantblue_85, #004290)}.bg-brilliantblue_80{background-color:var(--color-brilliantblue_80, #005cc9)}.bg-brilliantblue_75{background-color:var(--color-brilliantblue_75, #0075ff)}.bg-brilliantblue_70{background-color:var(--color-brilliantblue_70, #2d8dff)}.bg-brilliantblue_60{background-color:var(--color-brilliantblue_60, #64abff)}.bg-brilliantblue_50{background-color:var(--color-brilliantblue_50, #93c4ff)}.bg-brilliantblue_40{background-color:var(--color-brilliantblue_40, #bbdaff)}.bg-brilliantblue_25{background-color:var(--color-brilliantblue_25, #d9eaff)}.bg-brilliantblue_20{background-color:var(--color-brilliantblue_20, #e6f1ff)}.bg-brilliantblue_10{background-color:var(--color-brilliantblue_10, #eff6ff)}.bg-brilliantblue_05{background-color:var(--color-brilliantblue_05, #f5faff)}.bg-grey_95{background-color:var(--color-grey_95, #222222)}.bg-grey_90{background-color:var(--color-grey_90, #333333)}.bg-grey_85{background-color:var(--color-grey_85, #444444)}.bg-grey_80{background-color:var(--color-grey_80, #555555)}.bg-grey_70{background-color:var(--color-grey_70, #737373)}.bg-grey_65{background-color:var(--color-grey_65, #888888)}.bg-grey_60{background-color:var(--color-grey_60, #999999)}.bg-grey_55{background-color:var(--color-grey_55, #aaaaaa)}.bg-grey_50{background-color:var(--color-grey_50, #bbbbbb)}.bg-grey_45{background-color:var(--color-grey_45, #cccccc)}.bg-grey_35{background-color:var(--color-grey_35, #D8D8D8)}.bg-grey_30{background-color:var(--color-grey_30, #e1e1e1)}.bg-grey_25{background-color:var(--color-grey_25, #E5E5E5)}.bg-grey_20{background-color:var(--color-grey_20, #eeeeee)}.bg-grey_10{background-color:var(--color-grey_10, #f6f6f6)}.bg-grey_05{background-color:var(--color-grey_05, #f9f9f9)}.bg-white{background-color:var(--color-white, #ffffff)}.bg-black{background-color:var(--color-black, #000000)}.text-primary{color:var(--color-primary, #051d36)}.text-secondary{color:var(--color-secondary, #555555)}.text-accent{color:var(--color-accent, #9c27b0)}.text-positive{color:var(--color-positive, #0075ff)}.text-negative{color:var(--color-negative, #e30000)}.text-info{color:var(--color-info, #00cd52)}.text-warning{color:var(--color-warning, #f2c037)}.text-red_99{color:var(--color-red_99, #220000)}.text-red_95{color:var(--color-red_95, #440000)}.text-red_90{color:var(--color-red_90, #5E0000)}.text-red_85{color:var(--color-red_85, #820000)}.text-red_80{color:var(--color-red_80, #AD0000)}.text-red_75{color:var(--color-red_75, #E30000)}.text-red_70{color:var(--color-red_70, #FB4444)}.text-red_60{color:var(--color-red_60, #FF7C7C)}.text-red_45{color:var(--color-red_45, #FFB5B5)}.text-red_30{color:var(--color-red_30, #FFD3D3)}.text-red_20{color:var(--color-red_20, #FCE6E6)}.text-red_15{color:var(--color-red_15, #FCEFEF)}.text-caution_bg{color:var(--color-caution_bg, #FEF1F1)}.text-caution_icon{color:var(--color-caution_icon, #fd9595)}.text-orange_99{color:var(--color-orange_99, #2F1100)}.text-orange_95{color:var(--color-orange_95, #4D1B00)}.text-orange_90{color:var(--color-orange_90, #752A00)}.text-orange_85{color:var(--color-orange_85, #9B3700)}.text-orange_75{color:var(--color-orange_75, #CE4900)}.text-orange_65{color:var(--color-orange_65, #FF6B00)}.text-orange_60{color:var(--color-orange_60, #FF7F22)}.text-orange_55{color:var(--color-orange_55, #FFA452)}.text-orange_45{color:var(--color-orange_45, #FFBC81)}.text-orange_35{color:var(--color-orange_35, #FFD5AF)}.text-orange_20{color:var(--color-orange_20, #FFEAD7)}.text-orange_10{color:var(--color-orange_10, #FEF1EA)}.text-header_alert{color:var(--color-header_alert, #FF7A00)}.text-yellow_95{color:var(--color-yellow_95, #322700)}.text-yellow_90{color:var(--color-yellow_90, #453702)}.text-yellow_80{color:var(--color-yellow_80, #6C5602)}.text-yellow_70{color:var(--color-yellow_70, #9C7A00)}.text-yellow_60{color:var(--color-yellow_60, #C49900)}.text-yellow_50{color:var(--color-yellow_50, #EBB800)}.text-yellow_45{color:var(--color-yellow_45, #FFC700)}.text-yellow_40{color:var(--color-yellow_40, #FFD643)}.text-yellow_30{color:var(--color-yellow_30, #FEE17C)}.text-yellow_25{color:var(--color-yellow_25, #FFE99E)}.text-yellow_20{color:var(--color-yellow_20, #FEF1C4)}.text-yellow_10{color:var(--color-yellow_10, #FFF7DD)}.text-olive_95{color:var(--color-olive_95, #2C2C00)}.text-olive_90{color:var(--color-olive_90, #454500)}.text-olive_80{color:var(--color-olive_80, #636300)}.text-olive_70{color:var(--color-olive_70, #838300)}.text-olive_65{color:var(--color-olive_65, #A5A500)}.text-olive_55{color:var(--color-olive_55, #C7C700)}.text-olive_45{color:var(--color-olive_45, #DDDD12)}.text-olive_30{color:var(--color-olive_30, #EEEE37)}.text-olive_20{color:var(--color-olive_20, #F6F65F)}.text-olive_15{color:var(--color-olive_15, #FAFAA1)}.text-olive_10{color:var(--color-olive_10, #FBFBBF)}.text-olive_05{color:var(--color-olive_05, #FEFED9)}.text-green_99{color:var(--color-green_99, #001D0B)}.text-green_95{color:var(--color-green_95, #003013)}.text-green_90{color:var(--color-green_90, #00461C)}.text-green_85{color:var(--color-green_85, #006629)}.text-green_80{color:var(--color-green_80, #007B31)}.text-green_75{color:var(--color-green_75, #00973C)}.text-green_70{color:var(--color-green_70, #12B553)}.text-green_65{color:var(--color-green_65, #2BCE6C)}.text-green_55{color:var(--color-green_55, #6DE39C)}.text-green_45{color:var(--color-green_45, #ACF4C9)}.text-green_25{color:var(--color-green_25, #D4FAE3)}.text-green_15{color:var(--color-green_15, #E8F9EF)}.text-steelblue_99{color:var(--color-steelblue_99, #021a25)}.text-steelblue_95{color:var(--color-steelblue_95, #02212f)}.text-steelblue_90{color:var(--color-steelblue_90, #032d40)}.text-steelblue_85{color:var(--color-steelblue_85, #033f59)}.text-steelblue_80{color:var(--color-steelblue_80, #06587d)}.text-steelblue_75{color:var(--color-steelblue_75, #066d9b)}.text-steelblue_70{color:var(--color-steelblue_70, #128fc7)}.text-steelblue_65{color:var(--color-steelblue_65, #229fd7)}.text-steelblue_60{color:var(--color-steelblue_60, #50bff0)}.text-steelblue_45{color:var(--color-steelblue_45, #a4e2fd)}.text-steelblue_25{color:var(--color-steelblue_25, #d9f2fd)}.text-steelblue_10{color:var(--color-steelblue_10, #ecf8fd)}.text-oceanblue_99{color:var(--color-oceanblue_99, #011428)}.text-oceanblue_95{color:var(--color-oceanblue_95, #03172d)}.text-oceanblue_90{color:var(--color-oceanblue_90, #051d36)}.text-oceanblue_85{color:var(--color-oceanblue_85, #07284a)}.text-oceanblue_80{color:var(--color-oceanblue_80, #004177)}.text-oceanblue_75{color:var(--color-oceanblue_75, #025497)}.text-oceanblue_70{color:var(--color-oceanblue_70, #006ac1)}.text-oceanblue_65{color:var(--color-oceanblue_65, #1f8ae1)}.text-oceanblue_60{color:var(--color-oceanblue_60, #5cb0f3)}.text-oceanblue_50{color:var(--color-oceanblue_50, #9cd1fc)}.text-oceanblue_25{color:var(--color-oceanblue_25, #d5ebfe)}.text-oceanblue_15{color:var(--color-oceanblue_15, #eaf5fe)}.text-brilliantblue_99{color:var(--color-brilliantblue_99, #001226)}.text-brilliantblue_95{color:var(--color-brilliantblue_95, #001b39)}.text-brilliantblue_90{color:var(--color-brilliantblue_90, #002b5e)}.text-brilliantblue_85{color:var(--color-brilliantblue_85, #004290)}.text-brilliantblue_80{color:var(--color-brilliantblue_80, #005cc9)}.text-brilliantblue_75{color:var(--color-brilliantblue_75, #0075ff)}.text-brilliantblue_70{color:var(--color-brilliantblue_70, #2d8dff)}.text-brilliantblue_60{color:var(--color-brilliantblue_60, #64abff)}.text-brilliantblue_50{color:var(--color-brilliantblue_50, #93c4ff)}.text-brilliantblue_40{color:var(--color-brilliantblue_40, #bbdaff)}.text-brilliantblue_25{color:var(--color-brilliantblue_25, #d9eaff)}.text-brilliantblue_20{color:var(--color-brilliantblue_20, #e6f1ff)}.text-brilliantblue_10{color:var(--color-brilliantblue_10, #eff6ff)}.text-brilliantblue_05{color:var(--color-brilliantblue_05, #f5faff)}.text-grey_95{color:var(--color-grey_95, #222222)}.text-grey_90{color:var(--color-grey_90, #333333)}.text-grey_85{color:var(--color-grey_85, #444444)}.text-grey_80{color:var(--color-grey_80, #555555)}.text-grey_70{color:var(--color-grey_70, #737373)}.text-grey_65{color:var(--color-grey_65, #888888)}.text-grey_60{color:var(--color-grey_60, #999999)}.text-grey_55{color:var(--color-grey_55, #aaaaaa)}.text-grey_50{color:var(--color-grey_50, #bbbbbb)}.text-grey_45{color:var(--color-grey_45, #cccccc)}.text-grey_35{color:var(--color-grey_35, #D8D8D8)}.text-grey_30{color:var(--color-grey_30, #e1e1e1)}.text-grey_25{color:var(--color-grey_25, #E5E5E5)}.text-grey_20{color:var(--color-grey_20, #eeeeee)}.text-grey_10{color:var(--color-grey_10, #f6f6f6)}.text-grey_05{color:var(--color-grey_05, #f9f9f9)}.text-white{color:var(--color-white, #ffffff)}.text-black{color:var(--color-black, #000000)}*,*::before,*::after{box-sizing:border-box}*{scroll-behavior:smooth}*::-webkit-scrollbar{opacity:0;width:8px;background:#E5E5E5}*::-webkit-scrollbar:horizontal{height:8px}*::-webkit-scrollbar-thumb{height:80px;background-color:#CCCCCC;border-radius:4px}*::-webkit-scrollbar-track{background-color:#E5E5E5}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin-block-end:0}ul[role=list],ol[role=list]{list-style:none}body{min-height:100vh;line-height:1.5}h1,h2,h3,h4,button,input,label{line-height:1}h1,h2,h3,h4{text-wrap:balance}a:not([class]){text-decoration-skip-ink:auto;color:currentColor}img,picture{max-width:100%;display:block}input,button,textarea,select{font-size:inherit}:target{scroll-margin-block:5ex}button{background:none;border:none;cursor:pointer;padding:0;outline:0}button:focus{outline:0 !important}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-text-fill-color:#000;-webkit-box-shadow:0 0 0px 1000px #fff inset;box-shadow:0 0 0px 1000px #fff inset;transition:background-color 5000s ease-in-out 0s}input:autofill,input:autofill:hover,input:autofill:focus,input:autofill:active{-webkit-text-fill-color:#000;-webkit-box-shadow:0 0 0px 1000px #fff inset;box-shadow:0 0 0px 1000px #fff inset;transition:background-color 5000s ease-in-out 0s}:host{display:inline-block;height:fit-content;line-height:0}.text-center{text-align:center}.text-right{text-align:right}.text-left{text-align:left}input[type=text],input[type=number],input[type=password],input[type=email],input[type=tel],textarea{padding-block:0px;padding-inline:0px}.sd-hoverable:hover>.sd-focus-helper{background:currentColor;opacity:0.15}.sd-hoverable:hover>.sd-focus-helper:before{opacity:0.1}.sd-hoverable:hover>.sd-focus-helper:after{opacity:0.4}.sd-focus-helper{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:inherit;opacity:0;transition:background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.4s cubic-bezier(0.25, 0.8, 0.5, 1)}.sd-focus-helper:before,.sd-focus-helper:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;border-radius:inherit;transition:background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.6s cubic-bezier(0.25, 0.8, 0.5, 1)}.sd-focus-helper:before{background:#000000}.sd-focus-helper:after{background:#ffffff}";
|
|
140
140
|
|
|
141
141
|
/*
|
|
142
142
|
Stencil Hydrate Platform v4.43.2 | MIT Licensed | https://stenciljs.com
|
|
@@ -5209,116 +5209,6 @@ var setScopedSSR = (opts) => {
|
|
|
5209
5209
|
var needsScopedSSR = () => scopedSSR;
|
|
5210
5210
|
var scopedSSR = false;
|
|
5211
5211
|
|
|
5212
|
-
const tableTestCss = () => `:host{display:block}.table-wrapper{width:100%;overflow-x:auto}.templates-slot{display:none}.data-table{width:100%;border-collapse:collapse;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;font-size:14px}.data-table th,.data-table td{padding:12px 16px;text-align:left;vertical-align:middle}.data-table th{font-weight:600;background-color:#f8f9fa;color:#333}.data-table.bordered th,.data-table.bordered td{border:1px solid #dee2e6}.data-table.striped tbody tr:nth-child(odd){background-color:#f8f9fa}.data-table tbody tr:hover{background-color:#e9ecef}.data-table .cell-flex{display:flex;align-items:center;gap:8px}.data-table .cell-image{width:24px;height:16px;object-fit:cover;border-radius:2px}`;
|
|
5213
|
-
|
|
5214
|
-
class DataTable {
|
|
5215
|
-
constructor(hostRef) {
|
|
5216
|
-
registerInstance(this, hostRef);
|
|
5217
|
-
this.tableReady = createEvent(this, "tableReady", 7);
|
|
5218
|
-
}
|
|
5219
|
-
get el() { return getElement(this); }
|
|
5220
|
-
/** Column definitions array */
|
|
5221
|
-
columns = [];
|
|
5222
|
-
/** Row data array */
|
|
5223
|
-
rows = [];
|
|
5224
|
-
/** Show cell borders */
|
|
5225
|
-
bordered = true;
|
|
5226
|
-
/** Alternate row colors */
|
|
5227
|
-
striped = false;
|
|
5228
|
-
cellRenderers = new Map();
|
|
5229
|
-
headerRenderers = new Map();
|
|
5230
|
-
tableReady;
|
|
5231
|
-
dataChanged() {
|
|
5232
|
-
this.tableReady.emit();
|
|
5233
|
-
}
|
|
5234
|
-
componentDidLoad() {
|
|
5235
|
-
this.tableReady.emit();
|
|
5236
|
-
}
|
|
5237
|
-
async setCellRenderer(field, renderer) {
|
|
5238
|
-
this.cellRenderers = new Map(this.cellRenderers).set(field, renderer);
|
|
5239
|
-
}
|
|
5240
|
-
async setHeaderRenderer(field, renderer) {
|
|
5241
|
-
this.headerRenderers = new Map(this.headerRenderers).set(field, renderer);
|
|
5242
|
-
}
|
|
5243
|
-
async removeCellRenderer(field) {
|
|
5244
|
-
const newMap = new Map(this.cellRenderers);
|
|
5245
|
-
newMap.delete(field);
|
|
5246
|
-
this.cellRenderers = newMap;
|
|
5247
|
-
}
|
|
5248
|
-
async clearAllRenderers() {
|
|
5249
|
-
this.cellRenderers = new Map();
|
|
5250
|
-
this.headerRenderers = new Map();
|
|
5251
|
-
}
|
|
5252
|
-
renderCellContent(column, row, rowIndex) {
|
|
5253
|
-
const value = row[column.field];
|
|
5254
|
-
const renderer = this.cellRenderers.get(column.field);
|
|
5255
|
-
if (renderer) {
|
|
5256
|
-
const html = renderer({ field: column.field, value, row, rowIndex });
|
|
5257
|
-
return hAsync("span", { class: "cell-content", innerHTML: html });
|
|
5258
|
-
}
|
|
5259
|
-
const template = this.el.querySelector(`[slot="cell-${column.field}"]`);
|
|
5260
|
-
if (template) {
|
|
5261
|
-
const html = this.processTemplate(template.innerHTML, { value, row, rowIndex });
|
|
5262
|
-
return hAsync("span", { class: "cell-content", innerHTML: html });
|
|
5263
|
-
}
|
|
5264
|
-
return hAsync("span", { class: "cell-content" }, value);
|
|
5265
|
-
}
|
|
5266
|
-
renderHeaderContent(column) {
|
|
5267
|
-
const renderer = this.headerRenderers.get(column.field);
|
|
5268
|
-
if (renderer) {
|
|
5269
|
-
const html = renderer({ field: column.field, column });
|
|
5270
|
-
return hAsync("span", { innerHTML: html });
|
|
5271
|
-
}
|
|
5272
|
-
const template = this.el.querySelector(`[slot="header-${column.field}"]`);
|
|
5273
|
-
if (template) {
|
|
5274
|
-
return hAsync("span", { innerHTML: template.innerHTML });
|
|
5275
|
-
}
|
|
5276
|
-
return column.header || column.field;
|
|
5277
|
-
}
|
|
5278
|
-
processTemplate(html, data) {
|
|
5279
|
-
return html
|
|
5280
|
-
.replace(/\{\{value\}\}/g, this.escapeHtml(String(data.value ?? '')))
|
|
5281
|
-
.replace(/\{\{rowIndex\}\}/g, String(data.rowIndex))
|
|
5282
|
-
.replace(/\{\{row\.(\w+)\}\}/g, (_, prop) => this.escapeHtml(String(data.row[prop] ?? '')));
|
|
5283
|
-
}
|
|
5284
|
-
escapeHtml(str) {
|
|
5285
|
-
const el = document.createElement('div');
|
|
5286
|
-
el.textContent = str;
|
|
5287
|
-
return el.innerHTML;
|
|
5288
|
-
}
|
|
5289
|
-
render() {
|
|
5290
|
-
return (hAsync("div", { key: 'a34267f6b11cdd0dff53bfa3da62b7a47934c73b', class: "table-wrapper" }, hAsync("table", { key: 'b23ac2cd9a785d8fc89c09a04a6aa29a63e6d2b4', class: { 'data-table': true, 'bordered': this.bordered, 'striped': this.striped } }, hAsync("thead", { key: 'e08ff945e40f3ec6db10285840d4185d110a1dc0' }, hAsync("tr", { key: 'ffe2e7253865f5a650611e2859f979d0204fca2a' }, this.columns.map(column => (hAsync("th", { key: column.field, style: { width: column.width } }, this.renderHeaderContent(column)))))), hAsync("tbody", { key: '2d47105abba4eecad71b549282650b7f2b056b4c' }, this.rows.map((row, rowIndex) => (hAsync("tr", { key: rowIndex }, this.columns.map(column => (hAsync("td", { key: `${rowIndex}-${column.field}` }, this.renderCellContent(column, row, rowIndex))))))))), hAsync("div", { key: '99fe2715e69abf50f69a844e76a3ad422f5b870b', class: "templates-slot", hidden: true }, hAsync("slot", { key: '8c56201e8edb251c5f7494e00acdc5e5fbb67d00' }))));
|
|
5291
|
-
}
|
|
5292
|
-
static get watchers() { return {
|
|
5293
|
-
"columns": [{
|
|
5294
|
-
"dataChanged": 0
|
|
5295
|
-
}],
|
|
5296
|
-
"rows": [{
|
|
5297
|
-
"dataChanged": 0
|
|
5298
|
-
}]
|
|
5299
|
-
}; }
|
|
5300
|
-
static get style() { return tableTestCss(); }
|
|
5301
|
-
static get cmpMeta() { return {
|
|
5302
|
-
"$flags$": 777,
|
|
5303
|
-
"$tagName$": "table-test",
|
|
5304
|
-
"$members$": {
|
|
5305
|
-
"columns": [16],
|
|
5306
|
-
"rows": [16],
|
|
5307
|
-
"bordered": [4],
|
|
5308
|
-
"striped": [4],
|
|
5309
|
-
"cellRenderers": [32],
|
|
5310
|
-
"headerRenderers": [32],
|
|
5311
|
-
"setCellRenderer": [64],
|
|
5312
|
-
"setHeaderRenderer": [64],
|
|
5313
|
-
"removeCellRenderer": [64],
|
|
5314
|
-
"clearAllRenderers": [64]
|
|
5315
|
-
},
|
|
5316
|
-
"$listeners$": undefined,
|
|
5317
|
-
"$lazyBundleId$": "-",
|
|
5318
|
-
"$attrsToReflect$": []
|
|
5319
|
-
}; }
|
|
5320
|
-
}
|
|
5321
|
-
|
|
5322
5212
|
const modal$1 = {
|
|
5323
5213
|
radius: "8",
|
|
5324
5214
|
confirm: {
|
|
@@ -5448,7 +5338,7 @@ class SdActionModal {
|
|
|
5448
5338
|
if (this.height != null && this.height !== '') {
|
|
5449
5339
|
sizeStyle.height = typeof this.height === 'number' ? `${this.height}px` : this.height;
|
|
5450
5340
|
}
|
|
5451
|
-
return (hAsync("div", { key: '
|
|
5341
|
+
return (hAsync("div", { key: '8aa9962dd66af45cbb9f7a16e087b8e5553692b5', class: "sd-action-modal", style: { ...cssVars, ...sizeStyle } }, hAsync("header", { key: 'fe47461827e9ded9a055134869744b9ae57be7bd', class: "sd-action-modal__header" }, hAsync("h2", { key: '911619c8669b1ea109bdc35aa8c6850eade4c49e', class: "sd-action-modal__title" }, this.modalTitle), hAsync("div", { key: 'af2959f85fbedaa0f2f04d3c0bfb110338ab7c30', class: "sd-action-modal__header-sub" }, hAsync("slot", { key: '21801f18cce8eb0fec750ed4dbbe7eb78b6bba89', name: "header-sub-title" })), hAsync("sd-ghost-button", { key: '6b3cbb9f3bc8566bde5a3245384bab03b71ba41f', class: "sd-action-modal__close", icon: "close", ariaLabel: "close", onClick: () => this.close.emit() })), hAsync("div", { key: '0fb3e066792e018282644123978bb395a56cdf66', class: "sd-action-modal__body" }, hAsync("slot", { key: 'ba8436ff647e422602b92ba982145e4db9366b1e', name: "body" })), (this.buttonProps != null || this.buttonProps != undefined) && (hAsync("footer", { key: '72a21271d7f9301d3bb4e6beb8f66b33b85554e2', class: "sd-action-modal__footer" }, hAsync("div", { key: 'b53076fddc6a11bd64ff27bdf63577cc6f22c4bf', class: "sd-action-modal__footer-sub" }, hAsync("slot", { key: 'bdea9bd98cd8e5a3f0fec66c7d1424b86c7995d5', name: "bottom-sub-content" })), hAsync("sd-button-v2", { key: 'c2a222662a5f06dfc18928059e68837ddb0b5e95', ...DEFAULT_BUTTON_PROPS, ...this.buttonProps, onSdClick: () => this.ok.emit() })))));
|
|
5452
5342
|
}
|
|
5453
5343
|
static get style() { return sdActionModalCss(); }
|
|
5454
5344
|
static get cmpMeta() { return {
|
|
@@ -5501,7 +5391,7 @@ class SdBadge {
|
|
|
5501
5391
|
label = '';
|
|
5502
5392
|
render() {
|
|
5503
5393
|
const resolvedColor = BADGE_COLOR_MAP[this.color] ?? BADGE_COLOR_MAP.blue;
|
|
5504
|
-
return (hAsync("div", { key: '
|
|
5394
|
+
return (hAsync("div", { key: '3737fa6c3023e7adaaf3ae4086efe6d9acadcb67', class: "sd-badge", style: { '--sd-badge-color': resolvedColor } }, hAsync("div", { key: 'f13d60974520124abeb4fcd49fed638002674267', class: "sd-badge__dot" }), hAsync("div", { key: '29c528444f3e4e4b41315586f7d31e2e828400df', class: "sd-badge__label" }, this.label)));
|
|
5505
5395
|
}
|
|
5506
5396
|
static get style() { return sdBadgeCss(); }
|
|
5507
5397
|
static get cmpMeta() { return {
|
|
@@ -5711,7 +5601,7 @@ class SdBarcodeInput {
|
|
|
5711
5601
|
'--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
|
|
5712
5602
|
'--sd-system-color-field-bg-default': BARCODE_INPUT_COLORS.bg.barcode,
|
|
5713
5603
|
};
|
|
5714
|
-
return (hAsync("sd-field", { key: '
|
|
5604
|
+
return (hAsync("sd-field", { key: '359bac03c40af3bfc067957220124c00d0f542a1', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, hAsync("label", { key: '0512c6c4ba9f778c65d6aaf9fd441e66d3e09cf7', class: "sd-barcode-input__content" }, hAsync("slot", { key: '47f7ff7b11b0f10a6f6efce02473c63a02ab9129', name: "prefix" }), hAsync("input", { key: '3f9150a1f188339a9d119475070eb53bca76b61a', name: this.name, ref: el => (this.nativeEl = el), class: `sd-barcode-input__native ${this.inputClass}`, type: "text", value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), hAsync("slot", { key: 'e193c4921de2cd71962841745e163620b3eac436', name: "suffix" }), this.clearable && this.internalValue && (hAsync("sd-ghost-button", { key: '4ca22273d2ef5c79d439c9469bf8dbef5439e685', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-barcode-input__clear-icon", onClick: async () => {
|
|
5715
5605
|
if (this.disabled)
|
|
5716
5606
|
return;
|
|
5717
5607
|
this.internalValue = '';
|
|
@@ -6438,13 +6328,13 @@ class SdButtonV2 {
|
|
|
6438
6328
|
const hasLabel = Boolean(this.label);
|
|
6439
6329
|
const iconOnly = !this.label && Boolean(this.icon) !== Boolean(this.rightIcon);
|
|
6440
6330
|
const accessibleName = iconOnly && this.ariaLabel.trim() ? this.ariaLabel : undefined;
|
|
6441
|
-
return (hAsync("button", { key: '
|
|
6331
|
+
return (hAsync("button", { key: 'e3e2074fbe2b48117d5834efac7ff3036757aab3', class: this.getButtonClasses(preset, config.size, hasLabel, iconOnly), type: this.type, disabled: this.disabled, "aria-label": accessibleName, style: {
|
|
6442
6332
|
'--sd-button-v2-bg': config.color,
|
|
6443
6333
|
'--sd-button-v2-bg-hover': PRESET_HOVER_BACKGROUNDS$1[preset],
|
|
6444
6334
|
'--sd-button-v2-border': PRESET_BORDER_COLORS$1[preset],
|
|
6445
6335
|
'--sd-button-v2-content': PRESET_CONTENT_COLORS$1[preset],
|
|
6446
6336
|
'--sd-button-v2-accent': BUTTON_FOCUS_RING_COLOR,
|
|
6447
|
-
}, onClick: this.handleClick }, hAsync("span", { key: '
|
|
6337
|
+
}, onClick: this.handleClick }, hAsync("span", { key: '90ea3bf42c9e16c836c6fdfdf26a74c8a848c31b', class: "sd-button-v2__content" }, this.icon && (hAsync("sd-icon", { key: 'b9f4a1c42ae866aac1f65f4bbedb282ae0c10c72', class: "sd-button-v2__icon", name: this.icon, size: BUTTON_ICON_SIZES[config.size], color: "var(--sd-button-v2-current-icon)" })), this.label && hAsync("span", { key: '5e5dfbabdbec86c2da625c6a70fcda10303d0e50', class: "sd-button-v2__label" }, this.label), this.rightIcon && (hAsync("sd-icon", { key: 'f1c3a74b6d7e83fa755c97f83c6d97dea8411537', class: "sd-button-v2__icon sd-button-v2__icon--right", name: this.rightIcon, size: BUTTON_ICON_SIZES[config.size], color: "var(--sd-button-v2-current-icon)" })))));
|
|
6448
6338
|
}
|
|
6449
6339
|
static get style() { return sdButtonV2Css(); }
|
|
6450
6340
|
static get cmpMeta() { return {
|
|
@@ -6682,7 +6572,7 @@ class SdCard {
|
|
|
6682
6572
|
bordered = false;
|
|
6683
6573
|
sdClass = '';
|
|
6684
6574
|
render() {
|
|
6685
|
-
return (hAsync(Fragment, { key: '
|
|
6575
|
+
return (hAsync(Fragment, { key: 'ce09898d7396b093f0f292700d5d6bd8b6249ad3' }, hAsync("div", { key: 'df584d42ecf16b8ea3618238fb58e77cb7e80d9e', class: `sd-card ${this.bordered ? 'sd-card--bordered' : ''} ${this.sdClass}` }, hAsync("slot", { key: 'e031effb829371ca8c001bcc5596b4c9d01c8951' }))));
|
|
6686
6576
|
}
|
|
6687
6577
|
static get style() { return sdCardCss(); }
|
|
6688
6578
|
static get cmpMeta() { return {
|
|
@@ -6856,6 +6746,9 @@ class SdCheckbox {
|
|
|
6856
6746
|
valueSet.has(this.val) ? valueSet.delete(this.val) : valueSet.add(this.val);
|
|
6857
6747
|
newValue = Array.from(valueSet);
|
|
6858
6748
|
}
|
|
6749
|
+
else if (this.value === null) {
|
|
6750
|
+
newValue = false;
|
|
6751
|
+
}
|
|
6859
6752
|
else {
|
|
6860
6753
|
newValue = !this.isChecked;
|
|
6861
6754
|
}
|
|
@@ -6883,13 +6776,13 @@ class SdCheckbox {
|
|
|
6883
6776
|
'--sd-checkbox-inverse-icon': CHECKBOX_COLORS.checked.iconInverse,
|
|
6884
6777
|
'--sd-checkbox-inverse-label': CHECKBOX_COLORS.labelInverse,
|
|
6885
6778
|
};
|
|
6886
|
-
return (hAsync("label", { key: '
|
|
6779
|
+
return (hAsync("label", { key: '0e4a142753f8ceda6356c184f1f227e9f11b8a43', class: this.checkboxClasses, style: cssVars }, hAsync("input", { key: '53f7bac2fbc2c197ddcc2bb3cd0779598155af4c', type: "checkbox", ref: el => {
|
|
6887
6780
|
this.inputEl = el;
|
|
6888
|
-
}, value: this.val, checked: !!this.isChecked, disabled: this.disabled, onChange: this.handleChange, name: this.val?.toString() || 'checkbox', "aria-label": this.label || 'checkbox', "aria-checked": this.isChecked === null ? 'mixed' : this.isChecked ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }), hAsync("div", { key: '
|
|
6781
|
+
}, value: this.val, checked: !!this.isChecked, disabled: this.disabled, onChange: this.handleChange, name: this.val?.toString() || 'checkbox', "aria-label": this.label || 'checkbox', "aria-checked": this.isChecked === null ? 'mixed' : this.isChecked ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }), hAsync("div", { key: '0725d9e2ed16bec52b6340c9633ffed021558560', class: "sd-checkbox__bg" }, this.isChecked !== false ? (hAsync("sd-icon", { name: this.isChecked === true ? 'check' : 'minus', size: Number(CHECKBOX_LAYOUT.iconSize), color: this.disabled
|
|
6889
6782
|
? CHECKBOX_COLORS.checked.iconDisabled
|
|
6890
6783
|
: this.inverse
|
|
6891
6784
|
? CHECKBOX_COLORS.checked.iconInverse
|
|
6892
|
-
: CHECKBOX_COLORS.checked.icon })) : null), this.label && hAsync("span", { key: '
|
|
6785
|
+
: CHECKBOX_COLORS.checked.icon })) : null), this.label && hAsync("span", { key: 'dcb8b972e88aa06d0a338ce8d2e2b86a0fbd8f3f', class: "sd-checkbox__label" }, this.label)));
|
|
6893
6786
|
}
|
|
6894
6787
|
static get watchers() { return {
|
|
6895
6788
|
"value": [{
|
|
@@ -7203,7 +7096,7 @@ class SdChip {
|
|
|
7203
7096
|
'--sd-chip-font-weight': typography.fontWeight,
|
|
7204
7097
|
'--sd-chip-line-height': typography.lineHeight,
|
|
7205
7098
|
};
|
|
7206
|
-
return (hAsync("span", { key: '
|
|
7099
|
+
return (hAsync("span", { key: 'a821268b6bc2d04bd311b238009b750424e04e72', class: {
|
|
7207
7100
|
'sd-chip': true,
|
|
7208
7101
|
[`sd-chip--${state}`]: true,
|
|
7209
7102
|
'sd-chip--disabled': this.disabled,
|
|
@@ -7285,7 +7178,13 @@ const color = {
|
|
|
7285
7178
|
secondary: "#555555",
|
|
7286
7179
|
tertiary: "#888888",
|
|
7287
7180
|
inverse: "#FFFFFF"
|
|
7288
|
-
}
|
|
7181
|
+
},
|
|
7182
|
+
blue: {
|
|
7183
|
+
strong: "#0075FF"},
|
|
7184
|
+
darkblue: {
|
|
7185
|
+
strong: "#006AC1"},
|
|
7186
|
+
grey: {
|
|
7187
|
+
strong: "#737373"}};
|
|
7289
7188
|
var systemTokens = {
|
|
7290
7189
|
color: color
|
|
7291
7190
|
};
|
|
@@ -7348,7 +7247,7 @@ class SdCircleProgress {
|
|
|
7348
7247
|
}
|
|
7349
7248
|
const c = CIRCLE_PROGRESS_VIEWBOX_SIZE / 2;
|
|
7350
7249
|
const showPercent = !this.indeterminate;
|
|
7351
|
-
return (hAsync(Host, { key: '
|
|
7250
|
+
return (hAsync(Host, { key: '9a4424e79b095c240b2dd53c8655b9a4cccaf581', style: hostStyle }, hAsync("svg", { key: '37ca87d4c4aa6ab6b84a4301225d775f1998c0c1', class: "sd-circle-progress", viewBox: `0 0 ${CIRCLE_PROGRESS_VIEWBOX_SIZE} ${CIRCLE_PROGRESS_VIEWBOX_SIZE}`, xmlns: "http://www.w3.org/2000/svg" }, hAsync("circle", { key: '372f7031310dddba431323b0527c273311a498e3', class: "sd-circle-progress__track", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH }), hAsync("circle", { key: 'def6ff7573e4c4a08648f35f7cb545d6b8064f6d', class: "sd-circle-progress__arc", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH, "stroke-linecap": "round", style: arcStyle })), showPercent && (hAsync("span", { key: '13d6345672fdafaf6a1e1eef9f5987179a99c3ae', class: "sd-circle-progress__percent" }, Math.round(this.clampedValue), "%")), this.label && hAsync("span", { key: 'c42e2fa2826284017e530e967975e45277ae9ee3', class: "sd-circle-progress__label" }, this.label)));
|
|
7352
7251
|
}
|
|
7353
7252
|
static get style() { return sdCircleProgressCss(); }
|
|
7354
7253
|
static get cmpMeta() { return {
|
|
@@ -7459,9 +7358,9 @@ class SdConfirmModal {
|
|
|
7459
7358
|
render() {
|
|
7460
7359
|
const iconName = CONFIRM_MODAL_ICON_MAP[this.type];
|
|
7461
7360
|
const iconColor = CONFIRM_MODAL_ICON_COLOR[this.type];
|
|
7462
|
-
return (hAsync("div", { key: '
|
|
7361
|
+
return (hAsync("div", { key: '4ef44b1b2a86914eae3fc59e3c383b12646d1d0c', class: "sd-confirm-modal" }, hAsync("sd-ghost-button", { key: 'aa62624aaf76a23eb4f1d30b846e6054f3cf001c', class: "sd-confirm-modal__close-button", icon: "close", ariaLabel: "close", onClick: () => this.close.emit() }), iconName && (hAsync("sd-icon", { key: 'd1329b8e71d455357790a4aa5f73547142830532', class: "sd-confirm-modal__icon", name: iconName, size: TITLE_ICON_SIZE, color: iconColor })), hAsync("h2", { key: '2c5e0f902327c5eb663e6ccc5057e22e2be11c03', class: `sd-confirm-modal__title ${this.titleClass}` }, this.modalTitle), hAsync("div", { key: '1917ef85f9f06de3dd321d664d4022dd4a1524ff', class: "sd-confirm-modal__body" }, (this.topMessage ?? []).length > 0 && (hAsync("div", { key: 'afa7e6671f4849b7a90317664d07d3c04178c554', class: "sd-confirm-modal__message" }, (this.topMessage ?? []).map(msg => (hAsync("p", { class: "sd-confirm-modal__message-text", innerHTML: msg }))))), this.showContentBox && (hAsync("div", { key: 'd4c06bfdd2222212b1cf8e3ec86ccaca4c394394', class: "sd-confirm-modal__content-box" }, this.tagContents ? (hAsync("div", { class: "sd-confirm-modal__custom-content", ref: el => {
|
|
7463
7362
|
this.customContentRef = el;
|
|
7464
|
-
} })) : (hAsync("slot", { onSlotchange: () => this.syncHasSlottedContent() }, this.tagLabel && hAsync("sd-tag", { name: this.tagPreset, label: this.tagLabel }), this.slotLabel && (hAsync("span", { class: "sd-confirm-modal__slot-label" }, this.slotLabel)))))), (this.bottomMessage ?? []).length > 0 && (hAsync("div", { key: '
|
|
7363
|
+
} })) : (hAsync("slot", { onSlotchange: () => this.syncHasSlottedContent() }, this.tagLabel && hAsync("sd-tag", { name: this.tagPreset, label: this.tagLabel }), this.slotLabel && (hAsync("span", { class: "sd-confirm-modal__slot-label" }, this.slotLabel)))))), (this.bottomMessage ?? []).length > 0 && (hAsync("div", { key: '8af201f6b6b08991ba31db2f2e59ee44a7b10d50', class: "sd-confirm-modal__message" }, (this.bottomMessage ?? []).map(msg => (hAsync("p", { class: "sd-confirm-modal__message-text", innerHTML: msg })))))), hAsync("div", { key: '733f478a57a68bd9d4cc6563558bc0fafbfa5b9a', class: "sd-confirm-modal__button" }, this.subButtonLabel && (hAsync("sd-button-v2", { key: 'a7be74a833fbd012d14e79b570a4d97e3a495a52', name: SUB_BUTTON_PRESET, label: this.subButtonLabel, onSdClick: () => this.cancel.emit() })), hAsync("sd-button-v2", { key: 'e09be98a918aafd291a7b12c221b70e72ba14ab9', name: this.resolvedMainButton, label: this.mainButtonLabel, onSdClick: () => this.ok.emit() }))));
|
|
7465
7364
|
}
|
|
7466
7365
|
static get style() { return sdConfirmModalCss(); }
|
|
7467
7366
|
static get cmpMeta() { return {
|
|
@@ -7819,9 +7718,9 @@ class SdDatePicker {
|
|
|
7819
7718
|
'--sd-system-color-field-border-focus': DATEPICKER_COLORS.border.focus,
|
|
7820
7719
|
'--sd-system-color-field-bg-default': DATEPICKER_COLORS.bg.default,
|
|
7821
7720
|
};
|
|
7822
|
-
return (hAsync("sd-field", { key: '
|
|
7721
|
+
return (hAsync("sd-field", { key: 'd55b2123cc862d5f12fdd429b02b622946b58cc4', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, hAsync("div", { key: '79e47e4e02e8b30dc2651a9c4aab3950a8662f52', class: "sd-date-picker", ref: el => {
|
|
7823
7722
|
this.triggerRef = el;
|
|
7824
|
-
} }, hAsync("sd-date-picker-trigger", { key: '
|
|
7723
|
+
} }, hAsync("sd-date-picker-trigger", { key: '7b09873b1e58aed36d4fb0dadb02d21ea6c2b309', displayText: this.value ?? '', placeholder: this.placeholder, disabled: this.disabled, size: this.size, onSdTriggerClick: this.handleTriggerClick })), (this.isOpen || this.isAnimatingOut) && (hAsync("sd-portal", { key: 'fd60a9df30dfc459798a8e537acdf16ed9f94844', open: this.isOpen, parentRef: this.triggerRef, onSdClose: () => this.closeDropdown() }, hAsync("sd-date-picker-calendar", { key: '0478f726cb51fe533b829f3eb0ce46d2fbf0ba94', value: this.value, selectable: this.selectable, onSdSelect: this.handleSelect, onSdViewChange: this.handleViewChange })))));
|
|
7825
7724
|
}
|
|
7826
7725
|
static get watchers() { return {
|
|
7827
7726
|
"isOpen": [{
|
|
@@ -8003,7 +7902,7 @@ class SdDatePickerCalendar {
|
|
|
8003
7902
|
'--calendar-day-font-weight': CALENDAR_LAYOUT.day.fontWeight,
|
|
8004
7903
|
'--calendar-day-bold-font-weight': CALENDAR_LAYOUT.day.boldFontWeight,
|
|
8005
7904
|
};
|
|
8006
|
-
return (hAsync("div", { key: '
|
|
7905
|
+
return (hAsync("div", { key: 'baeaf5925dd87084b4f22445cc2fa6fe879d8faf', class: "sd-date-picker-calendar", style: cssVars }, hAsync("div", { key: '784e0bb6698dc097d8fa9b136ec8bc1d82cfe798', class: "sd-date-picker-calendar__header" }, hAsync("div", { key: 'e42d77c2a1c5d7c23e058b111ed87d3d27c9b465', class: "sd-date-picker-calendar__nav-group" }, hAsync("sd-ghost-button", { key: 'fd5573590ca5c7aaf5b07a594d65f4f168d526d7', ariaLabel: "prevYear", size: "xxs", icon: "chevronLeft", onClick: this.goPrevYear }), hAsync("span", { key: 'd8d2f3fcb2dca348c99f5a461260278ddf1ab16b', class: "sd-date-picker-calendar__label" }, this.currentYear), hAsync("sd-ghost-button", { key: 'f134fdd299bcead5d9ce594355f1c58be057fbbe', ariaLabel: "nextYear", size: "xxs", icon: "chevronRight", onClick: this.goNextYear })), hAsync("span", { key: '14ab983354ded802bb715516872b0148acc3cd66', class: "sd-date-picker-calendar__divider", "aria-hidden": "true" }), hAsync("div", { key: 'f8b0754ff487c944cf95fcb2fd05c2ca596b3107', class: "sd-date-picker-calendar__nav-group sd-date-picker-calendar__nav-group-month" }, hAsync("sd-ghost-button", { key: '47d95d368b04f1ff81c416d93ba3bb9a5481f3cb', ariaLabel: "prevMonth", size: "xxs", icon: "chevronLeft", onClick: this.goPrevMonth }), hAsync("span", { key: 'baf40a29a0aacd3c868c0ca63035c09080f412af', class: "sd-date-picker-calendar__label sd-date-picker-calendar__label-month" }, this.currentMonth, "\uC6D4"), hAsync("sd-ghost-button", { key: '4b8f189022d7c61072f07b23c5576410183bc801', ariaLabel: "nextMonth", size: "xxs", icon: "chevronRight", onClick: this.goNextMonth }))), hAsync("div", { key: 'c6b4251396b957905e0462a62ca5b8475c375dd6', class: "sd-date-picker-calendar__week" }, WEEK_LABELS.map(label => (hAsync("span", { key: label, class: "sd-date-picker-calendar__week-cell" }, label)))), hAsync("div", { key: '76a1fe94ca8943f8cf0e7be30b8a9838a9cd22ef', class: "sd-date-picker-calendar__grid" }, this.cells.map(cell => {
|
|
8007
7906
|
const isSelected = cell.inCurrentMonth && !!this.value && this.value === cell.date;
|
|
8008
7907
|
const isToday = cell.inCurrentMonth && today === cell.date;
|
|
8009
7908
|
const isDisabled = cell.inCurrentMonth && this.isDisabled(cell.date);
|
|
@@ -8074,10 +7973,10 @@ class SdDatePickerTrigger {
|
|
|
8074
7973
|
? DATEPICKER_COLORS.icon.disabled
|
|
8075
7974
|
: DATEPICKER_COLORS.icon.default,
|
|
8076
7975
|
};
|
|
8077
|
-
return (hAsync("div", { key: '
|
|
7976
|
+
return (hAsync("div", { key: 'f541c11d4e7385993628e10f0eeb7a339f80e1f6', class: {
|
|
8078
7977
|
'sd-date-picker-trigger': true,
|
|
8079
7978
|
'sd-date-picker-trigger--disabled': this.disabled,
|
|
8080
|
-
}, style: cssVars, onClick: this.handleClick }, hAsync("sd-icon", { key: '
|
|
7979
|
+
}, style: cssVars, onClick: this.handleClick }, hAsync("sd-icon", { key: '19c51b2ae2dc354010f6727048fd7a64c17ed36e', name: "date", size: Number(sizeTokens.iconSize), color: "var(--trigger-icon-color)", class: "sd-date-picker-trigger__icon" }), hAsync("span", { key: '73a6dd7cd398202edabecd348a4856315e077088', class: "sd-date-picker-trigger__text" }, hasValue ? this.displayText : this.placeholder)));
|
|
8081
7980
|
}
|
|
8082
7981
|
static get style() { return sdDatePickerTriggerCss(); }
|
|
8083
7982
|
static get cmpMeta() { return {
|
|
@@ -8497,7 +8396,7 @@ class SdDateRangePickerCalendar {
|
|
|
8497
8396
|
'--range-panel-gap': `${RANGE_LAYOUT.panelGap}px`,
|
|
8498
8397
|
'--range-divider': RANGE_LAYOUT.divider,
|
|
8499
8398
|
};
|
|
8500
|
-
return (hAsync(Fragment, { key: '
|
|
8399
|
+
return (hAsync(Fragment, { key: 'acc32d9c349c4cee32bb923ce66d17122527b524' }, hAsync("div", { key: 'bd579429ae609c3ff21a542bf69c1dc9a907846a', class: "sd-date-range-picker-calendar", style: cssVars }, this.renderYearNav(), hAsync("div", { key: '8a46d922fcaa09bd7f778d00e77324d1710b92c7', class: "sd-date-range-picker-calendar__panels" }, this.renderPanel(this.currentYear, this.currentMonth, true), hAsync("span", { key: '8234838995f1e5d945f85169e702cb0b32018f36', class: "sd-date-range-picker-calendar__divider", "aria-hidden": "true" }), this.renderPanel(this.rightYear, this.rightMonth, false)))));
|
|
8501
8400
|
}
|
|
8502
8401
|
static get watchers() { return {
|
|
8503
8402
|
"value": [{
|
|
@@ -8852,7 +8751,7 @@ class SdDropdownButton extends BaseDropdownEvent {
|
|
|
8852
8751
|
}
|
|
8853
8752
|
render() {
|
|
8854
8753
|
const { config, preset } = this.resolvedConfig;
|
|
8855
|
-
return (hAsync("div", { key: '
|
|
8754
|
+
return (hAsync("div", { key: 'ce06d2b7e13cb234bb6e7393939d2ccd834801a5', class: "sd-dropdown-button" }, hAsync("button", { key: '4bd3e86eec90698188a834eb35ff922dee7d1855', type: "button", class: this.getTriggerClasses(preset, config.size, this.disabled, this.isOpen), disabled: this.disabled, "aria-haspopup": "menu", "aria-expanded": String(this.isOpen), onClick: this.toggleDropdown, ref: el => (this.triggerRef = el), style: {
|
|
8856
8755
|
'--sd-dropdown-button-bg': config.color,
|
|
8857
8756
|
'--sd-dropdown-button-bg-hover': PRESET_HOVER_BACKGROUNDS[preset],
|
|
8858
8757
|
'--sd-dropdown-button-border': PRESET_BORDER_COLORS[preset],
|
|
@@ -8862,10 +8761,10 @@ class SdDropdownButton extends BaseDropdownEvent {
|
|
|
8862
8761
|
'--sd-dropdown-button-disabled-bg': DROPDOWN_DISABLED_BACKGROUND,
|
|
8863
8762
|
'--sd-dropdown-button-disabled-content': DROPDOWN_DISABLED_TEXT,
|
|
8864
8763
|
'--sd-dropdown-button-disabled-border': DROPDOWN_DISABLED_BORDER,
|
|
8865
|
-
} }, hAsync("span", { key: '
|
|
8764
|
+
} }, hAsync("span", { key: '2baea4f0777ec766625d4ae1fb14739aa61ca114', class: "sd-dropdown-button__trigger-label" }, this.label), hAsync("span", { key: 'b37a94dd23d26a1444ddccc192b2a5ab2388bc64', class: "sd-dropdown-button__trigger-divider", "aria-hidden": "true" }), hAsync("span", { key: 'b903ff916c3ae1ab189cd08877a57940e45d8aeb', class: {
|
|
8866
8765
|
'sd-dropdown-button__trigger-icon': true,
|
|
8867
8766
|
'sd-dropdown-button__trigger-icon--open': this.isOpen,
|
|
8868
|
-
}, "aria-hidden": "true" }, hAsync("sd-icon", { key: '
|
|
8767
|
+
}, "aria-hidden": "true" }, hAsync("sd-icon", { key: '2eac1eabd2677decb0c1cfe4f518a7da9aca60ff', name: "chevronDown", size: DROPDOWN_CHEVRON_ICON_SIZE[config.size], color: "var(--sd-dropdown-button-current-content)" }))), this.renderDropdown(preset)));
|
|
8869
8768
|
}
|
|
8870
8769
|
static get watchers() { return {
|
|
8871
8770
|
"isOpen": [{
|
|
@@ -8965,14 +8864,11 @@ const FIELD_LABEL_SIZE_MAP = {
|
|
|
8965
8864
|
const sdFieldCss = () => `sd-field{display:inline-flex;flex-flow:column nowrap;height:fit-content;width:100%}sd-field .sd-field *:focus,sd-field .sd-field *:focus-visible,sd-field .sd-field *:focus-within{outline:none !important}sd-field .sd-field.sd-field--disabled{cursor:not-allowed}sd-field .sd-field.sd-field--disabled .sd-field__wrapper{cursor:not-allowed !important}sd-field .sd-field.sd-field--disabled .sd-field__wrapper .sd-field__label-inside{border-color:#CCCCCC;color:#888888;cursor:not-allowed !important}sd-field .sd-field.sd-field--disabled .sd-field__wrapper .sd-field__control{background-color:#E1E1E1;border-color:#CCCCCC;color:#888888;cursor:not-allowed !important}sd-field .sd-field--has-label .sd-field__wrapper .sd-field__label{display:flex;align-items:center;flex-shrink:0;width:var(--sd-field-label-width, auto);height:var(--sd-field-label-height);margin-right:var(--sd-field-label-margin-right)}sd-field .sd-field--has-label .sd-field__wrapper .sd-field__label__icon{margin-right:var(--sd-field-label-gap);flex-shrink:0}sd-field .sd-field--has-label .sd-field__wrapper .sd-field__label__text{font-size:var(--sd-field-label-font-size);line-height:var(--sd-field-label-line-height);font-weight:var(--sd-field-label-font-weight);color:var(--sd-system-color-field-text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}sd-field .sd-field--has-label .sd-field__wrapper .sd-field__label__tooltip{margin-left:var(--sd-field-label-gap);flex-shrink:0}sd-field .sd-field--has-addon .sd-field__control .sd-field__addon{display:flex;gap:var(--sd-field-addon-gap);align-items:center;justify-content:var(--sd-field-addon-justify, flex-start);white-space:nowrap;box-sizing:border-box;flex-shrink:0;width:var(--sd-field-addon-width, auto);padding:0 var(--sd-field-addon-padding-x);font-size:var(--sd-field-addon-font-size);line-height:var(--sd-field-addon-line-height);font-weight:var(--sd-field-addon-font-weight);background:var(--sd-field-addon-bg);border-right:var(--sd-field-addon-border-width) solid var(--sd-field-addon-border-color);border-radius:calc(var(--sd-field-control-radius) - 1px) 0 0 calc(var(--sd-field-control-radius) - 1px)}sd-field .sd-field__wrapper{width:100%;display:flex;align-items:flex-start;flex-flow:row nowrap;position:relative;color:var(--sd-system-color-field-text-default);-webkit-user-select:none;user-select:none}sd-field .sd-field__wrapper .sd-field__main{flex:1;min-width:0;display:flex;flex-direction:column}sd-field .sd-field__wrapper .sd-field__control{position:relative;height:var(--sd-field-wrapper-height);display:flex;min-width:0;border:1px solid var(--sd-system-color-field-border-default);border-radius:var(--sd-field-control-radius);background:var(--sd-system-color-field-bg-default)}sd-field .sd-field--error .sd-field__wrapper .sd-field__control:not(:hover){border:1px solid var(--sd-system-color-field-border-danger) !important}sd-field .sd-field.sd-field--pass .sd-field__wrapper .sd-field__control{border:1px solid var(--sd-system-color-field-border-success) !important}sd-field .sd-field:not(.sd-field--disabled) .sd-field__wrapper .sd-field__control:hover{border:1px solid var(--sd-system-color-field-border-focus) !important;box-shadow:0px 0px 4px 0px rgba(0, 113, 255, 0.4)}sd-field .sd-field.sd-field--focus .sd-field__wrapper .sd-field__control{border:1px solid var(--sd-system-color-field-border-focus) !important;box-shadow:0px 0px 4px 0px rgba(0, 113, 255, 0.4)}sd-field .sd-field .sd-field__error-message{color:var(--sd-textinput-textinput-text-error-message);font-size:var(--sd-textinput-textinput-error-message-typography-font-size);line-height:var(--sd-textinput-textinput-error-message-typography-line-height);margin-top:var(--sd-textinput-textinput-contents-gap)}sd-field .sd-field .sd-field__hint{color:var(--sd-textinput-textinput-text-hint);font-size:var(--sd-textinput-textinput-hint-typography-font-size);line-height:var(--sd-textinput-textinput-hint-typography-line-height);margin-top:var(--sd-textinput-textinput-contents-gap)}`;
|
|
8966
8865
|
|
|
8967
8866
|
const FORM_PARENT_TAGS = [
|
|
8968
|
-
'sd-select',
|
|
8969
|
-
'sd-select-multiple',
|
|
8970
|
-
'sd-select-multiple-group',
|
|
8971
8867
|
'sd-input',
|
|
8972
8868
|
'sd-barcode-input',
|
|
8973
8869
|
'sd-textarea',
|
|
8974
8870
|
'sd-number-input',
|
|
8975
|
-
'sd-select
|
|
8871
|
+
'sd-select',
|
|
8976
8872
|
'sd-file-picker',
|
|
8977
8873
|
'sd-date-picker',
|
|
8978
8874
|
'sd-date-range-picker',
|
|
@@ -9136,20 +9032,20 @@ class SdField {
|
|
|
9136
9032
|
: {}),
|
|
9137
9033
|
}
|
|
9138
9034
|
: {};
|
|
9139
|
-
return (hAsync("div", { key: '
|
|
9035
|
+
return (hAsync("div", { key: 'f7cec98818159adf5fd398bd15547ed1ec555092', class: {
|
|
9140
9036
|
'sd-field': true,
|
|
9141
9037
|
'sd-field--has-label': !!this.label,
|
|
9142
9038
|
'sd-field--has-addon': !!addon,
|
|
9143
9039
|
[this.fieldStatus]: !!this.fieldStatus,
|
|
9144
|
-
}, style: { ...sizeCssVars, ...labelCssVars, ...addonCssVars } }, hAsync("div", { key: '
|
|
9040
|
+
}, style: { ...sizeCssVars, ...labelCssVars, ...addonCssVars } }, hAsync("div", { key: '2d6ffefc9211137dc215686874060b1d5067031d', class: "sd-field__wrapper" }, this.renderLabel(this.label), hAsync("div", { key: '2163413b937af3c1874f41bc2581a0304b7d069a', class: "sd-field__main", style: this.width
|
|
9145
9041
|
? {
|
|
9146
9042
|
width: typeof this.width === 'number' ? `${this.width}px` : this.width,
|
|
9147
9043
|
flex: 'none',
|
|
9148
9044
|
}
|
|
9149
|
-
: {} }, hAsync("div", { key: '
|
|
9045
|
+
: {} }, hAsync("div", { key: '0dbb6cbe768bac1c64d72d37d270805e16936e24', class: {
|
|
9150
9046
|
'sd-field__control': true,
|
|
9151
9047
|
'sd-field__control--has-addon': !!addon,
|
|
9152
|
-
} }, addon && hAsync("div", { key: '
|
|
9048
|
+
} }, addon && hAsync("div", { key: '8b4bfbf6ad67084a0bc9c3ff6789936ad895e3c5', class: "sd-field__addon" }, addon), hAsync("slot", { key: '40596847f9bac957a5992364997f0bcd8fd6a704' })), this.errorMsg || this.errorMessage ? (hAsync("div", { class: "sd-field__error-message" }, this.errorMsg || this.errorMessage)) : (this.hint && hAsync("div", { class: "sd-field__hint" }, this.hint))))));
|
|
9153
9049
|
}
|
|
9154
9050
|
renderLabel(label) {
|
|
9155
9051
|
if (!label)
|
|
@@ -9295,7 +9191,7 @@ class SdFilePicker {
|
|
|
9295
9191
|
if (this.fileInputRef) {
|
|
9296
9192
|
this.fileInputRef.value = '';
|
|
9297
9193
|
}
|
|
9298
|
-
await this.formField?.
|
|
9194
|
+
await this.formField?.sdResetValidation();
|
|
9299
9195
|
}
|
|
9300
9196
|
async sdResetValidate() {
|
|
9301
9197
|
await this.formField?.sdResetValidation();
|
|
@@ -9628,7 +9524,7 @@ class SdFloatingPopover {
|
|
|
9628
9524
|
}
|
|
9629
9525
|
}
|
|
9630
9526
|
render() {
|
|
9631
|
-
return hAsync("slot", { key: '
|
|
9527
|
+
return hAsync("slot", { key: '2383aafb9b01881f06e4fc97c5903c19453b8b4c' });
|
|
9632
9528
|
}
|
|
9633
9529
|
static get style() { return sdFloatingPortalCss(); }
|
|
9634
9530
|
static get cmpMeta() { return {
|
|
@@ -9869,6 +9765,11 @@ class SdGhostButton {
|
|
|
9869
9765
|
disabled = false;
|
|
9870
9766
|
click;
|
|
9871
9767
|
hasWarnedMissingAriaLabel = false;
|
|
9768
|
+
componentWillLoad() {
|
|
9769
|
+
this.size ??= 'sm';
|
|
9770
|
+
this.intent ??= 'default';
|
|
9771
|
+
this.ariaLabel ??= '';
|
|
9772
|
+
}
|
|
9872
9773
|
handleClick = (event) => {
|
|
9873
9774
|
if (this.disabled) {
|
|
9874
9775
|
event.preventDefault();
|
|
@@ -9893,19 +9794,19 @@ class SdGhostButton {
|
|
|
9893
9794
|
render() {
|
|
9894
9795
|
const sizeConfig = GHOST_BUTTON_SIZES[this.size];
|
|
9895
9796
|
const contentColor = this.disabled
|
|
9896
|
-
? GHOST_BUTTON_DISABLED_COLORS[this.intent
|
|
9897
|
-
: GHOST_BUTTON_CONTENT_COLORS[this.intent
|
|
9797
|
+
? GHOST_BUTTON_DISABLED_COLORS[this.intent]
|
|
9798
|
+
: GHOST_BUTTON_CONTENT_COLORS[this.intent];
|
|
9898
9799
|
const accessibleName = this.ariaLabel.trim() || undefined;
|
|
9899
|
-
return (hAsync("button", { key: '
|
|
9800
|
+
return (hAsync("button", { key: '57793e0911fc49c62ab627bd7234caf9c0a04097', class: {
|
|
9900
9801
|
'sd-ghost-button': true,
|
|
9901
9802
|
'sd-ghost-button--disabled': this.disabled,
|
|
9902
9803
|
}, type: "button", disabled: this.disabled, "aria-label": accessibleName, style: {
|
|
9903
9804
|
'--sd-ghost-button-size': `${sizeConfig.size}px`,
|
|
9904
9805
|
'--sd-ghost-button-radius': `${GHOST_BUTTON_RADIUS[this.size]}px`,
|
|
9905
|
-
'--sd-ghost-button-hover-bg': GHOST_BUTTON_HOVER_BG_COLORS[this.intent
|
|
9806
|
+
'--sd-ghost-button-hover-bg': GHOST_BUTTON_HOVER_BG_COLORS[this.intent],
|
|
9906
9807
|
'--sd-ghost-button-hover-opacity': GHOST_BUTTON_HOVER_OPACITY,
|
|
9907
9808
|
'--sd-ghost-button-accent': GHOST_BUTTON_FOCUS_RING_COLOR,
|
|
9908
|
-
}, onClick: this.handleClick }, hAsync("sd-icon", { key: '
|
|
9809
|
+
}, onClick: this.handleClick }, hAsync("sd-icon", { key: 'cf81a34495eacad4052ad7bbd5cba837b905610b', name: this.icon, size: sizeConfig.icon, color: contentColor })));
|
|
9909
9810
|
}
|
|
9910
9811
|
static get style() { return sdGhostButtonCss(); }
|
|
9911
9812
|
static get cmpMeta() { return {
|
|
@@ -10816,12 +10717,12 @@ class SdInput {
|
|
|
10816
10717
|
'--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
|
|
10817
10718
|
'--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
|
|
10818
10719
|
};
|
|
10819
|
-
return (hAsync("sd-field", { key: '
|
|
10720
|
+
return (hAsync("sd-field", { key: 'ff139feaafdaa57e012dc559ab1a0db26dfd97b0', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, hAsync("label", { key: '188f24de316b14315fa0bdf312c58140e757cfa3', class: "sd-input__content" }, hAsync("slot", { key: '35d2213601e3c3508b7392096719d7841aebc6bb', name: "prefix" }), hAsync("input", { key: '0148de670febb2bc02a95a3c6c4c1a6cee523626', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : this.type, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, autocomplete: this.autocomplete || undefined, maxlength: this.maxlength, minlength: this.minlength, inputmode: this.inputmode, enterkeyhint: this.enterkeyhint, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), hAsync("slot", { key: '4a8bd55a4cfd25f482b1fcabb84f8ffffbbc8072', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && (hAsync("sd-ghost-button", { key: '5c11a19971dceba378a4ea77f3f40d7b3d928214', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
|
|
10820
10721
|
if (this.disabled)
|
|
10821
10722
|
return;
|
|
10822
10723
|
this.internalValue = '';
|
|
10823
10724
|
await this.formField?.sdValidate();
|
|
10824
|
-
} })), this.type === 'password' && (hAsync("sd-ghost-button", { key: '
|
|
10725
|
+
} })), this.type === 'password' && (hAsync("sd-ghost-button", { key: '92cb57b65e70a499c48e73f028e30715f1b1356c', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled, class: "sd-input__password-icon", onClick: () => {
|
|
10825
10726
|
if (this.disabled)
|
|
10826
10727
|
return;
|
|
10827
10728
|
this.passwordVisible = !this.passwordVisible;
|
|
@@ -10931,7 +10832,7 @@ class SdLinearProgress {
|
|
|
10931
10832
|
clipPath: `inset(0 ${100 - this.clampedValue}% 0 0)`,
|
|
10932
10833
|
};
|
|
10933
10834
|
const valueText = `${Math.round(this.clampedValue)}%`;
|
|
10934
|
-
return (hAsync(Host, { key: '
|
|
10835
|
+
return (hAsync(Host, { key: 'c7f2324ff98e1ec6e0d1d6c7a3328dd383a1abab', style: hostStyle }, hAsync("div", { key: 'cff100404519c4114c0dd1240715beafb91acf1f', class: 'sd-linear-progress__track' }, hAsync("div", { key: '1c7fdff123778a40cd0c3f3310141ac369205352', class: 'sd-linear-progress__fill', style: fillStyle }), !this.indeterminate && (hAsync("span", { key: 'ae0b515a9bb9d5561d603fa8e88c144603af8af5', class: 'sd-linear-progress__value sd-linear-progress__value--on-track' }, valueText)), !this.indeterminate && (hAsync("span", { key: '5d7cdf9daccd9729729bec7bc65456b5727d4738', class: 'sd-linear-progress__value sd-linear-progress__value--on-fill', style: valueOnFillStyle }, valueText))), this.label && hAsync("span", { key: 'd131eeb581e33f40878b47541f662aca269a6759', class: 'sd-linear-progress__label' }, this.label)));
|
|
10935
10836
|
}
|
|
10936
10837
|
static get style() { return sdLinearProgressCss(); }
|
|
10937
10838
|
static get cmpMeta() { return {
|
|
@@ -10965,10 +10866,10 @@ class SdLoadingContainer {
|
|
|
10965
10866
|
this.visible = false;
|
|
10966
10867
|
}
|
|
10967
10868
|
render() {
|
|
10968
|
-
return (hAsync("div", { key: '
|
|
10869
|
+
return (hAsync("div", { key: 'a83b33262d59ecba12b7db9ed6bfe9f1fea4a54a', class: {
|
|
10969
10870
|
'sd-loading-container': true,
|
|
10970
10871
|
'sd-loading-container--visible': this.visible,
|
|
10971
|
-
}, "aria-hidden": this.visible ? 'false' : 'true' }, hAsync("div", { key: '
|
|
10872
|
+
}, "aria-hidden": this.visible ? 'false' : 'true' }, hAsync("div", { key: '64631929afd47606df0d397747495d2a11d62932', class: "sd-loading-container__backdrop" }), hAsync("div", { key: '4a304e0fb66f720b57da1e4de03fa9aa5468d5d4', class: "sd-loading-container__content" }, hAsync("sd-circle-progress", { key: '3981cb8e994384279a812864037a8e9cec34cc35', indeterminate: true, type: "inverse" }), this.message && (hAsync("p", { key: '8adec0ef2424fa3ea30a58b27efa6344ada94070', class: "sd-loading-container__message" }, this.message)))));
|
|
10972
10873
|
}
|
|
10973
10874
|
static get style() { return sdLoadingContainerCss(); }
|
|
10974
10875
|
static get cmpMeta() { return {
|
|
@@ -11061,7 +10962,7 @@ class SdLoadingModal {
|
|
|
11061
10962
|
'--sd-loading-modal-width': this.toCssSize(this.width) ?? `${LOADING_MODAL_LAYOUT.minWidth}px`,
|
|
11062
10963
|
'--sd-loading-modal-height': this.toCssSize(this.height) ?? `${LOADING_MODAL_LAYOUT.minHeight}px`,
|
|
11063
10964
|
};
|
|
11064
|
-
return (hAsync(Host, { key: '
|
|
10965
|
+
return (hAsync(Host, { key: '4245588093d82ec791b4ba7260eb3a1314c0e7a8', style: hostStyle }, hAsync("div", { key: '4ad4c57bf68a5e33b453ed5ebb19f590f2ff8a9d', class: "sd-loading-modal" }, hAsync("div", { key: 'bd45817bad45b9cffc9917d5f6570cb7409e8703', class: "sd-loading-modal__content" }, this.state === 'loading' ? (hAsync("sd-circle-progress", { indeterminate: true })) : (hAsync("sd-icon", { class: "sd-loading-modal__icon", name: "warningOutline", size: LOADING_MODAL_LAYOUT.contentSize, color: LOADING_MODAL_COLORS.errorIcon }))), hAsync("div", { key: '16a09029e732058a4cdf0330e4afaf7322a88f76', class: "sd-loading-modal__message-wrapper" }, Array.isArray(this.resolvedMessage) ? (this.resolvedMessage.map(message => (hAsync("p", { class: "sd-loading-modal__message" }, message)))) : (hAsync("p", { class: "sd-loading-modal__message" }, this.resolvedMessage))), this.useButton && (hAsync("div", { key: 'cdf9a51d233efcc86fa2405960f2ed304a07127b', class: "sd-loading-modal__button" }, hAsync("sd-button-v2", { key: '36cd4b36d92fb725eb35a9d6bee7fd0c8fcf3395', name: LOADING_MODAL_BUTTON_PRESET, label: this.resolvedButtonLabel, onSdClick: this.handleClick }))))));
|
|
11065
10966
|
}
|
|
11066
10967
|
static get style() { return sdLoadingModalCss(); }
|
|
11067
10968
|
static get cmpMeta() { return {
|
|
@@ -11189,10 +11090,8 @@ class SdModalContainer {
|
|
|
11189
11090
|
}
|
|
11190
11091
|
get el() { return getElement(this); }
|
|
11191
11092
|
autoRemove = false;
|
|
11192
|
-
|
|
11193
|
-
|
|
11194
|
-
backdropVisible = false;
|
|
11195
|
-
layerRef;
|
|
11093
|
+
entries = [];
|
|
11094
|
+
layerRefs = new Map();
|
|
11196
11095
|
async open(options, modalRef) {
|
|
11197
11096
|
const id = `modal-${++modalIdCounter}`;
|
|
11198
11097
|
const modalEl = this.createConfirmModal(id, options);
|
|
@@ -11203,6 +11102,7 @@ class SdModalContainer {
|
|
|
11203
11102
|
modalRef,
|
|
11204
11103
|
persistent: !!options.persistent,
|
|
11205
11104
|
closing: false,
|
|
11105
|
+
backdropVisible: false,
|
|
11206
11106
|
});
|
|
11207
11107
|
return id;
|
|
11208
11108
|
}
|
|
@@ -11216,6 +11116,7 @@ class SdModalContainer {
|
|
|
11216
11116
|
modalRef,
|
|
11217
11117
|
persistent: !!options.persistent,
|
|
11218
11118
|
closing: false,
|
|
11119
|
+
backdropVisible: false,
|
|
11219
11120
|
});
|
|
11220
11121
|
return id;
|
|
11221
11122
|
}
|
|
@@ -11230,91 +11131,93 @@ class SdModalContainer {
|
|
|
11230
11131
|
modalRef,
|
|
11231
11132
|
persistent: !!options.persistent,
|
|
11232
11133
|
closing: false,
|
|
11134
|
+
backdropVisible: false,
|
|
11233
11135
|
});
|
|
11234
11136
|
return id;
|
|
11235
11137
|
}
|
|
11236
11138
|
componentDidRender() {
|
|
11237
|
-
if (!
|
|
11139
|
+
if (!Array.isArray(this.entries))
|
|
11238
11140
|
return;
|
|
11239
|
-
|
|
11240
|
-
|
|
11241
|
-
|
|
11242
|
-
|
|
11243
|
-
|
|
11244
|
-
|
|
11245
|
-
|
|
11246
|
-
|
|
11247
|
-
|
|
11248
|
-
|
|
11141
|
+
for (const entry of this.entries) {
|
|
11142
|
+
if (entry.closing || entry.modalEl.isConnected)
|
|
11143
|
+
continue;
|
|
11144
|
+
const layerRef = this.layerRefs.get(entry.id);
|
|
11145
|
+
if (!layerRef)
|
|
11146
|
+
continue;
|
|
11147
|
+
const { id, modalEl } = entry;
|
|
11148
|
+
layerRef.appendChild(modalEl);
|
|
11149
|
+
this.waitForModalReady(modalEl).then(() => {
|
|
11150
|
+
requestAnimationFrame(() => {
|
|
11151
|
+
const current = this.entries.find(e => e.id === id);
|
|
11152
|
+
if (!current || current.closing || !modalEl.isConnected)
|
|
11153
|
+
return;
|
|
11154
|
+
this.entries = this.entries.map(e => e.id === id ? { ...e, backdropVisible: true } : e);
|
|
11155
|
+
modalEl.classList.add('sd-modal-container__modal--visible');
|
|
11156
|
+
});
|
|
11249
11157
|
});
|
|
11250
|
-
}
|
|
11158
|
+
}
|
|
11251
11159
|
}
|
|
11252
11160
|
disconnectedCallback() {
|
|
11253
|
-
|
|
11254
|
-
|
|
11255
|
-
|
|
11256
|
-
unregisterModal(
|
|
11161
|
+
for (const entry of this.entries ?? []) {
|
|
11162
|
+
if (entry.dismissTimerId)
|
|
11163
|
+
clearTimeout(entry.dismissTimerId);
|
|
11164
|
+
unregisterModal(entry.id);
|
|
11165
|
+
}
|
|
11257
11166
|
}
|
|
11258
11167
|
async dismissById(id, reason) {
|
|
11259
|
-
|
|
11168
|
+
const entry = this.entries.find(e => e.id === id);
|
|
11169
|
+
if (!entry)
|
|
11260
11170
|
return;
|
|
11261
|
-
this.requestDismiss(reason);
|
|
11171
|
+
this.requestDismiss(id, reason);
|
|
11262
11172
|
}
|
|
11263
11173
|
async update(id, props) {
|
|
11264
|
-
|
|
11174
|
+
const entry = this.entries.find(e => e.id === id && !e.closing);
|
|
11175
|
+
if (!entry)
|
|
11265
11176
|
return;
|
|
11266
|
-
const tag =
|
|
11177
|
+
const tag = entry.modalEl.tagName.toLowerCase();
|
|
11267
11178
|
if (tag === 'sd-loading-modal') {
|
|
11268
|
-
this.applyLoadingProps(
|
|
11179
|
+
this.applyLoadingProps(entry.modalEl, props);
|
|
11269
11180
|
return;
|
|
11270
11181
|
}
|
|
11271
|
-
this.applyProps(
|
|
11182
|
+
this.applyProps(entry.modalEl, props);
|
|
11272
11183
|
}
|
|
11273
11184
|
mountEntry(entry) {
|
|
11274
|
-
|
|
11275
|
-
throw new Error('[sd-modal-container] This instance already manages an active modal.');
|
|
11276
|
-
}
|
|
11277
|
-
this.entry = entry;
|
|
11278
|
-
this.backdropVisible = false;
|
|
11279
|
-
this.isVisible = true;
|
|
11185
|
+
this.entries = [...(this.entries ?? []), entry];
|
|
11280
11186
|
registerModal({
|
|
11281
11187
|
id: entry.id,
|
|
11282
11188
|
persistent: entry.persistent,
|
|
11283
|
-
requestClose: () => this.dispatchClose(),
|
|
11189
|
+
requestClose: () => this.dispatchClose(entry.id),
|
|
11284
11190
|
shake: () => this.shakeModal(entry.modalEl),
|
|
11285
11191
|
setZIndex: zIndex => {
|
|
11286
11192
|
this.el.style.setProperty('--sd-modal-container-z-index', String(zIndex));
|
|
11287
11193
|
},
|
|
11288
11194
|
});
|
|
11289
11195
|
}
|
|
11290
|
-
attachModalEventListeners(
|
|
11291
|
-
modalEl.addEventListener('sdOk', () => this.requestDismiss('confirm'));
|
|
11292
|
-
modalEl.addEventListener('sdCancel', () => this.requestDismiss('cancel'));
|
|
11293
|
-
modalEl.addEventListener('sdClose', () => this.requestDismiss('close'));
|
|
11196
|
+
attachModalEventListeners(id, modalEl) {
|
|
11197
|
+
modalEl.addEventListener('sdOk', () => this.requestDismiss(id, 'confirm'));
|
|
11198
|
+
modalEl.addEventListener('sdCancel', () => this.requestDismiss(id, 'cancel'));
|
|
11199
|
+
modalEl.addEventListener('sdClose', () => this.requestDismiss(id, 'close'));
|
|
11294
11200
|
}
|
|
11295
|
-
attachLoadingModalEventListeners(
|
|
11201
|
+
attachLoadingModalEventListeners(id, modalEl) {
|
|
11296
11202
|
modalEl.addEventListener('sdClick', () => {
|
|
11297
|
-
this.
|
|
11203
|
+
const entry = this.entries.find(e => e.id === id);
|
|
11204
|
+
entry?.modalRef._triggerClick?.();
|
|
11298
11205
|
});
|
|
11299
11206
|
}
|
|
11300
|
-
dispatchClose() {
|
|
11301
|
-
this.
|
|
11207
|
+
dispatchClose(id) {
|
|
11208
|
+
const entry = this.entries.find(e => e.id === id);
|
|
11209
|
+
entry?.modalEl.dispatchEvent(new CustomEvent('sdClose'));
|
|
11302
11210
|
}
|
|
11303
|
-
requestDismiss(reason) {
|
|
11304
|
-
const currentEntry = this.
|
|
11211
|
+
requestDismiss(id, reason) {
|
|
11212
|
+
const currentEntry = this.entries.find(e => e.id === id);
|
|
11305
11213
|
if (!currentEntry || currentEntry.closing)
|
|
11306
11214
|
return;
|
|
11307
11215
|
currentEntry.modalEl.classList.remove('sd-modal-container__modal--visible');
|
|
11308
11216
|
const dismissTimerId = setTimeout(() => {
|
|
11309
|
-
this.finalizeDismiss(
|
|
11217
|
+
this.finalizeDismiss(id);
|
|
11310
11218
|
}, ANIMATION_DURATION);
|
|
11311
|
-
setModalInteractive(
|
|
11312
|
-
this.
|
|
11313
|
-
...currentEntry,
|
|
11314
|
-
closing: true,
|
|
11315
|
-
dismissTimerId,
|
|
11316
|
-
};
|
|
11317
|
-
this.backdropVisible = false;
|
|
11219
|
+
setModalInteractive(id, false);
|
|
11220
|
+
this.entries = (this.entries ?? []).map(e => e.id === id ? { ...e, closing: true, dismissTimerId, backdropVisible: false } : e);
|
|
11318
11221
|
if (reason === 'confirm')
|
|
11319
11222
|
currentEntry.modalRef._triggerOk();
|
|
11320
11223
|
else if (reason === 'cancel')
|
|
@@ -11323,18 +11226,17 @@ class SdModalContainer {
|
|
|
11323
11226
|
currentEntry.modalRef._triggerClose();
|
|
11324
11227
|
}
|
|
11325
11228
|
finalizeDismiss(id) {
|
|
11326
|
-
const currentEntry = this.
|
|
11327
|
-
if (!currentEntry
|
|
11229
|
+
const currentEntry = this.entries.find(e => e.id === id);
|
|
11230
|
+
if (!currentEntry)
|
|
11328
11231
|
return;
|
|
11329
11232
|
if (currentEntry.dismissTimerId)
|
|
11330
11233
|
clearTimeout(currentEntry.dismissTimerId);
|
|
11331
11234
|
currentEntry.modalEl.remove();
|
|
11332
11235
|
unregisterModal(id);
|
|
11333
11236
|
currentEntry.modalRef._triggerDismissed();
|
|
11334
|
-
this.
|
|
11335
|
-
this.
|
|
11336
|
-
this.
|
|
11337
|
-
if (this.autoRemove) {
|
|
11237
|
+
this.layerRefs.delete(id);
|
|
11238
|
+
this.entries = (this.entries ?? []).filter(e => e.id !== id);
|
|
11239
|
+
if (this.autoRemove && this.entries.length === 0) {
|
|
11338
11240
|
this.el.remove();
|
|
11339
11241
|
}
|
|
11340
11242
|
}
|
|
@@ -11355,8 +11257,14 @@ class SdModalContainer {
|
|
|
11355
11257
|
applyLoadingProps(el, options) {
|
|
11356
11258
|
if (this.hasOwnProp(options, 'state'))
|
|
11357
11259
|
this.setAttr(el, 'state', options.state);
|
|
11358
|
-
if (this.hasOwnProp(options, 'message'))
|
|
11359
|
-
|
|
11260
|
+
if (this.hasOwnProp(options, 'message')) {
|
|
11261
|
+
if (Array.isArray(options.message)) {
|
|
11262
|
+
el.message = options.message;
|
|
11263
|
+
}
|
|
11264
|
+
else {
|
|
11265
|
+
this.setAttr(el, 'message', options.message);
|
|
11266
|
+
}
|
|
11267
|
+
}
|
|
11360
11268
|
if (this.hasOwnProp(options, 'useButton')) {
|
|
11361
11269
|
if (options.useButton)
|
|
11362
11270
|
el.setAttribute('use-button', '');
|
|
@@ -11402,11 +11310,11 @@ class SdModalContainer {
|
|
|
11402
11310
|
if (this.hasOwnProp(options, 'tagContents'))
|
|
11403
11311
|
el.tagContents = options.tagContents;
|
|
11404
11312
|
}
|
|
11405
|
-
handleBackdropClick
|
|
11406
|
-
if (!
|
|
11313
|
+
handleBackdropClick(id) {
|
|
11314
|
+
if (!isTopInteractiveModal(id))
|
|
11407
11315
|
return;
|
|
11408
|
-
requestCloseForModal(
|
|
11409
|
-
}
|
|
11316
|
+
requestCloseForModal(id);
|
|
11317
|
+
}
|
|
11410
11318
|
shakeModal(modalEl) {
|
|
11411
11319
|
const cls = 'sd-modal-container__modal--shake';
|
|
11412
11320
|
modalEl.classList.remove(cls);
|
|
@@ -11435,14 +11343,15 @@ class SdModalContainer {
|
|
|
11435
11343
|
el.setAttribute(name, value);
|
|
11436
11344
|
}
|
|
11437
11345
|
render() {
|
|
11438
|
-
if (!this.
|
|
11346
|
+
if (!this.entries?.length)
|
|
11439
11347
|
return null;
|
|
11440
|
-
return (hAsync("div", { class: "sd-modal-container" }, hAsync("div", { class: "sd-modal-container__layer", "data-modal-id":
|
|
11441
|
-
|
|
11348
|
+
return (hAsync("div", { class: "sd-modal-container" }, this.entries.map((entry, index) => (hAsync("div", { key: entry.id, class: "sd-modal-container__layer", style: { zIndex: String(index + 1) }, "data-modal-id": entry.id, ref: el => {
|
|
11349
|
+
if (el)
|
|
11350
|
+
this.layerRefs.set(entry.id, el);
|
|
11442
11351
|
} }, hAsync("div", { class: {
|
|
11443
11352
|
'sd-modal-container__backdrop': true,
|
|
11444
|
-
'sd-modal-container__backdrop--visible':
|
|
11445
|
-
}, onClick: this.handleBackdropClick }))));
|
|
11353
|
+
'sd-modal-container__backdrop--visible': entry.backdropVisible,
|
|
11354
|
+
}, onClick: () => this.handleBackdropClick(entry.id) }))))));
|
|
11446
11355
|
}
|
|
11447
11356
|
static get style() { return sdModalContainerCss(); }
|
|
11448
11357
|
static get cmpMeta() { return {
|
|
@@ -11450,9 +11359,7 @@ class SdModalContainer {
|
|
|
11450
11359
|
"$tagName$": "sd-modal-container",
|
|
11451
11360
|
"$members$": {
|
|
11452
11361
|
"autoRemove": [4, "auto-remove"],
|
|
11453
|
-
"
|
|
11454
|
-
"isVisible": [32],
|
|
11455
|
-
"backdropVisible": [32],
|
|
11362
|
+
"entries": [32],
|
|
11456
11363
|
"open": [64],
|
|
11457
11364
|
"openLoading": [64],
|
|
11458
11365
|
"createCustom": [64],
|
|
@@ -11848,12 +11755,12 @@ class SdNumberInput {
|
|
|
11848
11755
|
'--sd-textinput-input-hint-typography-line-height': `${NUMBER_INPUT_HINT.typography.lineHeight}px`,
|
|
11849
11756
|
'--sd-textinput-input-contents-gap': `${NUMBER_INPUT_CONTENTS_GAP}px`,
|
|
11850
11757
|
};
|
|
11851
|
-
return (hAsync("sd-field", { key: '
|
|
11758
|
+
return (hAsync("sd-field", { key: '7f4012ec048ab69f3c6b241c7fc103fd798572ca', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, hAsync("div", { key: '975c0800b1fd6e4ab3502fc966db8917fe60bb3e', class: "sd-number-input__content" }, this.useButton && (hAsync("button", { key: 'f2a630109b883740362dd2946ceeeaa93bbfeb36', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--decrement", disabled: this.isDecrementDisabled(), onClick: this.handleDecrement, tabindex: -1 }, hAsync("sd-icon", { key: 'dcd539c5035b1363edacadf7ed9c1096ef24714a', name: "minus", size: iconSize, color: this.isDecrementDisabled()
|
|
11852
11759
|
? NUMBER_INPUT_STEPPER.icon.disabled
|
|
11853
|
-
: NUMBER_INPUT_STEPPER.icon.default }))), this.inputPrefix && (hAsync("span", { key: '
|
|
11760
|
+
: NUMBER_INPUT_STEPPER.icon.default }))), this.inputPrefix && (hAsync("span", { key: '5acf113c5e60dd5f77fb1206a60d4b5ce14e2b7f', class: "sd-number-input__prefix" }, this.inputPrefix)), hAsync("input", { key: '5dd0f9ba9643fce07de811b2a93c8763a3d84b2c', name: this.name, ref: el => (this.nativeEl = el), class: `sd-number-input__native ${this.inputClass}`, type: "text", inputMode: "numeric", value: this.displayValue, placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, style: {
|
|
11854
11761
|
textAlign: this.useButton ? 'center' : 'right',
|
|
11855
11762
|
...this.inputStyle,
|
|
11856
|
-
} }), this.inputSuffix && (hAsync("span", { key: '
|
|
11763
|
+
} }), this.inputSuffix && (hAsync("span", { key: 'aa7e4dbb29d7e8de4e94f0411f2f4b622411a60a', class: "sd-number-input__suffix" }, this.inputSuffix)), this.useButton && (hAsync("button", { key: '40deeadfcfe87cb61f09ee2959b6afb5757ff56b', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--increment", disabled: this.isIncrementDisabled(), onClick: this.handleIncrement, tabindex: -1 }, hAsync("sd-icon", { key: 'b8ffcbbf663bacb7249e696d3eabf8b9ac832ddc', name: "add", size: iconSize, color: this.isIncrementDisabled()
|
|
11857
11764
|
? NUMBER_INPUT_STEPPER.icon.disabled
|
|
11858
11765
|
: NUMBER_INPUT_STEPPER.icon.default }))))));
|
|
11859
11766
|
}
|
|
@@ -12060,13 +11967,13 @@ class SdPagination {
|
|
|
12060
11967
|
'--sd-pagination-bg-selected': PAGINATION_COLORS.bgSelected,
|
|
12061
11968
|
'--sd-pagination-item-width': `${this.buttonWidth}px`,
|
|
12062
11969
|
};
|
|
12063
|
-
return (hAsync("div", { key: '
|
|
11970
|
+
return (hAsync("div", { key: 'e648886fbec4723b7be767d9e1bfc04004cca234', class: {
|
|
12064
11971
|
'sd-pagination': true,
|
|
12065
11972
|
'sd-pagination--simple': this.simple,
|
|
12066
|
-
}, style: cssVars }, hAsync("div", { key: '
|
|
11973
|
+
}, style: cssVars }, hAsync("div", { key: '43ff8b8f6682c4d2b70c5085a6d3199de1d01596', class: "sd-pagination__group sd-pagination__group--prev" }, this.renderPrevButtons()), this.simple ? (hAsync("div", { class: "sd-pagination__info" }, hAsync("span", { class: "sd-pagination__current" }, this.currentPage), hAsync("span", { class: "sd-pagination__divider" }, "/"), hAsync("span", { class: "sd-pagination__last" }, this.lastPage))) : (hAsync("div", { class: "sd-pagination__numbers" }, this.pageNumbers.map(n => (hAsync("button", { type: "button", "aria-current": this.currentPage === n ? 'page' : undefined, class: {
|
|
12067
11974
|
'sd-pagination__item': true,
|
|
12068
11975
|
'sd-pagination__item--selected': this.currentPage === n,
|
|
12069
|
-
}, onClick: () => this.handlePageChange(n) }, n))))), hAsync("div", { key: '
|
|
11976
|
+
}, onClick: () => this.handlePageChange(n) }, n))))), hAsync("div", { key: '1975d14028485438a728b23d717abfcde8722fcf', class: "sd-pagination__group sd-pagination__group--next" }, this.renderNextButtons())));
|
|
12070
11977
|
}
|
|
12071
11978
|
static get style() { return sdPaginationCss(); }
|
|
12072
11979
|
static get cmpMeta() { return {
|
|
@@ -12402,7 +12309,7 @@ class SdPortal {
|
|
|
12402
12309
|
this.close.emit();
|
|
12403
12310
|
}
|
|
12404
12311
|
render() {
|
|
12405
|
-
return hAsync("slot", { key: '
|
|
12312
|
+
return hAsync("slot", { key: '28858d6833d8ff7f86295f7e445d51ffc84db99a' });
|
|
12406
12313
|
}
|
|
12407
12314
|
static get watchers() { return {
|
|
12408
12315
|
"open": [{
|
|
@@ -12426,79 +12333,6 @@ class SdPortal {
|
|
|
12426
12333
|
}; }
|
|
12427
12334
|
}
|
|
12428
12335
|
|
|
12429
|
-
const sdProgressCss = () => `sd-progress{display:block}sd-progress .sd-progress__bar{position:relative;width:100%;height:20px;overflow:hidden;border-radius:4px;background-color:#EEEEEE;text-align:center}sd-progress .sd-progress__bar__percent{width:var(--progress-percentage);height:100%;border-radius:4px;background-color:var(--progress-color, #0075FF);transition:all 0.5s}sd-progress .sd-progress__bar__percent.proceed{border-top-right-radius:50%}sd-progress .sd-progress__bar__indicator{position:absolute;left:0;top:0;height:20px;width:100%;background-color:#EEEEEE;font-size:12px;font-weight:700;line-height:20px;z-index:1}sd-progress .sd-progress__bar__indicator--left{color:var(--progress-color, #0075FF);clip-path:inset(0 0 0 var(--progress-percentage))}sd-progress .sd-progress__bar__indicator--right{color:white;background-color:var(--progress-color, #0075FF);clip-path:inset(0 calc(100% - var(--progress-percentage)) 0 0)}sd-progress .sd-progress__spinner{display:flex;flex-direction:column;align-items:center;justify-content:center}sd-progress .sd-progress__spinner svg{transform:rotate(-90deg)}sd-progress .sd-progress__spinner__label{margin-top:8px;font-size:16px;color:var(--progress-color, #0075FF)}sd-progress .sd-progress__label{margin-top:4px;font-size:12px;color:#222222;text-align:center}`;
|
|
12430
|
-
|
|
12431
|
-
class SdProgress {
|
|
12432
|
-
constructor(hostRef) {
|
|
12433
|
-
registerInstance(this, hostRef);
|
|
12434
|
-
}
|
|
12435
|
-
type = 'bar';
|
|
12436
|
-
error = false;
|
|
12437
|
-
percentage = 0;
|
|
12438
|
-
size = 80;
|
|
12439
|
-
strokeWidth = 12;
|
|
12440
|
-
label;
|
|
12441
|
-
statusColor = {
|
|
12442
|
-
default: '#aaaaaa',
|
|
12443
|
-
progress: '#0075ff',
|
|
12444
|
-
complete: '#12B553',
|
|
12445
|
-
error: '#FB4444',
|
|
12446
|
-
};
|
|
12447
|
-
get progressPercentage() {
|
|
12448
|
-
if (this.error)
|
|
12449
|
-
return 100;
|
|
12450
|
-
return this.percentage;
|
|
12451
|
-
}
|
|
12452
|
-
get progressStatus() {
|
|
12453
|
-
if (this.error)
|
|
12454
|
-
return 'error';
|
|
12455
|
-
switch (this.percentage) {
|
|
12456
|
-
case 100:
|
|
12457
|
-
return 'complete';
|
|
12458
|
-
case 0:
|
|
12459
|
-
return 'default';
|
|
12460
|
-
default:
|
|
12461
|
-
return 'progress';
|
|
12462
|
-
}
|
|
12463
|
-
}
|
|
12464
|
-
get progressColor() {
|
|
12465
|
-
return this.statusColor[this.progressStatus];
|
|
12466
|
-
}
|
|
12467
|
-
render() {
|
|
12468
|
-
return (hAsync("div", { key: '34c1ecf23c120f53595529004ed3d6818896e816', style: {
|
|
12469
|
-
'--progress-color': this.progressColor,
|
|
12470
|
-
'--progress-percentage': `${this.progressPercentage}%`,
|
|
12471
|
-
} }, this.type === 'bar' ? this.renderBarProgress() : this.renderSpinnerProgress(), this.label && hAsync("div", { key: '29461b9428416262c10b1917eaee4e0091d290dc', class: "sd-progress__label" }, this.label)));
|
|
12472
|
-
}
|
|
12473
|
-
renderBarProgress() {
|
|
12474
|
-
return (hAsync("div", { class: `sd-progress__bar sd-progress__bar--${this.progressStatus}` }, hAsync("div", { class: ['sd-progress__bar__percent', this.progressPercentage < 100 ? 'proceed' : ''].join(' ') }), hAsync("div", { class: "sd-progress__bar__indicator sd-progress__bar__indicator--left" }, this.progressPercentage, "%"), hAsync("div", { class: "sd-progress__bar__indicator sd-progress__bar__indicator--right" }, this.progressPercentage, "%")));
|
|
12475
|
-
}
|
|
12476
|
-
renderSpinnerProgress() {
|
|
12477
|
-
const radius = (this.size - this.strokeWidth) / 2; // 원의 반지름
|
|
12478
|
-
const circumference = 2 * Math.PI * radius; // 원의 둘레
|
|
12479
|
-
const offset = circumference - (this.progressPercentage / 100) * circumference; // 진행률에 따른 offset
|
|
12480
|
-
const progressBgSize = `${this.size}px`;
|
|
12481
|
-
const progressSize = `${this.size / 2}px`;
|
|
12482
|
-
return (hAsync("div", { class: `sd-progress__spinner sd-progress__spinner--${this.progressStatus}` }, hAsync("svg", { width: progressBgSize, height: progressBgSize }, hAsync("circle", { cx: progressSize, cy: progressSize, r: radius, stroke: "#EEEEEE", "stroke-width": this.strokeWidth, fill: "transparent" }), hAsync("circle", { cx: progressSize, cy: progressSize, r: radius, stroke: this.progressColor, "stroke-width": this.strokeWidth, fill: "transparent", "stroke-dasharray": circumference, "stroke-dashoffset": offset, "stroke-linecap": "round", class: "transition-all duration-500" })), hAsync("strong", { class: "sd-progress__spinner__label" }, this.progressPercentage, " %")));
|
|
12483
|
-
}
|
|
12484
|
-
static get style() { return sdProgressCss(); }
|
|
12485
|
-
static get cmpMeta() { return {
|
|
12486
|
-
"$flags$": 512,
|
|
12487
|
-
"$tagName$": "sd-progress",
|
|
12488
|
-
"$members$": {
|
|
12489
|
-
"type": [1],
|
|
12490
|
-
"error": [4],
|
|
12491
|
-
"percentage": [2],
|
|
12492
|
-
"size": [2],
|
|
12493
|
-
"strokeWidth": [2, "stroke-width"],
|
|
12494
|
-
"label": [1]
|
|
12495
|
-
},
|
|
12496
|
-
"$listeners$": undefined,
|
|
12497
|
-
"$lazyBundleId$": "-",
|
|
12498
|
-
"$attrsToReflect$": []
|
|
12499
|
-
}; }
|
|
12500
|
-
}
|
|
12501
|
-
|
|
12502
12336
|
const radio = {
|
|
12503
12337
|
size: "16",
|
|
12504
12338
|
borderWidth: "1",
|
|
@@ -12746,6 +12580,11 @@ class SdRadioButton {
|
|
|
12746
12580
|
disabled = false;
|
|
12747
12581
|
name;
|
|
12748
12582
|
change;
|
|
12583
|
+
componentWillLoad() {
|
|
12584
|
+
this.size ??= 'sm';
|
|
12585
|
+
this.options ??= [];
|
|
12586
|
+
this.disabled ??= false;
|
|
12587
|
+
}
|
|
12749
12588
|
handleRadioChange = (optionValue, optionDisabled) => {
|
|
12750
12589
|
if (this.disabled || optionDisabled)
|
|
12751
12590
|
return;
|
|
@@ -12806,7 +12645,7 @@ class SdRadioButton {
|
|
|
12806
12645
|
'--sd-radio-button-content-select': RADIO_BUTTON_COLORS.content.select,
|
|
12807
12646
|
'--sd-radio-button-content-disabled': RADIO_BUTTON_COLORS.content.disabled,
|
|
12808
12647
|
};
|
|
12809
|
-
return (hAsync("div", { key: '
|
|
12648
|
+
return (hAsync("div", { key: 'fbc0246d9cf615956121295e29bf8c702ee73edc', class: this.getGroupClasses(), style: cssVars, role: "radiogroup", "aria-disabled": this.disabled.toString() }, this.options.map(option => {
|
|
12810
12649
|
const isSelected = this.isOptionSelected(option);
|
|
12811
12650
|
const isDisabled = this.isOptionDisabled(option);
|
|
12812
12651
|
return (hAsync("label", { key: `radio-${option.value}`, class: this.getButtonClasses(option), "aria-label": option.label || 'radio option', "data-label": option.label }, hAsync("input", { type: "radio", name: this.groupName, value: option.value.toString(), checked: isSelected, disabled: isDisabled, onInput: () => this.handleRadioChange(option.value, option.disabled) }), option.label && hAsync("span", { class: "sd-radio-button__label" }, option.label)));
|
|
@@ -12884,1873 +12723,158 @@ class SdRadioGroup {
|
|
|
12884
12723
|
}; }
|
|
12885
12724
|
}
|
|
12886
12725
|
|
|
12887
|
-
|
|
12888
|
-
isSearchable;
|
|
12889
|
-
filteredOptions;
|
|
12890
|
-
constructor(isSearchable, filteredOptions) {
|
|
12891
|
-
this.isSearchable = isSearchable;
|
|
12892
|
-
this.filteredOptions = filteredOptions;
|
|
12893
|
-
}
|
|
12894
|
-
getNavigationBounds() {
|
|
12895
|
-
return {
|
|
12896
|
-
minIndex: this.isSearchable ? -1 : 0,
|
|
12897
|
-
maxIndex: this.filteredOptions.length - 1,
|
|
12898
|
-
};
|
|
12899
|
-
}
|
|
12900
|
-
getNextIndex(currentIndex, direction) {
|
|
12901
|
-
const { minIndex, maxIndex } = this.getNavigationBounds();
|
|
12902
|
-
if (direction === 'ArrowUp') {
|
|
12903
|
-
return currentIndex > minIndex ? currentIndex - 1 : maxIndex;
|
|
12904
|
-
}
|
|
12905
|
-
else {
|
|
12906
|
-
return currentIndex < maxIndex ? currentIndex + 1 : minIndex;
|
|
12907
|
-
}
|
|
12908
|
-
}
|
|
12909
|
-
}
|
|
12910
|
-
|
|
12911
|
-
const sdSelectCss = () => `sd-select{display:inline-flex;flex-flow:column nowrap;height:fit-content}sd-select *:focus,sd-select *:focus-visible,sd-select *:focus-within{outline:none !important}sd-select .sd-select{width:100%}sd-select .sd-select .sd-select__trigger{padding:4px 28px 4px 12px;display:flex;width:100%;height:100%;align-items:center;cursor:pointer}.sd-field--disabled sd-select .sd-select .sd-select__trigger{cursor:not-allowed}sd-select .sd-select .sd-select__trigger .sd-select__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:20px;font-size:12px;font-weight:400;text-align:left}sd-select .sd-select .sd-select__trigger .sd-select__clear{margin:0 4px;width:8px;height:8px;background-color:transparent;outline:none;border:none}sd-select .sd-select .sd-select__arrow{position:absolute;top:8px;right:8px;width:12px;height:12px;color:#888888;transition:transform 0.3s ease;margin-left:8px}sd-select .sd-select .sd-select__arrow--open{transform:rotate(180deg)}`;
|
|
12726
|
+
const sdSelectCss = () => `sd-select{display:inline-flex}sd-select sd-portal{display:none}sd-select .sd-select{position:relative;width:100%;height:100%}`;
|
|
12912
12727
|
|
|
12913
|
-
|
|
12914
|
-
* @deprecated sd-select-v2를 사용하세요.
|
|
12915
|
-
*/
|
|
12916
|
-
class SdSelect extends BaseDropdownEvent {
|
|
12728
|
+
class SdSelect {
|
|
12917
12729
|
constructor(hostRef) {
|
|
12918
|
-
super();
|
|
12919
12730
|
registerInstance(this, hostRef);
|
|
12920
12731
|
this.update = createEvent(this, "sdUpdate", 7);
|
|
12921
12732
|
this.dropDownShow = createEvent(this, "sdDropDownShow", 7);
|
|
12922
12733
|
}
|
|
12734
|
+
static VIEWPORT_PADDING = 20;
|
|
12735
|
+
static PORTAL_OFFSET_Y = 4;
|
|
12736
|
+
static CLOSE_ANIMATION_DURATION = 150;
|
|
12923
12737
|
get el() { return getElement(this); }
|
|
12924
|
-
|
|
12738
|
+
type = 'default';
|
|
12925
12739
|
value = null;
|
|
12926
12740
|
options = [];
|
|
12927
12741
|
placeholder = '선택';
|
|
12928
|
-
|
|
12929
|
-
width = '200px';
|
|
12742
|
+
maxDropdownWidth = '640px';
|
|
12930
12743
|
dropdownHeight = '260px';
|
|
12931
|
-
autoFocus = false;
|
|
12932
12744
|
disabled = false;
|
|
12933
|
-
clearable = false;
|
|
12934
|
-
searchable = false;
|
|
12935
|
-
// props - label
|
|
12936
12745
|
label = '';
|
|
12937
12746
|
labelWidth = '';
|
|
12938
12747
|
addonLabel = '';
|
|
12939
12748
|
addonAlign = 'start';
|
|
12749
|
+
error = false;
|
|
12750
|
+
hint = '';
|
|
12751
|
+
errorMessage = '';
|
|
12752
|
+
rules = [];
|
|
12940
12753
|
icon = undefined;
|
|
12941
12754
|
labelTooltip = '';
|
|
12942
12755
|
labelTooltipProps = null;
|
|
12943
|
-
|
|
12944
|
-
|
|
12945
|
-
|
|
12946
|
-
|
|
12947
|
-
|
|
12948
|
-
// states
|
|
12756
|
+
emitValue = false;
|
|
12757
|
+
width = '';
|
|
12758
|
+
useSearch = false;
|
|
12759
|
+
allSelectedLabel = '전체';
|
|
12760
|
+
useSelectAll = false;
|
|
12949
12761
|
isOpen = false;
|
|
12950
|
-
|
|
12951
|
-
|
|
12952
|
-
|
|
12762
|
+
isAnimatingOut = false;
|
|
12763
|
+
triggerWidth = '200px';
|
|
12764
|
+
resolvedDropdownHeight = '260px';
|
|
12765
|
+
resolvedMaxDropdownWidth = '640px';
|
|
12766
|
+
focused = false;
|
|
12767
|
+
hovered = false;
|
|
12953
12768
|
update;
|
|
12954
12769
|
dropDownShow;
|
|
12955
|
-
|
|
12956
|
-
|
|
12957
|
-
|
|
12958
|
-
|
|
12959
|
-
|
|
12960
|
-
name = nanoid$1();
|
|
12770
|
+
async sdFocus() {
|
|
12771
|
+
if (this.disabled)
|
|
12772
|
+
return;
|
|
12773
|
+
await this.triggerComponentRef?.sdFocus();
|
|
12774
|
+
}
|
|
12961
12775
|
async sdOpen() {
|
|
12776
|
+
// sdFocus 직후 호출 시 트리거 ref/레이아웃이 안정될 때까지 한 틱 대기
|
|
12777
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
12778
|
+
if (this.disabled || this.isOpen)
|
|
12779
|
+
return;
|
|
12780
|
+
this.prepareDropdownGeometry();
|
|
12781
|
+
if (this.closeAnimationTimer)
|
|
12782
|
+
clearTimeout(this.closeAnimationTimer);
|
|
12783
|
+
this.isAnimatingOut = false;
|
|
12962
12784
|
this.isOpen = true;
|
|
12963
12785
|
}
|
|
12964
|
-
|
|
12965
|
-
|
|
12966
|
-
|
|
12967
|
-
|
|
12968
|
-
|
|
12969
|
-
|
|
12970
|
-
|
|
12971
|
-
this.
|
|
12786
|
+
triggerRef;
|
|
12787
|
+
triggerComponentRef;
|
|
12788
|
+
closeAnimationTimer;
|
|
12789
|
+
name = nanoid$1();
|
|
12790
|
+
triggerHasFocus = false;
|
|
12791
|
+
watchIsOpen(newValue) {
|
|
12792
|
+
this.syncFocusedState(newValue);
|
|
12793
|
+
this.dropDownShow.emit({ isOpen: newValue });
|
|
12972
12794
|
}
|
|
12973
|
-
|
|
12974
|
-
this.
|
|
12795
|
+
get isMulti() {
|
|
12796
|
+
return this.type === 'multi' || this.type === 'multi_depth';
|
|
12975
12797
|
}
|
|
12976
|
-
|
|
12977
|
-
|
|
12978
|
-
|
|
12979
|
-
|
|
12980
|
-
|
|
12981
|
-
|
|
12798
|
+
get displayText() {
|
|
12799
|
+
if (this.isMulti) {
|
|
12800
|
+
if (!Array.isArray(this.value) || this.value.length === 0)
|
|
12801
|
+
return '';
|
|
12802
|
+
const nonDisabledLeaves = this.getNonDisabledLeaves(this.options);
|
|
12803
|
+
const selected = this.getSelectedOptions();
|
|
12804
|
+
const allSelected = nonDisabledLeaves.length > 0 &&
|
|
12805
|
+
nonDisabledLeaves.every(leaf => selected.some(s => s.value === leaf.value));
|
|
12806
|
+
if (allSelected)
|
|
12807
|
+
return this.allSelectedLabel ?? '전체';
|
|
12808
|
+
const flat = this.flattenOptions(this.options);
|
|
12809
|
+
return this.value
|
|
12810
|
+
.map(item => {
|
|
12811
|
+
if (item != null && typeof item === 'object') {
|
|
12812
|
+
const opt = item;
|
|
12813
|
+
return opt.label ?? flat.find(o => o.value === opt.value)?.label ?? '';
|
|
12814
|
+
}
|
|
12815
|
+
return flat.find(o => o.value === item)?.label ?? '';
|
|
12816
|
+
})
|
|
12817
|
+
.filter(Boolean)
|
|
12818
|
+
.join(', ');
|
|
12982
12819
|
}
|
|
12983
|
-
|
|
12984
|
-
|
|
12985
|
-
this.
|
|
12986
|
-
|
|
12987
|
-
this.initializeEvent();
|
|
12988
|
-
}
|
|
12989
|
-
componentDidLoad() {
|
|
12990
|
-
if (this.autoFocus) {
|
|
12991
|
-
this.selectRef?.focus();
|
|
12820
|
+
if (this.value == null)
|
|
12821
|
+
return '';
|
|
12822
|
+
if (!this.emitValue && typeof this.value === 'object' && !Array.isArray(this.value)) {
|
|
12823
|
+
return this.value.label ?? '';
|
|
12992
12824
|
}
|
|
12825
|
+
const flat = this.flattenOptions(this.options);
|
|
12826
|
+
const found = flat.find(o => o.value === this.value);
|
|
12827
|
+
return found?.label ?? '';
|
|
12993
12828
|
}
|
|
12994
|
-
|
|
12995
|
-
|
|
12996
|
-
const trigger = this.triggerRef;
|
|
12997
|
-
const rect = trigger?.getBoundingClientRect();
|
|
12998
|
-
this.dropDownWidth = rect?.width ? `${rect.width}px` : this.width;
|
|
12829
|
+
flattenOptions(options) {
|
|
12830
|
+
return options.flatMap(o => (o.children ? this.flattenOptions(o.children) : [o]));
|
|
12999
12831
|
}
|
|
13000
|
-
|
|
13001
|
-
|
|
12832
|
+
getNonDisabledLeaves(options) {
|
|
12833
|
+
return options.flatMap(o => {
|
|
12834
|
+
if (o.disabled)
|
|
12835
|
+
return [];
|
|
12836
|
+
if (o.children)
|
|
12837
|
+
return this.getNonDisabledLeaves(o.children);
|
|
12838
|
+
return [o];
|
|
12839
|
+
});
|
|
13002
12840
|
}
|
|
13003
|
-
|
|
13004
|
-
|
|
13005
|
-
|
|
12841
|
+
getSelectedOptions() {
|
|
12842
|
+
const val = this.value;
|
|
12843
|
+
if (!val || !Array.isArray(val))
|
|
12844
|
+
return [];
|
|
12845
|
+
if (this.emitValue) {
|
|
12846
|
+
return val
|
|
12847
|
+
.map(v => this.findOriginalOption(v, this.options))
|
|
12848
|
+
.filter((o) => !!o);
|
|
13006
12849
|
}
|
|
12850
|
+
return val;
|
|
13007
12851
|
}
|
|
13008
|
-
|
|
13009
|
-
|
|
13010
|
-
const targetKey = ['ArrowDown', 'ArrowUp', 'Enter', 'Escape'];
|
|
13011
|
-
if (!targetKey.includes(keyboardEvent.key))
|
|
13012
|
-
return;
|
|
13013
|
-
keyboardEvent.preventDefault();
|
|
13014
|
-
switch (keyboardEvent.key) {
|
|
13015
|
-
case 'ArrowDown':
|
|
13016
|
-
case 'ArrowUp':
|
|
13017
|
-
const keyboardNavigation = new SelectKeyboardNavigation(this.searchable, this.filteredOptions);
|
|
13018
|
-
const nextIndex = keyboardNavigation.getNextIndex(this.itemIndex, keyboardEvent.key);
|
|
13019
|
-
this.itemIndex = nextIndex;
|
|
13020
|
-
break;
|
|
13021
|
-
case 'Enter':
|
|
13022
|
-
const selectedOption = this.filteredOptions[this.itemIndex];
|
|
13023
|
-
if (selectedOption && !selectedOption.disabled) {
|
|
13024
|
-
this.value = selectedOption.value;
|
|
13025
|
-
this.isOpen = false;
|
|
13026
|
-
}
|
|
13027
|
-
break;
|
|
13028
|
-
case 'Escape':
|
|
13029
|
-
this.isOpen = false;
|
|
13030
|
-
break;
|
|
13031
|
-
}
|
|
12852
|
+
toMultiValue(options) {
|
|
12853
|
+
return this.emitValue ? options.map(o => o.value) : options;
|
|
13032
12854
|
}
|
|
13033
|
-
|
|
13034
|
-
|
|
12855
|
+
parsePixelValue(value, fallback) {
|
|
12856
|
+
const parsed = Number.parseFloat(value);
|
|
12857
|
+
return Number.isFinite(parsed) ? parsed : fallback;
|
|
13035
12858
|
}
|
|
13036
|
-
|
|
13037
|
-
this.
|
|
12859
|
+
updateDropdownViewportConstraints() {
|
|
12860
|
+
if (!this.triggerRef)
|
|
12861
|
+
return;
|
|
12862
|
+
const triggerRect = this.triggerRef.getBoundingClientRect();
|
|
12863
|
+
const viewportPadding = SdSelect.VIEWPORT_PADDING;
|
|
12864
|
+
const offsetY = SdSelect.PORTAL_OFFSET_Y;
|
|
12865
|
+
const preferredHeight = this.parsePixelValue(this.dropdownHeight, 260);
|
|
12866
|
+
const preferredWidth = this.parsePixelValue(this.maxDropdownWidth, 640);
|
|
12867
|
+
const availableBelow = Math.max(window.innerHeight - triggerRect.bottom - viewportPadding - offsetY, 0);
|
|
12868
|
+
const availableAbove = Math.max(triggerRect.top - viewportPadding - offsetY, 0);
|
|
12869
|
+
const availableHeight = Math.max(availableBelow, availableAbove);
|
|
12870
|
+
const availableWidth = Math.max(window.innerWidth - viewportPadding * 2, 0);
|
|
12871
|
+
this.resolvedDropdownHeight = `${Math.min(preferredHeight, availableHeight)}px`;
|
|
12872
|
+
this.resolvedMaxDropdownWidth = `${Math.min(preferredWidth, availableWidth)}px`;
|
|
13038
12873
|
}
|
|
13039
|
-
|
|
13040
|
-
|
|
13041
|
-
|
|
13042
|
-
|
|
13043
|
-
this.dropDownShow?.emit({ isOpen: this.isOpen });
|
|
13044
|
-
}
|
|
13045
|
-
};
|
|
13046
|
-
handleOptionClick = (detail) => {
|
|
13047
|
-
const { option, event } = detail;
|
|
13048
|
-
event.stopPropagation();
|
|
13049
|
-
if (!option.disabled) {
|
|
13050
|
-
this.value = option.value;
|
|
13051
|
-
this.isOpen = false;
|
|
13052
|
-
const selectedOption = this.getSelectedOption();
|
|
13053
|
-
this.update?.emit({ value: selectedOption?.value || null, option: selectedOption || null });
|
|
13054
|
-
}
|
|
13055
|
-
};
|
|
13056
|
-
render() {
|
|
13057
|
-
return (hAsync("sd-field", { key: '28b4667a386236c2486af08f636ede3dc6c41f91', label: this.label, labelWidth: this.labelWidth, name: this.name, rules: this.rules, error: this.error, disabled: this.disabled, icon: this.icon, addonLabel: this.addonLabel, addonAlign: this.addonAlign, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el) }, hAsync("div", { key: 'ccee78ca4a773c521634e4054ce3b3d8e9713362', class: {
|
|
13058
|
-
'sd-select': true,
|
|
13059
|
-
'sd-select--disabled': this.disabled,
|
|
13060
|
-
'sd-select--error': !!this.error,
|
|
13061
|
-
'sd-select--label': !!this.label,
|
|
13062
|
-
}, ref: el => (this.selectRef = el) }, this.renderTrigger(), this.renderDropdown())));
|
|
13063
|
-
}
|
|
13064
|
-
renderTrigger() {
|
|
13065
|
-
const selectedOption = this.getSelectedOption();
|
|
13066
|
-
return (hAsync("div", { class: "sd-select__trigger", tabindex: this.disabled ? -1 : 0, onClick: this.handleTriggerClick, ref: el => (this.triggerRef = el) }, hAsync("span", { class: "sd-select__value" }, selectedOption ? selectedOption.label : this.placeholder), this.clearable && selectedOption && !this.disabled && (hAsync("sd-icon", { key: "clear-icon", name: "close", size: 10, color: "#888", class: "sd-select__clear", onClick: async (event) => {
|
|
13067
|
-
event.stopPropagation();
|
|
13068
|
-
this.value = null;
|
|
13069
|
-
await this.formField?.sdValidate();
|
|
13070
|
-
} })), hAsync("sd-icon", { key: "arrow-icon", name: "arrowDown", color: "#888", class: { 'sd-select__arrow': true, 'sd-select__arrow--open': this.isOpen } })));
|
|
13071
|
-
}
|
|
13072
|
-
renderDropdown() {
|
|
13073
|
-
if (this.isOpen === false)
|
|
13074
|
-
return null;
|
|
13075
|
-
const parentRef = (this.selectRef?.querySelector('.sd-select__trigger') ||
|
|
13076
|
-
this.selectRef);
|
|
13077
|
-
return (hAsync("sd-portal", { open: this.isOpen, parentRef: parentRef, onSdClose: this.closeDropdown }, hAsync("sd-select-dropdown", { value: this.value, options: this.options, itemIndex: this.itemIndex, width: this.dropDownWidth, dropdownHeight: this.dropdownHeight, searchable: this.searchable, optionPlaceholder: this.optionPlaceholder, onSdOptionClick: ({ detail }) => this.handleOptionClick(detail), onSdOptionFiltered: ({ detail }) => (this.filteredOptions = detail) })));
|
|
13078
|
-
}
|
|
13079
|
-
static get watchers() { return {
|
|
13080
|
-
"isOpen": [{
|
|
13081
|
-
"isOpenChanged": 0
|
|
13082
|
-
}]
|
|
13083
|
-
}; }
|
|
13084
|
-
static get style() { return sdSelectCss(); }
|
|
13085
|
-
static get cmpMeta() { return {
|
|
13086
|
-
"$flags$": 512,
|
|
13087
|
-
"$tagName$": "sd-select",
|
|
13088
|
-
"$members$": {
|
|
13089
|
-
"value": [1032],
|
|
13090
|
-
"options": [1040],
|
|
13091
|
-
"placeholder": [1],
|
|
13092
|
-
"optionPlaceholder": [1, "option-placeholder"],
|
|
13093
|
-
"width": [1],
|
|
13094
|
-
"dropdownHeight": [1, "dropdown-height"],
|
|
13095
|
-
"autoFocus": [4, "auto-focus"],
|
|
13096
|
-
"disabled": [4],
|
|
13097
|
-
"clearable": [4],
|
|
13098
|
-
"searchable": [4],
|
|
13099
|
-
"label": [1],
|
|
13100
|
-
"labelWidth": [8, "label-width"],
|
|
13101
|
-
"addonLabel": [1, "addon-label"],
|
|
13102
|
-
"addonAlign": [1, "addon-align"],
|
|
13103
|
-
"icon": [16],
|
|
13104
|
-
"labelTooltip": [1, "label-tooltip"],
|
|
13105
|
-
"labelTooltipProps": [16],
|
|
13106
|
-
"rules": [16],
|
|
13107
|
-
"error": [4],
|
|
13108
|
-
"optionRenderer": [16],
|
|
13109
|
-
"name": [1],
|
|
13110
|
-
"isOpen": [32],
|
|
13111
|
-
"itemIndex": [32],
|
|
13112
|
-
"isScrolled": [32],
|
|
13113
|
-
"sdOpen": [64],
|
|
13114
|
-
"sdValidate": [64],
|
|
13115
|
-
"sdReset": [64],
|
|
13116
|
-
"sdResetValidate": [64],
|
|
13117
|
-
"sdFocus": [64]
|
|
13118
|
-
},
|
|
13119
|
-
"$listeners$": undefined,
|
|
13120
|
-
"$lazyBundleId$": "-",
|
|
13121
|
-
"$attrsToReflect$": []
|
|
13122
|
-
}; }
|
|
13123
|
-
}
|
|
13124
|
-
|
|
13125
|
-
const sdSelectDropdownCss = () => `.sd-select-dropdown .sd-select-option-placeholder{height:48px;display:flex;align-items:center;padding:8px 16px;font-size:12px;line-height:0;text-align:left;color:#888888}.sd-select-dropdown{overflow:auto;min-width:fit-content;width:var(--select-dropdown-width, 200px);max-height:var(--select-dropdown-height, 260px);padding-bottom:2px;background-color:white;box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.1);border-radius:4px;overflow-y:auto;color:#333333;display:flex;flex-direction:column;opacity:0.5;transition:opacity 0.15s ease-in}.sd-select-dropdown--ready{opacity:1}`;
|
|
13126
|
-
|
|
13127
|
-
class SdSelectDropdown {
|
|
13128
|
-
constructor(hostRef) {
|
|
13129
|
-
registerInstance(this, hostRef);
|
|
13130
|
-
this.optionClick = createEvent(this, "sdOptionClick", 7);
|
|
13131
|
-
this.optionFiltered = createEvent(this, "sdOptionFiltered", 7);
|
|
13132
|
-
this.scroll = createEvent(this, "sdScroll", 7);
|
|
13133
|
-
}
|
|
13134
|
-
itemIndex;
|
|
13135
|
-
value = null;
|
|
13136
|
-
options;
|
|
13137
|
-
width;
|
|
13138
|
-
dropdownHeight;
|
|
13139
|
-
searchable;
|
|
13140
|
-
optionPlaceholder;
|
|
13141
|
-
useCheckbox = false;
|
|
13142
|
-
useAll = false;
|
|
13143
|
-
filteredOptions = [];
|
|
13144
|
-
searchText = null;
|
|
13145
|
-
isScrolled = false;
|
|
13146
|
-
isDropdownReady = false;
|
|
13147
|
-
optionClick;
|
|
13148
|
-
optionFiltered;
|
|
13149
|
-
scroll;
|
|
13150
|
-
filteredOptionsChanged(newValue) {
|
|
13151
|
-
this.optionFiltered.emit(newValue);
|
|
13152
|
-
}
|
|
13153
|
-
searchTextChanged() {
|
|
13154
|
-
this.filterOptions();
|
|
13155
|
-
}
|
|
13156
|
-
async itemIndexChanged(newIndex, oldIndex) {
|
|
13157
|
-
if (this.searchable) {
|
|
13158
|
-
const searchInput = await this.getNativeInputElement();
|
|
13159
|
-
if (this.itemIndex === -1) {
|
|
13160
|
-
searchInput?.focus({ preventScroll: true });
|
|
13161
|
-
return;
|
|
13162
|
-
}
|
|
13163
|
-
else if (searchInput?.matches(':focus')) {
|
|
13164
|
-
searchInput?.blur();
|
|
13165
|
-
}
|
|
13166
|
-
}
|
|
13167
|
-
const optionElements = this.dropdownRef?.querySelectorAll('.sd-select-dropdown sd-select-option') || [];
|
|
13168
|
-
const currentItem = optionElements?.[this.itemIndex];
|
|
13169
|
-
if (!currentItem)
|
|
13170
|
-
return;
|
|
13171
|
-
this.optionRef = currentItem;
|
|
13172
|
-
const isOptionDisabled = await this.optionRef.sdIsDisabled();
|
|
13173
|
-
if (isOptionDisabled) {
|
|
13174
|
-
newIndex > oldIndex ? this.itemIndex++ : this.itemIndex--;
|
|
13175
|
-
return;
|
|
13176
|
-
}
|
|
13177
|
-
this.scrollToOption(currentItem);
|
|
13178
|
-
}
|
|
13179
|
-
componentWillLoad() {
|
|
13180
|
-
this.filteredOptions = this.options;
|
|
13181
|
-
// DOM 렌더링을 기다리기 위해 이중 requestAnimationFrame 사용 - (레이아웃/스타일 계산 - 페인트 이후)
|
|
13182
|
-
requestAnimationFrame(() => {
|
|
13183
|
-
requestAnimationFrame(async () => {
|
|
13184
|
-
const selectedOptions = this.getSelectedOption();
|
|
13185
|
-
// 선택된 옵션이 있으면 첫 번째 선택된 항목으로 스크롤
|
|
13186
|
-
if (selectedOptions) {
|
|
13187
|
-
const selectedIndex = Array.isArray(selectedOptions)
|
|
13188
|
-
? this.options.indexOf(selectedOptions[0])
|
|
13189
|
-
: this.options.indexOf(selectedOptions);
|
|
13190
|
-
const optionElements = Array.from(this.dropdownRef?.querySelectorAll('sd-select-option') || []);
|
|
13191
|
-
// useAll 사용시 "전체" 옵션 포함한 인덱스 사용
|
|
13192
|
-
const actualIndex = this.useAll ? selectedIndex + 1 : selectedIndex;
|
|
13193
|
-
// 선택된 옵션이 화면 가운데에 오도록 index 조정
|
|
13194
|
-
const targetIndex = Math.min(actualIndex + 4, optionElements.length - 1);
|
|
13195
|
-
const currentItem = optionElements?.[targetIndex];
|
|
13196
|
-
if (currentItem) {
|
|
13197
|
-
this.scrollToOption(currentItem, 'instant');
|
|
13198
|
-
}
|
|
13199
|
-
}
|
|
13200
|
-
this.isDropdownReady = true;
|
|
13201
|
-
if (this.searchable) {
|
|
13202
|
-
const searchInput = await this.getNativeInputElement();
|
|
13203
|
-
if (searchInput) {
|
|
13204
|
-
requestAnimationFrame(() => {
|
|
13205
|
-
searchInput.focus({ preventScroll: true });
|
|
13206
|
-
});
|
|
13207
|
-
}
|
|
13208
|
-
}
|
|
13209
|
-
});
|
|
13210
|
-
});
|
|
13211
|
-
}
|
|
13212
|
-
dropdownRef;
|
|
13213
|
-
searchRef;
|
|
13214
|
-
optionRef;
|
|
13215
|
-
get dropdownSize() {
|
|
13216
|
-
return {
|
|
13217
|
-
'--select-dropdown-width': this.width || '200px',
|
|
13218
|
-
'--select-dropdown-height': this.dropdownHeight || '260px',
|
|
13219
|
-
};
|
|
13220
|
-
}
|
|
13221
|
-
filterOptions() {
|
|
13222
|
-
if (!this.searchText || this.searchText.trim() === '') {
|
|
13223
|
-
// 검색어가 없으면 전체 옵션 표시
|
|
13224
|
-
this.filteredOptions = this.options;
|
|
13225
|
-
}
|
|
13226
|
-
else {
|
|
13227
|
-
// 검색어가 있으면 필터링
|
|
13228
|
-
this.filteredOptions = this.options.filter(option => option.label.toLowerCase().includes(this.searchText.toLowerCase()));
|
|
13229
|
-
}
|
|
13230
|
-
}
|
|
13231
|
-
getSelectedOption() {
|
|
13232
|
-
if (typeof this.value !== 'object') {
|
|
13233
|
-
return this.options.find(option => option.value === this.value);
|
|
13234
|
-
}
|
|
13235
|
-
return this.options.filter(option => this.value?.includes(option));
|
|
13236
|
-
}
|
|
13237
|
-
isOptionSelected(value) {
|
|
13238
|
-
if (Array.isArray(this.value)) {
|
|
13239
|
-
return this.value.some(selected => selected.value === value);
|
|
13240
|
-
}
|
|
13241
|
-
return value === this.value;
|
|
13242
|
-
}
|
|
13243
|
-
async getNativeInputElement() {
|
|
13244
|
-
if (this.searchRef) {
|
|
13245
|
-
return this.searchRef.sdGetNativeElement();
|
|
13246
|
-
}
|
|
13247
|
-
return null;
|
|
13248
|
-
}
|
|
13249
|
-
scrollToOption(optionElement, scrollBehavior = 'smooth') {
|
|
13250
|
-
if (!this.dropdownRef || !optionElement)
|
|
13251
|
-
return;
|
|
13252
|
-
const dropdown = this.dropdownRef;
|
|
13253
|
-
const optionTop = optionElement.offsetTop;
|
|
13254
|
-
const optionHeight = optionElement.offsetHeight;
|
|
13255
|
-
const dropdownScrollTop = dropdown.scrollTop;
|
|
13256
|
-
const dropdownHeight = dropdown.clientHeight;
|
|
13257
|
-
const searchContainer = dropdown.querySelector('.sd-select-search-input');
|
|
13258
|
-
const searchOffset = searchContainer ? searchContainer.offsetHeight : 0;
|
|
13259
|
-
const visibleTop = dropdownScrollTop + searchOffset;
|
|
13260
|
-
const visibleBottom = dropdownScrollTop + dropdownHeight;
|
|
13261
|
-
if (optionTop < visibleTop) {
|
|
13262
|
-
dropdown.scrollTo({ top: optionTop - searchOffset, behavior: scrollBehavior });
|
|
13263
|
-
}
|
|
13264
|
-
else if (optionTop + optionHeight > visibleBottom) {
|
|
13265
|
-
dropdown.scrollTo({
|
|
13266
|
-
top: optionTop + optionHeight - dropdownHeight + searchOffset,
|
|
13267
|
-
behavior: scrollBehavior,
|
|
13268
|
-
});
|
|
13269
|
-
}
|
|
13270
|
-
}
|
|
13271
|
-
handleDropdownScroll = (event) => {
|
|
13272
|
-
const target = event.target;
|
|
13273
|
-
const scrollTop = target.scrollTop;
|
|
13274
|
-
// 스크롤이 조금이라도 되면 그림자 표시
|
|
13275
|
-
this.isScrolled = scrollTop > 0;
|
|
13276
|
-
};
|
|
13277
|
-
render() {
|
|
13278
|
-
return (hAsync("div", { key: 'a831a99130074fa072534d76f4b0db7169d906e2', class: {
|
|
13279
|
-
'sd-select-dropdown': true,
|
|
13280
|
-
'sd-select-dropdown--ready': this.isDropdownReady,
|
|
13281
|
-
}, style: this.dropdownSize, onScroll: this.handleDropdownScroll, ref: el => (this.dropdownRef = el) }, this.searchable && (hAsync("sd-select-search-input", { key: 'f09a5575454c30387aeac9996d15625d7581a367', ref: el => (this.searchRef = el), isScrolled: this.isScrolled, searchText: this.searchText, onSdSearchInput: (event) => (this.searchText = event.detail || ''), onSdSearchFocus: () => (this.itemIndex = -1) })), this.filteredOptions.length > 0 ? (this.filteredOptions.map((option, index) => (hAsync("slot", { name: `option-${option.value}` }, hAsync("sd-select-option", { option: option, index: index, isSelected: this.isOptionSelected(option.value), isFocused: index === this.itemIndex, onOptionClick: ({ detail }) => this.optionClick.emit(detail), useCheckbox: this.useCheckbox }))))) : (hAsync("slot", { name: "option-placeholder" }, hAsync("div", { class: 'sd-select-option-placeholder' }, this.optionPlaceholder)))));
|
|
13282
|
-
}
|
|
13283
|
-
static get watchers() { return {
|
|
13284
|
-
"filteredOptions": [{
|
|
13285
|
-
"filteredOptionsChanged": 0
|
|
13286
|
-
}],
|
|
13287
|
-
"searchText": [{
|
|
13288
|
-
"searchTextChanged": 0
|
|
13289
|
-
}],
|
|
13290
|
-
"itemIndex": [{
|
|
13291
|
-
"itemIndexChanged": 0
|
|
13292
|
-
}]
|
|
13293
|
-
}; }
|
|
13294
|
-
static get style() { return sdSelectDropdownCss(); }
|
|
13295
|
-
static get cmpMeta() { return {
|
|
13296
|
-
"$flags$": 772,
|
|
13297
|
-
"$tagName$": "sd-select-dropdown",
|
|
13298
|
-
"$members$": {
|
|
13299
|
-
"itemIndex": [1026, "item-index"],
|
|
13300
|
-
"value": [8],
|
|
13301
|
-
"options": [16],
|
|
13302
|
-
"width": [1],
|
|
13303
|
-
"dropdownHeight": [1, "dropdown-height"],
|
|
13304
|
-
"searchable": [4],
|
|
13305
|
-
"optionPlaceholder": [1, "option-placeholder"],
|
|
13306
|
-
"useCheckbox": [4, "use-checkbox"],
|
|
13307
|
-
"useAll": [4, "use-all"],
|
|
13308
|
-
"filteredOptions": [32],
|
|
13309
|
-
"searchText": [32],
|
|
13310
|
-
"isScrolled": [32],
|
|
13311
|
-
"isDropdownReady": [32]
|
|
13312
|
-
},
|
|
13313
|
-
"$listeners$": undefined,
|
|
13314
|
-
"$lazyBundleId$": "-",
|
|
13315
|
-
"$attrsToReflect$": []
|
|
13316
|
-
}; }
|
|
13317
|
-
}
|
|
13318
|
-
|
|
13319
|
-
const sdSelectGroupCss = () => `.sd-select-group__dropdown .sd-select-group__option-placeholder{height:48px;display:flex;align-items:center;padding:8px 16px;font-size:12px;line-height:0;text-align:left;color:#888888}sd-select-group{display:inline-flex;flex-flow:column nowrap;width:fit-content;height:fit-content}sd-select-group:focus,sd-select-group:focus-visible,sd-select-group:focus-within{outline:none !important}sd-select-group .sd-select-group{width:100%}sd-select-group .sd-select-group .sd-select-group__trigger{padding:4px 28px 4px 12px;display:flex;width:100%;height:100%;align-items:center;cursor:pointer}.sd-field--disabled sd-select-group .sd-select-group .sd-select-group__trigger{cursor:not-allowed}sd-select-group .sd-select-group .sd-select-group__trigger .sd-select-group__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:20px;font-size:12px;font-weight:400;text-align:left}sd-select-group .sd-select-group .sd-select-group__trigger .sd-select-group__clear{margin:0 4px;width:8px;height:8px;background-color:transparent;outline:none;border:none}sd-select-group .sd-select-group .sd-select-group__arrow{position:absolute;top:8px;right:8px;width:12px;height:12px;color:#888888;transition:transform 0.3s ease}sd-select-group .sd-select-group .sd-select-group__arrow--open{transform:rotate(180deg)}.sd-select-group__dropdown{overflow:auto;width:var(--select-width, 200px);max-height:var(--select-dropdown-height, 260px);padding-bottom:2px;background-color:white;box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.1);border-radius:4px;overflow-y:auto;color:#333333;opacity:0.5;transition:opacity 0.15s ease-in}.sd-select-group__dropdown--ready{opacity:1}`;
|
|
13320
|
-
|
|
13321
|
-
/**
|
|
13322
|
-
* @deprecated sd-select-v2 (name="default_depth")를 사용하세요.
|
|
13323
|
-
*/
|
|
13324
|
-
class SdSelectGroup extends BaseDropdownEvent {
|
|
13325
|
-
constructor(hostRef) {
|
|
13326
|
-
super();
|
|
13327
|
-
registerInstance(this, hostRef);
|
|
13328
|
-
this.update = createEvent(this, "sdUpdate", 7);
|
|
13329
|
-
this.dropDownShow = createEvent(this, "sdDropDownShow", 7);
|
|
13330
|
-
}
|
|
13331
|
-
get el() { return getElement(this); }
|
|
13332
|
-
// props
|
|
13333
|
-
value = null;
|
|
13334
|
-
options = [];
|
|
13335
|
-
placeholder = '선택';
|
|
13336
|
-
optionPlaceholder = '선택지가 없습니다.';
|
|
13337
|
-
width = '200px';
|
|
13338
|
-
dropdownHeight = '260px';
|
|
13339
|
-
autoFocus = false;
|
|
13340
|
-
disabled = false;
|
|
13341
|
-
clearable = false;
|
|
13342
|
-
searchable = false;
|
|
13343
|
-
// props - label
|
|
13344
|
-
label = '';
|
|
13345
|
-
labelWidth = '';
|
|
13346
|
-
addonLabel = '';
|
|
13347
|
-
addonAlign = 'start';
|
|
13348
|
-
icon = undefined;
|
|
13349
|
-
labelTooltip = '';
|
|
13350
|
-
labelTooltipProps = null;
|
|
13351
|
-
// props - form
|
|
13352
|
-
rules = [];
|
|
13353
|
-
error = false;
|
|
13354
|
-
// props - custom styles
|
|
13355
|
-
containerStyle = {};
|
|
13356
|
-
triggerStyle = {};
|
|
13357
|
-
dropdownStyle = {};
|
|
13358
|
-
optionStyle = {};
|
|
13359
|
-
labelStyle = {};
|
|
13360
|
-
// props - custom slots
|
|
13361
|
-
optionRenderer;
|
|
13362
|
-
// states
|
|
13363
|
-
filteredOptions = [];
|
|
13364
|
-
isOpen = false;
|
|
13365
|
-
searchText = null;
|
|
13366
|
-
itemIndex = -1;
|
|
13367
|
-
isScrolled = false;
|
|
13368
|
-
isDropdownReady = false;
|
|
13369
|
-
// events
|
|
13370
|
-
update;
|
|
13371
|
-
dropDownShow;
|
|
13372
|
-
selectRef;
|
|
13373
|
-
searchRef;
|
|
13374
|
-
triggerRef;
|
|
13375
|
-
optionRef;
|
|
13376
|
-
dropdownRef;
|
|
13377
|
-
formField;
|
|
13378
|
-
dropDownWidth = '200px';
|
|
13379
|
-
name = nanoid$1();
|
|
13380
|
-
async sdOpen() {
|
|
13381
|
-
await new Promise(resolve => setTimeout(resolve, 0));
|
|
13382
|
-
this.isOpen = true;
|
|
13383
|
-
}
|
|
13384
|
-
async sdValidate() {
|
|
13385
|
-
this.formField?.sdValidate();
|
|
13386
|
-
}
|
|
13387
|
-
async sdReset() {
|
|
13388
|
-
this.formField?.sdReset();
|
|
13389
|
-
}
|
|
13390
|
-
async sdResetValidate() {
|
|
13391
|
-
this.formField?.sdResetValidation();
|
|
13392
|
-
}
|
|
13393
|
-
async sdFocus() {
|
|
13394
|
-
this.formField?.sdFocus();
|
|
13395
|
-
}
|
|
13396
|
-
optionsChanged() {
|
|
13397
|
-
this.filteredOptions = this.options;
|
|
13398
|
-
this.filterOptions();
|
|
13399
|
-
}
|
|
13400
|
-
searchTextChanged() {
|
|
13401
|
-
this.filterOptions();
|
|
13402
|
-
}
|
|
13403
|
-
async itemIndexChanged(newIndex, oldIndex) {
|
|
13404
|
-
if (this.searchable) {
|
|
13405
|
-
const searchInput = await this.getNativeInputElement();
|
|
13406
|
-
if (this.itemIndex === -1) {
|
|
13407
|
-
searchInput?.focus({ preventScroll: true });
|
|
13408
|
-
return;
|
|
13409
|
-
}
|
|
13410
|
-
else if (searchInput?.matches(':focus')) {
|
|
13411
|
-
searchInput?.blur();
|
|
13412
|
-
}
|
|
13413
|
-
}
|
|
13414
|
-
const optionElements = Array.from(this.dropdownRef?.querySelectorAll('sd-select-option-group') || []);
|
|
13415
|
-
const currentItem = optionElements?.[this.itemIndex];
|
|
13416
|
-
if (!currentItem || !this.isOpen)
|
|
13417
|
-
return;
|
|
13418
|
-
this.optionRef = currentItem;
|
|
13419
|
-
const isOptionDisabled = await this.optionRef.isDisabled();
|
|
13420
|
-
if (isOptionDisabled) {
|
|
13421
|
-
newIndex > oldIndex ? this.itemIndex++ : this.itemIndex--;
|
|
13422
|
-
return;
|
|
13423
|
-
}
|
|
13424
|
-
this.scrollToOption(currentItem);
|
|
13425
|
-
}
|
|
13426
|
-
async isOpenChanged() {
|
|
13427
|
-
this.onDropdownToggle(this.isOpen);
|
|
13428
|
-
this.dropDownShow?.emit({ isOpen: this.isOpen });
|
|
13429
|
-
this.isDropdownReady = false;
|
|
13430
|
-
if (this.isOpen === false) {
|
|
13431
|
-
await this.formField?.sdValidate();
|
|
13432
|
-
return;
|
|
13433
|
-
}
|
|
13434
|
-
requestAnimationFrame(() => {
|
|
13435
|
-
requestAnimationFrame(async () => {
|
|
13436
|
-
const selectedOption = this.getSelectedOption();
|
|
13437
|
-
if (selectedOption) {
|
|
13438
|
-
const selectedIndex = this.filteredOptions.indexOf(selectedOption);
|
|
13439
|
-
const optionElements = Array.from(this.dropdownRef?.querySelectorAll('sd-select-option-group') || []);
|
|
13440
|
-
const targetIndex = Math.min(selectedIndex + 4, optionElements.length - 1);
|
|
13441
|
-
const currentItem = optionElements?.[targetIndex];
|
|
13442
|
-
if (currentItem) {
|
|
13443
|
-
this.scrollToOption(currentItem);
|
|
13444
|
-
}
|
|
13445
|
-
}
|
|
13446
|
-
this.isDropdownReady = true;
|
|
13447
|
-
if (this.searchable) {
|
|
13448
|
-
const searchInput = await this.getNativeInputElement();
|
|
13449
|
-
if (searchInput) {
|
|
13450
|
-
requestAnimationFrame(() => {
|
|
13451
|
-
searchInput.focus({ preventScroll: true });
|
|
13452
|
-
});
|
|
13453
|
-
}
|
|
13454
|
-
}
|
|
13455
|
-
});
|
|
13456
|
-
});
|
|
13457
|
-
}
|
|
13458
|
-
componentWillLoad() {
|
|
13459
|
-
this.filteredOptions = this.options;
|
|
13460
|
-
this.dropDownWidth = this.width;
|
|
13461
|
-
this.initializeEvent();
|
|
13462
|
-
}
|
|
13463
|
-
componentDidLoad() {
|
|
13464
|
-
if (this.autoFocus) {
|
|
13465
|
-
this.selectRef?.focus();
|
|
13466
|
-
}
|
|
13467
|
-
}
|
|
13468
|
-
componentDidRender() {
|
|
13469
|
-
const trigger = this.triggerRef;
|
|
13470
|
-
const rect = trigger?.getBoundingClientRect();
|
|
13471
|
-
this.dropDownWidth = rect?.width ? `${rect.width}px` : this.width;
|
|
13472
|
-
}
|
|
13473
|
-
disconnectedCallback() {
|
|
13474
|
-
this.cleanupEvent();
|
|
13475
|
-
}
|
|
13476
|
-
handleDocumentClick(event) {
|
|
13477
|
-
if (!this.selectRef?.contains(event.target)) {
|
|
13478
|
-
this.isOpen = false;
|
|
13479
|
-
}
|
|
13480
|
-
}
|
|
13481
|
-
handleDocumentKeydown(keyboardEvent) {
|
|
13482
|
-
keyboardEvent.stopPropagation();
|
|
13483
|
-
const targetKey = ['ArrowDown', 'ArrowUp', 'Enter', 'Escape'];
|
|
13484
|
-
if (!targetKey.includes(keyboardEvent.key))
|
|
13485
|
-
return;
|
|
13486
|
-
keyboardEvent.preventDefault();
|
|
13487
|
-
switch (keyboardEvent.key) {
|
|
13488
|
-
case 'ArrowDown':
|
|
13489
|
-
case 'ArrowUp':
|
|
13490
|
-
const keyboardNavigation = new SelectKeyboardNavigation(this.searchable, this.filteredOptions);
|
|
13491
|
-
const nextIndex = keyboardNavigation.getNextIndex(this.itemIndex, keyboardEvent.key);
|
|
13492
|
-
this.itemIndex = nextIndex;
|
|
13493
|
-
break;
|
|
13494
|
-
case 'Enter':
|
|
13495
|
-
const selectedOption = this.filteredOptions[this.itemIndex];
|
|
13496
|
-
if (selectedOption && !selectedOption.disabled && selectedOption.type === 'item') {
|
|
13497
|
-
this.handleOptionSelection(selectedOption);
|
|
13498
|
-
}
|
|
13499
|
-
break;
|
|
13500
|
-
case 'Escape':
|
|
13501
|
-
this.isOpen = false;
|
|
13502
|
-
break;
|
|
13503
|
-
}
|
|
13504
|
-
}
|
|
13505
|
-
// event handlers
|
|
13506
|
-
handleTriggerClick = (event) => {
|
|
13507
|
-
event.stopPropagation();
|
|
13508
|
-
if (!this.disabled) {
|
|
13509
|
-
this.isOpen = !this.isOpen;
|
|
13510
|
-
this.dropDownShow?.emit({ isOpen: this.isOpen });
|
|
13511
|
-
}
|
|
13512
|
-
};
|
|
13513
|
-
handleOptionClick = (detail) => {
|
|
13514
|
-
const { option, event } = detail;
|
|
13515
|
-
event.stopPropagation();
|
|
13516
|
-
if (option.type === 'item') {
|
|
13517
|
-
this.handleOptionSelection(option);
|
|
13518
|
-
}
|
|
13519
|
-
};
|
|
13520
|
-
filterOptions() {
|
|
13521
|
-
if (!this.searchText || this.searchText.trim() === '') {
|
|
13522
|
-
this.filteredOptions = this.options;
|
|
13523
|
-
return;
|
|
13524
|
-
}
|
|
13525
|
-
const searchTerm = this.searchText.toLowerCase();
|
|
13526
|
-
const matchedOptions = new Set();
|
|
13527
|
-
this.options.forEach(option => {
|
|
13528
|
-
if (option.label.toLowerCase().includes(searchTerm)) {
|
|
13529
|
-
matchedOptions.add(option);
|
|
13530
|
-
this.addParentGroups(option, matchedOptions);
|
|
13531
|
-
}
|
|
13532
|
-
});
|
|
13533
|
-
this.filteredOptions = this.options.filter(option => matchedOptions.has(option));
|
|
13534
|
-
}
|
|
13535
|
-
addParentGroups(option, matchedSet) {
|
|
13536
|
-
if (!option.parent)
|
|
13537
|
-
return;
|
|
13538
|
-
const parentOption = this.options.find(opt => opt.value === option.parent);
|
|
13539
|
-
if (parentOption && !matchedSet.has(parentOption)) {
|
|
13540
|
-
matchedSet.add(parentOption);
|
|
13541
|
-
this.addParentGroups(parentOption, matchedSet);
|
|
13542
|
-
}
|
|
13543
|
-
}
|
|
13544
|
-
getSelectedOption() {
|
|
13545
|
-
return this.options.find(option => option.value === this.value);
|
|
13546
|
-
}
|
|
13547
|
-
handleDropdownScroll = (event) => {
|
|
13548
|
-
const target = event.target;
|
|
13549
|
-
this.isScrolled = target.scrollTop > 0;
|
|
13550
|
-
};
|
|
13551
|
-
async getNativeInputElement() {
|
|
13552
|
-
if (this.searchRef) {
|
|
13553
|
-
return this.searchRef.sdGetNativeElement();
|
|
13554
|
-
}
|
|
13555
|
-
return null;
|
|
13556
|
-
}
|
|
13557
|
-
handleOptionSelection = (option) => {
|
|
13558
|
-
if (!option || option.disabled)
|
|
13559
|
-
return;
|
|
13560
|
-
this.value = option.value;
|
|
13561
|
-
this.isOpen = false;
|
|
13562
|
-
const selectedOption = this.getSelectedOption();
|
|
13563
|
-
this.update?.emit({ value: selectedOption?.value || null, option: selectedOption || null });
|
|
13564
|
-
};
|
|
13565
|
-
closeDropdown() {
|
|
13566
|
-
this.isOpen = false;
|
|
13567
|
-
}
|
|
13568
|
-
async scrollToOption(optionElement) {
|
|
13569
|
-
if (!this.dropdownRef || !optionElement)
|
|
13570
|
-
return;
|
|
13571
|
-
requestAnimationFrame(() => {
|
|
13572
|
-
const dropdown = this.dropdownRef;
|
|
13573
|
-
const optionTop = optionElement.offsetTop;
|
|
13574
|
-
const optionHeight = optionElement.offsetHeight;
|
|
13575
|
-
const dropdownScrollTop = dropdown.scrollTop;
|
|
13576
|
-
const dropdownHeight = dropdown.clientHeight;
|
|
13577
|
-
const searchContainer = dropdown.querySelector('.sd-select-group__search-container');
|
|
13578
|
-
const searchOffset = searchContainer ? searchContainer.offsetHeight : 0;
|
|
13579
|
-
const visibleContentHeight = dropdownHeight - searchOffset;
|
|
13580
|
-
const visibleTop = dropdownScrollTop + searchOffset;
|
|
13581
|
-
const visibleBottom = dropdownScrollTop + dropdownHeight;
|
|
13582
|
-
if (optionTop < visibleTop) {
|
|
13583
|
-
dropdown.scrollTo({ top: optionTop - searchOffset, behavior: 'instant' });
|
|
13584
|
-
}
|
|
13585
|
-
else if (optionTop + optionHeight > visibleBottom) {
|
|
13586
|
-
dropdown.scrollTo({
|
|
13587
|
-
top: optionTop + optionHeight - visibleContentHeight - searchOffset,
|
|
13588
|
-
behavior: 'instant',
|
|
13589
|
-
});
|
|
13590
|
-
}
|
|
13591
|
-
});
|
|
13592
|
-
}
|
|
13593
|
-
render() {
|
|
13594
|
-
return (hAsync("sd-field", { key: 'aa5470eaba6489d6eb380996eeb0c0c985e20fbf', label: this.label, labelWidth: this.labelWidth, name: this.name, rules: this.rules, error: this.error, disabled: this.disabled, icon: this.icon, addonLabel: this.addonLabel, addonAlign: this.addonAlign, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), style: { '--field-width': this.width || '200px' } }, hAsync("div", { key: '90d4cc0bde3240be6a8406c9ea6c82c2fdad3482', class: {
|
|
13595
|
-
'sd-select-group': true,
|
|
13596
|
-
'sd-select-group--open': this.isOpen,
|
|
13597
|
-
'sd-select-group--disabled': this.disabled,
|
|
13598
|
-
'sd-select-group--label': !!this.label,
|
|
13599
|
-
}, ref: el => (this.selectRef = el) }, this.renderTrigger(), this.renderDropdown())));
|
|
13600
|
-
}
|
|
13601
|
-
renderTrigger() {
|
|
13602
|
-
const selectedOption = this.getSelectedOption();
|
|
13603
|
-
return (hAsync("div", { class: "sd-select-group__trigger", tabindex: this.disabled ? -1 : 0, onClick: this.handleTriggerClick, style: this.triggerStyle, ref: el => (this.triggerRef = el) }, hAsync("span", { class: "sd-select-group__value" }, selectedOption ? selectedOption.label : this.placeholder), this.clearable && selectedOption && !this.disabled && (hAsync("sd-icon", { key: "close-icon", name: "close", size: 10, color: "grey_65", class: "sd-select-group__clear", onClick: async (event) => {
|
|
13604
|
-
event.stopPropagation();
|
|
13605
|
-
this.value = null;
|
|
13606
|
-
this.update?.emit({ value: null, option: null });
|
|
13607
|
-
await this.formField?.sdValidate();
|
|
13608
|
-
} })), hAsync("sd-icon", { key: "arrow-icon", name: "arrowDown", color: "grey_65", class: {
|
|
13609
|
-
'sd-select-group__arrow': true,
|
|
13610
|
-
'sd-select-group__arrow--open': this.isOpen,
|
|
13611
|
-
} })));
|
|
13612
|
-
}
|
|
13613
|
-
renderDropdown() {
|
|
13614
|
-
const style = {
|
|
13615
|
-
'--select-width': this.dropDownWidth || '200px',
|
|
13616
|
-
'--select-dropdown-height': this.dropdownHeight || '260px',
|
|
13617
|
-
};
|
|
13618
|
-
if (this.isOpen === false)
|
|
13619
|
-
return null;
|
|
13620
|
-
return (hAsync("sd-portal", { open: this.isOpen, parentRef: this.selectRef, onSdClose: this.closeDropdown }, hAsync("div", { style: { width: '0', height: '0', overflow: 'visible' } }, hAsync("div", { class: {
|
|
13621
|
-
'sd-select-group__dropdown': true,
|
|
13622
|
-
'sd-select-group__dropdown--ready': this.isDropdownReady,
|
|
13623
|
-
}, style: { ...style, ...this.dropdownStyle }, onScroll: this.handleDropdownScroll, ref: el => (this.dropdownRef = el) }, this.searchable && (hAsync("sd-select-search-input", { ref: el => (this.searchRef = el), isScrolled: this.isScrolled, searchText: this.searchText, onSdSearchInput: (event) => (this.searchText = event.detail || ''), onSdSearchFocus: () => (this.itemIndex = -1) })), this.filteredOptions.length > 0 ? (hAsync(Fragment, null, this.filteredOptions.map((option, index) => (hAsync("slot", { name: `option-${option.value}` }, hAsync("sd-select-option-group", { option: option, index: index, isSelected: option.type === 'item' ? option.value === this.value : false, isFocused: index === this.itemIndex, optionStyle: this.optionStyle, onOptionClick: ({ detail, }) => {
|
|
13624
|
-
if (option.type !== 'item')
|
|
13625
|
-
return;
|
|
13626
|
-
this.handleOptionClick(detail);
|
|
13627
|
-
}, useCheckbox: false, useIndicator: false })))))) : (hAsync("slot", { name: "option-placeholder" }, hAsync("div", { class: 'sd-select-group__option-placeholder', style: this.optionStyle }, this.optionPlaceholder)))))));
|
|
13628
|
-
}
|
|
13629
|
-
static get watchers() { return {
|
|
13630
|
-
"options": [{
|
|
13631
|
-
"optionsChanged": 0
|
|
13632
|
-
}],
|
|
13633
|
-
"searchText": [{
|
|
13634
|
-
"searchTextChanged": 0
|
|
13635
|
-
}],
|
|
13636
|
-
"itemIndex": [{
|
|
13637
|
-
"itemIndexChanged": 0
|
|
13638
|
-
}],
|
|
13639
|
-
"isOpen": [{
|
|
13640
|
-
"isOpenChanged": 0
|
|
13641
|
-
}]
|
|
13642
|
-
}; }
|
|
13643
|
-
static get style() { return sdSelectGroupCss(); }
|
|
13644
|
-
static get cmpMeta() { return {
|
|
13645
|
-
"$flags$": 772,
|
|
13646
|
-
"$tagName$": "sd-select-group",
|
|
13647
|
-
"$members$": {
|
|
13648
|
-
"value": [1032],
|
|
13649
|
-
"options": [1040],
|
|
13650
|
-
"placeholder": [1],
|
|
13651
|
-
"optionPlaceholder": [1, "option-placeholder"],
|
|
13652
|
-
"width": [1],
|
|
13653
|
-
"dropdownHeight": [1, "dropdown-height"],
|
|
13654
|
-
"autoFocus": [4, "auto-focus"],
|
|
13655
|
-
"disabled": [4],
|
|
13656
|
-
"clearable": [4],
|
|
13657
|
-
"searchable": [4],
|
|
13658
|
-
"label": [1],
|
|
13659
|
-
"labelWidth": [8, "label-width"],
|
|
13660
|
-
"addonLabel": [1, "addon-label"],
|
|
13661
|
-
"addonAlign": [1, "addon-align"],
|
|
13662
|
-
"icon": [16],
|
|
13663
|
-
"labelTooltip": [1, "label-tooltip"],
|
|
13664
|
-
"labelTooltipProps": [16],
|
|
13665
|
-
"rules": [16],
|
|
13666
|
-
"error": [4],
|
|
13667
|
-
"containerStyle": [16],
|
|
13668
|
-
"triggerStyle": [16],
|
|
13669
|
-
"dropdownStyle": [16],
|
|
13670
|
-
"optionStyle": [16],
|
|
13671
|
-
"labelStyle": [16],
|
|
13672
|
-
"optionRenderer": [16],
|
|
13673
|
-
"name": [1],
|
|
13674
|
-
"filteredOptions": [32],
|
|
13675
|
-
"isOpen": [32],
|
|
13676
|
-
"searchText": [32],
|
|
13677
|
-
"itemIndex": [32],
|
|
13678
|
-
"isScrolled": [32],
|
|
13679
|
-
"isDropdownReady": [32],
|
|
13680
|
-
"sdOpen": [64],
|
|
13681
|
-
"sdValidate": [64],
|
|
13682
|
-
"sdReset": [64],
|
|
13683
|
-
"sdResetValidate": [64],
|
|
13684
|
-
"sdFocus": [64]
|
|
13685
|
-
},
|
|
13686
|
-
"$listeners$": undefined,
|
|
13687
|
-
"$lazyBundleId$": "-",
|
|
13688
|
-
"$attrsToReflect$": []
|
|
13689
|
-
}; }
|
|
13690
|
-
}
|
|
13691
|
-
|
|
13692
|
-
const sdSelectMultipleCss = () => `sd-select-multiple{display:inline-flex;flex-flow:column nowrap;height:fit-content}sd-select-multiple *:focus,sd-select-multiple *:focus-visible,sd-select-multiple *:focus-within{outline:none !important}sd-select-multiple .sd-select-multiple{width:100%}sd-select-multiple .sd-select-multiple .sd-select-multiple__trigger{padding:4px 28px 4px 12px;display:flex;width:100%;align-items:center;cursor:pointer}.sd-field--disabled sd-select-multiple .sd-select-multiple .sd-select-multiple__trigger{cursor:not-allowed}sd-select-multiple .sd-select-multiple .sd-select-multiple__trigger .sd-select-multiple__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:20px;font-size:12px;font-weight:400;text-align:left}sd-select-multiple .sd-select-multiple .sd-select-multiple__trigger .sd-select-multiple__clear{margin:0 4px;width:8px;height:8px;background-color:transparent;outline:none;border:none}sd-select-multiple .sd-select-multiple__arrow{position:absolute;top:8px;right:8px;width:12px;height:12px;color:#888888;transition:transform 0.3s ease;margin-left:8px}sd-select-multiple .sd-select-multiple__arrow--open{transform:rotate(180deg)}`;
|
|
13693
|
-
|
|
13694
|
-
/**
|
|
13695
|
-
* @deprecated sd-select-v2 (name="multi")를 사용하세요.
|
|
13696
|
-
*/
|
|
13697
|
-
class SdSelectMultiple extends BaseDropdownEvent {
|
|
13698
|
-
constructor(hostRef) {
|
|
13699
|
-
super();
|
|
13700
|
-
registerInstance(this, hostRef);
|
|
13701
|
-
this.update = createEvent(this, "sdUpdate", 7);
|
|
13702
|
-
this.dropDownShow = createEvent(this, "sdDropDownShow", 7);
|
|
13703
|
-
}
|
|
13704
|
-
get el() { return getElement(this); }
|
|
13705
|
-
// props
|
|
13706
|
-
value = null;
|
|
13707
|
-
options = [];
|
|
13708
|
-
placeholder = '선택';
|
|
13709
|
-
optionPlaceholder = '선택지가 없습니다.';
|
|
13710
|
-
width = '200px';
|
|
13711
|
-
dropdownHeight = '260px';
|
|
13712
|
-
autoFocus = false;
|
|
13713
|
-
disabled = false;
|
|
13714
|
-
clearable = false;
|
|
13715
|
-
searchable = false;
|
|
13716
|
-
// props - select multiple specific
|
|
13717
|
-
useAll = false;
|
|
13718
|
-
useCheckbox = false;
|
|
13719
|
-
// props - label
|
|
13720
|
-
label = '';
|
|
13721
|
-
labelWidth = '';
|
|
13722
|
-
icon = undefined;
|
|
13723
|
-
labelTooltip = '';
|
|
13724
|
-
labelTooltipProps = null;
|
|
13725
|
-
// props - form
|
|
13726
|
-
rules = [];
|
|
13727
|
-
error = false;
|
|
13728
|
-
optionRenderer;
|
|
13729
|
-
// states
|
|
13730
|
-
isOpen = false;
|
|
13731
|
-
itemIndex = -1;
|
|
13732
|
-
isScrolled = false;
|
|
13733
|
-
// events
|
|
13734
|
-
update;
|
|
13735
|
-
dropDownShow;
|
|
13736
|
-
selectRef;
|
|
13737
|
-
triggerRef;
|
|
13738
|
-
formField;
|
|
13739
|
-
filteredOptions = [];
|
|
13740
|
-
dropDownWidth = '200px';
|
|
13741
|
-
name = nanoid$1();
|
|
13742
|
-
async sdOpen() {
|
|
13743
|
-
this.isOpen = true;
|
|
13744
|
-
}
|
|
13745
|
-
async sdValidate() {
|
|
13746
|
-
this.formField?.sdValidate();
|
|
13747
|
-
}
|
|
13748
|
-
async sdReset() {
|
|
13749
|
-
this.formField?.sdReset();
|
|
13750
|
-
}
|
|
13751
|
-
async sdResetValidate() {
|
|
13752
|
-
this.formField?.sdResetValidation();
|
|
13753
|
-
}
|
|
13754
|
-
async sdFocus() {
|
|
13755
|
-
this.formField?.sdFocus();
|
|
13756
|
-
}
|
|
13757
|
-
async isOpenChanged() {
|
|
13758
|
-
// Base class의 이벤트 관리 호출 - 다른 select와의 이벤트 충돌 방지
|
|
13759
|
-
this.onDropdownToggle(this.isOpen);
|
|
13760
|
-
this.dropDownShow?.emit({ isOpen: this.isOpen });
|
|
13761
|
-
if (this.isOpen === false) {
|
|
13762
|
-
await this.formField?.sdValidate();
|
|
13763
|
-
}
|
|
13764
|
-
}
|
|
13765
|
-
componentWillLoad() {
|
|
13766
|
-
this.filteredOptions = this.options;
|
|
13767
|
-
this.dropDownWidth = this.width;
|
|
13768
|
-
this.initializeEvent();
|
|
13769
|
-
}
|
|
13770
|
-
componentDidLoad() {
|
|
13771
|
-
if (this.autoFocus) {
|
|
13772
|
-
this.selectRef?.focus();
|
|
13773
|
-
}
|
|
13774
|
-
}
|
|
13775
|
-
// render 이후 label을 제외한 trigger의 너비를 기준으로 dropdown 너비 설정
|
|
13776
|
-
componentDidRender() {
|
|
13777
|
-
const trigger = this.triggerRef;
|
|
13778
|
-
const rect = trigger?.getBoundingClientRect();
|
|
13779
|
-
this.dropDownWidth = rect?.width ? `${rect.width}px` : this.width;
|
|
13780
|
-
}
|
|
13781
|
-
disconnectedCallback() {
|
|
13782
|
-
this.cleanupEvent(); // global dropdown Manager에서 제거 + 이벤트 정리
|
|
13783
|
-
}
|
|
13784
|
-
handleDocumentClick(event) {
|
|
13785
|
-
if (!this.selectRef?.contains(event.target)) {
|
|
13786
|
-
this.isOpen = false;
|
|
13787
|
-
}
|
|
13788
|
-
}
|
|
13789
|
-
handleDocumentKeydown(keyboardEvent) {
|
|
13790
|
-
keyboardEvent.stopPropagation();
|
|
13791
|
-
const targetKey = ['ArrowDown', 'ArrowUp', 'Enter', 'Escape'];
|
|
13792
|
-
if (!targetKey.includes(keyboardEvent.key))
|
|
13793
|
-
return;
|
|
13794
|
-
keyboardEvent.preventDefault();
|
|
13795
|
-
switch (keyboardEvent.key) {
|
|
13796
|
-
case 'ArrowDown':
|
|
13797
|
-
case 'ArrowUp':
|
|
13798
|
-
const keyboardNavigation = new SelectKeyboardNavigation(this.searchable, this.filteredOptions);
|
|
13799
|
-
const nextIndex = keyboardNavigation.getNextIndex(this.itemIndex, keyboardEvent.key);
|
|
13800
|
-
this.itemIndex = nextIndex;
|
|
13801
|
-
break;
|
|
13802
|
-
case 'Enter':
|
|
13803
|
-
const selectedOption = this.filteredOptions[this.itemIndex];
|
|
13804
|
-
if (selectedOption && !selectedOption.disabled) {
|
|
13805
|
-
this.handleOptionSelection(selectedOption);
|
|
13806
|
-
}
|
|
13807
|
-
break;
|
|
13808
|
-
case 'Escape':
|
|
13809
|
-
this.isOpen = false;
|
|
13810
|
-
break;
|
|
13811
|
-
}
|
|
13812
|
-
}
|
|
13813
|
-
handleOptionSelection = (option) => {
|
|
13814
|
-
if (!option || option.disabled)
|
|
13815
|
-
return;
|
|
13816
|
-
const isAlreadySelected = this.value?.some(opt => opt.value === option.value);
|
|
13817
|
-
if (isAlreadySelected) {
|
|
13818
|
-
// 이미 선택된 옵션인 경우, 선택 해제
|
|
13819
|
-
this.value = this.value?.filter(opt => opt.value !== option.value) || null;
|
|
13820
|
-
}
|
|
13821
|
-
else {
|
|
13822
|
-
// 새로운 옵션 선택
|
|
13823
|
-
this.value = [...(this.value || []), option];
|
|
13824
|
-
}
|
|
13825
|
-
this.update?.emit(this.value);
|
|
13826
|
-
};
|
|
13827
|
-
getSelectedOption() {
|
|
13828
|
-
return this.options.filter(option => this.value?.includes(option));
|
|
13829
|
-
}
|
|
13830
|
-
closeDropdown() {
|
|
13831
|
-
this.isOpen = false;
|
|
13832
|
-
}
|
|
13833
|
-
handleTriggerClick = (event) => {
|
|
13834
|
-
event.stopPropagation();
|
|
13835
|
-
if (!this.disabled) {
|
|
13836
|
-
this.isOpen = !this.isOpen;
|
|
13837
|
-
this.dropDownShow?.emit({ isOpen: this.isOpen });
|
|
13838
|
-
}
|
|
13839
|
-
};
|
|
13840
|
-
handleOptionClick = (detail) => {
|
|
13841
|
-
const { option, event } = detail;
|
|
13842
|
-
event.stopPropagation();
|
|
13843
|
-
this.handleOptionSelection(option);
|
|
13844
|
-
};
|
|
13845
|
-
render() {
|
|
13846
|
-
return (hAsync("sd-field", { key: '6fc9d0059e91044ef8e40881276bbef857ef1225', label: this.label, labelWidth: this.labelWidth, name: this.name, rules: this.rules, error: this.error, disabled: this.disabled, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el) }, hAsync("div", { key: 'b2591c655dc27b1db16e8f40c0a33997acbee35b', class: {
|
|
13847
|
-
'sd-select-multiple': true,
|
|
13848
|
-
'sd-select-multiple--open': this.isOpen,
|
|
13849
|
-
'sd-select-multiple--disabled': this.disabled,
|
|
13850
|
-
'sd-select-multiple--error': !!this.error,
|
|
13851
|
-
}, ref: el => (this.selectRef = el) }, this.renderTrigger(), this.renderDropdown())));
|
|
13852
|
-
}
|
|
13853
|
-
renderTrigger() {
|
|
13854
|
-
const selectedOption = this.getSelectedOption();
|
|
13855
|
-
return (hAsync("div", { class: "sd-select-multiple__trigger", tabindex: this.disabled ? -1 : 0, onClick: this.handleTriggerClick, ref: el => (this.triggerRef = el) }, hAsync("span", { class: "sd-select-multiple__value" }, !selectedOption || selectedOption.length === 0
|
|
13856
|
-
? this.placeholder
|
|
13857
|
-
: selectedOption.map(option => option.label).join(', ')), this.clearable && selectedOption?.length > 0 && !this.disabled && (hAsync("sd-icon", { key: "close-icon", name: "close", size: 10, color: "#888", class: "sd-select-multiple__clear", onClick: async (event) => {
|
|
13858
|
-
event.stopPropagation();
|
|
13859
|
-
this.value = null;
|
|
13860
|
-
await this.formField?.sdValidate();
|
|
13861
|
-
} })), hAsync("sd-icon", { key: "arrow-icon", name: "arrowDown", color: "#888", class: { 'sd-select-multiple__arrow': true, 'sd-select-multiple__arrow--open': this.isOpen } })));
|
|
13862
|
-
}
|
|
13863
|
-
renderDropdown() {
|
|
13864
|
-
if (this.isOpen === false)
|
|
13865
|
-
return null;
|
|
13866
|
-
const parentRef = (this.selectRef?.querySelector('.sd-select-multiple__trigger') ||
|
|
13867
|
-
this.selectRef);
|
|
13868
|
-
return (hAsync("sd-portal", { open: this.isOpen, parentRef: parentRef, onSdClose: this.closeDropdown }, hAsync("sd-select-dropdown", { value: this.value, options: this.options, itemIndex: this.itemIndex, width: this.dropDownWidth, dropdownHeight: this.dropdownHeight, searchable: this.searchable, optionPlaceholder: this.optionPlaceholder, useCheckbox: this.useCheckbox, useAll: this.useAll, onSdOptionClick: ({ detail }) => this.handleOptionClick(detail), onSdOptionFiltered: ({ detail }) => (this.filteredOptions = detail) })));
|
|
13869
|
-
}
|
|
13870
|
-
static get watchers() { return {
|
|
13871
|
-
"isOpen": [{
|
|
13872
|
-
"isOpenChanged": 0
|
|
13873
|
-
}]
|
|
13874
|
-
}; }
|
|
13875
|
-
static get style() { return sdSelectMultipleCss(); }
|
|
13876
|
-
static get cmpMeta() { return {
|
|
13877
|
-
"$flags$": 512,
|
|
13878
|
-
"$tagName$": "sd-select-multiple",
|
|
13879
|
-
"$members$": {
|
|
13880
|
-
"value": [1040],
|
|
13881
|
-
"options": [1040],
|
|
13882
|
-
"placeholder": [1],
|
|
13883
|
-
"optionPlaceholder": [1, "option-placeholder"],
|
|
13884
|
-
"width": [1],
|
|
13885
|
-
"dropdownHeight": [1, "dropdown-height"],
|
|
13886
|
-
"autoFocus": [4, "auto-focus"],
|
|
13887
|
-
"disabled": [4],
|
|
13888
|
-
"clearable": [4],
|
|
13889
|
-
"searchable": [4],
|
|
13890
|
-
"useAll": [4, "use-all"],
|
|
13891
|
-
"useCheckbox": [4, "use-checkbox"],
|
|
13892
|
-
"label": [1],
|
|
13893
|
-
"labelWidth": [8, "label-width"],
|
|
13894
|
-
"icon": [16],
|
|
13895
|
-
"labelTooltip": [1, "label-tooltip"],
|
|
13896
|
-
"labelTooltipProps": [16],
|
|
13897
|
-
"rules": [16],
|
|
13898
|
-
"error": [4],
|
|
13899
|
-
"optionRenderer": [16],
|
|
13900
|
-
"isOpen": [32],
|
|
13901
|
-
"itemIndex": [32],
|
|
13902
|
-
"isScrolled": [32],
|
|
13903
|
-
"sdOpen": [64],
|
|
13904
|
-
"sdValidate": [64],
|
|
13905
|
-
"sdReset": [64],
|
|
13906
|
-
"sdResetValidate": [64],
|
|
13907
|
-
"sdFocus": [64]
|
|
13908
|
-
},
|
|
13909
|
-
"$listeners$": undefined,
|
|
13910
|
-
"$lazyBundleId$": "-",
|
|
13911
|
-
"$attrsToReflect$": []
|
|
13912
|
-
}; }
|
|
13913
|
-
}
|
|
13914
|
-
|
|
13915
|
-
const sdSelectMultipleGroupCss = () => `.sd-select-multiple-group__dropdown .sd-select-multiple-group__option-placeholder{height:48px;display:flex;align-items:center;padding:8px 16px;font-size:12px;line-height:0;text-align:left;color:#888888}sd-select-multiple-group{display:inline-flex;flex-flow:column nowrap;width:fit-content;height:fit-content}sd-select-multiple-group:focus,sd-select-multiple-group:focus-visible,sd-select-multiple-group:focus-within{outline:none !important}sd-select-multiple-group .sd-select-multiple-group{width:100%}sd-select-multiple-group .sd-select-multiple-group .sd-select-multiple-group__trigger{padding:4px 20px 4px 12px;display:flex;width:100%;align-items:center;cursor:pointer}.sd-field--disabled sd-select-multiple-group .sd-select-multiple-group .sd-select-multiple-group__trigger{cursor:not-allowed}sd-select-multiple-group .sd-select-multiple-group .sd-select-multiple-group__trigger .sd-select-multiple-group__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:20px;font-size:12px;font-weight:400}sd-select-multiple-group .sd-select-multiple-group .sd-select-multiple-group__trigger .sd-select-multiple-group__clear{margin:0 4px;width:8px;height:8px;background-color:transparent;outline:none;border:none}sd-select-multiple-group .sd-select-multiple-group .sd-select-multiple-group__arrow{position:absolute;top:8px;right:8px;width:12px;height:12px;color:#888888;transition:transform 0.3s ease}sd-select-multiple-group .sd-select-multiple-group .sd-select-multiple-group__arrow--open{transform:rotate(180deg)}.sd-select-multiple-group__dropdown{overflow:auto;width:var(--select-width, 200px);max-height:var(--select-dropdown-height, 260px);padding-bottom:2px;background-color:white;box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.1);border-radius:4px;overflow-y:auto;color:#333333;opacity:0.5;transition:opacity 0.15s ease-in}.sd-select-multiple-group__dropdown--ready{opacity:1}`;
|
|
13916
|
-
|
|
13917
|
-
/**
|
|
13918
|
-
* @deprecated sd-select-v2 (name="multi_depth")를 사용하세요.
|
|
13919
|
-
*/
|
|
13920
|
-
class SdSelectMultipleGroup extends BaseDropdownEvent {
|
|
13921
|
-
constructor(hostRef) {
|
|
13922
|
-
super();
|
|
13923
|
-
registerInstance(this, hostRef);
|
|
13924
|
-
this.update = createEvent(this, "sdUpdate", 7);
|
|
13925
|
-
this.dropDownShow = createEvent(this, "sdDropDownShow", 7);
|
|
13926
|
-
}
|
|
13927
|
-
get el() { return getElement(this); }
|
|
13928
|
-
// props
|
|
13929
|
-
value = null;
|
|
13930
|
-
options = [];
|
|
13931
|
-
placeholder = '선택';
|
|
13932
|
-
optionPlaceholder = '선택지가 없습니다.';
|
|
13933
|
-
width = '200px';
|
|
13934
|
-
dropdownHeight = '260px';
|
|
13935
|
-
disabled = false;
|
|
13936
|
-
clearable = false;
|
|
13937
|
-
searchable = false;
|
|
13938
|
-
useCheckbox = false;
|
|
13939
|
-
useAll = false;
|
|
13940
|
-
allCheckedLabel = '전체';
|
|
13941
|
-
allCheckOptionLabel = '전체';
|
|
13942
|
-
// props - label
|
|
13943
|
-
label = '';
|
|
13944
|
-
labelWidth = '';
|
|
13945
|
-
icon = undefined;
|
|
13946
|
-
labelTooltip = '';
|
|
13947
|
-
labelTooltipProps = null;
|
|
13948
|
-
// props - form
|
|
13949
|
-
rules = [];
|
|
13950
|
-
error = false;
|
|
13951
|
-
// props - custom styles
|
|
13952
|
-
containerStyle = {};
|
|
13953
|
-
triggerStyle = {};
|
|
13954
|
-
dropdownStyle = {};
|
|
13955
|
-
optionStyle = {};
|
|
13956
|
-
labelStyle = {};
|
|
13957
|
-
// props - custom slots
|
|
13958
|
-
optionRenderer;
|
|
13959
|
-
// states
|
|
13960
|
-
filteredOptions = [];
|
|
13961
|
-
isOpen = false;
|
|
13962
|
-
searchText = null;
|
|
13963
|
-
itemIndex = -1;
|
|
13964
|
-
isScrolled = false;
|
|
13965
|
-
isDropdownReady = false;
|
|
13966
|
-
// events
|
|
13967
|
-
update;
|
|
13968
|
-
dropDownShow;
|
|
13969
|
-
selectRef;
|
|
13970
|
-
searchRef;
|
|
13971
|
-
triggerRef;
|
|
13972
|
-
optionRef;
|
|
13973
|
-
dropdownRef;
|
|
13974
|
-
formField;
|
|
13975
|
-
dropDownWidth = '200px';
|
|
13976
|
-
name = nanoid$1();
|
|
13977
|
-
async sdOpen() {
|
|
13978
|
-
await new Promise(resolve => setTimeout(resolve, 0));
|
|
13979
|
-
this.isOpen = true;
|
|
13980
|
-
}
|
|
13981
|
-
async sdValidate() {
|
|
13982
|
-
this.formField?.sdValidate();
|
|
13983
|
-
}
|
|
13984
|
-
async sdReset() {
|
|
13985
|
-
this.formField?.sdReset();
|
|
13986
|
-
}
|
|
13987
|
-
async sdResetValidate() {
|
|
13988
|
-
this.formField?.sdResetValidation();
|
|
13989
|
-
}
|
|
13990
|
-
async sdFocus() {
|
|
13991
|
-
this.formField?.sdFocus();
|
|
13992
|
-
}
|
|
13993
|
-
valueChanged() {
|
|
13994
|
-
this.update?.emit(this.value);
|
|
13995
|
-
}
|
|
13996
|
-
optionsChanged() {
|
|
13997
|
-
this.filteredOptions = this.options;
|
|
13998
|
-
this.filterOptions();
|
|
13999
|
-
}
|
|
14000
|
-
searchTextChanged() {
|
|
14001
|
-
this.filterOptions();
|
|
14002
|
-
}
|
|
14003
|
-
async itemIndexChanged(newIndex, oldIndex) {
|
|
14004
|
-
if (this.searchable) {
|
|
14005
|
-
const searchInput = await this.getNativeInputElement();
|
|
14006
|
-
if (this.itemIndex === -1) {
|
|
14007
|
-
searchInput?.focus({ preventScroll: true });
|
|
14008
|
-
return;
|
|
14009
|
-
}
|
|
14010
|
-
else if (searchInput?.matches(':focus')) {
|
|
14011
|
-
searchInput?.blur();
|
|
14012
|
-
}
|
|
14013
|
-
}
|
|
14014
|
-
const optionElements = Array.from(this.dropdownRef?.querySelectorAll('sd-select-option-group') || []);
|
|
14015
|
-
// useAll 사용시 "전체" 옵션 포함한 인덱스 사용
|
|
14016
|
-
const actualIndex = this.useAll ? this.itemIndex + 1 : this.itemIndex;
|
|
14017
|
-
const currentItem = optionElements?.[actualIndex];
|
|
14018
|
-
if (!currentItem || !this.isOpen)
|
|
14019
|
-
return;
|
|
14020
|
-
this.optionRef = currentItem;
|
|
14021
|
-
const isOptionDisabled = await this.optionRef.isDisabled();
|
|
14022
|
-
if (isOptionDisabled) {
|
|
14023
|
-
newIndex > oldIndex ? this.itemIndex++ : this.itemIndex--;
|
|
14024
|
-
return;
|
|
14025
|
-
}
|
|
14026
|
-
this.scrollToOption(currentItem);
|
|
14027
|
-
}
|
|
14028
|
-
async isOpenChanged() {
|
|
14029
|
-
// Base class의 이벤트 관리 호출 - 다른 select와의 이벤트 충돌 방지
|
|
14030
|
-
this.onDropdownToggle(this.isOpen);
|
|
14031
|
-
this.dropDownShow?.emit({ isOpen: this.isOpen });
|
|
14032
|
-
this.isDropdownReady = false;
|
|
14033
|
-
if (this.isOpen === false) {
|
|
14034
|
-
await this.formField?.sdValidate();
|
|
14035
|
-
return;
|
|
14036
|
-
}
|
|
14037
|
-
// DOM 렌더링을 기다리기 위해 이중 requestAnimationFrame 사용 - (레이아웃/스타일 계산 - 페인트 이후)
|
|
14038
|
-
requestAnimationFrame(() => {
|
|
14039
|
-
requestAnimationFrame(async () => {
|
|
14040
|
-
const selectedOptions = this.getSelectedOption();
|
|
14041
|
-
// 선택된 옵션이 있으면 첫 번째 선택된 항목으로 스크롤
|
|
14042
|
-
if (selectedOptions && selectedOptions.length > 0) {
|
|
14043
|
-
const selectedIndex = this.options.indexOf(selectedOptions[0]);
|
|
14044
|
-
const optionElements = Array.from(this.dropdownRef?.querySelectorAll('sd-select-option-group') || []);
|
|
14045
|
-
// useAll 사용시 "전체" 옵션 포함한 인덱스 사용
|
|
14046
|
-
const actualIndex = this.useAll ? selectedIndex + 1 : selectedIndex;
|
|
14047
|
-
// 선택된 옵션이 화면 가운데에 오도록 index 조정
|
|
14048
|
-
const targetIndex = Math.min(actualIndex + 4, optionElements.length - 1);
|
|
14049
|
-
const currentItem = optionElements?.[targetIndex];
|
|
14050
|
-
if (currentItem) {
|
|
14051
|
-
this.scrollToOption(currentItem);
|
|
14052
|
-
}
|
|
14053
|
-
}
|
|
14054
|
-
this.isDropdownReady = true;
|
|
14055
|
-
if (this.searchable) {
|
|
14056
|
-
const searchInput = await this.getNativeInputElement();
|
|
14057
|
-
if (searchInput) {
|
|
14058
|
-
requestAnimationFrame(() => {
|
|
14059
|
-
searchInput.focus({ preventScroll: true });
|
|
14060
|
-
});
|
|
14061
|
-
}
|
|
14062
|
-
}
|
|
14063
|
-
});
|
|
14064
|
-
});
|
|
14065
|
-
}
|
|
14066
|
-
componentWillLoad() {
|
|
14067
|
-
this.filteredOptions = this.options;
|
|
14068
|
-
this.dropDownWidth = this.width;
|
|
14069
|
-
this.initializeEvent();
|
|
14070
|
-
}
|
|
14071
|
-
// render 이후 label을 제외한 trigger의 너비를 기준으로 dropdown 너비 설정
|
|
14072
|
-
componentDidRender() {
|
|
14073
|
-
const trigger = this.triggerRef;
|
|
14074
|
-
const rect = trigger?.getBoundingClientRect();
|
|
14075
|
-
this.dropDownWidth = rect?.width ? `${rect.width}px` : this.width;
|
|
14076
|
-
}
|
|
14077
|
-
disconnectedCallback() {
|
|
14078
|
-
this.cleanupEvent(); // global dropdown Manager에서 제거 + 이벤트 정리
|
|
14079
|
-
}
|
|
14080
|
-
handleDocumentClick(event) {
|
|
14081
|
-
if (!this.selectRef?.contains(event.target)) {
|
|
14082
|
-
this.isOpen = false;
|
|
14083
|
-
}
|
|
14084
|
-
}
|
|
14085
|
-
handleDocumentKeydown(keyboardEvent) {
|
|
14086
|
-
keyboardEvent.stopPropagation();
|
|
14087
|
-
const targetKey = ['ArrowDown', 'ArrowUp', 'Enter', 'Escape'];
|
|
14088
|
-
if (!targetKey.includes(keyboardEvent.key))
|
|
14089
|
-
return;
|
|
14090
|
-
keyboardEvent.preventDefault();
|
|
14091
|
-
switch (keyboardEvent.key) {
|
|
14092
|
-
case 'ArrowDown':
|
|
14093
|
-
case 'ArrowUp':
|
|
14094
|
-
const keyboardNavigation = new SelectKeyboardNavigation(this.searchable, this.filteredOptions);
|
|
14095
|
-
const nextIndex = keyboardNavigation.getNextIndex(this.itemIndex, keyboardEvent.key);
|
|
14096
|
-
this.itemIndex = nextIndex;
|
|
14097
|
-
break;
|
|
14098
|
-
case 'Enter':
|
|
14099
|
-
const selectedOption = this.filteredOptions[this.itemIndex];
|
|
14100
|
-
if (selectedOption && !selectedOption.disabled) {
|
|
14101
|
-
this.handleOptionSelection(selectedOption);
|
|
14102
|
-
}
|
|
14103
|
-
break;
|
|
14104
|
-
case 'Escape':
|
|
14105
|
-
this.isOpen = false;
|
|
14106
|
-
break;
|
|
14107
|
-
}
|
|
14108
|
-
}
|
|
14109
|
-
// event handlers
|
|
14110
|
-
handleTriggerClick = (event) => {
|
|
14111
|
-
event.stopPropagation();
|
|
14112
|
-
if (!this.disabled) {
|
|
14113
|
-
this.isOpen = !this.isOpen;
|
|
14114
|
-
this.dropDownShow?.emit({ isOpen: this.isOpen });
|
|
14115
|
-
}
|
|
14116
|
-
};
|
|
14117
|
-
handleAllOptionClick = (detail) => {
|
|
14118
|
-
if (detail.isSelected) {
|
|
14119
|
-
// 이미 선택된 옵션인 경우, 선택 해제
|
|
14120
|
-
const filterDisabledOptions = this.filteredOptions.filter(opt => opt.type === 'item' && !opt.disabled);
|
|
14121
|
-
this.value =
|
|
14122
|
-
this.value?.filter(selected => !filterDisabledOptions.some(opt => opt.value === selected.value)) || this.value;
|
|
14123
|
-
}
|
|
14124
|
-
else {
|
|
14125
|
-
// 새로운 옵션 선택
|
|
14126
|
-
const valueSet = new Set([
|
|
14127
|
-
...(this.value || []),
|
|
14128
|
-
...this.filteredOptions.filter(opt => opt.type === 'item' && !opt.disabled),
|
|
14129
|
-
]);
|
|
14130
|
-
this.value = Array.from(valueSet);
|
|
14131
|
-
}
|
|
14132
|
-
};
|
|
14133
|
-
handleOptionClick = (detail) => {
|
|
14134
|
-
const { option, event } = detail;
|
|
14135
|
-
event.stopPropagation();
|
|
14136
|
-
if (option.type === 'group')
|
|
14137
|
-
this.handleGroupOptionClick(detail);
|
|
14138
|
-
if (option.type === 'subgroup')
|
|
14139
|
-
this.handleSubGroupOptionClick(detail);
|
|
14140
|
-
if (option.type === 'item')
|
|
14141
|
-
this.handleOptionSelection(option);
|
|
14142
|
-
};
|
|
14143
|
-
handleGroupOptionClick = (detail) => {
|
|
14144
|
-
const { option, isSelected } = detail;
|
|
14145
|
-
const childOptions = this.filteredOptions.filter(opt => opt.parent === option.value && !opt.disabled);
|
|
14146
|
-
childOptions.forEach(subgroup => {
|
|
14147
|
-
this.handleSubGroupOptionClick({
|
|
14148
|
-
option: subgroup,
|
|
14149
|
-
isSelected: isSelected || isSelected === null,
|
|
14150
|
-
});
|
|
14151
|
-
});
|
|
14152
|
-
};
|
|
14153
|
-
handleSubGroupOptionClick = (detail) => {
|
|
14154
|
-
const { option, isSelected } = detail;
|
|
14155
|
-
const childOptions = this.filteredOptions.filter(opt => opt.parent === option.value && !opt.disabled);
|
|
14156
|
-
if (isSelected || isSelected === null) {
|
|
14157
|
-
// 모든 자식 옵션이 선택된 경우, 모두 선택 해제
|
|
14158
|
-
this.value =
|
|
14159
|
-
this.value?.filter(selected => !childOptions.some(child => child.value === selected.value)) ||
|
|
14160
|
-
null;
|
|
14161
|
-
}
|
|
14162
|
-
else {
|
|
14163
|
-
// 일부 또는 전체 자식 옵션이 선택되지 않은 경우, 모두 선택
|
|
14164
|
-
const newSelections = childOptions.filter(child => !this.value?.some(selected => selected.value === child.value));
|
|
14165
|
-
this.value = [...(this.value || []), ...newSelections];
|
|
14166
|
-
}
|
|
14167
|
-
};
|
|
14168
|
-
filterOptions() {
|
|
14169
|
-
if (!this.searchText || this.searchText.trim() === '') {
|
|
14170
|
-
// 검색어가 없으면 전체 옵션 표시
|
|
14171
|
-
this.filteredOptions = this.options;
|
|
14172
|
-
return;
|
|
14173
|
-
}
|
|
14174
|
-
const searchTerm = this.searchText.toLowerCase();
|
|
14175
|
-
const matchedOptions = new Set();
|
|
14176
|
-
// 1. 직접 매칭되는 옵션들 찾기
|
|
14177
|
-
this.options.forEach(option => {
|
|
14178
|
-
if (option.label.toLowerCase().includes(searchTerm)) {
|
|
14179
|
-
matchedOptions.add(option);
|
|
14180
|
-
// 매칭된 옵션의 상위 그룹들도 포함
|
|
14181
|
-
this.addParentGroups(option, matchedOptions);
|
|
14182
|
-
}
|
|
14183
|
-
});
|
|
14184
|
-
// 2. Set을 배열로 변환하고 원본 순서 유지
|
|
14185
|
-
this.filteredOptions = this.options.filter(option => matchedOptions.has(option));
|
|
14186
|
-
}
|
|
14187
|
-
addParentGroups(option, matchedSet) {
|
|
14188
|
-
if (!option.parent)
|
|
14189
|
-
return;
|
|
14190
|
-
const parentOption = this.options.find(opt => opt.value === option.parent);
|
|
14191
|
-
if (parentOption && !matchedSet.has(parentOption)) {
|
|
14192
|
-
matchedSet.add(parentOption);
|
|
14193
|
-
// 재귀적으로 상위 그룹들도 추가
|
|
14194
|
-
this.addParentGroups(parentOption, matchedSet);
|
|
14195
|
-
}
|
|
14196
|
-
}
|
|
14197
|
-
getSelectedOption() {
|
|
14198
|
-
return this.options.filter(option => this.value?.includes(option));
|
|
14199
|
-
}
|
|
14200
|
-
handleDropdownScroll = (event) => {
|
|
14201
|
-
const target = event.target;
|
|
14202
|
-
const scrollTop = target.scrollTop;
|
|
14203
|
-
// 스크롤이 조금이라도 되면 그림자 표시
|
|
14204
|
-
this.isScrolled = scrollTop > 0;
|
|
14205
|
-
};
|
|
14206
|
-
async getNativeInputElement() {
|
|
14207
|
-
if (this.searchRef) {
|
|
14208
|
-
return this.searchRef.sdGetNativeElement();
|
|
14209
|
-
}
|
|
14210
|
-
return null;
|
|
14211
|
-
}
|
|
14212
|
-
handleOptionSelection = (option) => {
|
|
14213
|
-
if (!option || option.disabled)
|
|
14214
|
-
return;
|
|
14215
|
-
const isAlreadySelected = this.value?.some(opt => opt.value === option.value);
|
|
14216
|
-
if (isAlreadySelected) {
|
|
14217
|
-
// 이미 선택된 옵션인 경우, 선택 해제
|
|
14218
|
-
this.value = this.value?.filter(opt => opt.value !== option.value) || null;
|
|
14219
|
-
}
|
|
14220
|
-
else {
|
|
14221
|
-
// 새로운 옵션 선택
|
|
14222
|
-
this.value = [...(this.value || []), option];
|
|
14223
|
-
}
|
|
14224
|
-
};
|
|
14225
|
-
getAllItemsUnderOption(parentOption, includeDisabled = false) {
|
|
14226
|
-
const filterChildrenWithParent = (option) => option.parent === parentOption.value && (includeDisabled || !option.disabled);
|
|
14227
|
-
if (parentOption.type === 'subgroup') {
|
|
14228
|
-
return this.filteredOptions.filter(option => filterChildrenWithParent(option) && option.type === 'item');
|
|
14229
|
-
}
|
|
14230
|
-
const allItems = [];
|
|
14231
|
-
const childOptions = this.filteredOptions.filter(filterChildrenWithParent);
|
|
14232
|
-
const subgroupOptions = childOptions.filter(option => option.type === 'subgroup');
|
|
14233
|
-
subgroupOptions.forEach(subgroup => {
|
|
14234
|
-
const itemsUnderSubgroup = this.filteredOptions.filter(option => option.parent === subgroup.value &&
|
|
14235
|
-
option.type === 'item' &&
|
|
14236
|
-
(includeDisabled ? true : !option.disabled));
|
|
14237
|
-
allItems.push(...itemsUnderSubgroup);
|
|
14238
|
-
});
|
|
14239
|
-
const directItems = childOptions.filter(option => option.type === 'item');
|
|
14240
|
-
allItems.push(...directItems);
|
|
14241
|
-
return allItems;
|
|
14242
|
-
}
|
|
14243
|
-
isAllChildrenSelected(groupOption) {
|
|
14244
|
-
const allItems = this.getAllItemsUnderOption(groupOption);
|
|
14245
|
-
if (allItems.length === 0)
|
|
14246
|
-
return false;
|
|
14247
|
-
const selectedItems = allItems.filter(item => this.value?.some(selected => selected.value === item.value));
|
|
14248
|
-
if (selectedItems.length === allItems.length)
|
|
14249
|
-
return true;
|
|
14250
|
-
if (selectedItems.length > 0)
|
|
14251
|
-
return null;
|
|
14252
|
-
return false;
|
|
14253
|
-
}
|
|
14254
|
-
getChildrenOptions(parentOption) {
|
|
14255
|
-
const allItems = this.getAllItemsUnderOption(parentOption, true);
|
|
14256
|
-
const selectedCount = allItems.filter(item => this.value?.some(val => val.value === item.value)).length;
|
|
14257
|
-
return {
|
|
14258
|
-
selectedCount,
|
|
14259
|
-
totalCount: allItems.length,
|
|
14260
|
-
};
|
|
14261
|
-
}
|
|
14262
|
-
isAllOptionsSelected() {
|
|
14263
|
-
if (!this.value || this.value.length === 0)
|
|
14264
|
-
return false;
|
|
14265
|
-
const selectableItems = this.options.filter(opt => opt.type === 'item' && !opt.disabled);
|
|
14266
|
-
if (selectableItems.length === 0)
|
|
14267
|
-
return false;
|
|
14268
|
-
const selectedValues = new Set(this.value.map(v => v.value));
|
|
14269
|
-
return selectableItems.every(option => selectedValues.has(option.value));
|
|
14270
|
-
}
|
|
14271
|
-
getTriggerLabel() {
|
|
14272
|
-
const selectedOption = this.getSelectedOption();
|
|
14273
|
-
if (!selectedOption)
|
|
14274
|
-
return '선택';
|
|
14275
|
-
if (selectedOption.length === 0)
|
|
14276
|
-
return this.placeholder;
|
|
14277
|
-
const isAllChecked = this.isAllOptionsSelected();
|
|
14278
|
-
return isAllChecked
|
|
14279
|
-
? this.allCheckedLabel
|
|
14280
|
-
: selectedOption.map(option => option.label).join(', ');
|
|
14281
|
-
}
|
|
14282
|
-
closeDropdown() {
|
|
14283
|
-
this.isOpen = false;
|
|
14284
|
-
}
|
|
14285
|
-
async scrollToOption(optionElement) {
|
|
14286
|
-
if (!this.dropdownRef || !optionElement)
|
|
14287
|
-
return;
|
|
14288
|
-
requestAnimationFrame(() => {
|
|
14289
|
-
const dropdown = this.dropdownRef;
|
|
14290
|
-
const optionTop = optionElement.offsetTop;
|
|
14291
|
-
const optionHeight = optionElement.offsetHeight;
|
|
14292
|
-
const dropdownScrollTop = dropdown.scrollTop;
|
|
14293
|
-
const dropdownHeight = dropdown.clientHeight;
|
|
14294
|
-
const searchContainer = dropdown.querySelector('.sd-select-multiple-group__search-container');
|
|
14295
|
-
const searchOffset = searchContainer ? searchContainer.offsetHeight : 0;
|
|
14296
|
-
const visibleContentHeight = dropdownHeight - searchOffset;
|
|
14297
|
-
const visibleTop = dropdownScrollTop + searchOffset;
|
|
14298
|
-
const visibleBottom = dropdownScrollTop + dropdownHeight;
|
|
14299
|
-
if (optionTop < visibleTop) {
|
|
14300
|
-
dropdown.scrollTo({ top: optionTop - searchOffset, behavior: 'instant' });
|
|
14301
|
-
}
|
|
14302
|
-
else if (optionTop + optionHeight > visibleBottom) {
|
|
14303
|
-
dropdown.scrollTo({
|
|
14304
|
-
top: optionTop + optionHeight - visibleContentHeight - searchOffset,
|
|
14305
|
-
behavior: 'instant',
|
|
14306
|
-
});
|
|
14307
|
-
}
|
|
14308
|
-
});
|
|
14309
|
-
}
|
|
14310
|
-
render() {
|
|
14311
|
-
return (hAsync("sd-field", { key: '4140b6529565f97fa65d81ae1462108476d52bcc', label: this.label, labelWidth: this.labelWidth, name: this.name, rules: this.rules, error: this.error, disabled: this.disabled, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), style: { '--field-width': this.width || '200px' } }, hAsync("div", { key: '2dab2697f3e375d214b66464b0f57aa32e77757b', class: {
|
|
14312
|
-
'sd-select-multiple-group': true,
|
|
14313
|
-
'sd-select-multiple-group--open': this.isOpen,
|
|
14314
|
-
'sd-select-multiple-group--disabled': this.disabled,
|
|
14315
|
-
'sd-select-multiple-group--label': !!this.label,
|
|
14316
|
-
}, ref: el => (this.selectRef = el) }, this.renderTrigger(), this.renderDropdown())));
|
|
14317
|
-
}
|
|
14318
|
-
renderTrigger() {
|
|
14319
|
-
const selectedOption = this.getSelectedOption();
|
|
14320
|
-
return (hAsync("div", { class: "sd-select-multiple-group__trigger", tabindex: this.disabled ? -1 : 0, onClick: this.handleTriggerClick, style: this.triggerStyle }, hAsync("span", { class: "sd-select-multiple-group__value" }, this.getTriggerLabel()), this.clearable && selectedOption?.length > 0 && !this.disabled && (hAsync("sd-icon", { key: "close-icon", name: "close", size: 10, color: "#888", class: "sd-select-multiple-group__clear", onClick: async (event) => {
|
|
14321
|
-
event.stopPropagation();
|
|
14322
|
-
this.value = null;
|
|
14323
|
-
await this.formField?.sdValidate();
|
|
14324
|
-
} })), hAsync("sd-icon", { key: "arrow-icon", name: "arrowDown", color: "#888", class: {
|
|
14325
|
-
'sd-select-multiple-group__arrow': true,
|
|
14326
|
-
'sd-select-multiple-group__arrow--open': this.isOpen,
|
|
14327
|
-
} })));
|
|
14328
|
-
}
|
|
14329
|
-
renderDropdown() {
|
|
14330
|
-
const style = {
|
|
14331
|
-
'--select-width': this.dropDownWidth || '200px',
|
|
14332
|
-
'--select-dropdown-height': this.dropdownHeight || '260px',
|
|
14333
|
-
};
|
|
14334
|
-
if (this.isOpen === false)
|
|
14335
|
-
return null;
|
|
14336
|
-
return (hAsync("sd-portal", { open: this.isOpen, parentRef: this.selectRef, onSdClose: this.closeDropdown }, hAsync("div", { style: { width: '0', height: '0', overflow: 'visible' } }, hAsync("div", { class: {
|
|
14337
|
-
'sd-select-multiple-group__dropdown': true,
|
|
14338
|
-
'sd-select-multiple-group__dropdown--ready': this.isDropdownReady,
|
|
14339
|
-
}, style: { ...style, ...this.dropdownStyle }, onScroll: this.handleDropdownScroll, ref: el => (this.dropdownRef = el) }, this.searchable && (hAsync("sd-select-search-input", { ref: el => (this.searchRef = el), isScrolled: this.isScrolled, searchText: this.searchText, onSdSearchInput: (event) => (this.searchText = event.detail || ''), onSdSearchFocus: () => (this.itemIndex = -1) })), this.filteredOptions.length > 0 ? (hAsync(Fragment, null, this.useAll && (hAsync("sd-select-option-group", { option: { label: this.allCheckOptionLabel, value: '', type: 'all' }, index: 0, isSelected: this.isAllOptionsSelected(), isFocused: this.itemIndex === 0, optionStyle: this.optionStyle, onOptionClick: ({ detail, }) => this.handleAllOptionClick(detail), useCheckbox: this.useCheckbox, useIndicator: false })), this.filteredOptions.map((option, index) => (hAsync("slot", { name: `option-${option.value}` }, hAsync("sd-select-option-group", { option: option, index: index, isSelected: option.type === 'item'
|
|
14340
|
-
? this.value?.some(selected => selected.value === option.value)
|
|
14341
|
-
: this.isAllChildrenSelected(option), isFocused: index === this.itemIndex, optionStyle: this.optionStyle, onOptionClick: ({ detail, }) => {
|
|
14342
|
-
if (option.type !== 'item' && !this.useCheckbox) {
|
|
14343
|
-
return;
|
|
14344
|
-
}
|
|
14345
|
-
this.handleOptionClick(detail);
|
|
14346
|
-
}, useCheckbox: this.useCheckbox, ...(option.type !== 'item' && { countInfo: this.getChildrenOptions(option) }) })))))) : (hAsync("slot", { name: "option-placeholder" }, hAsync("div", { class: 'sd-select-multiple-group__option-placeholder', style: this.optionStyle }, this.optionPlaceholder)))))));
|
|
14347
|
-
}
|
|
14348
|
-
static get watchers() { return {
|
|
14349
|
-
"value": [{
|
|
14350
|
-
"valueChanged": 0
|
|
14351
|
-
}],
|
|
14352
|
-
"options": [{
|
|
14353
|
-
"optionsChanged": 0
|
|
14354
|
-
}],
|
|
14355
|
-
"searchText": [{
|
|
14356
|
-
"searchTextChanged": 0
|
|
14357
|
-
}],
|
|
14358
|
-
"itemIndex": [{
|
|
14359
|
-
"itemIndexChanged": 0
|
|
14360
|
-
}],
|
|
14361
|
-
"isOpen": [{
|
|
14362
|
-
"isOpenChanged": 0
|
|
14363
|
-
}]
|
|
14364
|
-
}; }
|
|
14365
|
-
static get style() { return sdSelectMultipleGroupCss(); }
|
|
14366
|
-
static get cmpMeta() { return {
|
|
14367
|
-
"$flags$": 772,
|
|
14368
|
-
"$tagName$": "sd-select-multiple-group",
|
|
14369
|
-
"$members$": {
|
|
14370
|
-
"value": [1040],
|
|
14371
|
-
"options": [1040],
|
|
14372
|
-
"placeholder": [1],
|
|
14373
|
-
"optionPlaceholder": [1, "option-placeholder"],
|
|
14374
|
-
"width": [1],
|
|
14375
|
-
"dropdownHeight": [1, "dropdown-height"],
|
|
14376
|
-
"disabled": [4],
|
|
14377
|
-
"clearable": [4],
|
|
14378
|
-
"searchable": [4],
|
|
14379
|
-
"useCheckbox": [4, "use-checkbox"],
|
|
14380
|
-
"useAll": [4, "use-all"],
|
|
14381
|
-
"allCheckedLabel": [1, "all-checked-label"],
|
|
14382
|
-
"allCheckOptionLabel": [1, "all-check-option-label"],
|
|
14383
|
-
"label": [1],
|
|
14384
|
-
"labelWidth": [8, "label-width"],
|
|
14385
|
-
"icon": [16],
|
|
14386
|
-
"labelTooltip": [1, "label-tooltip"],
|
|
14387
|
-
"labelTooltipProps": [16],
|
|
14388
|
-
"rules": [16],
|
|
14389
|
-
"error": [4],
|
|
14390
|
-
"containerStyle": [16],
|
|
14391
|
-
"triggerStyle": [16],
|
|
14392
|
-
"dropdownStyle": [16],
|
|
14393
|
-
"optionStyle": [16],
|
|
14394
|
-
"labelStyle": [16],
|
|
14395
|
-
"optionRenderer": [16],
|
|
14396
|
-
"filteredOptions": [32],
|
|
14397
|
-
"isOpen": [32],
|
|
14398
|
-
"searchText": [32],
|
|
14399
|
-
"itemIndex": [32],
|
|
14400
|
-
"isScrolled": [32],
|
|
14401
|
-
"isDropdownReady": [32],
|
|
14402
|
-
"sdOpen": [64],
|
|
14403
|
-
"sdValidate": [64],
|
|
14404
|
-
"sdReset": [64],
|
|
14405
|
-
"sdResetValidate": [64],
|
|
14406
|
-
"sdFocus": [64]
|
|
14407
|
-
},
|
|
14408
|
-
"$listeners$": undefined,
|
|
14409
|
-
"$lazyBundleId$": "-",
|
|
14410
|
-
"$attrsToReflect$": []
|
|
14411
|
-
}; }
|
|
14412
|
-
}
|
|
14413
|
-
|
|
14414
|
-
const sdSelectOptionCss = () => `sd-select-option{display:block;height:fit-content;line-height:0}sd-select-option .sd-select__option{display:flex;padding:4px 12px;font-size:12px;line-height:20px;cursor:pointer}sd-select-option .sd-select__option__checkbox-wrapper{display:flex;width:100%;column-gap:8px;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}sd-select-option .sd-select__option--focused{background-color:#E6F1FF}sd-select-option .sd-select__option--selected:not(:hover):not(.sd-select__option--use-checkbox),sd-select-option .sd-select__option--focused:not(:hover):not(.sd-select__option--use-checkbox){color:#0075FF;font-weight:700}sd-select-option .sd-select__option--disabled{color:#AAAAAA;cursor:not-allowed}sd-select-option .sd-select__option:hover:not(.sd-select__option--disabled){background-color:#0075FF;color:white}`;
|
|
14415
|
-
|
|
14416
|
-
class SdSelectOption {
|
|
14417
|
-
constructor(hostRef) {
|
|
14418
|
-
registerInstance(this, hostRef);
|
|
14419
|
-
this.optionClick = createEvent(this, "optionClick", 7);
|
|
14420
|
-
}
|
|
14421
|
-
get el() { return getElement(this); }
|
|
14422
|
-
option;
|
|
14423
|
-
index;
|
|
14424
|
-
isSelected = false;
|
|
14425
|
-
isFocused = false;
|
|
14426
|
-
optionStyle;
|
|
14427
|
-
disabled = false;
|
|
14428
|
-
useCheckbox = false;
|
|
14429
|
-
isHovered = false;
|
|
14430
|
-
async sdIsDisabled() {
|
|
14431
|
-
return !!this.option.disabled;
|
|
14432
|
-
}
|
|
14433
|
-
optionClick;
|
|
14434
|
-
handleClick = (event) => {
|
|
14435
|
-
event.stopPropagation();
|
|
14436
|
-
if (!this.option.disabled && !this.disabled) {
|
|
14437
|
-
this.optionClick.emit({
|
|
14438
|
-
option: this.option,
|
|
14439
|
-
index: this.index,
|
|
14440
|
-
event,
|
|
14441
|
-
});
|
|
14442
|
-
}
|
|
14443
|
-
};
|
|
14444
|
-
render() {
|
|
14445
|
-
return (hAsync("div", { key: '413176678e27ad80c3ba51f8e32681f017d210ac', class: {
|
|
14446
|
-
'sd-select__option': true,
|
|
14447
|
-
'sd-select__option--selected': this.isSelected,
|
|
14448
|
-
'sd-select__option--disabled': !!this.option.disabled,
|
|
14449
|
-
'sd-select__option--focused': this.isFocused,
|
|
14450
|
-
'sd-select__option--use-checkbox': this.useCheckbox,
|
|
14451
|
-
}, onMouseEnter: () => (this.isHovered = true), onMouseLeave: () => (this.isHovered = false), style: this.optionStyle, "data-index": this.index, onClick: this.handleClick }, this.useCheckbox ? (hAsync("div", { class: "sd-select__option__checkbox-wrapper" }, hAsync("sd-checkbox", { value: this.isSelected, disabled: this.option.disabled,
|
|
14452
|
-
// checkboxStyle={
|
|
14453
|
-
// !this.isSelected
|
|
14454
|
-
// ? { borderColor: '#888' }
|
|
14455
|
-
// : this.isHovered
|
|
14456
|
-
// ? { borderColor: 'white' }
|
|
14457
|
-
// : { borderColor: '#0075ff' }
|
|
14458
|
-
// }
|
|
14459
|
-
onClick: e => {
|
|
14460
|
-
e.preventDefault();
|
|
14461
|
-
this.handleClick(e);
|
|
14462
|
-
} }), hAsync("span", { class: "sd-select__option-label" }, this.option.label))) : (this.option.label)));
|
|
14463
|
-
}
|
|
14464
|
-
static get style() { return sdSelectOptionCss(); }
|
|
14465
|
-
static get cmpMeta() { return {
|
|
14466
|
-
"$flags$": 512,
|
|
14467
|
-
"$tagName$": "sd-select-option",
|
|
14468
|
-
"$members$": {
|
|
14469
|
-
"option": [16],
|
|
14470
|
-
"index": [2],
|
|
14471
|
-
"isSelected": [4, "is-selected"],
|
|
14472
|
-
"isFocused": [4, "is-focused"],
|
|
14473
|
-
"optionStyle": [16],
|
|
14474
|
-
"disabled": [4],
|
|
14475
|
-
"useCheckbox": [4, "use-checkbox"],
|
|
14476
|
-
"isHovered": [32],
|
|
14477
|
-
"sdIsDisabled": [64]
|
|
14478
|
-
},
|
|
14479
|
-
"$listeners$": undefined,
|
|
14480
|
-
"$lazyBundleId$": "-",
|
|
14481
|
-
"$attrsToReflect$": []
|
|
14482
|
-
}; }
|
|
14483
|
-
}
|
|
14484
|
-
|
|
14485
|
-
const sdSelectOptionGroupCss = () => `sd-select-option-group{display:block;height:fit-content}sd-select-option-group .sd-select__option-group{display:flex;padding:4px 12px;padding-left:12px;font-size:12px;line-height:20px;cursor:pointer}sd-select-option-group .sd-select__option-group.sd-select__option-group--group:not(.sd-select__option-group--use-checkbox),sd-select-option-group .sd-select__option-group.sd-select__option-group--subgroup:not(.sd-select__option-group--use-checkbox){cursor:default !important}sd-select-option-group .sd-select__option-group.sd-select__option-group--group{background-color:#F5FAFF !important;color:#333333 !important;font-weight:700}sd-select-option-group .sd-select__option-group.sd-select__option-group--subgroup{padding-left:20px;background-color:#F9F9F9 !important;color:#333333 !important;font-weight:500}sd-select-option-group .sd-select__option-group.sd-select__option-group--item{padding-left:28px}sd-select-option-group .sd-select__option-group sd-checkbox__bg{border-color:#888888}sd-select-option-group .sd-select__option-group__label-wrapper{display:flex;width:100%;column-gap:8px;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}sd-select-option-group .sd-select__option-group__label-wrapper sd-checkbox{flex-shrink:0}sd-select-option-group .sd-select__option-group__label-wrapper .sd-select__option-group-label{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}sd-select-option-group .sd-select__option-group__label-wrapper .sd-select__option-group__count-indicator{width:fit-content;flex-shrink:0;font-size:12px;font-weight:500;color:#888888}sd-select-option-group .sd-select__option-group--focused{background-color:#E6F1FF}sd-select-option-group .sd-select__option-group--selected.sd-select__option-group--item:not(:hover):not(.sd-select__option-group--use-checkbox),sd-select-option-group .sd-select__option-group--focused.sd-select__option-group--item:not(:hover):not(.sd-select__option-group--use-checkbox){color:#0075FF;font-weight:700}sd-select-option-group .sd-select__option-group--disabled{color:#AAAAAA;cursor:not-allowed}sd-select-option-group .sd-select__option-group:hover:not(.sd-select__option-group--disabled){background-color:#0075FF;color:white}sd-select-option-group .sd-select__option-group:hover.sd-select__option-group--selected:not(.sd-select__option-group--group):not(.sd-select__option-group--subgroup) sd-checkbox .sd-checkbox__bg{border-color:white !important}`;
|
|
14486
|
-
|
|
14487
|
-
class SdSelectOptionGroup {
|
|
14488
|
-
constructor(hostRef) {
|
|
14489
|
-
registerInstance(this, hostRef);
|
|
14490
|
-
this.optionClick = createEvent(this, "optionClick", 7);
|
|
14491
|
-
}
|
|
14492
|
-
get el() { return getElement(this); }
|
|
14493
|
-
option;
|
|
14494
|
-
index;
|
|
14495
|
-
isSelected = false;
|
|
14496
|
-
isFocused = false;
|
|
14497
|
-
optionStyle;
|
|
14498
|
-
disabled = false;
|
|
14499
|
-
useCheckbox = false;
|
|
14500
|
-
useIndicator = true;
|
|
14501
|
-
countInfo = {
|
|
14502
|
-
selectedCount: 0,
|
|
14503
|
-
totalCount: 0,
|
|
14504
|
-
};
|
|
14505
|
-
isHovered = false;
|
|
14506
|
-
async isDisabled() {
|
|
14507
|
-
return !!this.option.disabled || this.option.type === 'group' || this.option.type === 'subgroup';
|
|
14508
|
-
}
|
|
14509
|
-
optionClick;
|
|
14510
|
-
handleClick = (option, isSelected, event) => {
|
|
14511
|
-
event.stopPropagation();
|
|
14512
|
-
if (option.type === 'group' || option.type === 'subgroup') {
|
|
14513
|
-
this.optionClick.emit({
|
|
14514
|
-
option: this.option,
|
|
14515
|
-
isSelected,
|
|
14516
|
-
index: this.index,
|
|
14517
|
-
event,
|
|
14518
|
-
});
|
|
14519
|
-
return;
|
|
14520
|
-
}
|
|
14521
|
-
if (!this.option.disabled && !this.disabled) {
|
|
14522
|
-
this.optionClick.emit({
|
|
14523
|
-
option: this.option,
|
|
14524
|
-
isSelected,
|
|
14525
|
-
index: this.index,
|
|
14526
|
-
event,
|
|
14527
|
-
});
|
|
14528
|
-
}
|
|
14529
|
-
};
|
|
14530
|
-
render() {
|
|
14531
|
-
return (hAsync("div", { key: '647a7be115df96fe30d3b69d3b09ee45d229d86c', class: {
|
|
14532
|
-
'sd-select__option-group': true,
|
|
14533
|
-
'sd-select__option-group--selected': !!this.isSelected,
|
|
14534
|
-
'sd-select__option-group--disabled': !!this.option.disabled,
|
|
14535
|
-
'sd-select__option-group--focused': this.isFocused,
|
|
14536
|
-
'sd-select__option-group--use-checkbox': this.useCheckbox,
|
|
14537
|
-
'sd-select__option-group--group': this.option.type === 'group',
|
|
14538
|
-
'sd-select__option-group--subgroup': this.option.type === 'subgroup',
|
|
14539
|
-
'sd-select__option-group--item': this.option.type === 'item',
|
|
14540
|
-
}, onMouseEnter: () => (this.isHovered = true), onMouseLeave: () => (this.isHovered = false), style: this.optionStyle, "data-index": this.index, onClick: event => this.handleClick(this.option, this.isSelected, event) }, hAsync("div", { key: 'b1b1697c34e57667203992f8e4e6e9438f204dea', class: "sd-select__option-group__label-wrapper" }, this.useCheckbox && (hAsync("sd-checkbox", { key: 'b67bec9cfd93739348f7d6c3e93945c28171e752', value: this.isSelected, disabled: this.option.disabled, onClick: e => {
|
|
14541
|
-
e.preventDefault();
|
|
14542
|
-
this.handleClick(this.option, this.isSelected, e);
|
|
14543
|
-
} })), hAsync("span", { key: 'a65090e487a45acec39155aa6df00a1500249e20', class: "sd-select__option-group-label" }, this.option.label), this.useIndicator && this.option.type !== 'item' && (hAsync("span", { key: '5024421742568127097655bcb39af70b61cc3403', class: "sd-select__option-group__count-indicator" }, `(${this.countInfo?.selectedCount}/${this.countInfo?.totalCount})`)))));
|
|
14544
|
-
}
|
|
14545
|
-
static get style() { return sdSelectOptionGroupCss(); }
|
|
14546
|
-
static get cmpMeta() { return {
|
|
14547
|
-
"$flags$": 512,
|
|
14548
|
-
"$tagName$": "sd-select-option-group",
|
|
14549
|
-
"$members$": {
|
|
14550
|
-
"option": [16],
|
|
14551
|
-
"index": [2],
|
|
14552
|
-
"isSelected": [4, "is-selected"],
|
|
14553
|
-
"isFocused": [4, "is-focused"],
|
|
14554
|
-
"optionStyle": [16],
|
|
14555
|
-
"disabled": [4],
|
|
14556
|
-
"useCheckbox": [4, "use-checkbox"],
|
|
14557
|
-
"useIndicator": [4, "use-indicator"],
|
|
14558
|
-
"countInfo": [16],
|
|
14559
|
-
"isHovered": [32],
|
|
14560
|
-
"isDisabled": [64]
|
|
14561
|
-
},
|
|
14562
|
-
"$listeners$": undefined,
|
|
14563
|
-
"$lazyBundleId$": "-",
|
|
14564
|
-
"$attrsToReflect$": []
|
|
14565
|
-
}; }
|
|
14566
|
-
}
|
|
14567
|
-
|
|
14568
|
-
const sdSelectSearchInputCss = () => `sd-select-search-input{position:sticky;top:0;display:flex;width:100%;background-color:white;align-items:center}sd-select-search-input .sd-select-search-input{position:sticky;top:0;display:flex;width:100%;background-color:white;align-items:center;padding:4px 8px}sd-select-search-input .sd-select-search-input sd-input{width:100%}sd-select-search-input .sd-select-search-input--scrolled{box-shadow:2px 2px 8px 2px rgba(0, 0, 0, 0.2)}`;
|
|
14569
|
-
|
|
14570
|
-
class SdSelectSearchInput {
|
|
14571
|
-
constructor(hostRef) {
|
|
14572
|
-
registerInstance(this, hostRef);
|
|
14573
|
-
this.searchInput = createEvent(this, "sdSearchInput", 7);
|
|
14574
|
-
this.searchFocus = createEvent(this, "sdSearchFocus", 7);
|
|
14575
|
-
}
|
|
14576
|
-
isScrolled = false;
|
|
14577
|
-
searchText = '';
|
|
14578
|
-
searchInput;
|
|
14579
|
-
searchFocus;
|
|
14580
|
-
searchRef;
|
|
14581
|
-
async sdGetNativeElement() {
|
|
14582
|
-
if (this.searchRef) {
|
|
14583
|
-
return this.searchRef.sdGetNativeElement();
|
|
14584
|
-
}
|
|
14585
|
-
return null;
|
|
14586
|
-
}
|
|
14587
|
-
async sdSearchInputFocus() {
|
|
14588
|
-
const input = await this.sdGetNativeElement();
|
|
14589
|
-
input?.focus({ preventScroll: true });
|
|
14590
|
-
}
|
|
14591
|
-
render() {
|
|
14592
|
-
return (hAsync("div", { key: 'f056d50b2a0ca1e40efabaae5071d56259d2094b', class: {
|
|
14593
|
-
'sd-select-search-input': true,
|
|
14594
|
-
'sd-select-search-input--scrolled': !!this.isScrolled,
|
|
14595
|
-
}, onClick: event => event.stopPropagation() }, hAsync("sd-input", { key: '14a59374d1c7d661247ea506b4f5670893f16294', ref: el => (this.searchRef = el), value: this.searchText, placeholder: "\uAC80\uC0C9", clearable: true, inputStyle: { 'padding-left': '8px' }, autofocus: true, onSdUpdate: event => {
|
|
14596
|
-
this.searchInput.emit(String(event?.detail));
|
|
14597
|
-
}, onSdFocus: () => {
|
|
14598
|
-
this.searchFocus.emit();
|
|
14599
|
-
}, onKeyDown: event => {
|
|
14600
|
-
if (event.code === 'Enter')
|
|
14601
|
-
event.stopPropagation();
|
|
14602
|
-
} }, hAsync("sd-icon", { key: 'd7e976a06b6a889a1be2b79252f1d57729953522', name: "search", size: 16, color: "#737373", style: { marginRight: '4px' }, slot: "prefix" }))));
|
|
14603
|
-
}
|
|
14604
|
-
static get style() { return sdSelectSearchInputCss(); }
|
|
14605
|
-
static get cmpMeta() { return {
|
|
14606
|
-
"$flags$": 512,
|
|
14607
|
-
"$tagName$": "sd-select-search-input",
|
|
14608
|
-
"$members$": {
|
|
14609
|
-
"isScrolled": [4, "is-scrolled"],
|
|
14610
|
-
"searchText": [1, "search-text"],
|
|
14611
|
-
"sdGetNativeElement": [64],
|
|
14612
|
-
"sdSearchInputFocus": [64]
|
|
14613
|
-
},
|
|
14614
|
-
"$listeners$": undefined,
|
|
14615
|
-
"$lazyBundleId$": "-",
|
|
14616
|
-
"$attrsToReflect$": []
|
|
14617
|
-
}; }
|
|
14618
|
-
}
|
|
14619
|
-
|
|
14620
|
-
const sdSelectV2Css = () => `sd-select-v2{display:inline-flex}sd-select-v2 sd-portal{display:none}sd-select-v2 .sd-select-v2{position:relative;width:100%;height:100%}`;
|
|
14621
|
-
|
|
14622
|
-
class SdSelectV2 {
|
|
14623
|
-
constructor(hostRef) {
|
|
14624
|
-
registerInstance(this, hostRef);
|
|
14625
|
-
this.update = createEvent(this, "sdUpdate", 7);
|
|
14626
|
-
this.dropDownShow = createEvent(this, "sdDropDownShow", 7);
|
|
14627
|
-
}
|
|
14628
|
-
static VIEWPORT_PADDING = 20;
|
|
14629
|
-
static PORTAL_OFFSET_Y = 4;
|
|
14630
|
-
static CLOSE_ANIMATION_DURATION = 150;
|
|
14631
|
-
get el() { return getElement(this); }
|
|
14632
|
-
type = 'default';
|
|
14633
|
-
value = null;
|
|
14634
|
-
options = [];
|
|
14635
|
-
placeholder = '선택';
|
|
14636
|
-
maxDropdownWidth = '640px';
|
|
14637
|
-
dropdownHeight = '260px';
|
|
14638
|
-
disabled = false;
|
|
14639
|
-
label = '';
|
|
14640
|
-
labelWidth = '';
|
|
14641
|
-
addonLabel = '';
|
|
14642
|
-
addonAlign = 'start';
|
|
14643
|
-
error = false;
|
|
14644
|
-
hint = '';
|
|
14645
|
-
errorMessage = '';
|
|
14646
|
-
rules = [];
|
|
14647
|
-
icon = undefined;
|
|
14648
|
-
labelTooltip = '';
|
|
14649
|
-
labelTooltipProps = null;
|
|
14650
|
-
emitValue = false;
|
|
14651
|
-
width = '';
|
|
14652
|
-
isOpen = false;
|
|
14653
|
-
isAnimatingOut = false;
|
|
14654
|
-
triggerWidth = '200px';
|
|
14655
|
-
resolvedDropdownHeight = '260px';
|
|
14656
|
-
resolvedMaxDropdownWidth = '640px';
|
|
14657
|
-
focused = false;
|
|
14658
|
-
hovered = false;
|
|
14659
|
-
update;
|
|
14660
|
-
dropDownShow;
|
|
14661
|
-
async sdFocus() {
|
|
14662
|
-
if (this.disabled)
|
|
14663
|
-
return;
|
|
14664
|
-
await this.triggerComponentRef?.sdFocus();
|
|
14665
|
-
}
|
|
14666
|
-
async sdOpen() {
|
|
14667
|
-
// sdFocus 직후 호출 시 트리거 ref/레이아웃이 안정될 때까지 한 틱 대기
|
|
14668
|
-
await new Promise(resolve => setTimeout(resolve, 0));
|
|
14669
|
-
if (this.disabled || this.isOpen)
|
|
14670
|
-
return;
|
|
14671
|
-
this.prepareDropdownGeometry();
|
|
14672
|
-
if (this.closeAnimationTimer)
|
|
14673
|
-
clearTimeout(this.closeAnimationTimer);
|
|
14674
|
-
this.isAnimatingOut = false;
|
|
14675
|
-
this.isOpen = true;
|
|
14676
|
-
}
|
|
14677
|
-
triggerRef;
|
|
14678
|
-
triggerComponentRef;
|
|
14679
|
-
closeAnimationTimer;
|
|
14680
|
-
name = nanoid$1();
|
|
14681
|
-
triggerHasFocus = false;
|
|
14682
|
-
watchIsOpen(newValue) {
|
|
14683
|
-
this.syncFocusedState(newValue);
|
|
14684
|
-
this.dropDownShow.emit({ isOpen: newValue });
|
|
14685
|
-
}
|
|
14686
|
-
get isMulti() {
|
|
14687
|
-
return this.type === 'multi' || this.type === 'multi_depth';
|
|
14688
|
-
}
|
|
14689
|
-
get displayText() {
|
|
14690
|
-
if (this.isMulti) {
|
|
14691
|
-
if (!Array.isArray(this.value) || this.value.length === 0)
|
|
14692
|
-
return '';
|
|
14693
|
-
const flat = this.flattenOptions(this.options);
|
|
14694
|
-
return this.value
|
|
14695
|
-
.map(item => {
|
|
14696
|
-
if (item != null && typeof item === 'object') {
|
|
14697
|
-
const opt = item;
|
|
14698
|
-
return opt.label ?? flat.find(o => o.value === opt.value)?.label ?? '';
|
|
14699
|
-
}
|
|
14700
|
-
return flat.find(o => o.value === item)?.label ?? '';
|
|
14701
|
-
})
|
|
14702
|
-
.filter(Boolean)
|
|
14703
|
-
.join(', ');
|
|
14704
|
-
}
|
|
14705
|
-
if (this.value == null)
|
|
14706
|
-
return '';
|
|
14707
|
-
if (!this.emitValue && typeof this.value === 'object' && !Array.isArray(this.value)) {
|
|
14708
|
-
return this.value.label ?? '';
|
|
14709
|
-
}
|
|
14710
|
-
const flat = this.flattenOptions(this.options);
|
|
14711
|
-
const found = flat.find(o => o.value === this.value);
|
|
14712
|
-
return found?.label ?? '';
|
|
14713
|
-
}
|
|
14714
|
-
flattenOptions(options) {
|
|
14715
|
-
return options.flatMap(o => (o.children ? this.flattenOptions(o.children) : [o]));
|
|
14716
|
-
}
|
|
14717
|
-
getSelectedOptions() {
|
|
14718
|
-
const val = this.value;
|
|
14719
|
-
if (!val || !Array.isArray(val))
|
|
14720
|
-
return [];
|
|
14721
|
-
if (this.emitValue) {
|
|
14722
|
-
return val
|
|
14723
|
-
.map(v => this.findOriginalOption(v, this.options))
|
|
14724
|
-
.filter((o) => !!o);
|
|
14725
|
-
}
|
|
14726
|
-
return val;
|
|
14727
|
-
}
|
|
14728
|
-
toMultiValue(options) {
|
|
14729
|
-
return this.emitValue ? options.map(o => o.value) : options;
|
|
14730
|
-
}
|
|
14731
|
-
parsePixelValue(value, fallback) {
|
|
14732
|
-
const parsed = Number.parseFloat(value);
|
|
14733
|
-
return Number.isFinite(parsed) ? parsed : fallback;
|
|
14734
|
-
}
|
|
14735
|
-
updateDropdownViewportConstraints() {
|
|
14736
|
-
if (!this.triggerRef)
|
|
14737
|
-
return;
|
|
14738
|
-
const triggerRect = this.triggerRef.getBoundingClientRect();
|
|
14739
|
-
const viewportPadding = SdSelectV2.VIEWPORT_PADDING;
|
|
14740
|
-
const offsetY = SdSelectV2.PORTAL_OFFSET_Y;
|
|
14741
|
-
const preferredHeight = this.parsePixelValue(this.dropdownHeight, 260);
|
|
14742
|
-
const preferredWidth = this.parsePixelValue(this.maxDropdownWidth, 640);
|
|
14743
|
-
const availableBelow = Math.max(window.innerHeight - triggerRect.bottom - viewportPadding - offsetY, 0);
|
|
14744
|
-
const availableAbove = Math.max(triggerRect.top - viewportPadding - offsetY, 0);
|
|
14745
|
-
const availableHeight = Math.max(availableBelow, availableAbove);
|
|
14746
|
-
const availableWidth = Math.max(window.innerWidth - viewportPadding * 2, 0);
|
|
14747
|
-
this.resolvedDropdownHeight = `${Math.min(preferredHeight, availableHeight)}px`;
|
|
14748
|
-
this.resolvedMaxDropdownWidth = `${Math.min(preferredWidth, availableWidth)}px`;
|
|
14749
|
-
}
|
|
14750
|
-
handleViewportResize = () => {
|
|
14751
|
-
if (!this.isOpen)
|
|
14752
|
-
return;
|
|
14753
|
-
this.updateDropdownViewportConstraints();
|
|
12874
|
+
handleViewportResize = () => {
|
|
12875
|
+
if (!this.isOpen)
|
|
12876
|
+
return;
|
|
12877
|
+
this.updateDropdownViewportConstraints();
|
|
14754
12878
|
};
|
|
14755
12879
|
findOriginalOption(value, options) {
|
|
14756
12880
|
for (const opt of options) {
|
|
@@ -14773,7 +12897,7 @@ class SdSelectV2 {
|
|
|
14773
12897
|
clearTimeout(this.closeAnimationTimer);
|
|
14774
12898
|
this.closeAnimationTimer = setTimeout(() => {
|
|
14775
12899
|
this.isAnimatingOut = false;
|
|
14776
|
-
},
|
|
12900
|
+
}, SdSelect.CLOSE_ANIMATION_DURATION);
|
|
14777
12901
|
}
|
|
14778
12902
|
prepareDropdownGeometry() {
|
|
14779
12903
|
if (this.triggerRef) {
|
|
@@ -14855,30 +12979,30 @@ class SdSelectV2 {
|
|
|
14855
12979
|
const portalProps = {
|
|
14856
12980
|
open: this.isOpen,
|
|
14857
12981
|
parentRef: this.triggerRef,
|
|
14858
|
-
viewportPadding:
|
|
12982
|
+
viewportPadding: SdSelect.VIEWPORT_PADDING,
|
|
14859
12983
|
onSdClose: () => {
|
|
14860
12984
|
this.closeDropdown();
|
|
14861
12985
|
},
|
|
14862
12986
|
};
|
|
14863
|
-
return (hAsync("sd-field", { key: '
|
|
12987
|
+
return (hAsync("sd-field", { key: '76625e332090d20e2f66159bba5ee1b9a11320a6', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, onMouseEnter: () => {
|
|
14864
12988
|
this.hovered = true;
|
|
14865
12989
|
}, onMouseLeave: () => {
|
|
14866
12990
|
this.hovered = false;
|
|
14867
|
-
} }, hAsync("div", { key: '
|
|
12991
|
+
} }, hAsync("div", { key: '8a0ae8a5e05459128409dbe21779f5e3d91b3a04', class: "sd-select", ref: el => {
|
|
14868
12992
|
this.triggerRef = el;
|
|
14869
|
-
} }, hAsync("sd-select-
|
|
12993
|
+
} }, hAsync("sd-select-trigger", { key: '6b47231914655a8e197e3b38cd8e37c5214efc17', ref: el => {
|
|
14870
12994
|
this.triggerComponentRef = el;
|
|
14871
|
-
}, displayText: this.displayText, placeholder: this.placeholder, disabled: this.disabled, isOpen: this.isOpen, onSdTriggerClick: this.handleTriggerClick, onSdTriggerFocus: this.handleTriggerFocus, onSdTriggerBlur: this.handleTriggerBlur })), (this.isOpen || this.isAnimatingOut) && (hAsync("sd-portal", { key: '
|
|
12995
|
+
}, displayText: this.displayText, placeholder: this.placeholder, disabled: this.disabled, isOpen: this.isOpen, onSdTriggerClick: this.handleTriggerClick, onSdTriggerFocus: this.handleTriggerFocus, onSdTriggerBlur: this.handleTriggerBlur })), (this.isOpen || this.isAnimatingOut) && (hAsync("sd-portal", { key: 'eaed402d276cc94a1324ede9cbf09bc436f8a1db', ...portalProps }, hAsync("sd-select-listbox", { key: 'a96f75e06d974c8fd88ac72f083fe4b0ef424a0b', type: this.type, options: this.options, value: this.value, emitValue: this.emitValue, useSearch: this.useSearch, useSelectAll: this.useSelectAll, triggerWidth: this.triggerWidth, maxWidth: this.resolvedMaxDropdownWidth, maxHeight: this.resolvedDropdownHeight, onSdOptionSelect: event => this.handleOptionSelect(event.detail) })))));
|
|
14872
12996
|
}
|
|
14873
12997
|
static get watchers() { return {
|
|
14874
12998
|
"isOpen": [{
|
|
14875
12999
|
"watchIsOpen": 0
|
|
14876
13000
|
}]
|
|
14877
13001
|
}; }
|
|
14878
|
-
static get style() { return
|
|
13002
|
+
static get style() { return sdSelectCss(); }
|
|
14879
13003
|
static get cmpMeta() { return {
|
|
14880
13004
|
"$flags$": 512,
|
|
14881
|
-
"$tagName$": "sd-select
|
|
13005
|
+
"$tagName$": "sd-select",
|
|
14882
13006
|
"$members$": {
|
|
14883
13007
|
"type": [1],
|
|
14884
13008
|
"value": [1032],
|
|
@@ -14900,6 +13024,9 @@ class SdSelectV2 {
|
|
|
14900
13024
|
"labelTooltipProps": [16],
|
|
14901
13025
|
"emitValue": [4, "emit-value"],
|
|
14902
13026
|
"width": [8],
|
|
13027
|
+
"useSearch": [4, "use-search"],
|
|
13028
|
+
"allSelectedLabel": [1, "all-selected-label"],
|
|
13029
|
+
"useSelectAll": [4, "use-select-all"],
|
|
14903
13030
|
"name": [1],
|
|
14904
13031
|
"isOpen": [32],
|
|
14905
13032
|
"isAnimatingOut": [32],
|
|
@@ -15081,9 +13208,9 @@ function filterTree(options, keyword) {
|
|
|
15081
13208
|
}, []);
|
|
15082
13209
|
}
|
|
15083
13210
|
|
|
15084
|
-
const
|
|
13211
|
+
const sdSelectListItemCss = () => `sd-select-list-item{display:block}sd-select-list-item .sd-select-list-item{display:flex;align-items:center;gap:var(--list-item-gap);padding:var(--list-item-padding-y) var(--list-item-padding-right) var(--list-item-padding-y) var(--list-item-padding-left);font-size:var(--list-item-font-size);line-height:var(--list-item-line-height);font-weight:var(--list-item-font-weight);background:var(--list-item-bg);color:var(--list-item-color);cursor:default;user-select:none}sd-select-list-item .sd-select-list-item--selectable{cursor:pointer}sd-select-list-item .sd-select-list-item--depth1-group{border-top:var(--list-item-border-top);font-weight:700}sd-select-list-item .sd-select-list-item--depth2-group{font-weight:500}sd-select-list-item .sd-select-list-item--focused.sd-select-list-item--selectable:not(.sd-select-list-item--disabled){background:var(--list-item-bg-hover);color:var(--list-item-color-hover)}sd-select-list-item .sd-select-list-item--selected:not(.sd-select-list-item--group){font-weight:var(--list-item-font-weight-selected);color:var(--list-item-color-selected)}sd-select-list-item .sd-select-list-item--selected.sd-select-list-item--focused{color:var(--list-item-color-hover)}sd-select-list-item .sd-select-list-item--disabled{color:var(--list-item-color-disabled);cursor:not-allowed}sd-select-list-item .sd-select-list-item__label{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}sd-select-list-item .sd-select-list-item__count{flex-shrink:0;font-weight:500;color:var(--list-item-color-disabled)}sd-select-list-item .sd-select-list-item--group.sd-select-list-item--focused .sd-select-list-item__count{color:#ffffff}sd-select-list-item .sd-select-list-item__checkbox{flex-shrink:0}`;
|
|
15085
13212
|
|
|
15086
|
-
class
|
|
13213
|
+
class SdSelectListItem {
|
|
15087
13214
|
constructor(hostRef) {
|
|
15088
13215
|
registerInstance(this, hostRef);
|
|
15089
13216
|
this.listItemClick = createEvent(this, "sdListItemClick", 7);
|
|
@@ -15153,22 +13280,22 @@ class SdSelectV2ListItem {
|
|
|
15153
13280
|
if (isDepth1Group) {
|
|
15154
13281
|
cssVars['--list-item-border-top'] = `${LIST_ITEM_COLORS.depth1.borderWidth}px solid ${LIST_ITEM_COLORS.depth1.border}`;
|
|
15155
13282
|
}
|
|
15156
|
-
return (hAsync("div", { key: '
|
|
15157
|
-
'sd-select-
|
|
15158
|
-
'sd-select-
|
|
15159
|
-
'sd-select-
|
|
15160
|
-
'sd-select-
|
|
15161
|
-
'sd-select-
|
|
15162
|
-
'sd-select-
|
|
15163
|
-
'sd-select-
|
|
15164
|
-
'sd-select-
|
|
15165
|
-
'sd-select-
|
|
15166
|
-
}, style: cssVars, onClick: this.handleClick }, this.useCheckbox && (hAsync("sd-checkbox", { key: '
|
|
15167
|
-
}
|
|
15168
|
-
static get style() { return
|
|
13283
|
+
return (hAsync("div", { key: 'c6f959e9290213c9003914dbdd696c3c339cce51', class: {
|
|
13284
|
+
'sd-select-list-item': true,
|
|
13285
|
+
'sd-select-list-item--group': isGroup,
|
|
13286
|
+
'sd-select-list-item--depth1-group': isDepth1Group,
|
|
13287
|
+
'sd-select-list-item--depth2-group': isDepth2Group,
|
|
13288
|
+
'sd-select-list-item--selected': this.isSelected === true,
|
|
13289
|
+
'sd-select-list-item--indeterminate': this.isSelected === null,
|
|
13290
|
+
'sd-select-list-item--focused': this.isFocused,
|
|
13291
|
+
'sd-select-list-item--selectable': this.isSelectable && !this.option.disabled,
|
|
13292
|
+
'sd-select-list-item--disabled': !!this.option.disabled,
|
|
13293
|
+
}, style: cssVars, onClick: this.handleClick }, this.useCheckbox && (hAsync("sd-checkbox", { key: 'a884bd82722cd45efc19abd2139d08596f7eda86', value: this.isSelected === null ? null : !!this.isSelected, disabled: this.option.disabled, inverse: this.isFocused && this.isSelected !== false, class: "sd-select-list-item__checkbox", onClick: this.handleCheckboxClick, onSdUpdate: this.handleCheckboxUpdate })), hAsync("span", { key: '9aacbeca13e591406454ef7e1c7be40a56a2926b', class: "sd-select-list-item__label" }, this.option.label), this.countInfo && (hAsync("span", { key: '76be4eda3799cfa329016c2ea636feaf624e5025', class: "sd-select-list-item__count" }, "(", this.countInfo.selected, "/", this.countInfo.total, ")"))));
|
|
13294
|
+
}
|
|
13295
|
+
static get style() { return sdSelectListItemCss(); }
|
|
15169
13296
|
static get cmpMeta() { return {
|
|
15170
13297
|
"$flags$": 512,
|
|
15171
|
-
"$tagName$": "sd-select-
|
|
13298
|
+
"$tagName$": "sd-select-list-item",
|
|
15172
13299
|
"$members$": {
|
|
15173
13300
|
"option": [16],
|
|
15174
13301
|
"depth": [2],
|
|
@@ -15183,9 +13310,9 @@ class SdSelectV2ListItem {
|
|
|
15183
13310
|
}; }
|
|
15184
13311
|
}
|
|
15185
13312
|
|
|
15186
|
-
const
|
|
13313
|
+
const sdSelectListItemSearchCss = () => `sd-select-list-item-search{display:block}sd-select-list-item-search .sd-select-list-item-search{padding:4px 8px;position:sticky;top:0;z-index:1;background:white}sd-select-list-item-search .sd-select-list-item-search--scrolled{box-shadow:0 2px 4px rgba(0, 0, 0, 0.08)}sd-select-list-item-search .sd-select-list-item-search__inner{display:flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid #CCCCCC;border-radius:4px;background:white}sd-select-list-item-search .sd-select-list-item-search__inner:focus-within{border-color:#0075FF}sd-select-list-item-search .sd-select-list-item-search__icon{flex-shrink:0}sd-select-list-item-search .sd-select-list-item-search__input{flex:1;border:none;outline:none;font-size:12px;line-height:20px;color:#222222;background:transparent;min-width:0}sd-select-list-item-search .sd-select-list-item-search__input::placeholder{color:#AAAAAA}sd-select-list-item-search .sd-select-list-item-search__clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:2px;border:none;background:transparent;cursor:pointer;border-radius:2px}sd-select-list-item-search .sd-select-list-item-search__clear:hover{background:#F0F0F0}sd-select-list-item-search .sd-select-list-item-search__clear--hidden{visibility:hidden;pointer-events:none}`;
|
|
15187
13314
|
|
|
15188
|
-
class
|
|
13315
|
+
class SdSelectListItemSearch {
|
|
15189
13316
|
constructor(hostRef) {
|
|
15190
13317
|
registerInstance(this, hostRef);
|
|
15191
13318
|
this.searchFilter = createEvent(this, "sdSearchFilter", 7);
|
|
@@ -15231,20 +13358,20 @@ class SdSelectV2ListItemSearch {
|
|
|
15231
13358
|
clearTimeout(this.debounceTimer);
|
|
15232
13359
|
}
|
|
15233
13360
|
render() {
|
|
15234
|
-
return (hAsync("div", { key: '
|
|
15235
|
-
'sd-select-
|
|
15236
|
-
'sd-select-
|
|
15237
|
-
} }, hAsync("div", { key: '
|
|
13361
|
+
return (hAsync("div", { key: '139aa74cb44baef15a5a75008dd291f11ad2965b', class: {
|
|
13362
|
+
'sd-select-list-item-search': true,
|
|
13363
|
+
'sd-select-list-item-search--scrolled': this.isScrolled,
|
|
13364
|
+
} }, hAsync("div", { key: '2df6559c3a0e769e50e72ef06828adcf595fc433', class: "sd-select-list-item-search__inner" }, hAsync("sd-icon", { key: '20dfe4a309c7879bcdd1e5890f183a9e1eb98fae', name: "search", size: 16, color: "grey_70", class: "sd-select-list-item-search__icon" }), hAsync("input", { key: '825724eedf71693ce39a21f413c5a4eb6f1495e3', ref: el => {
|
|
15238
13365
|
this.inputEl = el;
|
|
15239
|
-
}, type: "text", class: "sd-select-
|
|
15240
|
-
'sd-select-
|
|
15241
|
-
'sd-select-
|
|
15242
|
-
}, onClick: this.handleClear, tabindex: this.searchText ? 0 : -1, "aria-hidden": this.searchText ? 'false' : 'true' }, hAsync("sd-icon", { key: '
|
|
13366
|
+
}, type: "text", class: "sd-select-list-item-search__input", placeholder: "\uAC80\uC0C9\uC5B4 \uC785\uB825", value: this.searchText, onInput: this.handleInput, onFocus: () => this.searchFocus.emit() }), hAsync("button", { key: '20fb0c745d423b008f482a2e33e7e711ea40b5df', type: "button", class: {
|
|
13367
|
+
'sd-select-list-item-search__clear': true,
|
|
13368
|
+
'sd-select-list-item-search__clear--hidden': !this.searchText,
|
|
13369
|
+
}, onClick: this.handleClear, tabindex: this.searchText ? 0 : -1, "aria-hidden": this.searchText ? 'false' : 'true' }, hAsync("sd-icon", { key: 'ce6e4f9b5281ebb767d6542a223e425660ec01c9', name: "close", size: 12, color: "#888888" })))));
|
|
15243
13370
|
}
|
|
15244
|
-
static get style() { return
|
|
13371
|
+
static get style() { return sdSelectListItemSearchCss(); }
|
|
15245
13372
|
static get cmpMeta() { return {
|
|
15246
13373
|
"$flags$": 512,
|
|
15247
|
-
"$tagName$": "sd-select-
|
|
13374
|
+
"$tagName$": "sd-select-list-item-search",
|
|
15248
13375
|
"$members$": {
|
|
15249
13376
|
"isScrolled": [4, "is-scrolled"],
|
|
15250
13377
|
"searchText": [32],
|
|
@@ -15256,9 +13383,9 @@ class SdSelectV2ListItemSearch {
|
|
|
15256
13383
|
}; }
|
|
15257
13384
|
}
|
|
15258
13385
|
|
|
15259
|
-
const
|
|
13386
|
+
const sdSelectListboxCss = () => `:host{display:block}:host .sd-select-listbox{display:flex;flex-direction:column;width:var(--listbox-trigger-width);max-width:var(--listbox-max-width);max-height:var(--listbox-max-height);border-radius:var(--listbox-radius);background:white;box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.1);overflow:hidden;outline:none}:host .sd-select-listbox__list{flex:1;min-height:0;overflow-y:auto;padding-bottom:0}:host .sd-select-listbox__empty{padding:12px;text-align:center;font-size:12px;line-height:20px;color:#888888}`;
|
|
15260
13387
|
|
|
15261
|
-
class
|
|
13388
|
+
class SdSelectListbox {
|
|
15262
13389
|
constructor(hostRef) {
|
|
15263
13390
|
registerInstance(this, hostRef);
|
|
15264
13391
|
this.optionSelect = createEvent(this, "sdOptionSelect", 7);
|
|
@@ -15267,6 +13394,8 @@ class SdSelectV2Listbox {
|
|
|
15267
13394
|
options = [];
|
|
15268
13395
|
value = null;
|
|
15269
13396
|
emitValue = false;
|
|
13397
|
+
useSearch = false;
|
|
13398
|
+
useSelectAll = false;
|
|
15270
13399
|
triggerWidth = '200px';
|
|
15271
13400
|
maxWidth = '640px';
|
|
15272
13401
|
maxHeight = '260px';
|
|
@@ -15284,7 +13413,40 @@ class SdSelectV2Listbox {
|
|
|
15284
13413
|
get isMulti() {
|
|
15285
13414
|
return this.type === 'multi' || this.type === 'multi_depth';
|
|
15286
13415
|
}
|
|
13416
|
+
static SELECT_ALL_OPTION = {
|
|
13417
|
+
value: '__select_all__',
|
|
13418
|
+
label: '전체',
|
|
13419
|
+
};
|
|
13420
|
+
get showSelectAll() {
|
|
13421
|
+
return this.useSelectAll && this.isMulti;
|
|
13422
|
+
}
|
|
13423
|
+
getAllNonDisabledLeaves() {
|
|
13424
|
+
const collect = (opts) => opts.flatMap(o => {
|
|
13425
|
+
if (o.disabled)
|
|
13426
|
+
return [];
|
|
13427
|
+
if (o.children)
|
|
13428
|
+
return collect(o.children);
|
|
13429
|
+
return [o];
|
|
13430
|
+
});
|
|
13431
|
+
return collect(this.options);
|
|
13432
|
+
}
|
|
13433
|
+
get selectAllState() {
|
|
13434
|
+
if (!this.showSelectAll)
|
|
13435
|
+
return false;
|
|
13436
|
+
const allLeaves = this.getAllNonDisabledLeaves();
|
|
13437
|
+
if (allLeaves.length === 0)
|
|
13438
|
+
return false;
|
|
13439
|
+
const selectedValues = this.getSelectedValues();
|
|
13440
|
+
const selectedCount = allLeaves.filter(l => selectedValues.has(l.value)).length;
|
|
13441
|
+
if (selectedCount === 0)
|
|
13442
|
+
return false;
|
|
13443
|
+
if (selectedCount === allLeaves.length)
|
|
13444
|
+
return true;
|
|
13445
|
+
return null;
|
|
13446
|
+
}
|
|
15287
13447
|
get showSearch() {
|
|
13448
|
+
if (!this.useSearch)
|
|
13449
|
+
return false;
|
|
15288
13450
|
const count = this.isDepth ? countLeaves(this.options) : this.options.length;
|
|
15289
13451
|
return count >= SEARCH_THRESHOLD;
|
|
15290
13452
|
}
|
|
@@ -15386,6 +13548,9 @@ class SdSelectV2Listbox {
|
|
|
15386
13548
|
}
|
|
15387
13549
|
get navigableOptions() {
|
|
15388
13550
|
const items = [];
|
|
13551
|
+
if (this.showSelectAll) {
|
|
13552
|
+
items.push(SdSelectListbox.SELECT_ALL_OPTION);
|
|
13553
|
+
}
|
|
15389
13554
|
const walk = (opts) => {
|
|
15390
13555
|
for (const opt of opts) {
|
|
15391
13556
|
const isGroup = !!opt.children;
|
|
@@ -15399,6 +13564,22 @@ class SdSelectV2Listbox {
|
|
|
15399
13564
|
walk(this.filteredOptions);
|
|
15400
13565
|
return items;
|
|
15401
13566
|
}
|
|
13567
|
+
isSelectAllOption(option) {
|
|
13568
|
+
return this.showSelectAll && option.value === SdSelectListbox.SELECT_ALL_OPTION.value;
|
|
13569
|
+
}
|
|
13570
|
+
emitSelectAll() {
|
|
13571
|
+
if (!this.showSelectAll)
|
|
13572
|
+
return;
|
|
13573
|
+
const allLeaves = this.getAllNonDisabledLeaves();
|
|
13574
|
+
this.optionSelect.emit({
|
|
13575
|
+
option: { ...SdSelectListbox.SELECT_ALL_OPTION, children: allLeaves },
|
|
13576
|
+
leaves: allLeaves,
|
|
13577
|
+
});
|
|
13578
|
+
}
|
|
13579
|
+
handleSelectAllClick = (e) => {
|
|
13580
|
+
e.stopPropagation();
|
|
13581
|
+
this.emitSelectAll();
|
|
13582
|
+
};
|
|
15402
13583
|
isOptionFocused(option) {
|
|
15403
13584
|
if (this.focusedIndex < 0)
|
|
15404
13585
|
return false;
|
|
@@ -15471,7 +13652,13 @@ class SdSelectV2Listbox {
|
|
|
15471
13652
|
return;
|
|
15472
13653
|
e.preventDefault();
|
|
15473
13654
|
e.stopPropagation();
|
|
15474
|
-
|
|
13655
|
+
const focused = items[this.focusedIndex];
|
|
13656
|
+
if (this.isSelectAllOption(focused)) {
|
|
13657
|
+
this.emitSelectAll();
|
|
13658
|
+
}
|
|
13659
|
+
else {
|
|
13660
|
+
this.emitOptionSelect(focused);
|
|
13661
|
+
}
|
|
15475
13662
|
}
|
|
15476
13663
|
};
|
|
15477
13664
|
/**
|
|
@@ -15492,7 +13679,7 @@ class SdSelectV2Listbox {
|
|
|
15492
13679
|
*/
|
|
15493
13680
|
scrollFocusedIntoView() {
|
|
15494
13681
|
const list = this.listEl;
|
|
15495
|
-
const focusedEl = list?.querySelector('.sd-select-
|
|
13682
|
+
const focusedEl = list?.querySelector('.sd-select-list-item--focused');
|
|
15496
13683
|
if (!list || !focusedEl)
|
|
15497
13684
|
return;
|
|
15498
13685
|
const listRect = list.getBoundingClientRect();
|
|
@@ -15538,7 +13725,7 @@ class SdSelectV2Listbox {
|
|
|
15538
13725
|
return options.map(option => {
|
|
15539
13726
|
const isGroup = !!option.children;
|
|
15540
13727
|
return [
|
|
15541
|
-
hAsync("sd-select-
|
|
13728
|
+
hAsync("sd-select-list-item", { option: option, depth: depth, isSelected: isGroup ? this.getGroupSelectionState(option) : this.isOptionSelected(option), isFocused: this.isOptionFocused(option), useCheckbox: this.isMulti, countInfo: this.getCountInfo(option), onSdListItemClick: this.handleOptionClick, onMouseEnter: () => this.handleOptionHover(option) }),
|
|
15542
13729
|
isGroup && option.children ? this.renderOptions(option.children, depth + 1) : null,
|
|
15543
13730
|
];
|
|
15544
13731
|
});
|
|
@@ -15550,24 +13737,26 @@ class SdSelectV2Listbox {
|
|
|
15550
13737
|
'--listbox-max-height': this.maxHeight,
|
|
15551
13738
|
'--listbox-radius': `${LIST_BOX_LAYOUT.radius}px`,
|
|
15552
13739
|
};
|
|
15553
|
-
return (hAsync("div", { key: '
|
|
13740
|
+
return (hAsync("div", { key: 'c1582b1bc6058b78a8581511854f0878e7f39a94', class: "sd-select-listbox", style: cssVars }, this.showSearch && (hAsync("sd-select-list-item-search", { key: '4fd2099bf8069f258596479123053a34a41c528d', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), hAsync("div", { key: 'ff8643a308b07dbaebf627c7082a37efa6b72a10', class: "sd-select-listbox__list", onScroll: this.handleScroll, ref: el => {
|
|
15554
13741
|
this.listEl = el;
|
|
15555
|
-
} }, this.isEmpty ? (hAsync("div", { class: "sd-select-
|
|
13742
|
+
} }, this.showSelectAll && (hAsync("sd-select-list-item", { key: '30f0cfbc24304af8c704db33d0e51236971226ee', option: SdSelectListbox.SELECT_ALL_OPTION, depth: 1, isSelected: this.selectAllState, isFocused: this.isOptionFocused(SdSelectListbox.SELECT_ALL_OPTION), useCheckbox: true, onSdListItemClick: this.handleSelectAllClick, onMouseEnter: () => this.handleOptionHover(SdSelectListbox.SELECT_ALL_OPTION) })), this.isEmpty ? (hAsync("div", { class: "sd-select-listbox__empty" }, EMPTY_MESSAGE)) : this.isDepth ? (this.renderOptions(this.filteredOptions)) : (this.filteredOptions.map(option => (hAsync("sd-select-list-item", { option: option, depth: 1, isSelected: this.isOptionSelected(option), isFocused: this.isOptionFocused(option), useCheckbox: this.isMulti, onSdListItemClick: this.handleOptionClick, onMouseEnter: () => this.handleOptionHover(option) })))))));
|
|
15556
13743
|
}
|
|
15557
13744
|
static get watchers() { return {
|
|
15558
13745
|
"searchKeyword": [{
|
|
15559
13746
|
"resetFocusOnFilter": 0
|
|
15560
13747
|
}]
|
|
15561
13748
|
}; }
|
|
15562
|
-
static get style() { return
|
|
13749
|
+
static get style() { return sdSelectListboxCss(); }
|
|
15563
13750
|
static get cmpMeta() { return {
|
|
15564
13751
|
"$flags$": 521,
|
|
15565
|
-
"$tagName$": "sd-select-
|
|
13752
|
+
"$tagName$": "sd-select-listbox",
|
|
15566
13753
|
"$members$": {
|
|
15567
13754
|
"type": [1],
|
|
15568
13755
|
"options": [16],
|
|
15569
13756
|
"value": [8],
|
|
15570
13757
|
"emitValue": [4, "emit-value"],
|
|
13758
|
+
"useSearch": [4, "use-search"],
|
|
13759
|
+
"useSelectAll": [4, "use-select-all"],
|
|
15571
13760
|
"triggerWidth": [1, "trigger-width"],
|
|
15572
13761
|
"maxWidth": [1, "max-width"],
|
|
15573
13762
|
"maxHeight": [1, "max-height"],
|
|
@@ -15581,9 +13770,9 @@ class SdSelectV2Listbox {
|
|
|
15581
13770
|
}; }
|
|
15582
13771
|
}
|
|
15583
13772
|
|
|
15584
|
-
const
|
|
13773
|
+
const sdSelectTriggerCss = () => `sd-select-trigger{display:block;width:100%;height:100%}sd-select-trigger .sd-select-trigger{display:flex;width:100%;height:100%;cursor:pointer;user-select:none;overflow:hidden;border-radius:3px}sd-select-trigger .sd-select-trigger--disabled{cursor:not-allowed}sd-select-trigger .sd-select-trigger__content{display:flex;align-items:center;gap:var(--trigger-gap);flex:1;padding:0 var(--trigger-padding-x);min-width:0}sd-select-trigger .sd-select-trigger__text{flex:1;font-size:var(--trigger-font-size);line-height:var(--trigger-line-height);font-weight:var(--trigger-font-weight);color:var(--trigger-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}sd-select-trigger .sd-select-trigger__icon{flex-shrink:0;transition:transform 0.2s ease}sd-select-trigger .sd-select-trigger__icon--open{transform:rotate(180deg)}`;
|
|
15585
13774
|
|
|
15586
|
-
class
|
|
13775
|
+
class SdSelectTrigger {
|
|
15587
13776
|
constructor(hostRef) {
|
|
15588
13777
|
registerInstance(this, hostRef);
|
|
15589
13778
|
this.triggerClick = createEvent(this, "sdTriggerClick", 7);
|
|
@@ -15631,21 +13820,21 @@ class SdSelectV2Trigger {
|
|
|
15631
13820
|
? SELECT_COLORS.icon.disabled
|
|
15632
13821
|
: SELECT_COLORS.icon.default,
|
|
15633
13822
|
};
|
|
15634
|
-
return (hAsync("div", { key: '
|
|
13823
|
+
return (hAsync("div", { key: 'dddccfd47738e104a9c715a0c93df1882d28d704', ref: el => {
|
|
15635
13824
|
this.triggerEl = el;
|
|
15636
13825
|
}, tabindex: this.disabled ? -1 : 0, class: {
|
|
15637
|
-
'sd-select-
|
|
15638
|
-
'sd-select-
|
|
15639
|
-
'sd-select-
|
|
15640
|
-
}, style: cssVars, onClick: this.handleClick, onFocus: this.handleFocus, onBlur: this.handleBlur }, hAsync("div", { key: '
|
|
15641
|
-
'sd-select-
|
|
15642
|
-
'sd-select-
|
|
13826
|
+
'sd-select-trigger': true,
|
|
13827
|
+
'sd-select-trigger--open': this.isOpen,
|
|
13828
|
+
'sd-select-trigger--disabled': this.disabled,
|
|
13829
|
+
}, style: cssVars, onClick: this.handleClick, onFocus: this.handleFocus, onBlur: this.handleBlur }, hAsync("div", { key: '9f8572c4ec3fa02c9f94bb94a8a10358c4d6b3ae', class: "sd-select-trigger__content" }, hAsync("span", { key: 'a4b5b27fc3a84adbd2e24981742ca45402993afb', class: "sd-select-trigger__text" }, hasValue ? this.displayText : this.placeholder), hAsync("sd-icon", { key: '97bbcda656bae2248ca83fb2bd56373b2dd8dd41', name: "chevronDown", size: 12, color: "var(--trigger-icon-color)", class: {
|
|
13830
|
+
'sd-select-trigger__icon': true,
|
|
13831
|
+
'sd-select-trigger__icon--open': this.isOpen,
|
|
15643
13832
|
} }))));
|
|
15644
13833
|
}
|
|
15645
|
-
static get style() { return
|
|
13834
|
+
static get style() { return sdSelectTriggerCss(); }
|
|
15646
13835
|
static get cmpMeta() { return {
|
|
15647
13836
|
"$flags$": 512,
|
|
15648
|
-
"$tagName$": "sd-select-
|
|
13837
|
+
"$tagName$": "sd-select-trigger",
|
|
15649
13838
|
"$members$": {
|
|
15650
13839
|
"displayText": [1, "display-text"],
|
|
15651
13840
|
"placeholder": [1],
|
|
@@ -15759,7 +13948,7 @@ class SdSwitch {
|
|
|
15759
13948
|
'--sd-switch-line-height': `${SWITCH_TYPOGRAPHY.lineHeight}px`,
|
|
15760
13949
|
'--sd-switch-text-decoration': SWITCH_TYPOGRAPHY.textDecoration,
|
|
15761
13950
|
};
|
|
15762
|
-
return (hAsync("label", { key: '
|
|
13951
|
+
return (hAsync("label", { key: '54ebe92b29a80537e2e4380ffe096a252f883d10', "aria-label": this.label || 'switch', class: this.switchClasses, style: cssVars }, hAsync("input", { key: 'd18abbbf293434f07ae7dfa18b983b47cac1b774', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), hAsync("div", { key: '76fef910e632b541c0b33c508e6001529df5614f', class: "sd-switch__track" }, hAsync("div", { key: 'a66f4ecca5787f00febe19216a93ec62916e0541', class: "sd-switch__knob" })), this.label && hAsync("span", { key: '948d2b7afc6e171ee329752cb85f8e361f6bbed8', class: "sd-switch__label" }, this.label)));
|
|
15763
13952
|
}
|
|
15764
13953
|
static get style() { return sdSwitchCss(); }
|
|
15765
13954
|
static get cmpMeta() { return {
|
|
@@ -15803,7 +13992,98 @@ function nanoid(size = 21) {
|
|
|
15803
13992
|
|
|
15804
13993
|
const TABLE_ID_ATTR = 'table-id';
|
|
15805
13994
|
|
|
15806
|
-
const
|
|
13995
|
+
const table = {
|
|
13996
|
+
header: {
|
|
13997
|
+
height: "36",
|
|
13998
|
+
paddingX: "16",
|
|
13999
|
+
gap: "4",
|
|
14000
|
+
bg: "#F5FAFF",
|
|
14001
|
+
typography: {
|
|
14002
|
+
fontFamily: "Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif",
|
|
14003
|
+
fontWeight: "500",
|
|
14004
|
+
fontSize: "12",
|
|
14005
|
+
lineHeight: "20",
|
|
14006
|
+
textDecoration: "none"
|
|
14007
|
+
},
|
|
14008
|
+
resizingBar: {
|
|
14009
|
+
color: "#CCCCCC",
|
|
14010
|
+
height: "16"
|
|
14011
|
+
}
|
|
14012
|
+
},
|
|
14013
|
+
body: {
|
|
14014
|
+
"default": {
|
|
14015
|
+
height: "44"},
|
|
14016
|
+
paddingX: "16",
|
|
14017
|
+
typography: {
|
|
14018
|
+
fontFamily: "Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif",
|
|
14019
|
+
fontWeight: "400",
|
|
14020
|
+
fontSize: "12",
|
|
14021
|
+
lineHeight: "20",
|
|
14022
|
+
textDecoration: "none"
|
|
14023
|
+
}
|
|
14024
|
+
},
|
|
14025
|
+
border: {
|
|
14026
|
+
"default": "#E1E1E1",
|
|
14027
|
+
width: {
|
|
14028
|
+
width: "1"
|
|
14029
|
+
}
|
|
14030
|
+
},
|
|
14031
|
+
radius: "8"};
|
|
14032
|
+
var tableTokens = {
|
|
14033
|
+
table: table
|
|
14034
|
+
};
|
|
14035
|
+
|
|
14036
|
+
// ── Header Tokens ──
|
|
14037
|
+
const TABLE_HEADER_LAYOUT = {
|
|
14038
|
+
height: tableTokens.table.header.height,
|
|
14039
|
+
paddingX: tableTokens.table.header.paddingX,
|
|
14040
|
+
gap: tableTokens.table.header.gap,
|
|
14041
|
+
};
|
|
14042
|
+
const TABLE_HEADER_TYPOGRAPHY = {
|
|
14043
|
+
fontFamily: tableTokens.table.header.typography.fontFamily,
|
|
14044
|
+
fontWeight: tableTokens.table.header.typography.fontWeight,
|
|
14045
|
+
fontSize: tableTokens.table.header.typography.fontSize,
|
|
14046
|
+
lineHeight: tableTokens.table.header.typography.lineHeight,
|
|
14047
|
+
textDecoration: tableTokens.table.header.typography.textDecoration,
|
|
14048
|
+
};
|
|
14049
|
+
const TABLE_HEADER_COLORS = {
|
|
14050
|
+
bg: tableTokens.table.header.bg,
|
|
14051
|
+
};
|
|
14052
|
+
const TABLE_HEADER_RESIZING_BAR = {
|
|
14053
|
+
color: tableTokens.table.header.resizingBar.color,
|
|
14054
|
+
height: tableTokens.table.header.resizingBar.height,
|
|
14055
|
+
};
|
|
14056
|
+
// ── Body Tokens ──
|
|
14057
|
+
const TABLE_BODY_LAYOUT = {
|
|
14058
|
+
default: {
|
|
14059
|
+
height: tableTokens.table.body.default.height},
|
|
14060
|
+
paddingX: tableTokens.table.body.paddingX};
|
|
14061
|
+
const TABLE_BODY_TYPOGRAPHY = {
|
|
14062
|
+
fontFamily: tableTokens.table.body.typography.fontFamily,
|
|
14063
|
+
fontWeight: tableTokens.table.body.typography.fontWeight,
|
|
14064
|
+
fontSize: tableTokens.table.body.typography.fontSize,
|
|
14065
|
+
lineHeight: tableTokens.table.body.typography.lineHeight,
|
|
14066
|
+
textDecoration: tableTokens.table.body.typography.textDecoration,
|
|
14067
|
+
};
|
|
14068
|
+
// ── Frame / Border Tokens ──
|
|
14069
|
+
const TABLE_BORDER = {
|
|
14070
|
+
color: tableTokens.table.border.default,
|
|
14071
|
+
width: tableTokens.table.border.width.width,
|
|
14072
|
+
};
|
|
14073
|
+
const TABLE_RADIUS = tableTokens.table.radius;
|
|
14074
|
+
// ── Header Icon Color Defaults ──
|
|
14075
|
+
const ICON_DEFAULT_COLOR = {
|
|
14076
|
+
pageEdit: systemTokens.color.darkblue.strong,
|
|
14077
|
+
arrowDown: systemTokens.color.darkblue.strong,
|
|
14078
|
+
arrowUp: systemTokens.color.darkblue.strong,
|
|
14079
|
+
updown: systemTokens.color.grey.strong,
|
|
14080
|
+
pageMove: systemTokens.color.darkblue.strong,
|
|
14081
|
+
star: systemTokens.color.blue.strong,
|
|
14082
|
+
};
|
|
14083
|
+
const resolveTableIconColor = (name, override) => override ?? ICON_DEFAULT_COLOR[name];
|
|
14084
|
+
const resolveSortIconName = (sort) => sort === 'asc' ? 'arrowDown' : sort === 'desc' ? 'arrowUp' : 'updown';
|
|
14085
|
+
|
|
14086
|
+
const sdTableCss = () => `sd-table,:host{display:block;width:100%;max-width:100%;min-width:0}sd-table *,:host *{box-sizing:border-box}.sd-table__container{height:var(--table-height, 100%);width:var(--table-width, 100%);max-width:100%;min-width:0;color:#222222;display:flex;flex-direction:column}.sd-table__clip{width:100%;min-width:0;height:var(--table-container-height, 400px);border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);border-radius:var(--table-radius, 8px);overflow:hidden}.sd-table__clip--has-pagination{border-radius:var(--table-radius, 8px) var(--table-radius, 8px) 0 0}.sd-table__wrapper{width:100%;height:100%;display:flex;flex-direction:column;position:relative;font-family:var(--table-body-font-family, inherit);font-weight:var(--table-body-font-weight, 400);font-size:var(--table-body-font-size, 12px);line-height:var(--table-body-line-height, 20px);text-decoration:var(--table-body-text-decoration, none);overflow:auto;background:#FFFFFF}.sd-table__wrapper--loading{overflow:hidden !important;pointer-events:none}.sd-table__wrapper--no-data{overflow:hidden;pointer-events:none}.sd-table__no-data{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--table-body-font-size, 12px);color:#888888;pointer-events:none;z-index:200;background:rgba(255, 255, 255, 0.6)}.sd-table__no-data ::slotted(*),.sd-table__no-data span{pointer-events:auto}.sd-table__loading{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(255, 255, 255, 0.6);z-index:200;display:flex;align-items:center;justify-content:center;pointer-events:none}.sd-table{background-color:white;display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.sd-table--selectable sd-thead,.sd-table--selectable sd-tbody{--selectable:true}.sd-table--sticky-header sd-thead thead{position:sticky;top:0;z-index:120}.sd-table--sticky-column sd-thead,.sd-table--sticky-column sd-tbody{--sticky-column:true}.sd-table--scrolled-left sd-thead,.sd-table--scrolled-left sd-tbody{--scrolled-left:true}.sd-table--scrolled-right sd-thead,.sd-table--scrolled-right sd-tbody{--scrolled-right:true}.sd-table--resizable sd-thead{--resizable:true}.sd-table--no-data sd-thead{opacity:0.4}.sd-table__pagination{position:relative;background:#F9F9F9;height:48px;display:flex;align-items:center;justify-content:center;border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);border-top:none;border-radius:0 0 var(--table-radius, 8px) var(--table-radius, 8px)}.sd-table__pagination sd-select{position:absolute;right:10px;top:50%;transform:translateY(-50%)}`;
|
|
15807
14087
|
|
|
15808
14088
|
class SdTable {
|
|
15809
14089
|
constructor(hostRef) {
|
|
@@ -15859,11 +14139,17 @@ class SdTable {
|
|
|
15859
14139
|
scrolledRight = false;
|
|
15860
14140
|
rowCount = 0;
|
|
15861
14141
|
loadingScrollTop = 0;
|
|
14142
|
+
// light DOM에 sd-thead / sd-tbody 자식이 없으면 sd-table이 직접 렌더해야 함을 알리는 플래그.
|
|
14143
|
+
// componentWillLoad에서 한 번 결정되며, 이후 동적 토글은 지원하지 않는다.
|
|
14144
|
+
autoThead = false;
|
|
14145
|
+
autoTbody = false;
|
|
15862
14146
|
vsStart = 0;
|
|
15863
14147
|
vsEnd = 0;
|
|
15864
14148
|
lastReachEndNotifiedRowCount = -1;
|
|
15865
14149
|
scrollContainer = null;
|
|
15866
14150
|
onScroll;
|
|
14151
|
+
// 키: `${rowKey}::${field}` → { rowspan, colspan }
|
|
14152
|
+
spanRegistry = new Map();
|
|
15867
14153
|
toFiniteNumber(value, fallback) {
|
|
15868
14154
|
const n = typeof value === 'number' ? value : Number(value);
|
|
15869
14155
|
return Number.isFinite(n) ? n : fallback;
|
|
@@ -15942,9 +14228,16 @@ class SdTable {
|
|
|
15942
14228
|
this.innerRowsPerPage = newVal.rowsPerPage;
|
|
15943
14229
|
}
|
|
15944
14230
|
}
|
|
14231
|
+
detectChildren() {
|
|
14232
|
+
const hasThead = !!this.el.querySelector(':scope > sd-thead');
|
|
14233
|
+
const hasTbody = !!this.el.querySelector(':scope > sd-tbody');
|
|
14234
|
+
this.autoThead = !hasThead;
|
|
14235
|
+
this.autoTbody = !hasTbody;
|
|
14236
|
+
}
|
|
15945
14237
|
componentWillLoad() {
|
|
15946
14238
|
this.syncTableIdAttribute();
|
|
15947
14239
|
this.handleNoDataLabelChange(this.noDataLabel);
|
|
14240
|
+
this.detectChildren();
|
|
15948
14241
|
this.innerSelected = new Set(this.selected || []);
|
|
15949
14242
|
this.columnWidths = (this.columns || []).map(c => parseInt(c.width || '120', 10));
|
|
15950
14243
|
if (this.pagination?.page) {
|
|
@@ -15967,6 +14260,11 @@ class SdTable {
|
|
|
15967
14260
|
el.getTableIdSync = () => this.getResolvedTableId();
|
|
15968
14261
|
el.getVirtualScrollConfigSync = this.getVirtualScrollConfigSync.bind(this);
|
|
15969
14262
|
el.calculateVisibleRange = this.calculateVisibleRange.bind(this);
|
|
14263
|
+
el.registerSpanSync = this.registerSpanSync.bind(this);
|
|
14264
|
+
el.unregisterSpanSync = this.unregisterSpanSync.bind(this);
|
|
14265
|
+
el.getSpanSync = this.getSpanSync.bind(this);
|
|
14266
|
+
el.isCoveredSync = this.isCoveredSync.bind(this);
|
|
14267
|
+
el.hasRowspanSync = this.hasRowspanSync.bind(this);
|
|
15970
14268
|
if (Array.isArray(this.rows)) {
|
|
15971
14269
|
this.rowCount = this.rows.length;
|
|
15972
14270
|
this.pushRowsToChildren(this.rows);
|
|
@@ -16015,11 +14313,22 @@ class SdTable {
|
|
|
16015
14313
|
this.scrollContainer.removeEventListener('scroll', this.onScroll);
|
|
16016
14314
|
}
|
|
16017
14315
|
}
|
|
14316
|
+
// light DOM(manual mode 자식)과 shadow DOM(autoThead/autoTbody fallback) 양쪽 모두에서 자식을 찾는다.
|
|
14317
|
+
queryChildEl(selector) {
|
|
14318
|
+
return (this.el.querySelector(selector) ??
|
|
14319
|
+
this.el.shadowRoot?.querySelector(selector) ??
|
|
14320
|
+
null);
|
|
14321
|
+
}
|
|
14322
|
+
queryAllTr() {
|
|
14323
|
+
const light = Array.from(this.el.querySelectorAll('sd-tr'));
|
|
14324
|
+
const shadow = Array.from(this.el.shadowRoot?.querySelectorAll('sd-tr') ?? []);
|
|
14325
|
+
return [...light, ...shadow];
|
|
14326
|
+
}
|
|
16018
14327
|
pushRowsToChildren(rows) {
|
|
16019
|
-
const tbody = this.
|
|
14328
|
+
const tbody = this.queryChildEl('sd-tbody');
|
|
16020
14329
|
if (tbody)
|
|
16021
14330
|
tbody.rows = rows;
|
|
16022
|
-
const thead = this.
|
|
14331
|
+
const thead = this.queryChildEl('sd-thead');
|
|
16023
14332
|
if (thead)
|
|
16024
14333
|
thead.rows = rows;
|
|
16025
14334
|
}
|
|
@@ -16030,16 +14339,14 @@ class SdTable {
|
|
|
16030
14339
|
this.refreshChildrenConfig();
|
|
16031
14340
|
};
|
|
16032
14341
|
refreshChildrenSelection() {
|
|
16033
|
-
const thead = this.
|
|
16034
|
-
const rows = this.el.querySelectorAll('sd-tr');
|
|
14342
|
+
const thead = this.queryChildEl('sd-thead');
|
|
16035
14343
|
thead?.refreshSelection?.();
|
|
16036
|
-
|
|
14344
|
+
this.queryAllTr().forEach(tr => tr?.refreshSelection?.());
|
|
16037
14345
|
}
|
|
16038
14346
|
refreshChildrenConfig() {
|
|
16039
|
-
const thead = this.
|
|
16040
|
-
const rows = this.el.querySelectorAll('sd-tr');
|
|
14347
|
+
const thead = this.queryChildEl('sd-thead');
|
|
16041
14348
|
thead?.refreshConfig?.();
|
|
16042
|
-
|
|
14349
|
+
this.queryAllTr().forEach(tr => tr?.refreshConfig?.());
|
|
16043
14350
|
}
|
|
16044
14351
|
maybeEmitVirtualReachEnd(start, end) {
|
|
16045
14352
|
const threshold = Math.max(1, this.virtualEndThreshold);
|
|
@@ -16071,7 +14378,7 @@ class SdTable {
|
|
|
16071
14378
|
this.vsEnd = end;
|
|
16072
14379
|
const topHeight = start * this.rowHeight;
|
|
16073
14380
|
const bottomHeight = Math.max(0, (this.rowCount - end) * this.rowHeight);
|
|
16074
|
-
const tbody = this.
|
|
14381
|
+
const tbody = this.queryChildEl('sd-tbody');
|
|
16075
14382
|
tbody?.setSpacersSync?.(topHeight, bottomHeight);
|
|
16076
14383
|
if (rangeChanged) {
|
|
16077
14384
|
this.sdVirtualUpdate.emit({
|
|
@@ -16163,8 +14470,7 @@ class SdTable {
|
|
|
16163
14470
|
this.updateRowsVisibility();
|
|
16164
14471
|
}
|
|
16165
14472
|
updateRowsVisibility() {
|
|
16166
|
-
|
|
16167
|
-
rows.forEach(tr => tr?.updateVisibility?.());
|
|
14473
|
+
this.queryAllTr().forEach(tr => tr?.updateVisibility?.());
|
|
16168
14474
|
}
|
|
16169
14475
|
changeRowsPerPage(perPage) {
|
|
16170
14476
|
const changedRowsPerPage = perPage ? Number(perPage) : 0;
|
|
@@ -16201,10 +14507,9 @@ class SdTable {
|
|
|
16201
14507
|
const delta = moveEvent.clientX - startX;
|
|
16202
14508
|
const newWidth = Math.min(Math.max(startWidth + (reversed ? -delta : delta), minWidth), maxWidth);
|
|
16203
14509
|
this.columnWidths = this.columnWidths.map((width, idx) => (idx === index ? newWidth : width));
|
|
16204
|
-
const thead = this.
|
|
16205
|
-
const rows = this.el.querySelectorAll('sd-tr');
|
|
14510
|
+
const thead = this.queryChildEl('sd-thead');
|
|
16206
14511
|
thead?.setColumnWidths?.(this.columnWidths);
|
|
16207
|
-
|
|
14512
|
+
this.queryAllTr().forEach(tr => tr?.setColumnWidths?.(this.columnWidths));
|
|
16208
14513
|
const stickyRightCount = this.stickyColumn?.right || 0;
|
|
16209
14514
|
const visibleColCount = this.columns.filter(c => c.visible !== false).length;
|
|
16210
14515
|
const isRightStickyEdgeResizer = stickyRightCount > 0 && index === visibleColCount - stickyRightCount;
|
|
@@ -16241,6 +14546,109 @@ class SdTable {
|
|
|
16241
14546
|
async getStickyStyle(colIdx) {
|
|
16242
14547
|
return this.getStickyStyleSync(colIdx);
|
|
16243
14548
|
}
|
|
14549
|
+
// ─── rowspan / colspan registry ─────────────────────────────────
|
|
14550
|
+
// sd-td가 mount/unmount 시 자기 (rowKey, field)와 span을 등록한다.
|
|
14551
|
+
// sd-tr는 render마다 isCoveredSync로 자신의 셀 위치가 다른 셀의 span에
|
|
14552
|
+
// 덮였는지 판정해 <td>를 그릴지 결정한다.
|
|
14553
|
+
spanKey(rowKey, field) {
|
|
14554
|
+
return `${rowKey}::${field}`;
|
|
14555
|
+
}
|
|
14556
|
+
// span 등록은 sd-td의 lifecycle에서 비동기적으로 일어나므로,
|
|
14557
|
+
// 등록/해제 직후 형제 sd-tr들이 새 레지스트리 상태로 다시 그려져야
|
|
14558
|
+
// 덮인 셀이 사라지거나 다시 나타난다.
|
|
14559
|
+
// forceUpdate는 React 래퍼 환경에서 prop 동기화 사이클과 부딪혀 누락되는
|
|
14560
|
+
// 경우가 있어, sd-tr의 @State (spansVersion)을 통해 재렌더를 강제한다.
|
|
14561
|
+
requestAllTrUpdate() {
|
|
14562
|
+
this.queryAllTr().forEach(tr => {
|
|
14563
|
+
const trAny = tr;
|
|
14564
|
+
if (typeof trAny.bumpSpansVersion === 'function') {
|
|
14565
|
+
trAny.bumpSpansVersion();
|
|
14566
|
+
}
|
|
14567
|
+
});
|
|
14568
|
+
}
|
|
14569
|
+
registerSpanSync(rowKey, field, rowspan, colspan) {
|
|
14570
|
+
if (rowKey == null || !field)
|
|
14571
|
+
return;
|
|
14572
|
+
const safeRowspan = Math.max(1, Math.floor(rowspan || 1));
|
|
14573
|
+
const safeColspan = Math.max(1, Math.floor(colspan || 1));
|
|
14574
|
+
const key = this.spanKey(rowKey, field);
|
|
14575
|
+
const prev = this.spanRegistry.get(key);
|
|
14576
|
+
if (safeRowspan === 1 && safeColspan === 1) {
|
|
14577
|
+
if (!prev)
|
|
14578
|
+
return;
|
|
14579
|
+
this.spanRegistry.delete(key);
|
|
14580
|
+
this.requestAllTrUpdate();
|
|
14581
|
+
return;
|
|
14582
|
+
}
|
|
14583
|
+
if (prev && prev.rowspan === safeRowspan && prev.colspan === safeColspan)
|
|
14584
|
+
return;
|
|
14585
|
+
this.spanRegistry.set(key, { rowspan: safeRowspan, colspan: safeColspan });
|
|
14586
|
+
this.requestAllTrUpdate();
|
|
14587
|
+
}
|
|
14588
|
+
unregisterSpanSync(rowKey, field) {
|
|
14589
|
+
if (rowKey == null || !field)
|
|
14590
|
+
return;
|
|
14591
|
+
const key = this.spanKey(rowKey, field);
|
|
14592
|
+
if (!this.spanRegistry.has(key))
|
|
14593
|
+
return;
|
|
14594
|
+
this.spanRegistry.delete(key);
|
|
14595
|
+
this.requestAllTrUpdate();
|
|
14596
|
+
}
|
|
14597
|
+
getSpanSync(rowKey, field) {
|
|
14598
|
+
return this.spanRegistry.get(this.spanKey(rowKey, field));
|
|
14599
|
+
}
|
|
14600
|
+
// 레지스트리에 rowspan>1 항목이 하나라도 있으면 true.
|
|
14601
|
+
// hover 동작을 끌지 결정하는 데 사용 — colspan만 있는 경우는 그대로 hover 유지.
|
|
14602
|
+
hasRowspanSync() {
|
|
14603
|
+
for (const span of this.spanRegistry.values()) {
|
|
14604
|
+
if (span.rowspan > 1)
|
|
14605
|
+
return true;
|
|
14606
|
+
}
|
|
14607
|
+
return false;
|
|
14608
|
+
}
|
|
14609
|
+
isCoveredSync(rowKey, colIdx, columns) {
|
|
14610
|
+
if (this.spanRegistry.size === 0)
|
|
14611
|
+
return false;
|
|
14612
|
+
const visibleCols = columns.filter(c => c.visible !== false);
|
|
14613
|
+
// 1. 같은 행 왼쪽 스캔 — colspan으로 이 위치를 덮는 셀이 있는가
|
|
14614
|
+
for (let i = 0; i < colIdx; i++) {
|
|
14615
|
+
const c = visibleCols[i];
|
|
14616
|
+
if (!c)
|
|
14617
|
+
continue;
|
|
14618
|
+
const field = typeof c.field === 'string' ? c.field : c.name;
|
|
14619
|
+
const span = this.spanRegistry.get(this.spanKey(rowKey, field));
|
|
14620
|
+
if (!span)
|
|
14621
|
+
continue;
|
|
14622
|
+
if (i + span.colspan > colIdx)
|
|
14623
|
+
return true;
|
|
14624
|
+
}
|
|
14625
|
+
// 2. 위쪽 행 스캔 — 숫자 변환 가능한 rowKey만 rowspan 평가
|
|
14626
|
+
const myRowIdx = Number(rowKey);
|
|
14627
|
+
if (!Number.isFinite(myRowIdx))
|
|
14628
|
+
return false;
|
|
14629
|
+
for (const [key, span] of this.spanRegistry) {
|
|
14630
|
+
if (span.rowspan <= 1)
|
|
14631
|
+
continue;
|
|
14632
|
+
const sepIdx = key.indexOf('::');
|
|
14633
|
+
if (sepIdx < 0)
|
|
14634
|
+
continue;
|
|
14635
|
+
const otherRowKey = key.slice(0, sepIdx);
|
|
14636
|
+
const otherField = key.slice(sepIdx + 2);
|
|
14637
|
+
const otherRowIdx = Number(otherRowKey);
|
|
14638
|
+
if (!Number.isFinite(otherRowIdx))
|
|
14639
|
+
continue;
|
|
14640
|
+
if (otherRowIdx >= myRowIdx)
|
|
14641
|
+
continue;
|
|
14642
|
+
if (otherRowIdx + span.rowspan <= myRowIdx)
|
|
14643
|
+
continue;
|
|
14644
|
+
const otherColIdx = visibleCols.findIndex(c => (typeof c.field === 'string' ? c.field : c.name) === otherField);
|
|
14645
|
+
if (otherColIdx < 0)
|
|
14646
|
+
continue;
|
|
14647
|
+
if (otherColIdx <= colIdx && otherColIdx + span.colspan > colIdx)
|
|
14648
|
+
return true;
|
|
14649
|
+
}
|
|
14650
|
+
return false;
|
|
14651
|
+
}
|
|
16244
14652
|
setRowCountSync(count) {
|
|
16245
14653
|
const safeCount = Math.max(0, Math.floor(this.toFiniteNumber(count, 0)));
|
|
16246
14654
|
if (safeCount !== this.rowCount) {
|
|
@@ -16288,6 +14696,20 @@ class SdTable {
|
|
|
16288
14696
|
return null;
|
|
16289
14697
|
return { from: this.vsStart, to: this.vsEnd };
|
|
16290
14698
|
}
|
|
14699
|
+
// autoTbody fallback에서 sd-table이 직접 sd-tr을 만들어내는 경로.
|
|
14700
|
+
// 가상 스크롤은 사용자가 직접 SdTbody+SdTr을 작성해야 하므로 빈 배열을 반환한다.
|
|
14701
|
+
renderAutoRows() {
|
|
14702
|
+
if (this.useVirtualScroll)
|
|
14703
|
+
return null;
|
|
14704
|
+
const allRows = this.rows ?? [];
|
|
14705
|
+
const pageInfo = this.getPaginationInfoSync();
|
|
14706
|
+
const startIdx = pageInfo?.startIndex ?? 0;
|
|
14707
|
+
const displayed = pageInfo ? allRows.slice(pageInfo.startIndex, pageInfo.endIndex) : allRows;
|
|
14708
|
+
return displayed.map((row, i) => {
|
|
14709
|
+
const absoluteIdx = startIdx + i;
|
|
14710
|
+
return hAsync("sd-tr", { key: absoluteIdx, "row-key": String(absoluteIdx), row: row });
|
|
14711
|
+
});
|
|
14712
|
+
}
|
|
16291
14713
|
get tableClasses() {
|
|
16292
14714
|
return [
|
|
16293
14715
|
'sd-table',
|
|
@@ -16307,24 +14729,34 @@ class SdTable {
|
|
|
16307
14729
|
}
|
|
16308
14730
|
render() {
|
|
16309
14731
|
const resolvedTableId = this.getResolvedTableId();
|
|
16310
|
-
|
|
14732
|
+
const hostStyle = {
|
|
14733
|
+
'--table-radius': `${TABLE_RADIUS}px`,
|
|
14734
|
+
'--table-border-color': TABLE_BORDER.color,
|
|
14735
|
+
'--table-border-width': `${TABLE_BORDER.width}px`,
|
|
14736
|
+
'--table-body-font-family': TABLE_BODY_TYPOGRAPHY.fontFamily,
|
|
14737
|
+
'--table-body-font-weight': TABLE_BODY_TYPOGRAPHY.fontWeight,
|
|
14738
|
+
'--table-body-font-size': `${TABLE_BODY_TYPOGRAPHY.fontSize}px`,
|
|
14739
|
+
'--table-body-line-height': `${TABLE_BODY_TYPOGRAPHY.lineHeight}px`,
|
|
14740
|
+
'--table-body-text-decoration': TABLE_BODY_TYPOGRAPHY.textDecoration,
|
|
14741
|
+
};
|
|
14742
|
+
return (hAsync(Host, { key: '1a80b7c3589a8a2eefaabf24ed895c927543aac4', style: hostStyle }, hAsync("div", { key: 'd97aa6c04948153671e26066b6df02e206fc35e6', class: "sd-table__container", style: {
|
|
16311
14743
|
'--table-width': this.width,
|
|
16312
14744
|
'--table-height': this.height,
|
|
16313
14745
|
'--table-container-height': `calc(${this.height || '100%'} - ${this.pagination && this.rowCount > 0 && !this.useVirtualScroll ? 48 : 0}px)`,
|
|
16314
|
-
} }, hAsync("div", { key: '
|
|
14746
|
+
} }, hAsync("div", { key: '0e13dbbe062953c93a0acaaf5c00ca40a5b7e245', class: {
|
|
16315
14747
|
'sd-table__clip': true,
|
|
16316
14748
|
'sd-table__clip--has-pagination': !!(this.pagination &&
|
|
16317
14749
|
this.pagination.rowsPerPage > 0 &&
|
|
16318
14750
|
this.rowCount > 0 &&
|
|
16319
14751
|
!this.useVirtualScroll),
|
|
16320
|
-
} }, hAsync("div", { key: '
|
|
14752
|
+
} }, hAsync("div", { key: 'c800ecac543d1540d9b6c9faf06753c9dc10aaf3', class: {
|
|
16321
14753
|
'sd-table__wrapper': true,
|
|
16322
14754
|
'sd-table__wrapper--loading': this.isLoading,
|
|
16323
14755
|
'sd-table__wrapper--no-data': this.rowCount === 0 && !this.isLoading,
|
|
16324
|
-
} }, this.isLoading && (hAsync("div", { key: '
|
|
14756
|
+
} }, this.isLoading && (hAsync("div", { key: '656bc53538c8513e014f31f1e976fd66ce79c7aa', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, hAsync("sd-circle-progress", { key: '74078add6860fc95e238d89335d57e205e751cd6', indeterminate: true }))), this.rowCount === 0 && !this.isLoading && (hAsync("div", { key: '18a33a7247bde3d08472f8082325c76217734e5d', class: "sd-table__no-data" }, hAsync("slot", { key: '966cb066f721695013a3e5a1a64543544b09fa77', name: "no-data" }, hAsync("span", { key: 'd335a9b1b2e847b267cefb9d12f7265c5f67f394' }, this.resolvedNoDataLabel)))), hAsync("table", { key: '8fd0a2428bfd4dd6a574bbb02139088c31408866', class: this.tableClasses }, this.autoThead ? (hAsync("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, hAsync("sd-thead", { rows: this.rows ?? [] }))) : (hAsync("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (hAsync("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, hAsync("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (hAsync("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
|
|
16325
14757
|
this.pagination.rowsPerPage > 0 &&
|
|
16326
14758
|
this.rowCount > 0 &&
|
|
16327
|
-
!this.useVirtualScroll && (hAsync("div", { key: '
|
|
14759
|
+
!this.useVirtualScroll && (hAsync("div", { key: '6f483b1a23456bbe42ff769a50c9de5638e7754f', class: "sd-table__pagination" }, hAsync("sd-pagination", { key: '841c545c23de8b4bba4cce3c9f6608d16f7b4e54', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (hAsync("sd-select", { key: 'a67e17bf3067953169ffa119ee41b1d7f46c2058', value: this.useInternalPagination
|
|
16328
14760
|
? this.innerRowsPerPage
|
|
16329
14761
|
: this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", emitValue: true, onSdUpdate: e => {
|
|
16330
14762
|
if (!this.isRowsPerPageValue(e.detail))
|
|
@@ -16405,6 +14837,8 @@ class SdTable {
|
|
|
16405
14837
|
"scrolledRight": [32],
|
|
16406
14838
|
"rowCount": [32],
|
|
16407
14839
|
"loadingScrollTop": [32],
|
|
14840
|
+
"autoThead": [32],
|
|
14841
|
+
"autoTbody": [32],
|
|
16408
14842
|
"isRowSelected": [64],
|
|
16409
14843
|
"updateRowSelect": [64],
|
|
16410
14844
|
"toggleSelectAll": [64],
|
|
@@ -16605,7 +15039,7 @@ class SdTabs {
|
|
|
16605
15039
|
};
|
|
16606
15040
|
}
|
|
16607
15041
|
render() {
|
|
16608
|
-
return (hAsync("div", { key: '
|
|
15042
|
+
return (hAsync("div", { key: 'ff758fbab0a594c28968074a26ad92a28cd4850b', class: this.getContainerClasses(), style: this.buildCssVars() }, this.tabs.map((tab, index) => {
|
|
16609
15043
|
const badgeName = this.getBadgeName(tab);
|
|
16610
15044
|
return (hAsync("div", { key: `tab-${index}`, class: this.getTabClasses(tab), "aria-label": tab.label || 'tab', onClick: () => this.handleTabClick(tab) }, hAsync("span", { "data-label": tab.label, class: "sd-tabs__label" }, tab.label), tab.badge !== undefined && tab.badge !== null && tab.badge !== '' && (hAsync("sd-tag", { name: badgeName, label: tab.badge.toString() }))));
|
|
16611
15045
|
})));
|
|
@@ -16801,7 +15235,7 @@ class SdTag {
|
|
|
16801
15235
|
render() {
|
|
16802
15236
|
const config = this.resolvedConfig;
|
|
16803
15237
|
const iconNode = this.renderIcon(config.icon, config.iconSize);
|
|
16804
|
-
return (hAsync("span", { key: '
|
|
15238
|
+
return (hAsync("span", { key: '3e7a6602ee73f56e5709711ac735460230de7e58', class: "sd-tag", style: {
|
|
16805
15239
|
'--sd-tag-background': config.background,
|
|
16806
15240
|
'--sd-tag-content': config.content,
|
|
16807
15241
|
'--sd-tag-height': config.height,
|
|
@@ -16811,7 +15245,7 @@ class SdTag {
|
|
|
16811
15245
|
'--sd-tag-font-weight': config.fontWeight,
|
|
16812
15246
|
'--sd-tag-line-height': config.lineHeight,
|
|
16813
15247
|
'--sd-tag-radius': config.radius,
|
|
16814
|
-
}, "aria-label": this.label || 'tag' }, this.icon && this.isLeft && iconNode, hAsync("span", { key: '
|
|
15248
|
+
}, "aria-label": this.label || 'tag' }, this.icon && this.isLeft && iconNode, hAsync("span", { key: '8da56711cb12127f96195404799581480280507f', class: "sd-tag__label" }, this.label), this.icon && !this.isLeft && iconNode));
|
|
16815
15249
|
}
|
|
16816
15250
|
static get style() { return sdTagCss(); }
|
|
16817
15251
|
static get cmpMeta() { return {
|
|
@@ -16829,7 +15263,7 @@ class SdTag {
|
|
|
16829
15263
|
}; }
|
|
16830
15264
|
}
|
|
16831
15265
|
|
|
16832
|
-
const sdTbodyCss = () => `:host{display:contents}:host *{box-sizing:border-box}.tbody{display:table-row-group}
|
|
15266
|
+
const sdTbodyCss = () => `:host{display:contents}:host *{box-sizing:border-box}.tbody{display:table-row-group}`;
|
|
16833
15267
|
|
|
16834
15268
|
class SdTbody {
|
|
16835
15269
|
constructor(hostRef) {
|
|
@@ -16862,7 +15296,12 @@ class SdTbody {
|
|
|
16862
15296
|
this.syncTableContext();
|
|
16863
15297
|
}
|
|
16864
15298
|
syncTableContext() {
|
|
16865
|
-
|
|
15299
|
+
// sd-table이 shadow:true이므로 fallback content로 렌더되면 closest가 경계를 못 넘는다.
|
|
15300
|
+
// 그 경우 getRootNode().host(=sd-table)로 폴백한다.
|
|
15301
|
+
const closest = this.el.closest('sd-table');
|
|
15302
|
+
const root = this.el.getRootNode();
|
|
15303
|
+
const fromShadow = root instanceof ShadowRoot ? root.host : null;
|
|
15304
|
+
const table = closest ?? fromShadow;
|
|
16866
15305
|
this.tableEl = table;
|
|
16867
15306
|
const fromMethod = table?.getTableIdSync?.();
|
|
16868
15307
|
const fromAttr = table?.getAttribute(TABLE_ID_ATTR);
|
|
@@ -16874,12 +15313,11 @@ class SdTbody {
|
|
|
16874
15313
|
}
|
|
16875
15314
|
}
|
|
16876
15315
|
render() {
|
|
16877
|
-
|
|
16878
|
-
return (hAsync(Host, { key: 'e4c64dbf97185bbc6eaec4b883c65dc8ebd34ece', slot: `${this.tableId}-body` }, hAsync("tbody", { key: 'b2fb886684a5a6055d3af659bba75dd9bc801b73', class: { 'tbody': true, 'tbody--empty': !hasRows } }, hasRows ? ([
|
|
15316
|
+
return (hAsync(Host, { key: 'e474bc09fdec9d48d978ec87620b161220b5236c', slot: `${this.tableId}-body` }, hAsync("tbody", { key: 'c74261b3f30c43e8ac8c3bdea1180f17bfc7dbc8', class: { tbody: true } }, [
|
|
16879
15317
|
this.topSpacerHeight > 0 && (hAsync("tr", { key: "spacer-top", class: "tbody__spacer", style: { height: `${this.topSpacerHeight}px`, display: 'block' } })),
|
|
16880
|
-
hAsync("slot",
|
|
15318
|
+
hAsync("slot", { key: 'f686e7e8fa81e725a32592a58267d0b5cd7551e6' }),
|
|
16881
15319
|
this.bottomSpacerHeight > 0 && (hAsync("tr", { key: "spacer-bottom", class: "tbody__spacer", style: { height: `${this.bottomSpacerHeight}px`, display: 'block' } })),
|
|
16882
|
-
])
|
|
15320
|
+
])));
|
|
16883
15321
|
}
|
|
16884
15322
|
static get watchers() { return {
|
|
16885
15323
|
"rows": [{
|
|
@@ -16912,20 +15350,63 @@ class SdTd {
|
|
|
16912
15350
|
field;
|
|
16913
15351
|
rowKey;
|
|
16914
15352
|
align;
|
|
15353
|
+
rowspan;
|
|
15354
|
+
colspan;
|
|
16915
15355
|
handleFieldChange() {
|
|
16916
15356
|
this.syncSlotName();
|
|
15357
|
+
this.syncSpanRegistration();
|
|
16917
15358
|
}
|
|
16918
15359
|
handleRowKeyChange() {
|
|
16919
15360
|
this.syncSlotName();
|
|
15361
|
+
this.syncSpanRegistration();
|
|
15362
|
+
}
|
|
15363
|
+
handleSpanChange() {
|
|
15364
|
+
this.syncSpanRegistration();
|
|
16920
15365
|
}
|
|
16921
15366
|
componentWillLoad() {
|
|
16922
15367
|
this.syncSlotName();
|
|
15368
|
+
this.syncSpanRegistration();
|
|
16923
15369
|
// slot 타이밍 엇갈림 대응: 부모 sd-tr forceUpdate로 슬롯 재매칭
|
|
16924
15370
|
const parentTr = this.el.parentElement;
|
|
16925
15371
|
if (parentTr?.tagName?.toLowerCase() === 'sd-tr') ;
|
|
16926
15372
|
}
|
|
16927
15373
|
componentDidLoad() {
|
|
16928
15374
|
this.syncSlotName();
|
|
15375
|
+
this.syncSpanRegistration();
|
|
15376
|
+
}
|
|
15377
|
+
// React StrictMode에서는 disconnect/reconnect 사이클이 일어나면서
|
|
15378
|
+
// 동일 인스턴스의 componentWillLoad는 더 이상 호출되지 않는다.
|
|
15379
|
+
// 재연결 시점에도 등록 상태를 복구해야 rowspan/colspan이 유지된다.
|
|
15380
|
+
connectedCallback() {
|
|
15381
|
+
this.syncSpanRegistration();
|
|
15382
|
+
}
|
|
15383
|
+
disconnectedCallback() {
|
|
15384
|
+
const table = this.findTable();
|
|
15385
|
+
if (table?.unregisterSpanSync && this.field && this.rowKey != null) {
|
|
15386
|
+
table.unregisterSpanSync(String(this.rowKey), this.field);
|
|
15387
|
+
this.requestParentTrUpdate();
|
|
15388
|
+
}
|
|
15389
|
+
}
|
|
15390
|
+
findTable() {
|
|
15391
|
+
return this.el.closest('sd-table');
|
|
15392
|
+
}
|
|
15393
|
+
requestParentTrUpdate() {
|
|
15394
|
+
const parentTr = this.el.parentElement;
|
|
15395
|
+
if (parentTr?.tagName?.toLowerCase() !== 'sd-tr')
|
|
15396
|
+
return;
|
|
15397
|
+
const trAny = parentTr;
|
|
15398
|
+
if (typeof trAny.bumpSpansVersion === 'function') {
|
|
15399
|
+
trAny.bumpSpansVersion();
|
|
15400
|
+
}
|
|
15401
|
+
}
|
|
15402
|
+
syncSpanRegistration() {
|
|
15403
|
+
const table = this.findTable();
|
|
15404
|
+
if (!table?.registerSpanSync || !this.field || this.rowKey == null)
|
|
15405
|
+
return;
|
|
15406
|
+
const rs = Math.max(1, Math.floor(Number(this.rowspan) || 1));
|
|
15407
|
+
const cs = Math.max(1, Math.floor(Number(this.colspan) || 1));
|
|
15408
|
+
table.registerSpanSync(String(this.rowKey), this.field, rs, cs);
|
|
15409
|
+
this.requestParentTrUpdate();
|
|
16929
15410
|
}
|
|
16930
15411
|
syncSlotName() {
|
|
16931
15412
|
const table = this.el.closest('sd-table');
|
|
@@ -16939,7 +15420,7 @@ class SdTd {
|
|
|
16939
15420
|
}
|
|
16940
15421
|
}
|
|
16941
15422
|
render() {
|
|
16942
|
-
return (hAsync(Host, { key: '
|
|
15423
|
+
return (hAsync(Host, { key: '1702396f538453cf26beb81b63926ea73b7baa89', class: { [`align-${this.align}`]: Boolean(this.align) } }, hAsync("slot", { key: 'bd04afefd83178f48eb93b4e7d189386a817ff72' })));
|
|
16943
15424
|
}
|
|
16944
15425
|
static get watchers() { return {
|
|
16945
15426
|
"field": [{
|
|
@@ -16947,6 +15428,12 @@ class SdTd {
|
|
|
16947
15428
|
}],
|
|
16948
15429
|
"rowKey": [{
|
|
16949
15430
|
"handleRowKeyChange": 0
|
|
15431
|
+
}],
|
|
15432
|
+
"rowspan": [{
|
|
15433
|
+
"handleSpanChange": 0
|
|
15434
|
+
}],
|
|
15435
|
+
"colspan": [{
|
|
15436
|
+
"handleSpanChange": 0
|
|
16950
15437
|
}]
|
|
16951
15438
|
}; }
|
|
16952
15439
|
static get style() { return sdTdCss(); }
|
|
@@ -16956,7 +15443,9 @@ class SdTd {
|
|
|
16956
15443
|
"$members$": {
|
|
16957
15444
|
"field": [1],
|
|
16958
15445
|
"rowKey": [1, "row-key"],
|
|
16959
|
-
"align": [1]
|
|
15446
|
+
"align": [1],
|
|
15447
|
+
"rowspan": [2],
|
|
15448
|
+
"colspan": [2]
|
|
16960
15449
|
},
|
|
16961
15450
|
"$listeners$": undefined,
|
|
16962
15451
|
"$lazyBundleId$": "-",
|
|
@@ -17035,16 +15524,16 @@ class SdTextLink {
|
|
|
17035
15524
|
'--sd-text-link-text-decoration': typo.textDecoration,
|
|
17036
15525
|
...(this.disabled ? { '--sd-text-link-color': TEXT_LINK_COLORS.content.disabled } : {}),
|
|
17037
15526
|
};
|
|
17038
|
-
return (hAsync("span", { key: '
|
|
15527
|
+
return (hAsync("span", { key: '9bd62ac603764a5938f3c72bac3a8bf893dfb233', class: {
|
|
17039
15528
|
'sd-text-link': true,
|
|
17040
15529
|
'sd-text-link--disabled': this.disabled,
|
|
17041
|
-
}, style: cssVars, onClick: this.handleClick }, this.icon && (hAsync("sd-icon", { key: '
|
|
15530
|
+
}, style: cssVars, onClick: this.handleClick }, this.icon && (hAsync("sd-icon", { key: '9d63aea3c45c4962e5766e7059a166a85e7a357f', name: this.icon, size: TEXT_LINK_LAYOUT.iconSize, color: iconColor, class: "sd-text-link__icon" })), hAsync("span", { key: 'dc73d60dd1e593c597a6b5dd977db380c21ff680', class: labelClassName }, this.label), this.useArrow && (hAsync("span", { key: '2b25dfb6ae2f857b674341427f93ee34e4691893', class: "sd-text-link__arrow", style: {
|
|
17042
15531
|
width: `${TEXT_LINK_LAYOUT.arrowFrame}px`,
|
|
17043
15532
|
height: `${TEXT_LINK_LAYOUT.arrowFrame}px`,
|
|
17044
15533
|
display: 'inline-flex',
|
|
17045
15534
|
alignItems: 'center',
|
|
17046
15535
|
justifyContent: 'center',
|
|
17047
|
-
} }, hAsync("sd-icon", { key: '
|
|
15536
|
+
} }, hAsync("sd-icon", { key: 'a5c8fb48e66f4a6820da1a54cedd7b1a13c5dcec', name: "chevronRight", size: TEXT_LINK_LAYOUT.arrowIconSize, color: arrowColor })))));
|
|
17048
15537
|
}
|
|
17049
15538
|
static get style() { return sdTextLinkCss(); }
|
|
17050
15539
|
static get cmpMeta() { return {
|
|
@@ -17191,7 +15680,7 @@ class SdTextarea {
|
|
|
17191
15680
|
'--sd-system-size-field-sm-height': 'auto',
|
|
17192
15681
|
'--sd-system-radius-field-sm': `${TEXTAREA_TOKENS.radius}px`,
|
|
17193
15682
|
};
|
|
17194
|
-
return (hAsync("sd-field", { key: '
|
|
15683
|
+
return (hAsync("sd-field", { key: 'ca7dc6c13d22ba43cd99ee1e976599d7efb1eceb', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, hAsync("div", { key: 'a36ffabff714596bf780f2a63ccfde3e02eadda7', class: "sd-textarea__content" }, hAsync("textarea", { key: 'b7f8a55b7ee4dfc394c380a97e21c6cc34d12b9b', name: this.name, ref: el => (this.nativeEl = el), class: `sd-textarea__native ${this.textareaClass}`, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, autofocus: this.autoFocus, maxLength: this.maxLength, rows: this.rows, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.textareaStyle }))));
|
|
17195
15684
|
}
|
|
17196
15685
|
static get watchers() { return {
|
|
17197
15686
|
"value": [{
|
|
@@ -17245,11 +15734,12 @@ class SdTextarea {
|
|
|
17245
15734
|
}; }
|
|
17246
15735
|
}
|
|
17247
15736
|
|
|
17248
|
-
const sdTheadCss = () => `sd-thead{display:contents}sd-thead *{box-sizing:border-box}.thead{display:table-header-group;height:36px}.thead--sticky{position:sticky;top:0;z-index:120}.tr{display:table-row;width:100%}.th{display:table-cell;background
|
|
15737
|
+
const sdTheadCss = () => `sd-thead{display:contents}sd-thead *{box-sizing:border-box}.thead{display:table-header-group;height:var(--table-header-height, 36px)}.thead--sticky{position:sticky;top:0;z-index:120}.tr{display:table-row;width:100%}.th{display:table-cell;background:var(--table-header-bg, #F5FAFF);height:var(--table-header-height, 36px);padding:0 var(--table-header-padding-x, 16px);font-family:var(--table-header-font-family, inherit);font-weight:var(--table-header-font-weight, 500);font-size:var(--table-header-font-size, 12px);line-height:var(--table-header-line-height, 20px);text-decoration:var(--table-header-text-decoration, none);vertical-align:middle;border-bottom:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);-webkit-user-select:none;user-select:none;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.th--selected{position:relative;width:52px !important;max-width:52px !important;min-width:52px !important;padding:0 10px 0 24px;text-align:left}.th--selected sd-checkbox label{position:relative}.th--selected sd-checkbox label:before{content:"";position:absolute;inset:-6px}.th.sticky-left{position:sticky;background-color:var(--table-header-bg, #F5FAFF);z-index:110 !important;left:var(--sticky-left-offset, 0)}.th.sticky-right{position:sticky;background-color:var(--table-header-bg, #F5FAFF);z-index:110 !important;right:var(--sticky-right-offset, 0)}.th.sticky-left-edge:after{content:"";position:absolute;top:0;left:100%;right:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset 12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.th.sticky-right-edge:after{content:"";position:absolute;top:0;left:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset -12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.th.sticky-left-edge.is-scrolled-left{overflow:visible}.th.sticky-left-edge.is-scrolled-left:after{opacity:1}.th.sticky-right-edge.is-scrolled-right{overflow:visible}.th.sticky-right-edge.is-scrolled-right:after{opacity:1}.th__content{display:flex;flex-flow:row nowrap;align-items:center;gap:var(--table-header-gap, 4px)}.th__content--left{justify-content:flex-start}.th__content--center{justify-content:center}.th__content--right{justify-content:flex-end}.th__content--label{white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.th__resizer{position:absolute;top:50%;right:0;transform:translateY(-50%);width:4px;height:var(--table-header-resizer-height, 16px);cursor:col-resize;z-index:3;border-left:var(--table-border-width, 1px) solid var(--table-header-resizer-color, #CCCCCC);border-right:var(--table-border-width, 1px) solid var(--table-header-resizer-color, #CCCCCC)}.th__resizer--left{right:auto;left:0}`;
|
|
17249
15738
|
|
|
17250
15739
|
class SdThead {
|
|
17251
15740
|
constructor(hostRef) {
|
|
17252
15741
|
registerInstance(this, hostRef);
|
|
15742
|
+
this.sdColumnSort = createEvent(this, "sdColumnSort", 7);
|
|
17253
15743
|
}
|
|
17254
15744
|
get el() { return getElement(this); }
|
|
17255
15745
|
columns;
|
|
@@ -17261,6 +15751,7 @@ class SdThead {
|
|
|
17261
15751
|
scrolledRight;
|
|
17262
15752
|
rows = [];
|
|
17263
15753
|
columnWidths = [];
|
|
15754
|
+
sdColumnSort;
|
|
17264
15755
|
tableId = '';
|
|
17265
15756
|
_columns = [];
|
|
17266
15757
|
_selectable = false;
|
|
@@ -17288,7 +15779,12 @@ class SdThead {
|
|
|
17288
15779
|
this.resolveConfig();
|
|
17289
15780
|
}
|
|
17290
15781
|
syncTableContext() {
|
|
17291
|
-
|
|
15782
|
+
// sd-table이 shadow:true이므로 fallback content로 렌더되면 closest가 경계를 못 넘는다.
|
|
15783
|
+
// 그 경우 getRootNode().host(=sd-table)로 폴백한다.
|
|
15784
|
+
const closest = this.el.closest('sd-table');
|
|
15785
|
+
const root = this.el.getRootNode();
|
|
15786
|
+
const fromShadow = root instanceof ShadowRoot ? root.host : null;
|
|
15787
|
+
const table = closest ?? fromShadow;
|
|
17292
15788
|
this.tableEl = table;
|
|
17293
15789
|
const fromMethod = table?.getTableIdSync?.();
|
|
17294
15790
|
const fromAttr = table?.getAttribute(TABLE_ID_ATTR);
|
|
@@ -17356,9 +15852,11 @@ class SdThead {
|
|
|
17356
15852
|
this.tableEl.handleResize(index, event, reversed);
|
|
17357
15853
|
}
|
|
17358
15854
|
}
|
|
15855
|
+
handleColumnSort = (col) => {
|
|
15856
|
+
this.sdColumnSort.emit({ column: col });
|
|
15857
|
+
};
|
|
17359
15858
|
handleSelectAll(checked) {
|
|
17360
|
-
const
|
|
17361
|
-
const nextChecked = currentState === null ? false : !!checked;
|
|
15859
|
+
const nextChecked = !!checked;
|
|
17362
15860
|
const safeRows = Array.isArray(this.rows) ? this.rows : [];
|
|
17363
15861
|
if (this.tableEl?.toggleSelectAllSync) {
|
|
17364
15862
|
this.tableEl.toggleSelectAllSync(nextChecked, safeRows);
|
|
@@ -17378,27 +15876,42 @@ class SdThead {
|
|
|
17378
15876
|
const stickyLeftCols = this.visibleColumns.slice(0, stickyLeftCount);
|
|
17379
15877
|
const middleCols = this.visibleColumns.slice(stickyLeftCount, this.visibleColumns.length - stickyRightCount);
|
|
17380
15878
|
const stickyRightCols = this.visibleColumns.slice(this.visibleColumns.length - stickyRightCount);
|
|
17381
|
-
|
|
15879
|
+
const headStyle = {
|
|
15880
|
+
'--table-header-height': `${TABLE_HEADER_LAYOUT.height}px`,
|
|
15881
|
+
'--table-header-padding-x': `${TABLE_HEADER_LAYOUT.paddingX}px`,
|
|
15882
|
+
'--table-header-gap': `${TABLE_HEADER_LAYOUT.gap}px`,
|
|
15883
|
+
'--table-header-bg': TABLE_HEADER_COLORS.bg,
|
|
15884
|
+
'--table-header-font-family': TABLE_HEADER_TYPOGRAPHY.fontFamily,
|
|
15885
|
+
'--table-header-font-weight': TABLE_HEADER_TYPOGRAPHY.fontWeight,
|
|
15886
|
+
'--table-header-font-size': `${TABLE_HEADER_TYPOGRAPHY.fontSize}px`,
|
|
15887
|
+
'--table-header-line-height': `${TABLE_HEADER_TYPOGRAPHY.lineHeight}px`,
|
|
15888
|
+
'--table-header-text-decoration': TABLE_HEADER_TYPOGRAPHY.textDecoration,
|
|
15889
|
+
'--table-header-resizer-color': TABLE_HEADER_RESIZING_BAR.color,
|
|
15890
|
+
'--table-header-resizer-height': `${TABLE_HEADER_RESIZING_BAR.height}px`,
|
|
15891
|
+
'--table-border-color': TABLE_BORDER.color,
|
|
15892
|
+
'--table-border-width': `${TABLE_BORDER.width}px`,
|
|
15893
|
+
};
|
|
15894
|
+
return (hAsync(Host, { key: 'c4468056cc20a78516e61bccaf4d11c098e83ec6', slot: `${this.tableId}-head`, style: headStyle }, hAsync("thead", { key: 'a9befd1728baf2104bfb9132557d5c5c0eb49748', class: {
|
|
17382
15895
|
'thead': true,
|
|
17383
15896
|
'thead--sticky': this._stickyHeader,
|
|
17384
|
-
} }, hAsync("tr", { key: '
|
|
15897
|
+
} }, hAsync("tr", { key: 'da786d82d4896b6124becf42f634bcc5b0a6ffb7', class: "tr" }, this._selectable && (hAsync("th", { key: 'b257c5475b7e528fbfc52ea85031a4c49bed7b36', class: {
|
|
17385
15898
|
'th': true,
|
|
17386
15899
|
'th--selected': true,
|
|
17387
15900
|
'sticky-left': true,
|
|
17388
15901
|
'sticky-left-edge': stickyLeftCount === 0,
|
|
17389
15902
|
'is-scrolled-left': stickyLeftCount === 0 && this._scrolledLeft,
|
|
17390
|
-
}, style: { '--sticky-left-offset': '0px' } }, hAsync("sd-checkbox", { key: '
|
|
15903
|
+
}, style: { '--sticky-left-offset': '0px' } }, hAsync("sd-checkbox", { key: '6624026c1811c809eeb5131518ddb8c11f66b541', value: this.getIsAllChecked(), disabled: !safeRows.length, onSdUpdate: (e) => this.handleSelectAll(e.detail) }))), stickyLeftCols.map((col, idx) => (hAsync("th", { key: col.name, class: {
|
|
17391
15904
|
'th': true,
|
|
17392
15905
|
[`${col.thClass}`]: Boolean(col.thClass),
|
|
17393
15906
|
'sticky-left': true,
|
|
17394
15907
|
'sticky-left-edge': idx === stickyLeftCount - 1,
|
|
17395
15908
|
'is-scrolled-left': idx === stickyLeftCount - 1 && this._scrolledLeft,
|
|
17396
|
-
}, style: { ...col.thStyle, ...this.getStickyStyle(idx) } }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.
|
|
15909
|
+
}, style: { ...col.thStyle, ...this.getStickyStyle(idx) } }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.icon && (hAsync("sd-icon", { name: col.icon, size: "12", color: resolveTableIconColor(col.icon, col.iconColor) })), col.sort && (hAsync("sd-icon", { name: resolveSortIconName(col.sort), size: "12", color: resolveTableIconColor(resolveSortIconName(col.sort), col.iconColor), onClick: () => this.handleColumnSort(col), style: { cursor: 'pointer' } })), col.tooltip && (hAsync("sd-tooltip", { ...col.tooltipOptions }, hAsync("div", { slot: "content" }, col.tooltip.map(text => (hAsync("p", null, text))))))), this._resizable && (hAsync("div", { class: "th__resizer", onMouseDown: (evt) => this.handleResize(idx, evt) }))))), middleCols.map((col, relativeIdx) => {
|
|
17397
15910
|
const actualColIdx = stickyLeftCount + relativeIdx;
|
|
17398
15911
|
return (hAsync("th", { key: col.name, class: {
|
|
17399
15912
|
th: true,
|
|
17400
15913
|
[`${col.thClass}`]: Boolean(col.thClass),
|
|
17401
|
-
}, style: { ...col.thStyle, ...this.getStickyStyle(actualColIdx) } }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.
|
|
15914
|
+
}, style: { ...col.thStyle, ...this.getStickyStyle(actualColIdx) } }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.icon && (hAsync("sd-icon", { name: col.icon, size: "12", color: resolveTableIconColor(col.icon, col.iconColor) })), col.sort && (hAsync("sd-icon", { name: resolveSortIconName(col.sort), size: "12", color: resolveTableIconColor(resolveSortIconName(col.sort), col.iconColor), onClick: () => this.handleColumnSort(col), style: { cursor: 'pointer' } })), col.tooltip && (hAsync("sd-tooltip", { ...col.tooltipOptions }, hAsync("div", { slot: "content" }, col.tooltip.map(text => (hAsync("p", null, text))))))), this._resizable && (hAsync("div", { class: "th__resizer", onMouseDown: (evt) => this.handleResize(actualColIdx, evt) }))));
|
|
17402
15915
|
}), stickyRightCols.map((col, relativeIdx) => {
|
|
17403
15916
|
const actualColIdx = this.visibleColumns.length - stickyRightCount + relativeIdx;
|
|
17404
15917
|
return (hAsync("th", { key: col.name, class: {
|
|
@@ -17407,7 +15920,7 @@ class SdThead {
|
|
|
17407
15920
|
'sticky-right': true,
|
|
17408
15921
|
'sticky-right-edge': relativeIdx === 0,
|
|
17409
15922
|
'is-scrolled-right': relativeIdx === 0 && this._scrolledRight,
|
|
17410
|
-
}, style: { ...col.thStyle, ...this.getStickyStyle(actualColIdx) } }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.
|
|
15923
|
+
}, style: { ...col.thStyle, ...this.getStickyStyle(actualColIdx) } }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.icon && (hAsync("sd-icon", { name: col.icon, size: "12", color: resolveTableIconColor(col.icon, col.iconColor) })), col.sort && (hAsync("sd-icon", { name: resolveSortIconName(col.sort), size: "12", color: resolveTableIconColor(resolveSortIconName(col.sort), col.iconColor), onClick: () => this.handleColumnSort(col), style: { cursor: 'pointer' } })), col.tooltip && (hAsync("sd-tooltip", { ...col.tooltipOptions }, hAsync("div", { slot: "content" }, col.tooltip.map(text => (hAsync("p", null, text))))))), this._resizable && (hAsync("div", { class: "th__resizer th__resizer--left", onMouseDown: (evt) => this.handleResize(actualColIdx, evt, true) }))));
|
|
17411
15924
|
})))));
|
|
17412
15925
|
}
|
|
17413
15926
|
static get watchers() { return {
|
|
@@ -17502,10 +16015,10 @@ class SdToast {
|
|
|
17502
16015
|
render() {
|
|
17503
16016
|
const typeConfig = TOAST_TYPE_CONFIG[this.type] ?? TOAST_TYPE_CONFIG.default;
|
|
17504
16017
|
const iconSize = Number(TOAST_LAYOUT.iconSize);
|
|
17505
|
-
return (hAsync("div", { key: '
|
|
16018
|
+
return (hAsync("div", { key: 'f5db941adee41c3d2c57c2c7a12d94d03dcdebb6', style: {
|
|
17506
16019
|
'--sd-toast-bg': typeConfig.bg,
|
|
17507
16020
|
'--sd-toast-text': typeConfig.content,
|
|
17508
|
-
} }, hAsync("div", { key: '
|
|
16021
|
+
} }, hAsync("div", { key: '68362fac26744fc7e805a18c589f4aff5845edc1', class: "sd-toast", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.icon && (hAsync("div", { key: '8ec7941b469b6d0242ab68b7928a9dbf6e75bb5f', class: "sd-toast__icon" }, hAsync("sd-icon", { key: 'c057a100de91cecc3435bfa6a95c928727eb1836', name: this.icon, size: iconSize, color: typeConfig.content }))), hAsync("div", { key: '21e84dd6cdf7efa52611da532a0983268c7c2cb2', class: "sd-toast__content" }, hAsync("span", { key: '99c370fe3d4a54103fbccef395afadf2923f3613', class: "sd-toast__message" }, this.message)), this.link && (hAsync("a", { key: '3ce7109c2d1f5cd03f4fcc6bb01ede14c6400734', href: this.link, class: "sd-toast__link", target: "_blank", rel: "noopener noreferrer" }, this.linkLabel || this.link)), this.useClose && (hAsync("sd-ghost-button", { key: '2cf982fd1fe538533ceff61bbdecdacd2d69e51c', class: "sd-toast__close", icon: "close", intent: this.type === 'caution' ? 'default' : 'inverse', ariaLabel: "close", size: "xs", onClick: () => this.close.emit() })))));
|
|
17509
16022
|
}
|
|
17510
16023
|
static get style() { return sdToastCss(); }
|
|
17511
16024
|
static get cmpMeta() { return {
|
|
@@ -17757,7 +16270,7 @@ class SdToastContainer {
|
|
|
17757
16270
|
const activeToasts = toasts.filter(t => t.state !== 'exiting').reverse();
|
|
17758
16271
|
const indexMap = new Map();
|
|
17759
16272
|
activeToasts.forEach((t, i) => indexMap.set(t.id, i));
|
|
17760
|
-
return (hAsync("div", { key: '
|
|
16273
|
+
return (hAsync("div", { key: '925f4bf56626e8c722051afa65aa64f2a50007db', class: "sd-toast-container", style: this.getContainerStyles(), onMouseEnter: () => {
|
|
17761
16274
|
this.expanded = true;
|
|
17762
16275
|
this.pauseTimers();
|
|
17763
16276
|
}, onMouseLeave: () => {
|
|
@@ -17915,7 +16428,7 @@ class SdToggle {
|
|
|
17915
16428
|
'--sd-toggle-content-select': TOGGLE_COLORS.content.select,
|
|
17916
16429
|
'--sd-toggle-content-disabled': TOGGLE_COLORS.content.disabled,
|
|
17917
16430
|
};
|
|
17918
|
-
return (hAsync("label", { key: '
|
|
16431
|
+
return (hAsync("label", { key: '9ef981165b998f43ec23f3bb1cf0ef385962d7fb', class: this.toggleClasses, style: cssVars, "aria-label": this.label || 'toggle' }, this.label, hAsync("input", { key: '6b6d2a89f43036f624c7bc291b2c5aa7a93c8f0a', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
|
|
17919
16432
|
}
|
|
17920
16433
|
static get style() { return sdToggleCss(); }
|
|
17921
16434
|
static get cmpMeta() { return {
|
|
@@ -18042,14 +16555,14 @@ class SdTooltip {
|
|
|
18042
16555
|
const toggleTooltip = () => (this.showTooltip = !this.showTooltip);
|
|
18043
16556
|
const divTrigger = trigger === 'hover' ? hoverTrigger : this.label ? {} : { onClick: toggleTooltip };
|
|
18044
16557
|
const buttonClickTrigger = trigger === 'click' && this.label ? { onSdClick: toggleTooltip } : {};
|
|
18045
|
-
return (hAsync(Fragment, { key: '
|
|
16558
|
+
return (hAsync(Fragment, { key: '9e14a4013ea6d04a37529cf7afdb10fe4b3d98eb' }, hAsync("div", { key: 'd98396d4440a795e59b0d2fede7381f8e0da7280', class: `sd-tooltip-trigger ${this.sdClass || ''}`, ...divTrigger }, this.label ? (hAsync("sd-button", { ref: el => (this.buttonEl = el), label: this.label, icon: icon, size: this.buttonSize ?? 'sm', color: color, variant: this.buttonVariant ?? 'primary', class: "sd-tooltip", ...buttonClickTrigger })) : (hAsync("sd-icon", { ref: el => (this.buttonEl = el), name: icon, size: this.iconSize ?? 12, color: color, class: "sd-tooltip" }))), this.showTooltip && (hAsync("sd-floating-portal", { key: '59d42ad7aafd94fbe89fc5af3bddf5a305e13a4c', parentRef: this.buttonEl, onSdClose: this.handleClose.bind(this), placement: placement, offset: this.tooltipOffset }, hAsync("div", { key: '88a927d2c3461c7c68865262e8565d0d1385e9af', ref: el => (this.menuEl = el), class: {
|
|
18046
16559
|
'sd-floating-menu': true,
|
|
18047
16560
|
[`sd-floating-menu--${tooltipType}`]: true,
|
|
18048
16561
|
[`sd-floating-menu--${placement}`]: true,
|
|
18049
16562
|
}, style: {
|
|
18050
16563
|
'--sd-floating-bg': typeConfig.bg,
|
|
18051
16564
|
'--sd-floating-content': typeConfig.content,
|
|
18052
|
-
}, onMouseEnter: () => this.show(), onMouseLeave: () => this.startHideTimer() }, hAsync("i", { key: '
|
|
16565
|
+
}, onMouseEnter: () => this.show(), onMouseLeave: () => this.startHideTimer() }, hAsync("i", { key: 'eb2bcb4e6faa2066e309b662f372fbf8bef42a3e', class: `sd-floating-menu__arrow sd-floating-menu__arrow--${placement}` }, hAsync(TooltipArrow, { key: 'f13005f88ef3194d43de72a87ee78f2c0858682e' })), hAsync("div", { key: '726aff3af3603593d0b994ee17ba88cec071868a', class: "sd-floating-menu__content", innerHTML: this.slotContentHTML }))))));
|
|
18053
16566
|
}
|
|
18054
16567
|
static get style() { return sdTooltipCss(); }
|
|
18055
16568
|
static get cmpMeta() { return {
|
|
@@ -18076,7 +16589,7 @@ class SdTooltip {
|
|
|
18076
16589
|
}; }
|
|
18077
16590
|
}
|
|
18078
16591
|
|
|
18079
|
-
const sdTrCss = () => `sd-tr{display:contents}sd-tr *{box-sizing:border-box}.tr{display:table-row}.tr:hover .td{background-color:#F9F9F9}.td{display:table-cell;height:44px;padding:0 16px;border-bottom:1px solid #E1E1E1;background:white;vertical-align:middle;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.td--left{text-align:left}.td--center{text-align:center}.td--right{text-align:right}.td--selected{position:relative;width:52px !important;max-width:52px !important;min-width:52px !important;padding:0 10px 0 24px;text-align:left}.td--selected sd-checkbox label{position:relative}.td--selected sd-checkbox label:before{content:"";position:absolute;inset:-6px}.td.sticky-left{position:sticky;background-color:white;z-index:100 !important;left:var(--sticky-left-offset, 0)}.td.sticky-right{position:sticky;background-color:white;z-index:100 !important;right:var(--sticky-right-offset, 0)}.td.sticky-left-edge:after{content:"";position:absolute;top:0;left:100%;right:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset 12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.td.sticky-right-edge:after{content:"";position:absolute;top:0;left:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset -12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.td.sticky-left-edge.is-scrolled-left{overflow:visible}.td.sticky-left-edge.is-scrolled-left:after{opacity:1}.td.sticky-right-edge.is-scrolled-right{overflow:visible}.td.sticky-right-edge.is-scrolled-right:after{opacity:1}.tr:hover .td.sticky-left,.tr:hover .td.sticky-right{background-color:#F9F9F9}`;
|
|
16592
|
+
const sdTrCss = () => `sd-tr{display:contents}sd-tr *{box-sizing:border-box}.tr{display:table-row}.tr:hover .td{background-color:#F9F9F9}.tr--no-hover:hover .td{background-color:white}.td{display:table-cell;height:var(--table-body-height, 44px);padding:0 var(--table-body-padding-x, 16px);border-bottom:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);background:white;vertical-align:middle;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.td--left{text-align:left}.td--center{text-align:center}.td--right{text-align:right}.td--selected{position:relative;width:52px !important;max-width:52px !important;min-width:52px !important;padding:0 10px 0 24px;text-align:left}.td--selected sd-checkbox label{position:relative}.td--selected sd-checkbox label:before{content:"";position:absolute;inset:-6px}.td.sticky-left{position:sticky;background-color:white;z-index:100 !important;left:var(--sticky-left-offset, 0)}.td.sticky-right{position:sticky;background-color:white;z-index:100 !important;right:var(--sticky-right-offset, 0)}.td.sticky-left-edge:after{content:"";position:absolute;top:0;left:100%;right:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset 12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.td.sticky-right-edge:after{content:"";position:absolute;top:0;left:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset -12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.td.sticky-left-edge.is-scrolled-left{overflow:visible}.td.sticky-left-edge.is-scrolled-left:after{opacity:1}.td.sticky-right-edge.is-scrolled-right{overflow:visible}.td.sticky-right-edge.is-scrolled-right:after{opacity:1}.tr:hover .td.sticky-left,.tr:hover .td.sticky-right{background-color:#F9F9F9}.tr--no-hover:hover .td.sticky-left,.tr--no-hover:hover .td.sticky-right{background-color:white}`;
|
|
18080
16593
|
|
|
18081
16594
|
class SdTr {
|
|
18082
16595
|
constructor(hostRef) {
|
|
@@ -18091,6 +16604,7 @@ class SdTr {
|
|
|
18091
16604
|
tableId = '';
|
|
18092
16605
|
columnWidths = [];
|
|
18093
16606
|
isVisible = true;
|
|
16607
|
+
spansVersion = 0;
|
|
18094
16608
|
_columns = [];
|
|
18095
16609
|
_selectable = false;
|
|
18096
16610
|
_stickyColumn = { left: 0, right: 0 };
|
|
@@ -18108,7 +16622,12 @@ class SdTr {
|
|
|
18108
16622
|
this.syncTableContext();
|
|
18109
16623
|
}
|
|
18110
16624
|
syncTableContext() {
|
|
18111
|
-
|
|
16625
|
+
// sd-table이 shadow:true이므로 fallback content로 렌더되면 closest가 경계를 못 넘는다.
|
|
16626
|
+
// 그 경우 getRootNode().host(=sd-table)로 폴백한다.
|
|
16627
|
+
const closest = this.el.closest('sd-table');
|
|
16628
|
+
const root = this.el.getRootNode();
|
|
16629
|
+
const fromShadow = root instanceof ShadowRoot ? root.host : null;
|
|
16630
|
+
const table = closest ?? fromShadow;
|
|
18112
16631
|
this.tableEl = table;
|
|
18113
16632
|
const fromMethod = table?.getTableIdSync?.();
|
|
18114
16633
|
const fromAttr = table?.getAttribute(TABLE_ID_ATTR);
|
|
@@ -18133,6 +16652,9 @@ class SdTr {
|
|
|
18133
16652
|
async refreshConfig() {
|
|
18134
16653
|
this.resolveConfig();
|
|
18135
16654
|
}
|
|
16655
|
+
async bumpSpansVersion() {
|
|
16656
|
+
this.spansVersion = this.spansVersion + 1;
|
|
16657
|
+
}
|
|
18136
16658
|
async updateVisibility() {
|
|
18137
16659
|
this.updateVisibilitySync();
|
|
18138
16660
|
}
|
|
@@ -18198,37 +16720,72 @@ class SdTr {
|
|
|
18198
16720
|
this.tableEl.updateRowSelectSync(this.row);
|
|
18199
16721
|
}
|
|
18200
16722
|
}
|
|
16723
|
+
getSpanFor(col) {
|
|
16724
|
+
if (!this.tableEl?.getSpanSync)
|
|
16725
|
+
return undefined;
|
|
16726
|
+
const fieldName = typeof col.field === 'string' ? col.field : col.name;
|
|
16727
|
+
return this.tableEl.getSpanSync(this.rowKey, fieldName);
|
|
16728
|
+
}
|
|
16729
|
+
isCovered(colIdx) {
|
|
16730
|
+
if (!this.tableEl?.isCoveredSync)
|
|
16731
|
+
return false;
|
|
16732
|
+
return this.tableEl.isCoveredSync(this.rowKey, colIdx, this._columns);
|
|
16733
|
+
}
|
|
18201
16734
|
render() {
|
|
18202
16735
|
const stickyLeftCount = this._stickyColumn.left || 0;
|
|
18203
16736
|
const stickyRightCount = this._stickyColumn.right || 0;
|
|
18204
16737
|
const stickyLeftCols = this.visibleColumns.slice(0, stickyLeftCount);
|
|
18205
16738
|
const middleCols = this.visibleColumns.slice(stickyLeftCount, this.visibleColumns.length - stickyRightCount);
|
|
18206
16739
|
const stickyRightCols = this.visibleColumns.slice(this.visibleColumns.length - stickyRightCount);
|
|
18207
|
-
|
|
16740
|
+
const hasRowspan = this.tableEl?.hasRowspanSync?.() ?? false;
|
|
16741
|
+
const rowStyle = {
|
|
16742
|
+
display: this.isVisible ? '' : 'none',
|
|
16743
|
+
'--table-body-height': `${TABLE_BODY_LAYOUT.default.height}px`,
|
|
16744
|
+
'--table-body-padding-x': `${TABLE_BODY_LAYOUT.paddingX}px`,
|
|
16745
|
+
'--table-body-font-family': TABLE_BODY_TYPOGRAPHY.fontFamily,
|
|
16746
|
+
'--table-body-font-weight': TABLE_BODY_TYPOGRAPHY.fontWeight,
|
|
16747
|
+
'--table-body-font-size': `${TABLE_BODY_TYPOGRAPHY.fontSize}px`,
|
|
16748
|
+
'--table-body-line-height': `${TABLE_BODY_TYPOGRAPHY.lineHeight}px`,
|
|
16749
|
+
'--table-body-text-decoration': TABLE_BODY_TYPOGRAPHY.textDecoration,
|
|
16750
|
+
'--table-border-color': TABLE_BORDER.color,
|
|
16751
|
+
'--table-border-width': `${TABLE_BORDER.width}px`,
|
|
16752
|
+
};
|
|
16753
|
+
return (hAsync(Host, { key: '33228ee9f020f915e77f9827e9360087fc2cd565', style: rowStyle }, hAsync("tr", { key: '2f308a547ad19584e509543027cf60ff8faec2f8', class: { 'tr': true, 'tr--no-hover': hasRowspan } }, this._selectable && (hAsync("td", { key: '94f50aa6fd31a63d8d99e8c6f25faf8ba6f68ddf', class: {
|
|
18208
16754
|
'td': true,
|
|
18209
16755
|
'td--selected': true,
|
|
18210
16756
|
'sticky-left': true,
|
|
18211
16757
|
'sticky-left-edge': stickyLeftCount === 0,
|
|
18212
16758
|
'is-scrolled-left': stickyLeftCount === 0 && this._scrolledLeft,
|
|
18213
|
-
}, style: { '--sticky-left-offset': '0px' } }, hAsync("sd-checkbox", { key: '
|
|
18214
|
-
|
|
18215
|
-
|
|
18216
|
-
|
|
18217
|
-
|
|
18218
|
-
|
|
18219
|
-
|
|
18220
|
-
|
|
16759
|
+
}, style: { '--sticky-left-offset': '0px' } }, hAsync("sd-checkbox", { key: 'e8808068b601529c95b8055c16e7af8a746bdccc', value: this.isSelected(), onSdUpdate: () => this.handleSelect() }))), stickyLeftCols.map((col, idx) => {
|
|
16760
|
+
if (this.isCovered(idx))
|
|
16761
|
+
return null;
|
|
16762
|
+
const span = this.getSpanFor(col);
|
|
16763
|
+
return (hAsync("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
|
|
16764
|
+
'td': true,
|
|
16765
|
+
[`td--${col.align || 'left'}`]: true,
|
|
16766
|
+
'sticky-left': true,
|
|
16767
|
+
'sticky-left-edge': idx === stickyLeftCount - 1,
|
|
16768
|
+
'is-scrolled-left': idx === stickyLeftCount - 1 && this._scrolledLeft,
|
|
16769
|
+
[`${col.tdClass}`]: Boolean(col.tdClass),
|
|
16770
|
+
}, style: this.getStickyStyle(idx) }, hAsync("slot", { name: `${this.tableId}-${typeof col.field === 'string' ? col.field : col.name}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
|
|
16771
|
+
}), middleCols.map((col, relativeIdx) => {
|
|
18221
16772
|
const actualColIdx = stickyLeftCount + relativeIdx;
|
|
16773
|
+
if (this.isCovered(actualColIdx))
|
|
16774
|
+
return null;
|
|
18222
16775
|
const fieldName = typeof col.field === 'string' ? col.field : col.name;
|
|
18223
|
-
|
|
16776
|
+
const span = this.getSpanFor(col);
|
|
16777
|
+
return (hAsync("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
|
|
18224
16778
|
td: true,
|
|
18225
16779
|
[`td--${col.align || 'left'}`]: true,
|
|
18226
16780
|
[`${col.tdClass}`]: Boolean(col.tdClass),
|
|
18227
16781
|
}, style: this.getStickyStyle(actualColIdx) }, hAsync("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, hAsync("span", null, this.getCellValue(col)))));
|
|
18228
16782
|
}), stickyRightCols.map((col, relativeIdx) => {
|
|
18229
16783
|
const actualColIdx = this.visibleColumns.length - stickyRightCount + relativeIdx;
|
|
16784
|
+
if (this.isCovered(actualColIdx))
|
|
16785
|
+
return null;
|
|
18230
16786
|
const fieldName = typeof col.field === 'string' ? col.field : col.name;
|
|
18231
|
-
|
|
16787
|
+
const span = this.getSpanFor(col);
|
|
16788
|
+
return (hAsync("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
|
|
18232
16789
|
'td': true,
|
|
18233
16790
|
[`td--${col.align || 'left'}`]: true,
|
|
18234
16791
|
'sticky-right': true,
|
|
@@ -18251,12 +16808,14 @@ class SdTr {
|
|
|
18251
16808
|
"tableId": [32],
|
|
18252
16809
|
"columnWidths": [32],
|
|
18253
16810
|
"isVisible": [32],
|
|
16811
|
+
"spansVersion": [32],
|
|
18254
16812
|
"_columns": [32],
|
|
18255
16813
|
"_selectable": [32],
|
|
18256
16814
|
"_stickyColumn": [32],
|
|
18257
16815
|
"_scrolledLeft": [32],
|
|
18258
16816
|
"_scrolledRight": [32],
|
|
18259
16817
|
"refreshConfig": [64],
|
|
16818
|
+
"bumpSpansVersion": [64],
|
|
18260
16819
|
"updateVisibility": [64],
|
|
18261
16820
|
"setColumnWidths": [64],
|
|
18262
16821
|
"refreshSelection": [64]
|
|
@@ -18268,7 +16827,6 @@ class SdTr {
|
|
|
18268
16827
|
}
|
|
18269
16828
|
|
|
18270
16829
|
registerComponents([
|
|
18271
|
-
DataTable,
|
|
18272
16830
|
SdActionModal,
|
|
18273
16831
|
SdBadge,
|
|
18274
16832
|
SdBarcodeInput,
|
|
@@ -18303,23 +16861,14 @@ registerComponents([
|
|
|
18303
16861
|
SdPagination,
|
|
18304
16862
|
SdPopover,
|
|
18305
16863
|
SdPortal,
|
|
18306
|
-
SdProgress,
|
|
18307
16864
|
SdRadio,
|
|
18308
16865
|
SdRadioButton,
|
|
18309
16866
|
SdRadioGroup,
|
|
18310
16867
|
SdSelect,
|
|
18311
|
-
|
|
18312
|
-
|
|
18313
|
-
|
|
18314
|
-
|
|
18315
|
-
SdSelectOption,
|
|
18316
|
-
SdSelectOptionGroup,
|
|
18317
|
-
SdSelectSearchInput,
|
|
18318
|
-
SdSelectV2,
|
|
18319
|
-
SdSelectV2ListItem,
|
|
18320
|
-
SdSelectV2ListItemSearch,
|
|
18321
|
-
SdSelectV2Listbox,
|
|
18322
|
-
SdSelectV2Trigger,
|
|
16868
|
+
SdSelectListItem,
|
|
16869
|
+
SdSelectListItemSearch,
|
|
16870
|
+
SdSelectListbox,
|
|
16871
|
+
SdSelectTrigger,
|
|
18323
16872
|
SdSwitch,
|
|
18324
16873
|
SdTable,
|
|
18325
16874
|
SdTabs,
|