@retailcrm/embed-ui-v1-components 0.4.1-alpha.1 → 0.4.1-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/host.cjs CHANGED
@@ -4,6 +4,14 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
6
  const vue = require("vue");
7
+ const isURL = (href) => {
8
+ try {
9
+ new URL(href);
10
+ return true;
11
+ } catch {
12
+ return false;
13
+ }
14
+ };
7
15
  const SHAPE_FLAG_ARRAY_CHILDREN = 16;
8
16
  const SHAPE_FLAG_TEXT = 8;
9
17
  const inlines = ["b", "i", "span", "strong"];
@@ -39,20 +47,20 @@ var APPEARANCE$2 = /* @__PURE__ */ ((APPEARANCE2) => {
39
47
  APPEARANCE2["TERTIARY"] = "tertiary";
40
48
  return APPEARANCE2;
41
49
  })(APPEARANCE$2 || {});
42
- var SIZE$3 = /* @__PURE__ */ ((SIZE2) => {
50
+ var SIZE$4 = /* @__PURE__ */ ((SIZE2) => {
43
51
  SIZE2["LG"] = "lg";
44
52
  SIZE2["MD"] = "md";
45
53
  SIZE2["SM"] = "sm";
46
54
  SIZE2["XS"] = "xs";
47
55
  return SIZE2;
48
- })(SIZE$3 || {});
56
+ })(SIZE$4 || {});
49
57
  var VARIANT = /* @__PURE__ */ ((VARIANT2) => {
50
58
  VARIANT2["DEFAULT"] = "default";
51
59
  VARIANT2["SUCCESS"] = "success";
52
60
  VARIANT2["DANGER"] = "danger";
53
61
  return VARIANT2;
54
62
  })(VARIANT || {});
