selective-ui 1.2.7 → 1.3.1

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.
@@ -125,18 +125,17 @@
125
125
  }
126
126
  }
127
127
  .seui-placeholder {
128
- display: flex;
129
128
  align-items: center;
130
129
 
131
130
  margin-left: 10px;
132
- max-width: calc(100% - 30px);
133
- height: calc(100% - 10px);
131
+ max-width: calc(100% - 40px);
134
132
  text-overflow: ellipsis;
135
133
  white-space: nowrap;
136
134
  pointer-events: none;
135
+ overflow: hidden;
136
+
137
137
  font-family: var(--seui-view-text-style);
138
138
  font-size: var(--seui-view-text-size) !important;
139
- overflow: hidden;
140
139
  color: var(--seui-view-text-color);
141
140
  }
142
141
  .seui-directive {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.css","selectbox.css","placeholder.css","directive.css","empty-state.css","loading-state.css","group-view.css","popup.css","searchbox.css","option-handle.css","option-view.css","accessorybox.css"],"names":[],"mappings":"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","file":"selective-ui.css","sourcesContent":[":root {\n --seui-transparent-color: #00000000;\n\n --seui-view-text-color: #121212;\n --seui-view-ro-text-color: #a3a3a3;\n --seui-view-text-style: Arial, Helvetica, sans-serif;\n --seui-view-text-size: 13px;\n --seui-view-mobile-text-size: 16px;\n --seui-view-background-color: #ffffff;\n --seui-view-ro-background-color: #00000029;\n --seui-view-optgroup-background-color: #a3c6e9;\n --seui-view-border-color: #a3a3a3;\n --seui-view-ro-border-color: #bdbdbd;\n --seui-view-border-size: 1px;\n --seui-view-border-style: solid;\n --seui-view-border-radius: 5px;\n\n --seui-directive-color: #000000;\n --seui-directive-ro-color: #a3a3a3;\n\n --seui-option-crtl-text-color: #307ecc;\n --seui-option-crtl-text-color-hover: #ff0000;\n --seui-option-crtl-background-color: #f3f3f3;\n --seui-option-crtl-border-color: #cccccc;\n --seui-option-crtl-text-size: 13px;\n\n --seui-option-padding: 5px;\n --seui-option-border-radius: 5px;\n\n --seui-accessory-max-width: 100%;\n --seui-accessory-max-height: 50px;\n --seui-accessory-padding: 2px 0;\n --seui-accessory-item-border-color: #a3a3a3;\n --seui-accessory-item-border-style: solid;\n --seui-accessory-item-border-width: 1px;\n --seui-accessory-item-border-radius: 3px;\n --seui-accessory-item-background: #f7f7f9;\n --seui-accessory-item-font-size: 11px;\n --seui-accessory-item-padding: 2px;\n --seui-accessory-item-gap: 3px;\n --seui-accessory-item-button-color: #757575;\n --seui-accessory-item-button-width: 16px;\n --seui-accessory-item-button-height: 16px;\n --seui-accessory-item-button-border-color: #a3a3a3;\n --seui-accessory-item-button-border-style: solid;\n --seui-accessory-item-button-border-width: 1px;\n --seui-accessory-item-button-border-radius: 2px;\n --seui-accessory-item-content-color: #307ecc;\n --seui-accessory-item-content-font-size: 11px;\n --seui-accessory-item-content-padding: 0 4px 0 2px;\n\n --seui-popup-background-color: #fbfbfb;\n --seui-popup-border-color: #a3a3a3;\n --seui-popup-border-style: solid;\n --seui-popup-border-width: 1px;\n --seui-popup-border-radius: 6px;\n\n --seui-chkbox-background-color: #ffffff;\n --seui-chkbox-border-color: #8f9194;\n\n --seui-chkbox-hover-background-color: #dbdbdb;\n --seui-chkbox-hover-border-color: #b7b7b7;\n\n --seui-chkbox-checked-background-color: #9dcff8;\n --seui-chkbox-checked-border-color: #9dcff8;\n\n --seui-chkbox-checked-hover-background-color: #9dcff8;\n --seui-chkbox-checked-hover-border-color: #007eff;\n\n --seui-chkbox-checked-color: #0075FF;\n\n --seui-empty-state-color: #999999;\n --seui-empty-state-background: #f9f9f9;\n --seui-empty-state-padding: 10px 5px;\n}",".seui-MAIN {\n display: inline-block;\n max-width: min-content;\n}\n.seui-MAIN, .seui-MAIN * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n\n margin: 0;\n padding: 0;\n\n line-height: normal;\n}\n.seui-MAIN > select.init {\n display: none;\n}\n.seui-MAIN > .seui-view {\n position: relative;\n width: 100%;\n height: 100%;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n\n background-color: var(--seui-view-background-color);\n border: var(--seui-view-border-style) var(--seui-view-border-size) var(--seui-view-border-color);\n border-radius: var(--seui-view-border-radius);\n}\n\n.seui-MAIN.invisible {\n display: none;\n}\n\n.seui-MAIN.disabled {\n --seui-view-background-color: var(--seui-view-ro-background-color);\n --seui-view-border-color: var(--seui-view-ro-border-color);\n --seui-view-text-color: var(--seui-view-ro-text-color);\n --seui-directive-color: var(--seui-directive-ro-color);\n}\n\n.seui-MAIN .hide {\n display: none;\n}\n\n@supports (-webkit-touch-callout: none) {\n :root {\n --seui-view-text-size: var(--seui-view-mobile-text-size);\n }\n}",".seui-placeholder {\n display: flex;\n align-items: center;\n \n margin-left: 10px;\n max-width: calc(100% - 30px);\n height: calc(100% - 10px);\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size) !important;\n overflow: hidden;\n color: var(--seui-view-text-color);\n}",".seui-directive {\n content: \" \";\n position: absolute;\n display: inline-block;\n vertical-align: middle;\n transition: all linear 200ms;\n border-top: 4px solid var(--seui-directive-color);\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n width: 0;\n height: 0;\n right: 10px;\n top: 50%;\n transform: translateY(-50%) rotate(0deg);\n z-index: 1;\n pointer-events: none;\n}\n.seui-directive.drop-down {\n transform: translateY(-50%) rotate(180deg);\n}",".seui-empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--seui-empty-state-padding, 20px);\n text-align: center;\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size);\n color: var(--seui-empty-state-color, #999);\n background-color: var(--seui-empty-state-background, transparent);\n border-radius: var(--seui-option-border-radius);\n min-height: 60px;\n\n position: sticky;\n bottom: 0;\n}\n\n.seui-empty-state.small {\n text-align: left;\n justify-content: flex-start;\n min-height: 30px;\n}\n\n.seui-empty-state.hide {\n display: none;\n}",".seui-loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--seui-empty-state-padding, 20px);\n text-align: center;\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size);\n color: var(--seui-empty-state-color, #999);\n background-color: var(--seui-empty-state-background, transparent);\n border-radius: var(--seui-option-border-radius);\n min-height: 60px;\n\n position: sticky;\n bottom: 0;\n}\n\n.seui-loading-state.small {\n text-align: left;\n justify-content: flex-start;\n min-height: 30px;\n}\n\n.seui-loading-state.hide {\n display: none;\n}",".seui-group {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.seui-group.hide {\n display: none;\n}\n\n.seui-group-header {\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size);\n font-weight: 600;\n color: var(--seui-view-text-color);\n padding: 8px 12px;\n background-color: var(--seui-view-optgroup-background-color);\n border-radius: var(--seui-option-border-radius);\n /* position: sticky; */\n /* top: 0; */\n z-index: 1;\n cursor: pointer;\n user-select: none;\n \n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.seui-group-header::before {\n content: \"\";\n display: inline-block;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 7px solid currentColor;\n transition: transform 200ms ease;\n transform: rotate(90deg);\n}\n\n.seui-group.collapsed .seui-group-header::before {\n transform: rotate(0deg);\n}\n\n.seui-group-items {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding-left: 16px;\n}\n\n.seui-group.collapsed .seui-group-items {\n display: none;\n}\n\n/* Option trong group có indent nhẹ hơn */\n.seui-group-items .seui-option-view {\n padding-left: 12px;\n border-left: 2px solid #e0e0e0;\n margin-left: 4px;\n}",".seui-popup, .seui-popup * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n\n line-height: normal;\n}\n\n.seui-popup {\n display: none;\n position: fixed;\n z-index: 9999;\n overflow: hidden;\n flex-direction: column;\n \n height: 0px;\n padding: 2px;\n gap: 2px;\n\n background-color: var(--seui-popup-background-color);\n border-color: var(--seui-popup-border-color);\n border-style: var(--seui-popup-border-style);\n border-width: var(--seui-popup-border-width);\n border-radius: var(--seui-popup-border-radius);\n\n transition: none;\n}\n\n.seui-options-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n\n -webkit-overflow-scrolling: touch;\n touch-action: pan-y;\n}\n\n.seui-options-container.hide {\n display: none;\n}\n\n.seui-options-container .seui-virtual-items {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: 2px;\n}",".seui-searchbox {\n display: flex;\n flex-direction: row;\n align-items: center;\n position: absolute;\n \n background-color: var(--seui-view-background-color);\n border-radius: 5px;\n z-index: 2;\n width: calc(100% - 30px);\n height: 100%;\n}\n\n.seui-searchbox-input {\n width: 100%;\n height: calc(100% - 10px);\n border: 0;\n outline: none !important;\n background: var(--seui-transparent-color);\n color: var(--seui-view-text-color);\n padding: 0 !important;\n margin-left: 10px;\n text-indent: 0px;\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size) !important;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}",".seui-option-handle {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n \n font-size: var(--seui-option-crtl-text-size);\n font-family: var(--seui-view-text-style);\n width: unset;\n position: sticky;\n top: 0px;\n padding: var(--seui-option-padding);\n z-index: 2;\n background-color: var(--seui-option-crtl-background-color);\n border: 1px solid var(--seui-option-crtl-border-color);\n border-radius: var(--seui-option-border-radius);\n}\n\n.seui-option-handle.hide {\n display: none;\n}\n\n.seui-option-handle-item {\n text-decoration: none;\n cursor: pointer;\n color: var(--seui-option-crtl-text-color);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.seui-option-handle-item:hover {\n color: var(--seui-option-crtl-text-color-hover);\n}",".seui-option-view {\n display: flex;\n width: auto;\n flex-direction: row;\n align-items: center !important;\n position: relative;\n border-radius: 4px;\n line-height: normal;\n padding: 5px;\n gap: 7px;\n transition: all 180ms;\n\n background-color: var(--seui-transparent-color);\n border: solid 1px var(--seui-transparent-color);\n}\n\n.seui-option-view.checked {\n background-color: var(--seui-chkbox-checked-background-color);\n border-color: var(--seui-chkbox-checked-border-color);\n}\n\n.seui-option-view > input {\n display: none;\n}\n\n.seui-option-view > label {\n width: 100%;\n height: 100%;\n display: flex;\n gap: 7px;\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size);\n color: var(--seui-view-text-color);\n align-items: center;\n}\n\n.seui-option-view.multiple > label::before {\n content: \"\";\n display: block;\n width: 17px;\n min-width: 17px;\n height: 17px;\n min-height: 17px;\n background: var(--seui-chkbox-background-color);\n border: 1px solid var(--seui-chkbox-border-color);\n border-radius: 0.2em;\n -webkit-transition: all 200ms, background 200ms ease-in-out;\n transition: all 200ms, background 200ms ease-in-out;\n}\n\n.seui-option-view.multiple.checked > label::before {\n color: var(--seui-view-background-color);\n background: var(--seui-chkbox-checked-color) url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAxNyAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjE2ODQ3IDEyLjM4MDhDNy43Nzc3OCAxMi43NzIyIDcuMTQzNTMgMTIuNzcyMiA2Ljc1Mjg0IDEyLjM4MDhMMi43NDQ5OCA4LjM2NDlDMi4zNTU0IDcuOTc0NTQgMi4zNTU0IDcuMzQyNDcgMi43NDQ5OCA2Ljk1MjFMMy4xNjQ1MiA2LjUzMTczQzMuNTU1MiA2LjE0MDI3IDQuMTg5NDYgNi4xNDAyNyA0LjU4MDE0IDYuNTMxNzNMNi43NTI4NCA4LjcwODc4QzcuMTQzNTIgOS4xMDAyNCA3Ljc3Nzc4IDkuMTAwMjQgOC4xNjg0NiA4LjcwODc4TDEyLjI0OTggNC42MTkyM0MxMi42NDA1IDQuMjI3NzcgMTMuMjc0OCA0LjIyNzc3IDEzLjY2NTUgNC42MTkyM0wxNC4wODUgNS4wMzk2QzE0LjQ3NDYgNS40Mjk5NyAxNC40NzQ2IDYuMDYyMDQgMTQuMDg1IDYuNDUyNEw4LjE2ODQ3IDEyLjM4MDhaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K) 50% 40% no-repeat;\n border: 1px solid var(--seui-chkbox-checked-color);\n}\n\n.seui-option-view > label > div {\n width: 100%;\n height: 100%;\n\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.seui-option-view > label.align-horizontal-left > div {\n justify-content: flex-start;\n}\n\n.seui-option-view > label.align-horizontal-center > div {\n justify-content: center;\n}\n\n.seui-option-view > label.align-horizontal-right > div {\n justify-content: flex-end;\n}\n\n.seui-option-view > label.align-vertical-left > div {\n align-items: flex-start;\n}\n\n.seui-option-view > label.align-vertical-center > div {\n align-items: center;\n}\n\n.seui-option-view > label.align-vertical-right > div {\n align-items: flex-end;\n}\n\n.seui-option-view.hide {\n display: none;\n}\n\n.seui-option-view.highlight {\n background-color: var(--seui-chkbox-hover-background-color);\n border-color: var(--seui-chkbox-hover-border-color);\n}\n\n.seui-option-view.highlight.checked {\n background-color: var(--seui-chkbox-checked-hover-background-color);\n border-color: var(--seui-chkbox-checked-hover-border-color);\n}\n\n.seui-option-view.has-image {\n gap: 10px;\n}\n\n.seui-option-view.has-image.image-top {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.seui-option-view.has-image.image-right {\n flex-direction: row-reverse;\n}\n\n.seui-option-view.has-image.image-bottom {\n flex-direction: column-reverse;\n}\n\n.seui-option-view .option-image {\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.seui-option-view.multiple.has-image > label::before {\n order: -1;\n display: none;\n}",".seui-accessorybox {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n gap: 2px;\n padding: var(--seui-accessory-padding);\n max-width: var(--seui-accessory-max-width);\n max-height: var(--seui-accessory-max-height);\n overflow-y: scroll;\n}\n\n.accessory-item {\n display: flex;\n align-items: center;\n\n overflow: hidden;\n border-color: var(--seui-accessory-item-border-color);\n border-style: var(--seui-accessory-item-border-style);\n border-width: var(--seui-accessory-item-border-width);\n border-radius: var(--seui-accessory-item-border-radius);\n\n background: var(--seui-accessory-item-background);\n font-size: var(--seui-accessory-item-font-size);\n padding: var(--seui-accessory-item-padding);\n gap: var(--seui-accessory-item-gap);\n}\n\n.accessory-item > .accessory-item-button {\n position: relative;\n cursor: pointer;\n color: var(--seui-accessory-item-button-color);\n font-weight: bold;\n\n border-color: var(--seui-accessory-item-button-border-color);\n border-style: var(--seui-accessory-item-button-border-style);\n border-width: var(--seui-accessory-item-button-border-width);\n border-radius: var(--seui-accessory-item-button-border-radius);\n\n width: var(--seui-accessory-item-button-width);\n min-width: var(--seui-accessory-item-button-width);\n height: var(--seui-accessory-item-button-height);\n min-height: var(--seui-accessory-item-button-height);\n}\n\n.accessory-item > .accessory-item-button::after {\n background: url('data:image/svg+xml,<svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\"><g><title>Layer 1</title><g transform=\"rotate(45 8 8)\" stroke=\"null\" id=\"svg_28\"><rect stroke=\"%23000\" rx=\"1\" id=\"svg_20\" height=\"1.41129\" width=\"7.76211\" y=\"7.29435\" x=\"4.11895\" stroke-width=\"0\" fill=\"%234c4c4c\"/><rect stroke=\"%23000\" transform=\"matrix(0 0.705646 -0.705646 0 12.0262 3.97378)\" rx=\"1\" id=\"svg_27\" height=\"2\" width=\"11\" y=\"4.70572\" x=\"0.20572\" stroke-width=\"0\" fill=\"%234c4c4c\"/></g></g></svg>');\n display: block;\n content: \"\";\n position: absolute;\n background-repeat: no-repeat;\n background-position: center center;\n width: 100%;\n height: 100%;\n}\n\n.accessory-item > .accessory-item-content {\n color: var(--seui-accessory-item-content-color);\n font-size: var(--seui-accessory-item-content-font-size);\n padding: var(--seui-accessory-item-content-padding);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}"]}
1
+ {"version":3,"sources":["index.css","selectbox.css","placeholder.css","directive.css","empty-state.css","loading-state.css","group-view.css","popup.css","searchbox.css","option-handle.css","option-view.css","accessorybox.css"],"names":[],"mappings":"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","file":"selective-ui.css","sourcesContent":[":root {\n --seui-transparent-color: #00000000;\n\n --seui-view-text-color: #121212;\n --seui-view-ro-text-color: #a3a3a3;\n --seui-view-text-style: Arial, Helvetica, sans-serif;\n --seui-view-text-size: 13px;\n --seui-view-mobile-text-size: 16px;\n --seui-view-background-color: #ffffff;\n --seui-view-ro-background-color: #00000029;\n --seui-view-optgroup-background-color: #a3c6e9;\n --seui-view-border-color: #a3a3a3;\n --seui-view-ro-border-color: #bdbdbd;\n --seui-view-border-size: 1px;\n --seui-view-border-style: solid;\n --seui-view-border-radius: 5px;\n\n --seui-directive-color: #000000;\n --seui-directive-ro-color: #a3a3a3;\n\n --seui-option-crtl-text-color: #307ecc;\n --seui-option-crtl-text-color-hover: #ff0000;\n --seui-option-crtl-background-color: #f3f3f3;\n --seui-option-crtl-border-color: #cccccc;\n --seui-option-crtl-text-size: 13px;\n\n --seui-option-padding: 5px;\n --seui-option-border-radius: 5px;\n\n --seui-accessory-max-width: 100%;\n --seui-accessory-max-height: 50px;\n --seui-accessory-padding: 2px 0;\n --seui-accessory-item-border-color: #a3a3a3;\n --seui-accessory-item-border-style: solid;\n --seui-accessory-item-border-width: 1px;\n --seui-accessory-item-border-radius: 3px;\n --seui-accessory-item-background: #f7f7f9;\n --seui-accessory-item-font-size: 11px;\n --seui-accessory-item-padding: 2px;\n --seui-accessory-item-gap: 3px;\n --seui-accessory-item-button-color: #757575;\n --seui-accessory-item-button-width: 16px;\n --seui-accessory-item-button-height: 16px;\n --seui-accessory-item-button-border-color: #a3a3a3;\n --seui-accessory-item-button-border-style: solid;\n --seui-accessory-item-button-border-width: 1px;\n --seui-accessory-item-button-border-radius: 2px;\n --seui-accessory-item-content-color: #307ecc;\n --seui-accessory-item-content-font-size: 11px;\n --seui-accessory-item-content-padding: 0 4px 0 2px;\n\n --seui-popup-background-color: #fbfbfb;\n --seui-popup-border-color: #a3a3a3;\n --seui-popup-border-style: solid;\n --seui-popup-border-width: 1px;\n --seui-popup-border-radius: 6px;\n\n --seui-chkbox-background-color: #ffffff;\n --seui-chkbox-border-color: #8f9194;\n\n --seui-chkbox-hover-background-color: #dbdbdb;\n --seui-chkbox-hover-border-color: #b7b7b7;\n\n --seui-chkbox-checked-background-color: #9dcff8;\n --seui-chkbox-checked-border-color: #9dcff8;\n\n --seui-chkbox-checked-hover-background-color: #9dcff8;\n --seui-chkbox-checked-hover-border-color: #007eff;\n\n --seui-chkbox-checked-color: #0075FF;\n\n --seui-empty-state-color: #999999;\n --seui-empty-state-background: #f9f9f9;\n --seui-empty-state-padding: 10px 5px;\n}",".seui-MAIN {\n display: inline-block;\n max-width: min-content;\n}\n.seui-MAIN, .seui-MAIN * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n\n margin: 0;\n padding: 0;\n\n line-height: normal;\n}\n.seui-MAIN > select.init {\n display: none;\n}\n.seui-MAIN > .seui-view {\n position: relative;\n width: 100%;\n height: 100%;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n\n background-color: var(--seui-view-background-color);\n border: var(--seui-view-border-style) var(--seui-view-border-size) var(--seui-view-border-color);\n border-radius: var(--seui-view-border-radius);\n}\n\n.seui-MAIN.invisible {\n display: none;\n}\n\n.seui-MAIN.disabled {\n --seui-view-background-color: var(--seui-view-ro-background-color);\n --seui-view-border-color: var(--seui-view-ro-border-color);\n --seui-view-text-color: var(--seui-view-ro-text-color);\n --seui-directive-color: var(--seui-directive-ro-color);\n}\n\n.seui-MAIN .hide {\n display: none;\n}\n\n@supports (-webkit-touch-callout: none) {\n :root {\n --seui-view-text-size: var(--seui-view-mobile-text-size);\n }\n}",".seui-placeholder {\n align-items: center;\n \n margin-left: 10px;\n max-width: calc(100% - 40px);\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n overflow: hidden;\n\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size) !important;\n color: var(--seui-view-text-color);\n}",".seui-directive {\n content: \" \";\n position: absolute;\n display: inline-block;\n vertical-align: middle;\n transition: all linear 200ms;\n border-top: 4px solid var(--seui-directive-color);\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n width: 0;\n height: 0;\n right: 10px;\n top: 50%;\n transform: translateY(-50%) rotate(0deg);\n z-index: 1;\n pointer-events: none;\n}\n.seui-directive.drop-down {\n transform: translateY(-50%) rotate(180deg);\n}",".seui-empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--seui-empty-state-padding, 20px);\n text-align: center;\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size);\n color: var(--seui-empty-state-color, #999);\n background-color: var(--seui-empty-state-background, transparent);\n border-radius: var(--seui-option-border-radius);\n min-height: 60px;\n\n position: sticky;\n bottom: 0;\n}\n\n.seui-empty-state.small {\n text-align: left;\n justify-content: flex-start;\n min-height: 30px;\n}\n\n.seui-empty-state.hide {\n display: none;\n}",".seui-loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--seui-empty-state-padding, 20px);\n text-align: center;\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size);\n color: var(--seui-empty-state-color, #999);\n background-color: var(--seui-empty-state-background, transparent);\n border-radius: var(--seui-option-border-radius);\n min-height: 60px;\n\n position: sticky;\n bottom: 0;\n}\n\n.seui-loading-state.small {\n text-align: left;\n justify-content: flex-start;\n min-height: 30px;\n}\n\n.seui-loading-state.hide {\n display: none;\n}",".seui-group {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.seui-group.hide {\n display: none;\n}\n\n.seui-group-header {\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size);\n font-weight: 600;\n color: var(--seui-view-text-color);\n padding: 8px 12px;\n background-color: var(--seui-view-optgroup-background-color);\n border-radius: var(--seui-option-border-radius);\n /* position: sticky; */\n /* top: 0; */\n z-index: 1;\n cursor: pointer;\n user-select: none;\n \n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.seui-group-header::before {\n content: \"\";\n display: inline-block;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 7px solid currentColor;\n transition: transform 200ms ease;\n transform: rotate(90deg);\n}\n\n.seui-group.collapsed .seui-group-header::before {\n transform: rotate(0deg);\n}\n\n.seui-group-items {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding-left: 16px;\n}\n\n.seui-group.collapsed .seui-group-items {\n display: none;\n}\n\n/* Option trong group có indent nhẹ hơn */\n.seui-group-items .seui-option-view {\n padding-left: 12px;\n border-left: 2px solid #e0e0e0;\n margin-left: 4px;\n}",".seui-popup, .seui-popup * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n\n line-height: normal;\n}\n\n.seui-popup {\n display: none;\n position: fixed;\n z-index: 9999;\n overflow: hidden;\n flex-direction: column;\n \n height: 0px;\n padding: 2px;\n gap: 2px;\n\n background-color: var(--seui-popup-background-color);\n border-color: var(--seui-popup-border-color);\n border-style: var(--seui-popup-border-style);\n border-width: var(--seui-popup-border-width);\n border-radius: var(--seui-popup-border-radius);\n\n transition: none;\n}\n\n.seui-options-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n\n -webkit-overflow-scrolling: touch;\n touch-action: pan-y;\n}\n\n.seui-options-container.hide {\n display: none;\n}\n\n.seui-options-container .seui-virtual-items {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: 2px;\n}",".seui-searchbox {\n display: flex;\n flex-direction: row;\n align-items: center;\n position: absolute;\n \n background-color: var(--seui-view-background-color);\n border-radius: 5px;\n z-index: 2;\n width: calc(100% - 30px);\n height: 100%;\n}\n\n.seui-searchbox-input {\n width: 100%;\n height: calc(100% - 10px);\n border: 0;\n outline: none !important;\n background: var(--seui-transparent-color);\n color: var(--seui-view-text-color);\n padding: 0 !important;\n margin-left: 10px;\n text-indent: 0px;\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size) !important;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}",".seui-option-handle {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n \n font-size: var(--seui-option-crtl-text-size);\n font-family: var(--seui-view-text-style);\n width: unset;\n position: sticky;\n top: 0px;\n padding: var(--seui-option-padding);\n z-index: 2;\n background-color: var(--seui-option-crtl-background-color);\n border: 1px solid var(--seui-option-crtl-border-color);\n border-radius: var(--seui-option-border-radius);\n}\n\n.seui-option-handle.hide {\n display: none;\n}\n\n.seui-option-handle-item {\n text-decoration: none;\n cursor: pointer;\n color: var(--seui-option-crtl-text-color);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.seui-option-handle-item:hover {\n color: var(--seui-option-crtl-text-color-hover);\n}",".seui-option-view {\n display: flex;\n width: auto;\n flex-direction: row;\n align-items: center !important;\n position: relative;\n border-radius: 4px;\n line-height: normal;\n padding: 5px;\n gap: 7px;\n transition: all 180ms;\n\n background-color: var(--seui-transparent-color);\n border: solid 1px var(--seui-transparent-color);\n}\n\n.seui-option-view.checked {\n background-color: var(--seui-chkbox-checked-background-color);\n border-color: var(--seui-chkbox-checked-border-color);\n}\n\n.seui-option-view > input {\n display: none;\n}\n\n.seui-option-view > label {\n width: 100%;\n height: 100%;\n display: flex;\n gap: 7px;\n font-family: var(--seui-view-text-style);\n font-size: var(--seui-view-text-size);\n color: var(--seui-view-text-color);\n align-items: center;\n}\n\n.seui-option-view.multiple > label::before {\n content: \"\";\n display: block;\n width: 17px;\n min-width: 17px;\n height: 17px;\n min-height: 17px;\n background: var(--seui-chkbox-background-color);\n border: 1px solid var(--seui-chkbox-border-color);\n border-radius: 0.2em;\n -webkit-transition: all 200ms, background 200ms ease-in-out;\n transition: all 200ms, background 200ms ease-in-out;\n}\n\n.seui-option-view.multiple.checked > label::before {\n color: var(--seui-view-background-color);\n background: var(--seui-chkbox-checked-color) url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAxNyAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjE2ODQ3IDEyLjM4MDhDNy43Nzc3OCAxMi43NzIyIDcuMTQzNTMgMTIuNzcyMiA2Ljc1Mjg0IDEyLjM4MDhMMi43NDQ5OCA4LjM2NDlDMi4zNTU0IDcuOTc0NTQgMi4zNTU0IDcuMzQyNDcgMi43NDQ5OCA2Ljk1MjFMMy4xNjQ1MiA2LjUzMTczQzMuNTU1MiA2LjE0MDI3IDQuMTg5NDYgNi4xNDAyNyA0LjU4MDE0IDYuNTMxNzNMNi43NTI4NCA4LjcwODc4QzcuMTQzNTIgOS4xMDAyNCA3Ljc3Nzc4IDkuMTAwMjQgOC4xNjg0NiA4LjcwODc4TDEyLjI0OTggNC42MTkyM0MxMi42NDA1IDQuMjI3NzcgMTMuMjc0OCA0LjIyNzc3IDEzLjY2NTUgNC42MTkyM0wxNC4wODUgNS4wMzk2QzE0LjQ3NDYgNS40Mjk5NyAxNC40NzQ2IDYuMDYyMDQgMTQuMDg1IDYuNDUyNEw4LjE2ODQ3IDEyLjM4MDhaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K) 50% 40% no-repeat;\n border: 1px solid var(--seui-chkbox-checked-color);\n}\n\n.seui-option-view > label > div {\n width: 100%;\n height: 100%;\n\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.seui-option-view > label.align-horizontal-left > div {\n justify-content: flex-start;\n}\n\n.seui-option-view > label.align-horizontal-center > div {\n justify-content: center;\n}\n\n.seui-option-view > label.align-horizontal-right > div {\n justify-content: flex-end;\n}\n\n.seui-option-view > label.align-vertical-left > div {\n align-items: flex-start;\n}\n\n.seui-option-view > label.align-vertical-center > div {\n align-items: center;\n}\n\n.seui-option-view > label.align-vertical-right > div {\n align-items: flex-end;\n}\n\n.seui-option-view.hide {\n display: none;\n}\n\n.seui-option-view.highlight {\n background-color: var(--seui-chkbox-hover-background-color);\n border-color: var(--seui-chkbox-hover-border-color);\n}\n\n.seui-option-view.highlight.checked {\n background-color: var(--seui-chkbox-checked-hover-background-color);\n border-color: var(--seui-chkbox-checked-hover-border-color);\n}\n\n.seui-option-view.has-image {\n gap: 10px;\n}\n\n.seui-option-view.has-image.image-top {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.seui-option-view.has-image.image-right {\n flex-direction: row-reverse;\n}\n\n.seui-option-view.has-image.image-bottom {\n flex-direction: column-reverse;\n}\n\n.seui-option-view .option-image {\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.seui-option-view.multiple.has-image > label::before {\n order: -1;\n display: none;\n}",".seui-accessorybox {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n gap: 2px;\n padding: var(--seui-accessory-padding);\n max-width: var(--seui-accessory-max-width);\n max-height: var(--seui-accessory-max-height);\n overflow-y: scroll;\n}\n\n.accessory-item {\n display: flex;\n align-items: center;\n\n overflow: hidden;\n border-color: var(--seui-accessory-item-border-color);\n border-style: var(--seui-accessory-item-border-style);\n border-width: var(--seui-accessory-item-border-width);\n border-radius: var(--seui-accessory-item-border-radius);\n\n background: var(--seui-accessory-item-background);\n font-size: var(--seui-accessory-item-font-size);\n padding: var(--seui-accessory-item-padding);\n gap: var(--seui-accessory-item-gap);\n}\n\n.accessory-item > .accessory-item-button {\n position: relative;\n cursor: pointer;\n color: var(--seui-accessory-item-button-color);\n font-weight: bold;\n\n border-color: var(--seui-accessory-item-button-border-color);\n border-style: var(--seui-accessory-item-button-border-style);\n border-width: var(--seui-accessory-item-button-border-width);\n border-radius: var(--seui-accessory-item-button-border-radius);\n\n width: var(--seui-accessory-item-button-width);\n min-width: var(--seui-accessory-item-button-width);\n height: var(--seui-accessory-item-button-height);\n min-height: var(--seui-accessory-item-button-height);\n}\n\n.accessory-item > .accessory-item-button::after {\n background: url('data:image/svg+xml,<svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\"><g><title>Layer 1</title><g transform=\"rotate(45 8 8)\" stroke=\"null\" id=\"svg_28\"><rect stroke=\"%23000\" rx=\"1\" id=\"svg_20\" height=\"1.41129\" width=\"7.76211\" y=\"7.29435\" x=\"4.11895\" stroke-width=\"0\" fill=\"%234c4c4c\"/><rect stroke=\"%23000\" transform=\"matrix(0 0.705646 -0.705646 0 12.0262 3.97378)\" rx=\"1\" id=\"svg_27\" height=\"2\" width=\"11\" y=\"4.70572\" x=\"0.20572\" stroke-width=\"0\" fill=\"%234c4c4c\"/></g></g></svg>');\n display: block;\n content: \"\";\n position: absolute;\n background-repeat: no-repeat;\n background-position: center center;\n width: 100%;\n height: 100%;\n}\n\n.accessory-item > .accessory-item-content {\n color: var(--seui-accessory-item-content-color);\n font-size: var(--seui-accessory-item-content-font-size);\n padding: var(--seui-accessory-item-content-padding);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}"]}
@@ -1,4 +1,4 @@
1
- /*! Selective UI v1.2.7 | MIT License */
1
+ /*! Selective UI v1.3.1 | MIT License */
2
2
  /**
3
3
  * @class
4
4
  */
@@ -27,6 +27,7 @@ class iStorage {
27
27
  autofocus: true,
28
28
  searchable: true,
29
29
  loadingfield: true,
30
+ preload: false,
30
31
  visible: true,
31
32
  skipError: false,
32
33
  customDelimiter: ",",
@@ -36,8 +37,8 @@ class iStorage {
36
37
  textSelectAll: "Select all",
37
38
  textDeselectAll: "Deselect all",
38
39
  textAccessoryDeselect: "Deselect: ",
39
- animationtime: 200, // millisecond
40
- delaysearchtime: 200, // millisecond
40
+ animationtime: 200, // milliseconds
41
+ delaysearchtime: 200, // milliseconds
41
42
  allowHtml: false,
42
43
  maxSelected: 0,
43
44
  labelHalign: "left",
@@ -655,8 +656,7 @@ class Libs {
655
656
  tmp.innerHTML = s;
656
657
  tmp.querySelectorAll("script, style, iframe, object, embed, link").forEach((n) => n.remove());
657
658
  tmp.querySelectorAll("*").forEach((n) => {
658
- for (const k in n.attributes) {
659
- const a = n.attributes[k];
659
+ for (const a of Array.from(n.attributes)) {
660
660
  const name = a.name ?? "";
661
661
  const value = a.value ?? "";
662
662
  if (/^on/i.test(name)) {
@@ -697,26 +697,34 @@ class Libs {
697
697
  return s.replace(/đ/g, "d").replace(/Đ/g, "d");
698
698
  }
699
699
  /**
700
- * Parse select element to array (including optgroups)
701
- * @param {HTMLSelectElement} selectElement
702
- * @returns {Array<HTMLOptGroupElement|HTMLOptionElement>}
700
+ * Flattens a `<select>` element into an ordered array that includes optgroups
701
+ * and their child options.
702
+ *
703
+ * Notes:
704
+ * - Keeps original DOM order.
705
+ * - Adds a non-standard `__parentGroup` pointer on options inside optgroups.
706
+ *
707
+ * @param {HTMLSelectElement} selectElement - The source select element.
708
+ * @returns {Array<HTMLOptGroupElement | HTMLOptionElement>} Flattened node list.
703
709
  */
704
710
  static parseSelectToArray(selectElement) {
705
711
  const result = [];
706
- const children = Array.from(selectElement.children);
707
- children.forEach((child) => {
712
+ const children = selectElement.children;
713
+ for (let childIndex = 0; childIndex < children.length; childIndex++) {
714
+ const child = children[childIndex];
708
715
  if (child.tagName === "OPTGROUP") {
709
716
  const group = child;
710
717
  result.push(group);
711
- Array.from(group.children).forEach((option) => {
718
+ for (let optionIndex = 0; optionIndex < group.children.length; optionIndex++) {
719
+ const option = group.children[optionIndex];
712
720
  option["__parentGroup"] = group;
713
721
  result.push(option);
714
- });
722
+ }
715
723
  }
716
724
  else if (child.tagName === "OPTION") {
717
725
  result.push(child);
718
726
  }
719
- });
727
+ }
720
728
  return result;
721
729
  }
722
730
  /**
@@ -2398,7 +2406,7 @@ class Popup extends Lifecycle {
2398
2406
  }
2399
2407
  : {};
2400
2408
  // Load ModelManager resources into the list container
2401
- this.modelManager.load(this.optionsContainer, { isMultiple: options.multiple }, recyclerViewOpt);
2409
+ this.modelManager.load(this.optionsContainer, { isMultiple: options.multiple, options: options }, recyclerViewOpt);
2402
2410
  const MMResources = this.modelManager.getResources();
2403
2411
  this.optionAdapter = MMResources.adapter;
2404
2412
  this.recyclerView = MMResources.recyclerView;
@@ -2525,36 +2533,60 @@ class Popup extends Lifecycle {
2525
2533
  setupEffector(effectorSvc) {
2526
2534
  this.effSvc = effectorSvc;
2527
2535
  }
2536
+ /**
2537
+ * Loads and initializes the popup (one-time setup):
2538
+ * - Appends the popup node to `document.body`
2539
+ * - Initializes the resize observer service
2540
+ * - Binds the effect service to the popup element
2541
+ * - Blocks mousedown events inside the popup to prevent auto-close
2542
+ *
2543
+ * Safely no-ops when the popup has already been created
2544
+ * or required dependencies are missing.
2545
+ */
2546
+ load() {
2547
+ if (!this.node || !this.parent || !this.effSvc)
2548
+ return;
2549
+ if (this.isCreated)
2550
+ return;
2551
+ document.body.appendChild(this.node);
2552
+ this.isCreated = true;
2553
+ this.resizeObser = new ResizeObserverService();
2554
+ this.effSvc.setElement(this.node);
2555
+ this.node.addEventListener("mousedown", (e) => {
2556
+ e.stopPropagation();
2557
+ e.preventDefault();
2558
+ });
2559
+ }
2528
2560
  /**
2529
2561
  * Opens (expands) the popup:
2530
- * - On first open: appends to `document.body`, sets up resize observer, and blocks outside mousedown
2531
- * - Synchronizes the OptionHandle visibility and (optionally) the empty state
2532
- * - Computes placement from the parent anchor and runs the expand animation
2533
- * - Resumes recycler view after the animation completes
2562
+ * - Ensures the popup is loaded and initialized
2563
+ * - Synchronizes option handle visibility
2564
+ * - Optionally evaluates and applies the empty/not-found state
2565
+ * - Computes placement relative to the parent anchor
2566
+ * - Runs the expand animation
2567
+ * - Connects the resize observer after animation completes
2568
+ * - Resumes the recycler view
2569
+ *
2570
+ * Safely no-ops when required dependencies are missing.
2534
2571
  *
2535
2572
  * @param callback - Optional callback invoked when the opening animation completes.
2536
- * @param isShowEmptyState - If true, evaluates and applies empty/not-found state before animation.
2573
+ * @param isShowEmptyState - If true, applies the empty/not-found state before animation.
2537
2574
  */
2538
2575
  open(callback = null, isShowEmptyState) {
2539
2576
  if (!this.node || !this.options || !this.optionHandle || !this.parent || !this.effSvc)
2540
2577
  return;
2541
- if (!this.isCreated) {
2542
- document.body.appendChild(this.node);
2543
- this.isCreated = true;
2544
- this.resizeObser = new ResizeObserverService();
2545
- this.effSvc.setElement(this.node);
2546
- // Prevent the popup from closing when clicking inside
2547
- this.node.addEventListener("mousedown", (e) => {
2548
- e.stopPropagation();
2549
- e.preventDefault();
2550
- });
2551
- }
2578
+ // Ensure one-time initialization
2579
+ this.load();
2580
+ // Sync option visibility state
2552
2581
  this.optionHandle.update();
2582
+ // Apply empty state if requested
2553
2583
  if (isShowEmptyState) {
2554
2584
  this.updateEmptyState();
2555
2585
  }
2586
+ // Compute placement based on parent anchor
2556
2587
  const location = this.getParentLocation();
2557
2588
  const { position, top, maxHeight, realHeight } = this.calculatePosition(location);
2589
+ // Run expand animation
2558
2590
  this.effSvc.expand({
2559
2591
  duration: this.options.animationtime,
2560
2592
  display: "flex",
@@ -2567,13 +2599,14 @@ class Popup extends Lifecycle {
2567
2599
  onComplete: () => {
2568
2600
  if (!this.resizeObser || !this.parent)
2569
2601
  return;
2602
+ // Recompute position on parent resize to keep behavior consistent
2570
2603
  this.resizeObser.onChanged = (_metrics) => {
2571
- // Recompute from parent each time to keep behavior identical.
2572
2604
  const loc = this.getParentLocation();
2573
2605
  this.handleResize(loc);
2574
2606
  };
2575
2607
  this.resizeObser.connect(this.parent.container.tags.ViewPanel);
2576
2608
  callback?.();
2609
+ // Resume recycler view rendering after animation
2577
2610
  const rv = this.recyclerView;
2578
2611
  rv?.resume?.();
2579
2612
  },
@@ -6464,8 +6497,18 @@ class View extends Lifecycle {
6464
6497
  * @see {@link View}
6465
6498
  */
6466
6499
  class GroupView extends View {
6467
- constructor() {
6468
- super(...arguments);
6500
+ /**
6501
+ * Creates a new GroupView bound to the given parent element.
6502
+ *
6503
+ * Initialization flow:
6504
+ * 1. Calls `super(parent)` (View base constructor).
6505
+ *
6506
+ * @public
6507
+ * @param {HTMLElement} parent - Container element that will host this group view.
6508
+ * @param {SelectiveOptions} options - Optional configuration for this group view.
6509
+ */
6510
+ constructor(parent, options) {
6511
+ super(parent);
6469
6512
  /**
6470
6513
  * Strongly-typed reference to the mounted group view structure.
6471
6514
  *
@@ -6480,6 +6523,16 @@ class GroupView extends View {
6480
6523
  * @public
6481
6524
  */
6482
6525
  this.view = null;
6526
+ /**
6527
+ * Parsed configuration (bound from the `<select>` element via binder map).
6528
+ *
6529
+ * Provides feature flags (multiple/disabled/readonly/visible/virtualScroll/ajax/autoclose…),
6530
+ * a11y ids (e.g. `SEID_LIST`, `SEID_HOLDER`) and user callbacks under `options.on`.
6531
+ *
6532
+ * @internal
6533
+ */
6534
+ this.options = null;
6535
+ this.options = options;
6483
6536
  }
6484
6537
  /**
6485
6538
  * Mounts the group view into the DOM.
@@ -6487,8 +6540,8 @@ class GroupView extends View {
6487
6540
  * Creation flow:
6488
6541
  * 1. Generates unique group ID (7-character random string).
6489
6542
  * 2. Creates DOM structure via {@link Libs.mountNode}:
6490
- * - Root: `<div role="group" aria-labelledby="seui-{id}-header">`
6491
- * - Header: `<div role="presentation" id="seui-{id}-header">`
6543
+ * - Root: `<div role="group" aria-labelledby="seui-{this.options?.SEID || default}-{id}-header">`
6544
+ * - Header: `<div role="presentation" id="seui-{this.options?.SEID || default}-{id}-header">`
6492
6545
  * - Items: `<div role="group">` (nested group for child items)
6493
6546
  * 3. Appends root to {@link parent} container.
6494
6547
  * 4. Transitions `INITIALIZED → MOUNTED` via `super.mount()`.
@@ -6514,8 +6567,8 @@ class GroupView extends View {
6514
6567
  node: "div",
6515
6568
  classList: ["seui-group"],
6516
6569
  role: "group",
6517
- ariaLabelledby: `seui-${group_id}-header`,
6518
- id: `seui-${group_id}-group`,
6570
+ ariaLabelledby: `seui-${this.options?.SEID || "default"}-${group_id}-header`,
6571
+ id: `seui-${this.options?.SEID || "default"}-${group_id}-group`,
6519
6572
  },
6520
6573
  child: {
6521
6574
  GroupHeader: {
@@ -6523,7 +6576,7 @@ class GroupView extends View {
6523
6576
  node: "div",
6524
6577
  classList: ["seui-group-header"],
6525
6578
  role: "presentation",
6526
- id: `seui-${group_id}-header`,
6579
+ id: `seui-${this.options?.SEID || "default"}-${group_id}-header`,
6527
6580
  },
6528
6581
  },
6529
6582
  GroupItems: {
@@ -6732,8 +6785,9 @@ class OptionView extends View {
6732
6785
  *
6733
6786
  * @public
6734
6787
  * @param {HTMLElement} parent - Container element that will host this option view.
6788
+ * @param {SelectiveOptions} options - Optional configuration for this option view.
6735
6789
  */
6736
- constructor(parent) {
6790
+ constructor(parent, options) {
6737
6791
  super(parent);
6738
6792
  /**
6739
6793
  * Strongly-typed reference to the mounted option view structure.
@@ -6749,6 +6803,15 @@ class OptionView extends View {
6749
6803
  * @public
6750
6804
  */
6751
6805
  this.view = null;
6806
+ /**
6807
+ * Parsed configuration (bound from the `<select>` element via binder map).
6808
+ *
6809
+ * Provides feature flags (multiple/disabled/readonly/visible/virtualScroll/ajax/autoclose…),
6810
+ * a11y ids (e.g. `SEID_LIST`, `SEID_HOLDER`) and user callbacks under `options.on`.
6811
+ *
6812
+ * @internal
6813
+ */
6814
+ this.options = null;
6752
6815
  /**
6753
6816
  * Internal configuration object (Proxy target).
6754
6817
  *
@@ -6790,6 +6853,7 @@ class OptionView extends View {
6790
6853
  * @private
6791
6854
  */
6792
6855
  this.isRendered = false;
6856
+ this.options = options;
6793
6857
  this.initialize();
6794
6858
  }
6795
6859
  /**
@@ -6994,7 +7058,7 @@ class OptionView extends View {
6994
7058
  mount() {
6995
7059
  const viewClass = ["seui-option-view"];
6996
7060
  const opt_id = Libs.randomString(7);
6997
- const inputID = `option_${opt_id}`;
7061
+ const inputID = `option_${this.options?.SEID ?? "default"}_${opt_id}`;
6998
7062
  if (this.config.isMultiple)
6999
7063
  viewClass.push("multiple");
7000
7064
  if (this.config.hasImage) {
@@ -7040,7 +7104,7 @@ class OptionView extends View {
7040
7104
  OptionView: {
7041
7105
  tag: {
7042
7106
  node: "div",
7043
- id: `seui-${opt_id}-option`,
7107
+ id: `seui-${this.options?.SEID ?? "default"}-${opt_id}-option`,
7044
7108
  classList: viewClass,
7045
7109
  role: "option",
7046
7110
  ariaSelected: "false",
@@ -7254,6 +7318,15 @@ class MixedAdapter extends Adapter {
7254
7318
  super(items);
7255
7319
  /** Whether the adapter operates in multi-selection mode. */
7256
7320
  this.isMultiple = false;
7321
+ /**
7322
+ * Parsed configuration (bound from the `<select>` element via binder map).
7323
+ *
7324
+ * Provides feature flags (multiple/disabled/readonly/visible/virtualScroll/ajax/autoclose…),
7325
+ * a11y ids (e.g. `SEID_LIST`, `SEID_HOLDER`) and user callbacks under `options.on`.
7326
+ *
7327
+ * @internal
7328
+ */
7329
+ this.options = null;
7257
7330
  /**
7258
7331
  * Subscribers for aggregated visibility statistics.
7259
7332
  * Fired via a debounced scheduler to avoid repeated recomputation during batch updates.
@@ -7346,8 +7419,8 @@ class MixedAdapter extends Adapter {
7346
7419
  */
7347
7420
  viewHolder(parent, item) {
7348
7421
  if (item instanceof GroupModel)
7349
- return new GroupView(parent);
7350
- return new OptionView(parent);
7422
+ return new GroupView(parent, this.options);
7423
+ return new OptionView(parent, this.options);
7351
7424
  }
7352
7425
  /**
7353
7426
  * Binds a model (group or option) to its view and delegates to specialized handlers.
@@ -7415,7 +7488,7 @@ class MixedAdapter extends Adapter {
7415
7488
  groupModel.items.forEach((optionModel, idx) => {
7416
7489
  let optionViewer = optionModel.view;
7417
7490
  if (!optionModel.isInit || !optionViewer) {
7418
- optionViewer = new OptionView(itemsContainer);
7491
+ optionViewer = new OptionView(itemsContainer, this.options);
7419
7492
  }
7420
7493
  this.handleOptionView(optionModel, optionViewer, idx);
7421
7494
  optionModel.isInit = true;
@@ -9172,16 +9245,17 @@ class SelectBox extends Lifecycle {
9172
9245
  });
9173
9246
  this.optionModelManager = optionModelManager;
9174
9247
  // Popup
9175
- container.popup = new Popup(select, options, optionModelManager);
9176
- container.popup.setupEffector(effector);
9177
- container.popup.setupInfiniteScroll(searchController, options);
9178
- container.popup.onAdapterPropChanged("selected", () => {
9248
+ const popup = new Popup(select, options, optionModelManager);
9249
+ container.popup = popup;
9250
+ popup.setupEffector(effector);
9251
+ popup.setupInfiniteScroll(searchController, options);
9252
+ popup.onAdapterPropChanged("selected", () => {
9179
9253
  this.getAction()?.change(null, true);
9180
9254
  });
9181
- container.popup.onAdapterPropChanged("selected_internal", () => {
9255
+ popup.onAdapterPropChanged("selected_internal", () => {
9182
9256
  this.getAction()?.change(null, false);
9183
9257
  });
9184
- container.popup.onAdapterPropChanging("select", () => {
9258
+ popup.onAdapterPropChanging("select", () => {
9185
9259
  this.oldValue = this.getAction()?.value ?? "";
9186
9260
  });
9187
9261
  accessoryBox.setRoot(container.tags.ViewPanel);
@@ -9238,7 +9312,11 @@ class SelectBox extends Lifecycle {
9238
9312
  Refresher.resizeBox(select, container.tags.ViewPanel);
9239
9313
  select.classList.add("init");
9240
9314
  // initial mask
9241
- this.getAction()?.change(null, false);
9315
+ const action = this.getAction();
9316
+ action?.change?.(null, false);
9317
+ if (this.options.preload) {
9318
+ action?.load?.();
9319
+ }
9242
9320
  // Call parent lifecycle mount
9243
9321
  super.mount();
9244
9322
  }
@@ -9678,6 +9756,26 @@ class SelectBox extends Lifecycle {
9678
9756
  }
9679
9757
  this.change(false, trigger);
9680
9758
  },
9759
+ load() {
9760
+ if ((!superThis.hasLoadedOnce || superThis.isBeforeSearch) && bindedOptions?.ajax) {
9761
+ container.searchController.resetPagination();
9762
+ container.popup.showLoading();
9763
+ superThis.hasLoadedOnce = true;
9764
+ superThis.isBeforeSearch = false;
9765
+ setTimeout(() => {
9766
+ if (!container.popup || !container.searchController)
9767
+ return;
9768
+ container.searchController
9769
+ .search("")
9770
+ .then(() => container.popup?.triggerResize?.())
9771
+ .catch((err) => console.error("Initial ajax load error:", err));
9772
+ }, bindedOptions.animationtime);
9773
+ container.popup.load();
9774
+ }
9775
+ else {
9776
+ container.popup.load();
9777
+ }
9778
+ },
9681
9779
  open() {
9682
9780
  if (superThis.isOpen)
9683
9781
  return;
@@ -9687,45 +9785,34 @@ class SelectBox extends Lifecycle {
9687
9785
  if (closeToken.isCancel)
9688
9786
  return;
9689
9787
  }
9690
- if (this.disabled)
9788
+ if (this.disabled) {
9691
9789
  return;
9790
+ }
9692
9791
  const beforeShowToken = iEvents.callEvent([getInstance()], ...bindedOptions.on.beforeShow);
9693
- if (beforeShowToken.isCancel)
9792
+ if (beforeShowToken.isCancel) {
9694
9793
  return;
9794
+ }
9695
9795
  superThis.isOpen = true;
9696
9796
  container.directive.setDropdown(true);
9697
9797
  const adapter = container.popup.optionAdapter;
9698
9798
  const selectedOption = adapter.getSelectedItem();
9699
- if (selectedOption)
9799
+ if (selectedOption) {
9700
9800
  adapter.setHighlight(selectedOption, false);
9701
- else
9702
- adapter.resetHighlight();
9703
- if ((!superThis.hasLoadedOnce || superThis.isBeforeSearch) && bindedOptions?.ajax) {
9704
- container.searchController.resetPagination();
9705
- container.popup.showLoading();
9706
- superThis.hasLoadedOnce = true;
9707
- superThis.isBeforeSearch = false;
9708
- setTimeout(() => {
9709
- if (!container.popup || !container.searchController)
9710
- return;
9711
- container.searchController
9712
- .search("")
9713
- .then(() => container.popup?.triggerResize?.())
9714
- .catch((err) => console.error("Initial ajax load error:", err));
9715
- }, bindedOptions.animationtime);
9716
- container.popup.open(null, false);
9717
9801
  }
9718
9802
  else {
9719
- container.popup.open(null, true);
9803
+ adapter.resetHighlight();
9720
9804
  }
9805
+ this.load();
9806
+ container.popup.open(null, !container.popup.loadingState.isVisible);
9721
9807
  container.searchbox.show();
9722
9808
  const ViewPanel = container.tags.ViewPanel;
9723
9809
  ViewPanel.setAttribute("aria-expanded", "true");
9724
9810
  ViewPanel.setAttribute("aria-controls", bindedOptions.SEID_LIST);
9725
9811
  ViewPanel.setAttribute("aria-haspopup", "listbox");
9726
9812
  ViewPanel.setAttribute("aria-labelledby", bindedOptions.SEID_HOLDER);
9727
- if (bindedOptions.multiple)
9813
+ if (bindedOptions.multiple) {
9728
9814
  ViewPanel.setAttribute("aria-multiselectable", "true");
9815
+ }
9729
9816
  iEvents.callEvent([getInstance()], ...bindedOptions.on.show);
9730
9817
  if (superThis.pluginContext) {
9731
9818
  superThis.runPluginHook("onOpen", (plugin) => plugin.onOpen?.(superThis.pluginContext));
@@ -10805,7 +10892,7 @@ const SECLASS = new Selective();
10805
10892
  *
10806
10893
  * Declared as `const` literal type to enable strict typing and easy tree-shaking.
10807
10894
  */
10808
- const version = "1.2.7";
10895
+ const version = "1.3.1";
10809
10896
  /**
10810
10897
  * Library name identifier.
10811
10898
  *