@topvisor/ui 1.3.5-4 → 1.3.5-popupFromInput.0

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.
Files changed (117) hide show
  1. package/.chunks/{core-BS_ygt0h.amd.js → core-DcLw0dEO.amd.js} +2 -2
  2. package/.chunks/{core-BS_ygt0h.amd.js.map → core-DcLw0dEO.amd.js.map} +1 -1
  3. package/.chunks/{core-DF7fuQev.es.js → core-DpTLGhiK.es.js} +4 -4
  4. package/.chunks/{core-DF7fuQev.es.js.map → core-DpTLGhiK.es.js.map} +1 -1
  5. package/.chunks/{datepicker-BYLW8X5k.amd.js → datepicker-Bq_z2paN.amd.js} +2 -2
  6. package/.chunks/{datepicker-BYLW8X5k.amd.js.map → datepicker-Bq_z2paN.amd.js.map} +1 -1
  7. package/.chunks/{datepicker-BVIBaChw.es.js → datepicker-CGGp0VnN.es.js} +2 -2
  8. package/.chunks/{datepicker-BVIBaChw.es.js.map → datepicker-CGGp0VnN.es.js.map} +1 -1
  9. package/.chunks/{dialog_selectorRegions-D5DOxBQO.es.js → dialog_selectorRegions-BtAADQHf.es.js} +4 -4
  10. package/.chunks/{dialog_selectorRegions-D5DOxBQO.es.js.map → dialog_selectorRegions-BtAADQHf.es.js.map} +1 -1
  11. package/.chunks/{dialog_selectorRegions-CaR2-Qo2.amd.js → dialog_selectorRegions-DCrHvHDs.amd.js} +2 -2
  12. package/.chunks/{dialog_selectorRegions-CaR2-Qo2.amd.js.map → dialog_selectorRegions-DCrHvHDs.amd.js.map} +1 -1
  13. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-B5rYBKgA.amd.js → dialogs.vue_vue_type_script_setup_true_lang-Bf0wXalT.amd.js} +2 -2
  14. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-B5rYBKgA.amd.js.map → dialogs.vue_vue_type_script_setup_true_lang-Bf0wXalT.amd.js.map} +1 -1
  15. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-CPByl0SB.es.js → dialogs.vue_vue_type_script_setup_true_lang-DCVIoEeY.es.js} +2 -2
  16. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-CPByl0SB.es.js.map → dialogs.vue_vue_type_script_setup_true_lang-DCVIoEeY.es.js.map} +1 -1
  17. package/.chunks/{forms-BrdvrjiZ.es.js → forms-BhbgRJ5I.es.js} +5 -5
  18. package/.chunks/{forms-BrdvrjiZ.es.js.map → forms-BhbgRJ5I.es.js.map} +1 -1
  19. package/.chunks/{forms-CzUjrBXG.amd.js → forms-CNcrvkYD.amd.js} +3 -3
  20. package/.chunks/{forms-CzUjrBXG.amd.js.map → forms-CNcrvkYD.amd.js.map} +1 -1
  21. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-QvP1d9jN.amd.js +2 -0
  22. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-QvP1d9jN.amd.js.map +1 -0
  23. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-xvzbyqai.es.js +196 -0
  24. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-xvzbyqai.es.js.map +1 -0
  25. package/.chunks/{menu.vue_vue_type_style_index_0_lang-jnHbXDIR.amd.js → menu.vue_vue_type_style_index_0_lang-C3Rr6ZyL.amd.js} +2 -2
  26. package/.chunks/{menu.vue_vue_type_style_index_0_lang-jnHbXDIR.amd.js.map → menu.vue_vue_type_style_index_0_lang-C3Rr6ZyL.amd.js.map} +1 -1
  27. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BNr8VcFM.es.js → menu.vue_vue_type_style_index_0_lang-dOeZ7an1.es.js} +2 -2
  28. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BNr8VcFM.es.js.map → menu.vue_vue_type_style_index_0_lang-dOeZ7an1.es.js.map} +1 -1
  29. package/.chunks/{notice-CzWMWg_D.amd.js → notice-BpLsm6Zh.amd.js} +2 -2
  30. package/.chunks/{notice-CzWMWg_D.amd.js.map → notice-BpLsm6Zh.amd.js.map} +1 -1
  31. package/.chunks/{notice-BPgkjMG1.es.js → notice-CpPhDTUb.es.js} +2 -2
  32. package/.chunks/{notice-BPgkjMG1.es.js.map → notice-CpPhDTUb.es.js.map} +1 -1
  33. package/.chunks/opener.vue_vue_type_script_setup_true_lang-DRzrTv7Q.es.js +36 -0
  34. package/.chunks/opener.vue_vue_type_script_setup_true_lang-DRzrTv7Q.es.js.map +1 -0
  35. package/.chunks/opener.vue_vue_type_script_setup_true_lang-gNZhYkDf.amd.js +2 -0
  36. package/.chunks/opener.vue_vue_type_script_setup_true_lang-gNZhYkDf.amd.js.map +1 -0
  37. package/.chunks/{page.vue_vue_type_script_setup_true_lang-XMwkQHNU.es.js → page.vue_vue_type_script_setup_true_lang-9abPBMpd.es.js} +4 -4
  38. package/.chunks/{page.vue_vue_type_script_setup_true_lang-XMwkQHNU.es.js.map → page.vue_vue_type_script_setup_true_lang-9abPBMpd.es.js.map} +1 -1
  39. package/.chunks/{page.vue_vue_type_script_setup_true_lang-C-BJRiFc.amd.js → page.vue_vue_type_script_setup_true_lang-B-1LEQAz.amd.js} +2 -2
  40. package/.chunks/{page.vue_vue_type_script_setup_true_lang-C-BJRiFc.amd.js.map → page.vue_vue_type_script_setup_true_lang-B-1LEQAz.amd.js.map} +1 -1
  41. package/.chunks/{popup-do4HUI7u.es.js → popup-BJj9BJP5.es.js} +116 -90
  42. package/.chunks/popup-BJj9BJP5.es.js.map +1 -0
  43. package/.chunks/popup-CfXISjhC.amd.js +2 -0
  44. package/.chunks/popup-CfXISjhC.amd.js.map +1 -0
  45. package/.chunks/{utils-BgVG2kmp.amd.js → utils-5uxIj2CI.amd.js} +2 -2
  46. package/.chunks/{utils-BgVG2kmp.amd.js.map → utils-5uxIj2CI.amd.js.map} +1 -1
  47. package/.chunks/{utils-BqT8hS8L.amd.js → utils-Bg_su8b-.amd.js} +2 -2
  48. package/.chunks/{utils-BqT8hS8L.amd.js.map → utils-Bg_su8b-.amd.js.map} +1 -1
  49. package/.chunks/{utils-B6aJagiK.es.js → utils-D58EUoHa.es.js} +3 -3
  50. package/.chunks/{utils-B6aJagiK.es.js.map → utils-D58EUoHa.es.js.map} +1 -1
  51. package/.chunks/{utils-DyhMNhnz.es.js → utils-UBgfsQ8v.es.js} +2 -2
  52. package/.chunks/{utils-DyhMNhnz.es.js.map → utils-UBgfsQ8v.es.js.map} +1 -1
  53. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-Bo064qPK.es.js → widgetInput.vue_vue_type_script_setup_true_lang-CSD2uMSW.es.js} +2 -2
  54. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-Bo064qPK.es.js.map → widgetInput.vue_vue_type_script_setup_true_lang-CSD2uMSW.es.js.map} +1 -1
  55. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-CVsiIZz5.amd.js → widgetInput.vue_vue_type_script_setup_true_lang-D6SVtg2Q.amd.js} +2 -2
  56. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-CVsiIZz5.amd.js.map → widgetInput.vue_vue_type_script_setup_true_lang-D6SVtg2Q.amd.js.map} +1 -1
  57. package/assets/listItem.css +1 -1
  58. package/charts/charts.amd.js +1 -1
  59. package/charts/charts.js +1 -1
  60. package/core/app.amd.js +1 -1
  61. package/core/app.js +5 -5
  62. package/dialog/dialog.amd.js +1 -1
  63. package/dialog/dialog.js +2 -2
  64. package/forms/forms.amd.js +1 -1
  65. package/forms/forms.js +1 -1
  66. package/formsExt/formsExt.amd.js +1 -1
  67. package/formsExt/formsExt.amd.js.map +1 -1
  68. package/formsExt/formsExt.js +280 -293
  69. package/formsExt/formsExt.js.map +1 -1
  70. package/layout/layout.amd.js +1 -1
  71. package/layout/layout.js +1 -1
  72. package/package.json +1 -1
  73. package/popup/popup.amd.js +1 -1
  74. package/popup/popup.amd.js.map +1 -1
  75. package/popup/popup.js +39 -34
  76. package/popup/popup.js.map +1 -1
  77. package/popup/worker.amd.js +1 -1
  78. package/popup/worker.amd.js.map +1 -1
  79. package/popup/worker.js +24 -20
  80. package/popup/worker.js.map +1 -1
  81. package/project/project.amd.js +1 -1
  82. package/project/project.amd.js.map +1 -1
  83. package/project/project.js +26 -25
  84. package/project/project.js.map +1 -1
  85. package/src/components/forms/input/input.vue.d.ts +1 -1
  86. package/src/components/forms/input/types.d.ts +1 -1
  87. package/src/components/forms/inputDate/inputDate.vue.d.ts +1 -1
  88. package/src/components/popup/lib/popup.d.ts +14 -2
  89. package/src/components/popup/lib/worker.d.ts +1 -1
  90. package/src/components/popup/popup/opener/opener.vue.d.ts +17 -0
  91. package/src/components/popup/popup/opener/types.d.ts +51 -0
  92. package/src/components/popup/popup/opener.vue.d.ts +0 -1
  93. package/src/components/popup/popup/types.d.ts +1 -45
  94. package/src/components/project/tagSelector/utils/el.d.ts +1 -1
  95. package/tabsView/tabsView.amd.js +1 -1
  96. package/tabsView/tabsView.js +2 -2
  97. package/utils/clipboard.amd.js +1 -1
  98. package/utils/clipboard.js +1 -1
  99. package/utils/date.amd.js +1 -1
  100. package/utils/date.js +1 -1
  101. package/utils/device.amd.js +1 -1
  102. package/utils/device.js +1 -1
  103. package/utils/lodash.amd.js +1 -1
  104. package/utils/lodash.js +1 -1
  105. package/utils/price.amd.js +1 -1
  106. package/utils/price.js +1 -1
  107. package/utils/searchers.amd.js +1 -1
  108. package/utils/searchers.js +3 -3
  109. package/utils/string.amd.js +1 -1
  110. package/utils/string.js +1 -1
  111. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DZ6ExJKC.es.js +0 -192
  112. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DZ6ExJKC.es.js.map +0 -1
  113. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-_sniT1lq.amd.js +0 -2
  114. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-_sniT1lq.amd.js.map +0 -1
  115. package/.chunks/popup-UOJ-t8-v.amd.js +0 -2
  116. package/.chunks/popup-UOJ-t8-v.amd.js.map +0 -1
  117. package/.chunks/popup-do4HUI7u.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"formsExt.js","sources":["../../src/components/formsExt/editArea/editArea.vue","../../src/components/formsExt/editInput/editInput.vue","../../src/components/formsExt/libs/optionGroup/optionGroup.vue","../../src/components/formsExt/radioGroup/radioGroup.vue","../../src/components/formsExt/checkboxGroup/checkboxGroup.vue","../../src/components/formsExt/selector2/itemMulti.vue","../../src/components/formsExt/selector2/composables/useAPI.ts","../../src/components/formsExt/selector2/utils.ts","../../src/components/formsExt/selector2/composables/useMenu.ts","../../src/components/formsExt/selector2/selector2.vue","../../src/components/formsExt/info/info.vue","../../src/components/formsExt/policy/policy.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport Button from '@/components/forms/button/button.vue';\nimport type { Emits, Props } from './types';\nimport Textarea from '@/components/forms/textarea/textarea.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tdefaultValue: '',\n\tcancelText: 'Cancel',\n\tsubmitText: 'Send',\n\tcloseText: 'Close',\n\texpandable: true,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst localValue = ref(props.defaultValue);\n\nconst isFocused = ref(props.isFocused);\n\nconst isChanged = computed(() => localValue.value !== props.defaultValue);\n\nconst submit = (value: string) => {\n\temit('submit', value);\n\n\tlocalValue.value = props.defaultValue;\n};\n\nconst cancel = () => {\n\tif (props.forceShowCloseBtn && !isChanged.value) {\n\t\temit('close');\n\n\t\treturn;\n\t}\n\n\tlocalValue.value = props.defaultValue;\n};\n\nconst clickOnTitle = () => {\n\tif (props.attachToKeyboard) emit('clickOnTitle');\n};\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-editArea': true,\n\t\t\t'top-editArea-attachedToKeyboard': attachToKeyboard,\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tv-if=\"title\"\n\t\t\tclass=\"top-editArea_title\"\n\t\t\t@click=\"clickOnTitle()\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-editArea_form': true,\n\t\t\t\t'top-forms-focusable': true,\n\t\t\t\t'top-as-input': true,\n\t\t\t\t'top-error': isError,\n\t\t\t\t'top-focus': isFocused,\n\t\t\t}\"\n\t\t>\n\t\t\t<Textarea\n\t\t\t\tv-model=\"localValue\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:rows=\"rows\"\n\t\t\t\t:minHeight=\"minHeight\"\n\t\t\t\t:expandable=\"expandable\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t:readonly=\"readonly\"\n\t\t\t\t:isError=\"isError\"\n\t\t\t\t:hint=\"hint\"\n\t\t\t\tclass=\"top-editArea_element\"\n\t\t\t\t@focus=\"() => isFocused = true\"\n\t\t\t\t@blur=\"() => isFocused = false\"\n\t\t\t\t@keyup.esc=\"cancel\"\n\t\t\t\t@keyup.ctrl.enter=\"submit(localValue)\"\n\t\t\t/>\n\n\t\t\t<div class=\"top-editArea_footer\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"isChanged || forceShowCloseBtn\"\n\t\t\t\t\t:icon=\"$core.state.isMobile ? '': ''\"\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\tstyling=\"soft\"\n\t\t\t\t\t@click=\"cancel\"\n\t\t\t\t>\n\t\t\t\t\t<template\n\t\t\t\t\t\t#default\n\t\t\t\t\t\tv-if=\"!$core.state.isMobile\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ cancelText }}\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\n\t\t\t\t<Button\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\tv-if=\"isChanged\"\n\t\t\t\t\t:icon=\"$core.state.isMobile ? '': ''\"\n\t\t\t\t\t@click=\"submit(localValue)\"\n\t\t\t\t>\n\t\t\t\t\t<template\n\t\t\t\t\t\t#default\n\t\t\t\t\t\tv-if=\"!$core.state.isMobile\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ submitText }}\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n.top-editArea {\n\t--top-editArea-bottom: env(keyboard-inset-height, 0px);\n\t--top-editArea-offset-bottom: 0px;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 6px;\n}\n\n.top-editArea_title {\n\tfont-size: 12px;\n}\n\n.top-editArea_form {\n\tflex-direction: column;\n}\n\n/* textarea в EditArea */\n.top-textarea {\n\twidth: 100%;\n}\n\n.top-editArea_element.top-textarea_textarea {\n\t--top-forms-border-width: 0px;\n\n\toutline: none;\n\tanimation: none;\n}\n\n/* footer */\n.top-editArea_footer {\n\tpadding: var(--top-forms-padding);\n\tdisplay: flex;\n\tmin-height: 32px;\n\talign-self: flex-end;\n\tjustify-content: flex-end;\n\tgap: var(--top-forms-padding);\n}\n\n/* attachedToKeyboard */\n.top-editArea-attachedToKeyboard {\n\tbackground: var(--top-forms-background-color);\n\tposition: fixed;\n\tbottom: calc(var(--top-editArea-offset-bottom) + var(--top-editArea-bottom));\n\tright: 0;\n\tleft: 0;\n\tz-index: 2;\n\tgap: 0;\n\ttransition: bottom var(--transition-fast);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_form {\n\tborder-radius: 0;\n\tborder: none;\n\tborder-top: 1px solid var(--top-forms-border-color);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_title {\n\tcursor: pointer;\n\tborder-top: 1px solid var(--color-line-2-opacity);\n\tpadding: var(--top-forms-padding);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_footer > [data-top-icon] {\n\tborder-radius: 100%;\n}\n\n@media screen and (max-width: 900px) {\n\t.top-editArea_form{\n\t\tflex-direction: row;\n\t}\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, toRef, watch } from 'vue';\nimport type { Emits, Props } from './types';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\n\nconst props = defineProps<Props>();\n\nconst intermediateValue = ref(props.modelValue);\n\nwatch(toRef(props.modelValue), () => {\n\tintermediateValue.value = props.modelValue;\n});\n\nconst emit = defineEmits<Emits>();\n\nconst submit = () => {\n\temit('update:modelValue', intermediateValue.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-editInput\">\n\t\t<TopInput\n\t\t\t:=\"input\"\n\t\t\t@keydown.esc.capture.stop=\"intermediateValue = modelValue\"\n\t\t\t@keydown.enter.stop=\"submit\"\n\t\t\tv-model=\"intermediateValue\"\n\t\t/>\n\n\t\t<TopButton\n\t\t\tv-if=\"intermediateValue !== modelValue\"\n\t\t\ticon=\"\"\n\t\t\tstyling=\"soft\"\n\t\t\t:=\"button\"\n\t\t\t@click=\"submit\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n.top-editInput {\n\twidth: 220px;\n\tflex-grow: 1;\n\tdisplay: flex;\n\talign-items: flex-end;\n\tgap: var(--top-gap-1);\n}\n\n.top-editInput .top-input {\n\twidth: unset;\n\tflex-grow: 1;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport type { Props } from './types';\nimport TopCheckbox from '@/components/forms/checkbox/checkbox.vue';\nimport TopRadio from '@/components/forms/radio/radio.vue';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\tsize: 's',\n});\n\nconst elRef = ref<HTMLElement | null>(null);\n\nwatch(model, () => {\n\tconst valuesAvailable = props.items.map(item => item.value);\n\n\tif (Array.isArray(model.value)) {\n\t\t// есть ли неподдерживаемые значения\n\t\tconst valueIsWrong = model.value.find((value) => {\n\t\t\treturn !valuesAvailable.includes(value);\n\t\t});\n\n\t\tif (valueIsWrong) {\n\t\t\t// оставить только поддерживаемые значения\n\t\t\tmodel.value = model.value.filter((value) => {\n\t\t\t\treturn valuesAvailable.includes(value);\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif (!valuesAvailable.includes(model.value)) {\n\t\t\tmodel.value = valuesAvailable[0] ?? '';\n\t\t}\n\t}\n\n\telRef.value?.querySelector('.radioGroup_item-selected')?.scrollIntoView();\n}, { immediate: true });\n\nconst name = 'optionGroup-' + Math.random();\n</script>\n\n<template>\n\t<div\n\t\tref=\"elRef\"\n\t\t:class=\"{\n\t\t\t['top-optionGroup']: true,\n\t\t\t['top-optionGroup-showIndicator_' + Number(showIndicator)]: true,\n\t\t\t['top-scrollBarXHidding']: true,\n\t\t\t['top-size_' + size]: !!size,\n\t\t\t['top-error']: isError,\n\t\t}\"\n\t>\n\t\t<template v-if=\"Array.isArray(model)\">\n\t\t\t<TopCheckbox\n\t\t\t\t:class=\"{\n\t\t\t\t\t['top-optionGroup_item-selected']: model.includes(item.value),\n\t\t\t\t\t['top-optionGroup_item']: true,\n\t\t\t\t}\"\n\t\t\t\tv-for=\"item of items\"\n\t\t\t\tv-model=\"model\"\n\t\t\t\t:value=\"item.value\"\n\t\t\t\t:title=\"item.title\"\n\t\t\t\t:disabled=\"item.disabled\"\n\t\t\t\t:isError\n\t\t\t\t:data-top-icon=\"item.icon\"\n\t\t\t>\n\t\t\t\t{{ item.label }}\n\t\t\t</TopCheckbox>\n\t\t</template>\n\n\t\t<template v-else>\n\t\t\t<TopRadio\n\t\t\t\t:class=\"{\n\t\t\t\t\t['top-optionGroup_item-selected']: item.value === model,\n\t\t\t\t\t['top-optionGroup_item']: true,\n\t\t\t\t}\"\n\t\t\t\tv-for=\"item of items\"\n\t\t\t\tv-model=\"model\"\n\t\t\t\t:name\n\t\t\t\t:value=\"item.value\"\n\t\t\t\t:title=\"item.title\"\n\t\t\t\t:disabled=\"item.disabled\"\n\t\t\t\t:isError\n\t\t\t\t:data-top-icon=\"item.icon\"\n\t\t\t>\n\t\t\t\t{{ item.label }}\n\t\t\t</TopRadio>\n\t\t</template>\n\t</div>\n</template>\n\n<style>\n.top-optionGroup {\n\tuser-select: none;\n\tbox-sizing: border-box;\n\tborder-radius: 8px;\n\tbackground-color: var(--color-layout-middle);\n\theight: var(--top-forms-base-height);\n\tpadding: 2px;\n\tgap: 2px;\n\tdisplay: flex;\n\talign-items: flex-start;\n}\n\n.top-optionGroup_item {\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\tborder-radius: 6px;\n\theight: calc(var(--top-forms-base-height) - 4px);\n\tpadding: 1px var(--top-padding-2);\n\tcolor: var(--color-text-2);\n\tfont-weight: 400;\n\twhite-space: nowrap;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-grow: 1;\n\tgap: var(--top-gap-1);\n}\n\n.top-optionGroup_item:hover {\n\tbackground-color: var(--color-layout-front-1);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n.top-optionGroup_item-selected {\n\tcolor: var(--color-text-1);\n\tbackground-color: var(--color-bg-lightning-1);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n.top-optionGroup_item > .top-forms-optionLabel {\n\tflex-grow: 0;\n}\n\n/* indicator */\n.top-optionGroup-showIndicator_0 > .top-optionGroup_item {\n\tjustify-content: center;\n}\n\n.top-optionGroup-showIndicator_0 > .top-optionGroup_item:has(:focus-visible) {\n\toutline: 2px solid var(--color-bg-primary-2);\n\toutline-offset: -1px;\n}\n\n.top-optionGroup-showIndicator_1 > .top-optionGroup_item {\n\tpadding: 1px 3px;\n\tjustify-content: flex-start;\n}\n\n.top-optionGroup-showIndicator_0 > .top-optionGroup_item > .top-forms-option {\n\topacity: 0;\n\twidth: 0;\n\theight: 0;\n\tposition: absolute;\n}\n\n.top-optionGroup_item > .top-forms-option {\n\torder: -1;\n}\n</style>\n","<script setup lang=\"ts\">\nimport OptionGroup from '../libs/optionGroup/optionGroup.vue';\n\nimport type { Props } from './types';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\ndefineProps<Props>();\n</script>\n\n<template>\n\t<OptionGroup\n\t\tclass=\"top-radioGroup\"\n\t\tv-model=\"model\"\n\t\t:items=\"$props.items\"\n\t\t:size=\"$props.size\"\n\t\t:showIndicator=\"$props.showIndicator\"\n\t\t:isError=\"$props.isError\"\n\t>\n\t\t<slot/>\n\t</OptionGroup>\n</template>\n","<script setup lang=\"ts\">\nimport OptionGroup from '../libs/optionGroup/optionGroup.vue';\n\nimport type { Props } from './types';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\ndefineProps<Props>();\n</script>\n\n<template>\n\t<OptionGroup\n\t\tclass=\"top-checkboxGroup\"\n\t\tv-model=\"model\"\n\t\t:items=\"$props.items\"\n\t\t:size=\"$props.size\"\n\t\t:showIndicator=\"$props.showIndicator\"\n\t\t:isError=\"$props.isError\"\n\t>\n\t\t<slot/>\n\t</OptionGroup>\n</template>\n","<script setup lang=\"ts\">\nimport type { EmitsItemMulti, PropsItemMulti } from './types';\n\ndefineProps<PropsItemMulti>();\ndefineEmits<EmitsItemMulti>();\n</script>\n\n<template>\n\t<div class=\"top-selector2_itemMulti top-ellipsis\">\n\t\t{{ name }}\n\t\t<span\n\t\t\tclass=\"top-selector2_itemMultiDelete\"\n\t\t\tdata-top-icon=\"\"\n\t\t\t@click=\"$emit('delete', id)\"\n\t\t\t@mousedown.stop\n\t\t></span>\n\t</div>\n</template>\n\n<style>\n.top-selector2_itemMulti {\n\tbox-sizing: border-box;\n\tpadding-left: var(--top-padding-2);\n\tborder-radius: var(--top-radius-1, 4px);\n\tborder: 1px solid var(--color-line-primary-1);\n\tbackground: var(--color-layer-primary-2);\n\tmin-height: 22px;\n\tmax-width: 100%;\n\tcolor: var(--color-text-1);\n\tflex-grow: 0;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--top-gap-1);\n}\n\n.top-selector2_itemMultiDelete {\n\t--top-icon-size: 14px;\n\t--top-icon-width: 18px;\n\t--top-icon-color: var(--color-text-1);\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\theight: 100%;\n\tcursor: pointer;\n}\n\n.top-selector2_itemMultiDelete:hover {\n\tbackground: var(--color-layer-primary-2);\n}\n\n@media screen and (min-width: 900px) {\n\t.top-selector2.top-active .top-selector2_itemMultiDelete {\n\t\tz-index: calc(var(--top-popup-z-index) + 1);\n\t}\n}\n</style>\n","import { ref } from 'vue';\nimport { debounce } from '../../../../core/utils/lodash';\nimport type { Item, Props } from '../types';\n\nexport type API = ReturnType<typeof useAPI>;\n\nexport const useAPI = (api: Props['api'], apiSetSearchParams: Props['apiSetSearchParams'], minLength: number, useCache: Props['useCache']) => {\n\t/**\n\t * Список, полученный через API\n\t */\n\tconst items = ref<Item[]>([]);\n\n\t/**\n\t * Кэш для полученных ответов через apiRequest\n\t */\n\tconst cache = new Map<string, any>();\n\n\t/**\n\t * Флаг - идет загрузка\n\t */\n\tconst isLoading = ref(false);\n\n\tlet searchText = '';\n\tlet nextOffset: number | null | undefined;\n\n\tif (api && !api.params.limit) {\n\t\tapi.params.limit = 100;\n\t}\n\n\t/**\n\t * Выполнить обращение к API\n\t *\n\t * При ошибке вернет undefined\n\t */\n\tconst callAPI = async (): Promise<Api.ResponseSuccess<any, 'get'> | undefined> => {\n\t\tif (!api) return;\n\n\t\tlet cacheKey: string | undefined = undefined;\n\n\t\tif (useCache) {\n\t\t\tcacheKey = JSON.stringify(api.params);\n\t\t\tconst res = cache.get(cacheKey);\n\n\t\t\tif (res) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\tisLoading.value = true;\n\t\tconst res = await api.call();\n\t\tisLoading.value = false;\n\n\t\tif (res.errors) return;\n\n\t\tif (!Array.isArray(res.result)) {\n\t\t\tconsole.warn('Array expected in `res.result`');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst indexWithError = (res.result as Array<Item | any>).findIndex(item => item.id === undefined || item.name === undefined);\n\t\tif (indexWithError !== -1) {\n\t\t\tconsole.warn(`В result[${indexWithError}] нет id или name`);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (cacheKey) {\n\t\t\tcache.set(cacheKey, res);\n\t\t}\n\n\t\treturn res as Api.ResponseSuccess<any, 'get'>;\n\t};\n\n\t/**\n\t * Загрузить items\n\t */\n\tconst load = async (append: boolean) => {\n\t\tif (!api) return;\n\n\t\tif (append) {\n\t\t\t// данных о следующих страницах не обнаружено\n\t\t\tif (!nextOffset) return;\n\n\t\t\t// дозагружать нельзя, если не завершена предыдущая загрузка\n\t\t\tif (isLoading.value) return;\n\n\t\t\tapi.params.offset = nextOffset;\n\t\t} else {\n\t\t\tapi.params.offset = 0;\n\t\t}\n\n\t\tapiSetSearchParams?.(searchText);\n\n\t\tconst res = await callAPI();\n\t\tif (!res) return;\n\n\t\tnextOffset = res.nextOffset;\n\n\t\tif (append) {\n\t\t\titems.value = items.value.concat(res.result);\n\t\t} else {\n\t\t\titems.value = res.result;\n\t\t}\n\t};\n\n\tconst loadDebounce = debounce(() => load(false), 200);\n\n\t/**\n\t * Выполнить поиск по указанному тексту\n\t *\n\t * Если длина текста меньше minLength, поиск не будет произведен\n\t *\n\t * Если текст не изменился, поиск не будет произведен\n\t *\n\t * @param newSearchText - текст поиска\n\t * @param useDebounce - дедупликация загрузки списка\n\t */\n\tconst setSearchTextAndLoad = (newSearchText: string, useDebounce = true) => {\n\t\tif (!api) return;\n\n\t\tif (newSearchText.length < minLength) return;\n\n\t\t// условия поиска не поменялись, данные загружены\n\t\tif (newSearchText === searchText && items.value.length) return;\n\n\t\tsearchText = newSearchText;\n\n\t\tif (useDebounce) {\n\t\t\tvoid loadDebounce();\n\t\t} else {\n\t\t\tvoid load(false);\n\t\t}\n\t};\n\n\treturn {\n\t\tapiRequest: api,\n\t\titems,\n\t\tisLoading,\n\t\tload,\n\t\tsetSearchTextAndLoad,\n\t};\n};\n","import type { Item, Props } from './types';\n\nexport const ITEM_ID_ALL = 0;\n\n/**\n * Выбран ли элемент\n */\nexport const isSelected = (modelValue: Props['modelValue'], item: Item, checkNameForNullId = true) => {\n\tif (checkNameForNullId && item.id === null) {\n\t\tif (Array.isArray(modelValue)) {\n\t\t\treturn modelValue.some(itemSelected => itemSelected.id === item.id && itemSelected.name === item.name);\n\t\t} else {\n\t\t\treturn item.name === modelValue.name;\n\t\t}\n\t}\n\n\tif (Array.isArray(modelValue)) {\n\t\treturn modelValue.some(itemSelected => itemSelected.id === item.id);\n\t} else {\n\t\treturn item.id === modelValue.id;\n\t}\n};\n","import { computed, ref, type ComputedRef, type Ref } from 'vue';\nimport { invertKeyboardLayout } from '@/core/utils/keyboard';\nimport type { Item, Props } from '../types';\nimport { type API } from './useAPI';\nimport { isSelected, ITEM_ID_ALL } from '../utils';\nimport { useI18n } from '@/core/plugins/i18n';\n\n/**\n * Функционал поиска\n */\nexport const useMenu = (\n\tmodel: Ref<Props['modelValue']>,\n\titems: Ref<Props['items']>,\n\tmultiselect: Props['multiselect'],\n\tappendAllValue: Ref<Props['appendAllValue']>,\n\tappendSearchToResult: Ref<Props['appendSearchToResult']>,\n\tsearchType: Ref<Props['searchType']>,\n\tminLength: number,\n\tapi: API,\n) => {\n\t/**\n\t * Текст поиска по результатам\n\t */\n\tconst searchText = ref('');\n\n\t/**\n\t * Объект, представляющий опцию \"Все\"\n\t */\n\tconst itemAll = {\n\t\tid: ITEM_ID_ALL,\n\t\tname: useI18n().Common.All,\n\t};\n\n\t/**\n\t * Сброс поиска\n\t */\n\tconst resetSearch = () => {\n\t\tsearchText.value = '';\n\t\tapi.items.value = [];\n\t};\n\n\t/**\n\t * Является ли строка поиска достаточной длины для отображения меню\n\t */\n\tconst genIsShort = () => {\n\t\tif (!api.apiRequest) return false;\n\t\tif (searchType.value !== 'inline') return false;\n\t\tif (searchText.value.length >= minLength) return false;\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Варианты выбора: props.items + \"Выбрать все\"\n\t */\n\tconst localItems: ComputedRef<Item[]> = computed(() => {\n\t\tconst localItems: Item[] = [];\n\n\t\tif (!multiselect && appendAllValue.value) {\n\t\t\tlocalItems.push(itemAll);\n\t\t}\n\n\t\titems.value?.forEach(item => localItems.push({ ...item }));\n\n\t\treturn localItems;\n\t});\n\n\t/**\n\t * Подготовленный список меню, который содержит в сумме:\n\t * - prop.items: указанный список с учетом фильтра и опций компонента\n\t * - api.items: результаты api запроса, если используется api\n\t *\n\t * @returns Отфильтрованный массив элементов для отображения\n\t */\n\tconst itemsForShow = computed(() => {\n\t\tconst searchString = searchText.value.toLowerCase();\n\t\tconst searchStringInvertKeyboard = invertKeyboardLayout(searchString);\n\n\t\tlet items: NonNullable<Props['items']> = [];\n\n\t\tlocalItems.value.forEach((item) => {\n\t\t\tconst itemName = item.name.toLowerCase();\n\n\t\t\tif (\n\t\t\t\titem.id === Number(searchString) ||\n\t\t\t\titemName.includes(searchString) ||\n\t\t\t\titemName.includes(searchStringInvertKeyboard)\n\t\t\t) {\n\t\t\t\tif (itemName === searchString || itemName === searchStringInvertKeyboard) {\n\t\t\t\t\titems.unshift(item);\n\t\t\t\t} else {\n\t\t\t\t\titems.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\titems.push(...api.items.value);\n\n\t\t// ввод произвольного значения\n\t\tif (\n\t\t\tappendSearchToResult.value &&\n\t\t\t!!searchText.value &&\n\t\t\t(!items.length || items[0].name.toLowerCase() !== searchString)\n\t\t) {\n\t\t\titems.push({\n\t\t\t\tid: null,\n\t\t\t\tname: searchText.value,\n\t\t\t});\n\t\t}\n\n\t\tif (multiselect) {\n\t\t\titems = items.filter(item => !isSelected(model.value, item));\n\t\t}\n\n\t\treturn items;\n\t});\n\n\t/**\n\t * Выбрать элемент\n\t *\n\t * @param item Элемент для выбора\n\t */\n\tconst selectItem = (item: Item) => {\n\t\tif (multiselect && Array.isArray(model.value)) {\n\t\t\tif (!isSelected(model.value, item)) {\n\t\t\t\tmodel.value = [...model.value, item];\n\t\t\t}\n\t\t} else {\n\t\t\tmodel.value = item;\n\t\t}\n\t};\n\n\t/**\n\t * Выбрать следующее значение\n\t */\n\tconst selectNextItem = () => {\n\t\tif (!Array.isArray(model.value)) {\n\t\t\tconst currentIndex = itemsForShow.value.findIndex(item => item.id === (model.value as Item).id);\n\t\t\tconst nextIndex = (currentIndex + 1) % itemsForShow.value.length;\n\t\t\tmodel.value = { ...itemsForShow.value[nextIndex] };\n\t\t}\n\t};\n\n\t/**\n\t * Удалить выбранное значение по id\n\t *\n\t * @param id Идентификатор элемента для удаления\n\t */\n\tconst deleteItemById = async (id: Item['id']) => {\n\t\tif (Array.isArray(model.value)) {\n\t\t\tmodel.value = model.value.filter(item => item.id !== id);\n\t\t}\n\t};\n\n\treturn {\n\t\tsearchText,\n\t\tresetSearch,\n\t\tgenIsShort,\n\t\titems: localItems,\n\t\titemsForShow,\n\t\tselectItem,\n\t\tselectNextItem,\n\t\tdeleteItemById,\n\t};\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, toRef, watch } from 'vue';\nimport Core from '@/core/core/core';\nimport { TopPopup, TopPopupListItem, TopPopupWidgetInput } from '@/components/popup/popup';\nimport { TopPreloader } from '@/components/forms/forms';\nimport type { Item, Props, Slots } from './types';\nimport Selector2ItemMulti from './itemMulti.vue';\nimport { useAPI } from './composables/useAPI';\nimport { useMenu } from './composables/useMenu';\nimport type { TopLibPopup } from '../../popup/lib/popup';\n\nconst props = withDefaults(defineProps<Props>(), {\n\titems: () => [] as Item[],\n\tsize: 's',\n\tminLength: 0,\n\tsearchType: 'popup',\n});\n\nconst model = defineModel<Props['modelValue']>({ required: true });\n\ndefineSlots<Slots>();\n\nconst searchTypeLocal = computed(() => {\n\t// multiselect не поддерживает inline ввода\n\tif (props.searchType === 'inline' && props.multiselect) return 'popup';\n\n\t// В мобильной версии popup работает в полноэкранном режиме\n\tif (props.searchType === 'inline' && Core.state.isMobile) return 'popup';\n\n\treturn props.searchType;\n});\n\nlet minLength = 0;\nif (searchTypeLocal.value === 'inline' && props.minLength) {\n\tminLength = props.minLength;\n}\n\n/**\n * Объект для работы с API\n */\nconst api = useAPI(props.api, props.apiSetSearchParams, minLength, props.useCache);\n\n/**\n * Объект для работы с меню\n */\nconst menu = useMenu(\n\tmodel,\n\ttoRef(props, 'items'),\n\tprops.multiselect,\n\ttoRef(props, 'appendAllValue'),\n\ttoRef(props, 'appendSearchToResult'),\n\tsearchTypeLocal,\n\tminLength,\n\tapi,\n);\n\nconst component = computed(() => {\n\tif (props.buttonProps) return 'TopButton';\n\tif (searchTypeLocal.value === 'inline') return 'TopInput';\n\n\treturn 'div';\n});\n\n/**\n * Экземпляр компонента Popup\n */\nconst popupRef = ref<any>(null);\n\n/**\n * Получить доступ к объекту popup\n */\nconst getPopup = (): TopLibPopup | undefined => {\n\treturn popupRef.value?.popup;\n};\n\nif (api.apiRequest) {\n\t// отложенный поиск при вводе текста\n\twatch(menu.searchText, () => {\n\t\tapi.setSearchTextAndLoad(menu.searchText.value);\n\n\t\tif (searchTypeLocal.value === 'inline') {\n\t\t\tif (menu.genIsShort()) {\n\t\t\t\tgetPopup()?.close();\n\t\t\t}\n\t\t}\n\t});\n}\n\nwatch(model, () => {\n\t/**\n\t * При изменении значения модели в режиме inline необходимо очистить поле поиска,\n\t * так как поиск больше не актуален после выбора значения\n\t */\n\tif (searchTypeLocal.value === 'inline') {\n\t\tmenu.resetSearch();\n\t}\n});\n\nconst placeholder = computed(() => {\n\tif (Array.isArray(model.value) || props.multiselect || !props.selectedAsPlaceholder && searchTypeLocal.value !== 'inline') {\n\t\treturn props.placeholder;\n\t}\n\n\treturn model.value?.name || props.placeholder;\n});\n\n/**\n * Обработчик ввода клавиш на кнопке или поле ввода\n */\nconst onOpenerKeydown = (e: KeyboardEvent) => {\n\tlet needOpen = false;\n\n\tswitch (e.key) {\n\t\tcase 'Delete':\n\t\tcase 'Backspace':\n\t\t\tif (Array.isArray(model.value)) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\n\t\t\t\tmodel.value.pop();\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'ArrowUp':\n\t\tcase 'ArrowRight':\n\t\tcase 'ArrowDown':\n\t\tcase 'ArrowLeft':\n\t\tcase 'Enter':\n\t\tcase ' ':\n\t\t\tneedOpen = true;\n\n\t\t\tbreak;\n\t\tcase 'Escape':\n\t\t\tif (searchTypeLocal.value === 'inline') {\n\t\t\t\t// очистка введенного текста\n\t\t\t\tmenu.resetSearch();\n\t\t\t}\n\n\t\t\tbreak;\n\t}\n\n\t// введен символ\n\tconst symbolPressed = e.key.length === 1 && !e.ctrlKey && !e.metaKey;\n\n\t// введен символ\n\tif (searchTypeLocal.value === 'popup' || searchTypeLocal.value === 'inline') {\n\t\tif (symbolPressed) {\n\t\t\tneedOpen = true;\n\t\t}\n\t}\n\n\t// popup уже открыт\n\tif (getPopup()?.elPopup) {\n\t\tneedOpen = false;\n\t}\n\n\tif (needOpen) {\n\t\tif (searchTypeLocal.value === 'popup') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\t// введен символ\n\t\t\tif (symbolPressed) {\n\t\t\t\t// начало ввода, сразу ввести первый символ вместе с открытием popup\n\t\t\t\tif (!menu.searchText.value) {\n\t\t\t\t\tmenu.searchText.value = e.key;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t(e.currentTarget as HTMLElement)?.click();\n\t}\n};\n\nlet disabledFocusToOpen = false;\n\nconst onFocus = (e: FocusEvent) => {\n\tif (disabledFocusToOpen) return;\n\n\tif (searchTypeLocal.value === 'inline') {\n\t\t(e.currentTarget as HTMLElement)?.click();\n\t}\n};\n\nconst onClickChanger = (e: MouseEvent) => {\n\te.preventDefault();\n\n\tdisabledFocusToOpen = true;\n\t(e.currentTarget as HTMLElement)?.parentElement?.focus();\n\tdisabledFocusToOpen = false;\n\n\tmenu.selectNextItem();\n};\n\n/**\n * Обработчик открытия попапа\n */\nconst onOpen = () => {\n\tdisabledFocusToOpen = true;\n\n\tif (api.apiRequest) {\n\t\tif (menu.genIsShort()) {\n\t\t\tgetPopup()?.close();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// при открытии сразу выполнить поиск\n\t\tapi.setSearchTextAndLoad(menu.searchText.value, false);\n\t}\n};\n\n/**\n * Обработчик закрытия попапа\n */\nconst onClose = () => {\n\tsetTimeout(() => {\n\t\tdisabledFocusToOpen = false;\n\t}, 100);\n\n\t// очистка введенного текста\n\tif (searchTypeLocal.value === 'popup') {\n\t\tif (menu.searchText.value) menu.resetSearch();\n\t}\n};\n\n/**\n * Обработчик прокрутки списка контента\n *\n * Для дозагрузки элеменов через api\n *\n * @param {Event} e - Событие прокрутки\n */\nconst onScrollContentList = (e: Event) => {\n\tconst el = e.target as HTMLElement;\n\n\tif (el.scrollTop / (el.scrollHeight - el.offsetHeight) > 0.8) {\n\t\tapi.load(true);\n\t}\n};\n\n// для storybook\nif ((window as any).__STORYBOOK_PREVIEW__) {\n\twatch(\n\t\t() => props.multiselect,\n\t\t() => {\n\t\t\tif (props.multiselect) {\n\t\t\t\tif (!Array.isArray(model.value)) {\n\t\t\t\t\tmodel.value = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\t\tname: 'Выбери меня',\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (Array.isArray(model.value)) {\n\t\t\t\t\tmodel.value = {\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t\tname: '',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ immediate: true },\n\t);\n\n\twatch(\n\t\t() => props.searchType,\n\t\t() => {\n\t\t\t// пауза для установки props в адресной строке\n\t\t\tsetTimeout(() => {\n\t\t\t\tlocation.reload();\n\t\t\t}, 500);\n\t\t},\n\t);\n}\n</script>\n\n<template>\n\t<TopPopup\n\t\tref=\"popupRef\"\n\t\t@open=\"onOpen()\"\n\t\t@close=\"onClose()\"\n\t\t@scrollContentList=\"api ? onScrollContentList($event) : undefined\"\n\t\t:notch=\"searchTypeLocal !== 'inline'\"\n\t\t:transitionDuration=\"0\"\n\t>\n\t\t<template #opener>\n\t\t\t<component\n\t\t\t\t:is=\"component\"\n\n\t\t\t\t:=\"buttonProps\"\n\n\t\t\t\tref=\"subcomponentSelector\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'top-selector2' : true,\n\t\t\t\t\t'top-selector2-multiselect': multiselect,\n\t\t\t\t\t['top-selector2-' + modificator]: !!modificator,\n\t\t\t\t\t'top-as-input': !buttonProps,\n\t\t\t\t\t'top-as-selector': true,\n\t\t\t\t\t['top-size_' + size]: true,\n\t\t\t\t\t['top-disabled']: disabled,\n\t\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t\t['top-error']: isError,\n\t\t\t\t}\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t@keydown=\"onOpenerKeydown\"\n\t\t\t\tv-top-focus.onupdate=\"isError\"\n\n\t\t\t\t:placeholder\n\t\t\t\tv-model=\"menu.searchText.value\"\n\t\t\t\t@focus=\"onFocus\"\n\t\t\t\t@blur=\"getPopup()?.isClosed ? menu.resetSearch() : ''\"\n\t\t\t>\n\t\t\t\t<template v-if=\"multiselect\">\n\t\t\t\t\t<div class=\"top-selector2_activeItems\">\n\t\t\t\t\t\t<Selector2ItemMulti\n\t\t\t\t\t\t\tv-for=\"item of model as Item[]\"\n\t\t\t\t\t\t\t:id=\"item.id\"\n\t\t\t\t\t\t\t:name=\"item.name\"\n\t\t\t\t\t\t\t@delete=\"menu.deleteItemById\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\n\t\t\t\t<span v-if=\"searchTypeLocal !== 'inline' && !multiselect\" class=\"top-selector2_activeName top-ellipsis\">\n\t\t\t\t\t{{ !Array.isArray(model) ? model.name : '' }}\n\t\t\t\t</span>\n\n\t\t\t\t<span v-if=\"multiselect && !model.length\" class=\"top-selector2_placeholder top-ellipsis\">\n\t\t\t\t\t{{ placeholder }}\n\t\t\t\t</span>\n\n\t\t\t\t<span\n\t\t\t\t\tv-if=\"addChanger && !buttonProps && !multiselect && menu.items.value.length > 1 && !disabled\"\n\t\t\t\t\tclass=\"top-changer top-changer-selector top-popup_widget\"\n\t\t\t\t\tdata-top-popup-disabled=\"true\"\n\t\t\t\t\t@click=\"onClickChanger\"\n\t\t\t\t></span>\n\t\t\t</component>\n\t\t</template>\n\n\t\t<template #widget v-if=\"searchTypeLocal === 'popup'\">\n\t\t\t<TopPopupWidgetInput\n\t\t\t\ttitle=\"Поиск\"\n\t\t\t\ticon=\"\"\n\t\t\t\tv-model=\"menu.searchText.value\"\n\t\t\t\t:isLoading=\"api.isLoading.value && !api.apiRequest?.params.offset\"\n\t\t\t\t:placeholder\n\t\t\t/>\n\t\t</template>\n\n\t\t<template #contentList>\n\t\t\t<TopPopupListItem\n\t\t\t\tv-for=\"item of menu.itemsForShow.value\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'top-active': !Array.isArray(model) && !multiselect && model.id === item.id && model.name === item.name,\n\t\t\t\t}\"\n\t\t\t\t:key=\"item.id ?? undefined\"\n\t\t\t\t:closeByClick=\"!multiselect || Core.state.isMobile\"\n\t\t\t\t@click=\"menu.selectItem(item)\"\n\t\t\t>\n\t\t\t\t<slot\n\t\t\t\t\tv-if=\"$slots.item\"\n\t\t\t\t\tname=\"item\"\n\t\t\t\t\t:item\n\t\t\t\t></slot>\n\n\t\t\t\t<template\n\t\t\t\t\tv-else\n\t\t\t\t>\n\t\t\t\t\t{{ item.name }}\n\t\t\t\t</template>\n\t\t\t</TopPopupListItem>\n\n\t\t\t<TopPopupListItem\n\t\t\t\tv-if=\"!api.isLoading.value && !menu.itemsForShow.value.length\"\n\t\t\t\ttype=\"regular\"\n\t\t\t>\n\t\t\t\t{{ $i18n.Common.No_results }}\n\t\t\t</TopPopupListItem>\n\n\t\t\t<!-- Индикатор загрузки, первичная дозагрузка отображается в поле поиска, если оно отображено -->\n\t\t\t<TopPopupListItem\n\t\t\t\tv-if=\"api.isLoading.value && (searchType !== 'popup' || api.apiRequest?.params.offset)\"\n\t\t\t\ttype=\"regular\"\n\t\t\t>\n\t\t\t\t<TopPreloader type=\"circles\"/>\n\t\t\t</TopPopupListItem>\n\t\t</template>\n\t</TopPopup>\n</template>\n\n<style>\n.top-selector2 {\n\twidth: 180px;\n\tpadding: var(--top-padding-1) var(--top-forms-padding);\n}\n\n.top-selector2::placeholder,\n.top-selector2_placeholder {\n\tcolor: var(--color-text-2);\n}\n\n.top-selector2_placeholder {\n\tpadding-left: var(--top-padding-1);\n}\n\n.top-selector2-multiselect {\n\twidth: auto;\n\tpadding: var(--top-padding-1);\n\tflex-grow: 1;\n}\n\n.top-selector2.top-active {\n\t--top-forms-border-color: var(--top-forms-border-color-hover);\n}\n\n.top-selector2_activeItems {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--top-padding-1);\n\tmax-width: 100%;\n}\n\n.top-selector2_activeName {\n\twhite-space: nowrap;\n}\n\n.top-changer-selector {\n\twidth: auto;\n\tpadding: var(--top-padding-1);\n\tmargin: calc(0px - var(--top-padding-1));\n\ttransform: translateX(0);\n}\n\n.top-selector2.top-button {\n\tjustify-content: start;\n}\n\n.top-selector2.top-input_input ~ .top-changer-selector {\n\ttransform: translateX(-52px);\n}\n\n.top-selector2.top-as-selector {\n\tpadding-right: calc(var(--top-selector-arrow-width) + var(--top-padding-2));\n}\n</style>\n","<script lang=\"ts\" setup>\nimport type { Props, Slots } from './types';\n\nwithDefaults(defineProps<Props>(), {\n\tstyling: 'default',\n\tsize: 'default',\n});\n\ndefineSlots<Slots>();\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-info']: true,\n\t\t\t['top-size_' + size]: true,\n\t\t\t['top-info-styling_' + styling]: true,\n\t\t}\"\n\t\t:data-top-icon=\"icon\"\n\t>\n\t\t<div class=\"top-info_text\">\n\t\t\t<slot></slot>\n\t\t</div>\n\n\t\t<span v-if=\"$slots.additional\" class=\"top-info_value\">\n\t\t\t<slot name=\"additional\"></slot>\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n.top-info {\n\t--top-icon-width: var(--top-icon-size);\n\n\tborder-radius: var(--top-forms-radius);\n\tbox-sizing: border-box;\n\tmin-height: var(--top-forms-base-height);\n\tpadding: var(--top-padding-1) var(--top-padding-2);\n\tflex-grow: 5;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--top-gap-2);\n}\n\n.top-info_text {\n\tflex-grow: 1;\n}\n\n.top-info_value {\n\tfont-weight: bold;\n}\n\n/* size */\n.top-info.top-size_default {\n\tborder-radius: var(--top-radius-3);\n\tpadding: var(--top-padding-4);\n}\n\n/* styling */\n.top-info-styling_default {\n\t--top-icon-color: var(--color-text-2);\n\n\tbackground: var(--color-layer-1);\n}\n\n.top-info-styling_info {\n\t--top-icon-color: var(--color-text-primary);\n\n\tbackground: var(--color-layer-primary-1);\n}\n\n.top-info-styling_warning {\n\t--top-icon-color: var(--color-text-warning);\n\n\tbackground: var(--color-layer-warning-1);\n}\n\n.top-info-styling_negative {\n\t--top-icon-color: var(--color-text-negative);\n\n\tbackground: var(--color-layer-negative-1);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { TopButton } from '@/components/forms/forms';\nimport type { Emits, Props } from '@/components/formsExt/policy/types';\n\ndefineProps<Props>();\nconst emits = defineEmits<Emits>();\n\nconst isVisible = ref(true);\n\nconst onAccept = () => {\n\tisVisible.value = false;\n\n\temits('accept');\n};\n</script>\n\n<template>\n\t<div\n\t\tv-if=\"isVisible\"\n\t\tclass=\"top-policy\"\n\t>\n\t\t<div class=\"top-policy_title\">\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div\n\t\t\tclass=\"top-policy_description\"\n\t\t\tv-html=\"description\"\n\t\t></div>\n\n\t\t<TopButton\n\t\t\tsize=\"m\"\n\t\t\t@click=\"onAccept\"\n\t\t>\n\t\t\t{{ acceptText }}\n\t\t</TopButton>\n\t</div>\n</template>\n\n<style>\n.top-policy {\n\tbox-sizing: border-box;\n\tbox-shadow: var(--top-shadow-b);\n\tborder-radius: var(--top-radius-4);\n\tbackground: var(--color-bg-lightning-1);\n\twidth: 600px;\n\tpadding: var(--top-padding-4);\n\tposition: fixed;\n\tright: var(--top-gap-10);\n\tbottom: var(--top-gap-10);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--top-gap-4);\n\tz-index: 10000;\n}\n\n.top-policy_title {\n\tfont-size: 24px;\n\tfont-weight: 700;\n}\n\n.top-policy_description {\n\tfont-size: 14px;\n}\n\n@media screen and (max-width: 900px) {\n\t.top-policy {\n\t\twidth: 100%;\n\t\tright: 0;\n\t\tbottom: calc(var(--top-gap-5) + var(--toolbar-height, 0px));\n\t}\n}\n</style>\n"],"names":["props","__props","emit","__emit","localValue","ref","isFocused","isChanged","computed","submit","value","cancel","clickOnTitle","_createElementBlock","_normalizeClass","attachToKeyboard","title","_createElementVNode","isError","_createVNode","Textarea","$event","name","placeholder","rows","minHeight","expandable","disabled","readonly","hint","_cache","_withKeys","_withModifiers","_hoisted_1","forceShowCloseBtn","_createBlock","Button","$core","cancelText","submitText","intermediateValue","watch","toRef","_openBlock","TopInput","_mergeProps","_ctx","modelValue","TopButton","button","model","_useModel","elRef","valuesAvailable","item","_b","_a","showIndicator","size","_Fragment","_renderList","items","TopCheckbox","_createTextVNode","_toDisplayString","TopRadio","OptionGroup","$props","_renderSlot","$emit","id","useAPI","api","apiSetSearchParams","minLength","useCache","cache","isLoading","searchText","nextOffset","callAPI","cacheKey","res","indexWithError","load","append","loadDebounce","debounce","newSearchText","useDebounce","ITEM_ID_ALL","isSelected","checkNameForNullId","itemSelected","useMenu","multiselect","appendAllValue","appendSearchToResult","searchType","itemAll","useI18n","resetSearch","genIsShort","localItems","itemsForShow","searchString","searchStringInvertKeyboard","invertKeyboardLayout","itemName","nextIndex","searchTypeLocal","Core","menu","component","popupRef","getPopup","onOpenerKeydown","e","needOpen","symbolPressed","disabledFocusToOpen","onFocus","onClickChanger","onOpen","onClose","onScrollContentList","el","_unref","TopPopup","_withDirectives","_resolveDynamicComponent","buttonProps","modificator","Selector2ItemMulti","_hoisted_2","_hoisted_3","addChanger","TopPopupListItem","$slots","$i18n","TopPreloader","TopPopupWidgetInput","styling","icon","emits","isVisible","onAccept","description","acceptText"],"mappings":"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"}
