selectic 3.1.5 → 3.2.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.
@@ -32,7 +32,7 @@ function styleInject(css, ref) {
32
32
  }
33
33
  }
34
34
 
35
- var css_248z = "/* {{{ Variables */\n\n:root {\n --selectic-font-size: 14px;\n --selectic-cursor-disabled: not-allowed;\n\n /* The main element */\n --selectic-color: #555555;\n --selectic-bg: #ffffff;\n\n /* The main element (when disabled) */\n --selectic-color-disabled: #787878;\n --selectic-bg-disabled: #eeeeee;\n\n /* The list */\n --selectic-panel-bg: #f0f0f0;\n --selectic-separator-bordercolor: #cccccc;\n /* --selectic-item-color: var(--selectic-color); /* Can be set in any CSS configuration */\n\n /* The current selected item */\n --selectic-selected-item-color: #428bca;\n\n /* When mouse is over items or by selecting with key arrows */\n --selectic-active-item-color: #ffffff;\n --selectic-active-item-bg: #66afe9;\n\n /* Selected values in main element */\n --selectic-value-bg: #f0f0f0;\n /* --selectic-more-items-bg: var(--selectic-info-bg); /* can be set in any CSS configuration */\n /* --selectic-more-items-color: var(--selectic-info-color); /* can be set in any CSS configuration */\n --selectic-more-items-bg-disabled: #cccccc;\n\n /* Information message */\n --selectic-info-bg: #5bc0de;\n --selectic-info-color: #ffffff;\n\n /* Error message */\n --selectic-error-bg: #b72c29;\n --selectic-error-color: #ffffff;\n\n /* XXX: Currently it is important to keep this size for a correct scroll\n * height estimation */\n --selectic-input-height: 30px;\n}\n\n/* }}} */\n/* {{{ Bootstrap equivalent style */\n\n.selectic .form-control {\n display: block;\n width: 100%;\n height: calc(var(--selectic-input-height) - 2px);\n font-size: var(--selectic-font-size);\n line-height: 1.42857143;\n color: var(--selectic-color);\n background-color: var(--selectic-bg);\n background-image: none;\n border: 1px solid var(--selectic-separator-bordercolor); /* should use a better variable */\n border-radius: 4px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n.selectic .has-feedback {\n position: relative;\n}\n.selectic .has-feedback .form-control {\n padding-right: calc(var(--selectic-input-height) + 4px);\n}\n\n.selectic .form-control-feedback.fa,\n.selectic .form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: calc(var(--selectic-input-height) + 4px);\n height: calc(var(--selectic-input-height) + 4px);\n line-height: var(--selectic-input-height);\n text-align: center;\n pointer-events: none;\n}\n\n.selectic .alert-info {\n background-color: var(--selectic-info-bg);\n color: var(--selectic-info-color);\n}\n\n.selectic .alert-danger {\n background-color: var(--selectic-error-bg);\n color: var(--selectic-error-color);\n}\n\n/* }}} */\n\n.selectic * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.selectic.form-control {\n display: inline-block;\n padding: 0;\n cursor: pointer;\n border: unset;\n}\n\n.has-feedback .selectic__icon-container.form-control-feedback {\n right: 0;\n}\n\n/* The input which contains the selected value\n * XXX: This input should stay hidden behind other elements, but is \"visible\"\n * (in term of DOM point of view) in order to get and to trigger the `focus`\n * DOM event. */\n.selectic__input-value {\n position: fixed;\n opacity: 0;\n z-index: -1000;\n top: -100px;\n}\n\n/* XXX: .form-control has been added to this selector to improve priority and\n * override some rules of the original .form-control */\n.selectic-input.form-control {\n display: inline-flex;\n justify-content: space-between;\n overflow: hidden;\n width: 100%;\n min-height: var(--selectic-input-height);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: 5px;\n line-height: calc(var(--selectic-input-height) - 4px);\n color: var(--selectic-color);\n}\n\n.selectic-input__reverse-icon {\n align-self: center;\n margin-right: 3px;\n cursor: default;\n}\n.selectic-input__clear-icon {\n align-self: center;\n margin-left: 3px;\n cursor: pointer;\n}\n.selectic-input__clear-icon:hover {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic-input.focused {\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n}\n\n.selectic-input.disabled {\n cursor: var(--selectic-cursor-disabled);\n background-color: var(--selectic-bg-disabled);\n}\n.selectic-input.disabled .more-items {\n\tbackground-color: var(--selectic-more-items-bg-disabled);\n}\n\n.selectic-input__selected-items {\n display: inline-flex;\n flex-wrap: nowrap;\n align-items: center;\n white-space: nowrap;\n}\n\n.selectic-input__selected-items__placeholder {\n font-style: italic;\n opacity: 0.7;\n white-space: nowrap;\n}\n\n.selectic-icon {\n color: var(--selectic-color);\n text-align: center;\n vertical-align: middle;\n}\n\n.selectic__extended-list {\n position: fixed;\n top: var(--top-position, 0);\n z-index: 2000;\n height: auto;\n max-height: var(--availableSpace);\n background-color: var(--selectic-bg, #ffffff);\n box-shadow: 2px 5px 12px 0px #888888;\n border-radius: 0 0 4px 4px;\n padding: 0;\n width: var(--list-width, 200px);\n min-width: 200px;\n display: grid;\n grid-template-rows: minmax(0, max-content) 1fr;\n}\n.selectic__extended-list.selectic-position-top {\n box-shadow: 2px -3px 12px 0px #888888;\n}\n.selectic__extended-list__list-container{\n overflow: auto;\n}\n.selectic__extended-list__list-items {\n max-height: calc(var(--selectic-input-height) * 10);\n min-width: max-content;\n padding-left: 0;\n}\n\n.selectic-item {\n display: block;\n position: relative;\n box-sizing: border-box;\n padding: 2px 8px;\n color: var(--selectic-item-color, var(--selectic-color));\n min-height: calc(var(--selectic-input-height) - 3px);\n list-style-type: none;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.selectic-item_text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.selectic-item:not(.selected) .selectic-item_icon {\n opacity: 0;\n}\n\n.selectic-item_text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.selectic-item__active {\n background-color: var(--selectic-active-item-bg);\n color: var(--selectic-active-item-color);\n}\n.selectic-item__active:not(.selected) .selectic-item_icon {\n opacity: 0.2;\n}\n.selectic-item__active.selectic-item__disabled:not(.selected) .selectic-item_icon {\n opacity: 0;\n}\n\n.selectic-item__disabled {\n color: var(--selectic-color-disabled);\n background-color: var(--selectic-bg-disabled);\n}\n\n.selectic-item__is-in-group {\n padding-left: 2em;\n}\n\n.selectic-item__is-group {\n font-weight: bold;\n cursor: default;\n}\n\n.selectic-item__is-group.selectable {\n cursor: pointer;\n}\n\n.selectic-item.selected {\n color: var(--selectic-selected-item-color);\n}\n.selectic-search-scope {\n color: #e0e0e0;\n left: auto;\n right: 10px;\n}\n.selectic .form-control-feedback.fa.selectic-search-scope {\n width: calc(var(--selectic-input-height) * 0.75);\n height: calc(var(--selectic-input-height) * 0.75);\n line-height: calc(var(--selectic-input-height) * 0.75);\n}\n\n.selectic__message {\n text-align: center;\n padding: 3px;\n}\n\n.selectic .filter-panel {\n padding: 3px;\n margin-left: 0px;\n margin-right: 0px;\n background-color: var(--selectic-panel-bg);\n border-bottom: 1px solid var(--selectic-separator-bordercolor);\n}\n\n.selectic .panelclosed {\n max-height: 0px;\n transition: max-height 0.3s ease-out;\n overflow: hidden;\n}\n\n.panelopened {\n max-height: 200px;\n transition: max-height 0.3s ease-in;\n overflow: hidden;\n}\n\n.selectic .filter-panel__input {\n padding-left: 0px;\n padding-right: 0px;\n padding-bottom: 10px;\n margin-bottom: 0px;\n}\n.selectic .filter-input {\n height: calc(var(--selectic-input-height) * 0.75);\n}\n\n.selectic .checkbox-filter {\n padding: 5px;\n text-align: center;\n}\n\n.selectic .curtain-handler {\n text-align: center;\n}\n\n.selectic .toggle-selectic {\n margin: 5px;\n padding-left: 0px;\n padding-right: 0px;\n}\n\n.selectic .toggle-boolean-select-all-toggle {\n display: inline;\n margin-right: 15px;\n}\n\n.selectic .toggle-boolean-excluding-toggle {\n display: inline;\n margin-right: 15px;\n}\n\n.selectic .single-value {\n display: grid;\n grid-template: \"value icon\" 1fr / max-content max-content;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 0;\n margin-right: 5px;\n /* margin top/bottom are mainly to create a gutter in multilines */\n margin-top: 2px;\n margin-bottom: 2px;\n\n border-radius: 3px;\n background-color: var(--selectic-value-bg);\n max-height: calc(var(--selectic-input-height) - 10px);\n max-width: 100%;\n min-width: 30px;\n\n overflow: hidden;\n white-space: nowrap;\n line-height: initial;\n vertical-align: middle;\n}\n\n.selectic .more-items {\n display: inline-block;\n\n padding-left: 5px;\n padding-right: 5px;\n border-radius: 10px;\n\n background-color: var(--selectic-more-items-bg, var(--selectic-info-bg));\n color: var(--selectic-more-items-color, var(--selectic-info-color));\n cursor: help;\n}\n.selectic-input__selected-items__value {\n grid-area: value;\n align-self: center;\n justify-self: normal;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.selectic-input__selected-items__icon {\n grid-area: icon;\n align-self: center;\n justify-self: center;\n margin-left: 5px;\n}\n.selectic-input__selected-items__icon:hover {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic__label-disabled {\n opacity: 0.5;\n transition: opacity 400ms;\n}\n\n/* XXX: override padding of bootstrap input-sm.\n * This padding introduce a line shift. */\n.selectic.input-sm {\n padding: 0;\n}\n\n/* {{{ overflow multiline */\n\n.selectic--overflow-multiline,\n.selectic--overflow-multiline.form-control,\n.selectic--overflow-multiline .form-control {\n height: unset;\n}\n\n.selectic--overflow-multiline .selectic-input {\n overflow: unset;\n}\n\n.selectic--overflow-multiline .selectic-input__selected-items {\n flex-wrap: wrap;\n}\n\n/* {{{ icons */\n\n@keyframes selectic-animation-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(359deg);\n }\n}\n\n.selectic__icon {\n height: 1em;\n fill: currentColor;\n}\n\n.selectic-spin {\n animation: selectic-animation-spin 2s infinite linear;\n}\n\n/* }}} */\n";
35
+ var css_248z = "/* {{{ Variables */\n\n:root {\n --selectic-font-size: 14px;\n --selectic-cursor-disabled: not-allowed;\n\n /* The main element */\n --selectic-color: #555555;\n --selectic-bg: #ffffff;\n\n /* The main element (when disabled) */\n --selectic-color-disabled: #787878;\n --selectic-bg-disabled: #eeeeee;\n\n /* The list */\n --selectic-panel-bg: #f0f0f0;\n --selectic-separator-bordercolor: #cccccc;\n /* --selectic-item-color: var(--selectic-color); /* Can be set in any CSS configuration */\n\n /* The current selected item */\n --selectic-selected-item-color: #428bca;\n\n /* When mouse is over items or by selecting with key arrows */\n --selectic-active-item-color: #ffffff;\n --selectic-active-item-bg: #66afe9;\n\n /* Selected values in main element */\n --selectic-value-bg: #f0f0f0;\n /* --selectic-more-items-bg: var(--selectic-info-bg); /* can be set in any CSS configuration */\n /* --selectic-more-items-color: var(--selectic-info-color); /* can be set in any CSS configuration */\n --selectic-more-items-bg-disabled: #cccccc;\n\n /* Information message */\n --selectic-info-bg: #5bc0de;\n --selectic-info-color: #ffffff;\n\n /* Error message */\n --selectic-error-bg: #b72c29;\n --selectic-error-color: #ffffff;\n\n /* XXX: Currently it is important to keep this size for a correct scroll\n * height estimation */\n --selectic-input-height: 30px;\n}\n\n/* }}} */\n/* {{{ Bootstrap equivalent style */\n\n.selectic .form-control {\n display: block;\n width: 100%;\n height: calc(var(--selectic-input-height) - 2px);\n font-size: var(--selectic-font-size);\n line-height: 1.42857143;\n color: var(--selectic-color);\n background-color: var(--selectic-bg);\n background-image: none;\n border: 1px solid var(--selectic-separator-bordercolor); /* should use a better variable */\n border-radius: 4px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.selectic .has-feedback {\n position: relative;\n}\n\n.selectic .has-feedback .form-control {\n padding-right: calc(var(--selectic-input-height) + 4px);\n}\n\n.selectic .form-control-feedback.fa,\n.selectic .form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: calc(var(--selectic-input-height) + 4px);\n height: calc(var(--selectic-input-height) + 4px);\n line-height: var(--selectic-input-height);\n text-align: center;\n pointer-events: none;\n}\n\n.selectic .alert-info {\n background-color: var(--selectic-info-bg);\n color: var(--selectic-info-color);\n}\n\n.selectic .alert-danger {\n background-color: var(--selectic-error-bg);\n color: var(--selectic-error-color);\n}\n\n/* }}} */\n\n.selectic * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.selectic.form-control {\n display: inline-block;\n padding: 0;\n cursor: pointer;\n border: unset;\n}\n\n.has-feedback .selectic__icon-container.form-control-feedback {\n right: 0;\n}\n\n/* The input which contains the selected value\n * XXX: This input should stay hidden behind other elements, but is \"visible\"\n * (in term of DOM point of view) in order to get and to trigger the `focus`\n * DOM event. */\n.selectic__input-value {\n position: fixed;\n opacity: 0;\n z-index: -1000;\n top: -100px;\n}\n\n/* XXX: .form-control has been added to this selector to improve priority and\n * override some rules of the original .form-control */\n.selectic-input.form-control {\n display: inline-flex;\n justify-content: space-between;\n overflow: hidden;\n width: 100%;\n min-height: var(--selectic-input-height);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: 5px;\n line-height: calc(var(--selectic-input-height) - 4px);\n color: var(--selectic-color);\n}\n\n.selectic-input__reverse-icon {\n align-self: center;\n margin-right: 3px;\n cursor: default;\n}\n\n.selectic-input__clear-icon {\n align-self: center;\n margin-left: 3px;\n cursor: pointer;\n}\n\n.selectic-input__clear-icon:hover {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic-input.focused {\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n}\n\n.selectic-input.disabled {\n cursor: var(--selectic-cursor-disabled);\n background-color: var(--selectic-bg-disabled);\n}\n\n.selectic-input.disabled .more-items {\n\tbackground-color: var(--selectic-more-items-bg-disabled);\n}\n\n.selectic-input__selected-items {\n display: inline-flex;\n flex-wrap: nowrap;\n align-items: center;\n white-space: nowrap;\n}\n\n.selectic-input__selected-items__placeholder {\n font-style: italic;\n opacity: 0.7;\n white-space: nowrap;\n}\n\n.selectic-icon {\n color: var(--selectic-color);\n text-align: center;\n vertical-align: middle;\n}\n\n.selectic__extended-list {\n position: fixed;\n top: var(--top-position, 0);\n z-index: 2000;\n height: auto;\n max-height: var(--availableSpace);\n background-color: var(--selectic-bg, #ffffff);\n box-shadow: 2px 5px 12px 0px #888888;\n border-radius: 0 0 4px 4px;\n padding: 0;\n width: var(--list-width, 200px);\n min-width: 200px;\n display: grid;\n grid-template-rows: minmax(0, max-content) 1fr;\n}\n\n.selectic__extended-list.selectic-position-top {\n box-shadow: 2px -3px 12px 0px #888888;\n}\n\n.selectic__extended-list__list-container{\n overflow: auto;\n}\n\n.selectic__extended-list__list-items {\n max-height: calc(var(--selectic-input-height) * 10);\n min-width: max-content;\n padding-left: 0;\n}\n\n.selectic-item {\n display: block;\n position: relative;\n box-sizing: border-box;\n padding: 2px 8px;\n color: var(--selectic-item-color, var(--selectic-color));\n min-height: calc(var(--selectic-input-height) - 3px);\n list-style-type: none;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.selectic-item_text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.selectic-item:not(.selected) .selectic-item_icon {\n opacity: 0;\n}\n\n.selectic-item_text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.selectic-item__active {\n background-color: var(--selectic-active-item-bg);\n color: var(--selectic-active-item-color);\n}\n\n.selectic-item__active:not(.selected) .selectic-item_icon {\n opacity: 0.2;\n}\n\n.selectic-item__active:not(.selected) .single-select_icon {\n opacity: 0;\n}\n\n.selectic-item__active.selectic-item__disabled:not(.selected) .selectic-item_icon {\n opacity: 0;\n}\n\n.selectic-item__disabled {\n color: var(--selectic-color-disabled);\n background-color: var(--selectic-bg-disabled);\n}\n\n.selectic-item__is-in-group {\n padding-left: 2em;\n}\n\n.selectic-item__is-group {\n font-weight: bold;\n cursor: default;\n}\n\n.selectic-item__is-group.selectable {\n cursor: pointer;\n}\n\n.selectic-item.selected {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic-search-scope {\n color: #e0e0e0;\n left: auto;\n right: 10px;\n}\n\n.selectic .form-control-feedback.fa.selectic-search-scope {\n width: calc(var(--selectic-input-height) * 0.75);\n height: calc(var(--selectic-input-height) * 0.75);\n line-height: calc(var(--selectic-input-height) * 0.75);\n}\n\n.selectic__message {\n text-align: center;\n padding: 3px;\n}\n\n.selectic .filter-panel {\n padding: 3px;\n margin-left: 0px;\n margin-right: 0px;\n background-color: var(--selectic-panel-bg);\n border-bottom: 1px solid var(--selectic-separator-bordercolor);\n}\n\n.selectic .panelclosed {\n max-height: 0px;\n transition: max-height 0.3s ease-out;\n overflow: hidden;\n}\n\n.panelopened {\n max-height: 200px;\n transition: max-height 0.3s ease-in;\n overflow: hidden;\n}\n\n.selectic .filter-panel__input {\n padding-left: 0px;\n padding-right: 0px;\n padding-bottom: 10px;\n margin-bottom: 0px;\n}\n\n.selectic .filter-input {\n height: calc(var(--selectic-input-height) * 0.75);\n}\n\n.selectic .checkbox-filter {\n padding: 5px;\n text-align: center;\n}\n\n.selectic .curtain-handler {\n text-align: center;\n}\n\n.selectic .toggle-selectic {\n margin: 5px;\n padding-left: 0px;\n padding-right: 0px;\n}\n\n.selectic .toggle-boolean-select-all-toggle {\n display: inline;\n margin-right: 15px;\n}\n\n.selectic .toggle-boolean-excluding-toggle {\n display: inline;\n margin-right: 15px;\n}\n\n.selectic .single-value {\n display: grid;\n grid-template: \"value icon\" 1fr / max-content max-content;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 0;\n margin-right: 5px;\n /* margin top/bottom are mainly to create a gutter in multilines */\n margin-top: 2px;\n margin-bottom: 2px;\n\n border-radius: 3px;\n background-color: var(--selectic-value-bg);\n max-height: calc(var(--selectic-input-height) - 10px);\n max-width: 100%;\n min-width: 30px;\n\n overflow: hidden;\n white-space: nowrap;\n line-height: initial;\n vertical-align: middle;\n}\n\n.selectic .more-items {\n display: inline-block;\n\n padding-left: 5px;\n padding-right: 5px;\n border-radius: 10px;\n\n background-color: var(--selectic-more-items-bg, var(--selectic-info-bg));\n color: var(--selectic-more-items-color, var(--selectic-info-color));\n cursor: help;\n}\n\n.selectic-input__selected-items__value {\n grid-area: value;\n align-self: center;\n justify-self: normal;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.selectic-input__selected-items__icon {\n grid-area: icon;\n align-self: center;\n justify-self: center;\n margin-left: 5px;\n}\n\n.selectic-input__selected-items__icon:hover {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic__label-disabled {\n opacity: 0.5;\n transition: opacity 400ms;\n}\n\n/* XXX: override padding of bootstrap input-sm.\n * This padding introduce a line shift. */\n.selectic.input-sm {\n padding: 0;\n}\n\n/* {{{ overflow multiline */\n\n.selectic--overflow-multiline,\n.selectic--overflow-multiline.form-control,\n.selectic--overflow-multiline .form-control {\n height: unset;\n}\n\n.selectic--overflow-multiline .selectic-input {\n overflow: unset;\n}\n\n.selectic--overflow-multiline .selectic-input__selected-items {\n flex-wrap: wrap;\n}\n\n/* {{{ icons */\n\n@keyframes selectic-animation-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(359deg);\n }\n}\n\n.selectic__icon {\n height: 1em;\n fill: currentColor;\n}\n\n.selectic-spin {\n animation: selectic-animation-spin 2s infinite linear;\n}\n\n/* }}} */\n";
36
36
  styleInject(css_248z);
