@topvisor/ui 0.9.34-utils-components-7 → 0.9.35-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/.chunks/{datepicker-CIbLjf_3.amd.js → datepicker-BG0u8UXv.amd.js} +8 -7
  2. package/.chunks/datepicker-BG0u8UXv.amd.js.map +1 -0
  3. package/.chunks/{datepicker-Bh_DAFqD.es.js → datepicker-Dmeojg66.es.js} +30 -28
  4. package/.chunks/datepicker-Dmeojg66.es.js.map +1 -0
  5. package/.chunks/{forms-BfIXIMY_.es.js → forms-CPEVHoks.es.js} +303 -320
  6. package/.chunks/forms-CPEVHoks.es.js.map +1 -0
  7. package/.chunks/forms-oowSA2rF.amd.js +3 -0
  8. package/.chunks/forms-oowSA2rF.amd.js.map +1 -0
  9. package/.chunks/i18n-eDh3Aaw9.amd.js +2 -0
  10. package/.chunks/i18n-eDh3Aaw9.amd.js.map +1 -0
  11. package/.chunks/i18n-qpB8zyhD.es.js +20 -0
  12. package/.chunks/i18n-qpB8zyhD.es.js.map +1 -0
  13. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CaBP5R7L.amd.js → listItem.vue_vue_type_script_setup_true_lang-CkZHzNZU.amd.js} +2 -2
  14. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CkZHzNZU.amd.js.map +1 -0
  15. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DJZS6vRL.es.js → listItem.vue_vue_type_script_setup_true_lang-Dlm9Et7q.es.js} +2 -2
  16. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-Dlm9Et7q.es.js.map +1 -0
  17. package/.chunks/{menu-24EpQtdy.es.js → menu-CiQMMrnp.es.js} +2 -2
  18. package/.chunks/{menu-24EpQtdy.es.js.map → menu-CiQMMrnp.es.js.map} +1 -1
  19. package/.chunks/{menu-DV1iSTyB.amd.js → menu-SmyeSNWQ.amd.js} +2 -2
  20. package/.chunks/{menu-DV1iSTyB.amd.js.map → menu-SmyeSNWQ.amd.js.map} +1 -1
  21. package/.chunks/{popup-DokMLyGf.es.js → popup-Bv_sxmoj.es.js} +55 -53
  22. package/.chunks/popup-Bv_sxmoj.es.js.map +1 -0
  23. package/.chunks/popup-ClvUyl7S.amd.js +441 -0
  24. package/.chunks/popup-ClvUyl7S.amd.js.map +1 -0
  25. package/.chunks/{store-PoMCiuBr.es.js → store-CX_6ZXhO.es.js} +12 -12
  26. package/.chunks/store-CX_6ZXhO.es.js.map +1 -0
  27. package/.chunks/store-esTid5oI.amd.js +2 -0
  28. package/.chunks/store-esTid5oI.amd.js.map +1 -0
  29. package/assets/forms.css +1 -1
  30. package/components/forms/forms.d.ts +0 -5
  31. package/components/forms/inputDate/inputDate.d.ts +1 -1
  32. package/components/popup/lib/popup.d.ts +19 -11
  33. package/components/popup/lib/worker.d.ts +15 -12
  34. package/components/project/selectorCompetitors/composables.d.ts +1 -2
  35. package/components/project/selectorCompetitors/selectorCompetitors.d.ts +3 -1
  36. package/components/tabsView/tabsView/tabsView.d.ts +1 -1
  37. package/core/app.amd.js +1 -1
  38. package/core/app.amd.js.map +1 -1
  39. package/core/app.js +128 -131
  40. package/core/app.js.map +1 -1
  41. package/core/core/core.d.ts +5 -20
  42. package/core/core/events.d.ts +2 -2
  43. package/core/core/state.d.ts +2 -3
  44. package/core/core.amd.js +1 -1
  45. package/core/core.js +1 -1
  46. package/core/directives/swimUp.d.ts +8 -2
  47. package/core/plugins/core.d.ts +5 -4
  48. package/core/plugins/i18n.d.ts +1 -1
  49. package/core/plugins/piniaTPA.d.ts +7 -7
  50. package/core/utils/check.d.ts +4 -0
  51. package/core/utils/clipboard.d.ts +9 -0
  52. package/core/utils/css.d.ts +39 -2
  53. package/core/utils/date.d.ts +4 -0
  54. package/core/utils/device.d.ts +4 -0
  55. package/core/utils/dom.d.ts +13 -13
  56. package/core/utils/image.d.ts +4 -0
  57. package/core/utils/keyboard.d.ts +5 -1
  58. package/core/utils/number.d.ts +4 -0
  59. package/core/utils/price.d.ts +2 -1
  60. package/core/utils/route.d.ts +7 -0
  61. package/core/utils/scroll.d.ts +4 -0
  62. package/core/utils/store/plugin.d.ts +18 -4
  63. package/core/utils/store/store.d.ts +1 -1
  64. package/core/utils/store.d.ts +4 -0
  65. package/core/utils/string.d.ts +8 -2
  66. package/core/utils/system.d.ts +4 -0
  67. package/core/utils/url.d.ts +6 -2
  68. package/forms/forms.amd.js +1 -1
  69. package/forms/forms.js +5 -5
  70. package/formsExt/formsExt.amd.js +1 -1
  71. package/formsExt/formsExt.amd.js.map +1 -1
  72. package/formsExt/formsExt.js +3 -3
  73. package/formsExt/formsExt.js.map +1 -1
  74. package/package.json +8 -7
  75. package/popup/popup.amd.js +1 -1
  76. package/popup/popup.js +8 -8
  77. package/popup/worker.amd.js +1 -1
  78. package/popup/worker.amd.js.map +1 -1
  79. package/popup/worker.js +9 -6
  80. package/popup/worker.js.map +1 -1
  81. package/project/project.amd.js +1 -1
  82. package/project/project.js +3 -3
  83. package/tabs/tabs.amd.js +1 -1
  84. package/tabs/tabs.js +1 -1
  85. package/tabsView/tabsView.amd.js +1 -1
  86. package/tabsView/tabsView.amd.js.map +1 -1
  87. package/tabsView/tabsView.js +2 -2
  88. package/tabsView/tabsView.js.map +1 -1
  89. package/utils/check.amd.js.map +1 -1
  90. package/utils/check.js.map +1 -1
  91. package/utils/clipboard.amd.js.map +1 -1
  92. package/utils/clipboard.js.map +1 -1
  93. package/utils/css.amd.js +1 -1
  94. package/utils/css.amd.js.map +1 -1
  95. package/utils/css.js +36 -29
  96. package/utils/css.js.map +1 -1
  97. package/utils/date.amd.js +1 -1
  98. package/utils/date.js +2 -2
  99. package/utils/device.amd.js +1 -1
  100. package/utils/device.js +1 -1
  101. package/utils/dom.amd.js +1 -1
  102. package/utils/dom.amd.js.map +1 -1
  103. package/utils/dom.js +12 -1
  104. package/utils/dom.js.map +1 -1
  105. package/utils/image.amd.js +11 -1
  106. package/utils/image.amd.js.map +1 -1
  107. package/utils/image.js +11 -1
  108. package/utils/image.js.map +1 -1
  109. package/utils/keyboard.amd.js +1 -1
  110. package/utils/keyboard.amd.js.map +1 -1
  111. package/utils/keyboard.js +7 -7
  112. package/utils/keyboard.js.map +1 -1
  113. package/utils/number.amd.js.map +1 -1
  114. package/utils/number.js.map +1 -1
  115. package/utils/price.amd.js +1 -1
  116. package/utils/price.amd.js.map +1 -1
  117. package/utils/price.js +7 -9
  118. package/utils/price.js.map +1 -1
  119. package/utils/route.amd.js +1 -1
  120. package/utils/route.amd.js.map +1 -1
  121. package/utils/route.js +15 -15
  122. package/utils/route.js.map +1 -1
  123. package/utils/scroll.amd.js +1 -1
  124. package/utils/scroll.amd.js.map +1 -1
  125. package/utils/scroll.js +8 -9
  126. package/utils/scroll.js.map +1 -1
  127. package/utils/store.amd.js +1 -1
  128. package/utils/store.js +1 -1
  129. package/utils/string.amd.js +1 -1
  130. package/utils/string.amd.js.map +1 -1
  131. package/utils/string.js +28 -31
  132. package/utils/string.js.map +1 -1
  133. package/utils/system.amd.js.map +1 -1
  134. package/utils/system.js.map +1 -1
  135. package/utils/url.amd.js.map +1 -1
  136. package/utils/url.js.map +1 -1
  137. package/web-types.json +72 -62
  138. package/.chunks/datepicker-Bh_DAFqD.es.js.map +0 -1
  139. package/.chunks/datepicker-CIbLjf_3.amd.js.map +0 -1
  140. package/.chunks/forms-BfIXIMY_.es.js.map +0 -1
  141. package/.chunks/forms-C__H1yL_.amd.js +0 -3
  142. package/.chunks/forms-C__H1yL_.amd.js.map +0 -1
  143. package/.chunks/i18n-Cmnd329V.es.js +0 -23
  144. package/.chunks/i18n-Cmnd329V.es.js.map +0 -1
  145. package/.chunks/i18n-NZvMjWv9.amd.js +0 -2
  146. package/.chunks/i18n-NZvMjWv9.amd.js.map +0 -1
  147. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CaBP5R7L.amd.js.map +0 -1
  148. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DJZS6vRL.es.js.map +0 -1
  149. package/.chunks/popup-B0KN_4e5.amd.js +0 -440
  150. package/.chunks/popup-B0KN_4e5.amd.js.map +0 -1
  151. package/.chunks/popup-DokMLyGf.es.js.map +0 -1
  152. package/.chunks/store-Bl79G7T_.amd.js +0 -2
  153. package/.chunks/store-Bl79G7T_.amd.js.map +0 -1
  154. package/.chunks/store-PoMCiuBr.es.js.map +0 -1
  155. package/core/utils/window.d.ts +0 -1
  156. package/utils/window.amd.js +0 -2
  157. package/utils/window.amd.js.map +0 -1
  158. package/utils/window.d.ts +0 -1
  159. package/utils/window.js +0 -5
  160. package/utils/window.js.map +0 -1