1
+ {"version":3,"file":"formsExt.js","sources":["../../src/components/formsExt/editArea/editArea.vue","../../src/components/formsExt/editInput/editInput.vue","../../src/components/formsExt/libs/optionGroup/optionGroup.vue","../../src/components/formsExt/radioGroup/radioGroup.vue","../../src/components/formsExt/checkboxGroup/checkboxGroup.vue","../../src/components/formsExt/selector2/itemMulti.vue","../../src/components/formsExt/selector2/composables/useAPI.ts","../../src/components/formsExt/selector2/utils.ts","../../src/components/formsExt/selector2/composables/useMenu.ts","../../src/components/formsExt/selector2/selector2.vue","../../src/components/formsExt/info/info.vue","../../src/components/formsExt/policy/policy.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport Button from '@/components/forms/button/button.vue';\nimport type { Emits, Props } from './types';\nimport Textarea from '@/components/forms/textarea/textarea.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tdefaultValue: '',\n\tcancelText: 'Cancel',\n\tsubmitText: 'Send',\n\tcloseText: 'Close',\n\texpandable: true,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst localValue = ref(props.defaultValue);\n\nconst isFocused = ref(props.isFocused);\n\nconst isChanged = computed(() => localValue.value !== props.defaultValue);\n\nconst submit = (value: string) => {\n\temit('submit', value);\n\n\tlocalValue.value = props.defaultValue;\n};\n\nconst cancel = () => {\n\tif (props.forceShowCloseBtn && !isChanged.value) {\n\t\temit('close');\n\n\t\treturn;\n\t}\n\n\tlocalValue.value = props.defaultValue;\n};\n\nconst clickOnTitle = () => {\n\tif (props.attachToKeyboard) emit('clickOnTitle');\n};\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-editArea': true,\n\t\t\t'top-editArea-attachedToKeyboard': attachToKeyboard,\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tv-if=\"title\"\n\t\t\tclass=\"top-editArea_title\"\n\t\t\t@click=\"clickOnTitle()\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-editArea_form': true,\n\t\t\t\t'top-forms-focusable': true,\n\t\t\t\t'top-as-input': true,\n\t\t\t\t'top-error': isError,\n\t\t\t\t'top-focus': isFocused,\n\t\t\t}\"\n\t\t>\n\t\t\t<Textarea\n\t\t\t\tv-model=\"localValue\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:rows=\"rows\"\n\t\t\t\t:minHeight=\"minHeight\"\n\t\t\t\t:expandable=\"expandable\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t:readonly=\"readonly\"\n\t\t\t\t:isError=\"isError\"\n\t\t\t\t:hint=\"hint\"\n\t\t\t\tclass=\"top-editArea_element\"\n\t\t\t\t@focus=\"() => isFocused = true\"\n\t\t\t\t@blur=\"() => isFocused = false\"\n\t\t\t\t@keyup.esc=\"cancel\"\n\t\t\t\t@keyup.ctrl.enter=\"submit(localValue)\"\n\t\t\t/>\n\n\t\t\t<div class=\"top-editArea_footer\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"isChanged || forceShowCloseBtn\"\n\t\t\t\t\t:icon=\"$core.state.isMobile ? '': ''\"\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\tstyling=\"soft\"\n\t\t\t\t\t@click=\"cancel\"\n\t\t\t\t>\n\t\t\t\t\t<template\n\t\t\t\t\t\t#default\n\t\t\t\t\t\tv-if=\"!$core.state.isMobile\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ cancelText }}\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\n\t\t\t\t<Button\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\tv-if=\"isChanged\"\n\t\t\t\t\t:icon=\"$core.state.isMobile ? '': ''\"\n\t\t\t\t\t@click=\"submit(localValue)\"\n\t\t\t\t>\n\t\t\t\t\t<template\n\t\t\t\t\t\t#default\n\t\t\t\t\t\tv-if=\"!$core.state.isMobile\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ submitText }}\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n.top-editArea {\n\t--top-editArea-bottom: env(keyboard-inset-height, 0px);\n\t--top-editArea-offset-bottom: 0px;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 6px;\n}\n\n.top-editArea_title {\n\tfont-size: 12px;\n}\n\n.top-editArea_form {\n\tflex-direction: column;\n}\n\n/* textarea в EditArea */\n.top-textarea {\n\twidth: 100%;\n}\n\n.top-editArea_element.top-textarea_textarea {\n\t--top-forms-border-width: 0px;\n\n\toutline: none;\n\tanimation: none;\n}\n\n/* footer */\n.top-editArea_footer {\n\tpadding: var(--top-forms-padding);\n\tdisplay: flex;\n\tmin-height: 32px;\n\talign-self: flex-end;\n\tjustify-content: flex-end;\n\tgap: var(--top-forms-padding);\n}\n\n/* attachedToKeyboard */\n.top-editArea-attachedToKeyboard {\n\tbackground: var(--top-forms-background-color);\n\tposition: fixed;\n\tbottom: calc(var(--top-editArea-offset-bottom) + var(--top-editArea-bottom));\n\tright: 0;\n\tleft: 0;\n\tz-index: 2;\n\tgap: 0;\n\ttransition: bottom var(--transition-fast);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_form {\n\tborder-radius: 0;\n\tborder: none;\n\tborder-top: 1px solid var(--top-forms-border-color);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_title {\n\tcursor: pointer;\n\tborder-top: 1px solid var(--color-line-2-opacity);\n\tpadding: var(--top-forms-padding);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_footer > [data-top-icon] {\n\tborder-radius: 100%;\n}\n\n@media screen and (max-width: 900px) {\n\t.top-editArea_form{\n\t\tflex-direction: row;\n\t}\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, toRef, watch } from 'vue';\nimport type { Emits, Props } from './types';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\n\nconst props = defineProps<Props>();\n\nconst intermediateValue = ref(props.modelValue);\n\nwatch(toRef(props.modelValue), () => {\n\tintermediateValue.value = props.modelValue;\n});\n\nconst emit = defineEmits<Emits>();\n\nconst submit = () => {\n\temit('update:modelValue', intermediateValue.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-editInput\">\n\t\t<TopInput\n\t\t\t:=\"input\"\n\t\t\t@keydown.esc.capture.stop=\"intermediateValue = modelValue\"\n\t\t\t@keydown.enter.stop=\"submit\"\n\t\t\tv-model=\"intermediateValue\"\n\t\t/>\n\n\t\t<TopButton\n\t\t\tv-if=\"intermediateValue !== modelValue\"\n\t\t\ticon=\"\"\n\t\t\tstyling=\"soft\"\n\t\t\t:=\"button\"\n\t\t\t@click=\"submit\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n.top-editInput {\n\twidth: 220px;\n\tflex-grow: 1;\n\tdisplay: flex;\n\talign-items: flex-end;\n\tgap: var(--top-gap-1);\n}\n\n.top-editInput .top-input {\n\twidth: unset;\n\tflex-grow: 1;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport type { Props } from './types';\nimport TopCheckbox from '@/components/forms/checkbox/checkbox.vue';\nimport TopRadio from '@/components/forms/radio/radio.vue';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\tsize: 's',\n});\n\nconst elRef = ref<HTMLElement | null>(null);\n\nwatch(model, () => {\n\tconst valuesAvailable = props.items.map(item => item.value);\n\n\tif (Array.isArray(model.value)) {\n\t\t// есть ли неподдерживаемые значения\n\t\tconst valueIsWrong = model.value.find((value) => {\n\t\t\treturn !valuesAvailable.includes(value);\n\t\t});\n\n\t\tif (valueIsWrong) {\n\t\t\t// оставить только поддерживаемые значения\n\t\t\tmodel.value = model.value.filter((value) => {\n\t\t\t\treturn valuesAvailable.includes(value);\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif (!valuesAvailable.includes(model.value)) {\n\t\t\tmodel.value = valuesAvailable[0] ?? '';\n\t\t}\n\t}\n\n\telRef.value?.querySelector('.radioGroup_item-selected')?.scrollIntoView();\n}, { immediate: true });\n\nconst name = 'optionGroup-' + Math.random();\n</script>\n\n<template>\n\t<div\n\t\tref=\"elRef\"\n\t\t:class=\"{\n\t\t\t['top-optionGroup']: true,\n\t\t\t['top-optionGroup-showIndicator_' + Number(showIndicator)]: true,\n\t\t\t['top-scrollBarXHidding']: true,\n\t\t\t['top-size_' + size]: !!size,\n\t\t\t['top-error']: isError,\n\t\t}\"\n\t>\n\t\t<template v-if=\"Array.isArray(model)\">\n\t\t\t<TopCheckbox\n\t\t\t\t:class=\"{\n\t\t\t\t\t['top-optionGroup_item-selected']: model.includes(item.value),\n\t\t\t\t\t['top-optionGroup_item']: true,\n\t\t\t\t}\"\n\t\t\t\tv-for=\"item of items\"\n\t\t\t\tv-model=\"model\"\n\t\t\t\t:value=\"item.value\"\n\t\t\t\t:title=\"item.title\"\n\t\t\t\t:disabled=\"item.disabled\"\n\t\t\t\t:isError\n\t\t\t\t:data-top-icon=\"item.icon\"\n\t\t\t>\n\t\t\t\t{{ item.label }}\n\t\t\t</TopCheckbox>\n\t\t</template>\n\n\t\t<template v-else>\n\t\t\t<TopRadio\n\t\t\t\t:class=\"{\n\t\t\t\t\t['top-optionGroup_item-selected']: item.value === model,\n\t\t\t\t\t['top-optionGroup_item']: true,\n\t\t\t\t}\"\n\t\t\t\tv-for=\"item of items\"\n\t\t\t\tv-model=\"model\"\n\t\t\t\t:name\n\t\t\t\t:value=\"item.value\"\n\t\t\t\t:title=\"item.title\"\n\t\t\t\t:disabled=\"item.disabled\"\n\t\t\t\t:isError\n\t\t\t\t:data-top-icon=\"item.icon\"\n\t\t\t>\n\t\t\t\t{{ item.label }}\n\t\t\t</TopRadio>\n\t\t</template>\n\t</div>\n</template>\n\n<style>\n.top-optionGroup {\n\tuser-select: none;\n\tbox-sizing: border-box;\n\tborder-radius: 8px;\n\tbackground-color: var(--color-layout-middle);\n\theight: var(--top-forms-base-height);\n\tpadding: 2px;\n\tgap: 2px;\n\tdisplay: flex;\n\talign-items: flex-start;\n}\n\n.top-optionGroup_item {\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\tborder-radius: 6px;\n\theight: calc(var(--top-forms-base-height) - 4px);\n\tpadding: 1px var(--top-padding-2);\n\tcolor: var(--color-text-2);\n\tfont-weight: 400;\n\twhite-space: nowrap;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-grow: 1;\n\tgap: var(--top-gap-1);\n}\n\n.top-optionGroup_item:hover {\n\tbackground-color: var(--color-layout-front-1);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n.top-optionGroup_item-selected {\n\tcolor: var(--color-text-1);\n\tbackground-color: var(--color-bg-lightning-1);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n.top-optionGroup_item > .top-forms-optionLabel {\n\tflex-grow: 0;\n}\n\n/* indicator */\n.top-optionGroup-showIndicator_0 > .top-optionGroup_item {\n\tjustify-content: center;\n}\n\n.top-optionGroup-showIndicator_0 > .top-optionGroup_item:has(:focus-visible) {\n\toutline: 2px solid var(--color-bg-primary-2);\n\toutline-offset: -1px;\n}\n\n.top-optionGroup-showIndicator_1 > .top-optionGroup_item {\n\tpadding: 1px 3px;\n\tjustify-content: flex-start;\n}\n\n.top-optionGroup-showIndicator_0 > .top-optionGroup_item > .top-forms-option {\n\topacity: 0;\n\twidth: 0;\n\theight: 0;\n\tposition: absolute;\n}\n\n.top-optionGroup_item > .top-forms-option {\n\torder: -1;\n}\n</style>\n","<script setup lang=\"ts\">\nimport OptionGroup from '../libs/optionGroup/optionGroup.vue';\n\nimport type { Props } from './types';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\ndefineProps<Props>();\n</script>\n\n<template>\n\t<OptionGroup\n\t\tclass=\"top-radioGroup\"\n\t\tv-model=\"model\"\n\t\t:items=\"$props.items\"\n\t\t:size=\"$props.size\"\n\t\t:showIndicator=\"$props.showIndicator\"\n\t\t:isError=\"$props.isError\"\n\t>\n\t\t<slot/>\n\t</OptionGroup>\n</template>\n","<script setup lang=\"ts\">\nimport OptionGroup from '../libs/optionGroup/optionGroup.vue';\n\nimport type { Props } from './types';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\ndefineProps<Props>();\n</script>\n\n<template>\n\t<OptionGroup\n\t\tclass=\"top-checkboxGroup\"\n\t\tv-model=\"model\"\n\t\t:items=\"$props.items\"\n\t\t:size=\"$props.size\"\n\t\t:showIndicator=\"$props.showIndicator\"\n\t\t:isError=\"$props.isError\"\n\t>\n\t\t<slot/>\n\t</OptionGroup>\n</template>\n","<script setup lang=\"ts\">\nimport type { EmitsItemMulti, PropsItemMulti } from './types';\n\ndefineProps<PropsItemMulti>();\ndefineEmits<EmitsItemMulti>();\n</script>\n\n<template>\n\t<div class=\"top-selector2_itemMulti top-ellipsis\">\n\t\t{{ name }}\n\t\t<span\n\t\t\tclass=\"top-selector2_itemMultiDelete\"\n\t\t\tdata-top-icon=\"\"\n\t\t\t@click=\"$emit('delete', id)\"\n\t\t\t@mousedown.stop\n\t\t></span>\n\t</div>\n</template>\n\n<style>\n.top-selector2_itemMulti {\n\tbox-sizing: border-box;\n\tpadding-left: var(--top-padding-2);\n\tborder-radius: var(--top-radius-1, 4px);\n\tborder: 1px solid var(--color-line-primary-1);\n\tbackground: var(--color-layer-primary-2);\n\tmin-height: 22px;\n\tmax-width: 100%;\n\tcolor: var(--color-text-1);\n\tflex-grow: 0;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--top-gap-1);\n}\n\n.top-selector2_itemMultiDelete {\n\t--top-icon-size: 14px;\n\t--top-icon-width: 18px;\n\t--top-icon-color: var(--color-text-1);\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\theight: 100%;\n\tcursor: pointer;\n}\n\n.top-selector2_itemMultiDelete:hover {\n\tbackground: var(--color-layer-primary-2);\n}\n\n@media screen and (min-width: 900px) {\n\t.top-selector2.top-active .top-selector2_itemMultiDelete {\n\t\tz-index: calc(var(--top-popup-z-index) + 1);\n\t}\n}\n</style>\n","import { ref } from 'vue';\nimport { debounce } from '../../../../core/utils/lodash';\nimport type { Item, Props } from '../types';\n\nexport type API = ReturnType<typeof useAPI>;\n\nexport const useAPI = (api: Props['api'], apiSetSearchParams: Props['apiSetSearchParams'], minLength: number, useCache: Props['useCache']) => {\n\t/**\n\t * Список, полученный через API\n\t */\n\tconst items = ref<Item[]>([]);\n\n\t/**\n\t * Кэш для полученных ответов через apiRequest\n\t */\n\tconst cache = new Map<string, any>();\n\n\t/**\n\t * Флаг - идет загрузка\n\t */\n\tconst isLoading = ref(false);\n\n\tlet searchText = '';\n\tlet nextOffset: number | null | undefined;\n\n\tif (api && !api.params.limit) {\n\t\tapi.params.limit = 100;\n\t}\n\n\t/**\n\t * Выполнить обращение к API\n\t *\n\t * При ошибке вернет undefined\n\t */\n\tconst callAPI = async (): Promise<Api.ResponseSuccess<any, 'get'> | undefined> => {\n\t\tif (!api) return;\n\n\t\tlet cacheKey: string | undefined = undefined;\n\n\t\tif (useCache) {\n\t\t\tcacheKey = JSON.stringify(api.params);\n\t\t\tconst res = cache.get(cacheKey);\n\n\t\t\tif (res) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\tisLoading.value = true;\n\t\tconst res = await api.call();\n\t\tisLoading.value = false;\n\n\t\tif (res.errors) return;\n\n\t\tif (!Array.isArray(res.result)) {\n\t\t\tconsole.warn('Array expected in `res.result`');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst indexWithError = (res.result as Array<Item | any>).findIndex(item => item.id === undefined || item.name === undefined);\n\t\tif (indexWithError !== -1) {\n\t\t\tconsole.warn(`В result[${indexWithError}] нет id или name`);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (cacheKey) {\n\t\t\tcache.set(cacheKey, res);\n\t\t}\n\n\t\treturn res as Api.ResponseSuccess<any, 'get'>;\n\t};\n\n\t/**\n\t * Загрузить items\n\t */\n\tconst load = async (append: boolean) => {\n\t\tif (!api) return;\n\n\t\tif (append) {\n\t\t\t// данных о следующих страницах не обнаружено\n\t\t\tif (!nextOffset) return;\n\n\t\t\t// дозагружать нельзя, если не завершена предыдущая загрузка\n\t\t\tif (isLoading.value) return;\n\n\t\t\tapi.params.offset = nextOffset;\n\t\t} else {\n\t\t\tapi.params.offset = 0;\n\t\t}\n\n\t\tapiSetSearchParams?.(searchText);\n\n\t\tconst res = await callAPI();\n\t\tif (!res) return;\n\n\t\tnextOffset = res.nextOffset;\n\n\t\tif (append) {\n\t\t\titems.value = items.value.concat(res.result);\n\t\t} else {\n\t\t\titems.value = res.result;\n\t\t}\n\t};\n\n\tconst loadDebounce = debounce(() => load(false), 200);\n\n\t/**\n\t * Выполнить поиск по указанному тексту\n\t *\n\t * Если длина текста меньше minLength, поиск не будет произведен\n\t *\n\t * Если текст не изменился, поиск не будет произведен\n\t *\n\t * @param newSearchText - текст поиска\n\t * @param useDebounce - дедупликация загрузки списка\n\t */\n\tconst setSearchTextAndLoad = (newSearchText: string, useDebounce = true) => {\n\t\tif (!api) return;\n\n\t\tif (newSearchText.length < minLength) return;\n\n\t\t// условия поиска не поменялись, данные загружены\n\t\tif (newSearchText === searchText && items.value.length) return;\n\n\t\tsearchText = newSearchText;\n\n\t\tif (useDebounce) {\n\t\t\tvoid loadDebounce();\n\t\t} else {\n\t\t\tvoid load(false);\n\t\t}\n\t};\n\n\treturn {\n\t\tapiRequest: api,\n\t\titems,\n\t\tisLoading,\n\t\tload,\n\t\tsetSearchTextAndLoad,\n\t};\n};\n","import type { Item, Props } from './types';\n\nexport const ITEM_ID_ALL = 0;\n\n/**\n * Выбран ли элемент\n */\nexport const isSelected = (modelValue: Props['modelValue'], item: Item, checkNameForNullId = true) => {\n\tif (checkNameForNullId && item.id === null) {\n\t\tif (Array.isArray(modelValue)) {\n\t\t\treturn modelValue.some(itemSelected => itemSelected.id === item.id && itemSelected.name === item.name);\n\t\t} else {\n\t\t\treturn item.name === modelValue.name;\n\t\t}\n\t}\n\n\tif (Array.isArray(modelValue)) {\n\t\treturn modelValue.some(itemSelected => itemSelected.id === item.id);\n\t} else {\n\t\treturn item.id === modelValue.id;\n\t}\n};\n","import { computed, ref, type ComputedRef, type Ref } from 'vue';\nimport { invertKeyboardLayout } from '@/core/utils/keyboard';\nimport type { Item, Props } from '../types';\nimport { type API } from './useAPI';\nimport { isSelected, ITEM_ID_ALL } from '../utils';\nimport { useI18n } from '@/core/plugins/i18n';\n\n/**\n * Функционал поиска\n */\nexport const useMenu = (\n\tmodel: Ref<Props['modelValue']>,\n\titems: Ref<Props['items']>,\n\tmultiselect: Props['multiselect'],\n\tappendAllValue: Ref<Props['appendAllValue']>,\n\tappendSearchToResult: Ref<Props['appendSearchToResult']>,\n\tsearchType: Ref<Props['searchType']>,\n\tminLength: number,\n\tapi: API,\n) => {\n\t/**\n\t * Текст поиска по результатам\n\t */\n\tconst searchText = ref('');\n\n\t/**\n\t * Объект, представляющий опцию \"Все\"\n\t */\n\tconst itemAll = {\n\t\tid: ITEM_ID_ALL,\n\t\tname: useI18n().Common.All,\n\t};\n\n\t/**\n\t * Сброс поиска\n\t */\n\tconst resetSearch = () => {\n\t\tsearchText.value = '';\n\t\tapi.items.value = [];\n\t};\n\n\t/**\n\t * Является ли строка поиска достаточной длины для отображения меню\n\t */\n\tconst genIsShort = () => {\n\t\tif (!api.apiRequest) return false;\n\t\tif (searchType.value !== 'inline') return false;\n\t\tif (searchText.value.length >= minLength) return false;\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Варианты выбора: props.items + \"Выбрать все\"\n\t */\n\tconst localItems: ComputedRef<Item[]> = computed(() => {\n\t\tconst localItems: Item[] = [];\n\n\t\tif (!multiselect && appendAllValue.value) {\n\t\t\tlocalItems.push(itemAll);\n\t\t}\n\n\t\titems.value?.forEach(item => localItems.push({ ...item }));\n\n\t\treturn localItems;\n\t});\n\n\t/**\n\t * Подготовленный список меню, который содержит в сумме:\n\t * - prop.items: указанный список с учетом фильтра и опций компонента\n\t * - api.items: результаты api запроса, если используется api\n\t *\n\t * @returns Отфильтрованный массив элементов для отображения\n\t */\n\tconst itemsForShow = computed(() => {\n\t\tconst searchString = searchText.value.toLowerCase();\n\t\tconst searchStringInvertKeyboard = invertKeyboardLayout(searchString);\n\n\t\tlet items: NonNullable<Props['items']> = [];\n\n\t\tlocalItems.value.forEach((item) => {\n\t\t\tconst itemName = item.name.toLowerCase();\n\n\t\t\tif (\n\t\t\t\titem.id === Number(searchString) ||\n\t\t\t\titemName.includes(searchString) ||\n\t\t\t\titemName.includes(searchStringInvertKeyboard)\n\t\t\t) {\n\t\t\t\tif (itemName === searchString || itemName === searchStringInvertKeyboard) {\n\t\t\t\t\titems.unshift(item);\n\t\t\t\t} else {\n\t\t\t\t\titems.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\titems.push(...api.items.value);\n\n\t\t// ввод произвольного значения\n\t\tif (\n\t\t\tappendSearchToResult.value &&\n\t\t\t!!searchText.value &&\n\t\t\t(!items.length || items[0].name.toLowerCase() !== searchString)\n\t\t) {\n\t\t\titems.push({\n\t\t\t\tid: null,\n\t\t\t\tname: searchText.value,\n\t\t\t});\n\t\t}\n\n\t\tif (multiselect) {\n\t\t\titems = items.filter(item => !isSelected(model.value, item));\n\t\t}\n\n\t\treturn items;\n\t});\n\n\t/**\n\t * Выбрать элемент\n\t *\n\t * @param item Элемент для выбора\n\t */\n\tconst selectItem = (item: Item) => {\n\t\tif (multiselect && Array.isArray(model.value)) {\n\t\t\tif (!isSelected(model.value, item)) {\n\t\t\t\tmodel.value = [...model.value, item];\n\t\t\t}\n\t\t} else {\n\t\t\tmodel.value = item;\n\t\t}\n\t};\n\n\t/**\n\t * Выбрать следующее значение\n\t */\n\tconst selectNextItem = () => {\n\t\tif (!Array.isArray(model.value)) {\n\t\t\tconst currentIndex = itemsForShow.value.findIndex(item => item.id === (model.value as Item).id);\n\t\t\tconst nextIndex = (currentIndex + 1) % itemsForShow.value.length;\n\t\t\tmodel.value = { ...itemsForShow.value[nextIndex] };\n\t\t}\n\t};\n\n\t/**\n\t * Удалить выбранное значение по id\n\t *\n\t * @param id Идентификатор элемента для удаления\n\t */\n\tconst deleteItemById = async (id: Item['id']) => {\n\t\tif (Array.isArray(model.value)) {\n\t\t\tmodel.value = model.value.filter(item => item.id !== id);\n\t\t}\n\t};\n\n\treturn {\n\t\tsearchText,\n\t\tresetSearch,\n\t\tgenIsShort,\n\t\titems: localItems,\n\t\titemsForShow,\n\t\tselectItem,\n\t\tselectNextItem,\n\t\tdeleteItemById,\n\t};\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, toRef, watch } from 'vue';\nimport Core from '@/core/core/core';\nimport { TopPopup, TopPopupListItem, TopPopupWidgetInput } from '@/components/popup/popup';\nimport { TopPreloader } from '@/components/forms/forms';\nimport type { Item, Props, Slots } from './types';\nimport Selector2ItemMulti from './itemMulti.vue';\nimport { useAPI } from './composables/useAPI';\nimport { useMenu } from './composables/useMenu';\nimport type { TopLibPopup } from '../../popup/lib/popup';\nimport Worker from '../../popup/lib/worker';\n\nconst props = withDefaults(defineProps<Props>(), {\n\titems: () => [] as Item[],\n\tsize: 's',\n\tminLength: 0,\n\tsearchType: 'popup',\n});\n\nconst model = defineModel<Props['modelValue']>({ required: true });\n\ndefineSlots<Slots>();\n\nconst searchTypeLocal = computed(() => {\n\t// multiselect не поддерживает inline ввода\n\tif (props.searchType === 'inline' && props.multiselect) return 'popup';\n\n\t// В мобильной версии popup работает в полноэкранном режиме\n\tif (props.searchType === 'inline' && Core.state.isMobile) return 'popup';\n\n\treturn props.searchType;\n});\n\nlet minLength = 0;\nif (searchTypeLocal.value === 'inline' && props.minLength) {\n\tminLength = props.minLength;\n}\n\n/**\n * Объект для работы с API\n */\nconst api = useAPI(props.api, props.apiSetSearchParams, minLength, props.useCache);\n\n/**\n * Объект для работы с меню\n */\nconst menu = useMenu(\n\tmodel,\n\ttoRef(props, 'items'),\n\tprops.multiselect,\n\ttoRef(props, 'appendAllValue'),\n\ttoRef(props, 'appendSearchToResult'),\n\tsearchTypeLocal,\n\tminLength,\n\tapi,\n);\n\nconst component = computed(() => {\n\tif (props.buttonProps) return 'TopButton';\n\tif (searchTypeLocal.value === 'inline') return 'TopInput';\n\n\treturn 'div';\n});\n\n/**\n * Экземпляр компонента Popup\n */\nconst popupRef = ref<any>(null);\n\n/**\n * Получить доступ к объекту popup\n */\nconst getPopup = (): TopLibPopup | undefined => {\n\treturn popupRef.value?.popup;\n};\n\nif (api.apiRequest) {\n\t// отложенный поиск при вводе текста\n\twatch(menu.searchText, () => {\n\t\tapi.setSearchTextAndLoad(menu.searchText.value);\n\n\t\tif (searchTypeLocal.value === 'inline') {\n\t\t\tif (menu.genIsShort()) {\n\t\t\t\tgetPopup()?.close();\n\t\t\t}\n\t\t}\n\t});\n}\n\nwatch(model, () => {\n\t/**\n\t * При изменении значения модели в режиме inline необходимо очистить поле поиска,\n\t * так как поиск больше не актуален после выбора значения\n\t */\n\tif (searchTypeLocal.value === 'inline') {\n\t\tmenu.resetSearch();\n\t}\n});\n\nconst placeholder = computed(() => {\n\tif (Array.isArray(model.value) || props.multiselect || !props.selectedAsPlaceholder && searchTypeLocal.value !== 'inline') {\n\t\treturn props.placeholder;\n\t}\n\n\treturn model.value?.name || props.placeholder;\n});\n\n/**\n * Обработчик ввода клавиш на кнопке или поле ввода\n */\nconst onOpenerKeydown = (e: KeyboardEvent) => {\n\tlet needOpen = false;\n\n\tswitch (e.key) {\n\t\tcase 'Delete':\n\t\tcase 'Backspace':\n\t\t\tif (Array.isArray(model.value)) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\n\t\t\t\tmodel.value.pop();\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'ArrowUp':\n\t\tcase 'ArrowRight':\n\t\tcase 'ArrowDown':\n\t\tcase 'ArrowLeft':\n\t\tcase 'Enter':\n\t\tcase ' ':\n\t\t\tneedOpen = true;\n\n\t\t\tbreak;\n\t\tcase 'Escape':\n\t\t\tif (searchTypeLocal.value === 'inline') {\n\t\t\t\t// очистка введенного текста\n\t\t\t\tmenu.resetSearch();\n\t\t\t}\n\n\t\t\tbreak;\n\t}\n\n\t// введен символ\n\tconst symbolPressed = e.key.length === 1 && !e.ctrlKey && !e.metaKey;\n\n\t// введен символ\n\tif (searchTypeLocal.value === 'popup' || searchTypeLocal.value === 'inline') {\n\t\tif (symbolPressed) {\n\t\t\tneedOpen = true;\n\t\t}\n\t}\n\n\t// popup уже открыт\n\tif (getPopup()?.elPopup) {\n\t\tneedOpen = false;\n\t}\n\n\tif (needOpen) {\n\t\tif (searchTypeLocal.value === 'popup') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\t// введен символ\n\t\t\tif (symbolPressed) {\n\t\t\t\t// начало ввода, сразу ввести первый символ вместе с открытием popup\n\t\t\t\tif (!menu.searchText.value) {\n\t\t\t\t\tmenu.searchText.value = e.key;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t(e.currentTarget as HTMLElement)?.click();\n\t}\n};\n\nconst onClickChanger = (e: MouseEvent) => {\n\te.preventDefault();\n\n\tmenu.selectNextItem();\n};\n\n/**\n * Обработчик открытия попапа\n */\nconst onOpen = () => {\n\tif (api.apiRequest) {\n\t\tif (menu.genIsShort()) {\n\t\t\tgetPopup()?.close();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// при открытии сразу выполнить поиск\n\t\tapi.setSearchTextAndLoad(menu.searchText.value, false);\n\t}\n};\n\n/**\n * Обработчик закрытия попапа\n */\nconst onClose = () => {\n\t// очистка введенного текста\n\tif (searchTypeLocal.value) {\n\t\tif (menu.searchText.value) menu.resetSearch();\n\t}\n};\n\n/**\n * Обработчик прокрутки списка контента\n *\n * Для дозагрузки элеменов через api\n *\n * @param {Event} e - Событие прокрутки\n */\nconst onScrollContentList = (e: Event) => {\n\tconst el = e.target as HTMLElement;\n\n\tif (el.scrollTop / (el.scrollHeight - el.offsetHeight) > 0.8) {\n\t\tapi.load(true);\n\t}\n};\n\n// для storybook\nif ((window as any).__STORYBOOK_PREVIEW__) {\n\twatch(\n\t\t() => props.multiselect,\n\t\t() => {\n\t\t\tif (props.multiselect) {\n\t\t\t\tif (!Array.isArray(model.value)) {\n\t\t\t\t\tmodel.value = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\t\tname: 'Выбери меня',\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (Array.isArray(model.value)) {\n\t\t\t\t\tmodel.value = {\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t\tname: '',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ immediate: true },\n\t);\n\n\twatch(\n\t\t() => props.searchType,\n\t\t() => {\n\t\t\t// пауза для установки props в адресной строке\n\t\t\tsetTimeout(() => {\n\t\t\t\tlocation.reload();\n\t\t\t}, 500);\n\t\t},\n\t);\n}\n</script>\n\n<template>\n\t<TopPopup\n\t\tref=\"popupRef\"\n\t\t@open=\"onOpen()\"\n\t\t@close=\"onClose()\"\n\t\t@scrollContentList=\"api ? onScrollContentList($event) : undefined\"\n\t\t:notch=\"searchTypeLocal !== 'inline'\"\n\t\t:transitionDuration=\"0\"\n\t\t:openByFocus=\"searchTypeLocal === 'inline'\"\n\t>\n\t\t<template #opener>\n\t\t\t<component\n\t\t\t\t:is=\"component\"\n\n\t\t\t\t:=\"buttonProps\"\n\n\t\t\t\tref=\"subcomponentSelector\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'top-selector2' : true,\n\t\t\t\t\t'top-selector2-multiselect': multiselect,\n\t\t\t\t\t['top-selector2-' + modificator]: !!modificator,\n\t\t\t\t\t'top-as-input': !buttonProps,\n\t\t\t\t\t'top-as-selector': true,\n\t\t\t\t\t['top-size_' + size]: true,\n\t\t\t\t\t['top-disabled']: disabled,\n\t\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t\t['top-error']: isError,\n\t\t\t\t}\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t@keydown=\"onOpenerKeydown\"\n\t\t\t\tv-top-focus.onupdate=\"isError\"\n\n\t\t\t\t:placeholder\n\t\t\t\tv-model=\"menu.searchText.value\"\n\t\t\t>\n\t\t\t\t<template v-if=\"multiselect\">\n\t\t\t\t\t<div class=\"top-selector2_activeItems\">\n\t\t\t\t\t\t<Selector2ItemMulti\n\t\t\t\t\t\t\tv-for=\"item of model as Item[]\"\n\t\t\t\t\t\t\t:id=\"item.id\"\n\t\t\t\t\t\t\t:name=\"item.name\"\n\t\t\t\t\t\t\t@delete=\"menu.deleteItemById\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\n\t\t\t\t<span v-if=\"searchTypeLocal !== 'inline' && !multiselect\" class=\"top-selector2_activeName top-ellipsis\">\n\t\t\t\t\t{{ !Array.isArray(model) ? model.name : '' }}\n\t\t\t\t</span>\n\n\t\t\t\t<span v-if=\"multiselect && !model.length\" class=\"top-selector2_placeholder top-ellipsis\">\n\t\t\t\t\t{{ placeholder }}\n\t\t\t\t</span>\n\n\t\t\t\t<span\n\t\t\t\t\tv-if=\"addChanger && !buttonProps && !multiselect && menu.items.value.length > 1 && !disabled\"\n\t\t\t\t\tclass=\"top-changer top-changer-selector top-popup_widget\"\n\t\t\t\t\t@click=\"onClickChanger\"\n\t\t\t\t></span>\n\t\t\t</component>\n\t\t</template>\n\n\t\t<template #widget v-if=\"searchTypeLocal === 'popup'\">\n\t\t\t<TopPopupWidgetInput\n\t\t\t\ttitle=\"Поиск\"\n\t\t\t\ticon=\"\"\n\t\t\t\tv-model=\"menu.searchText.value\"\n\t\t\t\t:isLoading=\"api.isLoading.value && !api.apiRequest?.params.offset\"\n\t\t\t\t:placeholder\n\t\t\t/>\n\t\t</template>\n\n\t\t<template #contentList>\n\t\t\t<TopPopupListItem\n\t\t\t\tv-for=\"item of menu.itemsForShow.value\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'top-active': !Array.isArray(model) && !multiselect && model.id === item.id && model.name === item.name,\n\t\t\t\t}\"\n\t\t\t\t:key=\"item.id ?? undefined\"\n\t\t\t\t:closeByClick=\"!multiselect || Core.state.isMobile\"\n\t\t\t\t@click=\"menu.selectItem(item)\"\n\t\t\t>\n\t\t\t\t<slot\n\t\t\t\t\tv-if=\"$slots.item\"\n\t\t\t\t\tname=\"item\"\n\t\t\t\t\t:item\n\t\t\t\t></slot>\n\n\t\t\t\t<template\n\t\t\t\t\tv-else\n\t\t\t\t>\n\t\t\t\t\t{{ item.name }}\n\t\t\t\t</template>\n\t\t\t</TopPopupListItem>\n\n\t\t\t<TopPopupListItem\n\t\t\t\tv-if=\"!api.isLoading.value && !menu.itemsForShow.value.length\"\n\t\t\t\ttype=\"regular\"\n\t\t\t>\n\t\t\t\t{{ $i18n.Common.No_results }}\n\t\t\t</TopPopupListItem>\n\n\t\t\t<!-- Индикатор загрузки, первичная дозагрузка отображается в поле поиска, если оно отображено -->\n\t\t\t<TopPopupListItem\n\t\t\t\tv-if=\"api.isLoading.value && (searchType !== 'popup' || api.apiRequest?.params.offset)\"\n\t\t\t\ttype=\"regular\"\n\t\t\t>\n\t\t\t\t<TopPreloader type=\"circles\"/>\n\t\t\t</TopPopupListItem>\n\t\t</template>\n\t</TopPopup>\n</template>\n\n<style>\n.top-selector2 {\n\twidth: 180px;\n\tpadding: var(--top-padding-1) var(--top-forms-padding);\n}\n\n.top-selector2::placeholder,\n.top-selector2_placeholder {\n\tcolor: var(--color-text-2);\n}\n\n.top-selector2_placeholder {\n\tpadding-left: var(--top-padding-1);\n}\n\n.top-selector2-multiselect {\n\twidth: auto;\n\tpadding: var(--top-padding-1);\n\tflex-grow: 1;\n}\n\n.top-selector2.top-active {\n\t--top-forms-border-color: var(--top-forms-border-color-hover);\n}\n\n.top-selector2_activeItems {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--top-padding-1);\n\tmax-width: 100%;\n}\n\n.top-selector2_activeName {\n\twhite-space: nowrap;\n}\n\n.top-changer-selector {\n\twidth: auto;\n\tpadding: var(--top-padding-1);\n\tmargin: calc(0px - var(--top-padding-1));\n\ttransform: translateX(0);\n}\n\n.top-selector2.top-button {\n\tjustify-content: start;\n}\n\n.top-selector2.top-input_input ~ .top-changer-selector {\n\ttransform: translateX(-52px);\n}\n\n.top-selector2.top-as-selector {\n\tpadding-right: calc(var(--top-selector-arrow-width) + var(--top-padding-2));\n}\n</style>\n","<script lang=\"ts\" setup>\nimport type { Props, Slots } from './types';\n\nwithDefaults(defineProps<Props>(), {\n\tstyling: 'default',\n\tsize: 'default',\n});\n\ndefineSlots<Slots>();\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-info']: true,\n\t\t\t['top-size_' + size]: true,\n\t\t\t['top-info-styling_' + styling]: true,\n\t\t}\"\n\t\t:data-top-icon=\"icon\"\n\t>\n\t\t<div class=\"top-info_text\">\n\t\t\t<slot></slot>\n\t\t</div>\n\n\t\t<span v-if=\"$slots.additional\" class=\"top-info_value\">\n\t\t\t<slot name=\"additional\"></slot>\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n.top-info {\n\t--top-icon-width: var(--top-icon-size);\n\n\tborder-radius: var(--top-forms-radius);\n\tbox-sizing: border-box;\n\tmin-height: var(--top-forms-base-height);\n\tpadding: var(--top-padding-1) var(--top-padding-2);\n\tflex-grow: 5;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--top-gap-2);\n}\n\n.top-info_text {\n\tflex-grow: 1;\n}\n\n.top-info_value {\n\tfont-weight: bold;\n}\n\n/* size */\n.top-info.top-size_default {\n\tborder-radius: var(--top-radius-3);\n\tpadding: var(--top-padding-4);\n}\n\n/* styling */\n.top-info-styling_default {\n\t--top-icon-color: var(--color-text-2);\n\n\tbackground: var(--color-layer-1);\n}\n\n.top-info-styling_info {\n\t--top-icon-color: var(--color-text-primary);\n\n\tbackground: var(--color-layer-primary-1);\n}\n\n.top-info-styling_warning {\n\t--top-icon-color: var(--color-text-warning);\n\n\tbackground: var(--color-layer-warning-1);\n}\n\n.top-info-styling_negative {\n\t--top-icon-color: var(--color-text-negative);\n\n\tbackground: var(--color-layer-negative-1);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { TopButton } from '@/components/forms/forms';\nimport type { Emits, Props } from '@/components/formsExt/policy/types';\n\ndefineProps<Props>();\nconst emits = defineEmits<Emits>();\n\nconst isVisible = ref(true);\n\nconst onAccept = () => {\n\tisVisible.value = false;\n\n\temits('accept');\n};\n</script>\n\n<template>\n\t<div\n\t\tv-if=\"isVisible\"\n\t\tclass=\"top-policy\"\n\t>\n\t\t<div class=\"top-policy_title\">\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div\n\t\t\tclass=\"top-policy_description\"\n\t\t\tv-html=\"description\"\n\t\t></div>\n\n\t\t<TopButton\n\t\t\tsize=\"m\"\n\t\t\t@click=\"onAccept\"\n\t\t>\n\t\t\t{{ acceptText }}\n\t\t</TopButton>\n\t</div>\n</template>\n\n<style>\n.top-policy {\n\tbox-sizing: border-box;\n\tbox-shadow: var(--top-shadow-b);\n\tborder-radius: var(--top-radius-4);\n\tbackground: var(--color-bg-lightning-1);\n\twidth: 600px;\n\tpadding: var(--top-padding-4);\n\tposition: fixed;\n\tright: var(--top-gap-10);\n\tbottom: var(--top-gap-10);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--top-gap-4);\n\tz-index: 10000;\n}\n\n.top-policy_title {\n\tfont-size: 24px;\n\tfont-weight: 700;\n}\n\n.top-policy_description {\n\tfont-size: 14px;\n}\n\n@media screen and (max-width: 900px) {\n\t.top-policy {\n\t\twidth: 100%;\n\t\tright: 0;\n\t\tbottom: calc(var(--top-gap-5) + var(--toolbar-height, 0px));\n\t}\n}\n</style>\n"],"names":["props","__props","emit","__emit","localValue","ref","isFocused","isChanged","computed","submit","value","cancel","clickOnTitle","_createElementBlock","_normalizeClass","attachToKeyboard","title","_createElementVNode","isError","_createVNode","Textarea","$event","name","placeholder","rows","minHeight","expandable","disabled","readonly","hint","_cache","_withKeys","_withModifiers","_hoisted_1","forceShowCloseBtn","_createBlock","Button","$core","cancelText","submitText","intermediateValue","watch","toRef","_openBlock","TopInput","_mergeProps","_ctx","modelValue","TopButton","button","model","_useModel","elRef","valuesAvailable","item","_b","_a","showIndicator","size","_Fragment","_renderList","items","TopCheckbox","_createTextVNode","_toDisplayString","TopRadio","OptionGroup","$props","_renderSlot","$emit","id","useAPI","api","apiSetSearchParams","minLength","useCache","cache","isLoading","searchText","nextOffset","callAPI","cacheKey","res","indexWithError","load","append","loadDebounce","debounce","newSearchText","useDebounce","ITEM_ID_ALL","isSelected","checkNameForNullId","itemSelected","useMenu","multiselect","appendAllValue","appendSearchToResult","searchType","itemAll","useI18n","resetSearch","genIsShort","localItems","itemsForShow","searchString","searchStringInvertKeyboard","invertKeyboardLayout","itemName","nextIndex","searchTypeLocal","Core","menu","component","popupRef","getPopup","onOpenerKeydown","e","needOpen","symbolPressed","onClickChanger","onOpen","onClose","onScrollContentList","el","_unref","TopPopup","_withDirectives","_resolveDynamicComponent","buttonProps","modificator","Selector2ItemMulti","_hoisted_2","_hoisted_3","addChanger","TopPopupListItem","$slots","$i18n","TopPreloader","TopPopupWidgetInput","styling","icon","emits","isVisible","onAccept","description","acceptText"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-CzUjrBXG.amd","../require/css.amd!../assets/layout.css"],(function(k,t,e,n){"use strict";if(typeof e>"u")var e=window.Vue;const l=e.defineComponent({__name:"rows",props:{gap:{default:"none"}},setup(s){const o=s;return(r,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-rows":!0,["top-rows-gap_"+o.gap]:!0})},[e.renderSlot(r.$slots,"default")],2))}}),c={class:"top-islandRows"},a={key:0,class:"top-islandRows_title"},d=e.defineComponent({__name:"islandRows",setup(s){return(o,r)=>(e.openBlock(),e.createElementBlock("div",c,[o.$slots.title?(e.openBlock(),e.createElementBlock("div",a,[e.renderSlot(o.$slots,"title")])):e.createCommentVNode("",!0),e.createVNode(l,{gap:"l",class:"top-islandRows_rows"},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3})]))}}),i={},_={class:"top-islandRows_row"};function u(s,o){return e.openBlock(),e.createElementBlock("div",_,[e.renderSlot(s.$slots,"default")])}const p=n._export_sfc(i,[["render",u]]),f={},w={class:"top-islandRows_subTitle"};function m(s,o){return e.openBlock(),e.createElementBlock("div",w,[e.renderSlot(s.$slots,"default")])}const R=n._export_sfc(f,[["render",m]]);t.TopIslandRows=d,t.TopIslandRowsRow=p,t.TopIslandRowsSubTitle=R,t.TopRows=l,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","vue","../.chunks/forms-CNcrvkYD.amd","../require/css.amd!../assets/layout.css"],(function(k,t,e,n){"use strict";if(typeof e>"u")var e=window.Vue;const l=e.defineComponent({__name:"rows",props:{gap:{default:"none"}},setup(s){const o=s;return(r,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-rows":!0,["top-rows-gap_"+o.gap]:!0})},[e.renderSlot(r.$slots,"default")],2))}}),c={class:"top-islandRows"},a={key:0,class:"top-islandRows_title"},d=e.defineComponent({__name:"islandRows",setup(s){return(o,r)=>(e.openBlock(),e.createElementBlock("div",c,[o.$slots.title?(e.openBlock(),e.createElementBlock("div",a,[e.renderSlot(o.$slots,"title")])):e.createCommentVNode("",!0),e.createVNode(l,{gap:"l",class:"top-islandRows_rows"},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3})]))}}),i={},_={class:"top-islandRows_row"};function u(s,o){return e.openBlock(),e.createElementBlock("div",_,[e.renderSlot(s.$slots,"default")])}const p=n._export_sfc(i,[["render",u]]),f={},w={class:"top-islandRows_subTitle"};function m(s,o){return e.openBlock(),e.createElementBlock("div",w,[e.renderSlot(s.$slots,"default")])}const R=n._export_sfc(f,[["render",m]]);t.TopIslandRows=d,t.TopIslandRowsRow=p,t.TopIslandRowsSubTitle=R,t.TopRows=l,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=layout.amd.js.map
package/layout/layout.js CHANGED
@@ -4,7 +4,7 @@
4
4
  _autoloadCSSCore.insertCSSLinkToPage(fileNames, true);