37
37
 
38
38
  /**
@@ -1537,7 +1537,7 @@ class SelecticStore {
1537
1537
  /* This icon is from <https://github.com/Templarian/MaterialDesign>,
1538
1538
  * distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license
1539
1539
  */
1540
- var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
1540
+ var __decorate$e = (this && this.__decorate) || function (decorators, target, key, desc) {
1541
1541
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1542
1542
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1543
1543
  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;
@@ -1549,7 +1549,7 @@ let IconCaretDown = class IconCaretDown extends vtyx.Vue {
1549
1549
  vtyx.h("path", { d: "M7,10L12,15L17,10H7Z" })));
1550
1550
  }
1551
1551
  };
1552
- IconCaretDown = __decorate$d([
1552
+ IconCaretDown = __decorate$e([
1553
1553
  vtyx.Component
1554
1554
  ], IconCaretDown);
1555
1555
  var IconCaretDown$1 = IconCaretDown;
@@ -1557,7 +1557,7 @@ var IconCaretDown$1 = IconCaretDown;
1557
1557
  /* This icon is from <https://github.com/Templarian/MaterialDesign>,
1558
1558
  * distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license
1559
1559
  */
1560
- var __decorate$c = (this && this.__decorate) || function (decorators, target, key, desc) {
1560
+ var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
1561
1561
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1562
1562
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1563
1563
  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;
@@ -1569,7 +1569,7 @@ let IconCaretUp = class IconCaretUp extends vtyx.Vue {
1569
1569
  vtyx.h("path", { d: "M7,15L12,10L17,15H7Z" })));
1570
1570
  }
1571
1571
  };
