@retailcrm/embed-ui-v1-components 0.5.2 → 0.5.3

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.
@@ -11,6 +11,10 @@
11
11
  }
12
12
  }
13
13
 
14
+ .circle (@size) {
15
+ .square-rounded(@size, 50%);
16
+ }
17
+
14
18
  .square (@size) {
15
19
  width: @size;
16
20
  min-width: @size;
package/dist/host.cjs CHANGED
@@ -60,7 +60,7 @@ var VARIANT = /* @__PURE__ */ ((VARIANT2) => {
60
60
  VARIANT2["DANGER"] = "danger";
61
61
  return VARIANT2;
62
62
  })(VARIANT || {});
63
- const _sfc_main$d = vue.defineComponent({
63
+ const _sfc_main$f = vue.defineComponent({
64
64
  props: {
65
65
  /** Устанавливает тип кнопки */
66
66
  type: {
@@ -156,12 +156,178 @@ const _sfc_main$d = vue.defineComponent({
156
156
  };
157
157
  }
158
158
  });
159
+ const _hoisted_1$a = {
160
+ xmlns: "http://www.w3.org/2000/svg",
161
+ viewBox: "0 0 24 24"
162
+ };
163
+ function render$4(_ctx, _cache) {
164
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$a, _cache[0] || (_cache[0] = [
165
+ vue.createElementVNode("path", {
166
+ fill: "currentColor",
167
+ "fill-rule": "evenodd",
168
+ d: "M19.793 6.965a.77.77 0 0 1-.022 1.075l-9.815 9.607a1.224 1.224 0 0 1-1.714.006l-4.01-3.878a.77.77 0 0 1-.028-1.074l.684-.736a.735.735 0 0 1 1.053-.028l3.15 3.046 8.96-8.771a.735.735 0 0 1 1.054.022z",
169
+ "clip-rule": "evenodd"
170
+ }, null, -1)
171
+ ]));
172
+ }
173
+ const IconDone = { render: render$4 };
174
+ const expect = (value) => ({
175
+ toBeOneOf(variants) {
176
+ return Object.values(variants).includes(value);
177
+ }
178
+ });
179
+ const pick = (attrs, criteria) => {
180
+ return Object.keys(attrs).filter(criteria).reduce((picked, key) => ({
181
+ ...picked,
182
+ [key]: attrs[key]
183
+ }), {});
184
+ };
185
+ const without = (obj, exclude) => {
186
+ const newObj = {};
187
+ Object.entries(obj).forEach(([key, value]) => {
188
+ if (!exclude.includes(key)) {
189
+ newObj[key] = value;
190
+ }
191
+ });
192
+ return newObj;
193
+ };
194
+ const _hoisted_1$9 = ["id", "value", "name", "disabled", "checked"];
195
+ const _hoisted_2$3 = { class: "ui-v1-checkbox__checkmark" };
196
+ let counter$2 = 0;
197
+ const __default__$1 = {};
198
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
199
+ ...__default__$1,
200
+ __name: "UiCheckbox",
201
+ props: {
202
+ id: {
203
+ type: null,
204
+ validator: (id) => id === void 0 || typeof id === "string" && id.length > 0 && /^[A-Za-z]/.test(id),
205
+ default: void 0
206
+ },
207
+ /** Атрибут name нативного поля ввода */
208
+ name: {
209
+ type: String,
210
+ default: () => "ui-v1-checkbox-" + ++counter$2
211
+ },
212
+ /** Значение модели используемое с директивой v-model */
213
+ model: {
214
+ type: null,
215
+ default: void 0
216
+ },
217
+ /** Значение, добавляемое или удаляемое из модели в зависимости от флага checked, если модель является массивом */
218
+ value: {
219
+ type: null,
220
+ default: void 0
221
+ },
222
+ /** Задает значение, если флаг checked равен true, а модель не является массивом */
223
+ valueOfTruthy: {
224
+ type: null,
225
+ default: true
226
+ },
227
+ /** Задает значение, если флаг checked равен false, а модель не является массивом */
228
+ valueOfFalsy: {
229
+ type: null,
230
+ default: false
231
+ },
232
+ /** Задает "состояние" неопределенности для бокса, чье состояние "включенности" зависит от множества других боксов */
233
+ indeterminate: {
234
+ type: Boolean,
235
+ default: false
236
+ },
237
+ /** Задает стили для бокса уменьшенного размера */
238
+ small: {
239
+ type: Boolean,
240
+ default: false
241
+ },
242
+ /** Заблокированный */
243
+ disabled: {
244
+ type: Boolean,
245
+ default: false
246
+ }
247
+ },
248
+ emits: [
249
+ /** Изменение значения модели */
250
+ "change",
251
+ /** Изменение значения модели. Для v-model */
252
+ "update:model"
253
+ ],
254
+ setup(__props, { expose: __expose, emit: __emit }) {
255
+ const isArray = Array.isArray;
256
+ const props = __props;
257
+ const emit = __emit;
258
+ const checkbox = vue.ref(null);
259
+ const click = () => {
260
+ var _a;
261
+ return (_a = checkbox.value) == null ? void 0 : _a.click();
262
+ };
263
+ const focus = () => {
264
+ var _a;
265
+ return (_a = checkbox.value) == null ? void 0 : _a.focus();
266
+ };
267
+ const blur = () => {
268
+ var _a;
269
+ return (_a = checkbox.value) == null ? void 0 : _a.blur();
270
+ };
271
+ __expose({
272
+ click,
273
+ focus,
274
+ blur
275
+ });
276
+ const contains = (array, value) => array.some((v) => v === value);
277
+ const checked = vue.computed(() => {
278
+ return isArray(props.model) ? contains(props.model, props.value) : props.model === props.valueOfTruthy;
279
+ });
280
+ const calculate = (checked2) => {
281
+ if (isArray(props.model)) {
282
+ return checked2 ? contains(props.model, props.value) ? props.model : [...props.model, props.value] : [...props.model].filter((v) => v !== props.value);
283
+ }
284
+ return checked2 ? props.valueOfTruthy : props.valueOfFalsy;
285
+ };
286
+ const onChange = (event) => {
287
+ const checkbox2 = event.target;
288
+ const value = calculate(checkbox2.checked);
289
+ emit("change", value);
290
+ emit("update:model", value);
291
+ };
292
+ return (_ctx, _cache) => {
293
+ return vue.openBlock(), vue.createElementBlock("span", vue.mergeProps({
294
+ class: {
295
+ "ui-v1-checkbox": true,
296
+ "ui-v1-checkbox_small": __props.small,
297
+ "ui-v1-checkbox_checked": checked.value,
298
+ "ui-v1-checkbox_indeterminate": __props.indeterminate,
299
+ "ui-v1-checkbox_disabled": __props.disabled
300
+ }
301
+ }, vue.unref(pick)(_ctx.$attrs, (key) => !key.startsWith("aria-") && !key.startsWith("on"))), [
302
+ vue.createElementVNode("input", vue.mergeProps({
303
+ id: __props.id,
304
+ ref_key: "checkbox",
305
+ ref: checkbox,
306
+ value: vue.unref(isArray)(__props.model) ? __props.value : void 0,
307
+ name: __props.name,
308
+ disabled: __props.disabled,
309
+ checked: checked.value
310
+ }, vue.unref(pick)(_ctx.$attrs, (key) => key.startsWith("aria-") || key.startsWith("on")), {
311
+ type: "checkbox",
312
+ class: "ui-v1-checkbox__input",
313
+ onChange
314
+ }), null, 16, _hoisted_1$9),
315
+ vue.createElementVNode("span", _hoisted_2$3, [
316
+ checked.value && !__props.indeterminate ? (vue.openBlock(), vue.createBlock(vue.unref(IconDone), {
317
+ key: 0,
318
+ class: "ui-v1-checkbox__checkmark-icon"
319
+ })) : vue.createCommentVNode("", true)
320
+ ])
321
+ ], 16);
322
+ };
323
+ }
324
+ });
159
325
  var ALIGN = /* @__PURE__ */ ((ALIGN2) => {
160
326
  ALIGN2["LEFT"] = "left";
161
327
  ALIGN2["RIGHT"] = "right";
162
328
  return ALIGN2;
163
329
  })(ALIGN || {});
164
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
330
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
165
331
  __name: "UiError",
166
332
  props: {
167
333
  /** Тест, разметка ошибки */
@@ -200,12 +366,12 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
200
366
  };
201
367
  }
202
368
  });