@@ -1,7 +1,5 @@
1
- import { default as defaultOptions } from './options';
2
-
3
1
  /**
4
- * Статический класс с текущим состоянимем приложения
2
+ * Статический класс с текущим состоянимем UI
5
3
  */
6
4
  export default class Core {
7
5
  /**
@@ -23,30 +21,17 @@ export default class Core {
23
21
  isLandscape: boolean;
24
22
  isPortrait: boolean;
25
23
  size: number;
26
- isHidden: boolean;
27
24
  };
28
25
  static widthForMobile: number;
29
26
  static matchMediaIsMobile?: MediaQueryList;
30
27
  static $: typeof $ | undefined;
31
- /**
32
- * Добавить на страницу стили, используется для загрузки стилей из js
33
- *
34
- * Условная загрузка стилей m и pc отключена в пользу производительсности, стили грузятся всегда, но применяются по условию
35
- * @param style - css стили в строке
36
- * @param type - если указать 'm' или 'pc', то стили будут применяться по условию в зависимости от настройки this.widthForMobile
37
- */
38
- static appendStyle(style: string, type?: '' | 'm' | 'pc'): void;
39
- /**
40
- * Установить конфигурацию UI
41
- */
42
- static setOptions(options: typeof defaultOptions): void;
43
- static setState(): void;
44
- static onResize(): void;
45
- static setStateByWindowSize(): void;
28
+ static _setState(): void;
29
+ private static onResize;
30
+ private static setStateByWindowSize;
46
31
  /**
47
32
  * Сохранить информацию об устройстве в cookie
48
33
  */
49
- static saveToCookie(): void;
34
+ private static saveToCookie;
50
35
  /**
51
36
  * Проверить скрыта страница или нет
52
37
  */
@@ -8,11 +8,11 @@ type TopEvent = Event & {
8
8
  * Добавить обработчик на событие изменения размеров экрана
9
9
  * вызов таких обработчиков будет опмизирован и объединен в одно событие
10
10
  */
11
- declare function addOnReize(listener: (this: Element, ev: TopEvent) => any): void;
11
+ declare function addOnReize(listener: (this: HTMLElement, ev: TopEvent) => any): void;
12
12
  /**
13
13
  * Удаление обработчика на событие изменений размеров экрана
14
14
  */
15
- declare function removeOnResize(listener: (this: Element, ev: TopEvent) => any): void;
15
+ declare function removeOnResize(listener: (this: HTMLElement, ev: TopEvent) => any): void;
16
16
  declare const _default: {
17
17
  addOnReize: typeof addOnReize;
18
18
  removeOnResize: typeof removeOnResize;
@@ -30,10 +30,9 @@ declare const state: {
30
30
  * true при вертикальном расположении устройства
31
31
  */
32
32
  isPortrait: boolean;
33
- size: number;
34
33
  /**
35
- * true, если страница скрыта
34
+ * Максимальная сторона страницы
36
35
  */
37
- isHidden: boolean;
36
+ size: number;
38
37
  };
39
38
  export default state;
package/core/core.amd.js CHANGED
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-C__H1yL_.amd"],function(i,e,u,r){"use strict";if(typeof u>"u")var u=window.Vue;e.default=r.Core,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ define(["require","exports","vue","../.chunks/forms-oowSA2rF.amd"],function(i,e,u,r){"use strict";if(typeof u>"u")var u=window.Vue;e.default=r.Core,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
2
2
  //# sourceMappingURL=core.amd.js.map
package/core/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "vue";
2
- import { C as a } from "../.chunks/forms-BfIXIMY_.es.js";
2
+ import { C as a } from "../.chunks/forms-CPEVHoks.es.js";
3
3
  export {
4
4
  a as default
5
5
  };
@@ -1,10 +1,16 @@
1
1
  import { DirectiveBinding, VNode } from 'vue';
2
2
 
3
+ interface HTMLElementWithSwimUpOptions extends HTMLElement {
4
+ directiveSwipUpOptions: {
5
+ distance: number;
6
+ percent: number;
7
+ };
8
+ }
3
9
  /**
4
10
  * Добавление анимации подплытия вверх для блока
5
11
  */
6
12
  declare const swimUp: {
7
- mounted(el: HTMLElement, binding: DirectiveBinding, _vnode: VNode): void;
8
- unmounted(el: HTMLElement, _binding: DirectiveBinding, _vnode: VNode): void;
13
+ mounted(el: HTMLElementWithSwimUpOptions, binding: DirectiveBinding, _vnode: VNode): void;
14
+ unmounted(el: HTMLElementWithSwimUpOptions, _binding: DirectiveBinding, _vnode: VNode): void;
9
15
  };
10
16
  export default swimUp;
@@ -5,9 +5,10 @@ import { App } from 'vue';
5
5
  import * as Forms from '../../components/forms/forms';
6
6
  declare module 'vue' {
7
7
  interface ComponentCustomProperties {
8
- $top: {
9
- Core: typeof Core;
10
- };
8
+ /**
9
+ * Статический класс с текущим состоянимем UI
10
+ */
11
+ $core: typeof Core;
11
12
  }
12
13
  /**
13
14
  * Обязательные компоненты UI
@@ -35,7 +36,7 @@ type Options = PartialBy<typeof coreDefaultOptions, 'gmt'>;
35
36
  /**
36
37
  * Плагин для интеграции UI во Vue приложение
37
38
  *
38
- * - В глобальную область видимости шаблонов будет добавлен объект $top
39
+ * - В глобальную область видимости шаблонов будет добавлен объект $core
39
40
  * - Будут зарегистрирвоаны директивы UI: https://ui.topvisor.com/?path=/docs/core-directives-focus--docs
40
41
  * - Будут подключены базовые компоненты UI/Forms: https://ui.topvisor.com/?path=/docs/components-forms-readme--docs
41
42
  */
@@ -87,7 +87,7 @@ export default _default;
87
87
  *
88
88
  * @see I18n
89
89
  */
90
- export declare const useI18n: () => I18n;
90
+ export declare const useI18n: () => any;
91
91
  /**
92
92
  * Текущий язык
93
93
  */
@@ -3,16 +3,16 @@ import { PiniaPluginContext } from 'pinia';
3
3
  /**
4
4
  * Плагин tpa (Third-party access) для pinia
5
5
  *
6
- * Добавляет возможсноть сохранять и загружать данные в/из:
6
+ * Добавляет возможность сохранять и загружать данные в/из:
7
+ * - URL hash в адресе страницы
7
8
  * - localStorage
8
- * - URL hash
9
9
  * - гостевая ссылка
10
10
  *
11
- * Для подключение плагина нужно указань одну или несколько опций при defineStore():
12
- * - tpaNamesUrlHash: Array
13
- * - tpaNamesStorage: Array
14
- * - tpaNamesStorageLocal: Array
15
- * - tpaNamesGuestLink: Array
11
+ * Для подключения плагина нужно указань одну или несколько опций при определении defineStore():
12
+ * - tpaNamesUrlHash
13
+ * - tpaNamesStorage
14
+ * - tpaNamesStorageLocal
15
+ * - tpaNamesGuestLink
16
16
  */
17
17
  declare const _default: (contextPinia: PiniaPluginContext) => void;
18
18
  export default _default;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Функции для проверки данных
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Получить строку с регулярным выражение для домена
3
7
  */
@@ -1 +1,10 @@
1
+ /**
2
+ * Работа с буфером обмена
3
+ * @packageDocumentation
4
+ */
5
+ /**
6
+ * Скопировать текст в буфер омбена
7
+ *
8
+ * Формат: text/plain
9
+ */
1
10
  export declare function setClipboard(text: any): Promise<void>;
@@ -1,6 +1,43 @@
1
1
  /**
2
- * Вставить css стили на страницу с автоматическим определением media
2
+ * Упраление загрузками стилей
3
+ * @packageDocumentation
4
+ */
5
+ /**
6
+ * Вставить css стили на страницу по ссылке с автоматическим добавлением правил media
7
+ *
8
+ * Правила media:
9
+ * - Файлы *.m.css будут грузиться, только на экранах с шириной менее, чем Core.widthForMobile
10
+ * - Файлы *.pc.css будут грузиться, только на экранах с шириной более, чем Core.widthForMobile
11
+ *
12
+ * Настройкой Core.widthForMobile можно управлять через plugin: @topvisor/ui/plugin/core
13
+ *
3
14
  * @param fileNames - список ссылок на css файлы
4
- * @param useSync - использовать синхронную загрузку css, только для css с того же домена, имеет смысл для замены top-level await
15
+ * @param useSync - использовать синхронную загрузку css, только для css с того же домена. В синхронном режиме стили предзагружаются независимо от
16
+ * media
5
17
  */
6
18
  export declare const insertToPage: (fileNames: Array<string>, useSync?: boolean) => Promise<unknown[]>;
19
+ /**
20
+ * Вставить css стили на страницу с автоматическим добавлением правил media
21
+ *
22
+ * Загрузка с Vite:
23
+ *
24
+ * ```js
25
+ * import style from '/style.css?raw';
26
+ *
27
+ * insertToPageAsInine(style);
28
+ * ```
29
+ *
30
+ * Загрузка с fetch:
31
+ *
32
+ * ```js
33
+ * const style = await fetch('./style.css');
34
+ *
35
+ * insertToPageAsInine(style);
36
+ * ```
37
+ *
38
+ * @param style - css стили в строке
39
+ * @param type - если указать 'm' или 'pc', то стили будут применяться по условию в зависимости от настройки this.widthForMobile
40
+ *
41
+ * @see insertToPage
42
+ */
43
+ export declare const insertToPageAsInine: (style: string, type?: "" | "m" | "pc") => void;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Работа с датами
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Получить день недели
3
7
  */
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Получение информации об устройстве
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Определить, увеличинная ли плотность пикселей у экрана (DPR > 1)
3
7
  */
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Функции для работы с Document Object Model (DOM)
2
+ * Работа с Document Object Model (DOM)
3
+ * @packageDocumentation
3
4
  */
4
5
  /**
5
6
  * Создать элемент
@@ -8,19 +9,19 @@
8
9
  * @param elsChildrens
9
10
  * @returns - созданный элемент
10
11
  */
11
- declare function genEl(tagName: string, attrs: any, ...elsChildrens: Element[] | string[]): Element;
12
+ export declare function genEl(tagName: string, attrs: any, ...elsChildrens: HTMLElement[] | string[]): HTMLElement;
12
13
  /**
13
14
  * Проверить видимость элемента
14
15
  * @param el
15
16
  * @returns - вернет true, если элемент считается видимым
16
17
  */
17
- declare function isVisible(el?: Element): boolean;
18
+ export declare function isVisible(el?: HTMLElement): boolean;
18
19
  /**
19
20
  * Получить координаты элемента относительно документа
20
21
  * @param el
21
22
  * @returns - координаты элемента относительно документа
22
23
  */
23
- declare function offset(el: Element): {
24
+ export declare function offset(el: HTMLElement): {
24
25
  top: number;
25
26
  left: number;
26
27
  };
@@ -30,38 +31,37 @@ declare function offset(el: Element): {
30
31
  * @param property - имя свойства
31
32
  * @return - значение css стиля
32
33
  */
33
- declare function css(el: Element, property: string): string;
34
+ export declare function css(el: HTMLElement, property: string): string;
34
35
  /**
35
36
  * Обернуть элемент и вернуть только что созданный элемент
36
37
  * @param el - элемент, который требуется обернуть
37
38
  * @param tagName - имя тега элемента, в который треубется обернуть элемент
38
39
  */
39
- declare function wrap(el: Element, tagName: string): Element;
40
+ export declare function wrap(el: HTMLElement, tagName: string): HTMLElement;
40
41
  /**
41
42
  * Найти и вернуть первый видимый элемент
42
43
  * @param el - корневой элемент поиска
43
44
  * @param selectors - см. параметр selectors в Document.querySelectorAll()
44
45
  */
45
- declare function querySelectorVisible(el: Element, selectors: string): Element | null;
46
+ export declare function querySelectorVisible(el: HTMLElement, selectors: string): HTMLElement | null;
46
47
  /**
47
48
  * Найти и вернуть последний видимый элемент
48
49
  * @param el - корневой элемент поиска
49
50
  * @param selectors - см. параметр selectors в Document.querySelectorAll()
50
51
  */
51
- declare function querySelectorVisibleLast(el: Element, selectors: string): Element | null;
52
+ export declare function querySelectorVisibleLast(el: HTMLElement, selectors: string): HTMLElement | null;
52
53
  /**
53
54
  * Найти видимые элементы
54
55
  * @param el - корневой элемент поиска
55
56
  * @param selectors - см. параметр selectors в Document.querySelectorAll()
56
- * @returns - обратите внимание, возвращается не NodeList[], а Element[]
57
57
  */
58
- declare function querySelectorAllVisible(el: Element | Document, selectors: string): Element[];
58
+ export declare function querySelectorAllVisible(el: HTMLElement | Document, selectors: string): HTMLElement[];
59
59
  /**
60
60
  * Найти элементы и вернуть в виде массива
61
61
  * @param el - корневой элемент поиска
62
62
  * @param selectors - см. параметр selectors в Document.querySelectorAll()
63
63
  */
64
- declare function querySelectorAllArray(el: Element | Document, selectors: string): Element[];
64
+ export declare function querySelectorAllArray(el: HTMLElement | Document, selectors: string): HTMLElement[];
65
65
  /**
66
66
  * Хранилище данных элемента
67
67
  * @param el
@@ -69,13 +69,13 @@ declare function querySelectorAllArray(el: Element | Document, selectors: string
69
69
  * @param contextData - установить объект с данными, предыдущие данные будут заменены, установите null для удаления данных
70
70
  * @returns - вернет объект контекста или undefined, если данные контекста не найдены
71
71
  */
72
- declare function storage(el?: Element & {
72
+ export declare function storage(el?: HTMLElement & {
73
73
  topData?: any;
74
74
  }, contextName?: string, contextData?: object | null | undefined): any | undefined;
75
75
  /**
76
76
  * Очистить хранилище элемента
77
77
  */
78
- declare function storageClear(el?: Element & {
78
+ export declare function storageClear(el?: HTMLElement & {
79
79
  topData?: any;
80
80
  }): void;
81
81
  declare const _default: {
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Работа с изображениями
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Скачать изображение, переданное в виде строки
3
7
  * @param imageStr - адресс картинки
@@ -1,4 +1,8 @@
1
+ /**
2
+ * Утилиты для работы с устройствами ввода
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Перевод строки в другую раскладку
3
7
  */
4
- export declare function invertKeyboardLayout(string: string): string;
8
+ export declare const invertKeyboardLayout: (string: string) => string;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Работа с числами
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Посчитать процент от числа (сколько процентов составляет part от full)
3
7
  * @param part - первое число
@@ -1,4 +1,5 @@
1
- import { Lang, Core } from '../app';
1
+ import { Lang } from '../plugins/i18n';
2
+ import { default as Core } from '../core/core';
2
3
 
3
4
  /**
4
5
  * Сгенерировать строку с суммой и валютой
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Управление навигацией страницы, работа с hash параметрами страницы
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Получить значение хэш параметра страницы
3
7
  */
@@ -20,7 +24,10 @@ export declare const genHash: (name: string, value: string | null, locationHash?
20
24
  export declare const setHashs: (data: Map<string, string> | object | any, replaceState: boolean) => void;
21
25
  /**
22
26
  * Установть позицию в истории вкладки браузера
27
+ *
23
28
  * @see history.replaceState
24
29
  * @see history.pushState
30
+ *
31
+ * @todo Мешает SPA сайта, требуется сделать центролизированное управление
25
32
  */
26
33
  export declare const historySetState: (replace: boolean | undefined, hash: string) => void;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Информация о скролле, фичи для скролла
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Добавление модификатора тени при скролле
3
7
  */
@@ -1,11 +1,25 @@
1
1
  import { Store } from './store';
2
2
  import { App } from 'vue';
3
3
 
4
- declare const plugin: {
5
- install: (app: App<any>, onInit: Function) => void;
4
+ type Options = {
5
+ onInit: (context: Context) => void;
6
6
  };
7
+ type Context = {
8
+ store: Store;
9
+ options: object;
10
+ };
11
+ /**
12
+ * Плагин tpa (Third-party access) для pinia
13
+ *
14
+ * Сейчас не используется
15
+ *
16
+ * TODO: Должен реализовывать возмоэности piniaTPAPlugin
17
+ */
18
+ declare const _default: {
19
+ install: (app: App<any>, options: Options) => void;
20
+ };
21
+ export default _default;
7
22
  /**
8
- * Применить плагины к Store
23
+ * Применить плагины к store
9
24
  */
10
25
  export declare const usePlugins: (store: Store, options?: object) => void;
11
- export default plugin;
@@ -6,7 +6,7 @@ import { InjectionKey, UnwrapNestedRefs } from 'vue';
6
6
  * Следует определять на уровне корневого компонента, использующего Store
7
7
  * @param injectionKey - InjectionKey для provide / inject в области компонента
8
8
  * @param setup - Нстройки Store, см. https://pinia.vuejs.org/core-concepts/#Setup-Stores
9
- * @param $id - строковой id Store, используются в плагинах
9
+ * @param $id - строковой id Store, используется в плагинах
10
10
  * @param options - настройки Store, используются в плагинах
11
11
  */
12
12
  export declare const defineStore: <T extends object>(injectionKey: InjectionKey<UnwrapNestedRefs<T>>, setup: () => T | object, $id?: string, options?: object) => UnwrapNestedRefs<T> & Store;
@@ -1,2 +1,6 @@
1
+ /**
2
+ * Локальное храналище компонента, альтернатива глобальному Pinia
3
+ * @packageDocumentation
4
+ */
1
5
  export { defineStore, useStore } from './store/store';
2
6
  export { default as plugin } from './store/store';
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Работа со строками
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Сгенерировать числовой хэш от строки для идентификатора
3
7
  */
@@ -47,7 +51,7 @@ export declare const toRoditPadej: (str: string) => string;
47
51
  */
48
52
  export declare const rusToLatin: (str: string) => string;
49
53
  /**
50
- * Замена html-символов (&, <, >, ", ') на имена литер (& -> \&amp;)
54
+ * Замена html-символов (`&`, `<`, `>`, `"`, `'`) на имена литер (`&` -> `&amp;`)
51
55
  */
52
56
  export declare const htmlspecialchars: (str: string) => string;
53
57
  /**
@@ -67,7 +71,9 @@ export declare const camelToSnakeCase: (str: string) => string | undefined;
67
71
  */
68
72
  export declare const genFlagLinkByCountryCode: (countryCode: string) => string;
69
73
  /**
70
- * Обернуть все ссылки и email в тексте в html-тег <a>. Для email ставиться префикс mailto:
74
+ * Обернуть все ссылки и email в тексте в html-тег `<a>`.
75
+ *
76
+ * Для email ставиться префикс `mailto:`
71
77
  */
72
78
  export declare const addLinkTags: (text: string) => string;
73
79
  /**
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Системные утилиты
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Ждать, пока условие истинно
3
7
  *
@@ -1,13 +1,17 @@
1
+ /**
2
+ * Работа с урлами
3
+ * @packageDocumentation
4
+ */
1
5
  /**
2
6
  * Раскодировать все не ASCII символы в домене URL
3
7
  * @param url - домен в ASCII формате
4
- * @returns домен в Unicode формате
8
+ * @return домен в Unicode формате
5
9
  */
6
10
  export declare const fromPuny: (url?: string) => string;
7
11
  /**
8
12
  * Закодировать все не ASCII символы в домене URL
9
13
  * @param url - домен в Unicode формате
10
- * @returns домен в ASCII формате
14
+ * @return домен в ASCII формате
11
15
  */
12
16
  export declare const toPuny: (url: string) => string;
13
17
  /**
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/forms-C__H1yL_.amd"],function(n,T,a){"use strict";if(typeof e>"u")var e=window.Vue;T.TopAvatar=a.TopAvatar,T.TopButton=a.TopButton$1,T.TopCheckbox=a.TopCheckbox,T.TopControlLabel=a.TopControlLabel,T.TopHint=a.TopHint,T.TopInput=a.TopInput$1,T.TopInputDate=a.TopInputDate,T.TopInputRange=a.TopInputRange,T.TopLoadbar=a.TopLoadbar,T.TopRadio=a.TopRadio,T.TopSelect=a.TopSelect,T.TopSwitcher=a.TopSwitcher,T.TopTextarea=a.TopTextarea,Object.defineProperty(T,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","../.chunks/forms-oowSA2rF.amd"],function(n,T,a){"use strict";if(typeof e>"u")var e=window.Vue;T.TopAvatar=a.TopAvatar,T.TopButton=a.TopButton$1,T.TopCheckbox=a.TopCheckbox,T.TopControlLabel=a.TopControlLabel,T.TopHint=a.TopHint,T.TopInput=a.TopInput$1,T.TopInputDate=a.TopInputDate,T.TopInputRange=a.TopInputRange,T.TopLoadbar=a.TopLoadbar,T.TopRadio=a.TopRadio,T.TopSelect=a.TopSelect,T.TopSwitcher=a.TopSwitcher,T.TopTextarea=a.TopTextarea,Object.defineProperty(T,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=forms.amd.js.map
package/forms/forms.js CHANGED
@@ -1,4 +1,4 @@
1
- import { c as p, e as T, f as s, g as t, h as e, j as n, k as r, l as c, m as l, n as u, o as b, p as h, q as i } from "../.chunks/forms-BfIXIMY_.es.js";
1
+ import { b as p, c as T, e as s, f as t, g as e, h as n, j as r, k as b, l as c, m as l, n as u, o as h, p as i } from "../.chunks/forms-CPEVHoks.es.js";
2
2
  export {
3
3
  p as TopAvatar,
4
4
  T as TopButton,
@@ -7,10 +7,10 @@ export {
7
7
  e as TopHint,
8
8
  n as TopInput,
9
9
  r as TopInputDate,
10
- c as TopInputRange,
11
- l as TopLoadbar,
12
- u as TopRadio,
13
- b as TopSelect,
10
+ b as TopInputRange,
11
+ c as TopLoadbar,
12
+ l as TopRadio,
13
+ u as TopSelect,
14
14
  h as TopSwitcher,
15
15
  i as TopTextarea
16
16
  };
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-C__H1yL_.amd","../utils/keyboard.amd","../popup/popup.amd","lodash","../.chunks/menu-DV1iSTyB.amd","../require/css.amd!../assets/formsExt.css"],function(se,b,e,h,M,w,E,$){"use strict";if(typeof e>"u")var e=window.Vue;const S={class:"top-editArea_footer"},I=e.defineComponent({__name:"editArea",props:{defaultValue:{default:""},title:{},cancelText:{default:"Cancel"},submitText:{default:"Send"},closeText:{default:"Close"},isFocused:{type:Boolean},forceShowCloseBtn:{type:Boolean},attachToKeyboard:{type:Boolean},modelValue:{},name:{},placeholder:{},rows:{},minHeight:{},expandable:{type:Boolean,default:!0},disabled:{type:Boolean},readonly:{type:Boolean},isError:{type:Boolean},hint:{}},emits:["submit","close","clickOnTitle"],setup(i,{emit:c}){const t=i,r=c,m=e.ref(t.defaultValue),f=e.ref(t.isFocused),s=e.computed(()=>m.value!==t.defaultValue),p=e.computed(()=>t.attachToKeyboard?"":t.forceShowCloseBtn&&!s.value?t.closeText:t.cancelText),u=d=>{r("submit",d),m.value=t.defaultValue},v=()=>{if(t.forceShowCloseBtn&&!s.value){r("close");return}m.value=t.defaultValue},B=()=>{t.attachToKeyboard&&r("clickOnTitle")};return(d,l)=>{const V=e.resolveDirective("top-focus");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-editArea":!0,"top-editArea-attachedToKeyboard":d.attachToKeyboard})},[d.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:"top-editArea_title",onClick:l[0]||(l[0]=y=>B())},e.toDisplayString(d.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass({"top-editArea_form":!0,"top-error":d.isError,"top-focus":f.value})},[e.withDirectives(e.createVNode(h.Textarea,{modelValue:m.value,"onUpdate:modelValue":l[1]||(l[1]=y=>m.value=y),name:d.name,placeholder:d.placeholder,rows:d.rows,minHeight:d.minHeight,expandable:d.expandable,disabled:d.disabled,readonly:d.readonly,isError:d.isError,hint:d.hint,class:"top-editArea_element",onFocus:l[2]||(l[2]=()=>f.value=!0),onBlur:l[3]||(l[3]=()=>f.value=!1),onKeyup:[e.withKeys(v,["esc"]),l[4]||(l[4]=e.withKeys(e.withModifiers(y=>u(m.value),["ctrl"]),["enter"]))]},null,8,["modelValue","name","placeholder","rows","minHeight","expandable","disabled","readonly","isError","hint"]),[[V,f.value]]),e.createElementVNode("div",S,[s.value||d.forceShowCloseBtn?(e.openBlock(),e.createBlock(h.TopButton,{key:0,class:"top-editArea_button",color:"theme",styling:"soft",icon:d.attachToKeyboard?"":"",onClick:v},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.value),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createBlock(h.TopButton,{key:1,class:"top-editArea_button",icon:d.attachToKeyboard?"":"",onClick:l[5]||(l[5]=y=>u(m.value))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.attachToKeyboard?"":d.submitText),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0)])],2)],2)}}}),N={$style:{"top-editArea":"top-editArea","top-editArea_title":"top-editArea_title","top-editArea_form":"top-editArea_form","top-focus":"top-focus","top-textarea":"top-textarea","top-editArea_element":"top-editArea_element","top-textarea_textarea":"top-textarea_textarea","top-editArea_footer":"top-editArea_footer","top-editArea-attachedToKeyboard":"top-editArea-attachedToKeyboard","top-button":"top-button","top-editArea_button":"top-editArea_button"}},K=h._export_sfc(I,[["__cssModules",N]]),L={class:"top-editInput"},P=e.defineComponent({__name:"editInput",props:{modelValue:{},input:{},button:{}},emits:["update:modelValue"],setup(i,{emit:c}){const t=i,r=e.ref(t.modelValue);e.watch(e.toRef(t.modelValue),()=>{r.value=t.modelValue});const m=c,f=()=>{m("update:modelValue",r.value)};return(s,p)=>(e.openBlock(),e.createElementBlock("div",L,[e.createVNode(h.TopInput,e.mergeProps(s.input,{onKeydownCapture:p[0]||(p[0]=e.withKeys(e.withModifiers(u=>r.value=s.modelValue,["stop"]),["esc"])),onKeydown:e.withKeys(e.withModifiers(f,["stop"]),["enter"]),modelValue:r.value,"onUpdate:modelValue":p[1]||(p[1]=u=>r.value=u)}),null,16,["onKeydown","modelValue"]),r.value!==s.modelValue?(e.openBlock(),e.createBlock(h.TopButton,e.mergeProps({key:0,icon:"",styling:"soft"},s.button,{onClick:f}),null,16)):e.createCommentVNode("",!0)]))}}),G={$style:{"top-editInput":"top-editInput","top-input":"top-input"}},D=h._export_sfc(P,[["__cssModules",G]]),O=["data-top-icon","onClick"],z={key:0,class:"top-radioGroup_circle"},F=["value","disabled"],H=e.defineComponent({__name:"radioGroup",props:e.mergeModels({modelValue:{},radiosProps:{},showIndicator:{type:Boolean},size:{default:"s"},isError:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["update:modelValue"],["update:modelValue"]),setup(i,{emit:c}){const t=e.useModel(i,"modelValue"),r=i,m=e.ref(null);e.watch(t,()=>{var s,p,u,v,B;(s=r.radiosProps)!=null&&s.some(d=>d.value===t.value)||(t.value=((u=(p=r.radiosProps)==null?void 0:p[0])==null?void 0:u.value)??""),(B=(v=m.value)==null?void 0:v.querySelector(".radioGroup_item-selected"))==null||B.scrollIntoView()},{immediate:!0});const f="radioGroup-"+Math.random();return(s,p)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:m,class:e.normalizeClass({"top-radioGroup":!0,"top-scrollBarXHidding":!0,["top-size_"+s.size]:!!s.size,"top-error":s.isError})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.radiosProps,u=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-radioGroup_item-selected":u.value===t.value,"top-radioGroup_item":!0,"top-forms-focusable":!0,"top-disabled":u.disabled}),"data-top-icon":u.icon,onClick:v=>t.value=u.value},[e.createTextVNode(e.toDisplayString(u.title)+" ",1),s.showIndicator?(e.openBlock(),e.createElementBlock("span",z)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[0]||(p[0]=v=>t.value=v),name:f,type:"radio",class:e.normalizeClass({"top-unvisible":!0}),value:u.value,disabled:u.disabled},null,8,F),[[e.vModelRadio,t.value]])],10,O))),256))],2))}}),x={$style:{"top-scrollBarXHidding":"top-scrollBarXHidding","top-radioGroup":"top-radioGroup","top-radioGroup_item":"top-radioGroup_item","top-radioGroup_item-selected":"top-radioGroup_item-selected","top-radioGroup_circle":"top-radioGroup_circle","top-disabled":"top-disabled","top-error":"top-error"}},U=h._export_sfc(H,[["__cssModules",x]]),W=(i,c,t)=>{const r=e.ref([]),m=e.ref(!1);let f="",s;i&&!i.params.limit&&(i.params.limit=100);const p=async()=>{if(!i)return;let l,V;if(t&&(i.cache??=new Map,V=JSON.stringify(i.params),l=i.cache.get(V),l))return l;if(m.value=!0,l=await i.call(),m.value=!1,l.errors)return;if(!Array.isArray(l.result)){console.warn("В result ожидался массив");return}const y=l.result.findIndex(A=>A.id===void 0||A.name===void 0);if(y!==-1){console.warn(`В result[${y}] нет id или name`);return}return t&&i.cache.set(V,l),l},u=async()=>{if(!i)return;i.params.offset=0,i.params.search=f;const l=await p();l&&(s=l.nextOffset,r.value=l.result)},v=async()=>{if(!i||!s||m.value)return;i.params.offset=s,i.params.search=f;const l=await p();l&&(s=l.nextOffset,r.value=r.value.concat(l.result))},B=E.debounce(()=>u(),200);return{items:r,isLoading:m,loadAppend:v,setSearchTextAndLoad:(l,V=!0)=>{i&&(l.length<c||l===f&&r.value.length||(f=l,V?B():u()))}}},J={class:"top-selector2_itemMulti top-ellipsis"},R=e.defineComponent({__name:"itemMulti",props:{id:{},name:{}},emits:["delete"],setup(i){return(c,t)=>(e.openBlock(),e.createElementBlock("div",J,[e.createTextVNode(e.toDisplayString(c.name)+" ",1),e.createElementVNode("span",{class:"top-selector2_itemMultiDelete","data-top-icon":"",onClick:t[0]||(t[0]=r=>c.$emit("delete",c.id)),onMousedown:t[1]||(t[1]=e.withModifiers(()=>{},["stop"]))},null,32)]))}}),X={$style:{"top-selector2_itemMulti":"top-selector2_itemMulti","top-selector2_itemMultiDelete":"top-selector2_itemMultiDelete","top-selector2":"top-selector2","top-active":"top-active"}},j=h._export_sfc(R,[["__cssModules",X]]),Y={key:0,class:"top-selector2_activeItems"},Q={key:1,class:"top-selector2_activeName top-ellipsis"},Z=e.defineComponent({__name:"selector2",props:e.mergeModels({modelValue:{},items:{default:()=>[]},multiselect:{type:Boolean},disabled:{type:Boolean},size:{default:"s"},isError:{type:Boolean},apiRequest:{},minLength:{default:0},useCache:{type:Boolean},appendSearchToResult:{type:Boolean},appendAllValue:{type:Boolean},addChanger:{type:Boolean},placeholder:{},showSelectedInInput:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(i){const c=i,t=e.useModel(i,"modelValue"),r=e.ref(""),m={id:0,name:"Все"},f=e.ref(null),s=()=>{var o;return(o=f.value)==null?void 0:o.popup};window.__STORYBOOK_PREVIEW__&&!c.modelValue&&e.watch(()=>c.multiselect,()=>{t.value=c.multiselect?[]:{id:null,name:""}},{immediate:!0});const p=W(c.apiRequest,c.minLength,c.useCache),u=e.computed(()=>{const o=[];return!c.multiselect&&c.appendAllValue&&o.push(m),c.items.forEach(n=>o.push({...n})),o}),v=(o,n=!0)=>n&&o.id===null?Array.isArray(t.value)?t.value.some(a=>a.id===o.id&&a.name===o.name):o.name===t.value.name:Array.isArray(t.value)?t.value.some(a=>a.id===o.id):o.id===t.value.id,B=e.computed(()=>{const o=r.value.toLowerCase(),n=M.invertKeyboardLayout(o);let a=[];return u.value.forEach(k=>{const g=k.name.toLowerCase();(k.id===Number(o)||g.includes(o)||g.includes(n))&&(g===o||g===n?a.unshift(k):a.push(k))}),a.push(...p.items.value),c.appendSearchToResult&&r.value&&(!a.length||a[0].name.toLowerCase()!==o)&&a.push({id:null,name:r.value}),c.multiselect&&(a=a.filter(k=>!v(k))),a}),d=async o=>{var n,a;if(c.multiselect){if(!Array.isArray(t.value)||v(o))return;const k=[...t.value];k.push({...o}),t.value=k,h.Core.state.isMobile?(n=s())==null||n.close():setTimeout(()=>{var g,C,T,_;(g=s())==null||g.recalcPosition(),(_=(T=(C=s())==null?void 0:C.elPopupWidget)==null?void 0:T.querySelector("input"))==null||_.focus(),r.value&&(B.value.length||(r.value="",p.items.value=[]))})}else r.value&&(r.value="",p.items.value=[]),JSON.stringify(o)!==JSON.stringify(t.value)&&(t.value={...o}),(a=s())==null||a.close()},l=()=>{if(!Array.isArray(t.value)){const n=(u.value.findIndex(a=>a.id===t.value.id)+1)%u.value.length;t.value={...u.value[n]}}},V=async o=>{Array.isArray(t.value)&&(t.value=t.value.filter(n=>n.id!==o),setTimeout(()=>{var n;(n=s())==null||n.recalcPosition()}))},y=e.ref(!1);c.apiRequest&&(e.watch(y,()=>{y.value&&p.setSearchTextAndLoad(r.value,!1)}),e.watch(r,()=>p.setSearchTextAndLoad(r.value)));const A=o=>{const n=o.target;n.scrollTop/(n.scrollHeight-n.offsetHeight)>.8&&p.loadAppend()};return(o,n)=>(e.openBlock(),e.createBlock(e.unref(w.TopPopup),{ref_key:"popupRef",ref:f,onOpen:n[1]||(n[1]=a=>y.value=!0),onClose:n[2]||(n[2]=a=>y.value=!1),onScrollContentList:n[3]||(n[3]=a=>o.apiRequest?A(a):void 0),notch:!1,transitionDuration:0},{opener:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass({"top-selector2":!0,"top-selector2-multiselect":o.multiselect,["top-size_"+o.size]:!0,"top-disabled":o.disabled,"top-forms-focusable":!o.disabled,"top-error":o.isError})},[o.multiselect?(e.openBlock(),e.createElementBlock("div",Y,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,a=>(e.openBlock(),e.createBlock(j,{id:a.id,name:a.name,onDelete:V},null,8,["id","name"]))),256))])):e.createCommentVNode("",!0),o.multiselect?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Q,e.toDisplayString(Array.isArray(t.value)?"":t.value.name),1)),o.addChanger&&!o.multiselect&&u.value.length>1&&!o.disabled?(e.openBlock(),e.createElementBlock("span",{key:2,class:"top-changer top-changer-selector",onClick:e.withModifiers(l,["stop"])})):e.createCommentVNode("",!0)],2)]),widget:e.withCtx(()=>[e.createVNode(e.unref(w.TopPopupWidgetInput),{title:"Поиск",icon:"",modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=a=>r.value=a),isLoading:e.unref(p).isLoading.value,placeholder:!Array.isArray(t.value)&&!o.multiselect&&o.showSelectedInInput?t.value.name:o.placeholder},null,8,["modelValue","isLoading","placeholder"])]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,a=>(e.openBlock(),e.createBlock(e.unref(w.TopPopupListItem),{class:e.normalizeClass({"top-active":!Array.isArray(t.value)&&!o.multiselect&&t.value.name===a.name}),key:a.id??void 0,onClick:e.withModifiers(k=>d(a),["stop"])},{default:e.withCtx(()=>[o.$slots.item?e.renderSlot(o.$slots,"item",{key:0,item:a}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(a.name),1)],64))]),_:2},1032,["class","onClick"]))),128)),B.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(w.TopPopupListItem),{key:0,type:"regular"},{default:e.withCtx(()=>[e.createTextVNode(" Нет результатов ")]),_:1}))]),_:3},512))}}),q={$style:{"top-selector2":"top-selector2","top-selector2-multiselect":"top-selector2-multiselect","top-active":"top-active","top-selector2_activeItems":"top-selector2_activeItems","top-selector2_activeName":"top-selector2_activeName","top-changer-selector":"top-changer-selector"}},ee=h._export_sfc(Z,[["__cssModules",q]]),te=K,oe=D,le=U,ae=ee,re=$.Menu;b.TopEditArea=te,b.TopEditInput=oe,b.TopMenu=re,b.TopRadioGroup=le,b.TopSelector2=ae,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","vue","../.chunks/forms-oowSA2rF.amd","../utils/keyboard.amd","../popup/popup.amd","lodash","../.chunks/menu-SmyeSNWQ.amd","../require/css.amd!../assets/formsExt.css"],function(se,b,e,h,M,w,E,$){"use strict";if(typeof e>"u")var e=window.Vue;const S={class:"top-editArea_footer"},I=e.defineComponent({__name:"editArea",props:{defaultValue:{default:""},title:{},cancelText:{default:"Cancel"},submitText:{default:"Send"},closeText:{default:"Close"},isFocused:{type:Boolean},forceShowCloseBtn:{type:Boolean},attachToKeyboard:{type:Boolean},modelValue:{},name:{},placeholder:{},rows:{},minHeight:{},expandable:{type:Boolean,default:!0},disabled:{type:Boolean},readonly:{type:Boolean},isError:{type:Boolean},hint:{}},emits:["submit","close","clickOnTitle"],setup(i,{emit:c}){const t=i,r=c,m=e.ref(t.defaultValue),f=e.ref(t.isFocused),s=e.computed(()=>m.value!==t.defaultValue),p=e.computed(()=>t.attachToKeyboard?"":t.forceShowCloseBtn&&!s.value?t.closeText:t.cancelText),u=d=>{r("submit",d),m.value=t.defaultValue},v=()=>{if(t.forceShowCloseBtn&&!s.value){r("close");return}m.value=t.defaultValue},B=()=>{t.attachToKeyboard&&r("clickOnTitle")};return(d,l)=>{const V=e.resolveDirective("top-focus");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-editArea":!0,"top-editArea-attachedToKeyboard":d.attachToKeyboard})},[d.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:"top-editArea_title",onClick:l[0]||(l[0]=y=>B())},e.toDisplayString(d.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass({"top-editArea_form":!0,"top-error":d.isError,"top-focus":f.value})},[e.withDirectives(e.createVNode(h.Textarea,{modelValue:m.value,"onUpdate:modelValue":l[1]||(l[1]=y=>m.value=y),name:d.name,placeholder:d.placeholder,rows:d.rows,minHeight:d.minHeight,expandable:d.expandable,disabled:d.disabled,readonly:d.readonly,isError:d.isError,hint:d.hint,class:"top-editArea_element",onFocus:l[2]||(l[2]=()=>f.value=!0),onBlur:l[3]||(l[3]=()=>f.value=!1),onKeyup:[e.withKeys(v,["esc"]),l[4]||(l[4]=e.withKeys(e.withModifiers(y=>u(m.value),["ctrl"]),["enter"]))]},null,8,["modelValue","name","placeholder","rows","minHeight","expandable","disabled","readonly","isError","hint"]),[[V,{disabled:!f.value}]]),e.createElementVNode("div",S,[s.value||d.forceShowCloseBtn?(e.openBlock(),e.createBlock(h.TopButton,{key:0,class:"top-editArea_button",color:"theme",styling:"soft",icon:d.attachToKeyboard?"":"",onClick:v},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.value),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createBlock(h.TopButton,{key:1,class:"top-editArea_button",icon:d.attachToKeyboard?"":"",onClick:l[5]||(l[5]=y=>u(m.value))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.attachToKeyboard?"":d.submitText),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0)])],2)],2)}}}),N={$style:{"top-editArea":"top-editArea","top-editArea_title":"top-editArea_title","top-editArea_form":"top-editArea_form","top-focus":"top-focus","top-textarea":"top-textarea","top-editArea_element":"top-editArea_element","top-textarea_textarea":"top-textarea_textarea","top-editArea_footer":"top-editArea_footer","top-editArea-attachedToKeyboard":"top-editArea-attachedToKeyboard","top-button":"top-button","top-editArea_button":"top-editArea_button"}},K=h._export_sfc(I,[["__cssModules",N]]),L={class:"top-editInput"},P=e.defineComponent({__name:"editInput",props:{modelValue:{},input:{},button:{}},emits:["update:modelValue"],setup(i,{emit:c}){const t=i,r=e.ref(t.modelValue);e.watch(e.toRef(t.modelValue),()=>{r.value=t.modelValue});const m=c,f=()=>{m("update:modelValue",r.value)};return(s,p)=>(e.openBlock(),e.createElementBlock("div",L,[e.createVNode(h.TopInput,e.mergeProps(s.input,{onKeydownCapture:p[0]||(p[0]=e.withKeys(e.withModifiers(u=>r.value=s.modelValue,["stop"]),["esc"])),onKeydown:e.withKeys(e.withModifiers(f,["stop"]),["enter"]),modelValue:r.value,"onUpdate:modelValue":p[1]||(p[1]=u=>r.value=u)}),null,16,["onKeydown","modelValue"]),r.value!==s.modelValue?(e.openBlock(),e.createBlock(h.TopButton,e.mergeProps({key:0,icon:"",styling:"soft"},s.button,{onClick:f}),null,16)):e.createCommentVNode("",!0)]))}}),G={$style:{"top-editInput":"top-editInput","top-input":"top-input"}},D=h._export_sfc(P,[["__cssModules",G]]),O=["data-top-icon","onClick"],z={key:0,class:"top-radioGroup_circle"},F=["value","disabled"],H=e.defineComponent({__name:"radioGroup",props:e.mergeModels({modelValue:{},radiosProps:{},showIndicator:{type:Boolean},size:{default:"s"},isError:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["update:modelValue"],["update:modelValue"]),setup(i,{emit:c}){const t=e.useModel(i,"modelValue"),r=i,m=e.ref(null);e.watch(t,()=>{var s,p,u,v,B;(s=r.radiosProps)!=null&&s.some(d=>d.value===t.value)||(t.value=((u=(p=r.radiosProps)==null?void 0:p[0])==null?void 0:u.value)??""),(B=(v=m.value)==null?void 0:v.querySelector(".radioGroup_item-selected"))==null||B.scrollIntoView()},{immediate:!0});const f="radioGroup-"+Math.random();return(s,p)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:m,class:e.normalizeClass({"top-radioGroup":!0,"top-scrollBarXHidding":!0,["top-size_"+s.size]:!!s.size,"top-error":s.isError})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.radiosProps,u=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-radioGroup_item-selected":u.value===t.value,"top-radioGroup_item":!0,"top-forms-focusable":!0,"top-disabled":u.disabled}),"data-top-icon":u.icon,onClick:v=>t.value=u.value},[e.createTextVNode(e.toDisplayString(u.title)+" ",1),s.showIndicator?(e.openBlock(),e.createElementBlock("span",z)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[0]||(p[0]=v=>t.value=v),name:f,type:"radio",class:e.normalizeClass({"top-unvisible":!0}),value:u.value,disabled:u.disabled},null,8,F),[[e.vModelRadio,t.value]])],10,O))),256))],2))}}),x={$style:{"top-scrollBarXHidding":"top-scrollBarXHidding","top-radioGroup":"top-radioGroup","top-radioGroup_item":"top-radioGroup_item","top-radioGroup_item-selected":"top-radioGroup_item-selected","top-radioGroup_circle":"top-radioGroup_circle","top-disabled":"top-disabled","top-error":"top-error"}},U=h._export_sfc(H,[["__cssModules",x]]),W=(i,c,t)=>{const r=e.ref([]),m=e.ref(!1);let f="",s;i&&!i.params.limit&&(i.params.limit=100);const p=async()=>{if(!i)return;let l,V;if(t&&(i.cache??=new Map,V=JSON.stringify(i.params),l=i.cache.get(V),l))return l;if(m.value=!0,l=await i.call(),m.value=!1,l.errors)return;if(!Array.isArray(l.result)){console.warn("В result ожидался массив");return}const y=l.result.findIndex(A=>A.id===void 0||A.name===void 0);if(y!==-1){console.warn(`В result[${y}] нет id или name`);return}return t&&i.cache.set(V,l),l},u=async()=>{if(!i)return;i.params.offset=0,i.params.search=f;const l=await p();l&&(s=l.nextOffset,r.value=l.result)},v=async()=>{if(!i||!s||m.value)return;i.params.offset=s,i.params.search=f;const l=await p();l&&(s=l.nextOffset,r.value=r.value.concat(l.result))},B=E.debounce(()=>u(),200);return{items:r,isLoading:m,loadAppend:v,setSearchTextAndLoad:(l,V=!0)=>{i&&(l.length<c||l===f&&r.value.length||(f=l,V?B():u()))}}},J={class:"top-selector2_itemMulti top-ellipsis"},R=e.defineComponent({__name:"itemMulti",props:{id:{},name:{}},emits:["delete"],setup(i){return(c,t)=>(e.openBlock(),e.createElementBlock("div",J,[e.createTextVNode(e.toDisplayString(c.name)+" ",1),e.createElementVNode("span",{class:"top-selector2_itemMultiDelete","data-top-icon":"",onClick:t[0]||(t[0]=r=>c.$emit("delete",c.id)),onMousedown:t[1]||(t[1]=e.withModifiers(()=>{},["stop"]))},null,32)]))}}),X={$style:{"top-selector2_itemMulti":"top-selector2_itemMulti","top-selector2_itemMultiDelete":"top-selector2_itemMultiDelete","top-selector2":"top-selector2","top-active":"top-active"}},j=h._export_sfc(R,[["__cssModules",X]]),Y={key:0,class:"top-selector2_activeItems"},Q={key:1,class:"top-selector2_activeName top-ellipsis"},Z=e.defineComponent({__name:"selector2",props:e.mergeModels({modelValue:{},items:{default:()=>[]},multiselect:{type:Boolean},disabled:{type:Boolean},size:{default:"s"},isError:{type:Boolean},apiRequest:{},minLength:{default:0},useCache:{type:Boolean},appendSearchToResult:{type:Boolean},appendAllValue:{type:Boolean},addChanger:{type:Boolean},placeholder:{},showSelectedInInput:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(i){const c=i,t=e.useModel(i,"modelValue"),r=e.ref(""),m={id:0,name:"Все"},f=e.ref(null),s=()=>{var o;return(o=f.value)==null?void 0:o.popup};window.__STORYBOOK_PREVIEW__&&!c.modelValue&&e.watch(()=>c.multiselect,()=>{t.value=c.multiselect?[]:{id:null,name:""}},{immediate:!0});const p=W(c.apiRequest,c.minLength,c.useCache),u=e.computed(()=>{const o=[];return!c.multiselect&&c.appendAllValue&&o.push(m),c.items.forEach(n=>o.push({...n})),o}),v=(o,n=!0)=>n&&o.id===null?Array.isArray(t.value)?t.value.some(a=>a.id===o.id&&a.name===o.name):o.name===t.value.name:Array.isArray(t.value)?t.value.some(a=>a.id===o.id):o.id===t.value.id,B=e.computed(()=>{const o=r.value.toLowerCase(),n=M.invertKeyboardLayout(o);let a=[];return u.value.forEach(k=>{const g=k.name.toLowerCase();(k.id===Number(o)||g.includes(o)||g.includes(n))&&(g===o||g===n?a.unshift(k):a.push(k))}),a.push(...p.items.value),c.appendSearchToResult&&r.value&&(!a.length||a[0].name.toLowerCase()!==o)&&a.push({id:null,name:r.value}),c.multiselect&&(a=a.filter(k=>!v(k))),a}),d=async o=>{var n,a;if(c.multiselect){if(!Array.isArray(t.value)||v(o))return;const k=[...t.value];k.push({...o}),t.value=k,h.Core.state.isMobile?(n=s())==null||n.close():setTimeout(()=>{var g,C,T,_;(g=s())==null||g.recalcPosition(),(_=(T=(C=s())==null?void 0:C.elPopupWidget)==null?void 0:T.querySelector("input"))==null||_.focus(),r.value&&(B.value.length||(r.value="",p.items.value=[]))})}else r.value&&(r.value="",p.items.value=[]),JSON.stringify(o)!==JSON.stringify(t.value)&&(t.value={...o}),(a=s())==null||a.close()},l=()=>{if(!Array.isArray(t.value)){const n=(u.value.findIndex(a=>a.id===t.value.id)+1)%u.value.length;t.value={...u.value[n]}}},V=async o=>{Array.isArray(t.value)&&(t.value=t.value.filter(n=>n.id!==o),setTimeout(()=>{var n;(n=s())==null||n.recalcPosition()}))},y=e.ref(!1);c.apiRequest&&(e.watch(y,()=>{y.value&&p.setSearchTextAndLoad(r.value,!1)}),e.watch(r,()=>p.setSearchTextAndLoad(r.value)));const A=o=>{const n=o.target;n.scrollTop/(n.scrollHeight-n.offsetHeight)>.8&&p.loadAppend()};return(o,n)=>(e.openBlock(),e.createBlock(e.unref(w.TopPopup),{ref_key:"popupRef",ref:f,onOpen:n[1]||(n[1]=a=>y.value=!0),onClose:n[2]||(n[2]=a=>y.value=!1),onScrollContentList:n[3]||(n[3]=a=>o.apiRequest?A(a):void 0),notch:!1,transitionDuration:0},{opener:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass({"top-selector2":!0,"top-selector2-multiselect":o.multiselect,["top-size_"+o.size]:!0,"top-disabled":o.disabled,"top-forms-focusable":!o.disabled,"top-error":o.isError})},[o.multiselect?(e.openBlock(),e.createElementBlock("div",Y,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,a=>(e.openBlock(),e.createBlock(j,{id:a.id,name:a.name,onDelete:V},null,8,["id","name"]))),256))])):e.createCommentVNode("",!0),o.multiselect?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Q,e.toDisplayString(Array.isArray(t.value)?"":t.value.name),1)),o.addChanger&&!o.multiselect&&u.value.length>1&&!o.disabled?(e.openBlock(),e.createElementBlock("span",{key:2,class:"top-changer top-changer-selector",onClick:e.withModifiers(l,["stop"])})):e.createCommentVNode("",!0)],2)]),widget:e.withCtx(()=>[e.createVNode(e.unref(w.TopPopupWidgetInput),{title:"Поиск",icon:"",modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=a=>r.value=a),isLoading:e.unref(p).isLoading.value,placeholder:!Array.isArray(t.value)&&!o.multiselect&&o.showSelectedInInput?t.value.name:o.placeholder},null,8,["modelValue","isLoading","placeholder"])]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,a=>(e.openBlock(),e.createBlock(e.unref(w.TopPopupListItem),{class:e.normalizeClass({"top-active":!Array.isArray(t.value)&&!o.multiselect&&t.value.name===a.name}),key:a.id??void 0,onClick:e.withModifiers(k=>d(a),["stop"])},{default:e.withCtx(()=>[o.$slots.item?e.renderSlot(o.$slots,"item",{key:0,item:a}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(a.name),1)],64))]),_:2},1032,["class","onClick"]))),128)),B.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(w.TopPopupListItem),{key:0,type:"regular"},{default:e.withCtx(()=>[e.createTextVNode(" Нет результатов ")]),_:1}))]),_:3},512))}}),q={$style:{"top-selector2":"top-selector2","top-selector2-multiselect":"top-selector2-multiselect","top-active":"top-active","top-selector2_activeItems":"top-selector2_activeItems","top-selector2_activeName":"top-selector2_activeName","top-changer-selector":"top-changer-selector"}},ee=h._export_sfc(Z,[["__cssModules",q]]),te=K,oe=D,le=U,ae=ee,re=$.Menu;b.TopEditArea=te,b.TopEditInput=oe,b.TopMenu=re,b.TopRadioGroup=le,b.TopSelector2=ae,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=formsExt.amd.js.map