1572
- IconCaretUp = __decorate$c([
1572
+ IconCaretUp = __decorate$d([
1573
1573
  vtyx.Component
1574
1574
  ], IconCaretUp);
1575
1575
  var IconCaretUp$1 = IconCaretUp;
@@ -1577,7 +1577,7 @@ var IconCaretUp$1 = IconCaretUp;
1577
1577
  /* This icon is from <https://github.com/Templarian/MaterialDesign>,
1578
1578
  * distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license
1579
1579
  */
1580
- var __decorate$b = (this && this.__decorate) || function (decorators, target, key, desc) {
1580
+ var __decorate$c = (this && this.__decorate) || function (decorators, target, key, desc) {
1581
1581
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1582
1582
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1583
1583
  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;
@@ -1589,11 +1589,28 @@ let IconCheck = class IconCheck extends vtyx.Vue {
1589
1589
  vtyx.h("path", { d: "M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z" })));
1590
1590
  }
1591
1591
  };
1592
- IconCheck = __decorate$b([
1592
+ IconCheck = __decorate$c([
1593
1593
  vtyx.Component
1594
1594
  ], IconCheck);
1595
1595
  var IconCheck$1 = IconCheck;
1596
1596
 
1597
+ var __decorate$b = (this && this.__decorate) || function (decorators, target, key, desc) {
1598
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1599
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1600
+ 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;
1601
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1602
+ };
1603
+ let IconDot = class IconDot extends vtyx.Vue {
1604
+ render() {
1605
+ return (vtyx.h("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" },
1606
+ vtyx.h("circle", { cx: "8", cy: "16", r: "3.5" })));
1607
+ }
1608
+ };
1609
+ IconDot = __decorate$b([
1610
+ vtyx.Component
1611
+ ], IconDot);
1612
+ var IconDot$1 = IconDot;
1613
+
1597
1614
  /* This icon is from <https://github.com/Templarian/MaterialDesign>,
1598
1615
  * distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license
1599
1616
  */
@@ -1742,6 +1759,8 @@ let Icon = class Icon extends vtyx.Vue {
1742
1759
  return IconCaretUp$1;
1743
1760
  case 'check':
1744
1761
  return IconCheck$1;
1762
+ case 'dot':
1763
+ return IconDot$1;
1745
1764
  case 'search':
1746
1765
  return IconSearch$1;
1747
1766
  case 'spinner':
@@ -2529,6 +2548,7 @@ let List = class List extends vtyx.Vue {
2529
2548
  'selectic-item__is-group': option.isGroup,
2530
2549
  }], style: option.style, title: option.title, key: 'selectic-item-' + (idx + this.startIndex) },
2531
2550
  this.isMultiple && (vtyx.h(Icon$1, { icon: "check", store: this.store, class: "selectic-item_icon" })),
2551
+ !this.isMultiple && (vtyx.h(Icon$1, { icon: "dot", store: this.store, class: "selectic-item_icon single-select_icon" })),
2532
2552
  option.icon && (option.icon.includes(':')
2533
2553
  ? vtyx.h(Icon$1, { icon: option.icon, store: this.store })
2534
2554
  : vtyx.h(Icon$1, { icon: `raw:${option.icon}`, store: this.store })),
@@ -2901,6 +2921,17 @@ let Selectic = class Selectic extends vtyx.Vue {
2901
2921
  }
2902
2922
  const target = evt.target;
2903
2923
  if (!extendedListEl.contains(target) && !this.$el.contains(target)) {
2924
+ if (keepOpenWithOtherSelectic) {
2925
+ let classSelector = '.selectic';
2926
+ if (typeof keepOpenWithOtherSelectic === 'string') {
2927
+ classSelector += keepOpenWithOtherSelectic;
2928
+ }
2929
+ const parentIsSelectic = target === null || target === void 0 ? void 0 : target.closest(classSelector);
2930
+ if (parentIsSelectic) {
2931
+ /* Do not close current Selectic */
2932
+ return;
2933
+ }
2934
+ }
2904
2935
  store.commit('isOpen', false);
2905
2936
  }
2906
2937
  };
