@skyservice-developers/vue-dev-kit 2.22.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/ui/SkyButton/SkyButton.vue.d.ts +15 -63
- package/dist/style.css +1 -1
- package/dist/vue-dev-kit.cjs +11 -11
- package/dist/vue-dev-kit.js +2172 -2166
- package/package.json +8 -32
- package/compat/package.json +0 -6
- package/dist/shared/lib/button-classes.d.ts +0 -44
- package/dist/shared/ui/SkyButton/button-dom-contract.d.ts +0 -32
- package/dist/vue2/compat.cjs +0 -1
- package/dist/vue2/compat.js +0 -136
- package/dist/vue2/vue-dev-kit.cjs +0 -1
- package/dist/vue2/vue-dev-kit.js +0 -786
- package/vue2/package.json +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skyservice-developers/vue-dev-kit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Vue 3 component library + TypeScript SDK (iframe bridge + HTTP API) for Skyservice mini-apps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/vue-dev-kit.cjs",
|
|
@@ -22,43 +22,28 @@
|
|
|
22
22
|
"import": "./dist/vue-dev-kit.js",
|
|
23
23
|
"require": "./dist/vue-dev-kit.cjs"
|
|
24
24
|
},
|
|
25
|
-
"./vue2": {
|
|
26
|
-
"import": "./dist/vue2/vue-dev-kit.js",
|
|
27
|
-
"require": "./dist/vue2/vue-dev-kit.cjs"
|
|
28
|
-
},
|
|
29
|
-
"./compat": {
|
|
30
|
-
"import": "./dist/vue2/compat.js",
|
|
31
|
-
"require": "./dist/vue2/compat.cjs"
|
|
32
|
-
},
|
|
33
25
|
"./style.css": "./dist/style.css",
|
|
34
26
|
"./vue3/style.css": "./dist/style.css",
|
|
35
27
|
"./package.json": "./package.json"
|
|
36
28
|
},
|
|
37
29
|
"files": [
|
|
38
|
-
"dist"
|
|
39
|
-
"vue2",
|
|
40
|
-
"compat"
|
|
30
|
+
"dist"
|
|
41
31
|
],
|
|
42
32
|
"scripts": {
|
|
43
33
|
"dev": "vite",
|
|
44
|
-
"build": "
|
|
34
|
+
"build": "vite build",
|
|
45
35
|
"preview": "vite preview",
|
|
46
|
-
"test": "
|
|
47
|
-
"test:vue3": "vitest run",
|
|
48
|
-
"test:vue2": "vitest run -c vitest.vue2.config.ts",
|
|
36
|
+
"test": "vitest run",
|
|
49
37
|
"test:watch": "vitest",
|
|
50
38
|
"docs:dev": "vitepress dev docs",
|
|
51
39
|
"docs:build": "vitepress build docs",
|
|
52
40
|
"docs:preview": "vitepress preview docs",
|
|
53
41
|
"typecheck": "vue-tsc --noEmit -p tsconfig.typecheck.json",
|
|
54
42
|
"prepublishOnly": "npm run build",
|
|
55
|
-
"release": "npm publish --access public"
|
|
56
|
-
"build:vue3": "vite build",
|
|
57
|
-
"build:vue2": "vite build -c vite.vue2.config.js"
|
|
43
|
+
"release": "npm publish --access public"
|
|
58
44
|
},
|
|
59
45
|
"peerDependencies": {
|
|
60
|
-
"
|
|
61
|
-
"vue": "^2.7.0 || ^3.4.0"
|
|
46
|
+
"vue": "^3.4.0"
|
|
62
47
|
},
|
|
63
48
|
"dependencies": {
|
|
64
49
|
"@tanstack/vue-table": "^9.1.2",
|
|
@@ -69,9 +54,7 @@
|
|
|
69
54
|
"devDependencies": {
|
|
70
55
|
"@types/ua-parser-js": "^0.7.39",
|
|
71
56
|
"@vitejs/plugin-vue": "^5.0.4",
|
|
72
|
-
"@vitejs/plugin-vue2": "^2.3.3",
|
|
73
57
|
"@vue/test-utils": "^2.5.0",
|
|
74
|
-
"bootstrap-vue": "github:vladkvlchk/bootstrap-vue-fork#master",
|
|
75
58
|
"happy-dom": "^20.12.0",
|
|
76
59
|
"sass": "^1.77.0",
|
|
77
60
|
"typescript": "^5.4.5",
|
|
@@ -81,9 +64,7 @@
|
|
|
81
64
|
"vitepress": "^1.6.4",
|
|
82
65
|
"vitest": "^4.1.11",
|
|
83
66
|
"vue": "^3.4.21",
|
|
84
|
-
"vue-
|
|
85
|
-
"vue-tsc": "^3.0.0",
|
|
86
|
-
"vue2": "npm:vue@^2.7.16"
|
|
67
|
+
"vue-tsc": "^3.0.0"
|
|
87
68
|
},
|
|
88
69
|
"keywords": [
|
|
89
70
|
"vue",
|
|
@@ -105,10 +86,5 @@
|
|
|
105
86
|
"bugs": {
|
|
106
87
|
"url": "https://github.com/Skyservice-POS/vue-dev-kit/issues"
|
|
107
88
|
},
|
|
108
|
-
"homepage": "https://github.com/Skyservice-POS/vue-dev-kit#readme"
|
|
109
|
-
"peerDependenciesMeta": {
|
|
110
|
-
"bootstrap-vue": {
|
|
111
|
-
"optional": true
|
|
112
|
-
}
|
|
113
|
-
}
|
|
89
|
+
"homepage": "https://github.com/Skyservice-POS/vue-dev-kit#readme"
|
|
114
90
|
}
|
package/compat/package.json
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"//": "Proxy-каталог для збирачів без підтримки поля exports (webpack 4, з якого зібрана адмінка). Сучасні резолвери беруть підшлях ./compat з exports у кореневому package.json і сюди не заглядають.",
|
|
3
|
-
"main": "../dist/vue2/compat.cjs",
|
|
4
|
-
"module": "../dist/vue2/compat.js",
|
|
5
|
-
"sideEffects": false
|
|
6
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Класи кнопки — єдине джерело правди для обох збірок кіта.
|
|
3
|
-
*
|
|
4
|
-
* Vue 3-компонент і Vue 2-адаптер зобов'язані давати **однакову розмітку**:
|
|
5
|
-
* адмінка під час міграції стилізує кнопки bootstrap-селекторами, і будь-яка
|
|
6
|
-
* розбіжність між збірками означала б поламану верстку у фліп-день.
|
|
7
|
-
*
|
|
8
|
-
* Тому список класів рахується тут, а не в шаблонах. Продублювати його в двох
|
|
9
|
-
* місцях означало б рано чи пізно їх розсинхронити.
|
|
10
|
-
*/
|
|
11
|
-
export type SkyButtonVariant = 'primary' | 'danger' | 'secondary' | 'outline';
|
|
12
|
-
export type SkyButtonSize = 'sm' | 'md' | 'lg';
|
|
13
|
-
export interface SkyButtonClassProps {
|
|
14
|
-
variant?: SkyButtonVariant;
|
|
15
|
-
size?: SkyButtonSize;
|
|
16
|
-
block?: boolean;
|
|
17
|
-
loading?: boolean;
|
|
18
|
-
icon?: boolean;
|
|
19
|
-
disabled?: boolean;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Класи дизайн-системи. Їх розуміє власний CSS кіта, тож саме вони дають
|
|
23
|
-
* вигляд кнопки в міні-застосунках, де Bootstrap CSS не підключений.
|
|
24
|
-
*/
|
|
25
|
-
export declare function skyButtonClasses(props?: SkyButtonClassProps): string[];
|
|
26
|
-
/**
|
|
27
|
-
* Класи Bootstrap 4 — рівно ті, які обчислює `b-button`, і в тому ж порядку:
|
|
28
|
-
* `btn`, `btn-{variant}`, `btn-{size}`, `btn-block`, `disabled`.
|
|
29
|
-
*
|
|
30
|
-
* Vue 2-збірка отримує їх від самого `b-button`; Vue 3-збірка мусить
|
|
31
|
-
* відтворити їх сама, інакше стилі адмінки перестануть чіплятись.
|
|
32
|
-
*/
|
|
33
|
-
export declare function bootstrapButtonClasses(props?: SkyButtonClassProps): string[];
|
|
34
|
-
/**
|
|
35
|
-
* Повний список у тому самому порядку, що й у Vue 2-збірці.
|
|
36
|
-
*
|
|
37
|
-
* Порядок саме такий, бо `b-button` — функціональний компонент і зливає дані
|
|
38
|
-
* через `mergeData`: спершу йдуть його власні класи, і лише потім ті, які
|
|
39
|
-
* передали ззовні через `:class`. Перевірено тестом на живому `b-button`,
|
|
40
|
-
* а не виведено з документації.
|
|
41
|
-
*/
|
|
42
|
-
export declare function buttonClasses(props?: SkyButtonClassProps): string[];
|
|
43
|
-
/** Класи спінера всередині кнопки — те, що дає `<b-spinner small>`. */
|
|
44
|
-
export declare const BUTTON_SPINNER_CLASSES: string[];
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Контракт розмітки кнопки — спільна фікстура для обох збірок кіта.
|
|
3
|
-
*
|
|
4
|
-
* Vue 3-компонент і Vue 2-адаптер живуть у різних рантаймах, тож порівняти їх
|
|
5
|
-
* в одному прогоні тестів не вийде. Натомість кожна збірка звіряється з цим
|
|
6
|
-
* еталоном у своєму прогоні: якщо обидві збігаються з ним, вони збігаються
|
|
7
|
-
* між собою.
|
|
8
|
-
*
|
|
9
|
-
* Еталон знято з реального `b-button` — саме таку розмітку адмінка стилізує
|
|
10
|
-
* сьогодні. Класи `sky-btn*` додані понад неї: у міні-застосунках Bootstrap
|
|
11
|
-
* CSS немає, і без них кнопки лишились би без вигляду.
|
|
12
|
-
*
|
|
13
|
-
* Якщо тест червоний — правити треба компонент, а не еталон. Еталон
|
|
14
|
-
* змінюється лише свідомим рішенням змінити контракт.
|
|
15
|
-
*/
|
|
16
|
-
export interface ButtonDomCase {
|
|
17
|
-
name: string;
|
|
18
|
-
props: Record<string, unknown>;
|
|
19
|
-
/** Нормалізована розмітка: атрибути за абеткою, коментарі прибрані. */
|
|
20
|
-
html: string;
|
|
21
|
-
}
|
|
22
|
-
export declare const BUTTON_DOM_CASES: ButtonDomCase[];
|
|
23
|
-
/** Вміст слота в усіх кейсах — щоб порівнювати саме обгортку, а не текст. */
|
|
24
|
-
export declare const BUTTON_SLOT_TEXT = "\u0422\u0435\u043A\u0441\u0442";
|
|
25
|
-
/**
|
|
26
|
-
* Зводить розмітку до порівнюваного вигляду.
|
|
27
|
-
*
|
|
28
|
-
* Прибирає те, у чому Vue 2 і Vue 3 розходяться без різниці для верстки:
|
|
29
|
-
* scope-атрибути, порядок атрибутів, вузли-коментарі (плейсхолдери `v-if`)
|
|
30
|
-
* і форму булевих атрибутів (`disabled="disabled"` проти `disabled=""`).
|
|
31
|
-
*/
|
|
32
|
-
export declare function normalizeDom(node: Node): string;
|
package/dist/vue2/compat.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const y=13,k=32,u=(t,e)=>String(t).toLowerCase()===String(e).toLowerCase(),o=t=>!!(t.href||t.to)||u(t.tag,"a"),c=t=>typeof t.pressed=="boolean",f=t=>!(o(t)||t.tag&&!u(t.tag,"button")),h=t=>!o(t)&&!f(t),m=t=>[`btn-${t.variant||"secondary"}`,{[`btn-${t.size}`]:!!t.size,"btn-block":t.block,"rounded-pill":t.pill,"rounded-0":t.squared&&!t.pill,disabled:t.disabled,active:t.pressed}],B=(t,e)=>{const s=f(t),i=o(t),n=c(t),l=h(t),r=i&&t.href==="#",b=e&&e.role?e.role:null,p=e?e.tabindex:null;return{type:s&&!i?t.type:null,disabled:s?t.disabled:null,role:l||r?"button":b,"aria-disabled":l?String(t.disabled):null,"aria-pressed":n?String(t.pressed):null,autocomplete:n?"off":null,tabindex:t.disabled&&!s?"-1":l||r?"0":p}},a={name:"BButton",inheritAttrs:!1,props:{active:{type:Boolean,default:!1},block:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},href:{type:String,default:void 0},pill:{type:Boolean,default:!1},pressed:{type:Boolean,default:null},rel:{type:String,default:null},size:{type:String,default:void 0},squared:{type:Boolean,default:!1},tag:{type:String,default:"button"},target:{type:String,default:"_self"},to:{type:[String,Object],default:void 0},type:{type:String,default:"button"},variant:{type:String,default:"secondary"}},computed:{isLink(){return o(this.$props)},isToggle(){return c(this.$props)},computedTag(){return this.to?"router-link":this.isLink?"a":this.tag},computedClass(){return[...this.isLink?[{active:this.active,disabled:this.disabled}]:[],...m(this.$props)]},computedHref(){return this.href?this.href:typeof this.to=="string"?this.to||"/":"#"},computedRel(){return this.target==="_blank"&&this.rel===null?"noopener":this.rel||null},computedAttrs(){const t={...this.$attrs,...B(this.$props,this.$attrs)};return this.isLink&&!this.to&&(t.href=this.computedHref,t.rel=this.computedRel,t.target=this.target,this.disabled&&(t["aria-disabled"]="true")),Object.keys(t).forEach(e=>{(t[e]===null||t[e]===void 0)&&delete t[e]}),t}},methods:{onClick(t){if(this.disabled&&t instanceof Event){t.stopPropagation(),t.preventDefault();return}this.isToggle&&this.$emit("update:pressed",!this.pressed),this.$emit("click",t)},onKeydown(t){const e=h(this.$props),s=this.isLink&&this.href==="#";if(this.disabled||!(e||s))return;const{keyCode:i}=t;if(i===k||i===y&&e){const n=t.currentTarget||t.target;t.preventDefault(),n.click()}},onFocusin(t){this.isToggle&&t.target.classList.add("focus")},onFocusout(t){this.isToggle&&t.target.classList.remove("focus")}},render(t){const e={...this.$listeners,click:this.onClick,keydown:this.onKeydown};this.isToggle&&(e.focusin=this.onFocusin,e.focusout=this.onFocusout);const s={staticClass:"btn",class:this.computedClass,attrs:this.computedAttrs};return this.to?(s.props={to:this.to},s.nativeOn=e):s.on=e,t(this.computedTag,s,this.$slots.default)}},d={BButton:a,BBtn:a},g={install(t){Object.keys(d).forEach(e=>t.component(e,d[e]))}};exports.BButton=a;exports.BootstrapCompat=g;exports.default=g;
|
package/dist/vue2/compat.js
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
const u = (t, e) => String(t).toLowerCase() === String(e).toLowerCase(), o = (t) => !!(t.href || t.to) || u(t.tag, "a"), c = (t) => typeof t.pressed == "boolean", f = (t) => !(o(t) || t.tag && !u(t.tag, "button")), h = (t) => !o(t) && !f(t), p = (t) => [
|
|
2
|
-
// Дефолт саме `secondary` — так у BootstrapVue, і місця виклику на це спираються.
|
|
3
|
-
`btn-${t.variant || "secondary"}`,
|
|
4
|
-
{
|
|
5
|
-
[`btn-${t.size}`]: !!t.size,
|
|
6
|
-
"btn-block": t.block,
|
|
7
|
-
"rounded-pill": t.pill,
|
|
8
|
-
"rounded-0": t.squared && !t.pill,
|
|
9
|
-
disabled: t.disabled,
|
|
10
|
-
active: t.pressed
|
|
11
|
-
}
|
|
12
|
-
], y = (t, e) => {
|
|
13
|
-
const s = f(t), i = o(t), n = c(t), l = h(t), a = i && t.href === "#", g = e && e.role ? e.role : null, b = e ? e.tabindex : null;
|
|
14
|
-
return {
|
|
15
|
-
// `type` має сенс лише на справжній кнопці.
|
|
16
|
-
type: s && !i ? t.type : null,
|
|
17
|
-
disabled: s ? t.disabled : null,
|
|
18
|
-
// Довільному тегу й `href="#"` роль дописуємо самі — інакше зчитувач
|
|
19
|
-
// не зрозуміє, що це кнопка.
|
|
20
|
-
role: l || a ? "button" : g,
|
|
21
|
-
"aria-disabled": l ? String(t.disabled) : null,
|
|
22
|
-
"aria-pressed": n ? String(t.pressed) : null,
|
|
23
|
-
// Без цього деякі браузери відновлюють попередній стан перемикача
|
|
24
|
-
// при поверненні «назад».
|
|
25
|
-
autocomplete: n ? "off" : null,
|
|
26
|
-
tabindex: t.disabled && !s ? "-1" : l || a ? "0" : b
|
|
27
|
-
};
|
|
28
|
-
}, r = {
|
|
29
|
-
name: "BButton",
|
|
30
|
-
// class/style лишаються на корені автоматично, решта атрибутів
|
|
31
|
-
// розкладається вручну — так само, як це робив функціональний оригінал.
|
|
32
|
-
inheritAttrs: !1,
|
|
33
|
-
props: {
|
|
34
|
-
active: { type: Boolean, default: !1 },
|
|
35
|
-
block: { type: Boolean, default: !1 },
|
|
36
|
-
disabled: { type: Boolean, default: !1 },
|
|
37
|
-
href: { type: String, default: void 0 },
|
|
38
|
-
pill: { type: Boolean, default: !1 },
|
|
39
|
-
/** `true` / `false` — перемикач; `null` — звичайна кнопка. */
|
|
40
|
-
pressed: { type: Boolean, default: null },
|
|
41
|
-
rel: { type: String, default: null },
|
|
42
|
-
size: { type: String, default: void 0 },
|
|
43
|
-
squared: { type: Boolean, default: !1 },
|
|
44
|
-
tag: { type: String, default: "button" },
|
|
45
|
-
target: { type: String, default: "_self" },
|
|
46
|
-
to: { type: [String, Object], default: void 0 },
|
|
47
|
-
type: { type: String, default: "button" },
|
|
48
|
-
variant: { type: String, default: "secondary" }
|
|
49
|
-
},
|
|
50
|
-
computed: {
|
|
51
|
-
isLink() {
|
|
52
|
-
return o(this.$props);
|
|
53
|
-
},
|
|
54
|
-
isToggle() {
|
|
55
|
-
return c(this.$props);
|
|
56
|
-
},
|
|
57
|
-
computedTag() {
|
|
58
|
-
return this.to ? "router-link" : this.isLink ? "a" : this.tag;
|
|
59
|
-
},
|
|
60
|
-
/**
|
|
61
|
-
* У режимі посилання оригінал вкладає кнопку в `b-link`, а той додає власні
|
|
62
|
-
* `active`/`disabled` **перед** класами кнопки. Через це в розмітці
|
|
63
|
-
* BootstrapVue `disabled` трапляється двічі — відтворюємо як є, щоб
|
|
64
|
-
* порівняння з оригіналом було посимвольним.
|
|
65
|
-
*/
|
|
66
|
-
computedClass() {
|
|
67
|
-
return [...this.isLink ? [{ active: this.active, disabled: this.disabled }] : [], ...p(this.$props)];
|
|
68
|
-
},
|
|
69
|
-
/** Порожній `<a>` без href оригінал усе одно робить клікабельним. */
|
|
70
|
-
computedHref() {
|
|
71
|
-
return this.href ? this.href : typeof this.to == "string" ? this.to || "/" : "#";
|
|
72
|
-
},
|
|
73
|
-
/** `target="_blank"` без явного `rel` дістає `noopener` — захист від window.opener. */
|
|
74
|
-
computedRel() {
|
|
75
|
-
return this.target === "_blank" && this.rel === null ? "noopener" : this.rel || null;
|
|
76
|
-
},
|
|
77
|
-
computedAttrs() {
|
|
78
|
-
const t = { ...this.$attrs, ...y(this.$props, this.$attrs) };
|
|
79
|
-
return this.isLink && !this.to && (t.href = this.computedHref, t.rel = this.computedRel, t.target = this.target, this.disabled && (t["aria-disabled"] = "true")), Object.keys(t).forEach((e) => {
|
|
80
|
-
(t[e] === null || t[e] === void 0) && delete t[e];
|
|
81
|
-
}), t;
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
methods: {
|
|
85
|
-
onClick(t) {
|
|
86
|
-
if (this.disabled && t instanceof Event) {
|
|
87
|
-
t.stopPropagation(), t.preventDefault();
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
this.isToggle && this.$emit("update:pressed", !this.pressed), this.$emit("click", t);
|
|
91
|
-
},
|
|
92
|
-
onKeydown(t) {
|
|
93
|
-
const e = h(this.$props), s = this.isLink && this.href === "#";
|
|
94
|
-
if (this.disabled || !(e || s)) return;
|
|
95
|
-
const { keyCode: i } = t;
|
|
96
|
-
if (i === 32 || i === 13 && e) {
|
|
97
|
-
const n = t.currentTarget || t.target;
|
|
98
|
-
t.preventDefault(), n.click();
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
// Перемикач у фокусі має отримувати клас `focus` — на ньому тримається
|
|
102
|
-
// підсвітка в Bootstrap.
|
|
103
|
-
onFocusin(t) {
|
|
104
|
-
this.isToggle && t.target.classList.add("focus");
|
|
105
|
-
},
|
|
106
|
-
onFocusout(t) {
|
|
107
|
-
this.isToggle && t.target.classList.remove("focus");
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
render(t) {
|
|
111
|
-
const e = {
|
|
112
|
-
...this.$listeners,
|
|
113
|
-
click: this.onClick,
|
|
114
|
-
keydown: this.onKeydown
|
|
115
|
-
};
|
|
116
|
-
this.isToggle && (e.focusin = this.onFocusin, e.focusout = this.onFocusout);
|
|
117
|
-
const s = {
|
|
118
|
-
staticClass: "btn",
|
|
119
|
-
class: this.computedClass,
|
|
120
|
-
attrs: this.computedAttrs
|
|
121
|
-
};
|
|
122
|
-
return this.to ? (s.props = { to: this.to }, s.nativeOn = e) : s.on = e, t(this.computedTag, s, this.$slots.default);
|
|
123
|
-
}
|
|
124
|
-
}, d = {
|
|
125
|
-
BButton: r,
|
|
126
|
-
BBtn: r
|
|
127
|
-
}, k = {
|
|
128
|
-
install(t) {
|
|
129
|
-
Object.keys(d).forEach((e) => t.component(e, d[e]));
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
export {
|
|
133
|
-
r as BButton,
|
|
134
|
-
k as BootstrapCompat,
|
|
135
|
-
k as default
|
|
136
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("bootstrap-vue"),b=require("./compat.cjs"),l=n=>n==="success"?!0:n==="error"?!1:null,y=n=>n==="outline"?"outline-primary":n,o=n=>n==="md"||!n?null:n,u=n=>({success:"success",error:"danger",warning:"warning",info:"info",pending:"warning",default:"secondary"})[n]||"info",p=n=>(n||[]).map(e=>e!==null&&typeof e=="object"?{value:e.value,text:e.text!==void 0?e.text:String(e.value),disabled:!!e.disabled}:{value:e,text:String(e),disabled:!1});function s(n,e,a,t,f,m,i,xt){var d=typeof n=="function"?n.options:n;return e&&(d.render=e,d.staticRenderFns=a,d._compiled=!0),{exports:n,options:d}}const M={name:"SkyAlert",components:{BAlert:r.BAlert},inheritAttrs:!1,props:{tone:{type:String,default:"info",validator:n=>["success","error","warning","info"].includes(n)},showIcon:{type:Boolean,default:!0},dismissible:{type:Boolean,default:!1}},computed:{bsVariant(){return u(this.tone)}}};var L=function(){var e=this,a=e._self._c;return a("b-alert",e._b({attrs:{show:"",variant:e.bsVariant,dismissible:e.dismissible},on:{dismissed:function(t){return e.$emit("dismissed")}}},"b-alert",e.$attrs,!1),[e._t("default")],2)},q=[],E=s(M,L,q);const S=E.exports,U={name:"SkyBadge",components:{BBadge:r.BBadge},inheritAttrs:!1,props:{tone:{type:String,default:"default"},label:{type:String,default:""},dot:{type:Boolean,default:!0},pill:{type:Boolean,default:!1}},computed:{bsVariant(){return u(this.tone)}}};var H=function(){var e=this,a=e._self._c;return a("b-badge",e._b({attrs:{variant:e.bsVariant,pill:e.pill}},"b-badge",e.$attrs,!1),[e._t("default",function(){return[e._v(e._s(e.label))]})],2)},J=[],K=s(U,H,J);const h=K.exports,Q=n=>n==="sm"||n==="lg";function W(n={}){const{variant:e="primary",size:a="md",block:t,loading:f,icon:m}=n,i=["sky-btn",`sky-btn-${e}`];return Q(a)&&i.push(`sky-btn-${a}`),t&&i.push("sky-btn-block"),f&&i.push("sky-btn-loading"),m&&i.push("sky-btn-icon"),i}const X=["sky-btn-spinner","spinner-border","spinner-border-sm"],Y={name:"SkyButton",components:{BButton:r.BButton},inheritAttrs:!1,props:{variant:{type:String,default:"primary",validator:n=>["primary","danger","secondary","outline"].includes(n)},size:{type:String,default:"md",validator:n=>["sm","md","lg"].includes(n)},type:{type:String,default:"button"},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},block:{type:Boolean,default:!1},icon:{type:Boolean,default:!1}},computed:{bsVariant(){return y(this.variant)},bsSize(){return o(this.size)},skyClasses(){return W(this.$props)},spinnerClasses(){return X}}};var Z=function(){var e=this,a=e._self._c;return a("b-button",e._g(e._b({class:e.skyClasses,attrs:{variant:e.bsVariant,size:e.bsSize,type:e.type,block:e.block,disabled:e.disabled||e.loading}},"b-button",e.$attrs,!1),e.$listeners),[e.loading?a("span",{class:e.spinnerClasses,attrs:{"aria-hidden":"true"}}):e._e(),e._t("default")],2)},ee=[],te=s(Y,Z,ee);const v=te.exports,ne={name:"SkyCheckbox",components:{BFormCheckbox:r.BFormCheckbox},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:[Boolean,Array,String,Number],default:!1},value:{type:[String,Number,Boolean],default:!0},uncheckedValue:{type:[String,Number,Boolean],default:!1},switch:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},size:{type:String,default:"md"},name:{type:String,default:void 0},id:{type:String,default:void 0}},computed:{switchMode(){return this.$props.switch},bsSize(){return o(this.size)}}};var ae=function(){var e=this,a=e._self._c;return a("b-form-checkbox",e._b({attrs:{id:e.id,checked:e.modelValue,value:e.value,"unchecked-value":e.uncheckedValue,switch:e.switchMode,disabled:e.disabled,indeterminate:e.indeterminate,size:e.bsSize,name:e.name},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)}}},"b-form-checkbox",e.$attrs,!1),[e._t("default")],2)},re=[],se=s(ne,ae,re);const g=se.exports,oe={name:"SkyCheckboxGroup",components:{BFormCheckboxGroup:r.BFormCheckboxGroup},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:Array,default:()=>[]},options:{type:Array,default:()=>[]},name:{type:String,default:void 0},stacked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},size:{type:String,default:"md"},id:{type:String,default:void 0}},computed:{bsOptions(){return p(this.options)},bsSize(){return o(this.size)}}};var ie=function(){var e=this,a=e._self._c;return a("b-form-checkbox-group",e._b({attrs:{id:e.id,checked:e.modelValue,options:e.bsOptions,name:e.name,stacked:e.stacked,disabled:e.disabled,size:e.bsSize},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)}}},"b-form-checkbox-group",e.$attrs,!1),[e._t("default")],2)},le=[],de=s(oe,ie,le);const $=de.exports,ue={name:"SkyCollapse",components:{BCollapse:r.BCollapse},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:Boolean,default:!1},id:{type:String,default:void 0},accordion:{type:String,default:void 0}}};var pe=function(){var e=this,a=e._self._c;return a("b-collapse",e._b({attrs:{id:e.id,visible:e.modelValue,accordion:e.accordion},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},show:function(t){return e.$emit("show")},hidden:function(t){return e.$emit("hide")}}},"b-collapse",e.$attrs,!1),[e._t("default")],2)},ce=[],fe=s(ue,pe,ce);const k=fe.exports,me={name:"SkyDropdown",components:{BDropdown:r.BDropdown},inheritAttrs:!1,props:{text:{type:String,default:""},variant:{type:String,default:"secondary"},size:{type:String,default:"md"},disabled:{type:Boolean,default:!1},align:{type:String,default:"left",validator:n=>["left","right"].includes(n)},block:{type:Boolean,default:!1},menuClass:{type:[String,Array,Object],default:void 0},icon:{type:String,default:""}},computed:{bsVariant(){return y(this.variant)},bsSize(){return o(this.size)}}};var _e=function(){var e=this,a=e._self._c;return a("b-dropdown",e._g(e._b({attrs:{text:e.text,variant:e.bsVariant,size:e.bsSize,disabled:e.disabled,right:e.align==="right",block:e.block,"menu-class":e.menuClass,icon:e.icon},scopedSlots:e._u([e.$slots.trigger?{key:"button-content",fn:function(){return[e._t("trigger")]},proxy:!0}:null],null,!0)},"b-dropdown",e.$attrs,!1),e.$listeners),[e._t("default")],2)},be=[],ye=s(me,_e,be);const B=ye.exports,Se={name:"SkyDropdownDivider",components:{BDropdownDivider:r.BDropdownDivider},inheritAttrs:!1};var he=function(){var e=this,a=e._self._c;return a("b-dropdown-divider",e._b({},"b-dropdown-divider",e.$attrs,!1))},ve=[],ge=s(Se,he,ve);const x=ge.exports,$e={name:"SkyDropdownItem",components:{BDropdownItem:r.BDropdownItem},inheritAttrs:!1,props:{href:{type:String,default:void 0},disabled:{type:Boolean,default:!1}}};var ke=function(){var e=this,a=e._self._c;return a("b-dropdown-item",e._g(e._b({attrs:{href:e.href,disabled:e.disabled}},"b-dropdown-item",e.$attrs,!1),e.$listeners),[e._t("default")],2)},Be=[],xe=s($e,ke,Be);const V=xe.exports,Ve={name:"SkyFileInput",components:{BFormFile:r.BFormFile},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:[Object,Array],default:null},accept:{type:String,default:""},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:""},browseText:{type:String,default:void 0},dropPlaceholder:{type:String,default:void 0},state:{type:String,default:"default"}},computed:{bsState(){return l(this.state)}}};var Fe=function(){var e=this,a=e._self._c;return a("b-form-file",e._b({attrs:{value:e.modelValue,accept:e.accept,multiple:e.multiple,placeholder:e.placeholder,"browse-text":e.browseText,"drop-placeholder":e.dropPlaceholder,state:e.bsState},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)}}},"b-form-file",e.$attrs,!1))},we=[],ze=s(Ve,Fe,we);const F=ze.exports,Ae={name:"SkyFormGroup",components:{BFormGroup:r.BFormGroup},inheritAttrs:!1,props:{label:{type:String,default:""},labelFor:{type:String,default:void 0},description:{type:String,default:""},invalidFeedback:{type:String,default:""},state:{type:String,default:"default"},labelCols:{type:[String,Number],default:void 0},contentCols:{type:[String,Number],default:void 0}},computed:{bsState(){return l(this.state)}}};var Ce=function(){var e=this,a=e._self._c;return a("b-form-group",e._b({attrs:{label:e.label,"label-for":e.labelFor,description:e.description,"invalid-feedback":e.invalidFeedback,state:e.bsState,"label-cols":e.labelCols,"content-cols":e.contentCols},scopedSlots:e._u([e.$slots.label?{key:"label",fn:function(){return[e._t("label")]},proxy:!0}:null,e.$slots.description?{key:"description",fn:function(){return[e._t("description")]},proxy:!0}:null],null,!0)},"b-form-group",e.$attrs,!1),[e._t("default")],2)},Re=[],Te=s(Ae,Ce,Re);const w=Te.exports,Ie={name:"SkyInput",components:{BFormInput:r.BFormInput},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:[String,Number],default:""},type:{type:String,default:"text"},placeholder:{type:String,default:""},id:{type:String,default:void 0},disabled:{type:Boolean,default:!1},state:{type:String,default:"default"},hint:{type:String,default:""}},computed:{bsState(){return l(this.state)}},methods:{focus(){this.$refs.input&&this.$refs.input.focus()},blur(){this.$refs.input&&this.$refs.input.blur()},select(){this.$refs.input&&this.$refs.input.select()}}};var Oe=function(){var e=this,a=e._self._c;return e.hint?a("div",{staticClass:"sky-input-with-hint"},[a("b-form-input",e._b({ref:"input",attrs:{id:e.id,type:e.type,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,state:e.bsState},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)},blur:function(t){return e.$emit("blur",t)},focus:function(t){return e.$emit("focus",t)}}},"b-form-input",e.$attrs,!1)),a("small",{staticClass:"setting-hint",class:e.state},[e._v(e._s(e.hint))])],1):a("b-form-input",e._b({ref:"input",attrs:{id:e.id,type:e.type,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,state:e.bsState},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)},blur:function(t){return e.$emit("blur",t)},focus:function(t){return e.$emit("focus",t)}}},"b-form-input",e.$attrs,!1))},De=[],Ge=s(Ie,Oe,De);const z=Ge.exports,Ne={name:"SkyInputGroup",components:{BInputGroup:r.BInputGroup},inheritAttrs:!1,props:{size:{type:String,default:"md"},prepend:{type:String,default:void 0},append:{type:String,default:void 0}},computed:{bsSize(){return o(this.size)}}};var je=function(){var e=this,a=e._self._c;return a("b-input-group",e._b({attrs:{size:e.bsSize,prepend:e.prepend,append:e.append},scopedSlots:e._u([e.$slots.prepend?{key:"prepend",fn:function(){return[e._t("prepend")]},proxy:!0}:null,e.$slots.append?{key:"append",fn:function(){return[e._t("append")]},proxy:!0}:null],null,!0)},"b-input-group",e.$attrs,!1),[e._t("default")],2)},Pe=[],Me=s(Ne,je,Pe);const A=Me.exports,Le={name:"SkyLoader",components:{BSpinner:r.BSpinner},inheritAttrs:!1,props:{text:{type:String,default:""},size:{type:String,default:"md"},tone:{type:String,default:"default"},inline:{type:Boolean,default:!1}},computed:{bsVariant(){return u(this.tone)}}};var qe=function(){var e=this,a=e._self._c;return a("b-spinner",e._b({attrs:{small:e.size==="sm",variant:e.bsVariant,label:e.text}},"b-spinner",e.$attrs,!1))},Ee=[],Ue=s(Le,qe,Ee);const C=Ue.exports,He={name:"SkyProgress",components:{BProgress:r.BProgress},inheritAttrs:!1,props:{value:{type:Number,default:0},max:{type:Number,default:100},showValue:{type:Boolean,default:!1},precision:{type:Number,default:0},tone:{type:String,default:"info"},height:{type:String,default:void 0}},computed:{bsVariant(){return u(this.tone)}}};var Je=function(){var e=this,a=e._self._c;return a("b-progress",e._b({attrs:{value:e.value,max:e.max,"show-value":e.showValue,precision:e.precision,variant:e.bsVariant,height:e.height}},"b-progress",e.$attrs,!1))},Ke=[],Qe=s(He,Je,Ke);const R=Qe.exports,We={name:"SkyRadio",components:{BFormRadio:r.BFormRadio},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:[String,Number,Boolean],default:null},value:{type:[String,Number,Boolean],required:!0},name:{type:String,default:void 0},disabled:{type:Boolean,default:!1},size:{type:String,default:"md"},id:{type:String,default:void 0}},computed:{bsSize(){return o(this.size)}}};var Xe=function(){var e=this,a=e._self._c;return a("b-form-radio",e._b({attrs:{id:e.id,checked:e.modelValue,value:e.value,name:e.name,disabled:e.disabled,size:e.bsSize},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)}}},"b-form-radio",e.$attrs,!1),[e._t("default")],2)},Ye=[],Ze=s(We,Xe,Ye);const T=Ze.exports,et={name:"SkyRadioGroup",components:{BFormRadioGroup:r.BFormRadioGroup},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:[String,Number,Boolean],default:null},options:{type:Array,default:()=>[]},name:{type:String,default:void 0},stacked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},size:{type:String,default:"md"},id:{type:String,default:void 0}},computed:{bsOptions(){return p(this.options)},bsSize(){return o(this.size)}}};var tt=function(){var e=this,a=e._self._c;return a("b-form-radio-group",e._b({attrs:{id:e.id,checked:e.modelValue,options:e.bsOptions,name:e.name,stacked:e.stacked,disabled:e.disabled,size:e.bsSize},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)}}},"b-form-radio-group",e.$attrs,!1),[e._t("default")],2)},nt=[],at=s(et,tt,nt);const I=at.exports,rt={name:"SkySelect",components:{BFormSelect:r.BFormSelect,BFormSelectOption:r.BFormSelectOption},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:[String,Number],default:void 0},options:{type:Array,default:()=>[]},id:{type:String,default:void 0},disabled:{type:Boolean,default:!1},state:{type:String,default:"default"},placeholder:{type:String,default:""},hint:{type:String,default:""}},computed:{bsOptions(){return p(this.options)},bsState(){return l(this.state)}}};var st=function(){var e=this,a=e._self._c;return e.hint?a("div",{staticClass:"sky-select-with-hint"},[a("b-form-select",e._b({attrs:{id:e.id,value:e.modelValue,options:e.bsOptions,disabled:e.disabled,state:e.bsState},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)}},scopedSlots:e._u([e.placeholder?{key:"first",fn:function(){return[a("b-form-select-option",{attrs:{value:"",disabled:""}},[e._v(e._s(e.placeholder))])]},proxy:!0}:null],null,!0)},"b-form-select",e.$attrs,!1),[e._t("default")],2),a("small",{staticClass:"setting-hint",class:e.state},[e._v(e._s(e.hint))])],1):a("b-form-select",e._b({attrs:{id:e.id,value:e.modelValue,options:e.bsOptions,disabled:e.disabled,state:e.bsState},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)}},scopedSlots:e._u([e.placeholder?{key:"first",fn:function(){return[a("b-form-select-option",{attrs:{value:"",disabled:""}},[e._v(e._s(e.placeholder))])]},proxy:!0}:null],null,!0)},"b-form-select",e.$attrs,!1),[e._t("default")],2)},ot=[],it=s(rt,st,ot);const O=it.exports,lt={name:"SkySkeleton",components:{BSkeleton:r.BSkeleton},inheritAttrs:!1,props:{type:{type:String,default:"text",validator:n=>["text","avatar","button","input"].includes(n)},width:{type:String,default:void 0},height:{type:String,default:void 0},animation:{type:String,default:"wave"}}};var dt=function(){var e=this,a=e._self._c;return a("b-skeleton",e._b({attrs:{type:e.type,width:e.width,height:e.height,animation:e.animation}},"b-skeleton",e.$attrs,!1))},ut=[],pt=s(lt,dt,ut);const D=pt.exports,ct={name:"SkyTabs",components:{BTabs:r.BTabs,BTab:r.BTab},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:[String,Number],default:void 0},options:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1}},computed:{normalized(){return p(this.options)},activeIndex(){const n=this.normalized.findIndex(e=>e.value===this.modelValue);return n===-1?0:n}},methods:{onIndexChange(n){const e=this.normalized[n];e&&e.value!==this.modelValue&&this.$emit("update:modelValue",e.value)}}};var ft=function(){var e=this,a=e._self._c;return a("b-tabs",e._b({attrs:{value:e.activeIndex},on:{input:e.onIndexChange}},"b-tabs",e.$attrs,!1),e._l(e.normalized,function(t){return a("b-tab",{key:t.value,attrs:{title:t.text,disabled:e.disabled||t.disabled}})}),1)},mt=[],_t=s(ct,ft,mt);const G=_t.exports,bt={name:"SkyTagsInput",components:{BFormTags:r.BFormTags},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:Array,default:()=>[]},placeholder:{type:String,default:""},size:{type:String,default:"md"},separator:{type:[String,Array],default:void 0},addOnChange:{type:Boolean,default:!1},removeOnDelete:{type:Boolean,default:!1},duplicateTagText:{type:String,default:void 0},addButtonText:{type:String,default:void 0},inputId:{type:String,default:void 0},autofocus:{type:Boolean,default:!1},noOuterFocus:{type:Boolean,default:!1}},computed:{bsSize(){return o(this.size)}}};var yt=function(){var e=this,a=e._self._c;return a("b-form-tags",e._b({attrs:{value:e.modelValue,placeholder:e.placeholder,size:e.bsSize,separator:e.separator,"add-on-change":e.addOnChange,"remove-on-delete":e.removeOnDelete,"duplicate-tag-text":e.duplicateTagText,"add-button-text":e.addButtonText,"input-id":e.inputId,autofocus:e.autofocus,"no-outer-focus":e.noOuterFocus},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)}}},"b-form-tags",e.$attrs,!1))},St=[],ht=s(bt,yt,St);const N=ht.exports,vt={name:"SkyTextarea",components:{BFormTextarea:r.BFormTextarea},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{modelValue:{type:[String,Number],default:""},rows:{type:[String,Number],default:3},maxRows:{type:[String,Number],default:void 0},placeholder:{type:String,default:""},id:{type:String,default:void 0},disabled:{type:Boolean,default:!1},state:{type:String,default:"default"}},computed:{bsState(){return l(this.state)}}};var gt=function(){var e=this,a=e._self._c;return a("b-form-textarea",e._b({attrs:{id:e.id,value:e.modelValue,rows:e.rows,"max-rows":e.maxRows,placeholder:e.placeholder,disabled:e.disabled,state:e.bsState},on:{input:function(t){e.$emit("update:modelValue",t),e.$emit("input",t)},change:function(t){return e.$emit("change",t)},blur:function(t){return e.$emit("blur",t)}}},"b-form-textarea",e.$attrs,!1))},$t=[],kt=s(vt,gt,$t);const j=kt.exports,_=Object.freeze(Object.defineProperty({__proto__:null,SkyAlert:S,SkyBadge:h,SkyButton:v,SkyCheckbox:g,SkyCheckboxGroup:$,SkyCollapse:k,SkyDropdown:B,SkyDropdownDivider:x,SkyDropdownItem:V,SkyFileInput:F,SkyFormGroup:w,SkyInput:z,SkyInputGroup:A,SkyLoader:C,SkyProgress:R,SkyRadio:T,SkyRadioGroup:I,SkySelect:O,SkySkeleton:D,SkyTabs:G,SkyTagsInput:N,SkyTextarea:j},Symbol.toStringTag,{value:"Module"})),P=r.VBTooltip,c={SkyTooltip:P},Bt={install(n){Object.keys(_).forEach(e=>n.component(e,_[e])),Object.keys(c).forEach(e=>n.directive(e,c[e]))}};exports.BButton=b.BButton;exports.BootstrapCompat=b.BootstrapCompat;exports.SkyAlert=S;exports.SkyBadge=h;exports.SkyButton=v;exports.SkyCheckbox=g;exports.SkyCheckboxGroup=$;exports.SkyCollapse=k;exports.SkyDropdown=B;exports.SkyDropdownDivider=x;exports.SkyDropdownItem=V;exports.SkyFileInput=F;exports.SkyFormGroup=w;exports.SkyInput=z;exports.SkyInputGroup=A;exports.SkyLoader=C;exports.SkyProgress=R;exports.SkyRadio=T;exports.SkyRadioGroup=I;exports.SkySelect=O;exports.SkySkeleton=D;exports.SkyTabs=G;exports.SkyTagsInput=N;exports.SkyTextarea=j;exports.SkyTooltip=P;exports.default=Bt;exports.directives=c;
|