203
- const _hoisted_1$7 = {
369
+ const _hoisted_1$8 = {
204
370
  xmlns: "http://www.w3.org/2000/svg",
205
371
  viewBox: "0 0 24 24"
206
372
  };
207
373
  function render$3(_ctx, _cache) {
208
- return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$7, _cache[0] || (_cache[0] = [
374
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$8, _cache[0] || (_cache[0] = [
209
375
  vue.createElementVNode("path", {
210
376
  fill: "currentColor",
211
377
  d: "m6.844 17.854-.7-.703a.5.5 0 0 1 0-.704l8.48-8.456-6.212.007a.49.49 0 0 1-.496-.5l.007-.991a.5.5 0 0 1 .496-.5L16.994 6c.196 0 .385.078.524.218l.265.267c.137.142.215.33.217.528l-.007 8.633a.5.5 0 0 1-.496.5h-.992a.48.48 0 0 1-.49-.493l.007-6.255-8.48 8.456a.49.49 0 0 1-.698 0"
@@ -231,7 +397,7 @@ var SIZE$3 = /* @__PURE__ */ ((SIZE2) => {
231
397
  SIZE2["TITLE02"] = "title-02";
232
398
  return SIZE2;
233
399
  })(SIZE$3 || {});
234
- const _hoisted_1$6 = ["href", "target"];
400
+ const _hoisted_1$7 = ["href", "target"];
235
401
  const _hoisted_2$2 = {
236
402
  key: 0,
237
403
  class: "ui-v1-link__inner"
@@ -240,7 +406,7 @@ const _hoisted_3$2 = {
240
406
  key: 2,
241
407
  class: "ui-v1-link__icon"
242
408
  };
243
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
409
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
244
410
  __name: "UiLink",
245
411
  props: {
246
412
  /** Атрибут ссылки */
@@ -314,11 +480,11 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
314
480
  vue.createVNode(vue.unref(IconOpenInNew), { class: "ui-v1-link__icon-sprite" })
315
481
  ])
316
482
  ])) : vue.createCommentVNode("", true)
317
- ], 16, _hoisted_1$6);
483
+ ], 16, _hoisted_1$7);
318
484
  };