5
5
 
6
6
  import { defineComponent as r, createElementBlock as t, openBlock as e, normalizeClass as c, renderSlot as n, createCommentVNode as _, createVNode as d, withCtx as i } from "vue";
7
- import { g as l } from "../.chunks/forms-BrdvrjiZ.es.js";
7
+ import { g as l } from "../.chunks/forms-BhbgRJ5I.es.js";
8
8
  const p = /* @__PURE__ */ r({
9
9
  __name: "rows",
10
10
  props: {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "1.3.5-4",
4
+ "version": "1.3.5-popupFromInput.0",
5
5
  "type": "module",
6
6
  "description": "Topvisor UI-kit Vue",
7
7
  "author": "Topvisor",
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-_sniT1lq.amd","../.chunks/widgetInput.vue_vue_type_script_setup_true_lang-CVsiIZz5.amd","../.chunks/popupHint.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd","vue","../.chunks/forms-CzUjrBXG.amd","../require/css.amd!../assets/popupHint.css"],(function(V,l,m,B,P,e,$){"use strict";if(typeof e>"u")var e=window.Vue;const v=e.defineComponent({__name:"popupAlert",props:{submitText:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList"],setup(f){const c=f,{submitText:i,...p}=c;return(o,t)=>(e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupAlert"},p,{onOpen:t[0]||(t[0]=s=>o.$emit("open",s)),onClose:t[1]||(t[1]=s=>o.$emit("close",s)),onScrollContentList:t[2]||(t[2]=(...s)=>o.$emit("scrollContentList",...s))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(o.$slots,"footer"),e.createVNode($._sfc_main$1,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(i)||o.$i18n.Common.Close),1)]),_:1})]),_:2},[o.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"header")]),key:"0"}:void 0,o.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),key:"1"}:void 0]),1040))}}),T=e.defineComponent({__name:"popupConfirm",props:{cancelText:{},submitText:{},isWarning:{type:Boolean},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList","submit"],setup(f,{emit:c}){const i=f,p=c,o=e.ref(!1),t=()=>{o.value=!0,p("submit")},s=r=>{if(o.value){o.value=!1;return}p("close",r)},{submitText:a,cancelText:S,isWarning:y,...k}=i;return(r,u)=>(e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupConfirm"},k,{onOpen:u[0]||(u[0]=n=>r.$emit("open",n)),onClose:u[1]||(u[1]=n=>s(n)),onScrollContentList:u[2]||(u[2]=(...n)=>r.$emit("scrollContentList",...n))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(r.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(r.$slots,"footer"),e.createVNode($._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S)||r.$i18n.Common.Cancel),1)]),_:1}),e.createVNode($._sfc_main$1,{onClick:t,color:e.unref(y)?"red":"blue"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)||r.$i18n.Common.Continue),1)]),_:1},8,["color"])]),_:2},[r.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(r.$slots,"header")]),key:"0"}:void 0,r.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(r.$slots,"default")]),key:"1"}:void 0]),1040))}}),w=e.defineComponent({__name:"popupPrompt",props:{submitText:{},cancelText:{},defaultValue:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList","submit"],setup(f,{emit:c}){const i=f,p=c,o=()=>s.value=i.defaultValue??"",t=e.ref(!1),s=e.ref();e.watch(()=>i.defaultValue,()=>o(),{immediate:!0});const a=()=>{t.value=!0},S=n=>{if(t.value){t.value=!1,p("submit",s.value),o();return}o(),p("close",n)},{submitText:y,cancelText:k,defaultValue:r,...u}=i;return(n,d)=>(e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupPrompt"},u,{onOpen:d[1]||(d[1]=C=>n.$emit("open",C)),onClose:d[2]||(d[2]=C=>S(C)),onScrollContentList:d[3]||(d[3]=(...C)=>n.$emit("scrollContentList",...C))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(n.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(n.$slots,"footer"),e.createVNode($._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(k)||n.$i18n.Common.Cancel),1)]),_:1}),e.createVNode($._sfc_main$1,{onClick:a},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(y)||n.$i18n.Common.OK),1)]),_:1})]),_:2},[n.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"header")]),key:"0"}:void 0,n.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"default"),e.createVNode(B._sfc_main,{modelValue:s.value,"onUpdate:modelValue":d[0]||(d[0]=C=>s.value=C),modelModifiers:{trim:!0}},null,8,["modelValue"])]),key:"1"}:void 0]),1040))}}),h=e.defineComponent({__name:"popupHint",props:{hint:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},setup(f){const c=f,{hint:i,...p}=c;return(o,t)=>{const s=e.resolveDirective("top-tooltip");return e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupHint"},p,{onOpen:t[0]||(t[0]=a=>o.$emit("open",a)),onClose:t[1]||(t[1]=a=>o.$emit("close",a)),onScrollContentList:t[2]||(t[2]=(...a)=>o.$emit("scrollContentList",...a))}),e.createSlots({opener:e.withCtx(()=>[e.withDirectives(e.createVNode($._sfc_main$2,{hint:e.unref(i),class:"top-popupHint_opener"},null,8,["hint"]),[[s]])]),_:2},[o.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),key:"0"}:void 0]),1040)}}});l.TopPopup=m._sfc_main,l.TopPopupListItem=m._sfc_main$2,l.TopPopupOpener=m._sfc_main$1,l.TopPopupWidgetInput=B._sfc_main,l.TopPopupAlert=v,l.TopPopupConfirm=T,l.TopPopupHint=h,l.TopPopupPrompt=w,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-QvP1d9jN.amd","../.chunks/opener.vue_vue_type_script_setup_true_lang-gNZhYkDf.amd","../.chunks/widgetInput.vue_vue_type_script_setup_true_lang-D6SVtg2Q.amd","../.chunks/popupHint.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd","vue","../.chunks/forms-CNcrvkYD.amd","../require/css.amd!../assets/popupHint.css"],(function(P,r,C,k,v,b,e,$){"use strict";if(typeof e>"u")var e=window.Vue;const T=e.defineComponent({__name:"popupAlert",props:{submitText:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByFocus:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList"],setup(m){const f=m,{submitText:i,...p}=f;return(o,t)=>(e.openBlock(),e.createBlock(C._sfc_main,e.mergeProps({class:"top-popupAlert"},p,{onOpen:t[0]||(t[0]=s=>o.$emit("open",s)),onClose:t[1]||(t[1]=s=>o.$emit("close",s)),onScrollContentList:t[2]||(t[2]=(...s)=>o.$emit("scrollContentList",...s))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(o.$slots,"footer"),e.createVNode($._sfc_main$1,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(i)||o.$i18n.Common.Close),1)]),_:1})]),_:2},[o.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"header")]),key:"0"}:void 0,o.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),key:"1"}:void 0]),1040))}}),h=e.defineComponent({__name:"popupConfirm",props:{cancelText:{},submitText:{},isWarning:{type:Boolean},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByFocus:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList","submit"],setup(m,{emit:f}){const i=m,p=f,o=e.ref(!1),t=()=>{o.value=!0,p("submit")},s=l=>{if(o.value){o.value=!1;return}p("close",l)},{submitText:a,cancelText:y,isWarning:S,...B}=i;return(l,u)=>(e.openBlock(),e.createBlock(C._sfc_main,e.mergeProps({class:"top-popupConfirm"},B,{onOpen:u[0]||(u[0]=n=>l.$emit("open",n)),onClose:u[1]||(u[1]=n=>s(n)),onScrollContentList:u[2]||(u[2]=(...n)=>l.$emit("scrollContentList",...n))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(l.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(l.$slots,"footer"),e.createVNode($._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(y)||l.$i18n.Common.Cancel),1)]),_:1}),e.createVNode($._sfc_main$1,{onClick:t,color:e.unref(S)?"red":"blue"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)||l.$i18n.Common.Continue),1)]),_:1},8,["color"])]),_:2},[l.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(l.$slots,"header")]),key:"0"}:void 0,l.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),key:"1"}:void 0]),1040))}}),w=e.defineComponent({__name:"popupPrompt",props:{submitText:{},cancelText:{},defaultValue:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByFocus:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList","submit"],setup(m,{emit:f}){const i=m,p=f,o=()=>s.value=i.defaultValue??"",t=e.ref(!1),s=e.ref();e.watch(()=>i.defaultValue,()=>o(),{immediate:!0});const a=()=>{t.value=!0},y=n=>{if(t.value){t.value=!1,p("submit",s.value),o();return}o(),p("close",n)},{submitText:S,cancelText:B,defaultValue:l,...u}=i;return(n,d)=>(e.openBlock(),e.createBlock(C._sfc_main,e.mergeProps({class:"top-popupPrompt"},u,{onOpen:d[1]||(d[1]=c=>n.$emit("open",c)),onClose:d[2]||(d[2]=c=>y(c)),onScrollContentList:d[3]||(d[3]=(...c)=>n.$emit("scrollContentList",...c))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(n.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(n.$slots,"footer"),e.createVNode($._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(B)||n.$i18n.Common.Cancel),1)]),_:1}),e.createVNode($._sfc_main$1,{onClick:a},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S)||n.$i18n.Common.OK),1)]),_:1})]),_:2},[n.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"header")]),key:"0"}:void 0,n.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"default"),e.createVNode(v._sfc_main,{modelValue:s.value,"onUpdate:modelValue":d[0]||(d[0]=c=>s.value=c),modelModifiers:{trim:!0}},null,8,["modelValue"])]),key:"1"}:void 0]),1040))}}),V=e.defineComponent({__name:"popupHint",props:{hint:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByFocus:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},setup(m){const f=m,{hint:i,...p}=f;return(o,t)=>{const s=e.resolveDirective("top-tooltip");return e.openBlock(),e.createBlock(C._sfc_main,e.mergeProps({class:"top-popupHint"},p,{onOpen:t[0]||(t[0]=a=>o.$emit("open",a)),onClose:t[1]||(t[1]=a=>o.$emit("close",a)),onScrollContentList:t[2]||(t[2]=(...a)=>o.$emit("scrollContentList",...a))}),e.createSlots({opener:e.withCtx(()=>[e.withDirectives(e.createVNode($._sfc_main$2,{hint:e.unref(i),class:"top-popupHint_opener"},null,8,["hint"]),[[s]])]),_:2},[o.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),key:"0"}:void 0]),1040)}}});r.TopPopup=C._sfc_main,r.TopPopupListItem=C._sfc_main$1,r.TopPopupOpener=k._sfc_main,r.TopPopupWidgetInput=v._sfc_main,r.TopPopupAlert=T,r.TopPopupConfirm=h,r.TopPopupHint=V,r.TopPopupPrompt=w,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=popup.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"popup.amd.js","sources":["../../src/components/popup/popupAlert/popupAlert.vue","../../src/components/popup/popupConfirm/popupConfirm.vue","../../src/components/popup/popupPrompt/popupPrompt.vue","../../src/components/popup/popupHint/popupHint.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport type { Emits, Props } from './types';\nimport TopButton from '@/components/forms/button/button.vue';\nimport TopPopup from '@/components/popup/popup/popup.vue';\n\nconst props = defineProps<Props<T>>();\n\ndefineEmits<Emits<T>>();\n\n// сужение объекта для propsPopup\nconst {\n\tsubmitText,\n\t...propsPopup\n}: Props<T> = props;\n</script>\n\n<template>\n\t<!-- @vue-generic {T} -->\n\t<TopPopup\n\t\tclass=\"top-popupAlert\"\n\t\t:=propsPopup\n\t\t@open=\"$emit('open', $event)\"\n\t\t@close=\"$emit('close', $event)\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- @slot Элемент для открытия Popup -->\n\t\t\t<slot name=\"opener\"></slot>\n\t\t</template>\n\n\t\t<template #header v-if=\"$slots.header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\t\t</template>\n\n\t\t<template #footer>\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\n\t\t\t<TopButton>\n\t\t\t\t{{ submitText || $i18n.Common.Close }}\n\t\t\t</TopButton>\n\t\t</template>\n\t</TopPopup>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport { ref } from 'vue';\nimport type { PopupEvent } from '@/components/popup/popup/types';\nimport type { Emits, Props } from './types';\nimport TopButton from '@/components/forms/button/button.vue';\nimport TopPopup from '@/components/popup/popup/popup.vue';\n\nconst props = defineProps<Props<T>>();\n\nconst emit = defineEmits<Emits<T>>();\n\nconst isSubmit = ref(false);\n\nconst onSubmit = () => {\n\tisSubmit.value = true;\n\n\temit('submit');\n};\n\nconst onClose = (popupEvent: PopupEvent<T>) => {\n\tif (isSubmit.value) {\n\t\tisSubmit.value = false;\n\n\t\treturn;\n\t}\n\n\temit('close', popupEvent);\n};\n\n// сужение объекта для propsPopup\nconst {\n\tsubmitText,\n\tcancelText,\n\tisWarning,\n\t...propsPopup\n}: Props<T> = props;\n</script>\n\n<template>\n\t<!-- @vue-generic {T} -->\n\t<TopPopup\n\t\tclass=\"top-popupConfirm\"\n\t\t:=propsPopup\n\t\t@open=\"$emit('open', $event)\"\n\t\t@close=\"onClose($event)\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\n\t\t\t<slot name=\"opener\"></slot>\n\t\t</template>\n\n\t\t<template #header v-if=\"$slots.header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\t\t</template>\n\n\t\t<template #footer>\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\n\t\t\t<TopButton color=\"theme\">\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\n\t\t\t</TopButton>\n\n\t\t\t<TopButton\n\t\t\t\t@click=\"onSubmit\"\n\t\t\t\t:color=\"isWarning ? 'red' : 'blue'\"\n\t\t\t>\n\t\t\t\t{{ submitText || $i18n.Common.Continue }}\n\t\t\t</TopButton>\n\t\t</template>\n\t</TopPopup>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport { ref, watch } from 'vue';\nimport type { PopupEvent } from '../popup/types';\nimport type { Emits, Props } from './types';\nimport TopButton from '@/components/forms/button/button.vue';\nimport TopPopup from '../popup/popup.vue';\nimport TopPopupWidgetInput from '../popup/widgetInput/widgetInput.vue';\n\nconst props = defineProps<Props<T>>();\n\nconst emit = defineEmits<Emits<T>>();\n\nconst reset = () => localValue.value = props.defaultValue ?? '';\n\nconst isSubmit = ref(false);\n\nconst localValue = ref();\nwatch(() => props.defaultValue, () => reset(), { immediate: true });\n\nconst onSubmit = () => {\n\tisSubmit.value = true;\n};\n\nconst onClose = (popupEvent: PopupEvent<T>) => {\n\tif (isSubmit.value) {\n\t\tisSubmit.value = false;\n\n\t\temit('submit', localValue.value);\n\n\t\treset();\n\n\t\treturn;\n\t}\n\n\treset();\n\n\temit('close', popupEvent);\n};\n\n// сужение объекта для propsPopup\nconst {\n\tsubmitText,\n\tcancelText,\n\tdefaultValue,\n\t...propsPopup\n}: Props<T> = props;\n</script>\n\n<template>\n\t<!-- @vue-generic {T} -->\n\t<TopPopup\n\t\tclass=\"top-popupPrompt\"\n\t\t:=propsPopup\n\t\t@open=\"$emit('open', $event)\"\n\t\t@close=\"onClose($event)\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\n\t\t\t<slot name=\"opener\"></slot>\n\t\t</template>\n\n\t\t<template #header v-if=\"$slots.header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\n\t\t\t<TopPopupWidgetInput v-model.trim=\"localValue\"/>\n\t\t</template>\n\n\t\t<template #footer>\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\n\t\t\t<TopButton color=\"theme\">\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\n\t\t\t</TopButton>\n\n\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t{{ submitText || $i18n.Common.OK }}\n\t\t\t</TopButton>\n\t\t</template>\n\t</TopPopup>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport TopPopup from '@/components/popup/popup/popup.vue';\nimport TopHint from '@/components/forms/hint/hint.vue';\nimport type { Props } from './types';\n\nconst props = defineProps<Props<T>>();\n\nconst {\n\thint,\n\t...propsPopup\n}: Props<T> = props;\n</script>\n\n<template>\n\t<!-- @vue-generic {T} -->\n\t<TopPopup\n\t\tclass=\"top-popupHint\"\n\t\t:=propsPopup\n\t\t@open=\"$emit('open', $event)\"\n\t\t@close=\"$emit('close', $event)\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- Элемент для открытия Popup -->\n\t\t\t<TopHint\n\t\t\t\t:hint=\"hint\"\n\t\t\t\tclass=\"top-popupHint_opener\"\n\t\t\t\tv-top-tooltip\n\t\t\t/>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\t\t</template>\n\t</TopPopup>\n</template>\n\n<style>\n.top-popupHint_opener {\n\tcursor: pointer;\n}\n\n.top-popupHint_opener.top-active {\n\tcolor: var(--color-text-2);\n}\n</style>\n"],"names":["submitText","propsPopup","props","vue","listItem_vue_vue_type_script_setup_true_lang","_ctx","forms","isSubmit","onClose","popupEvent","emit","cancelText","isWarning","_cache","$event","reset","localValue","defaultValue","hint"],"mappings":"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"}
1
+ {"version":3,"file":"popup.amd.js","sources":["../../src/components/popup/popupAlert/popupAlert.vue","../../src/components/popup/popupConfirm/popupConfirm.vue","../../src/components/popup/popupPrompt/popupPrompt.vue","../../src/components/popup/popupHint/popupHint.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport type { Emits, Props } from './types';\nimport TopButton from '@/components/forms/button/button.vue';\nimport TopPopup from '@/components/popup/popup/popup.vue';\n\nconst props = defineProps<Props<T>>();\n\ndefineEmits<Emits<T>>();\n\n// сужение объекта для propsPopup\nconst {\n\tsubmitText,\n\t...propsPopup\n}: Props<T> = props;\n</script>\n\n<template>\n\t<!-- @vue-generic {T} -->\n\t<TopPopup\n\t\tclass=\"top-popupAlert\"\n\t\t:=propsPopup\n\t\t@open=\"$emit('open', $event)\"\n\t\t@close=\"$emit('close', $event)\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- @slot Элемент для открытия Popup -->\n\t\t\t<slot name=\"opener\"></slot>\n\t\t</template>\n\n\t\t<template #header v-if=\"$slots.header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\t\t</template>\n\n\t\t<template #footer>\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\n\t\t\t<TopButton>\n\t\t\t\t{{ submitText || $i18n.Common.Close }}\n\t\t\t</TopButton>\n\t\t</template>\n\t</TopPopup>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport { ref } from 'vue';\nimport type { PopupEvent } from '@/components/popup/popup/types';\nimport type { Emits, Props } from './types';\nimport TopButton from '@/components/forms/button/button.vue';\nimport TopPopup from '@/components/popup/popup/popup.vue';\n\nconst props = defineProps<Props<T>>();\n\nconst emit = defineEmits<Emits<T>>();\n\nconst isSubmit = ref(false);\n\nconst onSubmit = () => {\n\tisSubmit.value = true;\n\n\temit('submit');\n};\n\nconst onClose = (popupEvent: PopupEvent<T>) => {\n\tif (isSubmit.value) {\n\t\tisSubmit.value = false;\n\n\t\treturn;\n\t}\n\n\temit('close', popupEvent);\n};\n\n// сужение объекта для propsPopup\nconst {\n\tsubmitText,\n\tcancelText,\n\tisWarning,\n\t...propsPopup\n}: Props<T> = props;\n</script>\n\n<template>\n\t<!-- @vue-generic {T} -->\n\t<TopPopup\n\t\tclass=\"top-popupConfirm\"\n\t\t:=propsPopup\n\t\t@open=\"$emit('open', $event)\"\n\t\t@close=\"onClose($event)\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\n\t\t\t<slot name=\"opener\"></slot>\n\t\t</template>\n\n\t\t<template #header v-if=\"$slots.header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\t\t</template>\n\n\t\t<template #footer>\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\n\t\t\t<TopButton color=\"theme\">\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\n\t\t\t</TopButton>\n\n\t\t\t<TopButton\n\t\t\t\t@click=\"onSubmit\"\n\t\t\t\t:color=\"isWarning ? 'red' : 'blue'\"\n\t\t\t>\n\t\t\t\t{{ submitText || $i18n.Common.Continue }}\n\t\t\t</TopButton>\n\t\t</template>\n\t</TopPopup>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport { ref, watch } from 'vue';\nimport type { PopupEvent } from '../popup/types';\nimport type { Emits, Props } from './types';\nimport TopButton from '@/components/forms/button/button.vue';\nimport TopPopup from '../popup/popup.vue';\nimport TopPopupWidgetInput from '../popup/widgetInput/widgetInput.vue';\n\nconst props = defineProps<Props<T>>();\n\nconst emit = defineEmits<Emits<T>>();\n\nconst reset = () => localValue.value = props.defaultValue ?? '';\n\nconst isSubmit = ref(false);\n\nconst localValue = ref();\nwatch(() => props.defaultValue, () => reset(), { immediate: true });\n\nconst onSubmit = () => {\n\tisSubmit.value = true;\n};\n\nconst onClose = (popupEvent: PopupEvent<T>) => {\n\tif (isSubmit.value) {\n\t\tisSubmit.value = false;\n\n\t\temit('submit', localValue.value);\n\n\t\treset();\n\n\t\treturn;\n\t}\n\n\treset();\n\n\temit('close', popupEvent);\n};\n\n// сужение объекта для propsPopup\nconst {\n\tsubmitText,\n\tcancelText,\n\tdefaultValue,\n\t...propsPopup\n}: Props<T> = props;\n</script>\n\n<template>\n\t<!-- @vue-generic {T} -->\n\t<TopPopup\n\t\tclass=\"top-popupPrompt\"\n\t\t:=propsPopup\n\t\t@open=\"$emit('open', $event)\"\n\t\t@close=\"onClose($event)\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\n\t\t\t<slot name=\"opener\"></slot>\n\t\t</template>\n\n\t\t<template #header v-if=\"$slots.header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\n\t\t\t<TopPopupWidgetInput v-model.trim=\"localValue\"/>\n\t\t</template>\n\n\t\t<template #footer>\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\n\t\t\t<TopButton color=\"theme\">\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\n\t\t\t</TopButton>\n\n\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t{{ submitText || $i18n.Common.OK }}\n\t\t\t</TopButton>\n\t\t</template>\n\t</TopPopup>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport TopPopup from '@/components/popup/popup/popup.vue';\nimport TopHint from '@/components/forms/hint/hint.vue';\nimport type { Props } from './types';\n\nconst props = defineProps<Props<T>>();\n\nconst {\n\thint,\n\t...propsPopup\n}: Props<T> = props;\n</script>\n\n<template>\n\t<!-- @vue-generic {T} -->\n\t<TopPopup\n\t\tclass=\"top-popupHint\"\n\t\t:=propsPopup\n\t\t@open=\"$emit('open', $event)\"\n\t\t@close=\"$emit('close', $event)\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- Элемент для открытия Popup -->\n\t\t\t<TopHint\n\t\t\t\t:hint=\"hint\"\n\t\t\t\tclass=\"top-popupHint_opener\"\n\t\t\t\tv-top-tooltip\n\t\t\t/>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\t\t</template>\n\t</TopPopup>\n</template>\n\n<style>\n.top-popupHint_opener {\n\tcursor: pointer;\n}\n\n.top-popupHint_opener.top-active {\n\tcolor: var(--color-text-2);\n}\n</style>\n"],"names":["submitText","propsPopup","props","vue","listItem_vue_vue_type_script_setup_true_lang","_ctx","forms","isSubmit","onClose","popupEvent","emit","cancelText","isWarning","_cache","$event","reset","localValue","defaultValue","hint"],"mappings":"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"}