55
- const _sfc_main$9 = vue.defineComponent({
63
+ const _sfc_main$c = vue.defineComponent({
56
64
  props: {
57
65
  /** Устанавливает тип кнопки */
58
66
  type: {
@@ -62,7 +70,7 @@ const _sfc_main$9 = vue.defineComponent({
62
70
  /** Устанавливает атрибут href якоря */
63
71
  href: {
64
72
  type: null,
65
- validator: (href) => typeof href === "string" || href === null,
73
+ validator: (href) => typeof href === "string" && isURL(href) || href === null,
66
74
  default: null
67
75
  },
68
76
  /** Регулирует внешний вид кнопки: primary, secondary, tertiary or outlined */
@@ -78,7 +86,7 @@ const _sfc_main$9 = vue.defineComponent({
78
86
  /** Размер */
79
87
  size: {
80
88
  type: String,
81
- default: SIZE$3.SM
89
+ default: SIZE$4.SM
82
90
  },
83
91
  /** Если кнопка активна */
84
92
  active: {
@@ -153,7 +161,7 @@ var ALIGN = /* @__PURE__ */ ((ALIGN2) => {
153
161
  ALIGN2["RIGHT"] = "right";
154
162
  return ALIGN2;
155
163
  })(ALIGN || {});
156
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
164
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
157
165
  __name: "UiError",
158
166
  props: {
159
167
  /** Тест, разметка ошибки */
@@ -213,7 +221,7 @@ var APPEARANCE$1 = /* @__PURE__ */ ((APPEARANCE2) => {
213
221
  APPEARANCE2["TITLE"] = "title";
214
222
  return APPEARANCE2;
215
223
  })(APPEARANCE$1 || {});
216
- var SIZE$2 = /* @__PURE__ */ ((SIZE2) => {
224
+ var SIZE$3 = /* @__PURE__ */ ((SIZE2) => {
217
225
  SIZE2["ARTICLE"] = "article";
218
226
  SIZE2["BODY"] = "body";
219
227
  SIZE2["PARAGRAPH"] = "paragraph";
@@ -222,7 +230,7 @@ var SIZE$2 = /* @__PURE__ */ ((SIZE2) => {
222
230
  SIZE2["TITLE01"] = "title-01";
223
231
  SIZE2["TITLE02"] = "title-02";
224
232
  return SIZE2;
225
- })(SIZE$2 || {});
233
+ })(SIZE$3 || {});
226
234
  const _hoisted_1$5 = ["href", "target"];
227
235
  const _hoisted_2$2 = {
228
236
  key: 0,
@@ -232,12 +240,13 @@ const _hoisted_3$2 = {
232
240
  key: 2,
233
241
  class: "ui-v1-link__icon"
234
242
  };
235
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
243
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
236
244
  __name: "UiLink",
237
245
  props: {
238
246
  /** Атрибут ссылки */
239
247
  href: {
240
248
  type: String,
249
+ validator: (href) => typeof href === "string" && isURL(href),
241
250
  default: "javascript:void(0);"
242
251
  },
243
252
  /**
@@ -257,8 +266,8 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
257
266
  /** Размер текста */
258
267
  size: {
259
268
  type: String,
260
- validator: (size) => Object.values(SIZE$2).includes(size),
261
- default: SIZE$2.BODY
269
+ validator: (size) => Object.values(SIZE$3).includes(size),
270
+ default: SIZE$3.BODY
262
271
  },
263
272
  /** Инвертированный цвет ссылок для тёмного фона */
264
273
  light: {
@@ -309,7 +318,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
309
318
  };
310
319
  }
311
320
  });
312
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
321
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
313
322
  __name: "UiTransition",
314
323
  props: {
315
324
  /** Наименование анимации перехода */
@@ -337,7 +346,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
337
346
  };
338
347
  }
339
348
  });
340
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
349
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
341
350
  __name: "UiLoader",
342
351
  props: {
343
352
  /** Диаметр (размер) окружности индикатора */
@@ -369,7 +378,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
369
378
  },
370
379
  setup(__props) {
371
380
  return (_ctx, _cache) => {
372
- return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.transition ? _sfc_main$6 : "div"), vue.normalizeProps(vue.guardReactiveProps(__props.transition ? {
381
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.transition ? _sfc_main$9 : "div"), vue.normalizeProps(vue.guardReactiveProps(__props.transition ? {
373
382
  appear: true,
374
383
  class: "ui-v1-loader-wrapper",
375
384
  name: __props.transition
@@ -1521,7 +1530,7 @@ var PerfectScrollbar$1 = {
1521
1530
  );
1522
1531
  }
1523
1532
  };
1524
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1533
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1525
1534
  __name: "UiScrollBox",
1526
1535
  props: {
1527
1536
  /** Наименование тэга-обёртки для нативного скролла */
@@ -1728,12 +1737,12 @@ var SCROLLING$1 = /* @__PURE__ */ ((SCROLLING2) => {
1728
1737
  SCROLLING2["NONE"] = "none";
1729
1738
  return SCROLLING2;
1730
1739
  })(SCROLLING$1 || {});
1731
- var SIZE$1 = /* @__PURE__ */ ((SIZE2) => {
1740
+ var SIZE$2 = /* @__PURE__ */ ((SIZE2) => {
1732
1741
  SIZE2["LG"] = "lg";
1733
1742
  SIZE2["SM"] = "sm";
1734
1743
  return SIZE2;
1735
- })(SIZE$1 || {});
1736
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1744
+ })(SIZE$2 || {});
1745
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1737
1746
  __name: "UiModalSidebar",
1738
1747
  props: {
1739
1748
  /** Атрибут id корневого элемента. Должен быть уникальным на странице */
@@ -1776,7 +1785,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1776
1785
  /** Размер панели */
1777
1786
  size: {
1778
1787
  type: String,
1779
- default: SIZE$1.SM
1788
+ default: SIZE$2.SM
1780
1789
  }
1781
1790
  },
1782
1791
  emits: [
@@ -1963,7 +1972,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1963
1972
  }))
1964
1973
  ]);
1965
1974
  };
1966
- const renderBody = () => props.scrolling === SCROLLING$1.NONE ? vue.h("div", { class: "ui-v1-modal-sidebar__body-fixed" }, renderSlot("default")) : vue.h(_sfc_main$4, {
1975
+ const renderBody = () => props.scrolling === SCROLLING$1.NONE ? vue.h("div", { class: "ui-v1-modal-sidebar__body-fixed" }, renderSlot("default")) : vue.h(_sfc_main$7, {
1967
1976
  class: "ui-v1-modal-sidebar__body",
1968
1977
  native: props.scrolling === SCROLLING$1.NATIVE,
1969
1978
  showOnMac: true,
@@ -1976,7 +1985,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1976
1985
  const direction = props.direction;
1977
1986
  const size = props.size;
1978
1987
  const setVisibility = (visibility2) => () => visibilityOfSidebar.value = visibility2;
1979
- return vue.h(_sfc_main$6, {
1988
+ return vue.h(_sfc_main$9, {
1980
1989
  name: `slide-${direction}`,
1981
1990
  onBeforeEnter: setVisibility("showing"),
1982
1991
  onAfterEnter: setVisibility("shown"),
@@ -1989,8 +1998,8 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1989
1998
  class: {
1990
1999
  "ui-v1-modal-sidebar": true,
1991
2000
  "ui-v1-modal-sidebar_left": direction === DIRECTION.LEFT,
1992
- "ui-v1-modal-sidebar_size_sm": size === SIZE$1.SM,
1993
- "ui-v1-modal-sidebar_size_lg": size === SIZE$1.LG
2001
+ "ui-v1-modal-sidebar_size_sm": size === SIZE$2.SM,
2002
+ "ui-v1-modal-sidebar_size_lg": size === SIZE$2.LG
1994
2003
  }
1995
2004
  }, [
1996
2005
  renderHeader(),
@@ -2004,7 +2013,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
2004
2013
  const setVisibility = (visibility2) => () => visibilityOfOverlay.value = visibility2;
2005
2014
  return !state.attached ? void 0 : vue.h(vue.Teleport, {
2006
2015
  to: (globals == null ? void 0 : globals.container) ?? document.body
2007
- }, vue.h(_sfc_main$6, {
2016
+ }, vue.h(_sfc_main$9, {
2008
2017
  name: "fade-2",
2009
2018
  onBeforeEnter: setVisibility("showing"),
2010
2019
  onAfterEnter: setVisibility("shown"),
@@ -2041,6 +2050,15 @@ const expect = (value) => ({
2041
2050
  return Object.values(variants).includes(value);
2042
2051
  }
2043
2052
  });
2053
+ const without = (obj, exclude) => {
2054
+ const newObj = {};
2055
+ Object.entries(obj).forEach(([key, value]) => {
2056
+ if (!exclude.includes(key)) {
2057
+ newObj[key] = value;
2058
+ }
2059
+ });
2060
+ return newObj;
2061
+ };
2044
2062
  var APPEARANCE = /* @__PURE__ */ ((APPEARANCE2) => {
2045
2063
  APPEARANCE2["ALERT"] = "alert";
2046
2064
  APPEARANCE2["DIALOG"] = "dialog";
@@ -2053,7 +2071,7 @@ var SCROLLING = /* @__PURE__ */ ((SCROLLING2) => {
2053
2071
  SCROLLING2["NATIVE"] = "native";
2054
2072
  return SCROLLING2;
2055
2073
  })(SCROLLING || {});
2056
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
2074
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2057
2075
  __name: "UiModalWindowSurface",
2058
2076
  props: {
2059
2077
  /** Атрибут id корневого элемента модального окна. Должен быть уникальным на странице */
@@ -2267,7 +2285,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
2267
2285
  const slots = vue.useSlots();
2268
2286
  const renderBody = () => {
2269
2287
  const appearance = props.appearance;
2270
- return vue.h(_sfc_main$6, {
2288
+ return vue.h(_sfc_main$9, {
2271
2289
  name: "zoom",
2272
2290
  onBeforeEnter: () => visibilityOfBody.value = "showing",
2273
2291
  onAfterEnter: () => visibilityOfBody.value = "shown",
@@ -2292,7 +2310,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
2292
2310
  };
2293
2311
  const EmbedModalWindowSurface = () => !state.attached ? void 0 : vue.h(vue.Teleport, {
2294
2312
  to: (globals == null ? void 0 : globals.container) ?? document.body
2295
- }, vue.h(_sfc_main$6, {
2313
+ }, vue.h(_sfc_main$9, {
2296
2314
  name: "fade-2",
2297
2315
  onBeforeEnter: () => visibilityOfOverlay.value = "showing",
2298
2316
  onAfterEnter: () => visibilityOfOverlay.value = "shown",
@@ -2309,7 +2327,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
2309
2327
  "ui-v1-modal_overlapped": state.overlapped
2310
2328
  }],
2311
2329
  onClick: onOverlayClick
2312
- }, vue.h(_sfc_main$4, {
2330
+ }, vue.h(_sfc_main$7, {
2313
2331
  class: {
2314
2332
  "ui-v1-modal-window-container": true,
2315
2333
  "ui-v1-modal-window-container_fullscreen": props.fullscreen,
@@ -2366,7 +2384,7 @@ const _hoisted_5 = {
2366
2384
  key: 0,
2367
2385
  class: "ui-v1-modal-window__footer-text"
2368
2386
  };
2369
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
2387
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
2370
2388
  __name: "UiModalWindow",
2371
2389
  props: {
2372
2390
  /** Атрибут id корневого элемента модального окна. Должен быть уникальным на странице */
@@ -2480,7 +2498,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
2480
2498
  });
2481
2499
  vue.watch(() => props.opened, toggle);
2482
2500
  return (_ctx, _cache) => {
2483
- return vue.openBlock(), vue.createBlock(_sfc_main$2, vue.mergeProps({
2501
+ return vue.openBlock(), vue.createBlock(_sfc_main$5, vue.mergeProps({
2484
2502
  id: __props.id,
2485
2503
  opened: state.opened,
2486
2504
  closable: __props.closable,
@@ -2537,7 +2555,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
2537
2555
  })
2538
2556
  ])) : vue.createCommentVNode("", true)
2539
2557
  ], 2),
2540
- __props.responsive ? (vue.openBlock(), vue.createBlock(_sfc_main$4, {
2558
+ __props.responsive ? (vue.openBlock(), vue.createBlock(_sfc_main$7, {
2541
2559
  key: 0,
2542
2560
  class: "ui-v1-modal-window__content",
2543
2561
  "show-on-mac": "",
@@ -2584,13 +2602,13 @@ function render(_ctx, _cache) {
2584
2602
  ]));
2585
2603
  }
2586
2604
  const IconPinned = { render };
2587
- var SIZE = /* @__PURE__ */ ((SIZE2) => {
2605
+ var SIZE$1 = /* @__PURE__ */ ((SIZE2) => {
2588
2606
  SIZE2["LG"] = "lg";
2589
2607
  SIZE2["MD"] = "md";
2590
2608
  SIZE2["SM"] = "sm";
2591
2609
  SIZE2["XS"] = "xs";
2592
2610
  return SIZE2;
2593
- })(SIZE || {});
2611
+ })(SIZE$1 || {});
2594
2612
  function deltaTransition(el) {
2595
2613
  const delta = el.scrollWidth - el.clientWidth;
2596
2614
  const animationDuration = `${(el.scrollWidth / el.clientWidth * 2).toFixed(2)}s`;
@@ -2750,13 +2768,13 @@ const _hoisted_1 = {
2750
2768
  };
2751
2769
  const _hoisted_2 = { class: "ui-v1-tag__content-inner" };
2752
2770
  const _hoisted_3 = ["aria-label"];
2753
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2771
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
2754
2772
  __name: "UiTag",
2755
2773
  props: {
2756
2774
  /** Рамер */
2757
2775
  size: {
2758
2776
  type: String,
2759
- default: SIZE.LG
2777
+ default: SIZE$1.LG
2760
2778
  },
2761
2779
  /** Слева выводим иконку закреплённого тега */
2762
2780
  pinned: {
@@ -2843,14 +2861,204 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2843
2861
  };
2844
2862
  }
2845
2863
  });
2864
+ var SIZE = /* @__PURE__ */ ((SIZE2) => {
2865
+ SIZE2["SM"] = "sm";
2866
+ SIZE2["MD"] = "md";
2867
+ return SIZE2;
2868
+ })(SIZE || {});
2869
+ const ToolbarInjectKeys = {
2870
+ size: Symbol("UiToolbarSize")
2871
+ };
2872
+ const useToolbarSize = () => vue.inject(ToolbarInjectKeys.size, vue.computed(
2873
+ () => "sm"
2874
+ /* SM */
2875
+ ));
2876
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
2877
+ ...{
2878
+ inheritAttrs: false
2879
+ },
2880
+ __name: "UiToolbar",
2881
+ props: {
2882
+ size: {
2883
+ type: String,
2884
+ default: SIZE.SM
2885
+ }
2886
+ },
2887
+ setup(__props) {
2888
+ const props = __props;
2889
+ vue.provide(ToolbarInjectKeys.size, vue.computed(() => props.size));
2890
+ return (_ctx, _cache) => {
2891
+ return vue.renderSlot(_ctx.$slots, "default");
2892
+ };
2893
+ }
2894
+ });
2895
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
2896
+ ...{
2897
+ inheritAttrs: false
2898
+ },
2899
+ __name: "UiToolbarButton",
2900
+ props: {
2901
+ /** Устанавливает атрибут href якоря */
2902
+ href: {
2903
+ type: null,
2904
+ validator: (href) => typeof href === "string" && isURL(href) || href === null,
2905
+ default: null
2906
+ },
2907
+ /** Регулирует цветовую схему кнопки: default, success or danger */
2908
+ variant: {
2909
+ type: String,
2910
+ default: VARIANT.DEFAULT
2911
+ },
2912
+ /** Если кнопка активна */
2913
+ active: {
2914
+ type: Boolean,
2915
+ default: false
2916
+ },
2917
+ /** Если кнопка отключена */
2918
+ disabled: {
2919
+ type: Boolean,
2920
+ default: false
2921
+ },
2922
+ /** Если кнопка заблокирована */
2923
+ locked: {
2924
+ type: Boolean,
2925
+ default: false
2926
+ }
2927
+ },
2928
+ setup(__props, { expose: __expose }) {
2929
+ const root = vue.ref(null);
2930
+ __expose({
2931
+ click: () => {
2932
+ var _a;
2933
+ return (_a = root.value) == null ? void 0 : _a.click();
2934
+ },
2935
+ focus: () => {
2936
+ var _a;
2937
+ return (_a = root.value) == null ? void 0 : _a.focus();
2938
+ },
2939
+ blur: () => {
2940
+ var _a;
2941
+ return (_a = root.value) == null ? void 0 : _a.blur();
2942
+ }
2943
+ });
2944
+ const toolbarSize = useToolbarSize();
2945
+ const size = vue.computed(() => {
2946
+ if (toolbarSize.value === SIZE.SM) {
2947
+ return SIZE$4.XS;
2948
+ }
2949
+ return SIZE$4.SM;
2950
+ });
2951
+ return (_ctx, _cache) => {
2952
+ return vue.openBlock(), vue.createBlock(_sfc_main$c, vue.mergeProps({
2953
+ ref_key: "root",
2954
+ ref: root,
2955
+ href: __props.href,
2956
+ variant: __props.variant,
2957
+ size: size.value,
2958
+ active: __props.active,
2959
+ disabled: __props.disabled,
2960
+ locked: __props.locked,
2961
+ appearance: "secondary"
2962
+ }, vue.unref(without)(_ctx.$attrs, [
2963
+ "appearance",
2964
+ "class",
2965
+ "style",
2966
+ "type"
2967
+ ])), {
2968
+ default: vue.withCtx(() => [
2969
+ vue.renderSlot(_ctx.$slots, "default")
2970
+ ]),
2971
+ _: 3
2972
+ }, 16, ["href", "variant", "size", "active", "disabled", "locked"]);
2973
+ };
2974
+ }
2975
+ });
2976
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2977
+ ...{
2978
+ inheritAttrs: false
2979
+ },
2980
+ __name: "UiToolbarLink",
2981
+ props: {
2982
+ /** Атрибут ссылки */
2983
+ href: {
2984
+ type: String,
2985
+ validator: (href) => typeof href === "string" && isURL(href),
2986
+ default: "javascript:void(0);"
2987
+ },
2988
+ /**
2989
+ * Определяет, нужно ли открывать ссылку в новой вкладке.
2990
+ * Также добавляется иконка внешней ссылки (если компонент UiIcon установлен)
2991
+ */
2992
+ external: {
2993
+ type: Boolean,
2994
+ default: false
2995
+ },
2996
+ /** Тип ссылок */
2997
+ appearance: {
2998
+ type: String,
2999
+ validator: (appearance) => Object.values(APPEARANCE$1).includes(appearance),
3000
+ default: APPEARANCE$1.DEFAULT
3001
+ },
3002
+ /** Инвертированный цвет ссылок для тёмного фона */
3003
+ light: {
3004
+ type: Boolean,
3005
+ default: false
3006
+ },
3007
+ /** Жирное начертание */
3008
+ accent: {
3009
+ type: Boolean,
3010
+ default: false
3011
+ },
3012
+ /** Подчеркивание dotted вместо стандартного поведения */
3013
+ dotted: {
3014
+ type: Boolean,
3015
+ default: false
3016
+ },
3017
+ /** Определяет, будет ли текст ошибок обрезаться через многоточие или переноситься на следующую строку */
3018
+ ellipsis: {
3019
+ type: Boolean,
3020
+ default: false
3021
+ }
3022
+ },
3023
+ setup(__props) {
3024
+ return (_ctx, _cache) => {
3025
+ return vue.openBlock(), vue.createBlock(_sfc_main$a, vue.mergeProps({
3026
+ href: __props.href,
3027
+ external: __props.external,
3028
+ appearance: __props.appearance,
3029
+ light: __props.light,
3030
+ accent: __props.accent,
3031
+ dotted: __props.dotted,
3032
+ ellipsis: __props.ellipsis,
3033
+ size: "small"
3034
+ }, vue.unref(without)(_ctx.$attrs, ["class", "style"])), vue.createSlots({
3035
+ default: vue.withCtx(() => [
3036
+ vue.renderSlot(_ctx.$slots, "default")
3037
+ ]),
3038
+ _: 2
3039
+ }, [
3040
+ _ctx.$slots.icon || __props.external ? {
3041
+ name: "icon",
3042
+ fn: vue.withCtx(() => [
3043
+ vue.renderSlot(_ctx.$slots, "icon")
3044
+ ]),
3045
+ key: "0"
3046
+ } : void 0
3047
+ ]), 1040, ["href", "external", "appearance", "light", "accent", "dotted", "ellipsis"]);
3048
+ };
3049
+ }
3050
+ });
2846
3051
  exports.ModalPlugin = plugin;
2847
- exports.UiButton = _sfc_main$9;
2848
- exports.UiError = _sfc_main$8;
2849
- exports.UiLink = _sfc_main$7;
2850
- exports.UiLoader = _sfc_main$5;
2851
- exports.UiModalSidebar = _sfc_main$3;
2852
- exports.UiModalWindow = _sfc_main$1;
2853
- exports.UiModalWindowSurface = _sfc_main$2;
2854
- exports.UiScrollBox = _sfc_main$4;
2855
- exports.UiTag = _sfc_main;
2856
- exports.UiTransition = _sfc_main$6;
3052
+ exports.UiButton = _sfc_main$c;
3053
+ exports.UiError = _sfc_main$b;
3054
+ exports.UiLink = _sfc_main$a;
3055
+ exports.UiLoader = _sfc_main$8;
3056
+ exports.UiModalSidebar = _sfc_main$6;
3057
+ exports.UiModalWindow = _sfc_main$4;
3058
+ exports.UiModalWindowSurface = _sfc_main$5;
3059
+ exports.UiScrollBox = _sfc_main$7;
3060
+ exports.UiTag = _sfc_main$3;
3061
+ exports.UiToolbar = _sfc_main$2;
3062
+ exports.UiToolbarButton = _sfc_main$1;
3063
+ exports.UiToolbarLink = _sfc_main;
3064
+ exports.UiTransition = _sfc_main$9;
package/dist/host.d.ts CHANGED
@@ -146,6 +146,20 @@ fullscreen: boolean;
146
146
  responsive: boolean;
147
147
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
148
148
 
149
+ declare const __VLS_component_2: DefineComponent_2<ExtractPropTypes< {
150
+ size: {
151
+ type: PropType<SIZE_5 | `${SIZE_5}`>;
152
+ default: SIZE_5;
153
+ };
154
+ }>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes< {
155
+ size: {
156
+ type: PropType<SIZE_5 | `${SIZE_5}`>;
157
+ default: SIZE_5;
158
+ };
159
+ }>> & Readonly<{}>, {
160
+ size: "md" | "sm" | SIZE_5;
161
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
162
+
149
163
  declare function __VLS_template(): {
150
164
  slots: {
151
165
  icon?(_: {
@@ -171,14 +185,30 @@ declare function __VLS_template(): {
171
185
  attrs: Partial<{}>;
172
186
  };
173
187
 
188
+ declare function __VLS_template_2(): {
189
+ slots: {
190
+ default?(_: {}): any;
191
+ };
192
+ refs: {};
193
+ attrs: Partial<{}>;
194
+ };
195
+
174
196
  declare type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
175
197
 
198
+ declare type __VLS_TemplateResult_2 = ReturnType<typeof __VLS_template_2>;
199
+
176
200
  declare type __VLS_WithTemplateSlots<T, S> = T & {
177
201
  new (): {
178
202
  $slots: S;
179
203
  };
180
204
  };
181
205
 
206
+ declare type __VLS_WithTemplateSlots_2<T, S> = T & {
207
+ new (): {
208
+ $slots: S;
209
+ };
210
+ };
211
+
182
212
  declare enum ALIGN {
183
213
  LEFT = "left",
184
214
  RIGHT = "right"
@@ -259,6 +289,11 @@ declare enum SIZE_4 {
259
289
  XS = "xs"
260
290
  }
261
291
 
292
+ declare enum SIZE_5 {
293
+ SM = "sm",
294
+ MD = "md"
295
+ }
296
+
262
297
  export declare const UiButton: DefineComponent<
263
298
  UiButtonProperties,
264
299
  UiButtonMethods
@@ -377,6 +412,19 @@ declare type UiTagProperties = {
377
412
  ticker?: boolean;
378
413
  };
379
414
 
415
+ export declare const UiToolbar: __VLS_WithTemplateSlots_2<typeof __VLS_component_2, __VLS_TemplateResult_2["slots"]>;
416
+
417
+ export declare const UiToolbarButton: DefineComponent<
418
+ UiToolbarButtonProperties,
419
+ UiButtonMethods
420
+ >;
421
+
422
+ declare type UiToolbarButtonProperties = Omit<UiButtonProperties, 'appearance' | 'size' | 'type'>;
423
+
424
+ export declare const UiToolbarLink: DefineComponent<UiToolbarLinkProperties>;
425
+
426
+ declare type UiToolbarLinkProperties = Omit<UiLinkProperties, 'size'>;
427
+
380
428
  export declare const UiTransition: DefineComponent<UiTransitionProps>;
381
429
 
382
430
  declare type UiTransitionProps = {
package/dist/host.js CHANGED
@@ -1,7 +1,15 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { Text, Comment, defineComponent, ref, h, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createTextVNode, toDisplayString, createElementVNode, mergeProps, createVNode, createCommentVNode, createBlock, Transition, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps, normalizeStyle, reactive, inject, computed, watch, onMounted, onActivated, onDeactivated, onBeforeUnmount, useAttrs, useSlots, Teleport, withDirectives, vShow, toHandlers, withModifiers } from "vue";
4
+ import { Text, Comment, defineComponent, ref, h, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createTextVNode, toDisplayString, createElementVNode, mergeProps, createVNode, createCommentVNode, createBlock, Transition, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps, normalizeStyle, reactive, inject, computed, watch, onMounted, onActivated, onDeactivated, onBeforeUnmount, useAttrs, useSlots, Teleport, withDirectives, vShow, toHandlers, withModifiers, provide, createSlots } from "vue";
5
+ const isURL = (href) => {
6
+ try {
7
+ new URL(href);
8
+ return true;
9
+ } catch {
10
+ return false;
11
+ }
12
+ };
5
13
  const SHAPE_FLAG_ARRAY_CHILDREN = 16;
6
14
  const SHAPE_FLAG_TEXT = 8;
7
15
  const inlines = ["b", "i", "span", "strong"];
@@ -37,20 +45,20 @@ var APPEARANCE$2 = /* @__PURE__ */ ((APPEARANCE2) => {
37
45
  APPEARANCE2["TERTIARY"] = "tertiary";
38
46
  return APPEARANCE2;
39
47
  })(APPEARANCE$2 || {});
40
- var SIZE$3 = /* @__PURE__ */ ((SIZE2) => {
48
+ var SIZE$4 = /* @__PURE__ */ ((SIZE2) => {
41
49
  SIZE2["LG"] = "lg";
42
50
  SIZE2["MD"] = "md";
43
51
  SIZE2["SM"] = "sm";
44
52
  SIZE2["XS"] = "xs";
45
53
  return SIZE2;
46
- })(SIZE$3 || {});
54
+ })(SIZE$4 || {});
47
55
  var VARIANT = /* @__PURE__ */ ((VARIANT2) => {
48
56
  VARIANT2["DEFAULT"] = "default";
49
57
  VARIANT2["SUCCESS"] = "success";
50
58
  VARIANT2["DANGER"] = "danger";
51
59
  return VARIANT2;
52
60
  })(VARIANT || {});
53
- const _sfc_main$9 = defineComponent({
61
+ const _sfc_main$c = defineComponent({
54
62
  props: {
55
63
  /** Устанавливает тип кнопки */
56
64
  type: {
@@ -60,7 +68,7 @@ const _sfc_main$9 = defineComponent({
60
68
  /** Устанавливает атрибут href якоря */
61
69
  href: {
62
70
  type: null,
63
- validator: (href) => typeof href === "string" || href === null,
71
+ validator: (href) => typeof href === "string" && isURL(href) || href === null,
64
72
  default: null
65
73
  },
66
74
  /** Регулирует внешний вид кнопки: primary, secondary, tertiary or outlined */
@@ -76,7 +84,7 @@ const _sfc_main$9 = defineComponent({
76
84
  /** Размер */
77
85
  size: {
78
86
  type: String,
79
- default: SIZE$3.SM
87
+ default: SIZE$4.SM
80
88
  },
81
89
  /** Если кнопка активна */
82
90
  active: {
@@ -151,7 +159,7 @@ var ALIGN = /* @__PURE__ */ ((ALIGN2) => {
151
159
  ALIGN2["RIGHT"] = "right";
152
160
  return ALIGN2;
153
161
  })(ALIGN || {});
154
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
162
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
155
163
  __name: "UiError",
156
164
  props: {
157
165
  /** Тест, разметка ошибки */
@@ -211,7 +219,7 @@ var APPEARANCE$1 = /* @__PURE__ */ ((APPEARANCE2) => {
211
219
  APPEARANCE2["TITLE"] = "title";
212
220
  return APPEARANCE2;
213
221
  })(APPEARANCE$1 || {});
214
- var SIZE$2 = /* @__PURE__ */ ((SIZE2) => {
222
+ var SIZE$3 = /* @__PURE__ */ ((SIZE2) => {
215
223
  SIZE2["ARTICLE"] = "article";
216
224
  SIZE2["BODY"] = "body";
217
225
  SIZE2["PARAGRAPH"] = "paragraph";
@@ -220,7 +228,7 @@ var SIZE$2 = /* @__PURE__ */ ((SIZE2) => {
220
228
  SIZE2["TITLE01"] = "title-01";
221
229
  SIZE2["TITLE02"] = "title-02";
222
230
  return SIZE2;
223
- })(SIZE$2 || {});
231
+ })(SIZE$3 || {});
224
232
  const _hoisted_1$5 = ["href", "target"];
225
233
  const _hoisted_2$2 = {
226
234
  key: 0,
@@ -230,12 +238,13 @@ const _hoisted_3$2 = {
230
238
  key: 2,
231
239
  class: "ui-v1-link__icon"
232
240
  };
233
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
241
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
234
242
  __name: "UiLink",
235
243
  props: {
236
244
  /** Атрибут ссылки */
237
245
  href: {
238
246
  type: String,
247
+ validator: (href) => typeof href === "string" && isURL(href),
239
248
  default: "javascript:void(0);"
240
249
  },
241
250
  /**
@@ -255,8 +264,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
255
264
  /** Размер текста */
256
265
  size: {
257
266
  type: String,
258
- validator: (size) => Object.values(SIZE$2).includes(size),
259
- default: SIZE$2.BODY
267
+ validator: (size) => Object.values(SIZE$3).includes(size),
268
+ default: SIZE$3.BODY
260
269
  },
261
270
  /** Инвертированный цвет ссылок для тёмного фона */
262
271
  light: {
@@ -307,7 +316,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
307
316
  };
308
317
  }
309
318
  });
310
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
319
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
311
320
  __name: "UiTransition",
312
321
  props: {
313
322
  /** Наименование анимации перехода */
@@ -335,7 +344,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
335
344
  };
336
345
  }
337
346
  });
338
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
347
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
339
348
  __name: "UiLoader",
340
349
  props: {
341
350
  /** Диаметр (размер) окружности индикатора */
@@ -367,7 +376,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
367
376
  },
368
377
  setup(__props) {
369
378
  return (_ctx, _cache) => {
370
- return openBlock(), createBlock(resolveDynamicComponent(__props.transition ? _sfc_main$6 : "div"), normalizeProps(guardReactiveProps(__props.transition ? {
379
+ return openBlock(), createBlock(resolveDynamicComponent(__props.transition ? _sfc_main$9 : "div"), normalizeProps(guardReactiveProps(__props.transition ? {
371
380
  appear: true,
372
381
  class: "ui-v1-loader-wrapper",
373
382
  name: __props.transition
@@ -1519,7 +1528,7 @@ var PerfectScrollbar$1 = {
1519
1528
  );
1520
1529
  }
1521
1530
  };
1522
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1531
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1523
1532
  __name: "UiScrollBox",
1524
1533
  props: {
1525
1534
  /** Наименование тэга-обёртки для нативного скролла */
@@ -1726,12 +1735,12 @@ var SCROLLING$1 = /* @__PURE__ */ ((SCROLLING2) => {
1726
1735
  SCROLLING2["NONE"] = "none";
1727
1736
  return SCROLLING2;
1728
1737
  })(SCROLLING$1 || {});
1729
- var SIZE$1 = /* @__PURE__ */ ((SIZE2) => {
1738
+ var SIZE$2 = /* @__PURE__ */ ((SIZE2) => {
1730
1739
  SIZE2["LG"] = "lg";
1731
1740
  SIZE2["SM"] = "sm";
1732
1741
  return SIZE2;
1733
- })(SIZE$1 || {});
1734
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1742
+ })(SIZE$2 || {});
1743
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1735
1744
  __name: "UiModalSidebar",
1736
1745
  props: {
1737
1746
  /** Атрибут id корневого элемента. Должен быть уникальным на странице */
@@ -1774,7 +1783,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1774
1783
  /** Размер панели */
1775
1784
  size: {
1776
1785
  type: String,
1777
- default: SIZE$1.SM
1786
+ default: SIZE$2.SM
1778
1787
  }
1779
1788
  },
1780
1789
  emits: [
@@ -1961,7 +1970,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1961
1970
  }))
1962
1971
  ]);
1963
1972
  };
1964
- const renderBody = () => props.scrolling === SCROLLING$1.NONE ? h("div", { class: "ui-v1-modal-sidebar__body-fixed" }, renderSlot2("default")) : h(_sfc_main$4, {
1973
+ const renderBody = () => props.scrolling === SCROLLING$1.NONE ? h("div", { class: "ui-v1-modal-sidebar__body-fixed" }, renderSlot2("default")) : h(_sfc_main$7, {
1965
1974
  class: "ui-v1-modal-sidebar__body",
1966
1975
  native: props.scrolling === SCROLLING$1.NATIVE,
1967
1976
  showOnMac: true,
@@ -1974,7 +1983,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1974
1983
  const direction = props.direction;
1975
1984
  const size = props.size;
1976
1985
  const setVisibility = (visibility2) => () => visibilityOfSidebar.value = visibility2;
1977
- return h(_sfc_main$6, {
1986
+ return h(_sfc_main$9, {
1978
1987
  name: `slide-${direction}`,
1979
1988
  onBeforeEnter: setVisibility("showing"),
1980
1989
  onAfterEnter: setVisibility("shown"),
@@ -1987,8 +1996,8 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1987
1996
  class: {
1988
1997
  "ui-v1-modal-sidebar": true,
1989
1998
  "ui-v1-modal-sidebar_left": direction === DIRECTION.LEFT,
1990
- "ui-v1-modal-sidebar_size_sm": size === SIZE$1.SM,
1991
- "ui-v1-modal-sidebar_size_lg": size === SIZE$1.LG
1999
+ "ui-v1-modal-sidebar_size_sm": size === SIZE$2.SM,
2000
+ "ui-v1-modal-sidebar_size_lg": size === SIZE$2.LG
1992
2001
  }
1993
2002
  }, [
1994
2003
  renderHeader(),
@@ -2002,7 +2011,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
2002
2011
  const setVisibility = (visibility2) => () => visibilityOfOverlay.value = visibility2;
2003
2012
  return !state.attached ? void 0 : h(Teleport, {
2004
2013
  to: (globals == null ? void 0 : globals.container) ?? document.body
2005
- }, h(_sfc_main$6, {
2014
+ }, h(_sfc_main$9, {
2006
2015
  name: "fade-2",
2007
2016
  onBeforeEnter: setVisibility("showing"),
2008
2017
  onAfterEnter: setVisibility("shown"),
@@ -2039,6 +2048,15 @@ const expect = (value) => ({
2039
2048
  return Object.values(variants).includes(value);
2040
2049
  }
2041
2050
  });
2051
+ const without = (obj, exclude) => {
2052
+ const newObj = {};
2053
+ Object.entries(obj).forEach(([key, value]) => {
2054
+ if (!exclude.includes(key)) {
2055
+ newObj[key] = value;
2056
+ }
2057
+ });
2058
+ return newObj;
2059
+ };
2042
2060
  var APPEARANCE = /* @__PURE__ */ ((APPEARANCE2) => {
2043
2061
  APPEARANCE2["ALERT"] = "alert";
2044
2062
  APPEARANCE2["DIALOG"] = "dialog";
@@ -2051,7 +2069,7 @@ var SCROLLING = /* @__PURE__ */ ((SCROLLING2) => {
2051
2069
  SCROLLING2["NATIVE"] = "native";
2052
2070
  return SCROLLING2;
2053
2071
  })(SCROLLING || {});
2054
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2072
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2055
2073
  __name: "UiModalWindowSurface",
2056
2074
  props: {
2057
2075
  /** Атрибут id корневого элемента модального окна. Должен быть уникальным на странице */
@@ -2265,7 +2283,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2265
2283
  const slots = useSlots();
2266
2284
  const renderBody = () => {
2267
2285
  const appearance = props.appearance;
2268
- return h(_sfc_main$6, {
2286
+ return h(_sfc_main$9, {
2269
2287
  name: "zoom",
2270
2288
  onBeforeEnter: () => visibilityOfBody.value = "showing",
2271
2289
  onAfterEnter: () => visibilityOfBody.value = "shown",
@@ -2290,7 +2308,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2290
2308
  };
2291
2309
  const EmbedModalWindowSurface = () => !state.attached ? void 0 : h(Teleport, {
2292
2310
  to: (globals == null ? void 0 : globals.container) ?? document.body
2293
- }, h(_sfc_main$6, {
2311
+ }, h(_sfc_main$9, {
2294
2312
  name: "fade-2",
2295
2313
  onBeforeEnter: () => visibilityOfOverlay.value = "showing",
2296
2314
  onAfterEnter: () => visibilityOfOverlay.value = "shown",
@@ -2307,7 +2325,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2307
2325
  "ui-v1-modal_overlapped": state.overlapped
2308
2326
  }],
2309
2327
  onClick: onOverlayClick
2310
- }, h(_sfc_main$4, {
2328
+ }, h(_sfc_main$7, {
2311
2329
  class: {
2312
2330
  "ui-v1-modal-window-container": true,
2313
2331
  "ui-v1-modal-window-container_fullscreen": props.fullscreen,
@@ -2364,7 +2382,7 @@ const _hoisted_5 = {
2364
2382
  key: 0,
2365
2383
  class: "ui-v1-modal-window__footer-text"
2366
2384
  };
2367
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2385
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2368
2386
  __name: "UiModalWindow",
2369
2387
  props: {
2370
2388
  /** Атрибут id корневого элемента модального окна. Должен быть уникальным на странице */
@@ -2478,7 +2496,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2478
2496
  });
2479
2497
  watch(() => props.opened, toggle);
2480
2498
  return (_ctx, _cache) => {
2481
- return openBlock(), createBlock(_sfc_main$2, mergeProps({
2499
+ return openBlock(), createBlock(_sfc_main$5, mergeProps({
2482
2500
  id: __props.id,
2483
2501
  opened: state.opened,
2484
2502
  closable: __props.closable,
@@ -2535,7 +2553,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2535
2553
  })
2536
2554
  ])) : createCommentVNode("", true)
2537
2555
  ], 2),
2538
- __props.responsive ? (openBlock(), createBlock(_sfc_main$4, {
2556
+ __props.responsive ? (openBlock(), createBlock(_sfc_main$7, {
2539
2557
  key: 0,
2540
2558
  class: "ui-v1-modal-window__content",
2541
2559
  "show-on-mac": "",
@@ -2582,13 +2600,13 @@ function render(_ctx, _cache) {
2582
2600
  ]));
2583
2601
  }
2584
2602
  const IconPinned = { render };
2585
- var SIZE = /* @__PURE__ */ ((SIZE2) => {
2603
+ var SIZE$1 = /* @__PURE__ */ ((SIZE2) => {
2586
2604
  SIZE2["LG"] = "lg";
2587
2605
  SIZE2["MD"] = "md";
2588
2606
  SIZE2["SM"] = "sm";
2589
2607
  SIZE2["XS"] = "xs";
2590
2608
  return SIZE2;
2591
- })(SIZE || {});
2609
+ })(SIZE$1 || {});
2592
2610
  function deltaTransition(el) {
2593
2611
  const delta = el.scrollWidth - el.clientWidth;
2594
2612
  const animationDuration = `${(el.scrollWidth / el.clientWidth * 2).toFixed(2)}s`;
@@ -2748,13 +2766,13 @@ const _hoisted_1 = {
2748
2766
  };
2749
2767
  const _hoisted_2 = { class: "ui-v1-tag__content-inner" };
2750
2768
  const _hoisted_3 = ["aria-label"];
2751
- const _sfc_main = /* @__PURE__ */ defineComponent({
2769
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
2752
2770
  __name: "UiTag",
2753
2771
  props: {
2754
2772
  /** Рамер */
2755
2773
  size: {
2756
2774
  type: String,
2757
- default: SIZE.LG
2775
+ default: SIZE$1.LG
2758
2776
  },
2759
2777
  /** Слева выводим иконку закреплённого тега */
2760
2778
  pinned: {
@@ -2841,16 +2859,206 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2841
2859
  };
2842
2860
  }
2843
2861
  });
2862
+ var SIZE = /* @__PURE__ */ ((SIZE2) => {
2863
+ SIZE2["SM"] = "sm";
2864
+ SIZE2["MD"] = "md";
2865
+ return SIZE2;
2866
+ })(SIZE || {});
2867
+ const ToolbarInjectKeys = {
2868
+ size: Symbol("UiToolbarSize")
2869
+ };
2870
+ const useToolbarSize = () => inject(ToolbarInjectKeys.size, computed(
2871
+ () => "sm"
2872
+ /* SM */
2873
+ ));
2874
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2875
+ ...{
2876
+ inheritAttrs: false
2877
+ },
2878
+ __name: "UiToolbar",
2879
+ props: {
2880
+ size: {
2881
+ type: String,
2882
+ default: SIZE.SM
2883
+ }
2884
+ },
2885
+ setup(__props) {
2886
+ const props = __props;
2887
+ provide(ToolbarInjectKeys.size, computed(() => props.size));
2888
+ return (_ctx, _cache) => {
2889
+ return renderSlot(_ctx.$slots, "default");
2890
+ };
2891
+ }
2892
+ });
2893
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2894
+ ...{
2895
+ inheritAttrs: false
2896
+ },
2897
+ __name: "UiToolbarButton",
2898
+ props: {
2899
+ /** Устанавливает атрибут href якоря */
2900
+ href: {
2901
+ type: null,
2902
+ validator: (href) => typeof href === "string" && isURL(href) || href === null,
2903
+ default: null
2904
+ },
2905
+ /** Регулирует цветовую схему кнопки: default, success or danger */
2906
+ variant: {
2907
+ type: String,
2908
+ default: VARIANT.DEFAULT
2909
+ },
2910
+ /** Если кнопка активна */
2911
+ active: {
2912
+ type: Boolean,
2913
+ default: false
2914
+ },
2915
+ /** Если кнопка отключена */
2916
+ disabled: {
2917
+ type: Boolean,
2918
+ default: false
2919
+ },
2920
+ /** Если кнопка заблокирована */
2921
+ locked: {
2922
+ type: Boolean,
2923
+ default: false
2924
+ }
2925
+ },
2926
+ setup(__props, { expose: __expose }) {
2927
+ const root = ref(null);
2928
+ __expose({
2929
+ click: () => {
2930
+ var _a;
2931
+ return (_a = root.value) == null ? void 0 : _a.click();
2932
+ },
2933
+ focus: () => {
2934
+ var _a;
2935
+ return (_a = root.value) == null ? void 0 : _a.focus();
2936
+ },
2937
+ blur: () => {
2938
+ var _a;
2939
+ return (_a = root.value) == null ? void 0 : _a.blur();
2940
+ }
2941
+ });
2942
+ const toolbarSize = useToolbarSize();
2943
+ const size = computed(() => {
2944
+ if (toolbarSize.value === SIZE.SM) {
2945
+ return SIZE$4.XS;
2946
+ }
2947
+ return SIZE$4.SM;
2948
+ });
2949
+ return (_ctx, _cache) => {
2950
+ return openBlock(), createBlock(_sfc_main$c, mergeProps({
2951
+ ref_key: "root",
2952
+ ref: root,
2953
+ href: __props.href,
2954
+ variant: __props.variant,
2955
+ size: size.value,
2956
+ active: __props.active,
2957
+ disabled: __props.disabled,
2958
+ locked: __props.locked,
2959
+ appearance: "secondary"
2960
+ }, unref(without)(_ctx.$attrs, [
2961
+ "appearance",
2962
+ "class",
2963
+ "style",
2964
+ "type"
2965
+ ])), {
2966
+ default: withCtx(() => [
2967
+ renderSlot(_ctx.$slots, "default")
2968
+ ]),
2969
+ _: 3
2970
+ }, 16, ["href", "variant", "size", "active", "disabled", "locked"]);
2971
+ };
2972
+ }
2973
+ });
2974
+ const _sfc_main = /* @__PURE__ */ defineComponent({
2975
+ ...{
2976
+ inheritAttrs: false
2977
+ },
2978
+ __name: "UiToolbarLink",
2979
+ props: {
2980
+ /** Атрибут ссылки */
2981
+ href: {
2982
+ type: String,
2983
+ validator: (href) => typeof href === "string" && isURL(href),
2984
+ default: "javascript:void(0);"
2985
+ },
2986
+ /**
2987
+ * Определяет, нужно ли открывать ссылку в новой вкладке.
2988
+ * Также добавляется иконка внешней ссылки (если компонент UiIcon установлен)
2989
+ */
2990
+ external: {
2991
+ type: Boolean,
2992
+ default: false
2993
+ },
2994
+ /** Тип ссылок */
2995
+ appearance: {
2996
+ type: String,
2997
+ validator: (appearance) => Object.values(APPEARANCE$1).includes(appearance),
2998
+ default: APPEARANCE$1.DEFAULT
2999
+ },
3000
+ /** Инвертированный цвет ссылок для тёмного фона */
3001
+ light: {
3002
+ type: Boolean,
3003
+ default: false
3004
+ },
3005
+ /** Жирное начертание */
3006
+ accent: {
3007
+ type: Boolean,
3008
+ default: false
3009
+ },
3010
+ /** Подчеркивание dotted вместо стандартного поведения */
3011
+ dotted: {
3012
+ type: Boolean,
3013
+ default: false
3014
+ },
3015
+ /** Определяет, будет ли текст ошибок обрезаться через многоточие или переноситься на следующую строку */
3016
+ ellipsis: {
3017
+ type: Boolean,
3018
+ default: false
3019
+ }
3020
+ },
3021
+ setup(__props) {
3022
+ return (_ctx, _cache) => {
3023
+ return openBlock(), createBlock(_sfc_main$a, mergeProps({
3024
+ href: __props.href,
3025
+ external: __props.external,
3026
+ appearance: __props.appearance,
3027
+ light: __props.light,
3028
+ accent: __props.accent,
3029
+ dotted: __props.dotted,
3030
+ ellipsis: __props.ellipsis,
3031
+ size: "small"
3032
+ }, unref(without)(_ctx.$attrs, ["class", "style"])), createSlots({
3033
+ default: withCtx(() => [
3034
+ renderSlot(_ctx.$slots, "default")
3035
+ ]),
3036
+ _: 2
3037
+ }, [
3038
+ _ctx.$slots.icon || __props.external ? {
3039
+ name: "icon",
3040
+ fn: withCtx(() => [
3041
+ renderSlot(_ctx.$slots, "icon")
3042
+ ]),
3043
+ key: "0"
3044
+ } : void 0
3045
+ ]), 1040, ["href", "external", "appearance", "light", "accent", "dotted", "ellipsis"]);
3046
+ };
3047
+ }
3048
+ });
2844
3049
  export {
2845
3050
  plugin as ModalPlugin,
2846
- _sfc_main$9 as UiButton,
2847
- _sfc_main$8 as UiError,
2848
- _sfc_main$7 as UiLink,
2849
- _sfc_main$5 as UiLoader,
2850
- _sfc_main$3 as UiModalSidebar,
2851
- _sfc_main$1 as UiModalWindow,
2852
- _sfc_main$2 as UiModalWindowSurface,
2853
- _sfc_main$4 as UiScrollBox,
2854
- _sfc_main as UiTag,
2855
- _sfc_main$6 as UiTransition
3051
+ _sfc_main$c as UiButton,
3052
+ _sfc_main$b as UiError,
3053
+ _sfc_main$a as UiLink,
3054
+ _sfc_main$8 as UiLoader,
3055
+ _sfc_main$6 as UiModalSidebar,
3056
+ _sfc_main$4 as UiModalWindow,
3057
+ _sfc_main$5 as UiModalWindowSurface,
3058
+ _sfc_main$7 as UiScrollBox,
3059
+ _sfc_main$3 as UiTag,
3060
+ _sfc_main$2 as UiToolbar,
3061
+ _sfc_main$1 as UiToolbarButton,
3062
+ _sfc_main as UiToolbarLink,
3063
+ _sfc_main$9 as UiTransition
2856
3064
  };
package/dist/remote.cjs CHANGED
@@ -99,6 +99,7 @@ const UiModalWindow = defineRemoteComponent(
99
99
  "update:opened"
100
100
  ],
101
101
  [
102
+ "icon",
102
103
  "title",
103
104
  "footer"
104
105
  ]
@@ -136,6 +137,16 @@ const UiTag = defineRemoteComponent(
136
137
  UiTagType,
137
138
  ["click", "focus", "blur", "remove"]
138
139
  );
140
+ const UiToolbarButtonType = "UiToolbarButton";
141
+ const UiToolbarButton = defineRemoteComponent(
142
+ UiToolbarButtonType,
143
+ ["click", "focus", "blur"]
144
+ );
145
+ const UiToolbarLinkType = "UiToolbarLink";
146
+ const UiToolbarLink = defineRemoteComponent(
147
+ UiToolbarLinkType,
148
+ ["click", "focus", "blur"]
149
+ );
139
150
  const UiTransitionType = "UiTransition";
140
151
  const UiTransition = defineRemoteComponent(UiTransitionType);
141
152
  exports.UiButton = UiButton;
@@ -156,5 +167,9 @@ exports.UiScrollBox = UiScrollBox;
156
167
  exports.UiScrollBoxType = UiScrollBoxType;
157
168
  exports.UiTag = UiTag;
158
169
  exports.UiTagType = UiTagType;
170
+ exports.UiToolbarButton = UiToolbarButton;
171
+ exports.UiToolbarButtonType = UiToolbarButtonType;
172
+ exports.UiToolbarLink = UiToolbarLink;
173
+ exports.UiToolbarLinkType = UiToolbarLinkType;
159
174
  exports.UiTransition = UiTransition;
160
175
  exports.UiTransitionType = UiTransitionType;
package/dist/remote.d.ts CHANGED
@@ -340,6 +340,38 @@ declare type UiTagProperties = {
340
340
 
341
341
  export declare const UiTagType: SchemaType<"UiTag", RemoteProperties<UiTagProperties>, Record<string, never>>;
342
342
 
343
+ export declare const UiToolbarButton: Component< {
344
+ [x: string]: unknown;
345
+ }, RemoteProperties<UiToolbarButtonProperties>, {
346
+ [x: string]: never;
347
+ }, {
348
+ [x: string]: never;
349
+ }, MethodOptions, {
350
+ click: (event: SerializedEvent) => boolean;
351
+ focus: (event: SerializedFocusEvent) => boolean;
352
+ blur: (event: SerializedEvent) => boolean;
353
+ }>;
354
+
355
+ declare type UiToolbarButtonProperties = Omit<UiButtonProperties, 'appearance' | 'size' | 'type'>;
356
+
357
+ export declare const UiToolbarButtonType: SchemaType<"UiToolbarButton", RemoteProperties<UiToolbarButtonProperties>, RemoteCallable<UiButtonMethods>>;
358
+
359
+ export declare const UiToolbarLink: Component< {
360
+ [x: string]: unknown;
361
+ }, RemoteProperties<UiToolbarLinkProperties>, {
362
+ [x: string]: never;
363
+ }, {
364
+ [x: string]: never;
365
+ }, MethodOptions, {
366
+ click: (event: SerializedEvent) => boolean;
367
+ focus: (event: SerializedFocusEvent) => boolean;
368
+ blur: (event: SerializedEvent) => boolean;
369
+ }>;
370
+
371
+ declare type UiToolbarLinkProperties = Omit<UiLinkProperties, 'size'>;
372
+
373
+ export declare const UiToolbarLinkType: SchemaType<"UiToolbarLink", RemoteProperties<UiToolbarLinkProperties>, Record<string, never>>;
374
+
343
375
  export declare const UiTransition: Component< {
344
376
  [x: string]: unknown;
345
377
  }, RemoteProperties<UiTransitionProps>, {
package/dist/remote.js CHANGED
@@ -97,6 +97,7 @@ const UiModalWindow = defineRemoteComponent(
97
97
  "update:opened"
98
98
  ],
99
99
  [
100
+ "icon",
100
101
  "title",
101
102
  "footer"
102
103
  ]
@@ -134,6 +135,16 @@ const UiTag = defineRemoteComponent(
134
135
  UiTagType,
135
136
  ["click", "focus", "blur", "remove"]
136
137
  );
138
+ const UiToolbarButtonType = "UiToolbarButton";
139
+ const UiToolbarButton = defineRemoteComponent(
140
+ UiToolbarButtonType,
141
+ ["click", "focus", "blur"]
142
+ );
143
+ const UiToolbarLinkType = "UiToolbarLink";
144
+ const UiToolbarLink = defineRemoteComponent(
145
+ UiToolbarLinkType,
146
+ ["click", "focus", "blur"]
147
+ );
137
148
  const UiTransitionType = "UiTransition";
138
149
  const UiTransition = defineRemoteComponent(UiTransitionType);
139
150
  export {
@@ -155,6 +166,10 @@ export {
155
166
  UiScrollBoxType,
156
167
  UiTag,
157
168
  UiTagType,
169
+ UiToolbarButton,
170
+ UiToolbarButtonType,
171
+ UiToolbarLink,
172
+ UiToolbarLinkType,
158
173
  UiTransition,
159
174
  UiTransitionType
160
175
  };
package/index.cjs ADDED
@@ -0,0 +1 @@
1
+ module.exports = {}
package/index.mjs ADDED
@@ -0,0 +1 @@
1
+ export { }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@retailcrm/embed-ui-v1-components",
3
3
  "type": "module",
4
- "version": "0.4.1-alpha.1",
4
+ "version": "0.4.1-alpha.11",
5
5
  "license": "MIT",
6
6
  "author": "RetailDriverLLC <integration@retailcrm.ru>",
7
7
  "repository": "git@github.com:retailcrm/embed-ui.git",
@@ -39,6 +39,8 @@
39
39
  "files": [
40
40
  "assets",
41
41
  "dist",
42
+ "index.cjs",
43
+ "index.mjs",
42
44
  "README.md"
43
45
  ],
44
46
  "scripts": {