@@ -28,7 +28,7 @@ function styleInject(css, ref) {
28
28
  }
29
29
  }
30
30
 
31
- var css_248z = "/* {{{ Variables */\n\n:root {\n --selectic-font-size: 14px;\n --selectic-cursor-disabled: not-allowed;\n\n /* The main element */\n --selectic-color: #555555;\n --selectic-bg: #ffffff;\n\n /* The main element (when disabled) */\n --selectic-color-disabled: #787878;\n --selectic-bg-disabled: #eeeeee;\n\n /* The list */\n --selectic-panel-bg: #f0f0f0;\n --selectic-separator-bordercolor: #cccccc;\n /* --selectic-item-color: var(--selectic-color); /* Can be set in any CSS configuration */\n\n /* The current selected item */\n --selectic-selected-item-color: #428bca;\n\n /* When mouse is over items or by selecting with key arrows */\n --selectic-active-item-color: #ffffff;\n --selectic-active-item-bg: #66afe9;\n\n /* Selected values in main element */\n --selectic-value-bg: #f0f0f0;\n /* --selectic-more-items-bg: var(--selectic-info-bg); /* can be set in any CSS configuration */\n /* --selectic-more-items-color: var(--selectic-info-color); /* can be set in any CSS configuration */\n --selectic-more-items-bg-disabled: #cccccc;\n\n /* Information message */\n --selectic-info-bg: #5bc0de;\n --selectic-info-color: #ffffff;\n\n /* Error message */\n --selectic-error-bg: #b72c29;\n --selectic-error-color: #ffffff;\n\n /* XXX: Currently it is important to keep this size for a correct scroll\n * height estimation */\n --selectic-input-height: 30px;\n}\n\n/* }}} */\n/* {{{ Bootstrap equivalent style */\n\n.selectic .form-control {\n display: block;\n width: 100%;\n height: calc(var(--selectic-input-height) - 2px);\n font-size: var(--selectic-font-size);\n line-height: 1.42857143;\n color: var(--selectic-color);\n background-color: var(--selectic-bg);\n background-image: none;\n border: 1px solid var(--selectic-separator-bordercolor); /* should use a better variable */\n border-radius: 4px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n.selectic .has-feedback {\n position: relative;\n}\n.selectic .has-feedback .form-control {\n padding-right: calc(var(--selectic-input-height) + 4px);\n}\n\n.selectic .form-control-feedback.fa,\n.selectic .form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: calc(var(--selectic-input-height) + 4px);\n height: calc(var(--selectic-input-height) + 4px);\n line-height: var(--selectic-input-height);\n text-align: center;\n pointer-events: none;\n}\n\n.selectic .alert-info {\n background-color: var(--selectic-info-bg);\n color: var(--selectic-info-color);\n}\n\n.selectic .alert-danger {\n background-color: var(--selectic-error-bg);\n color: var(--selectic-error-color);\n}\n\n/* }}} */\n\n.selectic * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.selectic.form-control {\n display: inline-block;\n padding: 0;\n cursor: pointer;\n border: unset;\n}\n\n.has-feedback .selectic__icon-container.form-control-feedback {\n right: 0;\n}\n\n/* The input which contains the selected value\n * XXX: This input should stay hidden behind other elements, but is \"visible\"\n * (in term of DOM point of view) in order to get and to trigger the `focus`\n * DOM event. */\n.selectic__input-value {\n position: fixed;\n opacity: 0;\n z-index: -1000;\n top: -100px;\n}\n\n/* XXX: .form-control has been added to this selector to improve priority and\n * override some rules of the original .form-control */\n.selectic-input.form-control {\n display: inline-flex;\n justify-content: space-between;\n overflow: hidden;\n width: 100%;\n min-height: var(--selectic-input-height);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: 5px;\n line-height: calc(var(--selectic-input-height) - 4px);\n color: var(--selectic-color);\n}\n\n.selectic-input__reverse-icon {\n align-self: center;\n margin-right: 3px;\n cursor: default;\n}\n.selectic-input__clear-icon {\n align-self: center;\n margin-left: 3px;\n cursor: pointer;\n}\n.selectic-input__clear-icon:hover {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic-input.focused {\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n}\n\n.selectic-input.disabled {\n cursor: var(--selectic-cursor-disabled);\n background-color: var(--selectic-bg-disabled);\n}\n.selectic-input.disabled .more-items {\n\tbackground-color: var(--selectic-more-items-bg-disabled);\n}\n\n.selectic-input__selected-items {\n display: inline-flex;\n flex-wrap: nowrap;\n align-items: center;\n white-space: nowrap;\n}\n\n.selectic-input__selected-items__placeholder {\n font-style: italic;\n opacity: 0.7;\n white-space: nowrap;\n}\n\n.selectic-icon {\n color: var(--selectic-color);\n text-align: center;\n vertical-align: middle;\n}\n\n.selectic__extended-list {\n position: fixed;\n top: var(--top-position, 0);\n z-index: 2000;\n height: auto;\n max-height: var(--availableSpace);\n background-color: var(--selectic-bg, #ffffff);\n box-shadow: 2px 5px 12px 0px #888888;\n border-radius: 0 0 4px 4px;\n padding: 0;\n width: var(--list-width, 200px);\n min-width: 200px;\n display: grid;\n grid-template-rows: minmax(0, max-content) 1fr;\n}\n.selectic__extended-list.selectic-position-top {\n box-shadow: 2px -3px 12px 0px #888888;\n}\n.selectic__extended-list__list-container{\n overflow: auto;\n}\n.selectic__extended-list__list-items {\n max-height: calc(var(--selectic-input-height) * 10);\n min-width: max-content;\n padding-left: 0;\n}\n\n.selectic-item {\n display: block;\n position: relative;\n box-sizing: border-box;\n padding: 2px 8px;\n color: var(--selectic-item-color, var(--selectic-color));\n min-height: calc(var(--selectic-input-height) - 3px);\n list-style-type: none;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.selectic-item_text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.selectic-item:not(.selected) .selectic-item_icon {\n opacity: 0;\n}\n\n.selectic-item_text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.selectic-item__active {\n background-color: var(--selectic-active-item-bg);\n color: var(--selectic-active-item-color);\n}\n.selectic-item__active:not(.selected) .selectic-item_icon {\n opacity: 0.2;\n}\n.selectic-item__active.selectic-item__disabled:not(.selected) .selectic-item_icon {\n opacity: 0;\n}\n\n.selectic-item__disabled {\n color: var(--selectic-color-disabled);\n background-color: var(--selectic-bg-disabled);\n}\n\n.selectic-item__is-in-group {\n padding-left: 2em;\n}\n\n.selectic-item__is-group {\n font-weight: bold;\n cursor: default;\n}\n\n.selectic-item__is-group.selectable {\n cursor: pointer;\n}\n\n.selectic-item.selected {\n color: var(--selectic-selected-item-color);\n}\n.selectic-search-scope {\n color: #e0e0e0;\n left: auto;\n right: 10px;\n}\n.selectic .form-control-feedback.fa.selectic-search-scope {\n width: calc(var(--selectic-input-height) * 0.75);\n height: calc(var(--selectic-input-height) * 0.75);\n line-height: calc(var(--selectic-input-height) * 0.75);\n}\n\n.selectic__message {\n text-align: center;\n padding: 3px;\n}\n\n.selectic .filter-panel {\n padding: 3px;\n margin-left: 0px;\n margin-right: 0px;\n background-color: var(--selectic-panel-bg);\n border-bottom: 1px solid var(--selectic-separator-bordercolor);\n}\n\n.selectic .panelclosed {\n max-height: 0px;\n transition: max-height 0.3s ease-out;\n overflow: hidden;\n}\n\n.panelopened {\n max-height: 200px;\n transition: max-height 0.3s ease-in;\n overflow: hidden;\n}\n\n.selectic .filter-panel__input {\n padding-left: 0px;\n padding-right: 0px;\n padding-bottom: 10px;\n margin-bottom: 0px;\n}\n.selectic .filter-input {\n height: calc(var(--selectic-input-height) * 0.75);\n}\n\n.selectic .checkbox-filter {\n padding: 5px;\n text-align: center;\n}\n\n.selectic .curtain-handler {\n text-align: center;\n}\n\n.selectic .toggle-selectic {\n margin: 5px;\n padding-left: 0px;\n padding-right: 0px;\n}\n\n.selectic .toggle-boolean-select-all-toggle {\n display: inline;\n margin-right: 15px;\n}\n\n.selectic .toggle-boolean-excluding-toggle {\n display: inline;\n margin-right: 15px;\n}\n\n.selectic .single-value {\n display: grid;\n grid-template: \"value icon\" 1fr / max-content max-content;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 0;\n margin-right: 5px;\n /* margin top/bottom are mainly to create a gutter in multilines */\n margin-top: 2px;\n margin-bottom: 2px;\n\n border-radius: 3px;\n background-color: var(--selectic-value-bg);\n max-height: calc(var(--selectic-input-height) - 10px);\n max-width: 100%;\n min-width: 30px;\n\n overflow: hidden;\n white-space: nowrap;\n line-height: initial;\n vertical-align: middle;\n}\n\n.selectic .more-items {\n display: inline-block;\n\n padding-left: 5px;\n padding-right: 5px;\n border-radius: 10px;\n\n background-color: var(--selectic-more-items-bg, var(--selectic-info-bg));\n color: var(--selectic-more-items-color, var(--selectic-info-color));\n cursor: help;\n}\n.selectic-input__selected-items__value {\n grid-area: value;\n align-self: center;\n justify-self: normal;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.selectic-input__selected-items__icon {\n grid-area: icon;\n align-self: center;\n justify-self: center;\n margin-left: 5px;\n}\n.selectic-input__selected-items__icon:hover {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic__label-disabled {\n opacity: 0.5;\n transition: opacity 400ms;\n}\n\n/* XXX: override padding of bootstrap input-sm.\n * This padding introduce a line shift. */\n.selectic.input-sm {\n padding: 0;\n}\n\n/* {{{ overflow multiline */\n\n.selectic--overflow-multiline,\n.selectic--overflow-multiline.form-control,\n.selectic--overflow-multiline .form-control {\n height: unset;\n}\n\n.selectic--overflow-multiline .selectic-input {\n overflow: unset;\n}\n\n.selectic--overflow-multiline .selectic-input__selected-items {\n flex-wrap: wrap;\n}\n\n/* {{{ icons */\n\n@keyframes selectic-animation-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(359deg);\n }\n}\n\n.selectic__icon {\n height: 1em;\n fill: currentColor;\n}\n\n.selectic-spin {\n animation: selectic-animation-spin 2s infinite linear;\n}\n\n/* }}} */\n";
31
+ var css_248z = "/* {{{ Variables */\n\n:root {\n --selectic-font-size: 14px;\n --selectic-cursor-disabled: not-allowed;\n\n /* The main element */\n --selectic-color: #555555;\n --selectic-bg: #ffffff;\n\n /* The main element (when disabled) */\n --selectic-color-disabled: #787878;\n --selectic-bg-disabled: #eeeeee;\n\n /* The list */\n --selectic-panel-bg: #f0f0f0;\n --selectic-separator-bordercolor: #cccccc;\n /* --selectic-item-color: var(--selectic-color); /* Can be set in any CSS configuration */\n\n /* The current selected item */\n --selectic-selected-item-color: #428bca;\n\n /* When mouse is over items or by selecting with key arrows */\n --selectic-active-item-color: #ffffff;\n --selectic-active-item-bg: #66afe9;\n\n /* Selected values in main element */\n --selectic-value-bg: #f0f0f0;\n /* --selectic-more-items-bg: var(--selectic-info-bg); /* can be set in any CSS configuration */\n /* --selectic-more-items-color: var(--selectic-info-color); /* can be set in any CSS configuration */\n --selectic-more-items-bg-disabled: #cccccc;\n\n /* Information message */\n --selectic-info-bg: #5bc0de;\n --selectic-info-color: #ffffff;\n\n /* Error message */\n --selectic-error-bg: #b72c29;\n --selectic-error-color: #ffffff;\n\n /* XXX: Currently it is important to keep this size for a correct scroll\n * height estimation */\n --selectic-input-height: 30px;\n}\n\n/* }}} */\n/* {{{ Bootstrap equivalent style */\n\n.selectic .form-control {\n display: block;\n width: 100%;\n height: calc(var(--selectic-input-height) - 2px);\n font-size: var(--selectic-font-size);\n line-height: 1.42857143;\n color: var(--selectic-color);\n background-color: var(--selectic-bg);\n background-image: none;\n border: 1px solid var(--selectic-separator-bordercolor); /* should use a better variable */\n border-radius: 4px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.selectic .has-feedback {\n position: relative;\n}\n\n.selectic .has-feedback .form-control {\n padding-right: calc(var(--selectic-input-height) + 4px);\n}\n\n.selectic .form-control-feedback.fa,\n.selectic .form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: calc(var(--selectic-input-height) + 4px);\n height: calc(var(--selectic-input-height) + 4px);\n line-height: var(--selectic-input-height);\n text-align: center;\n pointer-events: none;\n}\n\n.selectic .alert-info {\n background-color: var(--selectic-info-bg);\n color: var(--selectic-info-color);\n}\n\n.selectic .alert-danger {\n background-color: var(--selectic-error-bg);\n color: var(--selectic-error-color);\n}\n\n/* }}} */\n\n.selectic * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.selectic.form-control {\n display: inline-block;\n padding: 0;\n cursor: pointer;\n border: unset;\n}\n\n.has-feedback .selectic__icon-container.form-control-feedback {\n right: 0;\n}\n\n/* The input which contains the selected value\n * XXX: This input should stay hidden behind other elements, but is \"visible\"\n * (in term of DOM point of view) in order to get and to trigger the `focus`\n * DOM event. */\n.selectic__input-value {\n position: fixed;\n opacity: 0;\n z-index: -1000;\n top: -100px;\n}\n\n/* XXX: .form-control has been added to this selector to improve priority and\n * override some rules of the original .form-control */\n.selectic-input.form-control {\n display: inline-flex;\n justify-content: space-between;\n overflow: hidden;\n width: 100%;\n min-height: var(--selectic-input-height);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: 5px;\n line-height: calc(var(--selectic-input-height) - 4px);\n color: var(--selectic-color);\n}\n\n.selectic-input__reverse-icon {\n align-self: center;\n margin-right: 3px;\n cursor: default;\n}\n\n.selectic-input__clear-icon {\n align-self: center;\n margin-left: 3px;\n cursor: pointer;\n}\n\n.selectic-input__clear-icon:hover {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic-input.focused {\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n}\n\n.selectic-input.disabled {\n cursor: var(--selectic-cursor-disabled);\n background-color: var(--selectic-bg-disabled);\n}\n\n.selectic-input.disabled .more-items {\n\tbackground-color: var(--selectic-more-items-bg-disabled);\n}\n\n.selectic-input__selected-items {\n display: inline-flex;\n flex-wrap: nowrap;\n align-items: center;\n white-space: nowrap;\n}\n\n.selectic-input__selected-items__placeholder {\n font-style: italic;\n opacity: 0.7;\n white-space: nowrap;\n}\n\n.selectic-icon {\n color: var(--selectic-color);\n text-align: center;\n vertical-align: middle;\n}\n\n.selectic__extended-list {\n position: fixed;\n top: var(--top-position, 0);\n z-index: 2000;\n height: auto;\n max-height: var(--availableSpace);\n background-color: var(--selectic-bg, #ffffff);\n box-shadow: 2px 5px 12px 0px #888888;\n border-radius: 0 0 4px 4px;\n padding: 0;\n width: var(--list-width, 200px);\n min-width: 200px;\n display: grid;\n grid-template-rows: minmax(0, max-content) 1fr;\n}\n\n.selectic__extended-list.selectic-position-top {\n box-shadow: 2px -3px 12px 0px #888888;\n}\n\n.selectic__extended-list__list-container{\n overflow: auto;\n}\n\n.selectic__extended-list__list-items {\n max-height: calc(var(--selectic-input-height) * 10);\n min-width: max-content;\n padding-left: 0;\n}\n\n.selectic-item {\n display: block;\n position: relative;\n box-sizing: border-box;\n padding: 2px 8px;\n color: var(--selectic-item-color, var(--selectic-color));\n min-height: calc(var(--selectic-input-height) - 3px);\n list-style-type: none;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.selectic-item_text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.selectic-item:not(.selected) .selectic-item_icon {\n opacity: 0;\n}\n\n.selectic-item_text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.selectic-item__active {\n background-color: var(--selectic-active-item-bg);\n color: var(--selectic-active-item-color);\n}\n\n.selectic-item__active:not(.selected) .selectic-item_icon {\n opacity: 0.2;\n}\n\n.selectic-item__active:not(.selected) .single-select_icon {\n opacity: 0;\n}\n\n.selectic-item__active.selectic-item__disabled:not(.selected) .selectic-item_icon {\n opacity: 0;\n}\n\n.selectic-item__disabled {\n color: var(--selectic-color-disabled);\n background-color: var(--selectic-bg-disabled);\n}\n\n.selectic-item__is-in-group {\n padding-left: 2em;\n}\n\n.selectic-item__is-group {\n font-weight: bold;\n cursor: default;\n}\n\n.selectic-item__is-group.selectable {\n cursor: pointer;\n}\n\n.selectic-item.selected {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic-search-scope {\n color: #e0e0e0;\n left: auto;\n right: 10px;\n}\n\n.selectic .form-control-feedback.fa.selectic-search-scope {\n width: calc(var(--selectic-input-height) * 0.75);\n height: calc(var(--selectic-input-height) * 0.75);\n line-height: calc(var(--selectic-input-height) * 0.75);\n}\n\n.selectic__message {\n text-align: center;\n padding: 3px;\n}\n\n.selectic .filter-panel {\n padding: 3px;\n margin-left: 0px;\n margin-right: 0px;\n background-color: var(--selectic-panel-bg);\n border-bottom: 1px solid var(--selectic-separator-bordercolor);\n}\n\n.selectic .panelclosed {\n max-height: 0px;\n transition: max-height 0.3s ease-out;\n overflow: hidden;\n}\n\n.panelopened {\n max-height: 200px;\n transition: max-height 0.3s ease-in;\n overflow: hidden;\n}\n\n.selectic .filter-panel__input {\n padding-left: 0px;\n padding-right: 0px;\n padding-bottom: 10px;\n margin-bottom: 0px;\n}\n\n.selectic .filter-input {\n height: calc(var(--selectic-input-height) * 0.75);\n}\n\n.selectic .checkbox-filter {\n padding: 5px;\n text-align: center;\n}\n\n.selectic .curtain-handler {\n text-align: center;\n}\n\n.selectic .toggle-selectic {\n margin: 5px;\n padding-left: 0px;\n padding-right: 0px;\n}\n\n.selectic .toggle-boolean-select-all-toggle {\n display: inline;\n margin-right: 15px;\n}\n\n.selectic .toggle-boolean-excluding-toggle {\n display: inline;\n margin-right: 15px;\n}\n\n.selectic .single-value {\n display: grid;\n grid-template: \"value icon\" 1fr / max-content max-content;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 0;\n margin-right: 5px;\n /* margin top/bottom are mainly to create a gutter in multilines */\n margin-top: 2px;\n margin-bottom: 2px;\n\n border-radius: 3px;\n background-color: var(--selectic-value-bg);\n max-height: calc(var(--selectic-input-height) - 10px);\n max-width: 100%;\n min-width: 30px;\n\n overflow: hidden;\n white-space: nowrap;\n line-height: initial;\n vertical-align: middle;\n}\n\n.selectic .more-items {\n display: inline-block;\n\n padding-left: 5px;\n padding-right: 5px;\n border-radius: 10px;\n\n background-color: var(--selectic-more-items-bg, var(--selectic-info-bg));\n color: var(--selectic-more-items-color, var(--selectic-info-color));\n cursor: help;\n}\n\n.selectic-input__selected-items__value {\n grid-area: value;\n align-self: center;\n justify-self: normal;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.selectic-input__selected-items__icon {\n grid-area: icon;\n align-self: center;\n justify-self: center;\n margin-left: 5px;\n}\n\n.selectic-input__selected-items__icon:hover {\n color: var(--selectic-selected-item-color);\n}\n\n.selectic__label-disabled {\n opacity: 0.5;\n transition: opacity 400ms;\n}\n\n/* XXX: override padding of bootstrap input-sm.\n * This padding introduce a line shift. */\n.selectic.input-sm {\n padding: 0;\n}\n\n/* {{{ overflow multiline */\n\n.selectic--overflow-multiline,\n.selectic--overflow-multiline.form-control,\n.selectic--overflow-multiline .form-control {\n height: unset;\n}\n\n.selectic--overflow-multiline .selectic-input {\n overflow: unset;\n}\n\n.selectic--overflow-multiline .selectic-input__selected-items {\n flex-wrap: wrap;\n}\n\n/* {{{ icons */\n\n@keyframes selectic-animation-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(359deg);\n }\n}\n\n.selectic__icon {\n height: 1em;\n fill: currentColor;\n}\n\n.selectic-spin {\n animation: selectic-animation-spin 2s infinite linear;\n}\n\n/* }}} */\n";
32
32
  styleInject(css_248z);
