@fastkit/vui 0.6.19 → 0.6.20
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 +341 -0
- package/dist/vui.cjs.prod.js +341 -0
- package/dist/vui.css +126 -0
- package/dist/vui.d.ts +136 -0
- package/dist/vui.esm-bundler.js +342 -5
- package/dist/vui.min.css +1 -1
- package/dist/vui.min.css.map +1 -1
- package/package.json +6 -6
package/dist/vui.cjs.prod.js
CHANGED
|
@@ -8,7 +8,9 @@ var vueColorScheme = require('@fastkit/vue-color-scheme');
|
|
|
8
8
|
var vueUtils = require('@fastkit/vue-utils');
|
|
9
9
|
var vueLoading = require('@fastkit/vue-loading');
|
|
10
10
|
var iconFont = require('@fastkit/icon-font');
|
|
11
|
+
var helpers = require('@fastkit/helpers');
|
|
11
12
|
var vueRouter = require('vue-router');
|
|
13
|
+
var vueAppLayout = require('@fastkit/vue-app-layout');
|
|
12
14
|
|
|
13
15
|
const CONTROL_SIZES = ['sm', 'md', 'lg'];
|
|
14
16
|
const CONTROL_FIELD_VARIANTS = ['outlined', 'filled', 'flat'];
|
|
@@ -531,6 +533,296 @@ const VButton = vue.defineComponent({
|
|
|
531
533
|
|
|
532
534
|
});
|
|
533
535
|
|
|
536
|
+
function _isSlot$8(s) {
|
|
537
|
+
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
const PAGINATION_ALIGNS = ['left', 'center', 'right'];
|
|
541
|
+
function paginationProps() {
|
|
542
|
+
return vueUtils.createPropsOptions({
|
|
543
|
+
/**
|
|
544
|
+
* Active Pages
|
|
545
|
+
*/
|
|
546
|
+
modelValue: {
|
|
547
|
+
type: vueUtils.rawNumberPropType,
|
|
548
|
+
default: 1
|
|
549
|
+
},
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* Total number of pages
|
|
553
|
+
*/
|
|
554
|
+
length: {
|
|
555
|
+
type: vueUtils.rawNumberPropType,
|
|
556
|
+
default: 0
|
|
557
|
+
},
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Maximum number of links to display.
|
|
561
|
+
*/
|
|
562
|
+
totalVisible: vueUtils.rawNumberPropType,
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* true when narrowing
|
|
566
|
+
*/
|
|
567
|
+
dense: Boolean,
|
|
568
|
+
disabled: Boolean,
|
|
569
|
+
align: {
|
|
570
|
+
type: String,
|
|
571
|
+
default: 'center'
|
|
572
|
+
},
|
|
573
|
+
|
|
574
|
+
/**
|
|
575
|
+
* To synchronize with a query, use the query name
|
|
576
|
+
*/
|
|
577
|
+
routeQuery: String,
|
|
578
|
+
beforeChange: Function,
|
|
579
|
+
color: String
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
const VPagination = vue.defineComponent({
|
|
583
|
+
name: 'VPagination',
|
|
584
|
+
props: paginationProps(),
|
|
585
|
+
emits: {
|
|
586
|
+
change: page => true
|
|
587
|
+
},
|
|
588
|
+
|
|
589
|
+
setup(props, ctx) {
|
|
590
|
+
const vui = useVui();
|
|
591
|
+
const elRef = vue.ref(null);
|
|
592
|
+
const router = vueRouter.useRouter();
|
|
593
|
+
const route = vueRouter.useRoute();
|
|
594
|
+
const internalValue = vue.ref(1);
|
|
595
|
+
const containerWidth = vue.ref(0);
|
|
596
|
+
const itemSize = vue.ref(0);
|
|
597
|
+
const capacityLength = vue.computed(() => {
|
|
598
|
+
const _itemSize = itemSize.value;
|
|
599
|
+
if (!_itemSize) return 0;
|
|
600
|
+
return Math.floor(containerWidth.value / _itemSize);
|
|
601
|
+
});
|
|
602
|
+
const colorScope = vueColorScheme.useScopeColorClass({
|
|
603
|
+
color: () => props.color || vui.setting('primaryScope')
|
|
604
|
+
});
|
|
605
|
+
const computedLength = vue.computed(() => vueUtils.resolveNumberish(props.length));
|
|
606
|
+
const computedTotalVisible = vue.computed(() => vueUtils.resolveNumberish(props.totalVisible));
|
|
607
|
+
const computedNumbersLength = vue.computed(() => capacityLength.value - 2 - 2);
|
|
608
|
+
const computedPage = vue.computed(() => {
|
|
609
|
+
const {
|
|
610
|
+
routeQuery
|
|
611
|
+
} = props;
|
|
612
|
+
|
|
613
|
+
if (routeQuery) {
|
|
614
|
+
return vueUtils.getRouteQuery(route.query, routeQuery, Number, 1);
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
return internalValue.value;
|
|
618
|
+
});
|
|
619
|
+
|
|
620
|
+
const _range = (from, to) => helpers.range(to - from, from);
|
|
621
|
+
|
|
622
|
+
const computedItems = vue.computed(() => {
|
|
623
|
+
const maxButtons = computedNumbersLength.value;
|
|
624
|
+
const totalVisible = computedTotalVisible.value;
|
|
625
|
+
const length = computedLength.value;
|
|
626
|
+
const pageValue = computedPage.value;
|
|
627
|
+
const maxLength = Math.min(Math.max(0, totalVisible || 0) || length, Math.max(0, maxButtons) || length, length);
|
|
628
|
+
|
|
629
|
+
if (length <= maxLength) {
|
|
630
|
+
return _range(1, length);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
const even = maxLength % 2 === 0 ? 1 : 0;
|
|
634
|
+
const left = Math.floor(maxLength / 2);
|
|
635
|
+
const right = length - left + 1 + even;
|
|
636
|
+
|
|
637
|
+
if (pageValue > left && pageValue < right) {
|
|
638
|
+
const start = pageValue - left + 2;
|
|
639
|
+
const end = pageValue + left - 2 - even;
|
|
640
|
+
return [1, 'truncate', ..._range(start, end), 'truncate', length];
|
|
641
|
+
} else if (pageValue === left) {
|
|
642
|
+
const end = pageValue + left - 1 - even;
|
|
643
|
+
return [..._range(1, end), 'truncate', length];
|
|
644
|
+
} else if (pageValue === right) {
|
|
645
|
+
const start = pageValue - left + 1;
|
|
646
|
+
return [1, 'truncate', ..._range(start, length)];
|
|
647
|
+
} else {
|
|
648
|
+
return [..._range(1, left), 'truncate', ..._range(right, length)];
|
|
649
|
+
}
|
|
650
|
+
});
|
|
651
|
+
const isActive = vue.computed(() => computedLength.value > 1);
|
|
652
|
+
const isTransitioning = vue.computed(() => {
|
|
653
|
+
const {
|
|
654
|
+
routeQuery
|
|
655
|
+
} = props;
|
|
656
|
+
if (!routeQuery) return false; // @TODO
|
|
657
|
+
// return this.$location.isQueryOnlyTransitioning(routeQuery);
|
|
658
|
+
|
|
659
|
+
return false;
|
|
660
|
+
});
|
|
661
|
+
const isDisabled = vue.computed(() => props.disabled || isTransitioning.value);
|
|
662
|
+
const classes = vue.computed(() => [{
|
|
663
|
+
'v-pagination--disabled': isDisabled.value,
|
|
664
|
+
'v-pagination--dense': props.dense,
|
|
665
|
+
[`v-pagination--${props.align}`]: true
|
|
666
|
+
}, colorScope.value.className]);
|
|
667
|
+
|
|
668
|
+
async function setPage(value) {
|
|
669
|
+
if (isDisabled.value) return;
|
|
670
|
+
const {
|
|
671
|
+
beforeChange,
|
|
672
|
+
routeQuery
|
|
673
|
+
} = props;
|
|
674
|
+
const newPage = vueUtils.resolveNumberish(value);
|
|
675
|
+
if (computedPage.value === newPage) return;
|
|
676
|
+
|
|
677
|
+
if (beforeChange) {
|
|
678
|
+
try {
|
|
679
|
+
let result = beforeChange(newPage);
|
|
680
|
+
if (helpers.isPromise(result)) result = await result;
|
|
681
|
+
if (result === false) return;
|
|
682
|
+
} catch (e) {}
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
if (routeQuery) {
|
|
686
|
+
const to = createRoutableLocationByPage(newPage, routeQuery);
|
|
687
|
+
return router.push(to).then(failure => {
|
|
688
|
+
!failure && ctx.emit('change', newPage);
|
|
689
|
+
});
|
|
690
|
+
} else {
|
|
691
|
+
internalValue.value = newPage;
|
|
692
|
+
ctx.emit('update:modelValue', newPage);
|
|
693
|
+
ctx.emit('change', newPage);
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
function createPageInfo(source) {
|
|
698
|
+
const currentPage = computedPage.value;
|
|
699
|
+
const length = computedLength.value;
|
|
700
|
+
let number;
|
|
701
|
+
let page;
|
|
702
|
+
let active;
|
|
703
|
+
let disabled;
|
|
704
|
+
|
|
705
|
+
if (typeof source === 'number') {
|
|
706
|
+
number = true;
|
|
707
|
+
page = source;
|
|
708
|
+
active = currentPage === page;
|
|
709
|
+
disabled = false;
|
|
710
|
+
} else if (source === 'truncate') {
|
|
711
|
+
number = false;
|
|
712
|
+
active = false;
|
|
713
|
+
disabled = false;
|
|
714
|
+
} else {
|
|
715
|
+
number = false;
|
|
716
|
+
const isPrev = source === 'prev';
|
|
717
|
+
const ammount = isPrev ? -1 : 1;
|
|
718
|
+
page = currentPage + ammount;
|
|
719
|
+
active = false;
|
|
720
|
+
disabled = page < 1 || page > length;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
return {
|
|
724
|
+
number,
|
|
725
|
+
page,
|
|
726
|
+
active,
|
|
727
|
+
disabled
|
|
728
|
+
};
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
function createRoutableLocationByPage(page, routeQuery) {
|
|
732
|
+
return vueUtils.getQueryMergedLocation({
|
|
733
|
+
[routeQuery]: page
|
|
734
|
+
}, route);
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
function genItem(source, index) {
|
|
738
|
+
const {
|
|
739
|
+
number,
|
|
740
|
+
page,
|
|
741
|
+
active,
|
|
742
|
+
disabled
|
|
743
|
+
} = createPageInfo(source);
|
|
744
|
+
const type = number ? 'num' : source; // const staticClass = `pagination__item`;
|
|
745
|
+
|
|
746
|
+
const classes = ['v-pagination__item', {
|
|
747
|
+
[`v-pagination__item--${type}`]: true,
|
|
748
|
+
'v-pagination__item--active': active,
|
|
749
|
+
'v-pagination__item--disabled': disabled
|
|
750
|
+
}];
|
|
751
|
+
const children = number ? page : (() => {
|
|
752
|
+
if (type === 'truncate') {
|
|
753
|
+
return vue.createVNode("span", null, [vue.createTextVNode("...")]);
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
const isPrev = type === 'prev';
|
|
757
|
+
const name = isPrev ? 'chevron-left' : 'chevron-right';
|
|
758
|
+
return vue.createVNode(VIcon, {
|
|
759
|
+
"class": "v-pagination__item__icon",
|
|
760
|
+
"name": name
|
|
761
|
+
}, null);
|
|
762
|
+
})();
|
|
763
|
+
|
|
764
|
+
const onClick = ev => {
|
|
765
|
+
ev.preventDefault();
|
|
766
|
+
if (page === undefined || active || disabled) return;
|
|
767
|
+
setPage(page);
|
|
768
|
+
};
|
|
769
|
+
|
|
770
|
+
const key = `${source}-${index}`;
|
|
771
|
+
const {
|
|
772
|
+
routeQuery
|
|
773
|
+
} = props;
|
|
774
|
+
|
|
775
|
+
if (page !== undefined && routeQuery) {
|
|
776
|
+
const to = createRoutableLocationByPage(page, routeQuery);
|
|
777
|
+
return vue.createVNode(vueRouter.RouterLink, {
|
|
778
|
+
"class": classes,
|
|
779
|
+
"to": to,
|
|
780
|
+
"key": key
|
|
781
|
+
}, _isSlot$8(children) ? children : {
|
|
782
|
+
default: () => [children]
|
|
783
|
+
});
|
|
784
|
+
} else {
|
|
785
|
+
return vue.createVNode("button", {
|
|
786
|
+
"class": classes,
|
|
787
|
+
"type": "button",
|
|
788
|
+
"value": page,
|
|
789
|
+
"onClick": onClick,
|
|
790
|
+
"key": key
|
|
791
|
+
}, [children]);
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
vue.watch(() => props.modelValue, modelValue => {
|
|
796
|
+
internalValue.value = vueUtils.resolveNumberish(modelValue);
|
|
797
|
+
}, {
|
|
798
|
+
immediate: true
|
|
799
|
+
});
|
|
800
|
+
return () => {
|
|
801
|
+
if (!isActive.value) return undefined;
|
|
802
|
+
const $items = ['prev', ...computedItems.value, 'next'].map((i, index) => genItem(i, index));
|
|
803
|
+
return vue.withDirectives(vue.createVNode("nav", {
|
|
804
|
+
"class": ['v-pagination', classes.value],
|
|
805
|
+
"ref": elRef
|
|
806
|
+
}, [$items]), [vueUtils.resizeDirectiveArgument(({
|
|
807
|
+
width
|
|
808
|
+
}) => {
|
|
809
|
+
const el = elRef.value;
|
|
810
|
+
|
|
811
|
+
if (el) {
|
|
812
|
+
const style = window.getComputedStyle(el, 'before');
|
|
813
|
+
const width = style.getPropertyValue('width');
|
|
814
|
+
const margin = style.getPropertyValue('margin');
|
|
815
|
+
const size = parseFloat(width) + parseFloat(margin) * 0.5;
|
|
816
|
+
itemSize.value = size;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
containerWidth.value = width;
|
|
820
|
+
})]);
|
|
821
|
+
};
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
});
|
|
825
|
+
|
|
534
826
|
function createListTileProps() {
|
|
535
827
|
const icon = rawIconProp();
|
|
536
828
|
return { ...vueUtils.navigationableProps,
|
|
@@ -651,6 +943,51 @@ const VDrawerLayout = vue.defineComponent({
|
|
|
651
943
|
|
|
652
944
|
});
|
|
653
945
|
|
|
946
|
+
function _isSlot$7(s) {
|
|
947
|
+
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
const VHero = vue.defineComponent({
|
|
951
|
+
name: 'VHero',
|
|
952
|
+
props: {
|
|
953
|
+
color: {
|
|
954
|
+
type: String,
|
|
955
|
+
default: 'primary'
|
|
956
|
+
},
|
|
957
|
+
tag: {
|
|
958
|
+
type: String,
|
|
959
|
+
default: 'header'
|
|
960
|
+
},
|
|
961
|
+
hTag: {
|
|
962
|
+
type: String,
|
|
963
|
+
default: 'h1'
|
|
964
|
+
}
|
|
965
|
+
},
|
|
966
|
+
|
|
967
|
+
setup(props, ctx) {
|
|
968
|
+
return () => {
|
|
969
|
+
let _slot;
|
|
970
|
+
|
|
971
|
+
const TagName = props.tag;
|
|
972
|
+
const HTagName = props.hTag;
|
|
973
|
+
return vue.createVNode(vueAppLayout.VAppContainer, {
|
|
974
|
+
"pulled": true
|
|
975
|
+
}, {
|
|
976
|
+
default: () => [vue.createVNode(TagName, {
|
|
977
|
+
"class": ['v-hero', vueColorScheme.toScopeColorClass(props.color)]
|
|
978
|
+
}, {
|
|
979
|
+
default: () => [vue.createVNode(HTagName, {
|
|
980
|
+
"class": "v-hero__title"
|
|
981
|
+
}, _isSlot$7(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
|
|
982
|
+
default: () => [_slot]
|
|
983
|
+
})]
|
|
984
|
+
})]
|
|
985
|
+
});
|
|
986
|
+
};
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
});
|
|
990
|
+
|
|
654
991
|
function _isSlot$6(s) {
|
|
655
992
|
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
|
|
656
993
|
}
|
|
@@ -1897,6 +2234,7 @@ exports.VSnackbar = vueKit.VSnackbar;
|
|
|
1897
2234
|
exports.ICON_NAMES = iconFont.ICON_NAMES;
|
|
1898
2235
|
exports.CONTROL_FIELD_VARIANTS = CONTROL_FIELD_VARIANTS;
|
|
1899
2236
|
exports.CONTROL_SIZES = CONTROL_SIZES;
|
|
2237
|
+
exports.PAGINATION_ALIGNS = PAGINATION_ALIGNS;
|
|
1900
2238
|
exports.VApp = VApp;
|
|
1901
2239
|
exports.VButton = VButton;
|
|
1902
2240
|
exports.VCard = VCard;
|
|
@@ -1906,12 +2244,14 @@ exports.VCheckbox = VCheckbox;
|
|
|
1906
2244
|
exports.VCheckboxGroup = VCheckboxGroup;
|
|
1907
2245
|
exports.VDrawerLayout = VDrawerLayout;
|
|
1908
2246
|
exports.VForm = VForm;
|
|
2247
|
+
exports.VHero = VHero;
|
|
1909
2248
|
exports.VIcon = VIcon;
|
|
1910
2249
|
exports.VListTile = VListTile;
|
|
1911
2250
|
exports.VNavigation = VNavigation;
|
|
1912
2251
|
exports.VNavigationItem = VNavigationItem;
|
|
1913
2252
|
exports.VOption = VOption;
|
|
1914
2253
|
exports.VOptionGroup = VOptionGroup;
|
|
2254
|
+
exports.VPagination = VPagination;
|
|
1915
2255
|
exports.VPaper = VPaper;
|
|
1916
2256
|
exports.VRadio = VRadio;
|
|
1917
2257
|
exports.VRadioGroup = VRadioGroup;
|
|
@@ -1953,6 +2293,7 @@ exports.defineFormSelectorComponent = defineFormSelectorComponent;
|
|
|
1953
2293
|
exports.iconProps = iconProps;
|
|
1954
2294
|
exports.installVuiPlugin = installVuiPlugin;
|
|
1955
2295
|
exports.listTileEmits = listTileEmits;
|
|
2296
|
+
exports.paginationProps = paginationProps;
|
|
1956
2297
|
exports.rawIconProp = rawIconProp;
|
|
1957
2298
|
exports.renderNavigationItemInput = renderNavigationItemInput;
|
|
1958
2299
|
exports.resolveNavigationItemInput = resolveNavigationItemInput;
|
package/dist/vui.css
CHANGED
|
@@ -512,6 +512,15 @@ template {
|
|
|
512
512
|
--toolbar-dense-height: calc(var(--toolbar-height) * 0.8);
|
|
513
513
|
--card-content-padding: 1rem;
|
|
514
514
|
--card-actions-padding: 0.5rem;
|
|
515
|
+
--pagination-item-radius: 2px;
|
|
516
|
+
--pagination-item-font-size: var(--root-em);
|
|
517
|
+
--pagination-item-size: calc(var(--root-em) * 2);
|
|
518
|
+
--pagination-item-margin: calc(var(--root-em) * 0.5);
|
|
519
|
+
--pagination-item-font-size-dense: calc(
|
|
520
|
+
var(--pagination-item-font-size) * 0.625
|
|
521
|
+
);
|
|
522
|
+
--pagination-item-size-dense: calc(var(--pagination-item-size) * 0.8125);
|
|
523
|
+
--pagination-item-margin-dense: calc(var(--pagination-item-margin) * 0.75);
|
|
515
524
|
}
|
|
516
525
|
|
|
517
526
|
:root,
|
|
@@ -922,6 +931,108 @@ h6,
|
|
|
922
931
|
z-index: 1;
|
|
923
932
|
transform: translate(-50%, -50%);
|
|
924
933
|
}
|
|
934
|
+
.v-pagination {
|
|
935
|
+
--pagination-size: var(--pagination-item-size);
|
|
936
|
+
--pagination-margin: var(--pagination-item-margin);
|
|
937
|
+
--pagination-font-size: var(--pagination-item-font-size);
|
|
938
|
+
--pagination-radius: var(--pagination-item-radius);
|
|
939
|
+
display: flex;
|
|
940
|
+
align-items: center;
|
|
941
|
+
overflow: hidden;
|
|
942
|
+
font-weight: bold;
|
|
943
|
+
line-height: 1;
|
|
944
|
+
}
|
|
945
|
+
.v-pagination::before {
|
|
946
|
+
width: var(--pagination-size);
|
|
947
|
+
margin: var(--pagination-margin);
|
|
948
|
+
content: none;
|
|
949
|
+
}
|
|
950
|
+
.v-pagination--left {
|
|
951
|
+
justify-content: flex-start;
|
|
952
|
+
}
|
|
953
|
+
.v-pagination--center {
|
|
954
|
+
justify-content: center;
|
|
955
|
+
}
|
|
956
|
+
.v-pagination--right {
|
|
957
|
+
justify-content: flex-end;
|
|
958
|
+
}
|
|
959
|
+
.v-pagination__item,
|
|
960
|
+
.v-pagination a.v-pagination__item {
|
|
961
|
+
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
962
|
+
padding: 0;
|
|
963
|
+
touch-action: manipulation;
|
|
964
|
+
cursor: pointer;
|
|
965
|
+
user-select: none;
|
|
966
|
+
background-color: transparent;
|
|
967
|
+
border: 0;
|
|
968
|
+
outline: 0;
|
|
969
|
+
appearance: none;
|
|
970
|
+
display: flex;
|
|
971
|
+
align-items: center;
|
|
972
|
+
justify-content: center;
|
|
973
|
+
min-width: var(--pagination-size);
|
|
974
|
+
height: var(--pagination-size);
|
|
975
|
+
margin: calc(var(--pagination-margin) * 0.5);
|
|
976
|
+
font-size: var(--pagination-font-size);
|
|
977
|
+
color: inherit;
|
|
978
|
+
border-radius: var(--pagination-radius);
|
|
979
|
+
transition: 0.1s;
|
|
980
|
+
}
|
|
981
|
+
.v-pagination__item::-moz-focus-inner,
|
|
982
|
+
.v-pagination a.v-pagination__item::-moz-focus-inner {
|
|
983
|
+
border: 0;
|
|
984
|
+
}
|
|
985
|
+
.v-pagination__item, .v-pagination__item:hover, .v-pagination__item:focus,
|
|
986
|
+
.v-pagination a.v-pagination__item,
|
|
987
|
+
.v-pagination a.v-pagination__item:hover,
|
|
988
|
+
.v-pagination a.v-pagination__item:focus {
|
|
989
|
+
text-decoration: none;
|
|
990
|
+
}
|
|
991
|
+
.v-pagination__item:hover, .v-pagination__item:focus,
|
|
992
|
+
.v-pagination a.v-pagination__item:hover,
|
|
993
|
+
.v-pagination a.v-pagination__item:focus {
|
|
994
|
+
background: rgba(0, 0, 0, 0.1);
|
|
995
|
+
}
|
|
996
|
+
.v-pagination__item--active, .v-pagination__item--active:hover, .v-pagination__item--active:focus, .v-pagination__item--active:active,
|
|
997
|
+
.v-pagination a.v-pagination__item--active,
|
|
998
|
+
.v-pagination a.v-pagination__item--active:hover,
|
|
999
|
+
.v-pagination a.v-pagination__item--active:focus,
|
|
1000
|
+
.v-pagination a.v-pagination__item--active:active {
|
|
1001
|
+
color: var(--text-color);
|
|
1002
|
+
pointer-events: none;
|
|
1003
|
+
background-color: var(--main-color);
|
|
1004
|
+
}
|
|
1005
|
+
.v-pagination__item--disabled,
|
|
1006
|
+
.v-pagination a.v-pagination__item--disabled {
|
|
1007
|
+
color: var(--palette-muted) !important;
|
|
1008
|
+
pointer-events: none !important;
|
|
1009
|
+
background: transparent !important;
|
|
1010
|
+
}
|
|
1011
|
+
.v-pagination__item--truncate,
|
|
1012
|
+
.v-pagination a.v-pagination__item--truncate {
|
|
1013
|
+
color: var(--palette-muted) !important;
|
|
1014
|
+
pointer-events: none !important;
|
|
1015
|
+
background: transparent !important;
|
|
1016
|
+
}
|
|
1017
|
+
.v-pagination__item .v-icon,
|
|
1018
|
+
.v-pagination a.v-pagination__item .v-icon {
|
|
1019
|
+
font-size: 150%;
|
|
1020
|
+
}
|
|
1021
|
+
.v-pagination--dense .v-pagination__item {
|
|
1022
|
+
--pagination-size: var(--pagination-item-size-dense);
|
|
1023
|
+
--pagination-margin: var(--pagination-item-margin-dense);
|
|
1024
|
+
--pagination-font-size: var(--pagination-item-font-size-dense);
|
|
1025
|
+
}
|
|
1026
|
+
.v-pagination--disabled .v-pagination__item {
|
|
1027
|
+
color: var(--palette-muted);
|
|
1028
|
+
pointer-events: none;
|
|
1029
|
+
}
|
|
1030
|
+
.v-pagination--disabled .v-pagination__item:hover, .v-pagination--disabled .v-pagination__item:focus {
|
|
1031
|
+
background: transparent;
|
|
1032
|
+
}
|
|
1033
|
+
.v-pagination--disabled .v-pagination__item--active {
|
|
1034
|
+
background: var(--palette-muted);
|
|
1035
|
+
}
|
|
925
1036
|
.v-list-tile {
|
|
926
1037
|
--tile-background: var(--main-color, transparent);
|
|
927
1038
|
--tile-active-background: var(--deep-color, transparent);
|
|
@@ -994,6 +1105,21 @@ h6,
|
|
|
994
1105
|
flex: 0 0 auto;
|
|
995
1106
|
margin-top: auto;
|
|
996
1107
|
}
|
|
1108
|
+
.v-hero {
|
|
1109
|
+
--hero-background-color: var(--main-color);
|
|
1110
|
+
--hero-text-color: var(--text-color);
|
|
1111
|
+
padding: 20px 30px;
|
|
1112
|
+
margin: 0;
|
|
1113
|
+
color: var(--hero-text-color);
|
|
1114
|
+
background-color: var(--hero-background-color);
|
|
1115
|
+
}
|
|
1116
|
+
.v-hero__title {
|
|
1117
|
+
margin: 0;
|
|
1118
|
+
font-size: 1.75rem;
|
|
1119
|
+
font-weight: 300;
|
|
1120
|
+
line-height: 1;
|
|
1121
|
+
color: inherit;
|
|
1122
|
+
}
|
|
997
1123
|
.v-navigation-item--opened {
|
|
998
1124
|
--tile-background: var(--tile-active-background);
|
|
999
1125
|
--tile-text-color: var(--tile-text-active-color);
|
package/dist/vui.d.ts
CHANGED
|
@@ -484,6 +484,44 @@ export declare interface NavigationItemInput extends ExtractPropInput<ReturnType
|
|
|
484
484
|
children?: NavigationItemInput[];
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
+
export declare const PAGINATION_ALIGNS: readonly ["left", "center", "right"];
|
|
488
|
+
|
|
489
|
+
export declare function paginationProps(): {
|
|
490
|
+
/**
|
|
491
|
+
* Active Pages
|
|
492
|
+
*/
|
|
493
|
+
modelValue: {
|
|
494
|
+
type: PropType<string | number>;
|
|
495
|
+
default: number;
|
|
496
|
+
};
|
|
497
|
+
/**
|
|
498
|
+
* Total number of pages
|
|
499
|
+
*/
|
|
500
|
+
length: {
|
|
501
|
+
type: PropType<string | number>;
|
|
502
|
+
default: number;
|
|
503
|
+
};
|
|
504
|
+
/**
|
|
505
|
+
* Maximum number of links to display.
|
|
506
|
+
*/
|
|
507
|
+
totalVisible: PropType<string | number>;
|
|
508
|
+
/**
|
|
509
|
+
* true when narrowing
|
|
510
|
+
*/
|
|
511
|
+
dense: BooleanConstructor;
|
|
512
|
+
disabled: BooleanConstructor;
|
|
513
|
+
align: {
|
|
514
|
+
type: PropType<"left" | "center" | "right">;
|
|
515
|
+
default: string;
|
|
516
|
+
};
|
|
517
|
+
/**
|
|
518
|
+
* To synchronize with a query, use the query name
|
|
519
|
+
*/
|
|
520
|
+
routeQuery: StringConstructor;
|
|
521
|
+
beforeChange: PropType<VPaginationGuard>;
|
|
522
|
+
color: PropType<ScopeName>;
|
|
523
|
+
};
|
|
524
|
+
|
|
487
525
|
export declare type RawIconProp = IconName | EmptyIconSymbol | ToggleableIconHook;
|
|
488
526
|
|
|
489
527
|
export declare function rawIconProp(): PropType<RawIconProp>;
|
|
@@ -1313,6 +1351,33 @@ export declare interface VFormSlots {
|
|
|
1313
1351
|
default: VueForm;
|
|
1314
1352
|
}
|
|
1315
1353
|
|
|
1354
|
+
export declare const VHero: DefineComponent<{
|
|
1355
|
+
color: {
|
|
1356
|
+
type: PropType<ScopeName>;
|
|
1357
|
+
default: string;
|
|
1358
|
+
};
|
|
1359
|
+
tag: {
|
|
1360
|
+
type: StringConstructor;
|
|
1361
|
+
default: string;
|
|
1362
|
+
};
|
|
1363
|
+
hTag: {
|
|
1364
|
+
type: StringConstructor;
|
|
1365
|
+
default: string;
|
|
1366
|
+
};
|
|
1367
|
+
}, () => JSX.Element, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, Record<string, any>, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<{
|
|
1368
|
+
color?: unknown;
|
|
1369
|
+
tag?: unknown;
|
|
1370
|
+
hTag?: unknown;
|
|
1371
|
+
} & {
|
|
1372
|
+
color: ScopeName;
|
|
1373
|
+
tag: string;
|
|
1374
|
+
hTag: string;
|
|
1375
|
+
} & {}>, {
|
|
1376
|
+
color: ScopeName;
|
|
1377
|
+
tag: string;
|
|
1378
|
+
hTag: string;
|
|
1379
|
+
}>;
|
|
1380
|
+
|
|
1316
1381
|
export declare const VIcon: DefineComponent<{
|
|
1317
1382
|
name: {
|
|
1318
1383
|
type: PropType<IconName | "$empty">;
|
|
@@ -1736,6 +1801,77 @@ export declare const VOptionGroup: DefineComponent<{
|
|
|
1736
1801
|
disabled: boolean;
|
|
1737
1802
|
}>;
|
|
1738
1803
|
|
|
1804
|
+
export declare const VPagination: DefineComponent<{
|
|
1805
|
+
/**
|
|
1806
|
+
* Active Pages
|
|
1807
|
+
*/
|
|
1808
|
+
modelValue: {
|
|
1809
|
+
type: PropType<string | number>;
|
|
1810
|
+
default: number;
|
|
1811
|
+
};
|
|
1812
|
+
/**
|
|
1813
|
+
* Total number of pages
|
|
1814
|
+
*/
|
|
1815
|
+
length: {
|
|
1816
|
+
type: PropType<string | number>;
|
|
1817
|
+
default: number;
|
|
1818
|
+
};
|
|
1819
|
+
/**
|
|
1820
|
+
* Maximum number of links to display.
|
|
1821
|
+
*/
|
|
1822
|
+
totalVisible: PropType<string | number>;
|
|
1823
|
+
/**
|
|
1824
|
+
* true when narrowing
|
|
1825
|
+
*/
|
|
1826
|
+
dense: BooleanConstructor;
|
|
1827
|
+
disabled: BooleanConstructor;
|
|
1828
|
+
align: {
|
|
1829
|
+
type: PropType<"left" | "center" | "right">;
|
|
1830
|
+
default: string;
|
|
1831
|
+
};
|
|
1832
|
+
/**
|
|
1833
|
+
* To synchronize with a query, use the query name
|
|
1834
|
+
*/
|
|
1835
|
+
routeQuery: StringConstructor;
|
|
1836
|
+
beforeChange: PropType<VPaginationGuard>;
|
|
1837
|
+
color: PropType<ScopeName>;
|
|
1838
|
+
}, () => JSX.Element | undefined, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
1839
|
+
change: (page: number) => true;
|
|
1840
|
+
}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<{
|
|
1841
|
+
modelValue?: unknown;
|
|
1842
|
+
length?: unknown;
|
|
1843
|
+
totalVisible?: unknown;
|
|
1844
|
+
dense?: unknown;
|
|
1845
|
+
disabled?: unknown;
|
|
1846
|
+
align?: unknown;
|
|
1847
|
+
routeQuery?: unknown;
|
|
1848
|
+
beforeChange?: unknown;
|
|
1849
|
+
color?: unknown;
|
|
1850
|
+
} & {
|
|
1851
|
+
dense: boolean;
|
|
1852
|
+
disabled: boolean;
|
|
1853
|
+
length: string | number;
|
|
1854
|
+
modelValue: string | number;
|
|
1855
|
+
align: "left" | "center" | "right";
|
|
1856
|
+
} & {
|
|
1857
|
+
totalVisible?: string | number | undefined;
|
|
1858
|
+
routeQuery?: string | undefined;
|
|
1859
|
+
beforeChange?: VPaginationGuard | undefined;
|
|
1860
|
+
color?: ScopeName | undefined;
|
|
1861
|
+
}> & {
|
|
1862
|
+
onChange?: ((page: number) => any) | undefined;
|
|
1863
|
+
}, {
|
|
1864
|
+
dense: boolean;
|
|
1865
|
+
disabled: boolean;
|
|
1866
|
+
length: string | number;
|
|
1867
|
+
modelValue: string | number;
|
|
1868
|
+
align: "left" | "center" | "right";
|
|
1869
|
+
}>;
|
|
1870
|
+
|
|
1871
|
+
export declare type VPaginationAlign = typeof PAGINATION_ALIGNS[number];
|
|
1872
|
+
|
|
1873
|
+
export declare type VPaginationGuard = (page: number) => boolean | void | Promise<boolean | void>;
|
|
1874
|
+
|
|
1739
1875
|
export declare const VPaper: DefineComponent<{
|
|
1740
1876
|
square: BooleanConstructor;
|
|
1741
1877
|
headerProps: PropType<ARGS>;
|