@milaboratories/uikit 2.2.94 → 2.2.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +30 -25
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +15 -0
- package/dist/components/DataTable/TableComponent.vue.js +1 -1
- package/dist/components/PlAccordion/PlAccordionSection.vue2.js +21 -21
- package/dist/components/PlAccordion/PlAccordionSection.vue2.js.map +1 -1
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.js.map +1 -1
- package/dist/components/PlDropdown/OptionList.vue.d.ts +77 -0
- package/dist/components/PlDropdown/OptionList.vue.d.ts.map +1 -0
- package/dist/components/PlDropdown/OptionList.vue.js +88 -0
- package/dist/components/PlDropdown/OptionList.vue.js.map +1 -0
- package/dist/components/PlDropdown/OptionList.vue2.js +5 -0
- package/dist/components/PlDropdown/OptionList.vue2.js.map +1 -0
- package/dist/components/PlDropdown/PlDropdown.vue.d.ts.map +1 -1
- package/dist/components/PlDropdown/PlDropdown.vue.js +110 -122
- package/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
- package/dist/components/PlDropdown/types.d.ts +7 -0
- package/dist/components/PlDropdown/types.d.ts.map +1 -0
- package/dist/components/PlDropdown/useGroupBy.d.ts +7 -0
- package/dist/components/PlDropdown/useGroupBy.d.ts.map +1 -0
- package/dist/components/PlDropdown/useGroupBy.js +36 -0
- package/dist/components/PlDropdown/useGroupBy.js.map +1 -0
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.d.ts +1 -1
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.js +11 -10
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue.d.ts +19 -19
- package/dist/components/PlElementList/PlElementList.vue.d.ts.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue2.js +145 -133
- package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue3.js +33 -33
- package/dist/components/PlSlideModal/PlSlideModal.vue.js +1 -1
- package/dist/helpers/utils.d.ts +1 -0
- package/dist/helpers/utils.d.ts.map +1 -1
- package/dist/helpers/utils.js +2 -1
- package/dist/helpers/utils.js.map +1 -1
- package/dist/sdk/model/dist/index.js +1 -1
- package/dist/sdk/model/dist/index.js.map +1 -1
- package/dist/types.d.ts +4 -14
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/TextLabel.vue.d.ts +18 -0
- package/dist/utils/TextLabel.vue.d.ts.map +1 -0
- package/dist/utils/TextLabel.vue.js +26 -0
- package/dist/utils/TextLabel.vue.js.map +1 -0
- package/dist/utils/TextLabel.vue2.js +13 -0
- package/dist/utils/TextLabel.vue2.js.map +1 -0
- package/package.json +4 -4
- package/src/components/PlAccordion/PlAccordionSection.vue +3 -3
- package/src/components/PlAutocomplete/PlAutocomplete.vue +1 -1
- package/src/components/PlDropdown/OptionList.vue +71 -0
- package/src/components/PlDropdown/PlDropdown.vue +29 -25
- package/src/components/PlDropdown/pl-dropdown.scss +4 -0
- package/src/components/PlDropdown/types.ts +3 -0
- package/src/components/PlDropdown/useGroupBy.ts +63 -0
- package/src/components/PlDropdownRef/PlDropdownRef.vue +1 -0
- package/src/components/PlElementList/PlElementList.vue +81 -70
- package/src/components/PlElementList/PlElementListItem.vue +2 -2
- package/src/helpers/utils.ts +1 -0
- package/src/types.ts +5 -15
- package/src/utils/TextLabel.vue +43 -0
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
.pl-text-field{--pl-text-field-text-color: var(--txt-01);--contour-color: var(--txt-01);--label-color: var(--txt-01);--contour-border-width: 1px;--contour-box-shadow: none;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--prefix-color: var(--color-placeholder);--show-clearable: none;width:100%;min-width:160px;min-height:var(--control-height);position:relative;border-radius:var(--border-radius-control);display:flex;flex-direction:row;align-items:center;outline:none}.pl-text-field__envelope{font-family:var(--font-family-base)}.pl-text-field input{font-family:var(--font-family-base);font-weight:500;min-height:calc(var(--control-height) - 2px);line-height:20px;width:100%;padding:0 12px;border:none;font-size:inherit;background-color:transparent;color:var(--pl-text-field-text-color);caret-color:var(--border-color-focus);cursor:inherit}.pl-text-field input:focus{outline:none}.pl-text-field input::placeholder{color:var(--color-placeholder)}.pl-text-field label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-text-field label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-text-field__contour{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:var(--border-radius-control);border-width:var(--contour-border-width);border-color:var(--contour-color);border-style:solid;box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-text-field__prefix{padding-left:12px;white-space:nowrap;margin-right:-12px;color:var(--prefix-color)}.pl-text-field__append{padding-right:12px;display:flex;flex-direction:row;align-items:center;gap:4px;cursor:text}.pl-text-field__append .icon-16{cursor:pointer}.pl-text-field__append .mask-16{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-text-field__clearable{display:var(--show-clearable)!important;--icon-color: var(--ic-02) !important}.pl-text-field__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-text-field__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-text-field:hover{--contour-color: var(--control-hover-color);--show-clearable: inline-block}.pl-text-field:focus-within{--show-clearable: inline-block}.pl-text-field:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-text-field:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-text-field.dashed .pl-text-field__contour{border-style:dashed}.pl-text-field.nonEmpty{--prefix-color: var(--txt-01)}.pl-text-field.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-text-field.disabled{--contour-color: var(--color-dis-01);--label-color: var(--dis-01);--pl-text-field-text-color: var(--dis-01);--mask-icon-bg-color: var(--dis-01);cursor:not-allowed}
|
|
22
22
|
.SvgRequired{background-image:url(data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%225%22%20height%3D%2212%22%20viewBox%3D%220%200%205%2012%22%20fill%3D%22none%22%3E%3Cpath%20d%3D%22M1.51685%204.8L2.5%203.34159L3.47612%204.8L4.39607%204.12743L3.31461%202.7469L5%202.25133L4.64888%201.16106L3.00562%201.77699L3.06882%200H1.93118L1.99438%201.77699L0.351124%201.16106L0%202.25133L1.68539%202.7469L0.59691%204.12743L1.51685%204.8Z%22%20fill%3D%22%23F1222F%22%2F%3E%3C%2Fsvg%3E)}
|
|
23
23
|
.ui-text-area{--contour-color: var(--txt-01);--label-color: var(--txt-01);--contour-border-width: 1px;--contour-box-shadow: none;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--prefix-color: var(--color-placeholder);width:100%;min-height:var(--control-height);position:relative;border-radius:var(--border-radius-control);display:flex;flex-direction:row;align-items:center;outline:none}.ui-text-area__envelope{font-family:var(--font-family-base)}.ui-text-area textarea{min-height:calc(var(--control-height) - 2px);width:100%;padding:10px 12px;border:none;font-size:inherit;background-color:transparent;color:var(--txt-01);caret-color:var(--border-color-focus);cursor:inherit;resize:none;--thumb-color: var(--ic-02);overflow-y:auto}.ui-text-area textarea::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.ui-text-area textarea::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.ui-text-area textarea::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.ui-text-area textarea:focus{outline:none}.ui-text-area textarea::placeholder{color:var(--color-placeholder)}.ui-text-area label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.ui-text-area label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.ui-text-area__contour{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:var(--border-radius-control);border-width:var(--contour-border-width);border-color:var(--contour-color);border-style:solid;box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.ui-text-area__append{display:flex;flex-direction:row;align-items:center;gap:4px}.ui-text-area__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.ui-text-area__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.ui-text-area:hover{--contour-color: var(--control-hover-color)}.ui-text-area:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.ui-text-area:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.ui-text-area.dashed .ui-text-area__contour{border-style:dashed}.ui-text-area.nonEmpty{--prefix-color: var(--txt-01)}.ui-text-area.error{--contour-color: var(--txt-error)}.ui-text-area.disabled{--contour-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none}.ui-text-area.disabled *{color:var(--contour-color)}
|
|
24
|
-
.pl-dropdown__options{--option-hover-bg: var(--btn-sec-hover-grey);z-index:var(--z-dropdown-options);border:1px solid var(--border-color-div-grey);position:absolute;background-color:var(--pl-dropdown-options-bg);border-radius:6px;max-height:244px;box-shadow:0 4px 12px -2px #0f244d14,0 6px 24px -2px #0f244d14;--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:var(--control-height);background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown__options .option{position:relative;padding:0 30px 0 10px;height:var(--control-height);line-height:var(--control-height);cursor:pointer;-webkit-user-select:none;user-select:none}.pl-dropdown__options .option .checkmark{position:absolute;display:none;right:10px;top:50%;transform:translateY(-50%)}.pl-dropdown__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown__options .option.selected .checkmark{display:block}.pl-dropdown__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown{--contour-color: var(--txt-01);--contour-border-width: 1px;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}.pl-dropdown__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);color:var(--txt-01)}.pl-dropdown__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding-left:11px;min-height:var(--control-height);line-height:var(--control-height);display:flex;flex-direction:row;align-items:center;cursor:pointer}.pl-dropdown__field .input-value{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;flex-direction:row;align-items:center;padding:0 60px 0 11px;pointer-events:none;line-height:20px;color:var(--txt-01);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit}.pl-dropdown__field input{min-height:calc(var(--control-height) - 2px);line-height:20px;font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 40px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown__field input:focus{outline:none}.pl-dropdown__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown__controls .mask-16,.pl-dropdown__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown__controls .clear{--icon-color: var(--ic-02)}.pl-dropdown__controls .mask-loading{--icon-color: var(--ic-accent);animation:spin 2.5s linear infinite}.pl-dropdown__arrow-wrapper{display:flex;align-items:center;min-height:var(--control-height);padding-right:11px}.pl-dropdown .arrow-icon{cursor:pointer}.pl-dropdown .arrow-icon.arrow-icon-default{transition:transform .2s;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown.open,.pl-dropdown:focus-within{z-index:1;--label-color: var(--txt-focus)}.pl-dropdown.open .pl-dropdown__container{z-index:1000}.pl-dropdown.open .pl-dropdown__field{border-radius:6px 6px 0 0}.pl-dropdown.open .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);transform:rotate(-180deg)}.pl-dropdown:hover{--contour-color: var(--control-hover-color)}.pl-dropdown:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none;-webkit-user-select:none;user-select:none}.pl-dropdown.disabled .input-value{color:var(--dis-01)}
|
|
24
|
+
.pl-dropdown__options{--option-hover-bg: var(--btn-sec-hover-grey);z-index:var(--z-dropdown-options);border:1px solid var(--border-color-div-grey);position:absolute;background-color:var(--pl-dropdown-options-bg);border-radius:6px;max-height:244px;box-shadow:0 4px 12px -2px #0f244d14,0 6px 24px -2px #0f244d14;--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:var(--control-height);background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown__options .group-container{padding:4px 0}.pl-dropdown__options .option{position:relative;padding:0 30px 0 10px;height:var(--control-height);line-height:var(--control-height);cursor:pointer;-webkit-user-select:none;user-select:none}.pl-dropdown__options .option .checkmark{position:absolute;display:none;right:10px;top:50%;transform:translateY(-50%)}.pl-dropdown__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown__options .option.selected .checkmark{display:block}.pl-dropdown__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown{--contour-color: var(--txt-01);--contour-border-width: 1px;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}.pl-dropdown__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);color:var(--txt-01)}.pl-dropdown__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding-left:11px;min-height:var(--control-height);line-height:var(--control-height);display:flex;flex-direction:row;align-items:center;cursor:pointer}.pl-dropdown__field .input-value{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;flex-direction:row;align-items:center;padding:0 60px 0 11px;pointer-events:none;line-height:20px;color:var(--txt-01);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit}.pl-dropdown__field input{min-height:calc(var(--control-height) - 2px);line-height:20px;font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 40px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown__field input:focus{outline:none}.pl-dropdown__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown__controls .mask-16,.pl-dropdown__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown__controls .clear{--icon-color: var(--ic-02)}.pl-dropdown__controls .mask-loading{--icon-color: var(--ic-accent);animation:spin 2.5s linear infinite}.pl-dropdown__arrow-wrapper{display:flex;align-items:center;min-height:var(--control-height);padding-right:11px}.pl-dropdown .arrow-icon{cursor:pointer}.pl-dropdown .arrow-icon.arrow-icon-default{transition:transform .2s;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown.open,.pl-dropdown:focus-within{z-index:1;--label-color: var(--txt-focus)}.pl-dropdown.open .pl-dropdown__container{z-index:1000}.pl-dropdown.open .pl-dropdown__field{border-radius:6px 6px 0 0}.pl-dropdown.open .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);transform:rotate(-180deg)}.pl-dropdown:hover{--contour-color: var(--control-hover-color)}.pl-dropdown:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none;-webkit-user-select:none;user-select:none}.pl-dropdown.disabled .input-value{color:var(--dis-01)}
|
|
25
25
|
.pl-line-dropdown{display:flex;align-items:center;width:fit-content;padding:8px 0;box-sizing:border-box;position:relative;outline:none;max-width:256px}.pl-line-dropdown:focus-within:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown__prefix,.pl-line-dropdown__input{text-transform:uppercase}.pl-line-dropdown:hover:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown:after{content:"";position:absolute;bottom:0;border-bottom:2px solid var(--color-div-grey);width:100%}.pl-line-dropdown *{color:var(--txt-01);font-family:var(--font-family-base);font-size:13px;font-style:normal;font-weight:600;line-height:14px;letter-spacing:.52px}.pl-line-dropdown__input::placeholder{color:var(--txt-mask)}.pl-line-dropdown__icon{display:flex;align-items:center;min-width:16px;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-line-dropdown__icon-clear{mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_586_7851)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%2016C12.4183%2016%2016%2012.4183%2016%208C16%203.58172%2012.4183%200%208%200C3.58172%200%200%203.58172%200%208C0%2012.4183%203.58172%2016%208%2016ZM4.46967%205.53033L6.93934%208L4.46967%2010.4697L5.53033%2011.5303L8%209.06066L10.4697%2011.5303L11.5303%2010.4697L9.06066%208L11.5303%205.53033L10.4697%204.46967L8%206.93934L5.53033%204.46967L4.46967%205.53033Z'%20fill='%23CFD1DB'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_586_7851'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_586_7851)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%2016C12.4183%2016%2016%2012.4183%2016%208C16%203.58172%2012.4183%200%208%200C3.58172%200%200%203.58172%200%208C0%2012.4183%203.58172%2016%208%2016ZM4.46967%205.53033L6.93934%208L4.46967%2010.4697L5.53033%2011.5303L8%209.06066L10.4697%2011.5303L11.5303%2010.4697L9.06066%208L11.5303%205.53033L10.4697%204.46967L8%206.93934L5.53033%204.46967L4.46967%205.53033Z'%20fill='%23CFD1DB'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_586_7851'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px;background-color:var(--color-ic-02)}.pl-line-dropdown.open .pl-line-dropdown__icon{mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-line-dropdown.open:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown__icon-wrapper{padding:4px 2px 4px 0}.pl-line-dropdown.disabled *{color:var(--txt-mask);cursor:not-allowed}.pl-line-dropdown.disabled .pl-line-dropdown__icon{background-color:var(--color-div-grey)!important}.pl-line-dropdown.disabled:after{border-bottom:2px solid var(--color-div-grey)!important}.pl-line-dropdown.disabled:hover:after{border-bottom:2px solid var(--color-div-grey)!important}.pl-line-dropdown__no-item{padding:8px 12px}.pl-line-dropdown__no-item-title{color:var(--txt-03)!important;text-wrap:nowrap;text-overflow:ellipsis;overflow:hidden}.pl-line-dropdown__items{position:absolute;top:0;z-index:var(--z-dropdown-options);border-radius:6px;padding:12px 0;border:1px solid var(--color-div-grey);width:256px;box-sizing:border-box;max-height:320px;background-color:var(--bg-elevated-01);box-shadow:var(--shadow-m);--thumb-color: var(--ic-02);overflow-y:auto}.pl-line-dropdown__items::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-line-dropdown__items::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-line-dropdown__items::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-line-dropdown__items-tabs{display:flex;position:absolute;top:0;z-index:var(--z-dropdown-options);background-color:var(--color-div-bw);overflow-x:scroll;max-width:400px;padding:6px 12px 12px;border:1px solid var(--color-div-grey);border-radius:6px;box-shadow:var(--shadow-m);--thumb-color: var(--ic-02);overflow-x:auto}.pl-line-dropdown__items-tabs::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-line-dropdown__items-tabs::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-line-dropdown__items-tabs::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}
|
|
26
26
|
.resizable-input{position:relative;box-sizing:border-box;padding:0 8px;display:inline-block;max-width:100%;text-overflow:ellipsis;overflow:hidden}.resizable-input__size-span{font-family:inherit;white-space:pre;display:inline-block;font-size:inherit;line-height:inherit;box-sizing:border-box;position:relative;left:0;opacity:0;min-width:2px;-webkit-user-select:none;user-select:none;vertical-align:top}.resizable-input input{border:none;outline:none;height:100%;text-overflow:ellipsis;font-family:inherit;background:none;color:inherit;top:0;left:0;right:0;font-size:inherit;line-height:inherit;position:absolute;box-sizing:border-box}
|
|
27
27
|
.pl-dropdown-legacy{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}[data-theme=dark] .pl-dropdown-legacy{--options-bg: #1b1b1f}.pl-dropdown-legacy__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown-legacy label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown-legacy label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown-legacy__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);color:var(--txt-01)}.pl-dropdown-legacy__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown-legacy__options{position:relative;background-color:var(--options-bg);border-radius:0 0 6px 6px;max-height:244px;border-top:1px solid var(--color-div-black);--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown-legacy__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown-legacy__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown-legacy__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown-legacy__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:var(--control-height);background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown-legacy__options .option{position:relative;padding:0 30px 0 10px;height:var(--control-height);line-height:var(--control-height);cursor:pointer;-webkit-user-select:none;user-select:none}.pl-dropdown-legacy__options .option .checkmark{position:absolute;display:none;right:10px;top:50%;transform:translateY(-50%)}.pl-dropdown-legacy__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown-legacy__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown-legacy__options .option.selected .checkmark{display:block}.pl-dropdown-legacy__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown-legacy__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown-legacy__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding:0 11px;min-height:var(--control-height);line-height:var(--control-height);display:flex;flex-direction:row;align-items:center}.pl-dropdown-legacy__field .input-value{outline:1px solid red;position:absolute;top:0;left:0;bottom:0;right:0;padding:0 60px 0 11px;pointer-events:none;line-height:var(--control-height);color:var(--contour-color);overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown-legacy__field input{min-height:calc(var(--control-height) - 2px);line-height:calc(var(--control-height) - 2px);font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 40px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown-legacy__field input:focus{outline:none}.pl-dropdown-legacy__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown-legacy__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown-legacy__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-legacy__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-legacy__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown-legacy__controls .mask-16,.pl-dropdown-legacy__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown-legacy__controls .clear{--icon-color: var(--ic-02)}.pl-dropdown-legacy__controls .mask-loading{--icon-color: var(#07AD3E);animation:spin 2.5s linear infinite}.pl-dropdown-legacy .arrow-icon{cursor:pointer}.pl-dropdown-legacy .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-legacy.open,.pl-dropdown-legacy:focus-within{z-index:1;--label-color: var(--txt-focus)}.pl-dropdown-legacy.open .pl-dropdown-legacy__container{z-index:1000}.pl-dropdown-legacy.open .pl-dropdown-legacy__field{border-radius:6px 6px 0 0}.pl-dropdown-legacy.open .arrow-icon{background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-legacy:hover{--contour-color: var(--control-hover-color)}.pl-dropdown-legacy:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown-legacy:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown-legacy.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown-legacy.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none;-webkit-user-select:none;user-select:none}
|
package/dist/helpers/utils.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAErC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,aAGvB,CAAC,EAAE,UASpC;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,cAMjD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAIjD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,UAM1C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,kBACxB,MAAM,YAGtC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,kBAC1B,MAAM,YAItC;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,cAiB9G;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,cAmBzI;AAGD,KAAK,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAE3C,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAgB1H;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAE1E;AAED,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAErC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,aAGvB,CAAC,EAAE,UASpC;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,cAMjD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAIjD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,UAM1C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,kBACxB,MAAM,YAGtC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,kBAC1B,MAAM,YAItC;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,cAiB9G;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,cAmBzI;AAGD,KAAK,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAE3C,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAgB1H;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAE1E;AAED,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;;;;;IAWnF"}
|
package/dist/helpers/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/helpers/utils.ts"],"sourcesContent":["import type { ListOption } from '../types';\n\nexport function call<R>(f: () => R): R {\n return f();\n}\n\nexport function requestTick<P>(cb: (...args: P[]) => void) {\n let tick = false;\n\n return function handle(...args: P[]) {\n if (!tick) {\n requestAnimationFrame(() => {\n cb(...args);\n tick = false;\n });\n tick = true;\n }\n };\n}\n\nexport function delay(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nexport function timeout(cb: () => void, ms: number) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const r: any = setTimeout(cb, ms);\n return () => {\n clearTimeout(r);\n };\n}\n\nexport function randomInt(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\nexport function randomString(length: number) {\n let s = '';\n for (let i = 0; i < length; i++) {\n s += String.fromCharCode(randomInt(65, 91));\n }\n return s;\n}\n\nexport function makeEaseOut(timing: (t: number) => number) {\n return function (timeFraction: number) {\n return 1 - timing(1 - timeFraction);\n };\n}\n\nexport function makeEaseInOut(timing: (t: number) => number) {\n return function (timeFraction: number) {\n if (timeFraction < 0.5) return timing(2 * timeFraction) / 2;\n else return (2 - timing(2 * (1 - timeFraction))) / 2;\n };\n}\n\nexport function animate(options: { duration: number; draw: (p: number) => void; timing: (t: number) => number }) {\n const { duration, draw, timing } = options;\n const start = performance.now();\n let stop = false;\n requestAnimationFrame(function animate(time) {\n let timeFraction = (time - start) / duration;\n if (timeFraction > 1 || stop) timeFraction = 1;\n const progress = timing(timeFraction);\n draw(progress);\n if (timeFraction < 1) {\n requestAnimationFrame(animate);\n }\n });\n\n return function () {\n stop = true;\n };\n}\n\nexport function animateInfinite(options: { getFraction: (dt: number) => number; draw: (p: number) => void; timing: (t: number) => number }) {\n const { getFraction, draw, timing } = options;\n const start = performance.now();\n let stop = false;\n requestAnimationFrame(function animate(time) {\n let timeFraction = getFraction(time - start);\n if (stop) {\n return;\n }\n if (timeFraction > 1) timeFraction = 1;\n const progress = timing(timeFraction);\n draw(progress);\n if (timeFraction < 1) {\n requestAnimationFrame(animate);\n }\n });\n return function () {\n stop = true;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ntype AnyFunction = (...args: any[]) => any;\n\nexport function throttle<F extends AnyFunction>(callback: F, ms: number, trailing = true): (...args: Parameters<F>) => void {\n let t = 0,\n call: AnyFunction | null;\n return function (this: unknown, ...args: Parameters<F>) {\n call = () => {\n callback.apply(this, args);\n t = new Date().getTime() + ms;\n call = null;\n if (trailing) {\n setTimeout(() => {\n call?.();\n }, ms);\n }\n };\n if (new Date().getTime() > t) call();\n };\n}\n\nexport function listToOptions<T>(list: T[] | readonly T[]): ListOption<T>[] {\n return list.map((value) => ({ text: String(value), value }));\n}\n\nexport function normalizeListOptions<V = unknown>(options: Readonly<ListOption<V>[]>) {\n if (!Array.isArray(options)) {\n throw Error('Invalid component options: ' + String(options));\n }\n\n return options.map((it) => ({\n label: 'label' in it ? it.label : it.text,\n value: it.value,\n description: it.description,\n }));\n}\n"],"names":["call","f","requestTick","cb","tick","args","delay","ms","r","timeout","randomInt","min","max","randomString","length","s","i","makeEaseOut","timing","timeFraction","makeEaseInOut","animate","options","duration","draw","start","stop","time","progress","animateInfinite","getFraction","throttle","callback","trailing","t","listToOptions","list","value","normalizeListOptions","it"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/helpers/utils.ts"],"sourcesContent":["import type { ListOption } from '../types';\n\nexport function call<R>(f: () => R): R {\n return f();\n}\n\nexport function requestTick<P>(cb: (...args: P[]) => void) {\n let tick = false;\n\n return function handle(...args: P[]) {\n if (!tick) {\n requestAnimationFrame(() => {\n cb(...args);\n tick = false;\n });\n tick = true;\n }\n };\n}\n\nexport function delay(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nexport function timeout(cb: () => void, ms: number) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const r: any = setTimeout(cb, ms);\n return () => {\n clearTimeout(r);\n };\n}\n\nexport function randomInt(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\nexport function randomString(length: number) {\n let s = '';\n for (let i = 0; i < length; i++) {\n s += String.fromCharCode(randomInt(65, 91));\n }\n return s;\n}\n\nexport function makeEaseOut(timing: (t: number) => number) {\n return function (timeFraction: number) {\n return 1 - timing(1 - timeFraction);\n };\n}\n\nexport function makeEaseInOut(timing: (t: number) => number) {\n return function (timeFraction: number) {\n if (timeFraction < 0.5) return timing(2 * timeFraction) / 2;\n else return (2 - timing(2 * (1 - timeFraction))) / 2;\n };\n}\n\nexport function animate(options: { duration: number; draw: (p: number) => void; timing: (t: number) => number }) {\n const { duration, draw, timing } = options;\n const start = performance.now();\n let stop = false;\n requestAnimationFrame(function animate(time) {\n let timeFraction = (time - start) / duration;\n if (timeFraction > 1 || stop) timeFraction = 1;\n const progress = timing(timeFraction);\n draw(progress);\n if (timeFraction < 1) {\n requestAnimationFrame(animate);\n }\n });\n\n return function () {\n stop = true;\n };\n}\n\nexport function animateInfinite(options: { getFraction: (dt: number) => number; draw: (p: number) => void; timing: (t: number) => number }) {\n const { getFraction, draw, timing } = options;\n const start = performance.now();\n let stop = false;\n requestAnimationFrame(function animate(time) {\n let timeFraction = getFraction(time - start);\n if (stop) {\n return;\n }\n if (timeFraction > 1) timeFraction = 1;\n const progress = timing(timeFraction);\n draw(progress);\n if (timeFraction < 1) {\n requestAnimationFrame(animate);\n }\n });\n return function () {\n stop = true;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ntype AnyFunction = (...args: any[]) => any;\n\nexport function throttle<F extends AnyFunction>(callback: F, ms: number, trailing = true): (...args: Parameters<F>) => void {\n let t = 0,\n call: AnyFunction | null;\n return function (this: unknown, ...args: Parameters<F>) {\n call = () => {\n callback.apply(this, args);\n t = new Date().getTime() + ms;\n call = null;\n if (trailing) {\n setTimeout(() => {\n call?.();\n }, ms);\n }\n };\n if (new Date().getTime() > t) call();\n };\n}\n\nexport function listToOptions<T>(list: T[] | readonly T[]): ListOption<T>[] {\n return list.map((value) => ({ text: String(value), value }));\n}\n\nexport function normalizeListOptions<V = unknown>(options: Readonly<ListOption<V>[]>) {\n if (!Array.isArray(options)) {\n throw Error('Invalid component options: ' + String(options));\n }\n\n return options.map((it) => ({\n label: 'label' in it ? it.label : it.text,\n value: it.value,\n description: it.description,\n group: it.group,\n }));\n}\n"],"names":["call","f","requestTick","cb","tick","args","delay","ms","r","timeout","randomInt","min","max","randomString","length","s","i","makeEaseOut","timing","timeFraction","makeEaseInOut","animate","options","duration","draw","start","stop","time","progress","animateInfinite","getFraction","throttle","callback","trailing","t","listToOptions","list","value","normalizeListOptions","it"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../../sdk/model/src/internal.ts","../../../../../../../sdk/model/src/render/util/label.ts","../../../../../../../sdk/model/src/version.ts","../../../../../../../sdk/model/src/raw_globals.ts"],"sourcesContent":["import type { ValueOrErrors } from '@milaboratories/pl-model-common';\nimport {} from './global';\nimport type { Platforma } from './platforma';\nimport type { FutureHandle, GlobalCfgRenderCtx } from './render/internal';\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== 'undefined' || typeof globalThis.platforma !== 'undefined'\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, ValueOrErrors<unknown>> = Record<string, ValueOrErrors<unknown>>,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: { sdkVersion: string }): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === 'function')\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== 'undefined') return globalThis.platforma;\n else throw new Error('Can\\'t get platforma instance.');\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else throw new Error('Not in config rendering context');\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n","import type { PObjectSpec } from '@milaboratories/pl-model-common';\nimport { z } from 'zod';\n\nexport const PAnnotationLabel = 'pl7.app/label';\nexport const PAnnotationTrace = 'pl7.app/trace';\n\nexport type RecordsWithLabel<T> = {\n value: T;\n label: string;\n};\n\nexport type LabelDerivationOps = {\n /** Force inclusion of native column label */\n includeNativeLabel?: boolean;\n /** Separator to use between label parts (\" / \" by default) */\n separator?: string;\n /** If true, label will be added as suffix (at the end of the generated label). By default label added as a prefix. */\n addLabelAsSuffix?: boolean;\n /** Trace elements list that will be forced to be included in the label. */\n forceTraceElements?: string[];\n};\n\nexport const TraceEntry = z.object({\n type: z.string(),\n importance: z.number().optional(),\n id: z.string().optional(),\n label: z.string(),\n});\nexport type TraceEntry = z.infer<typeof TraceEntry>;\ntype FullTraceEntry = TraceEntry & { fullType: string; occurrenceIndex: number };\n\nexport const Trace = z.array(TraceEntry);\nexport type Trace = z.infer<typeof Trace>;\ntype FullTrace = FullTraceEntry[];\n\n// Define the possible return types for the specExtractor function\ntype SpecExtractorResult = PObjectSpec | {\n spec: PObjectSpec;\n prefixTrace?: TraceEntry[];\n suffixTrace?: TraceEntry[];\n};\n\nconst DistancePenalty = 0.001;\n\nconst LabelType = '__LABEL__';\nconst LabelTypeFull = '__LABEL__@1';\n\nexport function deriveLabels<T>(\n values: T[],\n specExtractor: (obj: T) => SpecExtractorResult,\n ops: LabelDerivationOps = {},\n): RecordsWithLabel<T>[] {\n const importances = new Map<string, number>();\n\n const forceTraceElements = (ops.forceTraceElements !== undefined && ops.forceTraceElements.length > 0)\n ? new Set(ops.forceTraceElements)\n : undefined;\n\n // number of times certain type occurred among all of the\n const numberOfRecordsWithType = new Map<string, number>();\n\n const enrichedRecords = values.map((value) => {\n const extractorResult = specExtractor(value);\n let spec: PObjectSpec;\n let prefixTrace: TraceEntry[] | undefined;\n let suffixTrace: TraceEntry[] | undefined;\n\n // Check if the result is the new structure or just PObjectSpec\n if ('spec' in extractorResult && typeof extractorResult.spec === 'object') {\n // It's the new structure { spec, prefixTrace?, suffixTrace? }\n spec = extractorResult.spec;\n prefixTrace = extractorResult.prefixTrace;\n suffixTrace = extractorResult.suffixTrace;\n } else {\n // It's just PObjectSpec\n spec = extractorResult as PObjectSpec;\n }\n\n const label = spec.annotations?.[PAnnotationLabel];\n const traceStr = spec.annotations?.[PAnnotationTrace];\n const baseTrace = (traceStr ? Trace.safeParse(JSON.parse(traceStr)).data : undefined) ?? [];\n\n const trace = [\n ...(prefixTrace ?? []),\n ...baseTrace,\n ...(suffixTrace ?? []),\n ];\n\n if (label !== undefined) {\n const labelEntry = { label, type: LabelType, importance: -2 };\n if (ops.addLabelAsSuffix) trace.push(labelEntry);\n else trace.splice(0, 0, labelEntry);\n }\n\n const fullTrace: FullTrace = [];\n\n const occurrences = new Map<string, number>();\n for (let i = trace.length - 1; i >= 0; --i) {\n const { type: typeName } = trace[i];\n const importance = trace[i].importance ?? 0;\n const occurrenceIndex = (occurrences.get(typeName) ?? 0) + 1;\n occurrences.set(typeName, occurrenceIndex);\n const fullType = `${typeName}@${occurrenceIndex}`;\n numberOfRecordsWithType.set(fullType, (numberOfRecordsWithType.get(fullType) ?? 0) + 1);\n importances.set(\n fullType,\n Math.max(\n importances.get(fullType) ?? Number.NEGATIVE_INFINITY,\n importance - (trace.length - i) * DistancePenalty,\n ),\n );\n fullTrace.push({ ...trace[i], fullType, occurrenceIndex: occurrenceIndex });\n }\n fullTrace.reverse();\n return {\n value,\n spec,\n label,\n fullTrace,\n };\n });\n\n // excluding repeated types (i.e. ..@2, ..@3, etc.) not found in some records\n const mainTypes: string[] = [];\n // repeated types (i.e. ..@2, ..@3, etc.) not found in some records\n const secondaryTypes: string[] = [];\n\n const allTypeRecords = [...importances];\n // sorting: most important types go first\n allTypeRecords.sort(([, i1], [, i2]) => i2 - i1);\n\n for (const [typeName] of allTypeRecords) {\n if (typeName.endsWith('@1') || numberOfRecordsWithType.get(typeName) === values.length)\n mainTypes.push(typeName);\n else secondaryTypes.push(typeName);\n }\n\n const calculate = (includedTypes: Set<string>, force: boolean = false) => {\n const result: RecordsWithLabel<T>[] = [];\n for (let i = 0; i < enrichedRecords.length; i++) {\n const r = enrichedRecords[i];\n const includedTrace = r.fullTrace\n .filter((fm) => includedTypes.has(fm.fullType)\n || (forceTraceElements && forceTraceElements.has(fm.type)));\n if (includedTrace.length === 0) {\n if (force)\n result.push({\n label: 'Unlabeled',\n value: r.value,\n } satisfies RecordsWithLabel<T>);\n else return undefined;\n }\n const labelSet = includedTrace\n .map((fm) => fm.label);\n const sep = ops.separator ?? ' / ';\n result.push({\n label: labelSet.join(sep),\n value: r.value,\n } satisfies RecordsWithLabel<T>);\n }\n return result;\n };\n\n if (mainTypes.length === 0) {\n if (secondaryTypes.length !== 0) throw new Error('Non-empty secondary types list while main types list is empty.');\n return calculate(new Set(LabelTypeFull), true)!;\n }\n\n //\n // includedTypes = 2\n // * *\n // T0 T1 T2 T3 T4 T5\n // *\n // additionalType = 3\n //\n // Resulting set: T0, T1, T3\n //\n let includedTypes = 0;\n let additionalType = -1;\n while (includedTypes < mainTypes.length) {\n const currentSet = new Set<string>();\n if (ops.includeNativeLabel) currentSet.add(LabelTypeFull);\n for (let i = 0; i < includedTypes; ++i) currentSet.add(mainTypes[i]);\n if (additionalType >= 0)\n currentSet.add(mainTypes[additionalType]);\n\n const candidateResult = calculate(currentSet);\n\n // checking if labels uniquely separate our records\n if (candidateResult !== undefined && new Set(candidateResult.map((c) => c.label)).size === values.length) return candidateResult;\n\n additionalType++;\n if (additionalType >= mainTypes.length) {\n includedTypes++;\n additionalType = includedTypes;\n }\n }\n\n return calculate(new Set([...mainTypes, ...secondaryTypes]), true)!;\n}\n","export const PlatformaSDKVersion = '1.37.11';\n","import type { ValueOrErrors } from '@milaboratories/pl-model-common';\nimport {} from './global';\nimport { getPlatformaInstance } from './internal';\nimport type { Platforma } from './platforma';\nimport { PlatformaSDKVersion } from './version';\n\nexport function getRawPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, ValueOrErrors<unknown>> = Record<string, ValueOrErrors<unknown>>,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(): Platforma<Args, Outputs, UiState, Href> {\n return getPlatformaInstance<Args, Outputs, UiState, Href>({ sdkVersion: PlatformaSDKVersion });\n}\n\n/** Returns a global platforma instance or a provided fallback if it's not available. */\nexport function getPlatformaOrDefault<\n Args = unknown,\n Outputs extends Record<string, ValueOrErrors<unknown>> = Record<string, ValueOrErrors<unknown>>,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(platforma: Platforma<Args, Outputs, UiState, Href>): Platforma<Args, Outputs, UiState, Href> {\n try {\n return getRawPlatformaInstance<Args, Outputs, UiState, Href>();\n } catch {\n return platforma;\n }\n}\n"],"names":["getPlatformaInstance","config","TraceEntry","z","PlatformaSDKVersion","getRawPlatformaInstance"],"mappings":";;;AAaO,SAASA,EAKdC,GAA0E;AACtEA,MAAAA,KAAU,OAAO,WAAW,gBAAiB;AACxC,WAAA,WAAW,aAAaA,CAAM;AAAA,MAC9B,OAAO,WAAW,YAAc,IAAA,QAAoB,WAAW;AAC7D,QAAA,IAAI,MAAM,+BAAgC;AACvD;MCDaC,IAAaC,EAAE,OAAO;AAAA,EACjC,MAAMA,EAAE,OAAO;AAAA,EACf,YAAYA,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,IAAIA,EAAE,OAAO,EAAE,SAAS;AAAA,EACxB,OAAOA,EAAE,OAAO;AAClB,CAAC;AAIoBA,EAAE,MAAMD,CAAU;AC/BhC,MAAME,IAAsB;ACM5B,SAASC,IAK6B;AACpCL,SAAAA,EAAmD,EAAE,YAAYI,GAAqB;AAC/F;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../sdk/model/src/internal.ts","../../../../../../../sdk/model/src/render/util/label.ts","../../../../../../../sdk/model/src/version.ts","../../../../../../../sdk/model/src/raw_globals.ts"],"sourcesContent":["import type { ValueOrErrors } from '@milaboratories/pl-model-common';\nimport {} from './global';\nimport type { Platforma } from './platforma';\nimport type { FutureHandle, GlobalCfgRenderCtx } from './render/internal';\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== 'undefined' || typeof globalThis.platforma !== 'undefined'\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, ValueOrErrors<unknown>> = Record<string, ValueOrErrors<unknown>>,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: { sdkVersion: string }): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === 'function')\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== 'undefined') return globalThis.platforma;\n else throw new Error('Can\\'t get platforma instance.');\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else throw new Error('Not in config rendering context');\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n","import type { PObjectSpec } from '@milaboratories/pl-model-common';\nimport { z } from 'zod';\n\nexport const PAnnotationLabel = 'pl7.app/label';\nexport const PAnnotationTrace = 'pl7.app/trace';\n\nexport type RecordsWithLabel<T> = {\n value: T;\n label: string;\n};\n\nexport type LabelDerivationOps = {\n /** Force inclusion of native column label */\n includeNativeLabel?: boolean;\n /** Separator to use between label parts (\" / \" by default) */\n separator?: string;\n /** If true, label will be added as suffix (at the end of the generated label). By default label added as a prefix. */\n addLabelAsSuffix?: boolean;\n /** Trace elements list that will be forced to be included in the label. */\n forceTraceElements?: string[];\n};\n\nexport const TraceEntry = z.object({\n type: z.string(),\n importance: z.number().optional(),\n id: z.string().optional(),\n label: z.string(),\n});\nexport type TraceEntry = z.infer<typeof TraceEntry>;\ntype FullTraceEntry = TraceEntry & { fullType: string; occurrenceIndex: number };\n\nexport const Trace = z.array(TraceEntry);\nexport type Trace = z.infer<typeof Trace>;\ntype FullTrace = FullTraceEntry[];\n\n// Define the possible return types for the specExtractor function\ntype SpecExtractorResult = PObjectSpec | {\n spec: PObjectSpec;\n prefixTrace?: TraceEntry[];\n suffixTrace?: TraceEntry[];\n};\n\nconst DistancePenalty = 0.001;\n\nconst LabelType = '__LABEL__';\nconst LabelTypeFull = '__LABEL__@1';\n\nexport function deriveLabels<T>(\n values: T[],\n specExtractor: (obj: T) => SpecExtractorResult,\n ops: LabelDerivationOps = {},\n): RecordsWithLabel<T>[] {\n const importances = new Map<string, number>();\n\n const forceTraceElements = (ops.forceTraceElements !== undefined && ops.forceTraceElements.length > 0)\n ? new Set(ops.forceTraceElements)\n : undefined;\n\n // number of times certain type occurred among all of the\n const numberOfRecordsWithType = new Map<string, number>();\n\n const enrichedRecords = values.map((value) => {\n const extractorResult = specExtractor(value);\n let spec: PObjectSpec;\n let prefixTrace: TraceEntry[] | undefined;\n let suffixTrace: TraceEntry[] | undefined;\n\n // Check if the result is the new structure or just PObjectSpec\n if ('spec' in extractorResult && typeof extractorResult.spec === 'object') {\n // It's the new structure { spec, prefixTrace?, suffixTrace? }\n spec = extractorResult.spec;\n prefixTrace = extractorResult.prefixTrace;\n suffixTrace = extractorResult.suffixTrace;\n } else {\n // It's just PObjectSpec\n spec = extractorResult as PObjectSpec;\n }\n\n const label = spec.annotations?.[PAnnotationLabel];\n const traceStr = spec.annotations?.[PAnnotationTrace];\n const baseTrace = (traceStr ? Trace.safeParse(JSON.parse(traceStr)).data : undefined) ?? [];\n\n const trace = [\n ...(prefixTrace ?? []),\n ...baseTrace,\n ...(suffixTrace ?? []),\n ];\n\n if (label !== undefined) {\n const labelEntry = { label, type: LabelType, importance: -2 };\n if (ops.addLabelAsSuffix) trace.push(labelEntry);\n else trace.splice(0, 0, labelEntry);\n }\n\n const fullTrace: FullTrace = [];\n\n const occurrences = new Map<string, number>();\n for (let i = trace.length - 1; i >= 0; --i) {\n const { type: typeName } = trace[i];\n const importance = trace[i].importance ?? 0;\n const occurrenceIndex = (occurrences.get(typeName) ?? 0) + 1;\n occurrences.set(typeName, occurrenceIndex);\n const fullType = `${typeName}@${occurrenceIndex}`;\n numberOfRecordsWithType.set(fullType, (numberOfRecordsWithType.get(fullType) ?? 0) + 1);\n importances.set(\n fullType,\n Math.max(\n importances.get(fullType) ?? Number.NEGATIVE_INFINITY,\n importance - (trace.length - i) * DistancePenalty,\n ),\n );\n fullTrace.push({ ...trace[i], fullType, occurrenceIndex: occurrenceIndex });\n }\n fullTrace.reverse();\n return {\n value,\n spec,\n label,\n fullTrace,\n };\n });\n\n // excluding repeated types (i.e. ..@2, ..@3, etc.) not found in some records\n const mainTypes: string[] = [];\n // repeated types (i.e. ..@2, ..@3, etc.) not found in some records\n const secondaryTypes: string[] = [];\n\n const allTypeRecords = [...importances];\n // sorting: most important types go first\n allTypeRecords.sort(([, i1], [, i2]) => i2 - i1);\n\n for (const [typeName] of allTypeRecords) {\n if (typeName.endsWith('@1') || numberOfRecordsWithType.get(typeName) === values.length)\n mainTypes.push(typeName);\n else secondaryTypes.push(typeName);\n }\n\n const calculate = (includedTypes: Set<string>, force: boolean = false) => {\n const result: RecordsWithLabel<T>[] = [];\n for (let i = 0; i < enrichedRecords.length; i++) {\n const r = enrichedRecords[i];\n const includedTrace = r.fullTrace\n .filter((fm) => includedTypes.has(fm.fullType)\n || (forceTraceElements && forceTraceElements.has(fm.type)));\n if (includedTrace.length === 0) {\n if (force)\n result.push({\n label: 'Unlabeled',\n value: r.value,\n } satisfies RecordsWithLabel<T>);\n else return undefined;\n }\n const labelSet = includedTrace\n .map((fm) => fm.label);\n const sep = ops.separator ?? ' / ';\n result.push({\n label: labelSet.join(sep),\n value: r.value,\n } satisfies RecordsWithLabel<T>);\n }\n return result;\n };\n\n if (mainTypes.length === 0) {\n if (secondaryTypes.length !== 0) throw new Error('Non-empty secondary types list while main types list is empty.');\n return calculate(new Set(LabelTypeFull), true)!;\n }\n\n //\n // includedTypes = 2\n // * *\n // T0 T1 T2 T3 T4 T5\n // *\n // additionalType = 3\n //\n // Resulting set: T0, T1, T3\n //\n let includedTypes = 0;\n let additionalType = -1;\n while (includedTypes < mainTypes.length) {\n const currentSet = new Set<string>();\n if (ops.includeNativeLabel) currentSet.add(LabelTypeFull);\n for (let i = 0; i < includedTypes; ++i) currentSet.add(mainTypes[i]);\n if (additionalType >= 0)\n currentSet.add(mainTypes[additionalType]);\n\n const candidateResult = calculate(currentSet);\n\n // checking if labels uniquely separate our records\n if (candidateResult !== undefined && new Set(candidateResult.map((c) => c.label)).size === values.length) return candidateResult;\n\n additionalType++;\n if (additionalType >= mainTypes.length) {\n includedTypes++;\n additionalType = includedTypes;\n }\n }\n\n return calculate(new Set([...mainTypes, ...secondaryTypes]), true)!;\n}\n","export const PlatformaSDKVersion = '1.37.14';\n","import type { ValueOrErrors } from '@milaboratories/pl-model-common';\nimport {} from './global';\nimport { getPlatformaInstance } from './internal';\nimport type { Platforma } from './platforma';\nimport { PlatformaSDKVersion } from './version';\n\nexport function getRawPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, ValueOrErrors<unknown>> = Record<string, ValueOrErrors<unknown>>,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(): Platforma<Args, Outputs, UiState, Href> {\n return getPlatformaInstance<Args, Outputs, UiState, Href>({ sdkVersion: PlatformaSDKVersion });\n}\n\n/** Returns a global platforma instance or a provided fallback if it's not available. */\nexport function getPlatformaOrDefault<\n Args = unknown,\n Outputs extends Record<string, ValueOrErrors<unknown>> = Record<string, ValueOrErrors<unknown>>,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(platforma: Platforma<Args, Outputs, UiState, Href>): Platforma<Args, Outputs, UiState, Href> {\n try {\n return getRawPlatformaInstance<Args, Outputs, UiState, Href>();\n } catch {\n return platforma;\n }\n}\n"],"names":["getPlatformaInstance","config","TraceEntry","z","PlatformaSDKVersion","getRawPlatformaInstance"],"mappings":";;;AAaO,SAASA,EAKdC,GAA0E;AACtEA,MAAAA,KAAU,OAAO,WAAW,gBAAiB;AACxC,WAAA,WAAW,aAAaA,CAAM;AAAA,MAC9B,OAAO,WAAW,YAAc,IAAA,QAAoB,WAAW;AAC7D,QAAA,IAAI,MAAM,+BAAgC;AACvD;MCDaC,IAAaC,EAAE,OAAO;AAAA,EACjC,MAAMA,EAAE,OAAO;AAAA,EACf,YAAYA,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,IAAIA,EAAE,OAAO,EAAE,SAAS;AAAA,EACxB,OAAOA,EAAE,OAAO;AAClB,CAAC;AAIoBA,EAAE,MAAMD,CAAU;AC/BhC,MAAME,IAAsB;ACM5B,SAASC,IAK6B;AACpCL,SAAAA,EAAmD,EAAE,YAAYI,GAAqB;AAC/F;"}
|
package/dist/types.d.ts
CHANGED
|
@@ -23,25 +23,15 @@ export type SimpleOption<T = unknown> = {
|
|
|
23
23
|
label: string;
|
|
24
24
|
value: T;
|
|
25
25
|
};
|
|
26
|
-
export type SimpleOptionNormalized<T = unknown> = {
|
|
27
|
-
label: string;
|
|
28
|
-
description?: string;
|
|
29
|
-
value: T;
|
|
30
|
-
};
|
|
31
|
-
export type ListOption<T = unknown> = {
|
|
32
|
-
text: string;
|
|
33
|
-
description?: string;
|
|
34
|
-
value: T;
|
|
35
|
-
} | {
|
|
36
|
-
label: string;
|
|
37
|
-
description?: string;
|
|
38
|
-
value: T;
|
|
39
|
-
};
|
|
40
26
|
export type ListOptionNormalized<T = unknown> = ListOptionBase<T>;
|
|
27
|
+
export type ListOption<T = unknown> = Omit<ListOptionBase<T>, 'label'> & {
|
|
28
|
+
text: string;
|
|
29
|
+
} | ListOptionBase<T>;
|
|
41
30
|
export type { ModelRef };
|
|
42
31
|
export type RefOption = {
|
|
43
32
|
readonly label: string;
|
|
44
33
|
readonly ref: ModelRef;
|
|
34
|
+
readonly group?: string;
|
|
45
35
|
};
|
|
46
36
|
export type ListOptionType<Type> = Type extends ListOption<infer X>[] ? X : never;
|
|
47
37
|
export { icons16, icons24 };
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,IAAI,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1H,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAErC,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAE7D,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAChC;IACA,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;CACV,GACC;IACA,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEJ,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
attrs: Partial<{}>;
|
|
3
|
+
slots: {
|
|
4
|
+
default?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
refs: {};
|
|
7
|
+
rootEl: HTMLDivElement;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
+
declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
11
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=TextLabel.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextLabel.vue.d.ts","sourceRoot":"","sources":["../../src/utils/TextLabel.vue"],"names":[],"mappings":"AA+CA,iBAAS,cAAc;WAkCT,OAAO,IAA6B;;yBAVrB,GAAG;;;;EAe/B;AAOD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,0RAMnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AASpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createElementBlock as t, openBlock as o, normalizeClass as s, createElementVNode as l, renderSlot as r } from "vue";
|
|
2
|
+
import a from "./TextLabel.vue2.js";
|
|
3
|
+
import c from "../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const n = {};
|
|
5
|
+
function d(e, f) {
|
|
6
|
+
return o(), t("div", {
|
|
7
|
+
class: s(e.$style.textLabel)
|
|
8
|
+
}, [
|
|
9
|
+
l("div", {
|
|
10
|
+
class: s(e.$style.label)
|
|
11
|
+
}, [
|
|
12
|
+
l("div", {
|
|
13
|
+
class: s(e.$style.labelText)
|
|
14
|
+
}, [
|
|
15
|
+
r(e.$slots, "default")
|
|
16
|
+
], 2)
|
|
17
|
+
], 2)
|
|
18
|
+
], 2);
|
|
19
|
+
}
|
|
20
|
+
const m = {
|
|
21
|
+
$style: a
|
|
22
|
+
}, _ = /* @__PURE__ */ c(n, [["render", d], ["__cssModules", m]]);
|
|
23
|
+
export {
|
|
24
|
+
_ as default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=TextLabel.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextLabel.vue.js","sources":["../../src/utils/TextLabel.vue"],"sourcesContent":["<template>\n <div :class=\"$style.textLabel\">\n <div :class=\"$style.label\">\n <div :class=\"$style.labelText\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.textLabel {\n padding: 0px 12px;\n}\n\n.label {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--txt-03);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n}\n\n.labelText {\n display: inline-block;\n max-width: 100%;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.label::after {\n display: block;\n flex: 1;\n content: '';\n height: 1px;\n background-color: var(--border-color-div-grey);\n width: 100%;\n}\n</style>\n"],"names":["_cache","_openBlock","_createElementBlock","_createElementVNode"],"mappings":";;;;cAOQA,GAAA;AANA,SADRC,EAAA,GAAAC,EAC+B,OAAA;AAAA;KAKrB;AAAA,IAJAC,EAFV,OAEuB;AAAA;OAGX;AAAA,MAFAA,EAHZ,OAGyB;AAAA;SACT;AAAA;;;;;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._textLabel_v2o3d_1{padding:0 12px}._label_v2o3d_5{display:flex;align-items:center;gap:4px;color:var(--txt-03);font-size:12px;font-weight:500;line-height:16px}._labelText_v2o3d_15{display:inline-block;max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._label_v2o3d_5:after{display:block;flex:1;content:"";height:1px;background-color:var(--border-color-div-grey);width:100%}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
|
+
const e = "_textLabel_v2o3d_1", l = "_label_v2o3d_5", t = "_labelText_v2o3d_15", a = {
|
|
3
|
+
textLabel: e,
|
|
4
|
+
label: l,
|
|
5
|
+
labelText: t
|
|
6
|
+
};
|
|
7
|
+
export {
|
|
8
|
+
a as default,
|
|
9
|
+
l as label,
|
|
10
|
+
t as labelText,
|
|
11
|
+
e as textLabel
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=TextLabel.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextLabel.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/uikit",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.96",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"sortablejs": "^1.15.6",
|
|
20
20
|
"vue": "^3.5.13",
|
|
21
21
|
"d3": "^7.9.0",
|
|
22
|
-
"@platforma-sdk/model": "^1.37.
|
|
23
|
-
"@milaboratories/helpers": "^1.6.
|
|
22
|
+
"@platforma-sdk/model": "^1.37.14",
|
|
23
|
+
"@milaboratories/helpers": "^1.6.16"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/d3": "^7.4.3",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"vue-tsc": "^2.1.10",
|
|
35
35
|
"yarpm": "^1.2.0",
|
|
36
36
|
"svgo": "^3.3.2",
|
|
37
|
-
"@milaboratories/build-configs": "1.0.4",
|
|
38
37
|
"@milaboratories/ts-configs": "1.0.4",
|
|
38
|
+
"@milaboratories/build-configs": "1.0.4",
|
|
39
39
|
"@milaboratories/eslint-config": "^1.0.4"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
@@ -4,15 +4,15 @@ import { PlMaskIcon16 } from '../PlMaskIcon16';
|
|
|
4
4
|
import { PlSectionSeparator } from '../PlSectionSeparator';
|
|
5
5
|
import ExpandTransition from './ExpandTransition.vue';
|
|
6
6
|
import type { Ref } from 'vue';
|
|
7
|
-
import { computed, inject } from 'vue';
|
|
7
|
+
import { computed, inject, toRef } from 'vue';
|
|
8
8
|
|
|
9
|
-
const $m = inject<Ref<string>>('pl-accordion-model');
|
|
9
|
+
const $m = inject<Ref<string>>('pl-accordion-model', () => toRef(''), true);
|
|
10
10
|
|
|
11
11
|
const $p = inject<
|
|
12
12
|
Ref<{
|
|
13
13
|
multiple?: boolean;
|
|
14
14
|
}>
|
|
15
|
-
>('pl-accordion-props');
|
|
15
|
+
>('pl-accordion-props', () => toRef({ multiple: false }), true);
|
|
16
16
|
|
|
17
17
|
const model = defineModel<boolean>();
|
|
18
18
|
|
|
@@ -9,7 +9,7 @@ export default {
|
|
|
9
9
|
|
|
10
10
|
<script lang="ts" setup generic="M = unknown">
|
|
11
11
|
import './pl-autocomplete.scss';
|
|
12
|
-
import { computed, reactive, ref, unref,
|
|
12
|
+
import { computed, reactive, ref, unref, useTemplateRef, watch, watchPostEffect } from 'vue';
|
|
13
13
|
import { tap } from '../../helpers/functions';
|
|
14
14
|
import { PlTooltip } from '../PlTooltip';
|
|
15
15
|
import DoubleContour from '../../utils/DoubleContour.vue';
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import DropdownListItem from '../DropdownListItem.vue';
|
|
3
|
+
import { DropdownOverlay } from '../../utils/DropdownOverlay';
|
|
4
|
+
import TextLabel from '../../utils/TextLabel.vue';
|
|
5
|
+
import { computed, useTemplateRef } from 'vue';
|
|
6
|
+
import type { LOption } from './types';
|
|
7
|
+
|
|
8
|
+
const props = defineProps<{
|
|
9
|
+
rootRef: HTMLElement;
|
|
10
|
+
groups: Map<string, LOption[]>;
|
|
11
|
+
rest: LOption[];
|
|
12
|
+
optionSize: 'small' | 'medium';
|
|
13
|
+
selectOption: (v: unknown) => void;
|
|
14
|
+
}>();
|
|
15
|
+
|
|
16
|
+
const overlay = useTemplateRef('overlay');
|
|
17
|
+
|
|
18
|
+
const listRef = computed(() => overlay.value?.listRef);
|
|
19
|
+
|
|
20
|
+
const hasGroups = computed(() => props.groups.size > 0);
|
|
21
|
+
|
|
22
|
+
const optionsLength = computed(() => {
|
|
23
|
+
let totalGroupItems = 0;
|
|
24
|
+
for (const items of props.groups.values()) {
|
|
25
|
+
totalGroupItems += items.length;
|
|
26
|
+
}
|
|
27
|
+
return totalGroupItems + props.rest.length;
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const scrollIntoActive = () => {
|
|
31
|
+
overlay.value?.scrollIntoActive();
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
defineExpose({
|
|
35
|
+
scrollIntoActive,
|
|
36
|
+
listRef,
|
|
37
|
+
});
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<template>
|
|
41
|
+
<DropdownOverlay ref="overlay" :root="rootRef" class="pl-dropdown__options" tabindex="-1" :gap="3">
|
|
42
|
+
<div v-for="[group, items] in groups.entries()" :key="group" :class="{ 'group-container': hasGroups }">
|
|
43
|
+
<TextLabel>{{ group }}</TextLabel>
|
|
44
|
+
<div>
|
|
45
|
+
<DropdownListItem
|
|
46
|
+
v-for="(item, index) in items"
|
|
47
|
+
:key="index"
|
|
48
|
+
:option="item"
|
|
49
|
+
:is-selected="item.isSelected"
|
|
50
|
+
:is-hovered="item.isActive"
|
|
51
|
+
:size="optionSize"
|
|
52
|
+
@click.stop="selectOption(item.value)"
|
|
53
|
+
/>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
<div v-if="rest.length" :class="{ 'group-container': hasGroups }">
|
|
57
|
+
<TextLabel />
|
|
58
|
+
<div>
|
|
59
|
+
<DropdownListItem
|
|
60
|
+
v-for="(item, index) in rest"
|
|
61
|
+
:key="index" :option="item"
|
|
62
|
+
:is-selected="item.isSelected"
|
|
63
|
+
:is-hovered="item.isActive"
|
|
64
|
+
:size="optionSize"
|
|
65
|
+
@click.stop="selectOption(item.value)"
|
|
66
|
+
/>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
<div v-if="!optionsLength" class="nothing-found">Nothing found</div>
|
|
70
|
+
</DropdownOverlay>
|
|
71
|
+
</template>
|
|
@@ -9,21 +9,22 @@ export default {
|
|
|
9
9
|
|
|
10
10
|
<script lang="ts" setup generic="M = unknown">
|
|
11
11
|
import './pl-dropdown.scss';
|
|
12
|
-
import { computed, reactive, ref, unref,
|
|
12
|
+
import { computed, reactive, ref, unref, useTemplateRef, watch, watchPostEffect } from 'vue';
|
|
13
13
|
import { tap } from '../../helpers/functions';
|
|
14
14
|
import { PlTooltip } from '../PlTooltip';
|
|
15
15
|
import DoubleContour from '../../utils/DoubleContour.vue';
|
|
16
16
|
import { useLabelNotch } from '../../utils/useLabelNotch';
|
|
17
17
|
import type { ListOption, ListOptionNormalized } from '../../types';
|
|
18
18
|
import { deepEqual } from '../../helpers/objects';
|
|
19
|
-
import DropdownListItem from '../DropdownListItem.vue';
|
|
20
19
|
import LongText from '../LongText.vue';
|
|
21
20
|
import { normalizeListOptions } from '../../helpers/utils';
|
|
22
21
|
import { PlIcon16 } from '../PlIcon16';
|
|
23
22
|
import { PlMaskIcon24 } from '../PlMaskIcon24';
|
|
24
|
-
import { DropdownOverlay } from '../../utils/DropdownOverlay';
|
|
25
23
|
import SvgRequired from '../../generated/components/svg/images/SvgRequired.vue';
|
|
26
24
|
import { getErrorMessage } from '../../helpers/error.ts';
|
|
25
|
+
import OptionList from './OptionList.vue';
|
|
26
|
+
import { useGroupBy } from './useGroupBy';
|
|
27
|
+
import type { LOption } from './types';
|
|
27
28
|
|
|
28
29
|
const emit = defineEmits<{
|
|
29
30
|
/**
|
|
@@ -110,7 +111,7 @@ const slots = defineSlots<{
|
|
|
110
111
|
const rootRef = ref<HTMLElement | undefined>();
|
|
111
112
|
const input = ref<HTMLInputElement | undefined>();
|
|
112
113
|
|
|
113
|
-
const
|
|
114
|
+
const optionListRef = useTemplateRef<InstanceType<typeof OptionList>>('optionListRef');
|
|
114
115
|
|
|
115
116
|
const data = reactive({
|
|
116
117
|
search: '',
|
|
@@ -121,7 +122,7 @@ const data = reactive({
|
|
|
121
122
|
|
|
122
123
|
const findActiveIndex = () =>
|
|
123
124
|
tap(
|
|
124
|
-
|
|
125
|
+
orderedRef.value.findIndex((o) => deepEqual(o.value, props.modelValue)),
|
|
125
126
|
(v) => (v < 0 ? 0 : v),
|
|
126
127
|
);
|
|
127
128
|
|
|
@@ -159,7 +160,7 @@ const computedError = computed(() => {
|
|
|
159
160
|
return undefined;
|
|
160
161
|
});
|
|
161
162
|
|
|
162
|
-
const optionsRef = computed(() =>
|
|
163
|
+
const optionsRef = computed<LOption<M>[]>(() =>
|
|
163
164
|
normalizeListOptions(props.options ?? []).map((opt, index) => ({
|
|
164
165
|
...opt,
|
|
165
166
|
index,
|
|
@@ -214,6 +215,8 @@ const filteredRef = computed(() => {
|
|
|
214
215
|
return options;
|
|
215
216
|
});
|
|
216
217
|
|
|
218
|
+
const { orderedRef, groupsRef, restRef } = useGroupBy(filteredRef, 'group');
|
|
219
|
+
|
|
217
220
|
const tabindex = computed(() => (isDisabled.value ? undefined : '0'));
|
|
218
221
|
|
|
219
222
|
const selectOption = (v: M | undefined) => {
|
|
@@ -223,6 +226,10 @@ const selectOption = (v: M | undefined) => {
|
|
|
223
226
|
rootRef?.value?.focus();
|
|
224
227
|
};
|
|
225
228
|
|
|
229
|
+
const selectOptionWrapper = (v: unknown) => {
|
|
230
|
+
selectOption(v as M | undefined);
|
|
231
|
+
};
|
|
232
|
+
|
|
226
233
|
const clear = () => emit('update:modelValue', undefined);
|
|
227
234
|
|
|
228
235
|
const setFocusOnInput = () => input.value?.focus();
|
|
@@ -239,7 +246,7 @@ const onInputFocus = () => (data.open = true);
|
|
|
239
246
|
const onFocusOut = (event: FocusEvent) => {
|
|
240
247
|
const relatedTarget = event.relatedTarget as Node | null;
|
|
241
248
|
|
|
242
|
-
if (!rootRef.value?.contains(relatedTarget) && !
|
|
249
|
+
if (!rootRef.value?.contains(relatedTarget) && !optionListRef.value?.listRef?.contains(relatedTarget)) {
|
|
243
250
|
data.search = '';
|
|
244
251
|
data.open = false;
|
|
245
252
|
}
|
|
@@ -266,25 +273,25 @@ const handleKeydown = (e: { code: string; preventDefault(): void }) => {
|
|
|
266
273
|
rootRef.value?.focus();
|
|
267
274
|
}
|
|
268
275
|
|
|
269
|
-
const
|
|
276
|
+
const ordered = orderedRef.value;
|
|
270
277
|
|
|
271
|
-
const { length } =
|
|
278
|
+
const { length } = ordered;
|
|
272
279
|
|
|
273
280
|
if (!length) {
|
|
274
281
|
return;
|
|
275
282
|
}
|
|
276
283
|
|
|
277
284
|
if (e.code === 'Enter') {
|
|
278
|
-
selectOption(
|
|
285
|
+
selectOption(ordered.find((it) => it.index === activeIndex)?.value);
|
|
279
286
|
}
|
|
280
287
|
|
|
281
|
-
const localIndex =
|
|
288
|
+
const localIndex = ordered.findIndex((it) => it.index === activeIndex) ?? -1;
|
|
282
289
|
|
|
283
290
|
const delta = e.code === 'ArrowDown' ? 1 : e.code === 'ArrowUp' ? -1 : 0;
|
|
284
291
|
|
|
285
292
|
const newIndex = Math.abs(localIndex + delta + length) % length;
|
|
286
293
|
|
|
287
|
-
data.activeIndex =
|
|
294
|
+
data.activeIndex = ordered[newIndex].index ?? -1;
|
|
288
295
|
};
|
|
289
296
|
|
|
290
297
|
useLabelNotch(rootRef);
|
|
@@ -301,7 +308,7 @@ watchPostEffect(() => {
|
|
|
301
308
|
data.search; // to watch
|
|
302
309
|
|
|
303
310
|
if (data.activeIndex >= 0 && data.open) {
|
|
304
|
-
|
|
311
|
+
optionListRef.value?.scrollIntoActive();
|
|
305
312
|
}
|
|
306
313
|
});
|
|
307
314
|
</script>
|
|
@@ -354,18 +361,15 @@ watchPostEffect(() => {
|
|
|
354
361
|
</template>
|
|
355
362
|
</PlTooltip>
|
|
356
363
|
</label>
|
|
357
|
-
<
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
/>
|
|
367
|
-
<div v-if="!filteredRef.length" class="nothing-found">Nothing found</div>
|
|
368
|
-
</DropdownOverlay>
|
|
364
|
+
<OptionList
|
|
365
|
+
v-if="data.open"
|
|
366
|
+
ref="optionListRef"
|
|
367
|
+
:root-ref="rootRef!"
|
|
368
|
+
:groups="groupsRef"
|
|
369
|
+
:rest="restRef"
|
|
370
|
+
:option-size="optionSize"
|
|
371
|
+
:select-option="selectOptionWrapper"
|
|
372
|
+
/>
|
|
369
373
|
<DoubleContour class="pl-dropdown__contour" />
|
|
370
374
|
</div>
|
|
371
375
|
</div>
|