33
33
 
34
34
  /**
@@ -1533,7 +1533,7 @@ class SelecticStore {
1533
1533
  /* This icon is from <https://github.com/Templarian/MaterialDesign>,
1534
1534
  * distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license
1535
1535
  */
1536
- var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
1536
+ var __decorate$e = (this && this.__decorate) || function (decorators, target, key, desc) {
1537
1537
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1538
1538
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1539
1539
  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;
@@ -1545,7 +1545,7 @@ let IconCaretDown = class IconCaretDown extends Vue {
1545
1545
  h("path", { d: "M7,10L12,15L17,10H7Z" })));
1546
1546
  }
1547
1547
  };
1548
- IconCaretDown = __decorate$d([
1548
+ IconCaretDown = __decorate$e([
1549
1549
  Component
1550
1550
  ], IconCaretDown);
1551
1551
  var IconCaretDown$1 = IconCaretDown;
@@ -1553,7 +1553,7 @@ var IconCaretDown$1 = IconCaretDown;
1553
1553
  /* This icon is from <https://github.com/Templarian/MaterialDesign>,
1554
1554
  * distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license
1555
1555
  */
1556
- var __decorate$c = (this && this.__decorate) || function (decorators, target, key, desc) {
1556
+ var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
1557
1557
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1558
1558
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1559
1559
  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;
@@ -1565,7 +1565,7 @@ let IconCaretUp = class IconCaretUp extends Vue {
1565
1565
  h("path", { d: "M7,15L12,10L17,15H7Z" })));
1566
1566
  }
1567
1567
  };
