@fastkit/vui 0.6.31 ā 0.6.35
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/vui.cjs.js +207 -11
- package/dist/vui.cjs.prod.js +207 -11
- package/dist/vui.css +37 -2
- package/dist/vui.d.ts +141 -0
- package/dist/vui.esm-bundler.js +203 -13
- package/dist/vui.min.css +1 -1
- package/dist/vui.min.css.map +1 -1
- package/package.json +11 -9
package/dist/vui.cjs.js
CHANGED
|
@@ -11,8 +11,14 @@ var vueLoading = require('@fastkit/vue-loading');
|
|
|
11
11
|
var iconFont = require('@fastkit/icon-font');
|
|
12
12
|
var helpers = require('@fastkit/helpers');
|
|
13
13
|
var vueAppLayout = require('@fastkit/vue-app-layout');
|
|
14
|
+
var vue3 = require('@tiptap/vue-3');
|
|
15
|
+
var StarterKit = require('@tiptap/starter-kit');
|
|
14
16
|
var vueScroller = require('@fastkit/vue-scroller');
|
|
15
17
|
|
|
18
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
19
|
+
|
|
20
|
+
var StarterKit__default = /*#__PURE__*/_interopDefaultLegacy(StarterKit);
|
|
21
|
+
|
|
16
22
|
const CONTROL_SIZES = ['sm', 'md', 'lg'];
|
|
17
23
|
const CONTROL_FIELD_VARIANTS = ['outlined', 'filled', 'flat'];
|
|
18
24
|
|
|
@@ -479,8 +485,10 @@ const VButton = vue.defineComponent({
|
|
|
479
485
|
});
|
|
480
486
|
const isPlain = vue.computed(() => color.variant.value.value === vui.setting('plainVariant') && color.color.value.value === defaults.color);
|
|
481
487
|
const isLoading = vue.computed(() => props.loading); // const isDisabled = computed(() => props.disabled);
|
|
488
|
+
// const isRounded = computed(() =>
|
|
489
|
+
// props.rounded != null ? props.rounded : !!icon.value,
|
|
490
|
+
// );
|
|
482
491
|
|
|
483
|
-
const isRounded = vue.computed(() => props.rounded || !!icon.value);
|
|
484
492
|
const spacer = vue.computed(() => {
|
|
485
493
|
const _spacer = props.spacer;
|
|
486
494
|
if (!_spacer) return;
|
|
@@ -490,7 +498,7 @@ const VButton = vue.defineComponent({
|
|
|
490
498
|
spacer.value ? `v-button--spacer-${spacer.value}` : undefined, `v-button--${control.size.value}`, {
|
|
491
499
|
'v-button--loading': isLoading.value,
|
|
492
500
|
'v-button--icon': !!icon.value,
|
|
493
|
-
'v-button--rounded':
|
|
501
|
+
'v-button--rounded': props.rounded,
|
|
494
502
|
'v-button--plain': isPlain.value
|
|
495
503
|
}]);
|
|
496
504
|
return () => {
|
|
@@ -511,6 +519,66 @@ const VButton = vue.defineComponent({
|
|
|
511
519
|
|
|
512
520
|
});
|
|
513
521
|
|
|
522
|
+
const VButtonGroup = vue.defineComponent({
|
|
523
|
+
name: 'VButtonGroup',
|
|
524
|
+
props: { ...vueColorScheme.colorSchemeProps(),
|
|
525
|
+
...createControlProps(),
|
|
526
|
+
disabled: Boolean
|
|
527
|
+
},
|
|
528
|
+
|
|
529
|
+
setup(props, ctx) {
|
|
530
|
+
return () => {
|
|
531
|
+
let buttonLength = 0;
|
|
532
|
+
const children = (vueUtils.renderSlotOrEmpty(ctx.slots) || []).map(node => {
|
|
533
|
+
if (!vue.isVNode(node) || node.type !== VButton) {
|
|
534
|
+
return {
|
|
535
|
+
isButton: false,
|
|
536
|
+
node
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
buttonLength++;
|
|
541
|
+
return {
|
|
542
|
+
isButton: true,
|
|
543
|
+
node
|
|
544
|
+
};
|
|
545
|
+
}); // const children = renderSlotOrEmpty(ctx.slots) || [];
|
|
546
|
+
// const $children = children.map((child) => {
|
|
547
|
+
// if (!isVNode(child) || child.type !== VButton) return child;
|
|
548
|
+
// const $child = cloneVNode(child, {
|
|
549
|
+
// ...props,
|
|
550
|
+
// ...child.props,
|
|
551
|
+
// });
|
|
552
|
+
// return $child;
|
|
553
|
+
// });
|
|
554
|
+
|
|
555
|
+
let buttonIndex = 0;
|
|
556
|
+
const $children = children.map(child => {
|
|
557
|
+
if (child.isButton) {
|
|
558
|
+
buttonIndex++;
|
|
559
|
+
const hasLeft = buttonIndex > 1;
|
|
560
|
+
const hasRight = buttonIndex < buttonLength;
|
|
561
|
+
const childProps = child.node.props;
|
|
562
|
+
return vue.cloneVNode(child.node, { ...props,
|
|
563
|
+
...childProps,
|
|
564
|
+
rouded: false,
|
|
565
|
+
class: ['v-button-group__item', {
|
|
566
|
+
'v-button-group__item--has-left': hasLeft,
|
|
567
|
+
'v-button-group__item--has-right': hasRight
|
|
568
|
+
}]
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
return child.node;
|
|
573
|
+
});
|
|
574
|
+
return vue.createVNode("div", {
|
|
575
|
+
"class": "v-button-group"
|
|
576
|
+
}, [$children]);
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
});
|
|
581
|
+
|
|
514
582
|
function _isSlot$c(s) {
|
|
515
583
|
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
|
|
516
584
|
}
|
|
@@ -841,9 +909,9 @@ const VListTile = vue.defineComponent({
|
|
|
841
909
|
return icon;
|
|
842
910
|
});
|
|
843
911
|
const endIcon = vue.computed(() => resolveRawIconProp(false, props.endIcon));
|
|
844
|
-
const hasTo = vue.computed(() => !!
|
|
912
|
+
const hasTo = vue.computed(() => !!ctx.attrs.to);
|
|
845
913
|
const link = vueRouter.useLink({
|
|
846
|
-
to:
|
|
914
|
+
to: ctx.attrs.to || ''
|
|
847
915
|
});
|
|
848
916
|
const isActive = vue.computed(() => {
|
|
849
917
|
if (!hasTo.value) return false;
|
|
@@ -965,7 +1033,11 @@ function _isSlot$a(s) {
|
|
|
965
1033
|
|
|
966
1034
|
function createNavigationItemProps() {
|
|
967
1035
|
return { ...createListTileProps(),
|
|
968
|
-
match: String
|
|
1036
|
+
match: String // key: {
|
|
1037
|
+
// type: [String, Number],
|
|
1038
|
+
// required: true,
|
|
1039
|
+
// },
|
|
1040
|
+
|
|
969
1041
|
};
|
|
970
1042
|
}
|
|
971
1043
|
function resolveNavigationItemInput(input) {
|
|
@@ -1010,12 +1082,14 @@ const VNavigationItem = vue.defineComponent({
|
|
|
1010
1082
|
const c = props.children;
|
|
1011
1083
|
return c && c.length ? c : undefined;
|
|
1012
1084
|
});
|
|
1013
|
-
const to = vue.computed(() =>
|
|
1085
|
+
const to = vue.computed(() => ctx.attrs.to);
|
|
1014
1086
|
const match = vue.computed(() => {
|
|
1015
1087
|
const {
|
|
1016
|
-
match
|
|
1017
|
-
to
|
|
1088
|
+
match
|
|
1018
1089
|
} = props;
|
|
1090
|
+
const {
|
|
1091
|
+
to
|
|
1092
|
+
} = ctx.attrs;
|
|
1019
1093
|
if (match) return match;
|
|
1020
1094
|
if (!to) return;
|
|
1021
1095
|
if (typeof to === 'string') return to;
|
|
@@ -1085,6 +1159,7 @@ const VNavigationItem = vue.defineComponent({
|
|
|
1085
1159
|
});
|
|
1086
1160
|
|
|
1087
1161
|
function open() {
|
|
1162
|
+
if (!children.value) return;
|
|
1088
1163
|
opened.value = true;
|
|
1089
1164
|
}
|
|
1090
1165
|
|
|
@@ -1098,9 +1173,13 @@ const VNavigationItem = vue.defineComponent({
|
|
|
1098
1173
|
|
|
1099
1174
|
const onClick = ev => {
|
|
1100
1175
|
if (!to.value) {
|
|
1101
|
-
toggle();
|
|
1102
|
-
}
|
|
1176
|
+
return toggle();
|
|
1177
|
+
}
|
|
1103
1178
|
|
|
1179
|
+
open(); // if (!to.value) {
|
|
1180
|
+
// toggle();
|
|
1181
|
+
// }
|
|
1182
|
+
// ctx.emit('click', ev);
|
|
1104
1183
|
};
|
|
1105
1184
|
|
|
1106
1185
|
const onChangeActive = isActive => {
|
|
@@ -1122,6 +1201,9 @@ const VNavigationItem = vue.defineComponent({
|
|
|
1122
1201
|
ctx.emit('changeActive', isActive);
|
|
1123
1202
|
};
|
|
1124
1203
|
|
|
1204
|
+
ctx.expose({
|
|
1205
|
+
close
|
|
1206
|
+
});
|
|
1125
1207
|
return () => {
|
|
1126
1208
|
let _slot;
|
|
1127
1209
|
|
|
@@ -1173,6 +1255,28 @@ const VNavigation = vue.defineComponent({
|
|
|
1173
1255
|
const c = props.caption;
|
|
1174
1256
|
return typeof c === 'function' ? c() : c;
|
|
1175
1257
|
});
|
|
1258
|
+
const itemsRef = vue.ref([]);
|
|
1259
|
+
vue.onBeforeUpdate(() => {
|
|
1260
|
+
itemsRef.value = [];
|
|
1261
|
+
});
|
|
1262
|
+
|
|
1263
|
+
function setItemRef(item, itemRef) {
|
|
1264
|
+
itemsRef.value.push({
|
|
1265
|
+
key: item.key,
|
|
1266
|
+
ref: itemRef
|
|
1267
|
+
});
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
function onItemActivated(item) {
|
|
1271
|
+
itemsRef.value.forEach(({
|
|
1272
|
+
key,
|
|
1273
|
+
ref
|
|
1274
|
+
}) => {
|
|
1275
|
+
if (key === item.key) return;
|
|
1276
|
+
ref.close();
|
|
1277
|
+
});
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1176
1280
|
return () => {
|
|
1177
1281
|
const $caption = caption.value;
|
|
1178
1282
|
return vue.createVNode("nav", {
|
|
@@ -1181,7 +1285,17 @@ const VNavigation = vue.defineComponent({
|
|
|
1181
1285
|
"class": "v-navigation__caption"
|
|
1182
1286
|
}, [$caption]), items.value.map(item => renderNavigationItemInput(item, {
|
|
1183
1287
|
class: 'v-navigation__item',
|
|
1184
|
-
startIconEmptySpace: startIconEmptySpace.value
|
|
1288
|
+
startIconEmptySpace: startIconEmptySpace.value,
|
|
1289
|
+
ref: ref => {
|
|
1290
|
+
setItemRef(item, ref);
|
|
1291
|
+
},
|
|
1292
|
+
onChangeActive: isActive => {
|
|
1293
|
+
if (isActive
|
|
1294
|
+
/* && item.children && item.children.length*/
|
|
1295
|
+
) {
|
|
1296
|
+
onItemActivated(item);
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1185
1299
|
}))]);
|
|
1186
1300
|
};
|
|
1187
1301
|
}
|
|
@@ -1930,6 +2044,86 @@ const VTextarea = vue.defineComponent({
|
|
|
1930
2044
|
|
|
1931
2045
|
});
|
|
1932
2046
|
|
|
2047
|
+
const VWysiwygEditor = vue.defineComponent({
|
|
2048
|
+
name: 'VWysiwygEditor',
|
|
2049
|
+
props: { // ...props,
|
|
2050
|
+
...vueKit.createFormControlProps(),
|
|
2051
|
+
...createControlFieldProps(),
|
|
2052
|
+
...createControlFieldProviderProps(),
|
|
2053
|
+
...createControlProps(),
|
|
2054
|
+
...vueKit.defineSlotsProps()
|
|
2055
|
+
},
|
|
2056
|
+
|
|
2057
|
+
// emits,
|
|
2058
|
+
setup(props, ctx) {
|
|
2059
|
+
const editor = vue3.useEditor({
|
|
2060
|
+
content: '<p>Iām running Tiptap with Vue.js. š</p>',
|
|
2061
|
+
extensions: [StarterKit__default]
|
|
2062
|
+
}); // const vui = useVui();
|
|
2063
|
+
// const inputControl = useTiptapControl(props, ctx, {
|
|
2064
|
+
// nodeType: VUI_TEXTAREA_SYMBOL,
|
|
2065
|
+
// defaultRows: vui.tiptapRows,
|
|
2066
|
+
// });
|
|
2067
|
+
// const control = useControl(props);
|
|
2068
|
+
// useControlField(props);
|
|
2069
|
+
|
|
2070
|
+
return {
|
|
2071
|
+
editor // ...inputControl.expose(),
|
|
2072
|
+
// ...control,
|
|
2073
|
+
|
|
2074
|
+
};
|
|
2075
|
+
},
|
|
2076
|
+
|
|
2077
|
+
render() {
|
|
2078
|
+
return vue.createVNode(VFormControl, {
|
|
2079
|
+
"nodeControl": this.nodeControl,
|
|
2080
|
+
"label": this.label,
|
|
2081
|
+
"hint": this.hint,
|
|
2082
|
+
"hiddenInfo": this.hiddenInfo,
|
|
2083
|
+
"onClickLabel": ev => {// this.focus();
|
|
2084
|
+
}
|
|
2085
|
+
}, { ...this.$slots,
|
|
2086
|
+
default: () => vue.createVNode(VControlField, {
|
|
2087
|
+
"class": "v-wysiwyg-editor__input",
|
|
2088
|
+
"autoHeight": true,
|
|
2089
|
+
"startAdornment": this.startAdornment,
|
|
2090
|
+
"endAdornment": this.endAdornment
|
|
2091
|
+
}, { ...this.$slots,
|
|
2092
|
+
default: () => {
|
|
2093
|
+
const {
|
|
2094
|
+
editor
|
|
2095
|
+
} = this;
|
|
2096
|
+
return vue.createVNode(vue.Fragment, null, [vue.createVNode(vue3.EditorContent, {
|
|
2097
|
+
"class": "v-wysiwyg-editor__input__element wysiwyg",
|
|
2098
|
+
"editor": editor
|
|
2099
|
+
}, null), !!editor && vue.createVNode(vue3.BubbleMenu, {
|
|
2100
|
+
"class": "v-wysiwyg-editor__bubble-menu",
|
|
2101
|
+
"editor": editor
|
|
2102
|
+
}, {
|
|
2103
|
+
default: () => [vue.createVNode(VButton, {
|
|
2104
|
+
"size": "sm",
|
|
2105
|
+
"onClick": () => {
|
|
2106
|
+
editor.chain().focus().toggleBold().run();
|
|
2107
|
+
}
|
|
2108
|
+
}, {
|
|
2109
|
+
default: () => [vue.createTextVNode("Bold")]
|
|
2110
|
+
})]
|
|
2111
|
+
})]);
|
|
2112
|
+
} // this.tiptapControl.createInputElement({
|
|
2113
|
+
// class: 'v-wysiwyg-editor__input__element',
|
|
2114
|
+
// }),
|
|
2115
|
+
|
|
2116
|
+
}) // infoAppends: () => {
|
|
2117
|
+
// const { counterResult } = this;
|
|
2118
|
+
// if (!counterResult) return;
|
|
2119
|
+
// return <VTextCounter {...counterResult} />;
|
|
2120
|
+
// },
|
|
2121
|
+
|
|
2122
|
+
});
|
|
2123
|
+
}
|
|
2124
|
+
|
|
2125
|
+
});
|
|
2126
|
+
|
|
1933
2127
|
const {
|
|
1934
2128
|
props,
|
|
1935
2129
|
emits
|
|
@@ -3456,6 +3650,7 @@ exports.PAGINATION_ALIGNS = PAGINATION_ALIGNS;
|
|
|
3456
3650
|
exports.VApp = VApp;
|
|
3457
3651
|
exports.VBreadcrumbs = VBreadcrumbs;
|
|
3458
3652
|
exports.VButton = VButton;
|
|
3653
|
+
exports.VButtonGroup = VButtonGroup;
|
|
3459
3654
|
exports.VCard = VCard;
|
|
3460
3655
|
exports.VCardActions = VCardActions;
|
|
3461
3656
|
exports.VCardContent = VCardContent;
|
|
@@ -3497,6 +3692,7 @@ exports.VUI_SWITCH_GROUP_SYMBOL = VUI_SWITCH_GROUP_SYMBOL;
|
|
|
3497
3692
|
exports.VUI_SWITCH_SYMBOL = VUI_SWITCH_SYMBOL;
|
|
3498
3693
|
exports.VUI_TEXTAREA_SYMBOL = VUI_TEXTAREA_SYMBOL;
|
|
3499
3694
|
exports.VUI_TEXT_FIELD_SYMBOL = VUI_TEXT_FIELD_SYMBOL;
|
|
3695
|
+
exports.VWysiwygEditor = VWysiwygEditor;
|
|
3500
3696
|
exports.VuiColorProviderInjectionKey = VuiColorProviderInjectionKey;
|
|
3501
3697
|
exports.VuiControlFieldInjectionKey = VuiControlFieldInjectionKey;
|
|
3502
3698
|
exports.VuiControlInjectionKey = VuiControlInjectionKey;
|
package/dist/vui.cjs.prod.js
CHANGED
|
@@ -11,8 +11,14 @@ var vueLoading = require('@fastkit/vue-loading');
|
|
|
11
11
|
var iconFont = require('@fastkit/icon-font');
|
|
12
12
|
var helpers = require('@fastkit/helpers');
|
|
13
13
|
var vueAppLayout = require('@fastkit/vue-app-layout');
|
|
14
|
+
var vue3 = require('@tiptap/vue-3');
|
|
15
|
+
var StarterKit = require('@tiptap/starter-kit');
|
|
14
16
|
var vueScroller = require('@fastkit/vue-scroller');
|
|
15
17
|
|
|
18
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
19
|
+
|
|
20
|
+
var StarterKit__default = /*#__PURE__*/_interopDefaultLegacy(StarterKit);
|
|
21
|
+
|
|
16
22
|
const CONTROL_SIZES = ['sm', 'md', 'lg'];
|
|
17
23
|
const CONTROL_FIELD_VARIANTS = ['outlined', 'filled', 'flat'];
|
|
18
24
|
|
|
@@ -479,8 +485,10 @@ const VButton = vue.defineComponent({
|
|
|
479
485
|
});
|
|
480
486
|
const isPlain = vue.computed(() => color.variant.value.value === vui.setting('plainVariant') && color.color.value.value === defaults.color);
|
|
481
487
|
const isLoading = vue.computed(() => props.loading); // const isDisabled = computed(() => props.disabled);
|
|
488
|
+
// const isRounded = computed(() =>
|
|
489
|
+
// props.rounded != null ? props.rounded : !!icon.value,
|
|
490
|
+
// );
|
|
482
491
|
|
|
483
|
-
const isRounded = vue.computed(() => props.rounded || !!icon.value);
|
|
484
492
|
const spacer = vue.computed(() => {
|
|
485
493
|
const _spacer = props.spacer;
|
|
486
494
|
if (!_spacer) return;
|
|
@@ -490,7 +498,7 @@ const VButton = vue.defineComponent({
|
|
|
490
498
|
spacer.value ? `v-button--spacer-${spacer.value}` : undefined, `v-button--${control.size.value}`, {
|
|
491
499
|
'v-button--loading': isLoading.value,
|
|
492
500
|
'v-button--icon': !!icon.value,
|
|
493
|
-
'v-button--rounded':
|
|
501
|
+
'v-button--rounded': props.rounded,
|
|
494
502
|
'v-button--plain': isPlain.value
|
|
495
503
|
}]);
|
|
496
504
|
return () => {
|
|
@@ -511,6 +519,66 @@ const VButton = vue.defineComponent({
|
|
|
511
519
|
|
|
512
520
|
});
|
|
513
521
|
|
|
522
|
+
const VButtonGroup = vue.defineComponent({
|
|
523
|
+
name: 'VButtonGroup',
|
|
524
|
+
props: { ...vueColorScheme.colorSchemeProps(),
|
|
525
|
+
...createControlProps(),
|
|
526
|
+
disabled: Boolean
|
|
527
|
+
},
|
|
528
|
+
|
|
529
|
+
setup(props, ctx) {
|
|
530
|
+
return () => {
|
|
531
|
+
let buttonLength = 0;
|
|
532
|
+
const children = (vueUtils.renderSlotOrEmpty(ctx.slots) || []).map(node => {
|
|
533
|
+
if (!vue.isVNode(node) || node.type !== VButton) {
|
|
534
|
+
return {
|
|
535
|
+
isButton: false,
|
|
536
|
+
node
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
buttonLength++;
|
|
541
|
+
return {
|
|
542
|
+
isButton: true,
|
|
543
|
+
node
|
|
544
|
+
};
|
|
545
|
+
}); // const children = renderSlotOrEmpty(ctx.slots) || [];
|
|
546
|
+
// const $children = children.map((child) => {
|
|
547
|
+
// if (!isVNode(child) || child.type !== VButton) return child;
|
|
548
|
+
// const $child = cloneVNode(child, {
|
|
549
|
+
// ...props,
|
|
550
|
+
// ...child.props,
|
|
551
|
+
// });
|
|
552
|
+
// return $child;
|
|
553
|
+
// });
|
|
554
|
+
|
|
555
|
+
let buttonIndex = 0;
|
|
556
|
+
const $children = children.map(child => {
|
|
557
|
+
if (child.isButton) {
|
|
558
|
+
buttonIndex++;
|
|
559
|
+
const hasLeft = buttonIndex > 1;
|
|
560
|
+
const hasRight = buttonIndex < buttonLength;
|
|
561
|
+
const childProps = child.node.props;
|
|
562
|
+
return vue.cloneVNode(child.node, { ...props,
|
|
563
|
+
...childProps,
|
|
564
|
+
rouded: false,
|
|
565
|
+
class: ['v-button-group__item', {
|
|
566
|
+
'v-button-group__item--has-left': hasLeft,
|
|
567
|
+
'v-button-group__item--has-right': hasRight
|
|
568
|
+
}]
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
return child.node;
|
|
573
|
+
});
|
|
574
|
+
return vue.createVNode("div", {
|
|
575
|
+
"class": "v-button-group"
|
|
576
|
+
}, [$children]);
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
});
|
|
581
|
+
|
|
514
582
|
function _isSlot$c(s) {
|
|
515
583
|
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
|
|
516
584
|
}
|
|
@@ -841,9 +909,9 @@ const VListTile = vue.defineComponent({
|
|
|
841
909
|
return icon;
|
|
842
910
|
});
|
|
843
911
|
const endIcon = vue.computed(() => resolveRawIconProp(false, props.endIcon));
|
|
844
|
-
const hasTo = vue.computed(() => !!
|
|
912
|
+
const hasTo = vue.computed(() => !!ctx.attrs.to);
|
|
845
913
|
const link = vueRouter.useLink({
|
|
846
|
-
to:
|
|
914
|
+
to: ctx.attrs.to || ''
|
|
847
915
|
});
|
|
848
916
|
const isActive = vue.computed(() => {
|
|
849
917
|
if (!hasTo.value) return false;
|
|
@@ -965,7 +1033,11 @@ function _isSlot$a(s) {
|
|
|
965
1033
|
|
|
966
1034
|
function createNavigationItemProps() {
|
|
967
1035
|
return { ...createListTileProps(),
|
|
968
|
-
match: String
|
|
1036
|
+
match: String // key: {
|
|
1037
|
+
// type: [String, Number],
|
|
1038
|
+
// required: true,
|
|
1039
|
+
// },
|
|
1040
|
+
|
|
969
1041
|
};
|
|
970
1042
|
}
|
|
971
1043
|
function resolveNavigationItemInput(input) {
|
|
@@ -1010,12 +1082,14 @@ const VNavigationItem = vue.defineComponent({
|
|
|
1010
1082
|
const c = props.children;
|
|
1011
1083
|
return c && c.length ? c : undefined;
|
|
1012
1084
|
});
|
|
1013
|
-
const to = vue.computed(() =>
|
|
1085
|
+
const to = vue.computed(() => ctx.attrs.to);
|
|
1014
1086
|
const match = vue.computed(() => {
|
|
1015
1087
|
const {
|
|
1016
|
-
match
|
|
1017
|
-
to
|
|
1088
|
+
match
|
|
1018
1089
|
} = props;
|
|
1090
|
+
const {
|
|
1091
|
+
to
|
|
1092
|
+
} = ctx.attrs;
|
|
1019
1093
|
if (match) return match;
|
|
1020
1094
|
if (!to) return;
|
|
1021
1095
|
if (typeof to === 'string') return to;
|
|
@@ -1085,6 +1159,7 @@ const VNavigationItem = vue.defineComponent({
|
|
|
1085
1159
|
});
|
|
1086
1160
|
|
|
1087
1161
|
function open() {
|
|
1162
|
+
if (!children.value) return;
|
|
1088
1163
|
opened.value = true;
|
|
1089
1164
|
}
|
|
1090
1165
|
|
|
@@ -1098,9 +1173,13 @@ const VNavigationItem = vue.defineComponent({
|
|
|
1098
1173
|
|
|
1099
1174
|
const onClick = ev => {
|
|
1100
1175
|
if (!to.value) {
|
|
1101
|
-
toggle();
|
|
1102
|
-
}
|
|
1176
|
+
return toggle();
|
|
1177
|
+
}
|
|
1103
1178
|
|
|
1179
|
+
open(); // if (!to.value) {
|
|
1180
|
+
// toggle();
|
|
1181
|
+
// }
|
|
1182
|
+
// ctx.emit('click', ev);
|
|
1104
1183
|
};
|
|
1105
1184
|
|
|
1106
1185
|
const onChangeActive = isActive => {
|
|
@@ -1122,6 +1201,9 @@ const VNavigationItem = vue.defineComponent({
|
|
|
1122
1201
|
ctx.emit('changeActive', isActive);
|
|
1123
1202
|
};
|
|
1124
1203
|
|
|
1204
|
+
ctx.expose({
|
|
1205
|
+
close
|
|
1206
|
+
});
|
|
1125
1207
|
return () => {
|
|
1126
1208
|
let _slot;
|
|
1127
1209
|
|
|
@@ -1173,6 +1255,28 @@ const VNavigation = vue.defineComponent({
|
|
|
1173
1255
|
const c = props.caption;
|
|
1174
1256
|
return typeof c === 'function' ? c() : c;
|
|
1175
1257
|
});
|
|
1258
|
+
const itemsRef = vue.ref([]);
|
|
1259
|
+
vue.onBeforeUpdate(() => {
|
|
1260
|
+
itemsRef.value = [];
|
|
1261
|
+
});
|
|
1262
|
+
|
|
1263
|
+
function setItemRef(item, itemRef) {
|
|
1264
|
+
itemsRef.value.push({
|
|
1265
|
+
key: item.key,
|
|
1266
|
+
ref: itemRef
|
|
1267
|
+
});
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
function onItemActivated(item) {
|
|
1271
|
+
itemsRef.value.forEach(({
|
|
1272
|
+
key,
|
|
1273
|
+
ref
|
|
1274
|
+
}) => {
|
|
1275
|
+
if (key === item.key) return;
|
|
1276
|
+
ref.close();
|
|
1277
|
+
});
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1176
1280
|
return () => {
|
|
1177
1281
|
const $caption = caption.value;
|
|
1178
1282
|
return vue.createVNode("nav", {
|
|
@@ -1181,7 +1285,17 @@ const VNavigation = vue.defineComponent({
|
|
|
1181
1285
|
"class": "v-navigation__caption"
|
|
1182
1286
|
}, [$caption]), items.value.map(item => renderNavigationItemInput(item, {
|
|
1183
1287
|
class: 'v-navigation__item',
|
|
1184
|
-
startIconEmptySpace: startIconEmptySpace.value
|
|
1288
|
+
startIconEmptySpace: startIconEmptySpace.value,
|
|
1289
|
+
ref: ref => {
|
|
1290
|
+
setItemRef(item, ref);
|
|
1291
|
+
},
|
|
1292
|
+
onChangeActive: isActive => {
|
|
1293
|
+
if (isActive
|
|
1294
|
+
/* && item.children && item.children.length*/
|
|
1295
|
+
) {
|
|
1296
|
+
onItemActivated(item);
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1185
1299
|
}))]);
|
|
1186
1300
|
};
|
|
1187
1301
|
}
|
|
@@ -1930,6 +2044,86 @@ const VTextarea = vue.defineComponent({
|
|
|
1930
2044
|
|
|
1931
2045
|
});
|
|
1932
2046
|
|
|
2047
|
+
const VWysiwygEditor = vue.defineComponent({
|
|
2048
|
+
name: 'VWysiwygEditor',
|
|
2049
|
+
props: { // ...props,
|
|
2050
|
+
...vueKit.createFormControlProps(),
|
|
2051
|
+
...createControlFieldProps(),
|
|
2052
|
+
...createControlFieldProviderProps(),
|
|
2053
|
+
...createControlProps(),
|
|
2054
|
+
...vueKit.defineSlotsProps()
|
|
2055
|
+
},
|
|
2056
|
+
|
|
2057
|
+
// emits,
|
|
2058
|
+
setup(props, ctx) {
|
|
2059
|
+
const editor = vue3.useEditor({
|
|
2060
|
+
content: '<p>Iām running Tiptap with Vue.js. š</p>',
|
|
2061
|
+
extensions: [StarterKit__default]
|
|
2062
|
+
}); // const vui = useVui();
|
|
2063
|
+
// const inputControl = useTiptapControl(props, ctx, {
|
|
2064
|
+
// nodeType: VUI_TEXTAREA_SYMBOL,
|
|
2065
|
+
// defaultRows: vui.tiptapRows,
|
|
2066
|
+
// });
|
|
2067
|
+
// const control = useControl(props);
|
|
2068
|
+
// useControlField(props);
|
|
2069
|
+
|
|
2070
|
+
return {
|
|
2071
|
+
editor // ...inputControl.expose(),
|
|
2072
|
+
// ...control,
|
|
2073
|
+
|
|
2074
|
+
};
|
|
2075
|
+
},
|
|
2076
|
+
|
|
2077
|
+
render() {
|
|
2078
|
+
return vue.createVNode(VFormControl, {
|
|
2079
|
+
"nodeControl": this.nodeControl,
|
|
2080
|
+
"label": this.label,
|
|
2081
|
+
"hint": this.hint,
|
|
2082
|
+
"hiddenInfo": this.hiddenInfo,
|
|
2083
|
+
"onClickLabel": ev => {// this.focus();
|
|
2084
|
+
}
|
|
2085
|
+
}, { ...this.$slots,
|
|
2086
|
+
default: () => vue.createVNode(VControlField, {
|
|
2087
|
+
"class": "v-wysiwyg-editor__input",
|
|
2088
|
+
"autoHeight": true,
|
|
2089
|
+
"startAdornment": this.startAdornment,
|
|
2090
|
+
"endAdornment": this.endAdornment
|
|
2091
|
+
}, { ...this.$slots,
|
|
2092
|
+
default: () => {
|
|
2093
|
+
const {
|
|
2094
|
+
editor
|
|
2095
|
+
} = this;
|
|
2096
|
+
return vue.createVNode(vue.Fragment, null, [vue.createVNode(vue3.EditorContent, {
|
|
2097
|
+
"class": "v-wysiwyg-editor__input__element wysiwyg",
|
|
2098
|
+
"editor": editor
|
|
2099
|
+
}, null), !!editor && vue.createVNode(vue3.BubbleMenu, {
|
|
2100
|
+
"class": "v-wysiwyg-editor__bubble-menu",
|
|
2101
|
+
"editor": editor
|
|
2102
|
+
}, {
|
|
2103
|
+
default: () => [vue.createVNode(VButton, {
|
|
2104
|
+
"size": "sm",
|
|
2105
|
+
"onClick": () => {
|
|
2106
|
+
editor.chain().focus().toggleBold().run();
|
|
2107
|
+
}
|
|
2108
|
+
}, {
|
|
2109
|
+
default: () => [vue.createTextVNode("Bold")]
|
|
2110
|
+
})]
|
|
2111
|
+
})]);
|
|
2112
|
+
} // this.tiptapControl.createInputElement({
|
|
2113
|
+
// class: 'v-wysiwyg-editor__input__element',
|
|
2114
|
+
// }),
|
|
2115
|
+
|
|
2116
|
+
}) // infoAppends: () => {
|
|
2117
|
+
// const { counterResult } = this;
|
|
2118
|
+
// if (!counterResult) return;
|
|
2119
|
+
// return <VTextCounter {...counterResult} />;
|
|
2120
|
+
// },
|
|
2121
|
+
|
|
2122
|
+
});
|
|
2123
|
+
}
|
|
2124
|
+
|
|
2125
|
+
});
|
|
2126
|
+
|
|
1933
2127
|
const {
|
|
1934
2128
|
props,
|
|
1935
2129
|
emits
|
|
@@ -3456,6 +3650,7 @@ exports.PAGINATION_ALIGNS = PAGINATION_ALIGNS;
|
|
|
3456
3650
|
exports.VApp = VApp;
|
|
3457
3651
|
exports.VBreadcrumbs = VBreadcrumbs;
|
|
3458
3652
|
exports.VButton = VButton;
|
|
3653
|
+
exports.VButtonGroup = VButtonGroup;
|
|
3459
3654
|
exports.VCard = VCard;
|
|
3460
3655
|
exports.VCardActions = VCardActions;
|
|
3461
3656
|
exports.VCardContent = VCardContent;
|
|
@@ -3497,6 +3692,7 @@ exports.VUI_SWITCH_GROUP_SYMBOL = VUI_SWITCH_GROUP_SYMBOL;
|
|
|
3497
3692
|
exports.VUI_SWITCH_SYMBOL = VUI_SWITCH_SYMBOL;
|
|
3498
3693
|
exports.VUI_TEXTAREA_SYMBOL = VUI_TEXTAREA_SYMBOL;
|
|
3499
3694
|
exports.VUI_TEXT_FIELD_SYMBOL = VUI_TEXT_FIELD_SYMBOL;
|
|
3695
|
+
exports.VWysiwygEditor = VWysiwygEditor;
|
|
3500
3696
|
exports.VuiColorProviderInjectionKey = VuiColorProviderInjectionKey;
|
|
3501
3697
|
exports.VuiControlFieldInjectionKey = VuiControlFieldInjectionKey;
|
|
3502
3698
|
exports.VuiControlInjectionKey = VuiControlInjectionKey;
|