jb-select 4.8.6 → 4.8.8
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/README.md +2 -0
- package/dist/JBSelect.js +40 -19
- package/dist/JBSelect.js.map +1 -1
- package/dist/JBSelect.umd.js +40 -19
- package/dist/JBSelect.umd.js.map +1 -1
- package/lib/JBSelect.scss +6 -3
- package/lib/JBSelect.ts +37 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -202,5 +202,7 @@ if you want to set a custom style to this web-component all you need is to set c
|
|
|
202
202
|
| --jb-select-select-box-margin | margin of internal element called select box that wrapper display element of form in one box |
|
|
203
203
|
| --jb-select-value-font-size | search input value font size default is `1.1rem` |
|
|
204
204
|
| --jb-select-list-border-width | border-width for list wrapper |
|
|
205
|
+
| --jb-select-mobile-modal-border-radius | opend modal in mobile border radius. useful to chanage when you chnaged `--jb-select-mobile-modal-height` before |
|
|
206
|
+
| --jb-select-mobile-modal-height | modal height when list open in mobile |
|
|
205
207
|
|
|
206
208
|
|
package/dist/JBSelect.js
CHANGED
|
@@ -28,13 +28,13 @@ function __classPrivateFieldSet(receiver, state, value, kind, f) {
|
|
|
28
28
|
|
|
29
29
|
var HTML = "<div class=\"jb-select-web-component\">\r\n <div class=\"label-wrapper\">\r\n <label class=\"--hide\"><span class=\"label-value\"></span></label>\r\n <!-- close button will be visible on mobile modal -->\r\n <div class=\"close-button\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path class=\"close-btn-svg-bg\" opacity=\"0.4\" d=\"M16.3399 1.9998H7.66988C4.27988 1.9998 1.99988 4.3798 1.99988 7.9198V16.0898C1.99988 19.6198 4.27988 21.9998 7.66988 21.9998H16.3399C19.7299 21.9998 21.9999 19.6198 21.9999 16.0898V7.9198C21.9999 4.3798 19.7299 1.9998 16.3399 1.9998Z\"/>\r\n <path class=\"close-btn-svg-path\" d=\"M15.0156 13.7703L13.2366 11.9923L15.0146 10.2143C15.3566 9.8733 15.3566 9.3183 15.0146 8.9773C14.6726 8.6333 14.1196 8.6343 13.7776 8.9763L11.9986 10.7543L10.2196 8.9743C9.87758 8.6323 9.32358 8.6343 8.98158 8.9743C8.64058 9.3163 8.64058 9.8713 8.98158 10.2123L10.7616 11.9923L8.98558 13.7673C8.64358 14.1093 8.64358 14.6643 8.98558 15.0043C9.15658 15.1763 9.37958 15.2613 9.60358 15.2613C9.82858 15.2613 10.0516 15.1763 10.2226 15.0053L11.9986 13.2293L13.7786 15.0083C13.9496 15.1793 14.1726 15.2643 14.3966 15.2643C14.6206 15.2643 14.8446 15.1783 15.0156 15.0083C15.3576 14.6663 15.3576 14.1123 15.0156 13.7703Z\" fill=\"#200E32\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"select-box\">\r\n <div class=\"start-section\">\r\n <slot name=\"start-section\"></slot>\r\n </div>\r\n <div class=\"middle-section\">\r\n <div class=\"selected-value-wrapper\"></div>\r\n <div class=\"front-box\">\r\n <input class=\"input\">\r\n\r\n </div>\r\n </div>\r\n <div class=\"end-section\">\r\n <div class=\"arrow-icon\" tabindex=\"-1\">\r\n <slot name=\"select-arrow-icon\">\r\n <svg width=\"8\" height=\"8\" id=\"Layer_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 494.1 371.1\" style=\"enable-background:new 0 0 494.1 371.1;\" xml:space=\"preserve\">\r\n <path d=\"M293,343.8L480.9,69.3c8.7-12.7,13.3-25.4,13.3-36.1c0-20.5-16.5-33.2-44-33.2H44C16.4,0,0,12.7,0,33.2 c0,10.6,4.6,23.2,13.3,35.9l187.9,274.6c12.1,17.7,28.4,27.4,45.9,27.4C264.6,371.1,280.9,361.4,293,343.8z\"/>\r\n </svg>\r\n </slot>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"middle-divider\">\r\n <!-- middle line between input box and list (hidden by default but user may need it sometimes) -->\r\n </div>\r\n <div class=\"select-list-wrapper\">\r\n <div class=\"select-list\" tabindex=\"-1\">\r\n\r\n </div>\r\n <div class=\"empty-list-placeholder\">\r\n <slot name=\"empty-list-message\">no item available</slot>\r\n </div>\r\n </div>\r\n <div class=\"message-box\"></div>\r\n</div>";
|
|
30
30
|
|
|
31
|
-
var css_248z = ":host {\n --p-middle-div-height: var(--jb-select-middle-div-height, 0px);\n --p-p-color: #1e2832;\n --p-border-bottom-width: var(--jb-select-border-bottom-width, var(--jb-select-border-width, 3px));\n --p-base-z-index: 1;\n --p-mobile-modal-z-index: 900; }\n\n.jb-select-web-component {\n width: var(--jb-select-width, 100%);\n margin: var(--jb-select-margin, 0 0);\n position: relative;\n box-sizing: border-box; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused {\n position: fixed;\n top: 0;\n left: 0;\n background-color: var(--jb-select-overlay-bgcolor, #0008);\n width: 100vw;\n height: 100vh;\n margin: 0;\n padding: 16px 8px;\n z-index: var(--p-mobile-modal-z-index); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box {\n height: var(--jb-select-mobile-search-input-height, var(--jb-select-height, 40px));\n background-color: var(--jb-select-mobile-input-bgcolor, #f7f6f6);\n border-width: var(--jb-select-mobile-search-border-width, var(--jb-select-border-width, 1px));\n border-color: var(--jb-select-mobile-search-border-color, var(--jb-select-border-color, #f7f6f6));\n border-bottom-width: var(--jb-select-mobile-search-border-bottom-width, var(--p-border-bottom-width));\n border-bottom-color: var(--jb-select-mobile-search-border-bottom-color, var(--jb-select-border-bottom-color, var(--jb-select-border-color, #f7f6f6)));\n border-radius: var(--jb-select-mobile-search-border-radius, var(--jb-select-border-radius, 16px)); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box .front-box .arrow-icon {\n display: none; } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box .selected-value-wrapper {\n opacity: 0;\n transition: none; } }\n .jb-select-web-component.--focused .middle-divider {\n display: block; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .middle-divider {\n margin: var(--jb-select-middle-div-mobile-margin, 16px 0 0 0); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-list-wrapper {\n position: initial;\n margin: var(--jb-select-mobile-item-list-margin, 16px 0);\n border-radius: var(--jb-select-mobile-item-list-border-radius, var(--jb-select-border-radius, 16px)); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper {\n display: flex; } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper label {\n color: #fff;\n font-size: 1.5em;\n display: flex;\n align-items: center; } }\n .jb-select-web-component.--focused .label-wrapper .close-button {\n display: none; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper .close-button {\n display: flex;\n width: 48px;\n height: 48px;\n justify-content: center;\n align-items: center;\n color: #fff; }\n .jb-select-web-component.--focused .label-wrapper .close-button .close-btn-svg-bg {\n opacity: var(--jb-select-close-bg-opacity, 0.4);\n fill: var(--jb-select-close-bg-color, #1f1735); }\n .jb-select-web-component.--focused .label-wrapper .close-button .close-btn-svg-path {\n fill: var(--jb-select-close-x-color, #fff); } }\n .jb-select-web-component.--has-value .select-box {\n border-color: var(--jb-select-border-color-selected, #c3ff14);\n background-color: var(--jb-select-bgcolor-selected, #f7f6f6); }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--has-value .select-box:focus-within {\n background-color: var(--jb-select-mobile-input-bgcolor, #f7f6f6); } }\n .jb-select-web-component .label-wrapper label {\n width: 100%;\n margin: 4px 0px;\n display: block;\n font-size: var(--jb-select-label-font-size, 0.8em);\n font-weight: var(--jb-select-label-font-weight, normal);\n color: var(--jb-select-label-color, #1f1735); }\n .jb-select-web-component .label-wrapper label.--hide {\n display: none; }\n .jb-select-web-component .label-wrapper .close-button {\n display: none; }\n .jb-select-web-component .select-box {\n width: 100%;\n box-sizing: border-box;\n height: var(--jb-select-height, 2.5rem);\n border: solid var(--jb-select-border-width, 1px) var(--jb-select-border-color, #f7f6f6);\n border-bottom: solid var(--p-border-bottom-width) var(--jb-select-border-color, #f7f6f6);\n border-radius: var(--jb-select-border-radius, 1rem);\n background-color: var(--jb-select-bgcolor, #f7f6f6);\n margin: var(--jb-select-select-box-margin, 4px 0px 0px 0px);\n overflow: hidden;\n display: flex;\n padding-inline-end: var(--jb-select-box-padding-end, 1rem);\n gap: 0.5rem;\n align-items: center; }\n .jb-select-web-component .select-box:focus-within {\n border-color: var(--jb-select-border-color, var(--p-p-color));\n border-bottom-color: var(--jb-select-border-color, var(--p-p-color));\n border-radius: var(--jb-select-border-radius, 1rem) var(--jb-select-border-radius, 1rem) 0 0; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component .select-box:focus-within {\n border-radius: var(--jb-select-mobile-search-border-radius, var(--jb-select-border-radius, 1rem)); } }\n .jb-select-web-component .select-box .start-section {\n height: 100%;\n width: auto;\n display: flex;\n justify-content: center;\n align-items: center; }\n .jb-select-web-component .select-box .middle-section {\n position: relative;\n width: 100%;\n height: 100%;\n flex: 1; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n overflow: hidden;\n z-index: 1; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper.--search-typed {\n opacity: 0; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper .selected-value {\n width: 100%;\n box-sizing: border-box;\n height: 100%;\n background-color: transparent;\n padding: 2px 12px 0 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-select-selected-value-font-size, 1.1em);\n color: var(--jb-select-selected-value-color, #1f1735);\n margin: 0;\n border-radius: 0;\n display: flex;\n align-items: center; }\n .jb-select-web-component .select-box .middle-section .front-box {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n overflow: hidden;\n z-index: 2; }\n .jb-select-web-component .select-box .middle-section .front-box input {\n border: none;\n width: 100%;\n box-sizing: border-box;\n height: 100%;\n background-color: transparent;\n padding: 2px 12px 0 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-select-value-font-size, 1.1rem);\n color: var(--jb-select-input-color, #1f1735);\n margin: 0;\n border-radius: 0; }\n .jb-select-web-component .select-box .middle-section .front-box input:focus {\n outline: none; }\n .jb-select-web-component .select-box .middle-section .front-box input::placeholder {\n color: var(--jb-select-placeholder-color, initial);\n font-size: var(--jb-select-placeholder-font-size, 1.1em); }\n .jb-select-web-component .select-box .end-section .arrow-icon {\n margin: var(--jb-select-arrow-icon-margin, 0 0 0 0); }\n .jb-select-web-component .select-box:focus-within .selected-value {\n opacity: 0.7;\n transition: all 0.3s ease; }\n .jb-select-web-component .middle-divider {\n display: none;\n position: relative;\n z-index: calc(var(--p-base-z-index) + 3);\n width: 100%;\n height: var(--p-middle-div-height);\n background-color: var(--jb-select-middle-div-color, var(--p-p-color));\n margin: var(--jb-select-middle-div-margin, calc(-1 * var(--p-border-bottom-width)) 0);\n border-radius: var(--jb-select-middle-div-radius, 0px); }\n .jb-select-web-component .message-box {\n font-size: var(--jb-select-message-font-size, 0.7em);\n font-weight: var(--jb-select-message-font-weight, normal);\n padding: 4px 8px;\n color: var(--jb-select-message-color, #929292); }\n .jb-select-web-component .message-box:empty {\n padding: 0; }\n .jb-select-web-component .message-box.--error {\n color: red; }\n .jb-select-web-component .select-list-wrapper {\n display: none;\n position: absolute;\n margin: calc(-1 * var(--p-border-bottom-width)) 0;\n height: auto;\n overflow: hidden;\n width: 100%;\n background-color: var(--jb-select-bgcolor, #f7f6f6);\n border-radius: 0 0 var(--jb-select-border-radius, 16px) var(--jb-select-border-radius, 16px);\n border: solid var(--jb-select-list-border-width, 1px) var(--jb-select-border-color, var(--p-p-color));\n border-top: none;\n border-bottom: solid var(--p-border-bottom-width) var(--jb-select-border-color, var(--p-p-color));\n box-shadow: var(--jb-select-list-box-shadow);\n box-sizing: border-box;\n z-index: calc(var(--p-base-z-index) + 2); }\n .jb-select-web-component .select-list-wrapper.--show {\n display: block; }\n .jb-select-web-component .select-list-wrapper .select-list {\n width: 100%;\n max-height: var(--jb-select-list-max-height, 400px);\n overflow-y: auto;\n padding: var(--jb-select-list-padding, 16px 0); }\n .jb-select-web-component .select-list-wrapper .select-list:empty {\n padding: 0; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component .select-list-wrapper .select-list {\n max-height: calc(100vh - 240px); } }\n .jb-select-web-component .select-list-wrapper .select-list .select-option {\n min-height: 36px;\n padding: 4px 16px;\n display: flex;\n align-items: center;\n font-size: 0.9em;\n color: var(--jb-select-option-color, inherit);\n background-color: var(--jb-select-option-background-color, transparent); }\n .jb-select-web-component .select-list-wrapper .select-list .select-option:hover {\n background-color: var(--jb-select-option-background-color-hover, #1073db);\n color: var(--jb-select-option-color-hover, #fff);\n cursor: pointer; }\n .jb-select-web-component .select-list-wrapper .select-list .select-option.--selected-option {\n font-weight: 900; }\n .jb-select-web-component .select-list-wrapper .select-list::-webkit-scrollbar {\n width: 9px;\n background-color: transparent; }\n .jb-select-web-component .select-list-wrapper .select-list::-webkit-scrollbar-thumb {\n background-color: var(--jb-select-list-scroll-color, #c3c3c3);\n border-radius: var(--jb-select-list-scroll-border-radius, 4px); }\n .jb-select-web-component .select-list-wrapper .empty-list-placeholder {\n display: none;\n text-align: center;\n color: #838383;\n font-style: italic;\n padding: 8px 0; }\n .jb-select-web-component .select-list-wrapper .empty-list-placeholder.--show {\n display: block; }\n";
|
|
31
|
+
var css_248z = ":host {\n --p-middle-div-height: var(--jb-select-middle-div-height, 0px);\n --p-p-color: #1e2832;\n --p-border-bottom-width: var(--jb-select-border-bottom-width, var(--jb-select-border-width, 3px));\n --p-base-z-index: 1;\n --p-mobile-modal-z-index: 900;\n --p-mobile-modal-height:var(--jb-select-mobile-modal-height, 100vh); }\n\n.jb-select-web-component {\n width: var(--jb-select-width, 100%);\n margin: var(--jb-select-margin, 0 0);\n position: relative;\n box-sizing: border-box; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused {\n position: fixed;\n bottom: 0;\n top: initial;\n left: 0;\n background-color: var(--jb-select-overlay-bgcolor, #0008);\n width: 100vw;\n height: var(--p-mobile-modal-height);\n border-radius: var(--jb-select-mobile-modal-border-radius, 0) var(--jb-select-mobile-modal-border-radius, 0) 0 0;\n margin: 0;\n padding: 16px 8px;\n z-index: var(--p-mobile-modal-z-index); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box {\n height: var(--jb-select-mobile-search-input-height, var(--jb-select-height, 40px));\n background-color: var(--jb-select-mobile-input-bgcolor, #f7f6f6);\n border-width: var(--jb-select-mobile-search-border-width, var(--jb-select-border-width, 1px));\n border-color: var(--jb-select-mobile-search-border-color, var(--jb-select-border-color, #f7f6f6));\n border-bottom-width: var(--jb-select-mobile-search-border-bottom-width, var(--p-border-bottom-width));\n border-bottom-color: var(--jb-select-mobile-search-border-bottom-color, var(--jb-select-border-bottom-color, var(--jb-select-border-color, #f7f6f6)));\n border-radius: var(--jb-select-mobile-search-border-radius, var(--jb-select-border-radius, 16px)); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box .front-box .arrow-icon {\n display: none; } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box .selected-value-wrapper {\n opacity: 0;\n transition: none; } }\n .jb-select-web-component.--focused .middle-divider {\n display: block; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .middle-divider {\n margin: var(--jb-select-middle-div-mobile-margin, 16px 0 0 0); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-list-wrapper {\n position: initial;\n margin: var(--jb-select-mobile-item-list-margin, 16px 0);\n border-radius: var(--jb-select-mobile-item-list-border-radius, var(--jb-select-border-radius, 16px)); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper {\n display: flex; } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper label {\n color: #fff;\n font-size: 1.5em;\n display: flex;\n align-items: center; } }\n .jb-select-web-component.--focused .label-wrapper .close-button {\n display: none; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper .close-button {\n display: flex;\n width: 48px;\n height: 48px;\n justify-content: center;\n align-items: center;\n color: #fff; }\n .jb-select-web-component.--focused .label-wrapper .close-button .close-btn-svg-bg {\n opacity: var(--jb-select-close-bg-opacity, 0.4);\n fill: var(--jb-select-close-bg-color, #1f1735); }\n .jb-select-web-component.--focused .label-wrapper .close-button .close-btn-svg-path {\n fill: var(--jb-select-close-x-color, #fff); } }\n .jb-select-web-component.--has-value .select-box {\n border-color: var(--jb-select-border-color-selected, #c3ff14);\n background-color: var(--jb-select-bgcolor-selected, #f7f6f6); }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--has-value .select-box:focus-within {\n background-color: var(--jb-select-mobile-input-bgcolor, #f7f6f6); } }\n .jb-select-web-component .label-wrapper label {\n width: 100%;\n margin: 4px 0px;\n display: block;\n font-size: var(--jb-select-label-font-size, 0.8em);\n font-weight: var(--jb-select-label-font-weight, normal);\n color: var(--jb-select-label-color, #1f1735); }\n .jb-select-web-component .label-wrapper label.--hide {\n display: none; }\n .jb-select-web-component .label-wrapper .close-button {\n display: none; }\n .jb-select-web-component .select-box {\n width: 100%;\n box-sizing: border-box;\n height: var(--jb-select-height, 2.5rem);\n border: solid var(--jb-select-border-width, 1px) var(--jb-select-border-color, #f7f6f6);\n border-bottom: solid var(--p-border-bottom-width) var(--jb-select-border-color, #f7f6f6);\n border-radius: var(--jb-select-border-radius, 1rem);\n background-color: var(--jb-select-bgcolor, #f7f6f6);\n margin: var(--jb-select-select-box-margin, 4px 0px 0px 0px);\n overflow: hidden;\n display: flex;\n padding-inline-end: var(--jb-select-box-padding-end, 1rem);\n gap: 0.5rem;\n align-items: center; }\n .jb-select-web-component .select-box:focus-within {\n border-color: var(--jb-select-border-color, var(--p-p-color));\n border-bottom-color: var(--jb-select-border-color, var(--p-p-color));\n border-radius: var(--jb-select-border-radius, 1rem) var(--jb-select-border-radius, 1rem) 0 0; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component .select-box:focus-within {\n border-radius: var(--jb-select-mobile-search-border-radius, var(--jb-select-border-radius, 1rem)); } }\n .jb-select-web-component .select-box .start-section {\n height: 100%;\n width: auto;\n display: flex;\n justify-content: center;\n align-items: center; }\n .jb-select-web-component .select-box .middle-section {\n position: relative;\n width: 100%;\n height: 100%;\n flex: 1; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n overflow: hidden;\n z-index: 1; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper.--search-typed {\n opacity: 0; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper .selected-value {\n width: 100%;\n box-sizing: border-box;\n height: 100%;\n background-color: transparent;\n padding: 2px 12px 0 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-select-selected-value-font-size, 1.1em);\n color: var(--jb-select-selected-value-color, #1f1735);\n margin: 0;\n border-radius: 0;\n display: flex;\n align-items: center; }\n .jb-select-web-component .select-box .middle-section .front-box {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n overflow: hidden;\n z-index: 2; }\n .jb-select-web-component .select-box .middle-section .front-box input {\n border: none;\n width: 100%;\n box-sizing: border-box;\n height: 100%;\n background-color: transparent;\n padding: 2px 12px 0 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-select-value-font-size, 1.1rem);\n color: var(--jb-select-input-color, #1f1735);\n margin: 0;\n border-radius: 0; }\n .jb-select-web-component .select-box .middle-section .front-box input:focus {\n outline: none; }\n .jb-select-web-component .select-box .middle-section .front-box input::placeholder {\n color: var(--jb-select-placeholder-color, initial);\n font-size: var(--jb-select-placeholder-font-size, 1.1em); }\n .jb-select-web-component .select-box .end-section .arrow-icon {\n margin: var(--jb-select-arrow-icon-margin, 0 0 0 0); }\n .jb-select-web-component .select-box:focus-within .selected-value {\n opacity: 0.7;\n transition: all 0.3s ease; }\n .jb-select-web-component .middle-divider {\n display: none;\n position: relative;\n z-index: calc(var(--p-base-z-index) + 3);\n width: 100%;\n height: var(--p-middle-div-height);\n background-color: var(--jb-select-middle-div-color, var(--p-p-color));\n margin: var(--jb-select-middle-div-margin, calc(-1 * var(--p-border-bottom-width)) 0);\n border-radius: var(--jb-select-middle-div-radius, 0px); }\n .jb-select-web-component .message-box {\n font-size: var(--jb-select-message-font-size, 0.7em);\n font-weight: var(--jb-select-message-font-weight, normal);\n padding: 4px 8px;\n color: var(--jb-select-message-color, #929292); }\n .jb-select-web-component .message-box:empty {\n padding: 0; }\n .jb-select-web-component .message-box.--error {\n color: red; }\n .jb-select-web-component .select-list-wrapper {\n display: none;\n position: absolute;\n margin: calc(-1 * var(--p-border-bottom-width)) 0;\n height: auto;\n overflow: hidden;\n width: 100%;\n background-color: var(--jb-select-bgcolor, #f7f6f6);\n border-radius: 0 0 var(--jb-select-border-radius, 16px) var(--jb-select-border-radius, 16px);\n border: solid var(--jb-select-list-border-width, 1px) var(--jb-select-border-color, var(--p-p-color));\n border-top: none;\n border-bottom: solid var(--p-border-bottom-width) var(--jb-select-border-color, var(--p-p-color));\n box-shadow: var(--jb-select-list-box-shadow);\n box-sizing: border-box;\n z-index: calc(var(--p-base-z-index) + 2); }\n .jb-select-web-component .select-list-wrapper.--show {\n display: block; }\n .jb-select-web-component .select-list-wrapper .select-list {\n width: 100%;\n max-height: var(--jb-select-list-max-height, 400px);\n overflow-y: auto;\n padding: var(--jb-select-list-padding, 16px 0); }\n .jb-select-web-component .select-list-wrapper .select-list:empty {\n padding: 0; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component .select-list-wrapper .select-list {\n max-height: calc(var(--p-mobile-modal-height) - 240px); } }\n .jb-select-web-component .select-list-wrapper .select-list .select-option {\n min-height: 36px;\n padding: 4px 16px;\n display: flex;\n align-items: center;\n font-size: 0.9em;\n color: var(--jb-select-option-color, inherit);\n background-color: var(--jb-select-option-background-color, transparent); }\n .jb-select-web-component .select-list-wrapper .select-list .select-option:hover {\n background-color: var(--jb-select-option-background-color-hover, #1073db);\n color: var(--jb-select-option-color-hover, #fff);\n cursor: pointer; }\n .jb-select-web-component .select-list-wrapper .select-list .select-option.--selected-option {\n font-weight: 900; }\n .jb-select-web-component .select-list-wrapper .select-list::-webkit-scrollbar {\n width: 9px;\n background-color: transparent; }\n .jb-select-web-component .select-list-wrapper .select-list::-webkit-scrollbar-thumb {\n background-color: var(--jb-select-list-scroll-color, #c3c3c3);\n border-radius: var(--jb-select-list-scroll-border-radius, 4px); }\n .jb-select-web-component .select-list-wrapper .empty-list-placeholder {\n display: none;\n text-align: center;\n color: #838383;\n font-style: italic;\n padding: 8px 0; }\n .jb-select-web-component .select-list-wrapper .empty-list-placeholder.--show {\n display: block; }\n";
|
|
32
32
|
|
|
33
|
-
var _JBSelectWebComponent_instances, _JBSelectWebComponent_value, _JBSelectWebComponent_textValue,
|
|
33
|
+
var _JBSelectWebComponent_instances, _JBSelectWebComponent_value, _JBSelectWebComponent_textValue, _JBSelectWebComponent_notFoundedValue, _JBSelectWebComponent_optionList, _JBSelectWebComponent_displayOptionList, _JBSelectWebComponent_placeholder, _JBSelectWebComponent_searchPlaceholder, _JBSelectWebComponent_setValueFromOutside, _JBSelectWebComponent_setValue, _JBSelectWebComponent_dispatchInputEvent, _JBSelectWebComponent_createSelectedValueDom, _JBSelectWebComponent_getOptionValue, _JBSelectWebComponent_getOptionTitle;
|
|
34
34
|
class JBSelectWebComponent extends HTMLElement {
|
|
35
35
|
get value() {
|
|
36
36
|
if (__classPrivateFieldGet(this, _JBSelectWebComponent_value, "f")) {
|
|
37
|
-
return this.
|
|
37
|
+
return __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionValue).call(this, __classPrivateFieldGet(this, _JBSelectWebComponent_value, "f"));
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
40
40
|
return null;
|
|
@@ -53,7 +53,7 @@ class JBSelectWebComponent extends HTMLElement {
|
|
|
53
53
|
}
|
|
54
54
|
get selectedOptionTitle() {
|
|
55
55
|
if (this.value) {
|
|
56
|
-
return this.
|
|
56
|
+
return __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionTitle).call(this, __classPrivateFieldGet(this, _JBSelectWebComponent_value, "f"));
|
|
57
57
|
}
|
|
58
58
|
else {
|
|
59
59
|
return "";
|
|
@@ -112,7 +112,7 @@ class JBSelectWebComponent extends HTMLElement {
|
|
|
112
112
|
_JBSelectWebComponent_textValue.set(this, "");
|
|
113
113
|
// if user set value and current option list is not contain the option.
|
|
114
114
|
// we hold it in _notFindedValue and select value when option value get updated
|
|
115
|
-
|
|
115
|
+
_JBSelectWebComponent_notFoundedValue.set(this, null);
|
|
116
116
|
this.required = false;
|
|
117
117
|
this.callbacks = {
|
|
118
118
|
getOptionTitle: (option) => { return option; },
|
|
@@ -221,14 +221,14 @@ class JBSelectWebComponent extends HTMLElement {
|
|
|
221
221
|
}
|
|
222
222
|
_setValueOnOptionListChanged() {
|
|
223
223
|
//when option list changed we see if current value is valid for new optionlist we set it if not we reset value to null.
|
|
224
|
-
//in some scenario value is setted before
|
|
225
|
-
if (__classPrivateFieldGet(this,
|
|
226
|
-
//if select has no prev value or pending not
|
|
224
|
+
//in some scenario value is setted before optionList attached so we store it on this.#notFoundedValue and after option list setted we set value from this.#notFoundedValue
|
|
225
|
+
if (__classPrivateFieldGet(this, _JBSelectWebComponent_notFoundedValue, "f")) {
|
|
226
|
+
//if select has no prev value or pending not found value we don't set it because user may input some search terms in input box and developer-user update list base on that value
|
|
227
227
|
//if we set it to null the search term and this.textvalue will become null and empty too and it make impossible for user to search in dynamic back-end provided searchable list so we put this condition to prevent it
|
|
228
|
-
const isSetted = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_setValueFromOutside).call(this, __classPrivateFieldGet(this,
|
|
228
|
+
const isSetted = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_setValueFromOutside).call(this, __classPrivateFieldGet(this, _JBSelectWebComponent_notFoundedValue, "f"));
|
|
229
229
|
if (isSetted) {
|
|
230
|
-
//after list update and when not founded value is found in new option list we clear old not
|
|
231
|
-
__classPrivateFieldSet(this,
|
|
230
|
+
//after list update and when not founded value is found in new option list we clear old not founded value
|
|
231
|
+
__classPrivateFieldSet(this, _JBSelectWebComponent_notFoundedValue, null, "f");
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
else if (this.value) {
|
|
@@ -354,7 +354,7 @@ class JBSelectWebComponent extends HTMLElement {
|
|
|
354
354
|
}
|
|
355
355
|
createOptionDOM(item) {
|
|
356
356
|
let optionDOM = null;
|
|
357
|
-
const isSelected = this.
|
|
357
|
+
const isSelected = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionValue).call(this, this.value) == __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionValue).call(this, item);
|
|
358
358
|
if (typeof this.callbacks.getOptionDOM == 'function') {
|
|
359
359
|
optionDOM = this.callbacks.getOptionDOM(item, this.onOptionClicked.bind(this), isSelected);
|
|
360
360
|
}
|
|
@@ -371,7 +371,7 @@ class JBSelectWebComponent extends HTMLElement {
|
|
|
371
371
|
optionElement.classList.add('--selected-option');
|
|
372
372
|
}
|
|
373
373
|
//it has defualt function who return wxact same input
|
|
374
|
-
optionElement.innerHTML = this.
|
|
374
|
+
optionElement.innerHTML = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionTitle).call(this, item);
|
|
375
375
|
optionElement.addEventListener('click', this.onOptionClicked.bind(this));
|
|
376
376
|
return optionElement;
|
|
377
377
|
}
|
|
@@ -388,7 +388,7 @@ class JBSelectWebComponent extends HTMLElement {
|
|
|
388
388
|
filterOptionList(filterString) {
|
|
389
389
|
const displayOptionList = [];
|
|
390
390
|
this.optionList.filter((option) => {
|
|
391
|
-
const optionTitle = this.
|
|
391
|
+
const optionTitle = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionTitle).call(this, option);
|
|
392
392
|
const isString = typeof optionTitle == 'string';
|
|
393
393
|
if (isString && optionTitle.includes(filterString)) {
|
|
394
394
|
displayOptionList.push(option);
|
|
@@ -453,10 +453,10 @@ class JBSelectWebComponent extends HTMLElement {
|
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
}
|
|
456
|
-
_JBSelectWebComponent_value = new WeakMap(), _JBSelectWebComponent_textValue = new WeakMap(),
|
|
456
|
+
_JBSelectWebComponent_value = new WeakMap(), _JBSelectWebComponent_textValue = new WeakMap(), _JBSelectWebComponent_notFoundedValue = new WeakMap(), _JBSelectWebComponent_optionList = new WeakMap(), _JBSelectWebComponent_displayOptionList = new WeakMap(), _JBSelectWebComponent_placeholder = new WeakMap(), _JBSelectWebComponent_searchPlaceholder = new WeakMap(), _JBSelectWebComponent_instances = new WeakSet(), _JBSelectWebComponent_setValueFromOutside = function _JBSelectWebComponent_setValueFromOutside(value) {
|
|
457
457
|
//when user set value by attribute or value prop directly we call this function
|
|
458
458
|
const matchedOption = this.optionList.find((option) => {
|
|
459
|
-
if (this.
|
|
459
|
+
if (__classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionValue).call(this, option) == value) {
|
|
460
460
|
return option;
|
|
461
461
|
}
|
|
462
462
|
});
|
|
@@ -465,11 +465,11 @@ _JBSelectWebComponent_value = new WeakMap(), _JBSelectWebComponent_textValue = n
|
|
|
465
465
|
return true;
|
|
466
466
|
}
|
|
467
467
|
else {
|
|
468
|
-
__classPrivateFieldSet(this,
|
|
468
|
+
__classPrivateFieldSet(this, _JBSelectWebComponent_notFoundedValue, value, "f");
|
|
469
469
|
return false;
|
|
470
470
|
}
|
|
471
471
|
}, _JBSelectWebComponent_setValue = function _JBSelectWebComponent_setValue(value) {
|
|
472
|
-
__classPrivateFieldSet(this,
|
|
472
|
+
__classPrivateFieldSet(this, _JBSelectWebComponent_notFoundedValue, null, "f");
|
|
473
473
|
__classPrivateFieldSet(this, _JBSelectWebComponent_value, value, "f");
|
|
474
474
|
if ((value == null || value == undefined)) {
|
|
475
475
|
this.textValue = '';
|
|
@@ -506,11 +506,32 @@ _JBSelectWebComponent_value = new WeakMap(), _JBSelectWebComponent_textValue = n
|
|
|
506
506
|
});
|
|
507
507
|
this.dispatchEvent(event);
|
|
508
508
|
}, _JBSelectWebComponent_createSelectedValueDom = function _JBSelectWebComponent_createSelectedValueDom(value) {
|
|
509
|
-
const valueText = this.
|
|
509
|
+
const valueText = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionTitle).call(this, value);
|
|
510
510
|
const selectedOptionDom = document.createElement('div');
|
|
511
511
|
selectedOptionDom.classList.add('selected-value');
|
|
512
512
|
selectedOptionDom.innerHTML = valueText;
|
|
513
513
|
return selectedOptionDom;
|
|
514
|
+
}, _JBSelectWebComponent_getOptionValue = function _JBSelectWebComponent_getOptionValue(option) {
|
|
515
|
+
if (typeof this.callbacks.getOptionValue !== "function") {
|
|
516
|
+
console.error("getOptionValue callback is not a function");
|
|
517
|
+
}
|
|
518
|
+
try {
|
|
519
|
+
return this.callbacks.getOptionValue(option);
|
|
520
|
+
}
|
|
521
|
+
catch (e) {
|
|
522
|
+
console.error(`Invalid getOptionValue callback Result, must be a function that returns the value of an option`, option);
|
|
523
|
+
}
|
|
524
|
+
}, _JBSelectWebComponent_getOptionTitle = function _JBSelectWebComponent_getOptionTitle(option) {
|
|
525
|
+
if (typeof this.callbacks.getOptionTitle !== "function") {
|
|
526
|
+
console.error("getOptionTitle callback is not a function");
|
|
527
|
+
}
|
|
528
|
+
try {
|
|
529
|
+
return this.callbacks.getOptionTitle(option);
|
|
530
|
+
}
|
|
531
|
+
catch (e) {
|
|
532
|
+
console.error(`Invalid getOptionTitle callback Result, must be a function that returns the value of an option`, option);
|
|
533
|
+
}
|
|
534
|
+
return "";
|
|
514
535
|
};
|
|
515
536
|
const myElementNotExists = !customElements.get('jb-select');
|
|
516
537
|
if (myElementNotExists) {
|
package/dist/JBSelect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JBSelect.js","sources":["../../../node_modules/tslib/tslib.es6.js","../lib/JBSelect.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import HTML from './JBSelect.html';\r\nimport CSS from './JBSelect.scss';\r\nimport { JBSelectCallbacks, JBSelectElements, JBSelectOptionElement } from './Types';\r\nexport class JBSelectWebComponent extends HTMLElement {\r\n #value: any;\r\n #textValue = \"\";\r\n // if user set value and current option list is not contain the option. \r\n // we hold it in _notFindedValue and select value when option value get updated\r\n #notFindedValue: any = null;\r\n required = false;\r\n callbacks: JBSelectCallbacks = {\r\n getOptionTitle: (option) => { return option; },\r\n getOptionValue: (option) => { return option; },\r\n getOptionDOM: null,\r\n getSelectedValueDOM: null,\r\n };\r\n elements!: JBSelectElements;\r\n get value() {\r\n if (this.#value) {\r\n return this.callbacks.getOptionValue(this.#value);\r\n } else {\r\n return null;\r\n }\r\n }\r\n set value(value) {\r\n this.#setValueFromOutside(value);\r\n }\r\n get textValue() {\r\n return this.#textValue;\r\n\r\n }\r\n set textValue(value) {\r\n this.#textValue = value;\r\n this.elements.input.value = value;\r\n this.updateOptionList(value);\r\n }\r\n get selectedOptionTitle() {\r\n if (this.value) {\r\n return this.callbacks.getOptionTitle(this.#value);\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n #optionList:any[] = [];\r\n #displayOptionList:any[] = [];\r\n get optionList() {\r\n return this.#optionList || [];\r\n }\r\n set optionList(value) {\r\n if (!Array.isArray(value)) {\r\n console.error('your provided option list to jb-select is not a array. you must provide array value', { value });\r\n return;\r\n }\r\n this.#optionList = value;\r\n //every time optionList get updated we set our value base on current option list we use _notFindedValue in case of value provided to component before optionList\r\n this.displayOptionList = this.filterOptionList(this.textValue);\r\n this._setValueOnOptionListChanged();\r\n }\r\n #placeholder = \"\";\r\n get placeholder() {\r\n return this.#placeholder;\r\n }\r\n set placeholder(value:string) {\r\n this.#placeholder = value;\r\n if(this.value !== null && this.value!== undefined){\r\n this.elements.input.placeholder = \"\";\r\n }else{\r\n this.elements.input.placeholder = value;\r\n }\r\n }\r\n //on mobile device when search modla open this will appear on searchbox\r\n #searchPlaceholder = \"search\"\r\n get searchPlaceholder(){\r\n return this.#searchPlaceholder;\r\n }\r\n set searchPlaceholder(value){\r\n this.#searchPlaceholder = value;\r\n }\r\n get displayOptionList() {\r\n return this.#displayOptionList;\r\n }\r\n set displayOptionList(value:any[]){\r\n if(Array.isArray(value) && value.length == 0){\r\n this.elements.emptyListPlaceholder.classList.add('--show');\r\n }else if(Array.isArray(value)){\r\n this.elements.emptyListPlaceholder.classList.remove('--show');\r\n }\r\n this.#displayOptionList = value;\r\n this.updateOptionListDOM();\r\n }\r\n get isMobileDevice() { return /Mobi/i.test(window.navigator.userAgent); }\r\n get isOpen(){ return this.elements.componentWrapper.classList.contains('--focused');}\r\n\r\n constructor() {\r\n\r\n super();\r\n this.initWebComponent();\r\n this.initProp();\r\n\r\n }\r\n connectedCallback() {\r\n // standard web component event that called when all of dom is binded\r\n this.callOnLoadEvent();\r\n this.callOnInitEvent();\r\n }\r\n callOnInitEvent() {\r\n const event = new CustomEvent('init', { bubbles: true, composed: true });\r\n this.dispatchEvent(event);\r\n }\r\n callOnLoadEvent() {\r\n const event = new CustomEvent('load', { bubbles: true, composed: true });\r\n this.dispatchEvent(event);\r\n }\r\n initWebComponent() {\r\n const shadowRoot = this.attachShadow({\r\n mode: 'open'\r\n });\r\n const html = `<style>${CSS}</style>` + '\\n' + HTML;\r\n const element = document.createElement('template');\r\n element.innerHTML = html;\r\n shadowRoot.appendChild(element.content.cloneNode(true));\r\n this.elements = {\r\n input: shadowRoot.querySelector('.select-box input')!,\r\n componentWrapper: shadowRoot.querySelector('.jb-select-web-component')!,\r\n selectedValueWrapper: shadowRoot.querySelector('.selected-value-wrapper')!,\r\n messageBox: shadowRoot.querySelector('.message-box')!,\r\n optionList: shadowRoot.querySelector('.select-list')!,\r\n optionListWrapper: shadowRoot.querySelector('.select-list-wrapper')!,\r\n arrowIcon: shadowRoot.querySelector('.arrow-icon')!,\r\n label:{\r\n wrapper: shadowRoot.querySelector('label')!,\r\n text: shadowRoot.querySelector('label .label-value')!,\r\n },\r\n emptyListPlaceholder: shadowRoot.querySelector('.empty-list-placeholder')!,\r\n };\r\n this.registerEventListener();\r\n\r\n }\r\n registerEventListener() {\r\n this.elements.input.addEventListener('change', (e)=>{this.onInputChange(e);});\r\n this.elements.input.addEventListener('keypress', this.onInputKeyPress.bind(this));\r\n this.elements.input.addEventListener('keyup', this.onInputKeyup.bind(this));\r\n this.elements.input.addEventListener('beforeinput', this.onInputBeforeInput.bind(this));\r\n this.elements.input.addEventListener('input', (e)=>{this.onInputInput(e as unknown as InputEvent);});\r\n this.elements.input.addEventListener('focus', this.onInputFocus.bind(this));\r\n this.elements.input.addEventListener('blur', this.onInputBlur.bind(this));\r\n this.elements.arrowIcon.addEventListener('click', this.onArrowKeyClick.bind(this));\r\n }\r\n initProp() {\r\n this.textValue = '';\r\n this.value = this.getAttribute('value') || null;\r\n }\r\n static get observedAttributes() {\r\n return ['label', 'message', 'value', 'required', 'placeholder', 'search-placeholder'];\r\n }\r\n attributeChangedCallback(name, oldValue, newValue) {\r\n // do something when an attribute has changed\r\n this.onAttributeChange(name, newValue);\r\n }\r\n onAttributeChange(name:string, value:string) {\r\n switch (name) {\r\n case 'label':\r\n this.elements.label.text.innerHTML = value;\r\n if (value == null || value == undefined || value == \"\") {\r\n this.elements.label.wrapper.classList.add('--hide');\r\n } else {\r\n this.elements.label.wrapper.classList.remove('--hide');\r\n }\r\n break;\r\n case 'message':\r\n this.elements.messageBox.innerHTML = value;\r\n break;\r\n case 'value':\r\n this.#setValueFromOutside(value);\r\n break;\r\n case 'required':\r\n if (value === \"\" || value == \"true\" || value == \"True\") {\r\n this.required = true;\r\n } else {\r\n this.required = false;\r\n }\r\n break;\r\n case 'placeholder':\r\n this.placeholder = value;\r\n break;\r\n case 'search-placeholder':\r\n this.searchPlaceholder = value;\r\n break;\r\n }\r\n\r\n }\r\n _setValueOnOptionListChanged() {\r\n //when option list changed we see if current value is valid for new optionlist we set it if not we reset value to null.\r\n //in some scenario value is setted before otionList attached so we store it on this._notFindedValue and after option list setted we set value from this._notFindedValue\r\n if (this.#notFindedValue) {\r\n //if select has no prev value or pending not finded value we dont set it becuase user may input some search terms in input box and developer-user update list base on that value\r\n //if we set it to null the search term and this.textvalue will become null and empty too and it make impossible for user to search in dynamic back-end provided searchable list so we put this condition to prevent it\r\n const isSetted = this.#setValueFromOutside(this.#notFindedValue);\r\n if(isSetted){\r\n //after list update and when not founded value is found in new option list we clear old not finded value\r\n this.#notFindedValue = null;\r\n }\r\n }else if(this.value){\r\n this.#setValueFromOutside(this.value);\r\n }\r\n }\r\n #setValueFromOutside(value:any):boolean{\r\n //when user set value by attribute or value prop directly we call this function\r\n const matchedOption = this.optionList.find((option) => { // if we have value mapper we set selected value by object that match mapper\r\n if (this.callbacks.getOptionValue(option) == value) {\r\n return option;\r\n }\r\n });\r\n if (matchedOption || value == null) {\r\n this.#setValue(matchedOption);\r\n return true;\r\n } else {\r\n this.#notFindedValue = value;\r\n return false;\r\n }\r\n\r\n }\r\n #setValue(value:any) {\r\n this.#notFindedValue = null;\r\n this.#value = value;\r\n if ((value == null || value == undefined)) {\r\n this.textValue = '';\r\n this.setSelectedOptionDom(null);\r\n this.elements.componentWrapper.classList.remove('--has-value');\r\n //show placeholder when user empty data\r\n if(!(this.isMobileDevice && this.isOpen)){\r\n this.elements.input.placeholder = this.placeholder;\r\n }\r\n } else {\r\n this.textValue = '';\r\n this.setSelectedOptionDom(value);\r\n this.elements.componentWrapper.classList.add('--has-value');\r\n //hide placeholder when user select data\r\n if(!(this.isMobileDevice && this.isOpen)){\r\n this.elements.input.placeholder = \"\";\r\n }\r\n }\r\n //if user select an option we rest filter so user see all option again when open a select\r\n this.updateOptionList('');\r\n }\r\n onArrowKeyClick() {\r\n if (this.isOpen) {\r\n this.blur();\r\n } else {\r\n this.focus();\r\n }\r\n }\r\n onInputKeyPress() {\r\n //TODO: add event detail to keypress\r\n const event = new KeyboardEvent('keypress');\r\n this.dispatchEvent(event);\r\n }\r\n onInputBeforeInput(e:InputEvent) {\r\n const inputedText = e.data || '';\r\n }\r\n onInputInput(e:InputEvent) {\r\n const inputedText = (e.target as HTMLInputElement).value;\r\n this.textValue = inputedText;\r\n this.handleSelectedValueDisplay(inputedText);\r\n this.#dispatchInputEvent(e);\r\n }\r\n #dispatchInputEvent(e:InputEvent){\r\n const event = new InputEvent('input',{\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n data:e.data,\r\n dataTransfer:e.dataTransfer,\r\n detail:e.detail,\r\n inputType:e.inputType,\r\n isComposing:e.isComposing,\r\n targetRanges:e.getTargetRanges(),\r\n view:e.view,\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n onInputKeyup(e:KeyboardEvent) {\r\n const inputText = (e.target as HTMLInputElement).value;\r\n //here is the rare time we update #value directly becuase we want trigger event that may read value directly from dom\r\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\r\n //becuase on keyprees dont recieve backspace key press\r\n this.handleSelectedValueDisplay(inputText);\r\n }\r\n\r\n this.triggerOnInputKeyup(e);\r\n\r\n }\r\n handleSelectedValueDisplay(inputValue:string) {\r\n if (inputValue !== \"\") {\r\n this.elements.selectedValueWrapper.classList.add('--search-typed');\r\n } else {\r\n this.elements.selectedValueWrapper.classList.remove('--search-typed');\r\n }\r\n }\r\n triggerOnInputKeyup(e:KeyboardEvent) {\r\n const event = new KeyboardEvent('keyup', {\r\n altKey: e.altKey,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n detail: e.detail,\r\n key: e.key,\r\n shiftKey: e.shiftKey,\r\n charCode: e.charCode,\r\n location: e.location,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n keyCode: e.keyCode,\r\n view: e.view\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n onInputChange(e: Event) {\r\n const inputText = (e.target as HTMLInputElement).value;\r\n //here is the rare time we update _text_value directly becuase we want trigger event that may read value directly from dom\r\n this.#textValue = inputText;\r\n }\r\n onInputFocus() {\r\n this.focus();\r\n }\r\n onInputBlur(e: FocusEvent) {\r\n const focusedElement = <Node>(e.relatedTarget);\r\n if (this.elements.optionListWrapper.contains(focusedElement) || this.elements.arrowIcon.contains(focusedElement)) {\r\n //user click on a menu item\r\n } else {\r\n this.blur();\r\n }\r\n }\r\n focus() {\r\n this.elements.input.focus();\r\n this.showOptionList();\r\n this.elements.componentWrapper.classList.add('--focused');\r\n if(this.isMobileDevice){\r\n this.elements.input.placeholder = this.#searchPlaceholder;\r\n }\r\n\r\n }\r\n blur() {\r\n this.elements.componentWrapper.classList.remove('--focused');\r\n this.textValue = \"\";\r\n this.handleSelectedValueDisplay('');\r\n this.hideOptionList();\r\n this.triggerInputValidation();\r\n if(this.isMobileDevice){\r\n if(this.value){\r\n this.elements.input.placeholder = \"\";\r\n }else{\r\n this.elements.input.placeholder = this.placeholder;\r\n }\r\n }\r\n this.elements.input.blur();\r\n }\r\n showOptionList() {\r\n this.elements.optionListWrapper.classList.add('--show');\r\n }\r\n hideOptionList() {\r\n this.elements.optionListWrapper.classList.remove('--show');\r\n }\r\n updateOptionList(filterText:string) {\r\n this.displayOptionList = this.filterOptionList(filterText);\r\n }\r\n updateOptionListDOM() {\r\n const optionDomList: HTMLElement[] = [];\r\n this.displayOptionList.forEach((item) => {\r\n const optionDOM = this.createOptionDOM(item);\r\n optionDomList.push(optionDOM);\r\n });\r\n this.elements.optionList.innerHTML = '';\r\n optionDomList.forEach(optionElement => { this.elements.optionList.appendChild(optionElement); });\r\n\r\n\r\n }\r\n createOptionDOM(item:any):JBSelectOptionElement{\r\n let optionDOM: JBSelectOptionElement | null = null;\r\n const isSelected = this.callbacks.getOptionValue(this.value) == this.callbacks.getOptionValue(item);\r\n if (typeof this.callbacks.getOptionDOM == 'function') {\r\n optionDOM = this.callbacks.getOptionDOM(item, this.onOptionClicked.bind(this),isSelected);\r\n } else {\r\n optionDOM = this._createOptionDom(item, isSelected);\r\n }\r\n optionDOM.value = item;\r\n return optionDOM;\r\n }\r\n\r\n _createOptionDom(item:any, isSelected:boolean):JBSelectOptionElement{\r\n const optionElement = document.createElement('div');\r\n optionElement.classList.add('select-option');\r\n if(isSelected){\r\n optionElement.classList.add('--selected-option'); \r\n }\r\n //it has defualt function who return wxact same input\r\n optionElement.innerHTML = this.callbacks.getOptionTitle(item);\r\n optionElement.addEventListener('click', this.onOptionClicked.bind(this));\r\n return optionElement;\r\n }\r\n onOptionClicked(e:MouseEvent) {\r\n const value = (e.currentTarget as JBSelectOptionElement).value;\r\n this.selectOption(value);\r\n this.blur();\r\n this._triggerOnChangeEvent();\r\n }\r\n selectOption(value:any) {\r\n this.#setValue(value);\r\n this.triggerInputValidation();\r\n }\r\n filterOptionList(filterString:string):any[] {\r\n const displayOptionList: any[] = [];\r\n this.optionList.filter((option) => {\r\n const optionTitle = this.callbacks.getOptionTitle(option);\r\n const isString = typeof optionTitle == 'string';\r\n if (isString && optionTitle.includes(filterString)) {\r\n displayOptionList.push(option);\r\n }\r\n if (!isString) {\r\n console.warn(\"the provided values for optionsList is not of type string.\", { option, title: optionTitle });\r\n }\r\n });\r\n return displayOptionList;\r\n }\r\n triggerInputValidation(showError = true) {\r\n // this method is public and used outside of component to check if field validity param are met\r\n let errorType = '';\r\n let requiredValid = true;\r\n if (this.required) {\r\n\r\n requiredValid = this.value != null;\r\n if (!requiredValid) {\r\n errorType = 'REQUIRED';\r\n }\r\n }\r\n const isAllValid = requiredValid; //& other validation if they added\r\n if (isAllValid) {\r\n this.clearValidationError();\r\n } else if (showError) {\r\n this.showValidationError(errorType);\r\n }\r\n return {\r\n isAllValid\r\n };\r\n }\r\n showValidationError(errorType) {\r\n if (errorType == 'REQUIRED') {\r\n const label = this.getAttribute('label') || \"\";\r\n this.elements.messageBox.innerHTML = `${label} حتما باید انتخاب شود`;\r\n this.elements.messageBox.classList.add('--error');\r\n }\r\n }\r\n clearValidationError() {\r\n this.elements.messageBox.innerHTML = this.getAttribute('message') || '';\r\n this.elements.messageBox.classList.remove('--error');\r\n\r\n }\r\n _triggerOnChangeEvent() {\r\n const event = new Event(\"change\");\r\n this.dispatchEvent(event);\r\n }\r\n setSelectedOptionDom(value:any) {\r\n //when user select option or value changed in any condition we set selected option DOM\r\n this.elements.selectedValueWrapper.innerHTML = '';\r\n //if value was null or undifined it remain empty\r\n if (value !== null && value !== undefined) {\r\n const selectedOptionDom = this.createSelectedValueDom(value);\r\n this.elements.selectedValueWrapper.appendChild(selectedOptionDom);\r\n }\r\n }\r\n private createSelectedValueDom(value:any) {\r\n if (typeof this.callbacks.getSelectedValueDOM == 'function') {\r\n return this.callbacks.getSelectedValueDOM(value);\r\n } else {\r\n return this.#createSelectedValueDom(value);\r\n }\r\n }\r\n #createSelectedValueDom(value:any) {\r\n const valueText = this.callbacks.getOptionTitle(value);\r\n const selectedOptionDom = document.createElement('div');\r\n selectedOptionDom.classList.add('selected-value');\r\n selectedOptionDom.innerHTML = valueText;\r\n return selectedOptionDom;\r\n }\r\n}\r\nconst myElementNotExists = !customElements.get('jb-select');\r\nif (myElementNotExists) {\r\n //prevent duplicate registering\r\n window.customElements.define('jb-select', JBSelectWebComponent);\r\n}\r\n"],"names":["CSS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JBSelect.js","sources":["../../../node_modules/tslib/tslib.es6.js","../lib/JBSelect.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import HTML from './JBSelect.html';\r\nimport CSS from './JBSelect.scss';\r\nimport { JBSelectCallbacks, JBSelectElements, JBSelectOptionElement } from './Types';\r\nexport class JBSelectWebComponent extends HTMLElement {\r\n #value: any;\r\n #textValue = \"\";\r\n // if user set value and current option list is not contain the option. \r\n // we hold it in _notFindedValue and select value when option value get updated\r\n #notFoundedValue: any = null;\r\n required = false;\r\n callbacks: JBSelectCallbacks = {\r\n getOptionTitle: (option) => { return option; },\r\n getOptionValue: (option) => { return option; },\r\n getOptionDOM: null,\r\n getSelectedValueDOM: null,\r\n };\r\n elements!: JBSelectElements;\r\n get value() {\r\n if (this.#value) {\r\n return this.#getOptionValue(this.#value);\r\n } else {\r\n return null;\r\n }\r\n }\r\n set value(value) {\r\n this.#setValueFromOutside(value);\r\n }\r\n get textValue() {\r\n return this.#textValue;\r\n\r\n }\r\n set textValue(value) {\r\n this.#textValue = value;\r\n this.elements.input.value = value;\r\n this.updateOptionList(value);\r\n }\r\n get selectedOptionTitle() {\r\n if (this.value) {\r\n return this.#getOptionTitle(this.#value);\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n #optionList:any[] = [];\r\n #displayOptionList:any[] = [];\r\n get optionList() {\r\n return this.#optionList || [];\r\n }\r\n set optionList(value) {\r\n if (!Array.isArray(value)) {\r\n console.error('your provided option list to jb-select is not a array. you must provide array value', { value });\r\n return;\r\n }\r\n this.#optionList = value;\r\n //every time optionList get updated we set our value base on current option list we use _notFindedValue in case of value provided to component before optionList\r\n this.displayOptionList = this.filterOptionList(this.textValue);\r\n this._setValueOnOptionListChanged();\r\n }\r\n #placeholder = \"\";\r\n get placeholder() {\r\n return this.#placeholder;\r\n }\r\n set placeholder(value:string) {\r\n this.#placeholder = value;\r\n if(this.value !== null && this.value!== undefined){\r\n this.elements.input.placeholder = \"\";\r\n }else{\r\n this.elements.input.placeholder = value;\r\n }\r\n }\r\n //on mobile device when search modla open this will appear on searchbox\r\n #searchPlaceholder = \"search\"\r\n get searchPlaceholder(){\r\n return this.#searchPlaceholder;\r\n }\r\n set searchPlaceholder(value){\r\n this.#searchPlaceholder = value;\r\n }\r\n get displayOptionList() {\r\n return this.#displayOptionList;\r\n }\r\n set displayOptionList(value:any[]){\r\n if(Array.isArray(value) && value.length == 0){\r\n this.elements.emptyListPlaceholder.classList.add('--show');\r\n }else if(Array.isArray(value)){\r\n this.elements.emptyListPlaceholder.classList.remove('--show');\r\n }\r\n this.#displayOptionList = value;\r\n this.updateOptionListDOM();\r\n }\r\n get isMobileDevice() { return /Mobi/i.test(window.navigator.userAgent); }\r\n get isOpen(){ return this.elements.componentWrapper.classList.contains('--focused');}\r\n\r\n constructor() {\r\n\r\n super();\r\n this.initWebComponent();\r\n this.initProp();\r\n\r\n }\r\n connectedCallback() {\r\n // standard web component event that called when all of dom is binded\r\n this.callOnLoadEvent();\r\n this.callOnInitEvent();\r\n }\r\n callOnInitEvent() {\r\n const event = new CustomEvent('init', { bubbles: true, composed: true });\r\n this.dispatchEvent(event);\r\n }\r\n callOnLoadEvent() {\r\n const event = new CustomEvent('load', { bubbles: true, composed: true });\r\n this.dispatchEvent(event);\r\n }\r\n initWebComponent() {\r\n const shadowRoot = this.attachShadow({\r\n mode: 'open'\r\n });\r\n const html = `<style>${CSS}</style>` + '\\n' + HTML;\r\n const element = document.createElement('template');\r\n element.innerHTML = html;\r\n shadowRoot.appendChild(element.content.cloneNode(true));\r\n this.elements = {\r\n input: shadowRoot.querySelector('.select-box input')!,\r\n componentWrapper: shadowRoot.querySelector('.jb-select-web-component')!,\r\n selectedValueWrapper: shadowRoot.querySelector('.selected-value-wrapper')!,\r\n messageBox: shadowRoot.querySelector('.message-box')!,\r\n optionList: shadowRoot.querySelector('.select-list')!,\r\n optionListWrapper: shadowRoot.querySelector('.select-list-wrapper')!,\r\n arrowIcon: shadowRoot.querySelector('.arrow-icon')!,\r\n label:{\r\n wrapper: shadowRoot.querySelector('label')!,\r\n text: shadowRoot.querySelector('label .label-value')!,\r\n },\r\n emptyListPlaceholder: shadowRoot.querySelector('.empty-list-placeholder')!,\r\n };\r\n this.registerEventListener();\r\n\r\n }\r\n registerEventListener() {\r\n this.elements.input.addEventListener('change', (e)=>{this.onInputChange(e);});\r\n this.elements.input.addEventListener('keypress', this.onInputKeyPress.bind(this));\r\n this.elements.input.addEventListener('keyup', this.onInputKeyup.bind(this));\r\n this.elements.input.addEventListener('beforeinput', this.onInputBeforeInput.bind(this));\r\n this.elements.input.addEventListener('input', (e)=>{this.onInputInput(e as unknown as InputEvent);});\r\n this.elements.input.addEventListener('focus', this.onInputFocus.bind(this));\r\n this.elements.input.addEventListener('blur', this.onInputBlur.bind(this));\r\n this.elements.arrowIcon.addEventListener('click', this.onArrowKeyClick.bind(this));\r\n }\r\n initProp() {\r\n this.textValue = '';\r\n this.value = this.getAttribute('value') || null;\r\n }\r\n static get observedAttributes() {\r\n return ['label', 'message', 'value', 'required', 'placeholder', 'search-placeholder'];\r\n }\r\n attributeChangedCallback(name, oldValue, newValue) {\r\n // do something when an attribute has changed\r\n this.onAttributeChange(name, newValue);\r\n }\r\n onAttributeChange(name:string, value:string) {\r\n switch (name) {\r\n case 'label':\r\n this.elements.label.text.innerHTML = value;\r\n if (value == null || value == undefined || value == \"\") {\r\n this.elements.label.wrapper.classList.add('--hide');\r\n } else {\r\n this.elements.label.wrapper.classList.remove('--hide');\r\n }\r\n break;\r\n case 'message':\r\n this.elements.messageBox.innerHTML = value;\r\n break;\r\n case 'value':\r\n this.#setValueFromOutside(value);\r\n break;\r\n case 'required':\r\n if (value === \"\" || value == \"true\" || value == \"True\") {\r\n this.required = true;\r\n } else {\r\n this.required = false;\r\n }\r\n break;\r\n case 'placeholder':\r\n this.placeholder = value;\r\n break;\r\n case 'search-placeholder':\r\n this.searchPlaceholder = value;\r\n break;\r\n }\r\n\r\n }\r\n _setValueOnOptionListChanged() {\r\n //when option list changed we see if current value is valid for new optionlist we set it if not we reset value to null.\r\n //in some scenario value is setted before optionList attached so we store it on this.#notFoundedValue and after option list setted we set value from this.#notFoundedValue\r\n if (this.#notFoundedValue) {\r\n //if select has no prev value or pending not found value we don't set it because user may input some search terms in input box and developer-user update list base on that value\r\n //if we set it to null the search term and this.textvalue will become null and empty too and it make impossible for user to search in dynamic back-end provided searchable list so we put this condition to prevent it\r\n const isSetted = this.#setValueFromOutside(this.#notFoundedValue);\r\n if(isSetted){\r\n //after list update and when not founded value is found in new option list we clear old not founded value\r\n this.#notFoundedValue = null;\r\n }\r\n }else if(this.value){\r\n this.#setValueFromOutside(this.value);\r\n }\r\n }\r\n #setValueFromOutside(value:any):boolean{\r\n //when user set value by attribute or value prop directly we call this function\r\n const matchedOption = this.optionList.find((option) => { // if we have value mapper we set selected value by object that match mapper\r\n if (this.#getOptionValue(option) == value) {\r\n return option;\r\n }\r\n });\r\n if (matchedOption || value == null) {\r\n this.#setValue(matchedOption);\r\n return true;\r\n } else {\r\n this.#notFoundedValue = value;\r\n return false;\r\n }\r\n\r\n }\r\n #setValue(value:any) {\r\n this.#notFoundedValue = null;\r\n this.#value = value;\r\n if ((value == null || value == undefined)) {\r\n this.textValue = '';\r\n this.setSelectedOptionDom(null);\r\n this.elements.componentWrapper.classList.remove('--has-value');\r\n //show placeholder when user empty data\r\n if(!(this.isMobileDevice && this.isOpen)){\r\n this.elements.input.placeholder = this.placeholder;\r\n }\r\n } else {\r\n this.textValue = '';\r\n this.setSelectedOptionDom(value);\r\n this.elements.componentWrapper.classList.add('--has-value');\r\n //hide placeholder when user select data\r\n if(!(this.isMobileDevice && this.isOpen)){\r\n this.elements.input.placeholder = \"\";\r\n }\r\n }\r\n //if user select an option we rest filter so user see all option again when open a select\r\n this.updateOptionList('');\r\n }\r\n onArrowKeyClick() {\r\n if (this.isOpen) {\r\n this.blur();\r\n } else {\r\n this.focus();\r\n }\r\n }\r\n onInputKeyPress() {\r\n //TODO: add event detail to keypress\r\n const event = new KeyboardEvent('keypress');\r\n this.dispatchEvent(event);\r\n }\r\n onInputBeforeInput(e:InputEvent) {\r\n const inputedText = e.data || '';\r\n }\r\n onInputInput(e:InputEvent) {\r\n const inputedText = (e.target as HTMLInputElement).value;\r\n this.textValue = inputedText;\r\n this.handleSelectedValueDisplay(inputedText);\r\n this.#dispatchInputEvent(e);\r\n }\r\n #dispatchInputEvent(e:InputEvent){\r\n const event = new InputEvent('input',{\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n data:e.data,\r\n dataTransfer:e.dataTransfer,\r\n detail:e.detail,\r\n inputType:e.inputType,\r\n isComposing:e.isComposing,\r\n targetRanges:e.getTargetRanges(),\r\n view:e.view,\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n onInputKeyup(e:KeyboardEvent) {\r\n const inputText = (e.target as HTMLInputElement).value;\r\n //here is the rare time we update #value directly becuase we want trigger event that may read value directly from dom\r\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\r\n //becuase on keyprees dont recieve backspace key press\r\n this.handleSelectedValueDisplay(inputText);\r\n }\r\n\r\n this.triggerOnInputKeyup(e);\r\n\r\n }\r\n handleSelectedValueDisplay(inputValue:string) {\r\n if (inputValue !== \"\") {\r\n this.elements.selectedValueWrapper.classList.add('--search-typed');\r\n } else {\r\n this.elements.selectedValueWrapper.classList.remove('--search-typed');\r\n }\r\n }\r\n triggerOnInputKeyup(e:KeyboardEvent) {\r\n const event = new KeyboardEvent('keyup', {\r\n altKey: e.altKey,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n detail: e.detail,\r\n key: e.key,\r\n shiftKey: e.shiftKey,\r\n charCode: e.charCode,\r\n location: e.location,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n keyCode: e.keyCode,\r\n view: e.view\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n onInputChange(e: Event) {\r\n const inputText = (e.target as HTMLInputElement).value;\r\n //here is the rare time we update _text_value directly becuase we want trigger event that may read value directly from dom\r\n this.#textValue = inputText;\r\n }\r\n onInputFocus() {\r\n this.focus();\r\n }\r\n onInputBlur(e: FocusEvent) {\r\n const focusedElement = <Node>(e.relatedTarget);\r\n if (this.elements.optionListWrapper.contains(focusedElement) || this.elements.arrowIcon.contains(focusedElement)) {\r\n //user click on a menu item\r\n } else {\r\n this.blur();\r\n }\r\n }\r\n focus() {\r\n this.elements.input.focus();\r\n this.showOptionList();\r\n this.elements.componentWrapper.classList.add('--focused');\r\n if(this.isMobileDevice){\r\n this.elements.input.placeholder = this.#searchPlaceholder;\r\n }\r\n\r\n }\r\n blur() {\r\n this.elements.componentWrapper.classList.remove('--focused');\r\n this.textValue = \"\";\r\n this.handleSelectedValueDisplay('');\r\n this.hideOptionList();\r\n this.triggerInputValidation();\r\n if(this.isMobileDevice){\r\n if(this.value){\r\n this.elements.input.placeholder = \"\";\r\n }else{\r\n this.elements.input.placeholder = this.placeholder;\r\n }\r\n }\r\n this.elements.input.blur();\r\n }\r\n showOptionList() {\r\n this.elements.optionListWrapper.classList.add('--show');\r\n }\r\n hideOptionList() {\r\n this.elements.optionListWrapper.classList.remove('--show');\r\n }\r\n updateOptionList(filterText:string) {\r\n this.displayOptionList = this.filterOptionList(filterText);\r\n }\r\n updateOptionListDOM() {\r\n const optionDomList: HTMLElement[] = [];\r\n this.displayOptionList.forEach((item) => {\r\n const optionDOM = this.createOptionDOM(item);\r\n optionDomList.push(optionDOM);\r\n });\r\n this.elements.optionList.innerHTML = '';\r\n optionDomList.forEach(optionElement => { this.elements.optionList.appendChild(optionElement); });\r\n\r\n\r\n }\r\n createOptionDOM(item:any):JBSelectOptionElement{\r\n let optionDOM: JBSelectOptionElement | null = null;\r\n const isSelected = this.#getOptionValue(this.value) == this.#getOptionValue(item);\r\n if (typeof this.callbacks.getOptionDOM == 'function') {\r\n optionDOM = this.callbacks.getOptionDOM(item, this.onOptionClicked.bind(this),isSelected);\r\n } else {\r\n optionDOM = this._createOptionDom(item, isSelected);\r\n }\r\n optionDOM.value = item;\r\n return optionDOM;\r\n }\r\n\r\n _createOptionDom(item:any, isSelected:boolean):JBSelectOptionElement{\r\n const optionElement = document.createElement('div');\r\n optionElement.classList.add('select-option');\r\n if(isSelected){\r\n optionElement.classList.add('--selected-option'); \r\n }\r\n //it has defualt function who return wxact same input\r\n optionElement.innerHTML = this.#getOptionTitle(item);\r\n optionElement.addEventListener('click', this.onOptionClicked.bind(this));\r\n return optionElement;\r\n }\r\n onOptionClicked(e:MouseEvent) {\r\n const value = (e.currentTarget as JBSelectOptionElement).value;\r\n this.selectOption(value);\r\n this.blur();\r\n this._triggerOnChangeEvent();\r\n }\r\n selectOption(value:any) {\r\n this.#setValue(value);\r\n this.triggerInputValidation();\r\n }\r\n filterOptionList(filterString:string):any[] {\r\n const displayOptionList: any[] = [];\r\n this.optionList.filter((option) => {\r\n const optionTitle = this.#getOptionTitle(option);\r\n const isString = typeof optionTitle == 'string';\r\n if (isString && optionTitle.includes(filterString)) {\r\n displayOptionList.push(option);\r\n }\r\n if (!isString) {\r\n console.warn(\"the provided values for optionsList is not of type string.\", { option, title: optionTitle });\r\n }\r\n });\r\n return displayOptionList;\r\n }\r\n triggerInputValidation(showError = true) {\r\n // this method is public and used outside of component to check if field validity param are met\r\n let errorType = '';\r\n let requiredValid = true;\r\n if (this.required) {\r\n\r\n requiredValid = this.value != null;\r\n if (!requiredValid) {\r\n errorType = 'REQUIRED';\r\n }\r\n }\r\n const isAllValid = requiredValid; //& other validation if they added\r\n if (isAllValid) {\r\n this.clearValidationError();\r\n } else if (showError) {\r\n this.showValidationError(errorType);\r\n }\r\n return {\r\n isAllValid\r\n };\r\n }\r\n showValidationError(errorType) {\r\n if (errorType == 'REQUIRED') {\r\n const label = this.getAttribute('label') || \"\";\r\n this.elements.messageBox.innerHTML = `${label} حتما باید انتخاب شود`;\r\n this.elements.messageBox.classList.add('--error');\r\n }\r\n }\r\n clearValidationError() {\r\n this.elements.messageBox.innerHTML = this.getAttribute('message') || '';\r\n this.elements.messageBox.classList.remove('--error');\r\n\r\n }\r\n _triggerOnChangeEvent() {\r\n const event = new Event(\"change\");\r\n this.dispatchEvent(event);\r\n }\r\n setSelectedOptionDom(value:any) {\r\n //when user select option or value changed in any condition we set selected option DOM\r\n this.elements.selectedValueWrapper.innerHTML = '';\r\n //if value was null or undifined it remain empty\r\n if (value !== null && value !== undefined) {\r\n const selectedOptionDom = this.createSelectedValueDom(value);\r\n this.elements.selectedValueWrapper.appendChild(selectedOptionDom);\r\n }\r\n }\r\n private createSelectedValueDom(value:any) {\r\n if (typeof this.callbacks.getSelectedValueDOM == 'function') {\r\n return this.callbacks.getSelectedValueDOM(value);\r\n } else {\r\n return this.#createSelectedValueDom(value);\r\n }\r\n }\r\n #createSelectedValueDom(value:any) {\r\n const valueText = this.#getOptionTitle(value);\r\n const selectedOptionDom = document.createElement('div');\r\n selectedOptionDom.classList.add('selected-value');\r\n selectedOptionDom.innerHTML = valueText;\r\n return selectedOptionDom;\r\n }\r\n #getOptionValue(option:any){\r\n if(typeof this.callbacks.getOptionValue !== \"function\"){\r\n console.error(\"getOptionValue callback is not a function\");\r\n }\r\n try{\r\n return this.callbacks.getOptionValue(option);\r\n }catch(e){\r\n console.error(`Invalid getOptionValue callback Result, must be a function that returns the value of an option`,option);\r\n }\r\n }\r\n #getOptionTitle(option:any):string{\r\n if(typeof this.callbacks.getOptionTitle !== \"function\"){\r\n console.error(\"getOptionTitle callback is not a function\");\r\n }\r\n try{\r\n return this.callbacks.getOptionTitle(option);\r\n }catch(e){\r\n console.error(`Invalid getOptionTitle callback Result, must be a function that returns the value of an option`,option);\r\n }\r\n return \"\";\r\n }\r\n}\r\nconst myElementNotExists = !customElements.get('jb-select');\r\nif (myElementNotExists) {\r\n //prevent duplicate registering\r\n window.customElements.define('jb-select', JBSelectWebComponent);\r\n}\r\n"],"names":["CSS"],"mappings":"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"}
|
package/dist/JBSelect.umd.js
CHANGED
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
|
|
35
35
|
var HTML = "<div class=\"jb-select-web-component\">\r\n <div class=\"label-wrapper\">\r\n <label class=\"--hide\"><span class=\"label-value\"></span></label>\r\n <!-- close button will be visible on mobile modal -->\r\n <div class=\"close-button\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path class=\"close-btn-svg-bg\" opacity=\"0.4\" d=\"M16.3399 1.9998H7.66988C4.27988 1.9998 1.99988 4.3798 1.99988 7.9198V16.0898C1.99988 19.6198 4.27988 21.9998 7.66988 21.9998H16.3399C19.7299 21.9998 21.9999 19.6198 21.9999 16.0898V7.9198C21.9999 4.3798 19.7299 1.9998 16.3399 1.9998Z\"/>\r\n <path class=\"close-btn-svg-path\" d=\"M15.0156 13.7703L13.2366 11.9923L15.0146 10.2143C15.3566 9.8733 15.3566 9.3183 15.0146 8.9773C14.6726 8.6333 14.1196 8.6343 13.7776 8.9763L11.9986 10.7543L10.2196 8.9743C9.87758 8.6323 9.32358 8.6343 8.98158 8.9743C8.64058 9.3163 8.64058 9.8713 8.98158 10.2123L10.7616 11.9923L8.98558 13.7673C8.64358 14.1093 8.64358 14.6643 8.98558 15.0043C9.15658 15.1763 9.37958 15.2613 9.60358 15.2613C9.82858 15.2613 10.0516 15.1763 10.2226 15.0053L11.9986 13.2293L13.7786 15.0083C13.9496 15.1793 14.1726 15.2643 14.3966 15.2643C14.6206 15.2643 14.8446 15.1783 15.0156 15.0083C15.3576 14.6663 15.3576 14.1123 15.0156 13.7703Z\" fill=\"#200E32\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"select-box\">\r\n <div class=\"start-section\">\r\n <slot name=\"start-section\"></slot>\r\n </div>\r\n <div class=\"middle-section\">\r\n <div class=\"selected-value-wrapper\"></div>\r\n <div class=\"front-box\">\r\n <input class=\"input\">\r\n\r\n </div>\r\n </div>\r\n <div class=\"end-section\">\r\n <div class=\"arrow-icon\" tabindex=\"-1\">\r\n <slot name=\"select-arrow-icon\">\r\n <svg width=\"8\" height=\"8\" id=\"Layer_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 494.1 371.1\" style=\"enable-background:new 0 0 494.1 371.1;\" xml:space=\"preserve\">\r\n <path d=\"M293,343.8L480.9,69.3c8.7-12.7,13.3-25.4,13.3-36.1c0-20.5-16.5-33.2-44-33.2H44C16.4,0,0,12.7,0,33.2 c0,10.6,4.6,23.2,13.3,35.9l187.9,274.6c12.1,17.7,28.4,27.4,45.9,27.4C264.6,371.1,280.9,361.4,293,343.8z\"/>\r\n </svg>\r\n </slot>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"middle-divider\">\r\n <!-- middle line between input box and list (hidden by default but user may need it sometimes) -->\r\n </div>\r\n <div class=\"select-list-wrapper\">\r\n <div class=\"select-list\" tabindex=\"-1\">\r\n\r\n </div>\r\n <div class=\"empty-list-placeholder\">\r\n <slot name=\"empty-list-message\">no item available</slot>\r\n </div>\r\n </div>\r\n <div class=\"message-box\"></div>\r\n</div>";
|
|
36
36
|
|
|
37
|
-
var css_248z = ":host {\n --p-middle-div-height: var(--jb-select-middle-div-height, 0px);\n --p-p-color: #1e2832;\n --p-border-bottom-width: var(--jb-select-border-bottom-width, var(--jb-select-border-width, 3px));\n --p-base-z-index: 1;\n --p-mobile-modal-z-index: 900; }\n\n.jb-select-web-component {\n width: var(--jb-select-width, 100%);\n margin: var(--jb-select-margin, 0 0);\n position: relative;\n box-sizing: border-box; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused {\n position: fixed;\n top: 0;\n left: 0;\n background-color: var(--jb-select-overlay-bgcolor, #0008);\n width: 100vw;\n height: 100vh;\n margin: 0;\n padding: 16px 8px;\n z-index: var(--p-mobile-modal-z-index); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box {\n height: var(--jb-select-mobile-search-input-height, var(--jb-select-height, 40px));\n background-color: var(--jb-select-mobile-input-bgcolor, #f7f6f6);\n border-width: var(--jb-select-mobile-search-border-width, var(--jb-select-border-width, 1px));\n border-color: var(--jb-select-mobile-search-border-color, var(--jb-select-border-color, #f7f6f6));\n border-bottom-width: var(--jb-select-mobile-search-border-bottom-width, var(--p-border-bottom-width));\n border-bottom-color: var(--jb-select-mobile-search-border-bottom-color, var(--jb-select-border-bottom-color, var(--jb-select-border-color, #f7f6f6)));\n border-radius: var(--jb-select-mobile-search-border-radius, var(--jb-select-border-radius, 16px)); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box .front-box .arrow-icon {\n display: none; } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box .selected-value-wrapper {\n opacity: 0;\n transition: none; } }\n .jb-select-web-component.--focused .middle-divider {\n display: block; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .middle-divider {\n margin: var(--jb-select-middle-div-mobile-margin, 16px 0 0 0); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-list-wrapper {\n position: initial;\n margin: var(--jb-select-mobile-item-list-margin, 16px 0);\n border-radius: var(--jb-select-mobile-item-list-border-radius, var(--jb-select-border-radius, 16px)); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper {\n display: flex; } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper label {\n color: #fff;\n font-size: 1.5em;\n display: flex;\n align-items: center; } }\n .jb-select-web-component.--focused .label-wrapper .close-button {\n display: none; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper .close-button {\n display: flex;\n width: 48px;\n height: 48px;\n justify-content: center;\n align-items: center;\n color: #fff; }\n .jb-select-web-component.--focused .label-wrapper .close-button .close-btn-svg-bg {\n opacity: var(--jb-select-close-bg-opacity, 0.4);\n fill: var(--jb-select-close-bg-color, #1f1735); }\n .jb-select-web-component.--focused .label-wrapper .close-button .close-btn-svg-path {\n fill: var(--jb-select-close-x-color, #fff); } }\n .jb-select-web-component.--has-value .select-box {\n border-color: var(--jb-select-border-color-selected, #c3ff14);\n background-color: var(--jb-select-bgcolor-selected, #f7f6f6); }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--has-value .select-box:focus-within {\n background-color: var(--jb-select-mobile-input-bgcolor, #f7f6f6); } }\n .jb-select-web-component .label-wrapper label {\n width: 100%;\n margin: 4px 0px;\n display: block;\n font-size: var(--jb-select-label-font-size, 0.8em);\n font-weight: var(--jb-select-label-font-weight, normal);\n color: var(--jb-select-label-color, #1f1735); }\n .jb-select-web-component .label-wrapper label.--hide {\n display: none; }\n .jb-select-web-component .label-wrapper .close-button {\n display: none; }\n .jb-select-web-component .select-box {\n width: 100%;\n box-sizing: border-box;\n height: var(--jb-select-height, 2.5rem);\n border: solid var(--jb-select-border-width, 1px) var(--jb-select-border-color, #f7f6f6);\n border-bottom: solid var(--p-border-bottom-width) var(--jb-select-border-color, #f7f6f6);\n border-radius: var(--jb-select-border-radius, 1rem);\n background-color: var(--jb-select-bgcolor, #f7f6f6);\n margin: var(--jb-select-select-box-margin, 4px 0px 0px 0px);\n overflow: hidden;\n display: flex;\n padding-inline-end: var(--jb-select-box-padding-end, 1rem);\n gap: 0.5rem;\n align-items: center; }\n .jb-select-web-component .select-box:focus-within {\n border-color: var(--jb-select-border-color, var(--p-p-color));\n border-bottom-color: var(--jb-select-border-color, var(--p-p-color));\n border-radius: var(--jb-select-border-radius, 1rem) var(--jb-select-border-radius, 1rem) 0 0; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component .select-box:focus-within {\n border-radius: var(--jb-select-mobile-search-border-radius, var(--jb-select-border-radius, 1rem)); } }\n .jb-select-web-component .select-box .start-section {\n height: 100%;\n width: auto;\n display: flex;\n justify-content: center;\n align-items: center; }\n .jb-select-web-component .select-box .middle-section {\n position: relative;\n width: 100%;\n height: 100%;\n flex: 1; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n overflow: hidden;\n z-index: 1; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper.--search-typed {\n opacity: 0; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper .selected-value {\n width: 100%;\n box-sizing: border-box;\n height: 100%;\n background-color: transparent;\n padding: 2px 12px 0 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-select-selected-value-font-size, 1.1em);\n color: var(--jb-select-selected-value-color, #1f1735);\n margin: 0;\n border-radius: 0;\n display: flex;\n align-items: center; }\n .jb-select-web-component .select-box .middle-section .front-box {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n overflow: hidden;\n z-index: 2; }\n .jb-select-web-component .select-box .middle-section .front-box input {\n border: none;\n width: 100%;\n box-sizing: border-box;\n height: 100%;\n background-color: transparent;\n padding: 2px 12px 0 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-select-value-font-size, 1.1rem);\n color: var(--jb-select-input-color, #1f1735);\n margin: 0;\n border-radius: 0; }\n .jb-select-web-component .select-box .middle-section .front-box input:focus {\n outline: none; }\n .jb-select-web-component .select-box .middle-section .front-box input::placeholder {\n color: var(--jb-select-placeholder-color, initial);\n font-size: var(--jb-select-placeholder-font-size, 1.1em); }\n .jb-select-web-component .select-box .end-section .arrow-icon {\n margin: var(--jb-select-arrow-icon-margin, 0 0 0 0); }\n .jb-select-web-component .select-box:focus-within .selected-value {\n opacity: 0.7;\n transition: all 0.3s ease; }\n .jb-select-web-component .middle-divider {\n display: none;\n position: relative;\n z-index: calc(var(--p-base-z-index) + 3);\n width: 100%;\n height: var(--p-middle-div-height);\n background-color: var(--jb-select-middle-div-color, var(--p-p-color));\n margin: var(--jb-select-middle-div-margin, calc(-1 * var(--p-border-bottom-width)) 0);\n border-radius: var(--jb-select-middle-div-radius, 0px); }\n .jb-select-web-component .message-box {\n font-size: var(--jb-select-message-font-size, 0.7em);\n font-weight: var(--jb-select-message-font-weight, normal);\n padding: 4px 8px;\n color: var(--jb-select-message-color, #929292); }\n .jb-select-web-component .message-box:empty {\n padding: 0; }\n .jb-select-web-component .message-box.--error {\n color: red; }\n .jb-select-web-component .select-list-wrapper {\n display: none;\n position: absolute;\n margin: calc(-1 * var(--p-border-bottom-width)) 0;\n height: auto;\n overflow: hidden;\n width: 100%;\n background-color: var(--jb-select-bgcolor, #f7f6f6);\n border-radius: 0 0 var(--jb-select-border-radius, 16px) var(--jb-select-border-radius, 16px);\n border: solid var(--jb-select-list-border-width, 1px) var(--jb-select-border-color, var(--p-p-color));\n border-top: none;\n border-bottom: solid var(--p-border-bottom-width) var(--jb-select-border-color, var(--p-p-color));\n box-shadow: var(--jb-select-list-box-shadow);\n box-sizing: border-box;\n z-index: calc(var(--p-base-z-index) + 2); }\n .jb-select-web-component .select-list-wrapper.--show {\n display: block; }\n .jb-select-web-component .select-list-wrapper .select-list {\n width: 100%;\n max-height: var(--jb-select-list-max-height, 400px);\n overflow-y: auto;\n padding: var(--jb-select-list-padding, 16px 0); }\n .jb-select-web-component .select-list-wrapper .select-list:empty {\n padding: 0; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component .select-list-wrapper .select-list {\n max-height: calc(100vh - 240px); } }\n .jb-select-web-component .select-list-wrapper .select-list .select-option {\n min-height: 36px;\n padding: 4px 16px;\n display: flex;\n align-items: center;\n font-size: 0.9em;\n color: var(--jb-select-option-color, inherit);\n background-color: var(--jb-select-option-background-color, transparent); }\n .jb-select-web-component .select-list-wrapper .select-list .select-option:hover {\n background-color: var(--jb-select-option-background-color-hover, #1073db);\n color: var(--jb-select-option-color-hover, #fff);\n cursor: pointer; }\n .jb-select-web-component .select-list-wrapper .select-list .select-option.--selected-option {\n font-weight: 900; }\n .jb-select-web-component .select-list-wrapper .select-list::-webkit-scrollbar {\n width: 9px;\n background-color: transparent; }\n .jb-select-web-component .select-list-wrapper .select-list::-webkit-scrollbar-thumb {\n background-color: var(--jb-select-list-scroll-color, #c3c3c3);\n border-radius: var(--jb-select-list-scroll-border-radius, 4px); }\n .jb-select-web-component .select-list-wrapper .empty-list-placeholder {\n display: none;\n text-align: center;\n color: #838383;\n font-style: italic;\n padding: 8px 0; }\n .jb-select-web-component .select-list-wrapper .empty-list-placeholder.--show {\n display: block; }\n";
|
|
37
|
+
var css_248z = ":host {\n --p-middle-div-height: var(--jb-select-middle-div-height, 0px);\n --p-p-color: #1e2832;\n --p-border-bottom-width: var(--jb-select-border-bottom-width, var(--jb-select-border-width, 3px));\n --p-base-z-index: 1;\n --p-mobile-modal-z-index: 900;\n --p-mobile-modal-height:var(--jb-select-mobile-modal-height, 100vh); }\n\n.jb-select-web-component {\n width: var(--jb-select-width, 100%);\n margin: var(--jb-select-margin, 0 0);\n position: relative;\n box-sizing: border-box; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused {\n position: fixed;\n bottom: 0;\n top: initial;\n left: 0;\n background-color: var(--jb-select-overlay-bgcolor, #0008);\n width: 100vw;\n height: var(--p-mobile-modal-height);\n border-radius: var(--jb-select-mobile-modal-border-radius, 0) var(--jb-select-mobile-modal-border-radius, 0) 0 0;\n margin: 0;\n padding: 16px 8px;\n z-index: var(--p-mobile-modal-z-index); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box {\n height: var(--jb-select-mobile-search-input-height, var(--jb-select-height, 40px));\n background-color: var(--jb-select-mobile-input-bgcolor, #f7f6f6);\n border-width: var(--jb-select-mobile-search-border-width, var(--jb-select-border-width, 1px));\n border-color: var(--jb-select-mobile-search-border-color, var(--jb-select-border-color, #f7f6f6));\n border-bottom-width: var(--jb-select-mobile-search-border-bottom-width, var(--p-border-bottom-width));\n border-bottom-color: var(--jb-select-mobile-search-border-bottom-color, var(--jb-select-border-bottom-color, var(--jb-select-border-color, #f7f6f6)));\n border-radius: var(--jb-select-mobile-search-border-radius, var(--jb-select-border-radius, 16px)); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box .front-box .arrow-icon {\n display: none; } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-box .selected-value-wrapper {\n opacity: 0;\n transition: none; } }\n .jb-select-web-component.--focused .middle-divider {\n display: block; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .middle-divider {\n margin: var(--jb-select-middle-div-mobile-margin, 16px 0 0 0); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .select-list-wrapper {\n position: initial;\n margin: var(--jb-select-mobile-item-list-margin, 16px 0);\n border-radius: var(--jb-select-mobile-item-list-border-radius, var(--jb-select-border-radius, 16px)); } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper {\n display: flex; } }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper label {\n color: #fff;\n font-size: 1.5em;\n display: flex;\n align-items: center; } }\n .jb-select-web-component.--focused .label-wrapper .close-button {\n display: none; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--focused .label-wrapper .close-button {\n display: flex;\n width: 48px;\n height: 48px;\n justify-content: center;\n align-items: center;\n color: #fff; }\n .jb-select-web-component.--focused .label-wrapper .close-button .close-btn-svg-bg {\n opacity: var(--jb-select-close-bg-opacity, 0.4);\n fill: var(--jb-select-close-bg-color, #1f1735); }\n .jb-select-web-component.--focused .label-wrapper .close-button .close-btn-svg-path {\n fill: var(--jb-select-close-x-color, #fff); } }\n .jb-select-web-component.--has-value .select-box {\n border-color: var(--jb-select-border-color-selected, #c3ff14);\n background-color: var(--jb-select-bgcolor-selected, #f7f6f6); }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component.--has-value .select-box:focus-within {\n background-color: var(--jb-select-mobile-input-bgcolor, #f7f6f6); } }\n .jb-select-web-component .label-wrapper label {\n width: 100%;\n margin: 4px 0px;\n display: block;\n font-size: var(--jb-select-label-font-size, 0.8em);\n font-weight: var(--jb-select-label-font-weight, normal);\n color: var(--jb-select-label-color, #1f1735); }\n .jb-select-web-component .label-wrapper label.--hide {\n display: none; }\n .jb-select-web-component .label-wrapper .close-button {\n display: none; }\n .jb-select-web-component .select-box {\n width: 100%;\n box-sizing: border-box;\n height: var(--jb-select-height, 2.5rem);\n border: solid var(--jb-select-border-width, 1px) var(--jb-select-border-color, #f7f6f6);\n border-bottom: solid var(--p-border-bottom-width) var(--jb-select-border-color, #f7f6f6);\n border-radius: var(--jb-select-border-radius, 1rem);\n background-color: var(--jb-select-bgcolor, #f7f6f6);\n margin: var(--jb-select-select-box-margin, 4px 0px 0px 0px);\n overflow: hidden;\n display: flex;\n padding-inline-end: var(--jb-select-box-padding-end, 1rem);\n gap: 0.5rem;\n align-items: center; }\n .jb-select-web-component .select-box:focus-within {\n border-color: var(--jb-select-border-color, var(--p-p-color));\n border-bottom-color: var(--jb-select-border-color, var(--p-p-color));\n border-radius: var(--jb-select-border-radius, 1rem) var(--jb-select-border-radius, 1rem) 0 0; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component .select-box:focus-within {\n border-radius: var(--jb-select-mobile-search-border-radius, var(--jb-select-border-radius, 1rem)); } }\n .jb-select-web-component .select-box .start-section {\n height: 100%;\n width: auto;\n display: flex;\n justify-content: center;\n align-items: center; }\n .jb-select-web-component .select-box .middle-section {\n position: relative;\n width: 100%;\n height: 100%;\n flex: 1; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n overflow: hidden;\n z-index: 1; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper.--search-typed {\n opacity: 0; }\n .jb-select-web-component .select-box .middle-section .selected-value-wrapper .selected-value {\n width: 100%;\n box-sizing: border-box;\n height: 100%;\n background-color: transparent;\n padding: 2px 12px 0 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-select-selected-value-font-size, 1.1em);\n color: var(--jb-select-selected-value-color, #1f1735);\n margin: 0;\n border-radius: 0;\n display: flex;\n align-items: center; }\n .jb-select-web-component .select-box .middle-section .front-box {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n overflow: hidden;\n z-index: 2; }\n .jb-select-web-component .select-box .middle-section .front-box input {\n border: none;\n width: 100%;\n box-sizing: border-box;\n height: 100%;\n background-color: transparent;\n padding: 2px 12px 0 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-select-value-font-size, 1.1rem);\n color: var(--jb-select-input-color, #1f1735);\n margin: 0;\n border-radius: 0; }\n .jb-select-web-component .select-box .middle-section .front-box input:focus {\n outline: none; }\n .jb-select-web-component .select-box .middle-section .front-box input::placeholder {\n color: var(--jb-select-placeholder-color, initial);\n font-size: var(--jb-select-placeholder-font-size, 1.1em); }\n .jb-select-web-component .select-box .end-section .arrow-icon {\n margin: var(--jb-select-arrow-icon-margin, 0 0 0 0); }\n .jb-select-web-component .select-box:focus-within .selected-value {\n opacity: 0.7;\n transition: all 0.3s ease; }\n .jb-select-web-component .middle-divider {\n display: none;\n position: relative;\n z-index: calc(var(--p-base-z-index) + 3);\n width: 100%;\n height: var(--p-middle-div-height);\n background-color: var(--jb-select-middle-div-color, var(--p-p-color));\n margin: var(--jb-select-middle-div-margin, calc(-1 * var(--p-border-bottom-width)) 0);\n border-radius: var(--jb-select-middle-div-radius, 0px); }\n .jb-select-web-component .message-box {\n font-size: var(--jb-select-message-font-size, 0.7em);\n font-weight: var(--jb-select-message-font-weight, normal);\n padding: 4px 8px;\n color: var(--jb-select-message-color, #929292); }\n .jb-select-web-component .message-box:empty {\n padding: 0; }\n .jb-select-web-component .message-box.--error {\n color: red; }\n .jb-select-web-component .select-list-wrapper {\n display: none;\n position: absolute;\n margin: calc(-1 * var(--p-border-bottom-width)) 0;\n height: auto;\n overflow: hidden;\n width: 100%;\n background-color: var(--jb-select-bgcolor, #f7f6f6);\n border-radius: 0 0 var(--jb-select-border-radius, 16px) var(--jb-select-border-radius, 16px);\n border: solid var(--jb-select-list-border-width, 1px) var(--jb-select-border-color, var(--p-p-color));\n border-top: none;\n border-bottom: solid var(--p-border-bottom-width) var(--jb-select-border-color, var(--p-p-color));\n box-shadow: var(--jb-select-list-box-shadow);\n box-sizing: border-box;\n z-index: calc(var(--p-base-z-index) + 2); }\n .jb-select-web-component .select-list-wrapper.--show {\n display: block; }\n .jb-select-web-component .select-list-wrapper .select-list {\n width: 100%;\n max-height: var(--jb-select-list-max-height, 400px);\n overflow-y: auto;\n padding: var(--jb-select-list-padding, 16px 0); }\n .jb-select-web-component .select-list-wrapper .select-list:empty {\n padding: 0; }\n @media (min-width: 320px) and (max-width: 767px) {\n .jb-select-web-component .select-list-wrapper .select-list {\n max-height: calc(var(--p-mobile-modal-height) - 240px); } }\n .jb-select-web-component .select-list-wrapper .select-list .select-option {\n min-height: 36px;\n padding: 4px 16px;\n display: flex;\n align-items: center;\n font-size: 0.9em;\n color: var(--jb-select-option-color, inherit);\n background-color: var(--jb-select-option-background-color, transparent); }\n .jb-select-web-component .select-list-wrapper .select-list .select-option:hover {\n background-color: var(--jb-select-option-background-color-hover, #1073db);\n color: var(--jb-select-option-color-hover, #fff);\n cursor: pointer; }\n .jb-select-web-component .select-list-wrapper .select-list .select-option.--selected-option {\n font-weight: 900; }\n .jb-select-web-component .select-list-wrapper .select-list::-webkit-scrollbar {\n width: 9px;\n background-color: transparent; }\n .jb-select-web-component .select-list-wrapper .select-list::-webkit-scrollbar-thumb {\n background-color: var(--jb-select-list-scroll-color, #c3c3c3);\n border-radius: var(--jb-select-list-scroll-border-radius, 4px); }\n .jb-select-web-component .select-list-wrapper .empty-list-placeholder {\n display: none;\n text-align: center;\n color: #838383;\n font-style: italic;\n padding: 8px 0; }\n .jb-select-web-component .select-list-wrapper .empty-list-placeholder.--show {\n display: block; }\n";
|
|
38
38
|
|
|
39
|
-
var _JBSelectWebComponent_instances, _JBSelectWebComponent_value, _JBSelectWebComponent_textValue,
|
|
39
|
+
var _JBSelectWebComponent_instances, _JBSelectWebComponent_value, _JBSelectWebComponent_textValue, _JBSelectWebComponent_notFoundedValue, _JBSelectWebComponent_optionList, _JBSelectWebComponent_displayOptionList, _JBSelectWebComponent_placeholder, _JBSelectWebComponent_searchPlaceholder, _JBSelectWebComponent_setValueFromOutside, _JBSelectWebComponent_setValue, _JBSelectWebComponent_dispatchInputEvent, _JBSelectWebComponent_createSelectedValueDom, _JBSelectWebComponent_getOptionValue, _JBSelectWebComponent_getOptionTitle;
|
|
40
40
|
class JBSelectWebComponent extends HTMLElement {
|
|
41
41
|
get value() {
|
|
42
42
|
if (__classPrivateFieldGet(this, _JBSelectWebComponent_value, "f")) {
|
|
43
|
-
return this.
|
|
43
|
+
return __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionValue).call(this, __classPrivateFieldGet(this, _JBSelectWebComponent_value, "f"));
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
46
|
return null;
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
}
|
|
60
60
|
get selectedOptionTitle() {
|
|
61
61
|
if (this.value) {
|
|
62
|
-
return this.
|
|
62
|
+
return __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionTitle).call(this, __classPrivateFieldGet(this, _JBSelectWebComponent_value, "f"));
|
|
63
63
|
}
|
|
64
64
|
else {
|
|
65
65
|
return "";
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
_JBSelectWebComponent_textValue.set(this, "");
|
|
119
119
|
// if user set value and current option list is not contain the option.
|
|
120
120
|
// we hold it in _notFindedValue and select value when option value get updated
|
|
121
|
-
|
|
121
|
+
_JBSelectWebComponent_notFoundedValue.set(this, null);
|
|
122
122
|
this.required = false;
|
|
123
123
|
this.callbacks = {
|
|
124
124
|
getOptionTitle: (option) => { return option; },
|
|
@@ -227,14 +227,14 @@
|
|
|
227
227
|
}
|
|
228
228
|
_setValueOnOptionListChanged() {
|
|
229
229
|
//when option list changed we see if current value is valid for new optionlist we set it if not we reset value to null.
|
|
230
|
-
//in some scenario value is setted before
|
|
231
|
-
if (__classPrivateFieldGet(this,
|
|
232
|
-
//if select has no prev value or pending not
|
|
230
|
+
//in some scenario value is setted before optionList attached so we store it on this.#notFoundedValue and after option list setted we set value from this.#notFoundedValue
|
|
231
|
+
if (__classPrivateFieldGet(this, _JBSelectWebComponent_notFoundedValue, "f")) {
|
|
232
|
+
//if select has no prev value or pending not found value we don't set it because user may input some search terms in input box and developer-user update list base on that value
|
|
233
233
|
//if we set it to null the search term and this.textvalue will become null and empty too and it make impossible for user to search in dynamic back-end provided searchable list so we put this condition to prevent it
|
|
234
|
-
const isSetted = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_setValueFromOutside).call(this, __classPrivateFieldGet(this,
|
|
234
|
+
const isSetted = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_setValueFromOutside).call(this, __classPrivateFieldGet(this, _JBSelectWebComponent_notFoundedValue, "f"));
|
|
235
235
|
if (isSetted) {
|
|
236
|
-
//after list update and when not founded value is found in new option list we clear old not
|
|
237
|
-
__classPrivateFieldSet(this,
|
|
236
|
+
//after list update and when not founded value is found in new option list we clear old not founded value
|
|
237
|
+
__classPrivateFieldSet(this, _JBSelectWebComponent_notFoundedValue, null, "f");
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
240
|
else if (this.value) {
|
|
@@ -360,7 +360,7 @@
|
|
|
360
360
|
}
|
|
361
361
|
createOptionDOM(item) {
|
|
362
362
|
let optionDOM = null;
|
|
363
|
-
const isSelected = this.
|
|
363
|
+
const isSelected = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionValue).call(this, this.value) == __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionValue).call(this, item);
|
|
364
364
|
if (typeof this.callbacks.getOptionDOM == 'function') {
|
|
365
365
|
optionDOM = this.callbacks.getOptionDOM(item, this.onOptionClicked.bind(this), isSelected);
|
|
366
366
|
}
|
|
@@ -377,7 +377,7 @@
|
|
|
377
377
|
optionElement.classList.add('--selected-option');
|
|
378
378
|
}
|
|
379
379
|
//it has defualt function who return wxact same input
|
|
380
|
-
optionElement.innerHTML = this.
|
|
380
|
+
optionElement.innerHTML = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionTitle).call(this, item);
|
|
381
381
|
optionElement.addEventListener('click', this.onOptionClicked.bind(this));
|
|
382
382
|
return optionElement;
|
|
383
383
|
}
|
|
@@ -394,7 +394,7 @@
|
|
|
394
394
|
filterOptionList(filterString) {
|
|
395
395
|
const displayOptionList = [];
|
|
396
396
|
this.optionList.filter((option) => {
|
|
397
|
-
const optionTitle = this.
|
|
397
|
+
const optionTitle = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionTitle).call(this, option);
|
|
398
398
|
const isString = typeof optionTitle == 'string';
|
|
399
399
|
if (isString && optionTitle.includes(filterString)) {
|
|
400
400
|
displayOptionList.push(option);
|
|
@@ -459,10 +459,10 @@
|
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
461
|
}
|
|
462
|
-
_JBSelectWebComponent_value = new WeakMap(), _JBSelectWebComponent_textValue = new WeakMap(),
|
|
462
|
+
_JBSelectWebComponent_value = new WeakMap(), _JBSelectWebComponent_textValue = new WeakMap(), _JBSelectWebComponent_notFoundedValue = new WeakMap(), _JBSelectWebComponent_optionList = new WeakMap(), _JBSelectWebComponent_displayOptionList = new WeakMap(), _JBSelectWebComponent_placeholder = new WeakMap(), _JBSelectWebComponent_searchPlaceholder = new WeakMap(), _JBSelectWebComponent_instances = new WeakSet(), _JBSelectWebComponent_setValueFromOutside = function _JBSelectWebComponent_setValueFromOutside(value) {
|
|
463
463
|
//when user set value by attribute or value prop directly we call this function
|
|
464
464
|
const matchedOption = this.optionList.find((option) => {
|
|
465
|
-
if (this.
|
|
465
|
+
if (__classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionValue).call(this, option) == value) {
|
|
466
466
|
return option;
|
|
467
467
|
}
|
|
468
468
|
});
|
|
@@ -471,11 +471,11 @@
|
|
|
471
471
|
return true;
|
|
472
472
|
}
|
|
473
473
|
else {
|
|
474
|
-
__classPrivateFieldSet(this,
|
|
474
|
+
__classPrivateFieldSet(this, _JBSelectWebComponent_notFoundedValue, value, "f");
|
|
475
475
|
return false;
|
|
476
476
|
}
|
|
477
477
|
}, _JBSelectWebComponent_setValue = function _JBSelectWebComponent_setValue(value) {
|
|
478
|
-
__classPrivateFieldSet(this,
|
|
478
|
+
__classPrivateFieldSet(this, _JBSelectWebComponent_notFoundedValue, null, "f");
|
|
479
479
|
__classPrivateFieldSet(this, _JBSelectWebComponent_value, value, "f");
|
|
480
480
|
if ((value == null || value == undefined)) {
|
|
481
481
|
this.textValue = '';
|
|
@@ -512,11 +512,32 @@
|
|
|
512
512
|
});
|
|
513
513
|
this.dispatchEvent(event);
|
|
514
514
|
}, _JBSelectWebComponent_createSelectedValueDom = function _JBSelectWebComponent_createSelectedValueDom(value) {
|
|
515
|
-
const valueText = this.
|
|
515
|
+
const valueText = __classPrivateFieldGet(this, _JBSelectWebComponent_instances, "m", _JBSelectWebComponent_getOptionTitle).call(this, value);
|
|
516
516
|
const selectedOptionDom = document.createElement('div');
|
|
517
517
|
selectedOptionDom.classList.add('selected-value');
|
|
518
518
|
selectedOptionDom.innerHTML = valueText;
|
|
519
519
|
return selectedOptionDom;
|
|
520
|
+
}, _JBSelectWebComponent_getOptionValue = function _JBSelectWebComponent_getOptionValue(option) {
|
|
521
|
+
if (typeof this.callbacks.getOptionValue !== "function") {
|
|
522
|
+
console.error("getOptionValue callback is not a function");
|
|
523
|
+
}
|
|
524
|
+
try {
|
|
525
|
+
return this.callbacks.getOptionValue(option);
|
|
526
|
+
}
|
|
527
|
+
catch (e) {
|
|
528
|
+
console.error(`Invalid getOptionValue callback Result, must be a function that returns the value of an option`, option);
|
|
529
|
+
}
|
|
530
|
+
}, _JBSelectWebComponent_getOptionTitle = function _JBSelectWebComponent_getOptionTitle(option) {
|
|
531
|
+
if (typeof this.callbacks.getOptionTitle !== "function") {
|
|
532
|
+
console.error("getOptionTitle callback is not a function");
|
|
533
|
+
}
|
|
534
|
+
try {
|
|
535
|
+
return this.callbacks.getOptionTitle(option);
|
|
536
|
+
}
|
|
537
|
+
catch (e) {
|
|
538
|
+
console.error(`Invalid getOptionTitle callback Result, must be a function that returns the value of an option`, option);
|
|
539
|
+
}
|
|
540
|
+
return "";
|
|
520
541
|
};
|
|
521
542
|
const myElementNotExists = !customElements.get('jb-select');
|
|
522
543
|
if (myElementNotExists) {
|
package/dist/JBSelect.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JBSelect.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../lib/JBSelect.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import HTML from './JBSelect.html';\r\nimport CSS from './JBSelect.scss';\r\nimport { JBSelectCallbacks, JBSelectElements, JBSelectOptionElement } from './Types';\r\nexport class JBSelectWebComponent extends HTMLElement {\r\n #value: any;\r\n #textValue = \"\";\r\n // if user set value and current option list is not contain the option. \r\n // we hold it in _notFindedValue and select value when option value get updated\r\n #notFindedValue: any = null;\r\n required = false;\r\n callbacks: JBSelectCallbacks = {\r\n getOptionTitle: (option) => { return option; },\r\n getOptionValue: (option) => { return option; },\r\n getOptionDOM: null,\r\n getSelectedValueDOM: null,\r\n };\r\n elements!: JBSelectElements;\r\n get value() {\r\n if (this.#value) {\r\n return this.callbacks.getOptionValue(this.#value);\r\n } else {\r\n return null;\r\n }\r\n }\r\n set value(value) {\r\n this.#setValueFromOutside(value);\r\n }\r\n get textValue() {\r\n return this.#textValue;\r\n\r\n }\r\n set textValue(value) {\r\n this.#textValue = value;\r\n this.elements.input.value = value;\r\n this.updateOptionList(value);\r\n }\r\n get selectedOptionTitle() {\r\n if (this.value) {\r\n return this.callbacks.getOptionTitle(this.#value);\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n #optionList:any[] = [];\r\n #displayOptionList:any[] = [];\r\n get optionList() {\r\n return this.#optionList || [];\r\n }\r\n set optionList(value) {\r\n if (!Array.isArray(value)) {\r\n console.error('your provided option list to jb-select is not a array. you must provide array value', { value });\r\n return;\r\n }\r\n this.#optionList = value;\r\n //every time optionList get updated we set our value base on current option list we use _notFindedValue in case of value provided to component before optionList\r\n this.displayOptionList = this.filterOptionList(this.textValue);\r\n this._setValueOnOptionListChanged();\r\n }\r\n #placeholder = \"\";\r\n get placeholder() {\r\n return this.#placeholder;\r\n }\r\n set placeholder(value:string) {\r\n this.#placeholder = value;\r\n if(this.value !== null && this.value!== undefined){\r\n this.elements.input.placeholder = \"\";\r\n }else{\r\n this.elements.input.placeholder = value;\r\n }\r\n }\r\n //on mobile device when search modla open this will appear on searchbox\r\n #searchPlaceholder = \"search\"\r\n get searchPlaceholder(){\r\n return this.#searchPlaceholder;\r\n }\r\n set searchPlaceholder(value){\r\n this.#searchPlaceholder = value;\r\n }\r\n get displayOptionList() {\r\n return this.#displayOptionList;\r\n }\r\n set displayOptionList(value:any[]){\r\n if(Array.isArray(value) && value.length == 0){\r\n this.elements.emptyListPlaceholder.classList.add('--show');\r\n }else if(Array.isArray(value)){\r\n this.elements.emptyListPlaceholder.classList.remove('--show');\r\n }\r\n this.#displayOptionList = value;\r\n this.updateOptionListDOM();\r\n }\r\n get isMobileDevice() { return /Mobi/i.test(window.navigator.userAgent); }\r\n get isOpen(){ return this.elements.componentWrapper.classList.contains('--focused');}\r\n\r\n constructor() {\r\n\r\n super();\r\n this.initWebComponent();\r\n this.initProp();\r\n\r\n }\r\n connectedCallback() {\r\n // standard web component event that called when all of dom is binded\r\n this.callOnLoadEvent();\r\n this.callOnInitEvent();\r\n }\r\n callOnInitEvent() {\r\n const event = new CustomEvent('init', { bubbles: true, composed: true });\r\n this.dispatchEvent(event);\r\n }\r\n callOnLoadEvent() {\r\n const event = new CustomEvent('load', { bubbles: true, composed: true });\r\n this.dispatchEvent(event);\r\n }\r\n initWebComponent() {\r\n const shadowRoot = this.attachShadow({\r\n mode: 'open'\r\n });\r\n const html = `<style>${CSS}</style>` + '\\n' + HTML;\r\n const element = document.createElement('template');\r\n element.innerHTML = html;\r\n shadowRoot.appendChild(element.content.cloneNode(true));\r\n this.elements = {\r\n input: shadowRoot.querySelector('.select-box input')!,\r\n componentWrapper: shadowRoot.querySelector('.jb-select-web-component')!,\r\n selectedValueWrapper: shadowRoot.querySelector('.selected-value-wrapper')!,\r\n messageBox: shadowRoot.querySelector('.message-box')!,\r\n optionList: shadowRoot.querySelector('.select-list')!,\r\n optionListWrapper: shadowRoot.querySelector('.select-list-wrapper')!,\r\n arrowIcon: shadowRoot.querySelector('.arrow-icon')!,\r\n label:{\r\n wrapper: shadowRoot.querySelector('label')!,\r\n text: shadowRoot.querySelector('label .label-value')!,\r\n },\r\n emptyListPlaceholder: shadowRoot.querySelector('.empty-list-placeholder')!,\r\n };\r\n this.registerEventListener();\r\n\r\n }\r\n registerEventListener() {\r\n this.elements.input.addEventListener('change', (e)=>{this.onInputChange(e);});\r\n this.elements.input.addEventListener('keypress', this.onInputKeyPress.bind(this));\r\n this.elements.input.addEventListener('keyup', this.onInputKeyup.bind(this));\r\n this.elements.input.addEventListener('beforeinput', this.onInputBeforeInput.bind(this));\r\n this.elements.input.addEventListener('input', (e)=>{this.onInputInput(e as unknown as InputEvent);});\r\n this.elements.input.addEventListener('focus', this.onInputFocus.bind(this));\r\n this.elements.input.addEventListener('blur', this.onInputBlur.bind(this));\r\n this.elements.arrowIcon.addEventListener('click', this.onArrowKeyClick.bind(this));\r\n }\r\n initProp() {\r\n this.textValue = '';\r\n this.value = this.getAttribute('value') || null;\r\n }\r\n static get observedAttributes() {\r\n return ['label', 'message', 'value', 'required', 'placeholder', 'search-placeholder'];\r\n }\r\n attributeChangedCallback(name, oldValue, newValue) {\r\n // do something when an attribute has changed\r\n this.onAttributeChange(name, newValue);\r\n }\r\n onAttributeChange(name:string, value:string) {\r\n switch (name) {\r\n case 'label':\r\n this.elements.label.text.innerHTML = value;\r\n if (value == null || value == undefined || value == \"\") {\r\n this.elements.label.wrapper.classList.add('--hide');\r\n } else {\r\n this.elements.label.wrapper.classList.remove('--hide');\r\n }\r\n break;\r\n case 'message':\r\n this.elements.messageBox.innerHTML = value;\r\n break;\r\n case 'value':\r\n this.#setValueFromOutside(value);\r\n break;\r\n case 'required':\r\n if (value === \"\" || value == \"true\" || value == \"True\") {\r\n this.required = true;\r\n } else {\r\n this.required = false;\r\n }\r\n break;\r\n case 'placeholder':\r\n this.placeholder = value;\r\n break;\r\n case 'search-placeholder':\r\n this.searchPlaceholder = value;\r\n break;\r\n }\r\n\r\n }\r\n _setValueOnOptionListChanged() {\r\n //when option list changed we see if current value is valid for new optionlist we set it if not we reset value to null.\r\n //in some scenario value is setted before otionList attached so we store it on this._notFindedValue and after option list setted we set value from this._notFindedValue\r\n if (this.#notFindedValue) {\r\n //if select has no prev value or pending not finded value we dont set it becuase user may input some search terms in input box and developer-user update list base on that value\r\n //if we set it to null the search term and this.textvalue will become null and empty too and it make impossible for user to search in dynamic back-end provided searchable list so we put this condition to prevent it\r\n const isSetted = this.#setValueFromOutside(this.#notFindedValue);\r\n if(isSetted){\r\n //after list update and when not founded value is found in new option list we clear old not finded value\r\n this.#notFindedValue = null;\r\n }\r\n }else if(this.value){\r\n this.#setValueFromOutside(this.value);\r\n }\r\n }\r\n #setValueFromOutside(value:any):boolean{\r\n //when user set value by attribute or value prop directly we call this function\r\n const matchedOption = this.optionList.find((option) => { // if we have value mapper we set selected value by object that match mapper\r\n if (this.callbacks.getOptionValue(option) == value) {\r\n return option;\r\n }\r\n });\r\n if (matchedOption || value == null) {\r\n this.#setValue(matchedOption);\r\n return true;\r\n } else {\r\n this.#notFindedValue = value;\r\n return false;\r\n }\r\n\r\n }\r\n #setValue(value:any) {\r\n this.#notFindedValue = null;\r\n this.#value = value;\r\n if ((value == null || value == undefined)) {\r\n this.textValue = '';\r\n this.setSelectedOptionDom(null);\r\n this.elements.componentWrapper.classList.remove('--has-value');\r\n //show placeholder when user empty data\r\n if(!(this.isMobileDevice && this.isOpen)){\r\n this.elements.input.placeholder = this.placeholder;\r\n }\r\n } else {\r\n this.textValue = '';\r\n this.setSelectedOptionDom(value);\r\n this.elements.componentWrapper.classList.add('--has-value');\r\n //hide placeholder when user select data\r\n if(!(this.isMobileDevice && this.isOpen)){\r\n this.elements.input.placeholder = \"\";\r\n }\r\n }\r\n //if user select an option we rest filter so user see all option again when open a select\r\n this.updateOptionList('');\r\n }\r\n onArrowKeyClick() {\r\n if (this.isOpen) {\r\n this.blur();\r\n } else {\r\n this.focus();\r\n }\r\n }\r\n onInputKeyPress() {\r\n //TODO: add event detail to keypress\r\n const event = new KeyboardEvent('keypress');\r\n this.dispatchEvent(event);\r\n }\r\n onInputBeforeInput(e:InputEvent) {\r\n const inputedText = e.data || '';\r\n }\r\n onInputInput(e:InputEvent) {\r\n const inputedText = (e.target as HTMLInputElement).value;\r\n this.textValue = inputedText;\r\n this.handleSelectedValueDisplay(inputedText);\r\n this.#dispatchInputEvent(e);\r\n }\r\n #dispatchInputEvent(e:InputEvent){\r\n const event = new InputEvent('input',{\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n data:e.data,\r\n dataTransfer:e.dataTransfer,\r\n detail:e.detail,\r\n inputType:e.inputType,\r\n isComposing:e.isComposing,\r\n targetRanges:e.getTargetRanges(),\r\n view:e.view,\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n onInputKeyup(e:KeyboardEvent) {\r\n const inputText = (e.target as HTMLInputElement).value;\r\n //here is the rare time we update #value directly becuase we want trigger event that may read value directly from dom\r\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\r\n //becuase on keyprees dont recieve backspace key press\r\n this.handleSelectedValueDisplay(inputText);\r\n }\r\n\r\n this.triggerOnInputKeyup(e);\r\n\r\n }\r\n handleSelectedValueDisplay(inputValue:string) {\r\n if (inputValue !== \"\") {\r\n this.elements.selectedValueWrapper.classList.add('--search-typed');\r\n } else {\r\n this.elements.selectedValueWrapper.classList.remove('--search-typed');\r\n }\r\n }\r\n triggerOnInputKeyup(e:KeyboardEvent) {\r\n const event = new KeyboardEvent('keyup', {\r\n altKey: e.altKey,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n detail: e.detail,\r\n key: e.key,\r\n shiftKey: e.shiftKey,\r\n charCode: e.charCode,\r\n location: e.location,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n keyCode: e.keyCode,\r\n view: e.view\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n onInputChange(e: Event) {\r\n const inputText = (e.target as HTMLInputElement).value;\r\n //here is the rare time we update _text_value directly becuase we want trigger event that may read value directly from dom\r\n this.#textValue = inputText;\r\n }\r\n onInputFocus() {\r\n this.focus();\r\n }\r\n onInputBlur(e: FocusEvent) {\r\n const focusedElement = <Node>(e.relatedTarget);\r\n if (this.elements.optionListWrapper.contains(focusedElement) || this.elements.arrowIcon.contains(focusedElement)) {\r\n //user click on a menu item\r\n } else {\r\n this.blur();\r\n }\r\n }\r\n focus() {\r\n this.elements.input.focus();\r\n this.showOptionList();\r\n this.elements.componentWrapper.classList.add('--focused');\r\n if(this.isMobileDevice){\r\n this.elements.input.placeholder = this.#searchPlaceholder;\r\n }\r\n\r\n }\r\n blur() {\r\n this.elements.componentWrapper.classList.remove('--focused');\r\n this.textValue = \"\";\r\n this.handleSelectedValueDisplay('');\r\n this.hideOptionList();\r\n this.triggerInputValidation();\r\n if(this.isMobileDevice){\r\n if(this.value){\r\n this.elements.input.placeholder = \"\";\r\n }else{\r\n this.elements.input.placeholder = this.placeholder;\r\n }\r\n }\r\n this.elements.input.blur();\r\n }\r\n showOptionList() {\r\n this.elements.optionListWrapper.classList.add('--show');\r\n }\r\n hideOptionList() {\r\n this.elements.optionListWrapper.classList.remove('--show');\r\n }\r\n updateOptionList(filterText:string) {\r\n this.displayOptionList = this.filterOptionList(filterText);\r\n }\r\n updateOptionListDOM() {\r\n const optionDomList: HTMLElement[] = [];\r\n this.displayOptionList.forEach((item) => {\r\n const optionDOM = this.createOptionDOM(item);\r\n optionDomList.push(optionDOM);\r\n });\r\n this.elements.optionList.innerHTML = '';\r\n optionDomList.forEach(optionElement => { this.elements.optionList.appendChild(optionElement); });\r\n\r\n\r\n }\r\n createOptionDOM(item:any):JBSelectOptionElement{\r\n let optionDOM: JBSelectOptionElement | null = null;\r\n const isSelected = this.callbacks.getOptionValue(this.value) == this.callbacks.getOptionValue(item);\r\n if (typeof this.callbacks.getOptionDOM == 'function') {\r\n optionDOM = this.callbacks.getOptionDOM(item, this.onOptionClicked.bind(this),isSelected);\r\n } else {\r\n optionDOM = this._createOptionDom(item, isSelected);\r\n }\r\n optionDOM.value = item;\r\n return optionDOM;\r\n }\r\n\r\n _createOptionDom(item:any, isSelected:boolean):JBSelectOptionElement{\r\n const optionElement = document.createElement('div');\r\n optionElement.classList.add('select-option');\r\n if(isSelected){\r\n optionElement.classList.add('--selected-option'); \r\n }\r\n //it has defualt function who return wxact same input\r\n optionElement.innerHTML = this.callbacks.getOptionTitle(item);\r\n optionElement.addEventListener('click', this.onOptionClicked.bind(this));\r\n return optionElement;\r\n }\r\n onOptionClicked(e:MouseEvent) {\r\n const value = (e.currentTarget as JBSelectOptionElement).value;\r\n this.selectOption(value);\r\n this.blur();\r\n this._triggerOnChangeEvent();\r\n }\r\n selectOption(value:any) {\r\n this.#setValue(value);\r\n this.triggerInputValidation();\r\n }\r\n filterOptionList(filterString:string):any[] {\r\n const displayOptionList: any[] = [];\r\n this.optionList.filter((option) => {\r\n const optionTitle = this.callbacks.getOptionTitle(option);\r\n const isString = typeof optionTitle == 'string';\r\n if (isString && optionTitle.includes(filterString)) {\r\n displayOptionList.push(option);\r\n }\r\n if (!isString) {\r\n console.warn(\"the provided values for optionsList is not of type string.\", { option, title: optionTitle });\r\n }\r\n });\r\n return displayOptionList;\r\n }\r\n triggerInputValidation(showError = true) {\r\n // this method is public and used outside of component to check if field validity param are met\r\n let errorType = '';\r\n let requiredValid = true;\r\n if (this.required) {\r\n\r\n requiredValid = this.value != null;\r\n if (!requiredValid) {\r\n errorType = 'REQUIRED';\r\n }\r\n }\r\n const isAllValid = requiredValid; //& other validation if they added\r\n if (isAllValid) {\r\n this.clearValidationError();\r\n } else if (showError) {\r\n this.showValidationError(errorType);\r\n }\r\n return {\r\n isAllValid\r\n };\r\n }\r\n showValidationError(errorType) {\r\n if (errorType == 'REQUIRED') {\r\n const label = this.getAttribute('label') || \"\";\r\n this.elements.messageBox.innerHTML = `${label} حتما باید انتخاب شود`;\r\n this.elements.messageBox.classList.add('--error');\r\n }\r\n }\r\n clearValidationError() {\r\n this.elements.messageBox.innerHTML = this.getAttribute('message') || '';\r\n this.elements.messageBox.classList.remove('--error');\r\n\r\n }\r\n _triggerOnChangeEvent() {\r\n const event = new Event(\"change\");\r\n this.dispatchEvent(event);\r\n }\r\n setSelectedOptionDom(value:any) {\r\n //when user select option or value changed in any condition we set selected option DOM\r\n this.elements.selectedValueWrapper.innerHTML = '';\r\n //if value was null or undifined it remain empty\r\n if (value !== null && value !== undefined) {\r\n const selectedOptionDom = this.createSelectedValueDom(value);\r\n this.elements.selectedValueWrapper.appendChild(selectedOptionDom);\r\n }\r\n }\r\n private createSelectedValueDom(value:any) {\r\n if (typeof this.callbacks.getSelectedValueDOM == 'function') {\r\n return this.callbacks.getSelectedValueDOM(value);\r\n } else {\r\n return this.#createSelectedValueDom(value);\r\n }\r\n }\r\n #createSelectedValueDom(value:any) {\r\n const valueText = this.callbacks.getOptionTitle(value);\r\n const selectedOptionDom = document.createElement('div');\r\n selectedOptionDom.classList.add('selected-value');\r\n selectedOptionDom.innerHTML = valueText;\r\n return selectedOptionDom;\r\n }\r\n}\r\nconst myElementNotExists = !customElements.get('jb-select');\r\nif (myElementNotExists) {\r\n //prevent duplicate registering\r\n window.customElements.define('jb-select', JBSelectWebComponent);\r\n}\r\n"],"names":["CSS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JBSelect.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../lib/JBSelect.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import HTML from './JBSelect.html';\r\nimport CSS from './JBSelect.scss';\r\nimport { JBSelectCallbacks, JBSelectElements, JBSelectOptionElement } from './Types';\r\nexport class JBSelectWebComponent extends HTMLElement {\r\n #value: any;\r\n #textValue = \"\";\r\n // if user set value and current option list is not contain the option. \r\n // we hold it in _notFindedValue and select value when option value get updated\r\n #notFoundedValue: any = null;\r\n required = false;\r\n callbacks: JBSelectCallbacks = {\r\n getOptionTitle: (option) => { return option; },\r\n getOptionValue: (option) => { return option; },\r\n getOptionDOM: null,\r\n getSelectedValueDOM: null,\r\n };\r\n elements!: JBSelectElements;\r\n get value() {\r\n if (this.#value) {\r\n return this.#getOptionValue(this.#value);\r\n } else {\r\n return null;\r\n }\r\n }\r\n set value(value) {\r\n this.#setValueFromOutside(value);\r\n }\r\n get textValue() {\r\n return this.#textValue;\r\n\r\n }\r\n set textValue(value) {\r\n this.#textValue = value;\r\n this.elements.input.value = value;\r\n this.updateOptionList(value);\r\n }\r\n get selectedOptionTitle() {\r\n if (this.value) {\r\n return this.#getOptionTitle(this.#value);\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n #optionList:any[] = [];\r\n #displayOptionList:any[] = [];\r\n get optionList() {\r\n return this.#optionList || [];\r\n }\r\n set optionList(value) {\r\n if (!Array.isArray(value)) {\r\n console.error('your provided option list to jb-select is not a array. you must provide array value', { value });\r\n return;\r\n }\r\n this.#optionList = value;\r\n //every time optionList get updated we set our value base on current option list we use _notFindedValue in case of value provided to component before optionList\r\n this.displayOptionList = this.filterOptionList(this.textValue);\r\n this._setValueOnOptionListChanged();\r\n }\r\n #placeholder = \"\";\r\n get placeholder() {\r\n return this.#placeholder;\r\n }\r\n set placeholder(value:string) {\r\n this.#placeholder = value;\r\n if(this.value !== null && this.value!== undefined){\r\n this.elements.input.placeholder = \"\";\r\n }else{\r\n this.elements.input.placeholder = value;\r\n }\r\n }\r\n //on mobile device when search modla open this will appear on searchbox\r\n #searchPlaceholder = \"search\"\r\n get searchPlaceholder(){\r\n return this.#searchPlaceholder;\r\n }\r\n set searchPlaceholder(value){\r\n this.#searchPlaceholder = value;\r\n }\r\n get displayOptionList() {\r\n return this.#displayOptionList;\r\n }\r\n set displayOptionList(value:any[]){\r\n if(Array.isArray(value) && value.length == 0){\r\n this.elements.emptyListPlaceholder.classList.add('--show');\r\n }else if(Array.isArray(value)){\r\n this.elements.emptyListPlaceholder.classList.remove('--show');\r\n }\r\n this.#displayOptionList = value;\r\n this.updateOptionListDOM();\r\n }\r\n get isMobileDevice() { return /Mobi/i.test(window.navigator.userAgent); }\r\n get isOpen(){ return this.elements.componentWrapper.classList.contains('--focused');}\r\n\r\n constructor() {\r\n\r\n super();\r\n this.initWebComponent();\r\n this.initProp();\r\n\r\n }\r\n connectedCallback() {\r\n // standard web component event that called when all of dom is binded\r\n this.callOnLoadEvent();\r\n this.callOnInitEvent();\r\n }\r\n callOnInitEvent() {\r\n const event = new CustomEvent('init', { bubbles: true, composed: true });\r\n this.dispatchEvent(event);\r\n }\r\n callOnLoadEvent() {\r\n const event = new CustomEvent('load', { bubbles: true, composed: true });\r\n this.dispatchEvent(event);\r\n }\r\n initWebComponent() {\r\n const shadowRoot = this.attachShadow({\r\n mode: 'open'\r\n });\r\n const html = `<style>${CSS}</style>` + '\\n' + HTML;\r\n const element = document.createElement('template');\r\n element.innerHTML = html;\r\n shadowRoot.appendChild(element.content.cloneNode(true));\r\n this.elements = {\r\n input: shadowRoot.querySelector('.select-box input')!,\r\n componentWrapper: shadowRoot.querySelector('.jb-select-web-component')!,\r\n selectedValueWrapper: shadowRoot.querySelector('.selected-value-wrapper')!,\r\n messageBox: shadowRoot.querySelector('.message-box')!,\r\n optionList: shadowRoot.querySelector('.select-list')!,\r\n optionListWrapper: shadowRoot.querySelector('.select-list-wrapper')!,\r\n arrowIcon: shadowRoot.querySelector('.arrow-icon')!,\r\n label:{\r\n wrapper: shadowRoot.querySelector('label')!,\r\n text: shadowRoot.querySelector('label .label-value')!,\r\n },\r\n emptyListPlaceholder: shadowRoot.querySelector('.empty-list-placeholder')!,\r\n };\r\n this.registerEventListener();\r\n\r\n }\r\n registerEventListener() {\r\n this.elements.input.addEventListener('change', (e)=>{this.onInputChange(e);});\r\n this.elements.input.addEventListener('keypress', this.onInputKeyPress.bind(this));\r\n this.elements.input.addEventListener('keyup', this.onInputKeyup.bind(this));\r\n this.elements.input.addEventListener('beforeinput', this.onInputBeforeInput.bind(this));\r\n this.elements.input.addEventListener('input', (e)=>{this.onInputInput(e as unknown as InputEvent);});\r\n this.elements.input.addEventListener('focus', this.onInputFocus.bind(this));\r\n this.elements.input.addEventListener('blur', this.onInputBlur.bind(this));\r\n this.elements.arrowIcon.addEventListener('click', this.onArrowKeyClick.bind(this));\r\n }\r\n initProp() {\r\n this.textValue = '';\r\n this.value = this.getAttribute('value') || null;\r\n }\r\n static get observedAttributes() {\r\n return ['label', 'message', 'value', 'required', 'placeholder', 'search-placeholder'];\r\n }\r\n attributeChangedCallback(name, oldValue, newValue) {\r\n // do something when an attribute has changed\r\n this.onAttributeChange(name, newValue);\r\n }\r\n onAttributeChange(name:string, value:string) {\r\n switch (name) {\r\n case 'label':\r\n this.elements.label.text.innerHTML = value;\r\n if (value == null || value == undefined || value == \"\") {\r\n this.elements.label.wrapper.classList.add('--hide');\r\n } else {\r\n this.elements.label.wrapper.classList.remove('--hide');\r\n }\r\n break;\r\n case 'message':\r\n this.elements.messageBox.innerHTML = value;\r\n break;\r\n case 'value':\r\n this.#setValueFromOutside(value);\r\n break;\r\n case 'required':\r\n if (value === \"\" || value == \"true\" || value == \"True\") {\r\n this.required = true;\r\n } else {\r\n this.required = false;\r\n }\r\n break;\r\n case 'placeholder':\r\n this.placeholder = value;\r\n break;\r\n case 'search-placeholder':\r\n this.searchPlaceholder = value;\r\n break;\r\n }\r\n\r\n }\r\n _setValueOnOptionListChanged() {\r\n //when option list changed we see if current value is valid for new optionlist we set it if not we reset value to null.\r\n //in some scenario value is setted before optionList attached so we store it on this.#notFoundedValue and after option list setted we set value from this.#notFoundedValue\r\n if (this.#notFoundedValue) {\r\n //if select has no prev value or pending not found value we don't set it because user may input some search terms in input box and developer-user update list base on that value\r\n //if we set it to null the search term and this.textvalue will become null and empty too and it make impossible for user to search in dynamic back-end provided searchable list so we put this condition to prevent it\r\n const isSetted = this.#setValueFromOutside(this.#notFoundedValue);\r\n if(isSetted){\r\n //after list update and when not founded value is found in new option list we clear old not founded value\r\n this.#notFoundedValue = null;\r\n }\r\n }else if(this.value){\r\n this.#setValueFromOutside(this.value);\r\n }\r\n }\r\n #setValueFromOutside(value:any):boolean{\r\n //when user set value by attribute or value prop directly we call this function\r\n const matchedOption = this.optionList.find((option) => { // if we have value mapper we set selected value by object that match mapper\r\n if (this.#getOptionValue(option) == value) {\r\n return option;\r\n }\r\n });\r\n if (matchedOption || value == null) {\r\n this.#setValue(matchedOption);\r\n return true;\r\n } else {\r\n this.#notFoundedValue = value;\r\n return false;\r\n }\r\n\r\n }\r\n #setValue(value:any) {\r\n this.#notFoundedValue = null;\r\n this.#value = value;\r\n if ((value == null || value == undefined)) {\r\n this.textValue = '';\r\n this.setSelectedOptionDom(null);\r\n this.elements.componentWrapper.classList.remove('--has-value');\r\n //show placeholder when user empty data\r\n if(!(this.isMobileDevice && this.isOpen)){\r\n this.elements.input.placeholder = this.placeholder;\r\n }\r\n } else {\r\n this.textValue = '';\r\n this.setSelectedOptionDom(value);\r\n this.elements.componentWrapper.classList.add('--has-value');\r\n //hide placeholder when user select data\r\n if(!(this.isMobileDevice && this.isOpen)){\r\n this.elements.input.placeholder = \"\";\r\n }\r\n }\r\n //if user select an option we rest filter so user see all option again when open a select\r\n this.updateOptionList('');\r\n }\r\n onArrowKeyClick() {\r\n if (this.isOpen) {\r\n this.blur();\r\n } else {\r\n this.focus();\r\n }\r\n }\r\n onInputKeyPress() {\r\n //TODO: add event detail to keypress\r\n const event = new KeyboardEvent('keypress');\r\n this.dispatchEvent(event);\r\n }\r\n onInputBeforeInput(e:InputEvent) {\r\n const inputedText = e.data || '';\r\n }\r\n onInputInput(e:InputEvent) {\r\n const inputedText = (e.target as HTMLInputElement).value;\r\n this.textValue = inputedText;\r\n this.handleSelectedValueDisplay(inputedText);\r\n this.#dispatchInputEvent(e);\r\n }\r\n #dispatchInputEvent(e:InputEvent){\r\n const event = new InputEvent('input',{\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n data:e.data,\r\n dataTransfer:e.dataTransfer,\r\n detail:e.detail,\r\n inputType:e.inputType,\r\n isComposing:e.isComposing,\r\n targetRanges:e.getTargetRanges(),\r\n view:e.view,\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n onInputKeyup(e:KeyboardEvent) {\r\n const inputText = (e.target as HTMLInputElement).value;\r\n //here is the rare time we update #value directly becuase we want trigger event that may read value directly from dom\r\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\r\n //becuase on keyprees dont recieve backspace key press\r\n this.handleSelectedValueDisplay(inputText);\r\n }\r\n\r\n this.triggerOnInputKeyup(e);\r\n\r\n }\r\n handleSelectedValueDisplay(inputValue:string) {\r\n if (inputValue !== \"\") {\r\n this.elements.selectedValueWrapper.classList.add('--search-typed');\r\n } else {\r\n this.elements.selectedValueWrapper.classList.remove('--search-typed');\r\n }\r\n }\r\n triggerOnInputKeyup(e:KeyboardEvent) {\r\n const event = new KeyboardEvent('keyup', {\r\n altKey: e.altKey,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n detail: e.detail,\r\n key: e.key,\r\n shiftKey: e.shiftKey,\r\n charCode: e.charCode,\r\n location: e.location,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n keyCode: e.keyCode,\r\n view: e.view\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n onInputChange(e: Event) {\r\n const inputText = (e.target as HTMLInputElement).value;\r\n //here is the rare time we update _text_value directly becuase we want trigger event that may read value directly from dom\r\n this.#textValue = inputText;\r\n }\r\n onInputFocus() {\r\n this.focus();\r\n }\r\n onInputBlur(e: FocusEvent) {\r\n const focusedElement = <Node>(e.relatedTarget);\r\n if (this.elements.optionListWrapper.contains(focusedElement) || this.elements.arrowIcon.contains(focusedElement)) {\r\n //user click on a menu item\r\n } else {\r\n this.blur();\r\n }\r\n }\r\n focus() {\r\n this.elements.input.focus();\r\n this.showOptionList();\r\n this.elements.componentWrapper.classList.add('--focused');\r\n if(this.isMobileDevice){\r\n this.elements.input.placeholder = this.#searchPlaceholder;\r\n }\r\n\r\n }\r\n blur() {\r\n this.elements.componentWrapper.classList.remove('--focused');\r\n this.textValue = \"\";\r\n this.handleSelectedValueDisplay('');\r\n this.hideOptionList();\r\n this.triggerInputValidation();\r\n if(this.isMobileDevice){\r\n if(this.value){\r\n this.elements.input.placeholder = \"\";\r\n }else{\r\n this.elements.input.placeholder = this.placeholder;\r\n }\r\n }\r\n this.elements.input.blur();\r\n }\r\n showOptionList() {\r\n this.elements.optionListWrapper.classList.add('--show');\r\n }\r\n hideOptionList() {\r\n this.elements.optionListWrapper.classList.remove('--show');\r\n }\r\n updateOptionList(filterText:string) {\r\n this.displayOptionList = this.filterOptionList(filterText);\r\n }\r\n updateOptionListDOM() {\r\n const optionDomList: HTMLElement[] = [];\r\n this.displayOptionList.forEach((item) => {\r\n const optionDOM = this.createOptionDOM(item);\r\n optionDomList.push(optionDOM);\r\n });\r\n this.elements.optionList.innerHTML = '';\r\n optionDomList.forEach(optionElement => { this.elements.optionList.appendChild(optionElement); });\r\n\r\n\r\n }\r\n createOptionDOM(item:any):JBSelectOptionElement{\r\n let optionDOM: JBSelectOptionElement | null = null;\r\n const isSelected = this.#getOptionValue(this.value) == this.#getOptionValue(item);\r\n if (typeof this.callbacks.getOptionDOM == 'function') {\r\n optionDOM = this.callbacks.getOptionDOM(item, this.onOptionClicked.bind(this),isSelected);\r\n } else {\r\n optionDOM = this._createOptionDom(item, isSelected);\r\n }\r\n optionDOM.value = item;\r\n return optionDOM;\r\n }\r\n\r\n _createOptionDom(item:any, isSelected:boolean):JBSelectOptionElement{\r\n const optionElement = document.createElement('div');\r\n optionElement.classList.add('select-option');\r\n if(isSelected){\r\n optionElement.classList.add('--selected-option'); \r\n }\r\n //it has defualt function who return wxact same input\r\n optionElement.innerHTML = this.#getOptionTitle(item);\r\n optionElement.addEventListener('click', this.onOptionClicked.bind(this));\r\n return optionElement;\r\n }\r\n onOptionClicked(e:MouseEvent) {\r\n const value = (e.currentTarget as JBSelectOptionElement).value;\r\n this.selectOption(value);\r\n this.blur();\r\n this._triggerOnChangeEvent();\r\n }\r\n selectOption(value:any) {\r\n this.#setValue(value);\r\n this.triggerInputValidation();\r\n }\r\n filterOptionList(filterString:string):any[] {\r\n const displayOptionList: any[] = [];\r\n this.optionList.filter((option) => {\r\n const optionTitle = this.#getOptionTitle(option);\r\n const isString = typeof optionTitle == 'string';\r\n if (isString && optionTitle.includes(filterString)) {\r\n displayOptionList.push(option);\r\n }\r\n if (!isString) {\r\n console.warn(\"the provided values for optionsList is not of type string.\", { option, title: optionTitle });\r\n }\r\n });\r\n return displayOptionList;\r\n }\r\n triggerInputValidation(showError = true) {\r\n // this method is public and used outside of component to check if field validity param are met\r\n let errorType = '';\r\n let requiredValid = true;\r\n if (this.required) {\r\n\r\n requiredValid = this.value != null;\r\n if (!requiredValid) {\r\n errorType = 'REQUIRED';\r\n }\r\n }\r\n const isAllValid = requiredValid; //& other validation if they added\r\n if (isAllValid) {\r\n this.clearValidationError();\r\n } else if (showError) {\r\n this.showValidationError(errorType);\r\n }\r\n return {\r\n isAllValid\r\n };\r\n }\r\n showValidationError(errorType) {\r\n if (errorType == 'REQUIRED') {\r\n const label = this.getAttribute('label') || \"\";\r\n this.elements.messageBox.innerHTML = `${label} حتما باید انتخاب شود`;\r\n this.elements.messageBox.classList.add('--error');\r\n }\r\n }\r\n clearValidationError() {\r\n this.elements.messageBox.innerHTML = this.getAttribute('message') || '';\r\n this.elements.messageBox.classList.remove('--error');\r\n\r\n }\r\n _triggerOnChangeEvent() {\r\n const event = new Event(\"change\");\r\n this.dispatchEvent(event);\r\n }\r\n setSelectedOptionDom(value:any) {\r\n //when user select option or value changed in any condition we set selected option DOM\r\n this.elements.selectedValueWrapper.innerHTML = '';\r\n //if value was null or undifined it remain empty\r\n if (value !== null && value !== undefined) {\r\n const selectedOptionDom = this.createSelectedValueDom(value);\r\n this.elements.selectedValueWrapper.appendChild(selectedOptionDom);\r\n }\r\n }\r\n private createSelectedValueDom(value:any) {\r\n if (typeof this.callbacks.getSelectedValueDOM == 'function') {\r\n return this.callbacks.getSelectedValueDOM(value);\r\n } else {\r\n return this.#createSelectedValueDom(value);\r\n }\r\n }\r\n #createSelectedValueDom(value:any) {\r\n const valueText = this.#getOptionTitle(value);\r\n const selectedOptionDom = document.createElement('div');\r\n selectedOptionDom.classList.add('selected-value');\r\n selectedOptionDom.innerHTML = valueText;\r\n return selectedOptionDom;\r\n }\r\n #getOptionValue(option:any){\r\n if(typeof this.callbacks.getOptionValue !== \"function\"){\r\n console.error(\"getOptionValue callback is not a function\");\r\n }\r\n try{\r\n return this.callbacks.getOptionValue(option);\r\n }catch(e){\r\n console.error(`Invalid getOptionValue callback Result, must be a function that returns the value of an option`,option);\r\n }\r\n }\r\n #getOptionTitle(option:any):string{\r\n if(typeof this.callbacks.getOptionTitle !== \"function\"){\r\n console.error(\"getOptionTitle callback is not a function\");\r\n }\r\n try{\r\n return this.callbacks.getOptionTitle(option);\r\n }catch(e){\r\n console.error(`Invalid getOptionTitle callback Result, must be a function that returns the value of an option`,option);\r\n }\r\n return \"\";\r\n }\r\n}\r\nconst myElementNotExists = !customElements.get('jb-select');\r\nif (myElementNotExists) {\r\n //prevent duplicate registering\r\n window.customElements.define('jb-select', JBSelectWebComponent);\r\n}\r\n"],"names":["CSS"],"mappings":";;;;;;IAAA;IACA;AACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AAsQA;IACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;IACjE,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;IACvL,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClG,CAAC;AACD;IACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;IACxE,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IAC5E,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;IACtL,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAC9G;;;;;;;IC5RM,MAAO,oBAAqB,SAAQ,WAAW,CAAA;IAcjD,IAAA,IAAI,KAAK,GAAA;YACL,IAAI,sBAAA,CAAA,IAAI,EAAA,2BAAA,EAAA,GAAA,CAAO,EAAE;gBACb,OAAO,sBAAA,CAAA,IAAI,EAAA,+BAAA,EAAA,GAAA,EAAA,oCAAA,CAAgB,CAApB,IAAA,CAAA,IAAI,EAAiB,sBAAA,CAAA,IAAI,EAAO,2BAAA,EAAA,GAAA,CAAA,CAAC,CAAC;IAC5C,SAAA;IAAM,aAAA;IACH,YAAA,OAAO,IAAI,CAAC;IACf,SAAA;SACJ;QACD,IAAI,KAAK,CAAC,KAAK,EAAA;IACX,QAAA,sBAAA,CAAA,IAAI,EAAqB,+BAAA,EAAA,GAAA,EAAA,yCAAA,CAAA,CAAA,IAAA,CAAzB,IAAI,EAAsB,KAAK,CAAC,CAAC;SACpC;IACD,IAAA,IAAI,SAAS,GAAA;YACT,OAAO,sBAAA,CAAA,IAAI,EAAA,+BAAA,EAAA,GAAA,CAAW,CAAC;SAE1B;QACD,IAAI,SAAS,CAAC,KAAK,EAAA;IACf,QAAA,sBAAA,CAAA,IAAI,EAAA,+BAAA,EAAc,KAAK,EAAA,GAAA,CAAA,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAClC,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SAChC;IACD,IAAA,IAAI,mBAAmB,GAAA;YACnB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,OAAO,sBAAA,CAAA,IAAI,EAAA,+BAAA,EAAA,GAAA,EAAA,oCAAA,CAAgB,CAApB,IAAA,CAAA,IAAI,EAAiB,sBAAA,CAAA,IAAI,EAAO,2BAAA,EAAA,GAAA,CAAA,CAAC,CAAC;IAC5C,SAAA;IAAM,aAAA;IACH,YAAA,OAAO,EAAE,CAAC;IACb,SAAA;SACJ;IAGD,IAAA,IAAI,UAAU,GAAA;IACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAY,gCAAA,EAAA,GAAA,CAAA,IAAI,EAAE,CAAC;SACjC;QACD,IAAI,UAAU,CAAC,KAAK,EAAA;IAChB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACvB,OAAO,CAAC,KAAK,CAAC,qFAAqF,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChH,OAAO;IACV,SAAA;IACD,QAAA,sBAAA,CAAA,IAAI,EAAA,gCAAA,EAAe,KAAK,EAAA,GAAA,CAAA,CAAC;;YAEzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/D,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACvC;IAED,IAAA,IAAI,WAAW,GAAA;YACX,OAAO,sBAAA,CAAA,IAAI,EAAA,iCAAA,EAAA,GAAA,CAAa,CAAC;SAC5B;QACD,IAAI,WAAW,CAAC,KAAY,EAAA;IACxB,QAAA,sBAAA,CAAA,IAAI,EAAA,iCAAA,EAAgB,KAAK,EAAA,GAAA,CAAA,CAAC;YAC1B,IAAG,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAI,SAAS,EAAC;gBAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IACxC,SAAA;IAAI,aAAA;gBACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3C,SAAA;SACJ;IAGD,IAAA,IAAI,iBAAiB,GAAA;YACjB,OAAO,sBAAA,CAAA,IAAI,EAAA,uCAAA,EAAA,GAAA,CAAmB,CAAC;SAClC;QACD,IAAI,iBAAiB,CAAC,KAAK,EAAA;IACvB,QAAA,sBAAA,CAAA,IAAI,EAAA,uCAAA,EAAsB,KAAK,EAAA,GAAA,CAAA,CAAC;SACnC;IACD,IAAA,IAAI,iBAAiB,GAAA;YACjB,OAAO,sBAAA,CAAA,IAAI,EAAA,uCAAA,EAAA,GAAA,CAAmB,CAAC;SAClC;QACD,IAAI,iBAAiB,CAAC,KAAW,EAAA;IAC7B,QAAA,IAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9D,SAAA;IAAK,aAAA,IAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC;gBAC1B,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjE,SAAA;IACD,QAAA,sBAAA,CAAA,IAAI,EAAA,uCAAA,EAAsB,KAAK,EAAA,GAAA,CAAA,CAAC;YAChC,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;IACD,IAAA,IAAI,cAAc,GAAA,EAAK,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE;IACzE,IAAA,IAAI,MAAM,GAAI,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAC;IAErF,IAAA,WAAA,GAAA;IAEI,QAAA,KAAK,EAAE,CAAC;;YA3FZ,2BAAY,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IACZ,QAAA,+BAAA,CAAA,GAAA,CAAA,IAAA,EAAa,EAAE,CAAC,CAAA;;;IAGhB,QAAA,qCAAA,CAAA,GAAA,CAAA,IAAA,EAAwB,IAAI,CAAC,CAAA;YAC7B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;IACjB,QAAA,IAAA,CAAA,SAAS,GAAsB;gBAC3B,cAAc,EAAE,CAAC,MAAM,OAAO,OAAO,MAAM,CAAC,EAAE;gBAC9C,cAAc,EAAE,CAAC,MAAM,OAAO,OAAO,MAAM,CAAC,EAAE;IAC9C,YAAA,YAAY,EAAE,IAAI;IAClB,YAAA,mBAAmB,EAAE,IAAI;aAC5B,CAAC;IA4BF,QAAA,gCAAA,CAAA,GAAA,CAAA,IAAA,EAAoB,EAAE,CAAC,CAAA;IACvB,QAAA,uCAAA,CAAA,GAAA,CAAA,IAAA,EAA2B,EAAE,CAAC,CAAA;IAc9B,QAAA,iCAAA,CAAA,GAAA,CAAA,IAAA,EAAe,EAAE,CAAC,CAAA;;IAalB,QAAA,uCAAA,CAAA,GAAA,CAAA,IAAA,EAAqB,QAAQ,CAAA,CAAA;YAyBzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;SAEnB;QACD,iBAAiB,GAAA;;YAEb,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;QACD,eAAe,GAAA;IACX,QAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,eAAe,GAAA;IACX,QAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,gBAAgB,GAAA;IACZ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;IACjC,YAAA,IAAI,EAAE,MAAM;IACf,SAAA,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,CAAU,OAAA,EAAAA,QAAG,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;YACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACnD,QAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IACzB,QAAA,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,GAAG;IACZ,YAAA,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAE;IACrD,YAAA,gBAAgB,EAAE,UAAU,CAAC,aAAa,CAAC,0BAA0B,CAAE;IACvE,YAAA,oBAAoB,EAAE,UAAU,CAAC,aAAa,CAAC,yBAAyB,CAAE;IAC1E,YAAA,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,cAAc,CAAE;IACrD,YAAA,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,cAAc,CAAE;IACrD,YAAA,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAE;IACpE,YAAA,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa,CAAE;IACnD,YAAA,KAAK,EAAC;IACF,gBAAA,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC,OAAO,CAAE;IAC3C,gBAAA,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAE;IACxD,aAAA;IACD,YAAA,oBAAoB,EAAE,UAAU,CAAC,aAAa,CAAC,yBAAyB,CAAE;aAC7E,CAAC;YACF,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAEhC;QACD,qBAAqB,GAAA;YACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI,EAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IAC9E,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI,EAAA,IAAI,CAAC,YAAY,CAAC,CAA0B,CAAC,CAAC,EAAC,CAAC,CAAC;IACrG,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACtF;QACD,QAAQ,GAAA;IACJ,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;SACnD;IACD,IAAA,WAAW,kBAAkB,GAAA;IACzB,QAAA,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;SACzF;IACD,IAAA,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAA;;IAE7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC1C;QACD,iBAAiB,CAAC,IAAW,EAAE,KAAY,EAAA;IACvC,QAAA,QAAQ,IAAI;IACR,YAAA,KAAK,OAAO;oBACR,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC3C,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,EAAE,EAAE;IACpD,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvD,iBAAA;IAAM,qBAAA;IACH,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1D,iBAAA;oBACD,MAAM;IACV,YAAA,KAAK,SAAS;oBACV,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC3C,MAAM;IACV,YAAA,KAAK,OAAO;IACR,gBAAA,sBAAA,CAAA,IAAI,EAAqB,+BAAA,EAAA,GAAA,EAAA,yCAAA,CAAA,CAAA,IAAA,CAAzB,IAAI,EAAsB,KAAK,CAAC,CAAC;oBACjC,MAAM;IACV,YAAA,KAAK,UAAU;oBACX,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,EAAE;IACpD,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,iBAAA;IAAM,qBAAA;IACH,oBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACzB,iBAAA;oBACD,MAAM;IACV,YAAA,KAAK,aAAa;IACd,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,MAAM;IACV,YAAA,KAAK,oBAAoB;IACrB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;oBAC/B,MAAM;IACb,SAAA;SAEJ;QACD,4BAA4B,GAAA;;;YAGxB,IAAI,sBAAA,CAAA,IAAI,EAAA,qCAAA,EAAA,GAAA,CAAiB,EAAE;;;IAGvB,YAAA,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,EAAqB,+BAAA,EAAA,GAAA,EAAA,yCAAA,CAAA,CAAA,IAAA,CAAzB,IAAI,EAAsB,sBAAA,CAAA,IAAI,EAAiB,qCAAA,EAAA,GAAA,CAAA,CAAC,CAAC;IAClE,YAAA,IAAG,QAAQ,EAAC;;IAER,gBAAA,sBAAA,CAAA,IAAI,EAAA,qCAAA,EAAoB,IAAI,EAAA,GAAA,CAAA,CAAC;IAChC,aAAA;IACJ,SAAA;iBAAK,IAAG,IAAI,CAAC,KAAK,EAAC;gBAChB,sBAAA,CAAA,IAAI,kFAAqB,CAAzB,IAAA,CAAA,IAAI,EAAsB,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,SAAA;SACJ;QAwCD,eAAe,GAAA;YACX,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,IAAI,EAAE,CAAC;IACf,SAAA;IAAM,aAAA;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC;IAChB,SAAA;SACJ;QACD,eAAe,GAAA;;IAEX,QAAA,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC7B;IACD,IAAA,kBAAkB,CAAC,CAAY,EAAA;IAC3B,QAAoB,CAAC,CAAC,IAAI,IAAI,GAAG;SACpC;IACD,IAAA,YAAY,CAAC,CAAY,EAAA;IACrB,QAAA,MAAM,WAAW,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;IACzD,QAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;IAC7B,QAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAC7C,QAAA,sBAAA,CAAA,IAAI,EAAoB,+BAAA,EAAA,GAAA,EAAA,wCAAA,CAAA,CAAA,IAAA,CAAxB,IAAI,EAAqB,CAAC,CAAC,CAAC;SAC/B;IAgBD,IAAA,YAAY,CAAC,CAAe,EAAA;IACxB,QAAA,MAAM,SAAS,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;;YAEvD,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;;IAE7C,YAAA,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC9C,SAAA;IAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;SAE/B;IACD,IAAA,0BAA0B,CAAC,UAAiB,EAAA;YACxC,IAAI,UAAU,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtE,SAAA;IAAM,aAAA;gBACH,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzE,SAAA;SACJ;IACD,IAAA,mBAAmB,CAAC,CAAe,EAAA;IAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE;gBACrC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;IACf,SAAA,CAAC,CAAC;IACH,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC7B;IACD,IAAA,aAAa,CAAC,CAAQ,EAAA;IAClB,QAAA,MAAM,SAAS,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;;IAEvD,QAAA,sBAAA,CAAA,IAAI,EAAA,+BAAA,EAAc,SAAS,EAAA,GAAA,CAAA,CAAC;SAC/B;QACD,YAAY,GAAA;YACR,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;IACD,IAAA,WAAW,CAAC,CAAa,EAAA;IACrB,QAAA,MAAM,cAAc,IAAU,CAAC,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAEjH;IAAM,aAAA;gBACH,IAAI,CAAC,IAAI,EAAE,CAAC;IACf,SAAA;SACJ;QACD,KAAK,GAAA;IACD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAG,IAAI,CAAC,cAAc,EAAC;gBACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,sBAAA,CAAA,IAAI,EAAA,uCAAA,EAAA,GAAA,CAAmB,CAAC;IAC7D,SAAA;SAEJ;QACD,IAAI,GAAA;YACA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7D,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACpB,QAAA,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAG,IAAI,CAAC,cAAc,EAAC;gBACnB,IAAG,IAAI,CAAC,KAAK,EAAC;oBACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IACxC,aAAA;IAAI,iBAAA;oBACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACtD,aAAA;IACJ,SAAA;IACD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC9B;QACD,cAAc,GAAA;YACV,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC3D;QACD,cAAc,GAAA;YACV,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC9D;IACD,IAAA,gBAAgB,CAAC,UAAiB,EAAA;YAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;SAC9D;QACD,mBAAmB,GAAA;YACf,MAAM,aAAa,GAAkB,EAAE,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7C,YAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,SAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC;YACxC,aAAa,CAAC,OAAO,CAAC,aAAa,IAAG,EAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;SAGpG;IACD,IAAA,eAAe,CAAC,IAAQ,EAAA;YACpB,IAAI,SAAS,GAAiC,IAAI,CAAC;YACnD,MAAM,UAAU,GAAG,sBAAA,CAAA,IAAI,6EAAgB,CAApB,IAAA,CAAA,IAAI,EAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,uBAAA,IAAI,EAAA,+BAAA,EAAA,GAAA,EAAA,oCAAA,CAAgB,MAApB,IAAI,EAAiB,IAAI,CAAC,CAAC;YAClF,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,UAAU,EAAE;gBAClD,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,UAAU,CAAC,CAAC;IAC7F,SAAA;IAAM,aAAA;gBACH,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,SAAA;IACD,QAAA,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;IACvB,QAAA,OAAO,SAAS,CAAC;SACpB;QAED,gBAAgB,CAAC,IAAQ,EAAE,UAAkB,EAAA;YACzC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpD,QAAA,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7C,QAAA,IAAG,UAAU,EAAC;IACV,YAAA,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACpD,SAAA;;YAED,aAAa,CAAC,SAAS,GAAG,sBAAA,CAAA,IAAI,EAAgB,+BAAA,EAAA,GAAA,EAAA,oCAAA,CAAA,CAAA,IAAA,CAApB,IAAI,EAAiB,IAAI,CAAC,CAAC;IACrD,QAAA,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,QAAA,OAAO,aAAa,CAAC;SACxB;IACD,IAAA,eAAe,CAAC,CAAY,EAAA;IACxB,QAAA,MAAM,KAAK,GAAI,CAAC,CAAC,aAAuC,CAAC,KAAK,CAAC;IAC/D,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC;IACD,IAAA,YAAY,CAAC,KAAS,EAAA;IAClB,QAAA,sBAAA,CAAA,IAAI,EAAU,+BAAA,EAAA,GAAA,EAAA,8BAAA,CAAA,CAAA,IAAA,CAAd,IAAI,EAAW,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;IACD,IAAA,gBAAgB,CAAC,YAAmB,EAAA;YAChC,MAAM,iBAAiB,GAAU,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;gBAC9B,MAAM,WAAW,GAAG,sBAAA,CAAA,IAAI,EAAA,+BAAA,EAAA,GAAA,EAAA,oCAAA,CAAgB,MAApB,IAAI,EAAiB,MAAM,CAAC,CAAC;IACjD,YAAA,MAAM,QAAQ,GAAG,OAAO,WAAW,IAAI,QAAQ,CAAC;gBAChD,IAAI,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;IAChD,gBAAA,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,aAAA;gBACD,IAAI,CAAC,QAAQ,EAAE;IACX,gBAAA,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9G,aAAA;IACL,SAAC,CAAC,CAAC;IACH,QAAA,OAAO,iBAAiB,CAAC;SAC5B;QACD,sBAAsB,CAAC,SAAS,GAAG,IAAI,EAAA;;YAEnC,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,aAAa,GAAG,IAAI,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,EAAE;IAEf,YAAA,aAAa,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;gBACnC,IAAI,CAAC,aAAa,EAAE;oBAChB,SAAS,GAAG,UAAU,CAAC;IAC1B,aAAA;IACJ,SAAA;IACD,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC;IACjC,QAAA,IAAI,UAAU,EAAE;gBACZ,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC/B,SAAA;IAAM,aAAA,IAAI,SAAS,EAAE;IAClB,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACvC,SAAA;YACD,OAAO;gBACH,UAAU;aACb,CAAC;SACL;IACD,IAAA,mBAAmB,CAAC,SAAS,EAAA;YACzB,IAAI,SAAS,IAAI,UAAU,EAAE;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,GAAG,CAAA,EAAG,KAAK,CAAA,qBAAA,CAAuB,CAAC;gBACrE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrD,SAAA;SACJ;QACD,oBAAoB,GAAA;IAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACxE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAExD;QACD,qBAAqB,GAAA;IACjB,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC7B;IACD,IAAA,oBAAoB,CAAC,KAAS,EAAA;;YAE1B,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,GAAG,EAAE,CAAC;;IAElD,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBAC7D,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACrE,SAAA;SACJ;IACO,IAAA,sBAAsB,CAAC,KAAS,EAAA;YACpC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,IAAI,UAAU,EAAE;gBACzD,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,SAAA;IAAM,aAAA;gBACH,OAAO,sBAAA,CAAA,IAAI,EAAwB,+BAAA,EAAA,GAAA,EAAA,4CAAA,CAAA,CAAA,IAAA,CAA5B,IAAI,EAAyB,KAAK,CAAC,CAAC;IAC9C,SAAA;SACJ;IA6BJ,CAAA;ggBA9SwB,KAAS,EAAA;;QAE1B,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAClD,IAAI,sBAAA,CAAA,IAAI,EAAA,+BAAA,EAAA,GAAA,EAAA,oCAAA,CAAgB,CAApB,IAAA,CAAA,IAAI,EAAiB,MAAM,CAAC,IAAI,KAAK,EAAE;IACvC,YAAA,OAAO,MAAM,CAAC;IACjB,SAAA;IACL,KAAC,CAAC,CAAC;IACH,IAAA,IAAI,aAAa,IAAI,KAAK,IAAI,IAAI,EAAE;IAChC,QAAA,sBAAA,CAAA,IAAI,EAAU,+BAAA,EAAA,GAAA,EAAA,8BAAA,CAAA,CAAA,IAAA,CAAd,IAAI,EAAW,aAAa,CAAC,CAAC;IAC9B,QAAA,OAAO,IAAI,CAAC;IACf,KAAA;IAAM,SAAA;IACH,QAAA,sBAAA,CAAA,IAAI,EAAA,qCAAA,EAAoB,KAAK,EAAA,GAAA,CAAA,CAAC;IAC9B,QAAA,OAAO,KAAK,CAAC;IAChB,KAAA;IAEL,CAAC,2EACS,KAAS,EAAA;IACf,IAAA,sBAAA,CAAA,IAAI,EAAA,qCAAA,EAAoB,IAAI,EAAA,GAAA,CAAA,CAAC;IAC7B,IAAA,sBAAA,CAAA,IAAI,EAAA,2BAAA,EAAU,KAAK,EAAA,GAAA,CAAA,CAAC;QACpB,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,SAAS,GAAG;IACvC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACpB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;;YAE/D,IAAG,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,EAAC;gBACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACtD,SAAA;IACJ,KAAA;IAAM,SAAA;IACH,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACpB,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;;YAE5D,IAAG,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,EAAC;gBACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IACxC,SAAA;IACJ,KAAA;;IAED,IAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,+FAsBmB,CAAY,EAAA;IAC5B,IAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAC;YACjC,OAAO,EAAC,CAAC,CAAC,OAAO;YACjB,UAAU,EAAC,CAAC,CAAC,UAAU;YACvB,QAAQ,EAAC,CAAC,CAAC,QAAQ;YACnB,IAAI,EAAC,CAAC,CAAC,IAAI;YACX,YAAY,EAAC,CAAC,CAAC,YAAY;YAC3B,MAAM,EAAC,CAAC,CAAC,MAAM;YACf,SAAS,EAAC,CAAC,CAAC,SAAS;YACrB,WAAW,EAAC,CAAC,CAAC,WAAW;IACzB,QAAA,YAAY,EAAC,CAAC,CAAC,eAAe,EAAE;YAChC,IAAI,EAAC,CAAC,CAAC,IAAI;IACd,KAAA,CAAC,CAAC;IACH,IAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,uGAwMuB,KAAS,EAAA;QAC7B,MAAM,SAAS,GAAG,sBAAA,CAAA,IAAI,EAAA,+BAAA,EAAA,GAAA,EAAA,oCAAA,CAAgB,MAApB,IAAI,EAAiB,KAAK,CAAC,CAAC;QAC9C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxD,IAAA,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClD,IAAA,iBAAiB,CAAC,SAAS,GAAG,SAAS,CAAC;IACxC,IAAA,OAAO,iBAAiB,CAAC;IAC7B,CAAC,uFACe,MAAU,EAAA;QACtB,IAAG,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,KAAK,UAAU,EAAC;IACnD,QAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9D,KAAA;QACD,IAAG;YACC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAChD,KAAA;IAAA,IAAA,OAAM,CAAC,EAAC;IACL,QAAA,OAAO,CAAC,KAAK,CAAC,gGAAgG,EAAC,MAAM,CAAC,CAAC;IAC1H,KAAA;IACL,CAAC,uFACe,MAAU,EAAA;QACtB,IAAG,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,KAAK,UAAU,EAAC;IACnD,QAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9D,KAAA;QACD,IAAG;YACC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAChD,KAAA;IAAA,IAAA,OAAM,CAAC,EAAC;IACL,QAAA,OAAO,CAAC,KAAK,CAAC,gGAAgG,EAAC,MAAM,CAAC,CAAC;IAC1H,KAAA;IACD,IAAA,OAAO,EAAE,CAAC;IACd,CAAC,CAAA;IAEL,MAAM,kBAAkB,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,kBAAkB,EAAE;;QAEpB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IACnE;;;;;;;;;;"}
|
package/lib/JBSelect.scss
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
--p-border-bottom-width: var(--jb-select-border-bottom-width, var(--jb-select-border-width, 3px));
|
|
8
8
|
--p-base-z-index: 1;
|
|
9
9
|
--p-mobile-modal-z-index: 900;
|
|
10
|
+
--p-mobile-modal-height:var(--jb-select-mobile-modal-height, 100vh);
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
.jb-select-web-component {
|
|
@@ -18,11 +19,13 @@
|
|
|
18
19
|
&.--focused {
|
|
19
20
|
@include mobile-tablet {
|
|
20
21
|
position: fixed;
|
|
21
|
-
|
|
22
|
+
bottom: 0;
|
|
23
|
+
top:initial;
|
|
22
24
|
left: 0;
|
|
23
25
|
background-color: var(--jb-select-overlay-bgcolor, #0008);
|
|
24
26
|
width: 100vw;
|
|
25
|
-
height:
|
|
27
|
+
height: var(--p-mobile-modal-height);
|
|
28
|
+
border-radius: var(--jb-select-mobile-modal-border-radius, 0) var(--jb-select-mobile-modal-border-radius, 0) 0 0;
|
|
26
29
|
margin: 0;
|
|
27
30
|
padding: 16px 8px;
|
|
28
31
|
z-index: var(--p-mobile-modal-z-index);
|
|
@@ -318,7 +321,7 @@
|
|
|
318
321
|
}
|
|
319
322
|
|
|
320
323
|
@include mobile-tablet {
|
|
321
|
-
max-height: calc(
|
|
324
|
+
max-height: calc(var(--p-mobile-modal-height) - 240px);
|
|
322
325
|
}
|
|
323
326
|
|
|
324
327
|
.select-option {
|
package/lib/JBSelect.ts
CHANGED
|
@@ -6,7 +6,7 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
6
6
|
#textValue = "";
|
|
7
7
|
// if user set value and current option list is not contain the option.
|
|
8
8
|
// we hold it in _notFindedValue and select value when option value get updated
|
|
9
|
-
#
|
|
9
|
+
#notFoundedValue: any = null;
|
|
10
10
|
required = false;
|
|
11
11
|
callbacks: JBSelectCallbacks = {
|
|
12
12
|
getOptionTitle: (option) => { return option; },
|
|
@@ -17,7 +17,7 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
17
17
|
elements!: JBSelectElements;
|
|
18
18
|
get value() {
|
|
19
19
|
if (this.#value) {
|
|
20
|
-
return this
|
|
20
|
+
return this.#getOptionValue(this.#value);
|
|
21
21
|
} else {
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
@@ -36,7 +36,7 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
36
36
|
}
|
|
37
37
|
get selectedOptionTitle() {
|
|
38
38
|
if (this.value) {
|
|
39
|
-
return this
|
|
39
|
+
return this.#getOptionTitle(this.#value);
|
|
40
40
|
} else {
|
|
41
41
|
return "";
|
|
42
42
|
}
|
|
@@ -191,14 +191,14 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
191
191
|
}
|
|
192
192
|
_setValueOnOptionListChanged() {
|
|
193
193
|
//when option list changed we see if current value is valid for new optionlist we set it if not we reset value to null.
|
|
194
|
-
//in some scenario value is setted before
|
|
195
|
-
if (this.#
|
|
196
|
-
//if select has no prev value or pending not
|
|
194
|
+
//in some scenario value is setted before optionList attached so we store it on this.#notFoundedValue and after option list setted we set value from this.#notFoundedValue
|
|
195
|
+
if (this.#notFoundedValue) {
|
|
196
|
+
//if select has no prev value or pending not found value we don't set it because user may input some search terms in input box and developer-user update list base on that value
|
|
197
197
|
//if we set it to null the search term and this.textvalue will become null and empty too and it make impossible for user to search in dynamic back-end provided searchable list so we put this condition to prevent it
|
|
198
|
-
const isSetted = this.#setValueFromOutside(this.#
|
|
198
|
+
const isSetted = this.#setValueFromOutside(this.#notFoundedValue);
|
|
199
199
|
if(isSetted){
|
|
200
|
-
//after list update and when not founded value is found in new option list we clear old not
|
|
201
|
-
this.#
|
|
200
|
+
//after list update and when not founded value is found in new option list we clear old not founded value
|
|
201
|
+
this.#notFoundedValue = null;
|
|
202
202
|
}
|
|
203
203
|
}else if(this.value){
|
|
204
204
|
this.#setValueFromOutside(this.value);
|
|
@@ -207,7 +207,7 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
207
207
|
#setValueFromOutside(value:any):boolean{
|
|
208
208
|
//when user set value by attribute or value prop directly we call this function
|
|
209
209
|
const matchedOption = this.optionList.find((option) => { // if we have value mapper we set selected value by object that match mapper
|
|
210
|
-
if (this
|
|
210
|
+
if (this.#getOptionValue(option) == value) {
|
|
211
211
|
return option;
|
|
212
212
|
}
|
|
213
213
|
});
|
|
@@ -215,13 +215,13 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
215
215
|
this.#setValue(matchedOption);
|
|
216
216
|
return true;
|
|
217
217
|
} else {
|
|
218
|
-
this.#
|
|
218
|
+
this.#notFoundedValue = value;
|
|
219
219
|
return false;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
}
|
|
223
223
|
#setValue(value:any) {
|
|
224
|
-
this.#
|
|
224
|
+
this.#notFoundedValue = null;
|
|
225
225
|
this.#value = value;
|
|
226
226
|
if ((value == null || value == undefined)) {
|
|
227
227
|
this.textValue = '';
|
|
@@ -380,7 +380,7 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
380
380
|
}
|
|
381
381
|
createOptionDOM(item:any):JBSelectOptionElement{
|
|
382
382
|
let optionDOM: JBSelectOptionElement | null = null;
|
|
383
|
-
const isSelected = this
|
|
383
|
+
const isSelected = this.#getOptionValue(this.value) == this.#getOptionValue(item);
|
|
384
384
|
if (typeof this.callbacks.getOptionDOM == 'function') {
|
|
385
385
|
optionDOM = this.callbacks.getOptionDOM(item, this.onOptionClicked.bind(this),isSelected);
|
|
386
386
|
} else {
|
|
@@ -397,7 +397,7 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
397
397
|
optionElement.classList.add('--selected-option');
|
|
398
398
|
}
|
|
399
399
|
//it has defualt function who return wxact same input
|
|
400
|
-
optionElement.innerHTML = this
|
|
400
|
+
optionElement.innerHTML = this.#getOptionTitle(item);
|
|
401
401
|
optionElement.addEventListener('click', this.onOptionClicked.bind(this));
|
|
402
402
|
return optionElement;
|
|
403
403
|
}
|
|
@@ -414,7 +414,7 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
414
414
|
filterOptionList(filterString:string):any[] {
|
|
415
415
|
const displayOptionList: any[] = [];
|
|
416
416
|
this.optionList.filter((option) => {
|
|
417
|
-
const optionTitle = this
|
|
417
|
+
const optionTitle = this.#getOptionTitle(option);
|
|
418
418
|
const isString = typeof optionTitle == 'string';
|
|
419
419
|
if (isString && optionTitle.includes(filterString)) {
|
|
420
420
|
displayOptionList.push(option);
|
|
@@ -479,12 +479,33 @@ export class JBSelectWebComponent extends HTMLElement {
|
|
|
479
479
|
}
|
|
480
480
|
}
|
|
481
481
|
#createSelectedValueDom(value:any) {
|
|
482
|
-
const valueText = this
|
|
482
|
+
const valueText = this.#getOptionTitle(value);
|
|
483
483
|
const selectedOptionDom = document.createElement('div');
|
|
484
484
|
selectedOptionDom.classList.add('selected-value');
|
|
485
485
|
selectedOptionDom.innerHTML = valueText;
|
|
486
486
|
return selectedOptionDom;
|
|
487
487
|
}
|
|
488
|
+
#getOptionValue(option:any){
|
|
489
|
+
if(typeof this.callbacks.getOptionValue !== "function"){
|
|
490
|
+
console.error("getOptionValue callback is not a function");
|
|
491
|
+
}
|
|
492
|
+
try{
|
|
493
|
+
return this.callbacks.getOptionValue(option);
|
|
494
|
+
}catch(e){
|
|
495
|
+
console.error(`Invalid getOptionValue callback Result, must be a function that returns the value of an option`,option);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
#getOptionTitle(option:any):string{
|
|
499
|
+
if(typeof this.callbacks.getOptionTitle !== "function"){
|
|
500
|
+
console.error("getOptionTitle callback is not a function");
|
|
501
|
+
}
|
|
502
|
+
try{
|
|
503
|
+
return this.callbacks.getOptionTitle(option);
|
|
504
|
+
}catch(e){
|
|
505
|
+
console.error(`Invalid getOptionTitle callback Result, must be a function that returns the value of an option`,option);
|
|
506
|
+
}
|
|
507
|
+
return "";
|
|
508
|
+
}
|
|
488
509
|
}
|
|
489
510
|
const myElementNotExists = !customElements.get('jb-select');
|
|
490
511
|
if (myElementNotExists) {
|