1568
- IconCaretUp = __decorate$c([
1568
+ IconCaretUp = __decorate$d([
1569
1569
  Component
1570
1570
  ], IconCaretUp);
1571
1571
  var IconCaretUp$1 = IconCaretUp;
@@ -1573,7 +1573,7 @@ var IconCaretUp$1 = IconCaretUp;
1573
1573
  /* This icon is from <https://github.com/Templarian/MaterialDesign>,
1574
1574
  * distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license
1575
1575
  */
1576
- var __decorate$b = (this && this.__decorate) || function (decorators, target, key, desc) {
1576
+ var __decorate$c = (this && this.__decorate) || function (decorators, target, key, desc) {
1577
1577
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1578
1578
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1579
1579
  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;
@@ -1585,11 +1585,28 @@ let IconCheck = class IconCheck extends Vue {
1585
1585
  h("path", { d: "M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z" })));
1586
1586
  }
1587
1587
  };
1588
- IconCheck = __decorate$b([
1588
+ IconCheck = __decorate$c([
1589
1589
  Component
1590
1590
  ], IconCheck);
1591
1591
  var IconCheck$1 = IconCheck;
1592
1592
 
1593
+ var __decorate$b = (this && this.__decorate) || function (decorators, target, key, desc) {
1594
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1595
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1596
+ 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;
1597
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1598
+ };
1599
+ let IconDot = class IconDot extends Vue {
1600
+ render() {
1601
+ return (h("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" },
1602
+ h("circle", { cx: "8", cy: "16", r: "3.5" })));
1603
+ }
1604
+ };
1605
+ IconDot = __decorate$b([
1606
+ Component
1607
+ ], IconDot);
1608
+ var IconDot$1 = IconDot;
1609
+
1593
1610
  /* This icon is from <https://github.com/Templarian/MaterialDesign>,
1594
1611
  * distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license
1595
1612
  */
@@ -1738,6 +1755,8 @@ let Icon = class Icon extends Vue {
1738
1755
  return IconCaretUp$1;
1739
1756
  case 'check':
1740
1757
  return IconCheck$1;
1758
+ case 'dot':
1759
+ return IconDot$1;
1741
1760
  case 'search':
1742
1761
  return IconSearch$1;
1743
1762
  case 'spinner':
@@ -2525,6 +2544,7 @@ let List = class List extends Vue {
2525
2544
  'selectic-item__is-group': option.isGroup,
2526
2545
  }], style: option.style, title: option.title, key: 'selectic-item-' + (idx + this.startIndex) },
2527
2546
  this.isMultiple && (h(Icon$1, { icon: "check", store: this.store, class: "selectic-item_icon" })),
2547
+ !this.isMultiple && (h(Icon$1, { icon: "dot", store: this.store, class: "selectic-item_icon single-select_icon" })),
2528
2548
  option.icon && (option.icon.includes(':')
2529
2549
  ? h(Icon$1, { icon: option.icon, store: this.store })
2530
2550
  : h(Icon$1, { icon: `raw:${option.icon}`, store: this.store })),
@@ -2897,6 +2917,17 @@ let Selectic = class Selectic extends Vue {
2897
2917
  }
2898
2918
  const target = evt.target;
2899
2919
  if (!extendedListEl.contains(target) && !this.$el.contains(target)) {
2920
+ if (keepOpenWithOtherSelectic) {
2921
+ let classSelector = '.selectic';
2922
+ if (typeof keepOpenWithOtherSelectic === 'string') {
2923
+ classSelector += keepOpenWithOtherSelectic;
2924
+ }
2925
+ const parentIsSelectic = target === null || target === void 0 ? void 0 : target.closest(classSelector);
2926
+ if (parentIsSelectic) {
2927
+ /* Do not close current Selectic */
2928
+ return;
2929
+ }
2930
+ }
2900
2931
  store.commit('isOpen', false);
2901
2932
  }
2902
2933
  };