319
485
  }
320
486
  });
321
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
487
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
322
488
  __name: "UiTransition",
323
489
  props: {
324
490
  /** Наименование анимации перехода */
@@ -346,7 +512,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
346
512
  };
347
513
  }
348
514
  });
349
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
515
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
350
516
  __name: "UiLoader",
351
517
  props: {
352
518
  /** Диаметр (размер) окружности индикатора */
@@ -378,7 +544,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
378
544
  },
379
545
  setup(__props) {
380
546
  return (_ctx, _cache) => {
381
- return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.transition ? _sfc_main$a : "div"), vue.normalizeProps(vue.guardReactiveProps(__props.transition ? {
547
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.transition ? _sfc_main$b : "div"), vue.normalizeProps(vue.guardReactiveProps(__props.transition ? {
382
548
  appear: true,
383
549
  class: "ui-v1-loader-wrapper",
384
550
  name: __props.transition
@@ -1530,7 +1696,7 @@ var PerfectScrollbar$1 = {
1530
1696
  );
1531
1697
  }
1532
1698
  };
1533
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1699
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1534
1700
  __name: "UiScrollBox",
1535
1701
  props: {
1536
1702
  /** Наименование тэга-обёртки для нативного скролла */
@@ -1634,12 +1800,12 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1634
1800
  };
1635
1801
  }
1636
1802
  });
1637
- const _hoisted_1$5 = {
1803
+ const _hoisted_1$6 = {
1638
1804
  xmlns: "http://www.w3.org/2000/svg",
1639
1805
  viewBox: "0 0 24 24"
1640
1806
  };
1641
1807
  function render$2(_ctx, _cache) {
1642
- return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$5, _cache[0] || (_cache[0] = [
1808
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$6, _cache[0] || (_cache[0] = [
1643
1809
  vue.createElementVNode("path", {
1644
1810
  fill: "currentColor",
1645
1811
  d: "M7.113 6.176a.6.6 0 0 1 .848 0L12 10.214l4.038-4.038a.6.6 0 0 1 .849 0l.937.937a.6.6 0 0 1 0 .848L13.785 12l4.04 4.04a.6.6 0 0 1 0 .848l-.937.937a.6.6 0 0 1-.849 0L12 13.784l-4.038 4.04a.6.6 0 0 1-.849 0l-.937-.937a.6.6 0 0 1 0-.848l4.04-4.04-4.039-4.038a.6.6 0 0 1 0-.849z"
@@ -1718,8 +1884,8 @@ class LayerRegistry {
1718
1884
  }
1719
1885
  }
1720
1886
  const layers = new LayerRegistry();
1721
- let counter = 0;
1722
- const uid = (prefix) => `${prefix}-${++counter}`;
1887
+ let counter$1 = 0;
1888
+ const uid = (prefix) => `${prefix}-${++counter$1}`;
1723
1889
  var CLOSE_METHOD = /* @__PURE__ */ ((CLOSE_METHOD2) => {
1724
1890
  CLOSE_METHOD2["CLICK_CROSS"] = "Cross";
1725
1891
  CLOSE_METHOD2["CLICK_OUTSIDE"] = "Outside";
@@ -1742,7 +1908,7 @@ var SIZE$2 = /* @__PURE__ */ ((SIZE2) => {
1742
1908
  SIZE2["SM"] = "sm";
1743
1909
  return SIZE2;
1744
1910
  })(SIZE$2 || {});
1745
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1911
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1746
1912
  __name: "UiModalSidebar",
1747
1913
  props: {
1748
1914
  /** Атрибут id корневого элемента. Должен быть уникальным на странице */
@@ -1972,7 +2138,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1972
2138
  }))
1973
2139
  ]);
1974
2140
  };
1975
- const renderBody = () => props.scrolling === SCROLLING$1.NONE ? vue.h("div", { class: "ui-v1-modal-sidebar__body-fixed" }, renderSlot("default")) : vue.h(_sfc_main$8, {
2141
+ const renderBody = () => props.scrolling === SCROLLING$1.NONE ? vue.h("div", { class: "ui-v1-modal-sidebar__body-fixed" }, renderSlot("default")) : vue.h(_sfc_main$9, {
1976
2142
  class: "ui-v1-modal-sidebar__body",
1977
2143
  native: props.scrolling === SCROLLING$1.NATIVE,
1978
2144
  showOnMac: true,
@@ -1985,7 +2151,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1985
2151
  const direction = props.direction;
1986
2152
  const size = props.size;
1987
2153
  const setVisibility = (visibility2) => () => visibilityOfSidebar.value = visibility2;
1988
- return vue.h(_sfc_main$a, {
2154
+ return vue.h(_sfc_main$b, {
1989
2155
  name: `slide-${direction}`,
1990
2156
  onBeforeEnter: setVisibility("showing"),
1991
2157
  onAfterEnter: setVisibility("shown"),
@@ -2013,7 +2179,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2013
2179
  const setVisibility = (visibility2) => () => visibilityOfOverlay.value = visibility2;
2014
2180
  return !state.attached ? void 0 : vue.h(vue.Teleport, {
2015
2181
  to: (globals == null ? void 0 : globals.container) ?? document.body
2016
- }, vue.h(_sfc_main$a, {
2182
+ }, vue.h(_sfc_main$b, {
2017
2183
  name: "fade-2",
2018
2184
  onBeforeEnter: setVisibility("showing"),
2019
2185
  onAfterEnter: setVisibility("shown"),
@@ -2045,20 +2211,6 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2045
2211
  };
2046
2212
  }
2047
2213
  });
2048
- const expect = (value) => ({
2049
- toBeOneOf(variants) {
2050
- return Object.values(variants).includes(value);
2051
- }
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
- };
2062
2214
  var APPEARANCE = /* @__PURE__ */ ((APPEARANCE2) => {
2063
2215
  APPEARANCE2["ALERT"] = "alert";
2064
2216
  APPEARANCE2["DIALOG"] = "dialog";
@@ -2071,7 +2223,7 @@ var SCROLLING = /* @__PURE__ */ ((SCROLLING2) => {
2071
2223
  SCROLLING2["NATIVE"] = "native";
2072
2224
  return SCROLLING2;
2073
2225
  })(SCROLLING || {});
2074
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2226
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2075
2227
  __name: "UiModalWindowSurface",
2076
2228
  props: {
2077
2229
  /** Атрибут id корневого элемента модального окна. Должен быть уникальным на странице */
@@ -2285,7 +2437,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2285
2437
  const slots = vue.useSlots();
2286
2438
  const renderBody = () => {
2287
2439
  const appearance = props.appearance;
2288
- return vue.h(_sfc_main$a, {
2440
+ return vue.h(_sfc_main$b, {
2289
2441
  name: "zoom",
2290
2442
  onBeforeEnter: () => visibilityOfBody.value = "showing",
2291
2443
  onAfterEnter: () => visibilityOfBody.value = "shown",
@@ -2310,7 +2462,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2310
2462
  };
2311
2463
  const EmbedModalWindowSurface = () => !state.attached ? void 0 : vue.h(vue.Teleport, {
2312
2464
  to: (globals == null ? void 0 : globals.container) ?? document.body
2313
- }, vue.h(_sfc_main$a, {
2465
+ }, vue.h(_sfc_main$b, {
2314
2466
  name: "fade-2",
2315
2467
  onBeforeEnter: () => visibilityOfOverlay.value = "showing",
2316
2468
  onAfterEnter: () => visibilityOfOverlay.value = "shown",
@@ -2327,7 +2479,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2327
2479
  "ui-v1-modal_overlapped": state.overlapped
2328
2480
  }],
2329
2481
  onClick: onOverlayClick
2330
- }, vue.h(_sfc_main$8, {
2482
+ }, vue.h(_sfc_main$9, {
2331
2483
  class: {
2332
2484
  "ui-v1-modal-window-container": true,
2333
2485
  "ui-v1-modal-window-container_fullscreen": props.fullscreen,
@@ -2352,12 +2504,12 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2352
2504
  };
2353
2505
  }
2354
2506
  });
2355
- const _hoisted_1$4 = {
2507
+ const _hoisted_1$5 = {
2356
2508
  xmlns: "http://www.w3.org/2000/svg",
2357
2509
  viewBox: "0 0 24 24"
2358
2510
  };
2359
2511
  function render$1(_ctx, _cache) {
2360
- return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$4, _cache[0] || (_cache[0] = [
2512
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$5, _cache[0] || (_cache[0] = [
2361
2513
  vue.createElementVNode("path", {
2362
2514
  fill: "currentColor",
2363
2515
  "fill-rule": "evenodd",
@@ -2367,7 +2519,7 @@ function render$1(_ctx, _cache) {
2367
2519
  ]));
2368
2520
  }
2369
2521
  const IconWarning = { render: render$1 };
2370
- const _hoisted_1$3 = {
2522
+ const _hoisted_1$4 = {
2371
2523
  key: 0,
2372
2524
  class: "ui-v1-modal-window__icon"
2373
2525
  };
@@ -2384,7 +2536,7 @@ const _hoisted_5 = {
2384
2536
  key: 0,
2385
2537
  class: "ui-v1-modal-window__footer-text"
2386
2538
  };
2387
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2539
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2388
2540
  __name: "UiModalWindow",
2389
2541
  props: {
2390
2542
  /** Атрибут id корневого элемента модального окна. Должен быть уникальным на странице */
@@ -2498,7 +2650,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2498
2650
  });
2499
2651
  vue.watch(() => props.opened, toggle);
2500
2652
  return (_ctx, _cache) => {
2501
- return vue.openBlock(), vue.createBlock(_sfc_main$6, vue.mergeProps({
2653
+ return vue.openBlock(), vue.createBlock(_sfc_main$7, vue.mergeProps({
2502
2654
  id: __props.id,
2503
2655
  opened: state.opened,
2504
2656
  closable: __props.closable,
@@ -2526,7 +2678,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2526
2678
  "ui-v1-modal-window__header_pinned": _ctx.$slots.title && state.scrolled && __props.appearance === vue.unref(APPEARANCE).POPUP && !__props.responsive
2527
2679
  })
2528
2680
  }, [
2529
- __props.appearance === vue.unref(APPEARANCE).ALERT ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
2681
+ __props.appearance === vue.unref(APPEARANCE).ALERT ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
2530
2682
  vue.renderSlot(_ctx.$slots, "icon", {
2531
2683
  overlapped: state.overlapped
2532
2684
  }, () => [
@@ -2555,7 +2707,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2555
2707
  })
2556
2708
  ])) : vue.createCommentVNode("", true)
2557
2709
  ], 2),
2558
- __props.responsive ? (vue.openBlock(), vue.createBlock(_sfc_main$8, {
2710
+ __props.responsive ? (vue.openBlock(), vue.createBlock(_sfc_main$9, {
2559
2711
  key: 0,
2560
2712
  class: "ui-v1-modal-window__content",
2561
2713
  "show-on-mac": "",
@@ -2588,6 +2740,97 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2588
2740
  };
2589
2741
  }
2590
2742
  });
2743
+ const _hoisted_1$3 = ["id", "name", "value", "checked", "disabled"];
2744
+ let counter = 0;
2745
+ const __default__ = {};
2746
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2747
+ ...__default__,
2748
+ __name: "UiRadio",
2749
+ props: {
2750
+ id: {
2751
+ type: null,
2752
+ validator: (id) => id === void 0 || typeof id === "string" && id.length > 0 && /^[A-Za-z]/.test(id),
2753
+ default: void 0
2754
+ },
2755
+ /** Атрибут name нативного поля ввода */
2756
+ name: {
2757
+ type: String,
2758
+ default: () => "ui-v1-radio-" + ++counter
2759
+ },
2760
+ /** Значение модели используемое с директивой v-model */
2761
+ model: {
2762
+ type: null,
2763
+ default: void 0
2764
+ },
2765
+ /** Атрибут value нативного поля ввода */
2766
+ value: {
2767
+ type: null,
2768
+ required: true
2769
+ },
2770
+ /** Заблокированный */
2771
+ disabled: {
2772
+ type: Boolean,
2773
+ default: false
2774
+ }
2775
+ },
2776
+ emits: [
2777
+ /** Изменение значения модели */
2778
+ "change",
2779
+ /** Изменение значения модели. Для v-model */
2780
+ "update:model"
2781
+ ],
2782
+ setup(__props, { expose: __expose, emit: __emit }) {
2783
+ const props = __props;
2784
+ const emit = __emit;
2785
+ const radio = vue.ref(null);
2786
+ const click = () => {
2787
+ var _a;
2788
+ return (_a = radio.value) == null ? void 0 : _a.click();
2789
+ };
2790
+ const focus = () => {
2791
+ var _a;
2792
+ return (_a = radio.value) == null ? void 0 : _a.focus();
2793
+ };
2794
+ const blur = () => {
2795
+ var _a;
2796
+ return (_a = radio.value) == null ? void 0 : _a.blur();
2797
+ };
2798
+ __expose({
2799
+ click,
2800
+ focus,
2801
+ blur
2802
+ });
2803
+ const checked = vue.computed(() => props.value === props.model);
2804
+ const onChange = () => {
2805
+ emit("change", props.value);
2806
+ emit("update:model", props.value);
2807
+ };
2808
+ return (_ctx, _cache) => {
2809
+ return vue.openBlock(), vue.createElementBlock("span", vue.mergeProps({
2810
+ class: {
2811
+ "ui-v1-radio": true,
2812
+ "ui-v1-radio_checked": checked.value,
2813
+ "ui-v1-radio_disabled": __props.disabled
2814
+ }
2815
+ }, vue.unref(pick)(_ctx.$attrs, (key) => !key.startsWith("aria-") && !key.startsWith("on"))), [
2816
+ vue.createElementVNode("input", vue.mergeProps({
2817
+ id: __props.id,
2818
+ ref_key: "radio",
2819
+ ref: radio,
2820
+ name: __props.name,
2821
+ value: __props.value,
2822
+ checked: checked.value,
2823
+ disabled: __props.disabled
2824
+ }, vue.unref(pick)(_ctx.$attrs, (key) => key.startsWith("aria-") || key.startsWith("on")), {
2825
+ type: "radio",
2826
+ class: "ui-v1-radio__input",
2827
+ onChange
2828
+ }), null, 16, _hoisted_1$3),
2829
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "ui-v1-radio__checkmark" }, null, -1))
2830
+ ], 16);
2831
+ };
2832
+ }
2833
+ });
2591
2834
  const _hoisted_1$2 = {
2592
2835
  xmlns: "http://www.w3.org/2000/svg",
2593
2836
  viewBox: "0 0 24 24"
@@ -2966,7 +3209,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
2966
3209
  return SIZE$4.SM;
2967
3210
  });
2968
3211
  return (_ctx, _cache) => {
2969
- return vue.openBlock(), vue.createBlock(_sfc_main$d, vue.mergeProps({
3212
+ return vue.openBlock(), vue.createBlock(_sfc_main$f, vue.mergeProps({
2970
3213
  ref_key: "root",
2971
3214
  ref: root,
2972
3215
  href: __props.href,
@@ -3039,7 +3282,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
3039
3282
  },
3040
3283
  setup(__props) {
3041
3284
  return (_ctx, _cache) => {
3042
- return vue.openBlock(), vue.createBlock(_sfc_main$b, vue.mergeProps({
3285
+ return vue.openBlock(), vue.createBlock(_sfc_main$c, vue.mergeProps({
3043
3286
  href: __props.href,
3044
3287
  external: __props.external,
3045
3288
  appearance: __props.appearance,
@@ -3222,7 +3465,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
3222
3465
  });
3223
3466
  return (_ctx, _cache) => {
3224
3467
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
3225
- !ready.value ? (vue.openBlock(), vue.createBlock(_sfc_main$9, { key: 0 })) : vue.createCommentVNode("", true),
3468
+ !ready.value ? (vue.openBlock(), vue.createBlock(_sfc_main$a, { key: 0 })) : vue.createCommentVNode("", true),
3226
3469
  vue.withDirectives((vue.openBlock(), vue.createElementBlock("iframe", {
3227
3470
  ref_key: "iframe",
3228
3471
  ref: iframe,
@@ -3237,18 +3480,20 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
3237
3480
  });
3238
3481
  exports.I18nPlugin = plugin;
3239
3482
  exports.ModalPlugin = plugin$1;
3240
- exports.UiButton = _sfc_main$d;
3241
- exports.UiError = _sfc_main$c;
3242
- exports.UiLink = _sfc_main$b;
3243
- exports.UiLoader = _sfc_main$9;
3244
- exports.UiModalSidebar = _sfc_main$7;
3245
- exports.UiModalWindow = _sfc_main$5;
3246
- exports.UiModalWindowSurface = _sfc_main$6;
3247
- exports.UiScrollBox = _sfc_main$8;
3483
+ exports.UiButton = _sfc_main$f;
3484
+ exports.UiCheckbox = _sfc_main$e;
3485
+ exports.UiError = _sfc_main$d;
3486
+ exports.UiLink = _sfc_main$c;
3487
+ exports.UiLoader = _sfc_main$a;
3488
+ exports.UiModalSidebar = _sfc_main$8;
3489
+ exports.UiModalWindow = _sfc_main$6;
3490
+ exports.UiModalWindowSurface = _sfc_main$7;
3491
+ exports.UiRadio = _sfc_main$5;
3492
+ exports.UiScrollBox = _sfc_main$9;
3248
3493
  exports.UiTag = _sfc_main$4;
3249
3494
  exports.UiToolbar = _sfc_main$3;
3250
3495
  exports.UiToolbarButton = _sfc_main$2;
3251
3496
  exports.UiToolbarLink = _sfc_main$1;
3252
- exports.UiTransition = _sfc_main$a;
3497
+ exports.UiTransition = _sfc_main$b;
3253
3498
  exports.UiYandexMap = _sfc_main;
3254
3499
  exports.VueI18n = VueI18n;