package/doc/params.md CHANGED
@@ -312,12 +312,17 @@ will not be displayed and the filter panel is always open.
312
312
 
313
313
  ## keepOpenWithOtherSelectic
314
314
 
315
- Type: `boolean`
315
+ Type: `boolean | string`
316
316
 
317
317
  Default value: `false`
318
318
 
319
- By default, only one selectic component can be open at the same time. So if another Selectic component is open (mainly programmatically) then any previously open component is closed.
320
- If `keepOpenWithOtherSelectic` is set to `true`, this component stays open when another Selectic component opens.
319
+ By default, only one selectic component can be open at the same time. So if another Selectic component is open then any previously open component is closed.
320
+
321
+ When `keepOpenWithOtherSelectic` is set to `true`, this component stays open when any other Selectic component opens.
322
+
323
+ When it is set to a `non-empty string`, this component stays open only when another Selectic component that matches the given CSS selector opens.
324
+
325
+ For falsy values, the component always closes when another Selectic opens.
321
326
 
322
327
  Note: This attribute does not prevent closing when user clicks outside the component.
323
328
 
@@ -330,6 +335,15 @@ Note: This attribute does not prevent closing when user clicks outside the compo
330
335
  />
331
336
  ```
332
337
 
338
+ ```html
339
+ <selectic
340
+ :params="{
341
+ keepOpenWithOtherSelectic: '.class-name',
342
+ }"
343
+ :options="optionList"
344
+ />
345
+ ```
346
+
333
347
  ## listPosition
334
348
 
335
349
  Type: `'auto' | 'bottom' | 'top'`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "selectic",
3
- "version": "3.1.5",
3
+ "version": "3.2.1",
4
4
  "description": "Smart Select for VueJS 3.x",
5
5
  "main": "dist/selectic.common.js",
6
6
  "module": "dist/selectic.esm.js",
@@ -42,8 +42,8 @@
42
42
  "vtyx": "4.2.1"
43
43
  },
44
44
  "devDependencies": {
45
- "@babel/types": "^7.23.6",
46
- "rollup": "^2.79.1",
45
+ "@babel/types": "^7.28.1",
46
+ "rollup": "^2.79.2",
47
47
  "rollup-plugin-postcss": "^4.0.2",
48
48
  "tape": "^4.17.0",
49
49
  "typescript": "~4.8"
package/src/Icon.tsx CHANGED
@@ -8,6 +8,7 @@ import Store, { IconFamily, IconKey, IconValue } from './Store';
8
8
  import IconCaretDown from './icons/caret-down';
9
9
  import IconCaretUp from './icons/caret-up';
10
10
  import IconCheck from './icons/check';
11
+ import IconDot from './icons/dot';
11
12
  import IconQuestion from './icons/question';
12
13
  import IconSearch from './icons/search';
13
14
  import IconSpinner from './icons/spinner';
@@ -87,6 +88,8 @@ export default class Icon extends Vue<Props> {
87
88
  return IconCaretUp;
88
89
  case 'check':
89
90
  return IconCheck;
91
+ case 'dot':
92
+ return IconDot;
90
93
  case 'search':
91
94
  return IconSearch;
92
95
  case 'spinner':
package/src/List.tsx CHANGED
@@ -283,6 +283,9 @@ export default class List extends Vue<Props> {
283
283
  {this.isMultiple && (
284
284
  <Icon icon="check" store={this.store} class="selectic-item_icon" />
285
285
  )}
286
+ {!this.isMultiple && (
287
+ <Icon icon="dot" store={this.store} class="selectic-item_icon single-select_icon" />
288
+ )}
286
289
  {option.icon && (
287
290
  option.icon.includes(':')
288
291
  ? <Icon icon={option.icon} store={this.store} />
package/src/Store.tsx CHANGED
@@ -208,8 +208,15 @@ export interface Props {
208
208
  /** Overwrite default icon family */
209
209
  iconFamily?: IconFamily | null;
210
210
 
211
- /** Keep this component open if another Selectic component opens */
212
- keepOpenWithOtherSelectic?: boolean;
211
+ /** Keep this component open if another Selectic component opens.
212
+ *
213
+ * - `true` → Keep open for **any** Selectic component.
214
+ * - `string` → Keep open only when the other Selectic matches the given CSS selector.
215
+ * - `false` (default) → Always close when another Selectic opens.
216
+ *
217
+ * An empty string is treated the same as `false`.
218
+ */
219
+ keepOpenWithOtherSelectic?: boolean | string;
213
220
 
214
221
  /** Selectic configuration */
215
222
  params?: SelecticStoreStateParams;
@@ -378,6 +385,7 @@ export type IconKey =
378
385
  | 'caret-down'
379
386
  | 'caret-up'
380
387
  | 'check'
388
+ | 'dot'
381
389
  | 'search'
382
390
  | 'spinner'
383
391
  | 'strikethrough'
@@ -60,9 +60,11 @@
60
60
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
61
61
  transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
62
62
  }
63
+
63
64
  .selectic .has-feedback {
64
65
  position: relative;
65
66
  }
67
+
66
68
  .selectic .has-feedback .form-control {
67
69
  padding-right: calc(var(--selectic-input-height) + 4px);
68
70
  }
@@ -141,11 +143,13 @@
141
143
  margin-right: 3px;
142
144
  cursor: default;
143
145
  }
146
+
144
147
  .selectic-input__clear-icon {
145
148
  align-self: center;
146
149
  margin-left: 3px;
147
150
  cursor: pointer;
148
151
  }
152
+
149
153
  .selectic-input__clear-icon:hover {
150
154
  color: var(--selectic-selected-item-color);
151
155
  }
@@ -159,6 +163,7 @@
159
163
  cursor: var(--selectic-cursor-disabled);
160
164
  background-color: var(--selectic-bg-disabled);
161
165
  }
166
+
162
167
  .selectic-input.disabled .more-items {
163
168
  background-color: var(--selectic-more-items-bg-disabled);
164
169
  }
@@ -197,12 +202,15 @@
197
202
  display: grid;
198
203
  grid-template-rows: minmax(0, max-content) 1fr;
199
204
  }
205
+
200
206
  .selectic__extended-list.selectic-position-top {
201
207
  box-shadow: 2px -3px 12px 0px #888888;
202
208
  }
209
+
203
210
  .selectic__extended-list__list-container{
204
211
  overflow: auto;
205
212
  }
213
+
206
214
  .selectic__extended-list__list-items {
207
215
  max-height: calc(var(--selectic-input-height) * 10);
208
216
  min-width: max-content;
@@ -241,9 +249,15 @@
241
249
  background-color: var(--selectic-active-item-bg);
242
250
  color: var(--selectic-active-item-color);
243
251
  }
252
+
244
253
  .selectic-item__active:not(.selected) .selectic-item_icon {
245
254
  opacity: 0.2;
246
255
  }
256
+
257
+ .selectic-item__active:not(.selected) .single-select_icon {
258
+ opacity: 0;
259
+ }
260
+
247
261
  .selectic-item__active.selectic-item__disabled:not(.selected) .selectic-item_icon {
248
262
  opacity: 0;
249
263
  }
@@ -269,11 +283,13 @@
269
283
  .selectic-item.selected {
270
284
  color: var(--selectic-selected-item-color);
271
285
  }
286
+
272
287
  .selectic-search-scope {
273
288
  color: #e0e0e0;
274
289
  left: auto;
275
290
  right: 10px;
276
291
  }
292
+
277
293
  .selectic .form-control-feedback.fa.selectic-search-scope {
278
294
  width: calc(var(--selectic-input-height) * 0.75);
279
295
  height: calc(var(--selectic-input-height) * 0.75);
@@ -311,6 +327,7 @@
311
327
  padding-bottom: 10px;
312
328
  margin-bottom: 0px;
313
329
  }
330
+
314
331
  .selectic .filter-input {
315
332
  height: calc(var(--selectic-input-height) * 0.75);
316
333
  }
@@ -375,6 +392,7 @@
375
392
  color: var(--selectic-more-items-color, var(--selectic-info-color));
376
393
  cursor: help;
377
394
  }
395
+
378
396
  .selectic-input__selected-items__value {
379
397
  grid-area: value;
380
398
  align-self: center;
@@ -390,6 +408,7 @@
390
408
  justify-self: center;
391
409
  margin-left: 5px;
392
410
  }
411
+
393
412
  .selectic-input__selected-items__icon:hover {
394
413
  color: var(--selectic-selected-item-color);
395
414
  }
@@ -0,0 +1,17 @@
1
+ import {Vue, Component, h} from 'vtyx';
2
+
3
+ export interface Props {}
4
+
5
+ @Component
6
+ export default class IconDot extends Vue<Props> {
7
+ public render() {
8
+ return (
9
+ <svg
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ viewBox="0 0 24 24"
12
+ >
13
+ <circle cx="8" cy="16" r="3.5" />
14
+ </svg>
15
+ );
16
+ }
17
+ }
package/src/index.tsx CHANGED
@@ -146,8 +146,15 @@ export interface ParamProps {
146
146
  */
147
147
  optionBehavior?: string;
148
148
 
149
- /** Keep this component open if another Selectic component opens */
150
- keepOpenWithOtherSelectic?: boolean;
149
+ /** Keep this component open if another Selectic component opens.
150
+ *
151
+ * - `true` → Keep open for **any** Selectic component.
152
+ * - `string` → Keep open only when the other Selectic matches the given CSS selector.
153
+ * - `false` (default) → Always close when another Selectic opens.
154
+ *
155
+ * An empty string is treated the same as `false`.
156
+ */
157
+ keepOpenWithOtherSelectic?: boolean | string;
151
158
 
152
159
  /** Avoid click on group name to select all items in this group. */
153
160
  disableGroupSelection?: boolean;
@@ -361,9 +368,24 @@ export default class Selectic extends Vue<Props> {
361
368
  return;
362
369
  }
363
370
 
364
- const target = evt.target as Node;
371
+ const target = evt.target as Element | null;
365
372
 
366
373
  if (!extendedListEl.contains(target) && !this.$el.contains(target)) {
374
+ if (keepOpenWithOtherSelectic) {
375
+ let classSelector = '.selectic';
376
+
377
+ if (typeof keepOpenWithOtherSelectic === 'string') {
378
+ classSelector += keepOpenWithOtherSelectic;
379
+ }
380
+
381
+ const parentIsSelectic = target?.closest(classSelector);
382
+
383
+ if (parentIsSelectic) {
384
+ /* Do not close current Selectic */
385
+ return;
386
+ }
387
+ }
388
+
367
389
  store.commit('isOpen', false);
368
390
  }
369
391
  };
package/types/Store.d.ts CHANGED
@@ -135,8 +135,15 @@ export interface Props {
135
135
  icons?: PartialIcons | null;
136
136
  /** Overwrite default icon family */
137
137
  iconFamily?: IconFamily | null;
138
- /** Keep this component open if another Selectic component opens */
139
- keepOpenWithOtherSelectic?: boolean;
138
+ /** Keep this component open if another Selectic component opens.
139
+ *
140
+ * - `true` → Keep open for **any** Selectic component.
141
+ * - `string` → Keep open only when the other Selectic matches the given CSS selector.
142
+ * - `false` (default) → Always close when another Selectic opens.
143
+ *
144
+ * An empty string is treated the same as `false`.
145
+ */
146
+ keepOpenWithOtherSelectic?: boolean | string;
140
147
  /** Selectic configuration */
141
148
  params?: SelecticStoreStateParams;
142
149
  /** Method to call to fetch extra data */
@@ -247,7 +254,7 @@ export interface SelecticStoreState {
247
254
  };
248
255
  }
249
256
  export declare type IconFamily = '' | 'selectic' | 'font-awesome-4' | 'font-awesome-5' | 'font-awesome-6' | 'raw' | `prefix:${string}`;
250
- export declare type IconKey = 'caret-down' | 'caret-up' | 'check' | 'search' | 'spinner' | 'strikethrough' | 'times' | 'question' | 'spin';
257
+ export declare type IconKey = 'caret-down' | 'caret-up' | 'check' | 'dot' | 'search' | 'spinner' | 'strikethrough' | 'times' | 'question' | 'spin';
251
258
  export declare type IconValue = `selectic:${IconKey}${'' | ':spin'}` | `raw:${string}` | `current:${IconKey}${'' | ':spin'}` | string;
252
259
  export declare type Icons = Record<IconKey, IconValue>;
253
260
  export declare type PartialIcons = {
@@ -0,0 +1,6 @@
1
+ import { Vue, h } from 'vtyx';
2
+ export interface Props {
3
+ }
4
+ export default class IconDot extends Vue<Props> {
5
+ render(): h.JSX.Element;
6
+ }
package/types/index.d.ts CHANGED
@@ -65,8 +65,15 @@ export interface ParamProps {
65
65
  * Example: "sort-ODE"
66
66
  */
67
67
  optionBehavior?: string;
68
- /** Keep this component open if another Selectic component opens */
69
- keepOpenWithOtherSelectic?: boolean;
68
+ /** Keep this component open if another Selectic component opens.
69
+ *
70
+ * - `true` → Keep open for **any** Selectic component.
71
+ * - `string` → Keep open only when the other Selectic matches the given CSS selector.
72
+ * - `false` (default) → Always close when another Selectic opens.
73
+ *
74
+ * An empty string is treated the same as `false`.
75
+ */
76
+ keepOpenWithOtherSelectic?: boolean | string;
70
77
  /** Avoid click on group name to select all items in this group. */
71
78
  disableGroupSelection?: boolean;
72
79
  }