@fastkit/vui 0.6.41 → 0.6.45

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.
@@ -7,8 +7,8 @@ export interface ViteVuiPluginOptions extends Partial<Pick<VuiServiceOptions, 'u
7
7
  mediaMatch?: string;
8
8
  iconFont?: RawIconFontEntry[];
9
9
  iconFontDefaults?: IconFontSettings;
10
- onBooted?: () => any;
11
- onBootError?: (err: unknown) => any;
10
+ onBooted?: (() => any) | (() => Promise<any>);
11
+ onBootError?: ((err: unknown) => any) | ((err: unknown) => Promise<any>);
12
12
  __dev?: boolean;
13
13
  }
14
14
  export interface ViteVuiPluginResultSettings extends Pick<VuiServiceOptions, 'uiSettings' | 'icons'> {
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../../../../../../../packages/vui/src/tool/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAK9B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA+F/C,MAAM,WAAW,oBACf,SAAQ,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,OAAO,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,2BAA2B,CAAC;IACtC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,aAAa,CAC3B,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAuJrB"}
1
+ {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../../../../../../../packages/vui/src/tool/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAK9B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA+F/C,MAAM,WAAW,oBACf,SAAQ,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,OAAO,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,2BAA2B,CAAC;IACtC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,aAAa,CAC3B,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAuJrB"}
package/dist/vui.cjs.js CHANGED
@@ -439,10 +439,10 @@ const VGridContainer = vue.defineComponent({
439
439
  });
440
440
 
441
441
  function createPaperBaseProps() {
442
- return {
442
+ return { ...vueUtils.htmlAttributesPropOptions,
443
443
  color: String,
444
444
  tag: {
445
- type: String,
445
+ type: [String, Object],
446
446
  default: 'div'
447
447
  },
448
448
  ...vueUtils.defineSlotsProps()
@@ -459,6 +459,7 @@ function createPaperProps() {
459
459
  }
460
460
  const VPaper = vue.defineComponent({
461
461
  name: 'VPaper',
462
+ inheritAttrs: false,
462
463
  props: createPaperProps(),
463
464
 
464
465
  setup(props, ctx) {
@@ -469,7 +470,7 @@ const VPaper = vue.defineComponent({
469
470
  const scope = vueColorScheme.useScopeColorClass(props);
470
471
  const classes = vue.computed(() => [elevation.elevationClassName.value, scope.value.className, {
471
472
  'v-paper--plain': !scope.value.value,
472
- 'v-paper--has-color': !!scope.value.value,
473
+ 'v-paper--has-color': !!scope.value.value || !!ctx.attrs.disabled,
473
474
  'v-paper--square': props.square
474
475
  }]);
475
476
  const headerProps = vue.computed(() => props.headerProps);
@@ -479,16 +480,18 @@ const VPaper = vue.defineComponent({
479
480
  const TagName = tag.value;
480
481
  const header = vueUtils.renderSlotOrEmpty(ctx.slots, 'header');
481
482
  const footer = vueUtils.renderSlotOrEmpty(ctx.slots, 'footer');
482
- return vue.createVNode(TagName, {
483
+ return vue.createVNode(TagName, vue.mergeProps({
483
484
  "class": ['v-paper', classes.value]
484
- }, {
485
- default: () => [header && vue.createVNode("div", vue.mergeProps({
485
+ }, ctx.attrs), {
486
+ default: () => [vue.createVNode("div", {
487
+ "class": "v-paper__inner"
488
+ }, [header && vue.createVNode("div", vue.mergeProps({
486
489
  "class": "v-paper__header"
487
490
  }, headerProps.value), [header]), vue.createVNode("div", vue.mergeProps({
488
491
  "class": "v-paper__body"
489
492
  }, bodyProps.value), [vueUtils.renderSlotOrEmpty(ctx.slots, 'default')]), footer && vue.createVNode("div", vue.mergeProps({
490
493
  "class": "v-paper__footer"
491
- }, footerProps.value), [footer])]
494
+ }, footerProps.value), [footer])])]
492
495
  });
493
496
  };
494
497
  }
@@ -496,20 +499,42 @@ const VPaper = vue.defineComponent({
496
499
  });
497
500
 
498
501
  function createCardProps() {
499
- return { ...createPaperProps()
502
+ return { ...createPaperProps(),
503
+ ...vueUtils.navigationableInheritProps,
504
+ disabled: Boolean
500
505
  };
501
506
  }
502
507
  const VCard = vue.defineComponent({
503
508
  name: 'VCard',
509
+ inheritAttrs: false,
504
510
  props: createCardProps(),
505
511
 
506
512
  setup(props, ctx) {
507
513
  const _props = vue.computed(() => props);
508
514
 
515
+ const data = vue.computed(() => {
516
+ const hasLink = !!ctx.attrs.href || !!ctx.attrs.to;
517
+ const attrs = { ..._props.value,
518
+ ...ctx.attrs,
519
+ class: ['v-card', ctx.attrs.class, typeof ctx.attrs.onClick === 'function' && 'clickable'],
520
+ tag: hasLink ? vueUtils.VLink : 'div'
521
+ };
522
+
523
+ if (props.disabled) {
524
+ attrs.disabled = 'disabled';
525
+ delete attrs.onClick;
526
+ delete attrs.href;
527
+ delete attrs.to;
528
+ } else {
529
+ delete attrs.disabled;
530
+ }
531
+
532
+ return {
533
+ attrs
534
+ };
535
+ });
509
536
  return () => {
510
- return vue.createVNode(VPaper, vue.mergeProps({
511
- "class": "v-card"
512
- }, _props.value), ctx.slots);
537
+ return vue.createVNode(VPaper, data.value.attrs, ctx.slots);
513
538
  };
514
539
  }
515
540
 
@@ -1209,7 +1234,12 @@ function _isSlot$b(s) {
1209
1234
 
1210
1235
  function createNavigationItemProps() {
1211
1236
  return { ...createListTileProps(),
1212
- match: String // key: {
1237
+ match: String,
1238
+ depth: {
1239
+ type: Number,
1240
+ default: 0
1241
+ },
1242
+ nested: Boolean // key: {
1213
1243
  // type: [String, Number],
1214
1244
  // required: true,
1215
1245
  // },
@@ -1272,7 +1302,8 @@ const VNavigationItem = vue.defineComponent({
1272
1302
  return to.path;
1273
1303
  });
1274
1304
  const classes = vue.computed(() => [{
1275
- 'v-navigation-item--opened': opened.value
1305
+ 'v-navigation-item--opened': opened.value,
1306
+ [`v-navigation-item--depth-${props.depth}`]: props.depth > 0
1276
1307
  }]);
1277
1308
  const route = vueRouter.useRoute(); // const classes = computed(() => [
1278
1309
  // // {
@@ -1397,7 +1428,8 @@ const VNavigationItem = vue.defineComponent({
1397
1428
  default: () => [vue.withDirectives(vue.createVNode("div", {
1398
1429
  "class": "v-navigation-item__expand"
1399
1430
  }, [_children.map(child => renderNavigationItemInput(child, {
1400
- startIconEmptySpace: _props.value.startIconEmptySpace // onClick,
1431
+ startIconEmptySpace: _props.value.startIconEmptySpace,
1432
+ depth: props.nested ? props.depth + 1 : props.depth // onClick,
1401
1433
  // onChangeActive,
1402
1434
 
1403
1435
  }))]), [[vue.vShow, opened.value]])]
@@ -439,10 +439,10 @@ const VGridContainer = vue.defineComponent({
439
439
  });
440
440
 
441
441
  function createPaperBaseProps() {
442
- return {
442
+ return { ...vueUtils.htmlAttributesPropOptions,
443
443
  color: String,
444
444
  tag: {
445
- type: String,
445
+ type: [String, Object],
446
446
  default: 'div'
447
447
  },
448
448
  ...vueUtils.defineSlotsProps()
@@ -459,6 +459,7 @@ function createPaperProps() {
459
459
  }
460
460
  const VPaper = vue.defineComponent({
461
461
  name: 'VPaper',
462
+ inheritAttrs: false,
462
463
  props: createPaperProps(),
463
464
 
464
465
  setup(props, ctx) {
@@ -469,7 +470,7 @@ const VPaper = vue.defineComponent({
469
470
  const scope = vueColorScheme.useScopeColorClass(props);
470
471
  const classes = vue.computed(() => [elevation.elevationClassName.value, scope.value.className, {
471
472
  'v-paper--plain': !scope.value.value,
472
- 'v-paper--has-color': !!scope.value.value,
473
+ 'v-paper--has-color': !!scope.value.value || !!ctx.attrs.disabled,
473
474
  'v-paper--square': props.square
474
475
  }]);
475
476
  const headerProps = vue.computed(() => props.headerProps);
@@ -479,16 +480,18 @@ const VPaper = vue.defineComponent({
479
480
  const TagName = tag.value;
480
481
  const header = vueUtils.renderSlotOrEmpty(ctx.slots, 'header');
481
482
  const footer = vueUtils.renderSlotOrEmpty(ctx.slots, 'footer');
482
- return vue.createVNode(TagName, {
483
+ return vue.createVNode(TagName, vue.mergeProps({
483
484
  "class": ['v-paper', classes.value]
484
- }, {
485
- default: () => [header && vue.createVNode("div", vue.mergeProps({
485
+ }, ctx.attrs), {
486
+ default: () => [vue.createVNode("div", {
487
+ "class": "v-paper__inner"
488
+ }, [header && vue.createVNode("div", vue.mergeProps({
486
489
  "class": "v-paper__header"
487
490
  }, headerProps.value), [header]), vue.createVNode("div", vue.mergeProps({
488
491
  "class": "v-paper__body"
489
492
  }, bodyProps.value), [vueUtils.renderSlotOrEmpty(ctx.slots, 'default')]), footer && vue.createVNode("div", vue.mergeProps({
490
493
  "class": "v-paper__footer"
491
- }, footerProps.value), [footer])]
494
+ }, footerProps.value), [footer])])]
492
495
  });
493
496
  };
494
497
  }
@@ -496,20 +499,42 @@ const VPaper = vue.defineComponent({
496
499
  });
497
500
 
498
501
  function createCardProps() {
499
- return { ...createPaperProps()
502
+ return { ...createPaperProps(),
503
+ ...vueUtils.navigationableInheritProps,
504
+ disabled: Boolean
500
505
  };
501
506
  }
502
507
  const VCard = vue.defineComponent({
503
508
  name: 'VCard',
509
+ inheritAttrs: false,
504
510
  props: createCardProps(),
505
511
 
506
512
  setup(props, ctx) {
507
513
  const _props = vue.computed(() => props);
508
514
 
515
+ const data = vue.computed(() => {
516
+ const hasLink = !!ctx.attrs.href || !!ctx.attrs.to;
517
+ const attrs = { ..._props.value,
518
+ ...ctx.attrs,
519
+ class: ['v-card', ctx.attrs.class, typeof ctx.attrs.onClick === 'function' && 'clickable'],
520
+ tag: hasLink ? vueUtils.VLink : 'div'
521
+ };
522
+
523
+ if (props.disabled) {
524
+ attrs.disabled = 'disabled';
525
+ delete attrs.onClick;
526
+ delete attrs.href;
527
+ delete attrs.to;
528
+ } else {
529
+ delete attrs.disabled;
530
+ }
531
+
532
+ return {
533
+ attrs
534
+ };
535
+ });
509
536
  return () => {
510
- return vue.createVNode(VPaper, vue.mergeProps({
511
- "class": "v-card"
512
- }, _props.value), ctx.slots);
537
+ return vue.createVNode(VPaper, data.value.attrs, ctx.slots);
513
538
  };
514
539
  }
515
540
 
@@ -1209,7 +1234,12 @@ function _isSlot$b(s) {
1209
1234
 
1210
1235
  function createNavigationItemProps() {
1211
1236
  return { ...createListTileProps(),
1212
- match: String // key: {
1237
+ match: String,
1238
+ depth: {
1239
+ type: Number,
1240
+ default: 0
1241
+ },
1242
+ nested: Boolean // key: {
1213
1243
  // type: [String, Number],
1214
1244
  // required: true,
1215
1245
  // },
@@ -1272,7 +1302,8 @@ const VNavigationItem = vue.defineComponent({
1272
1302
  return to.path;
1273
1303
  });
1274
1304
  const classes = vue.computed(() => [{
1275
- 'v-navigation-item--opened': opened.value
1305
+ 'v-navigation-item--opened': opened.value,
1306
+ [`v-navigation-item--depth-${props.depth}`]: props.depth > 0
1276
1307
  }]);
1277
1308
  const route = vueRouter.useRoute(); // const classes = computed(() => [
1278
1309
  // // {
@@ -1397,7 +1428,8 @@ const VNavigationItem = vue.defineComponent({
1397
1428
  default: () => [vue.withDirectives(vue.createVNode("div", {
1398
1429
  "class": "v-navigation-item__expand"
1399
1430
  }, [_children.map(child => renderNavigationItemInput(child, {
1400
- startIconEmptySpace: _props.value.startIconEmptySpace // onClick,
1431
+ startIconEmptySpace: _props.value.startIconEmptySpace,
1432
+ depth: props.nested ? props.depth + 1 : props.depth // onClick,
1401
1433
  // onChangeActive,
1402
1434
 
1403
1435
  }))]), [[vue.vShow, opened.value]])]
package/dist/vui.css CHANGED
@@ -551,6 +551,7 @@ template {
551
551
  --tabs-bar-height: calc(var(--root-em) * 0.375);
552
552
  --tabs-font-size: calc(var(--root-em) * 0.875);
553
553
  --breadcrumbs-font-size: var(--typo-sm-size);
554
+ --list-tile-padding: calc(var(--root-em) * 0.625);
554
555
  }
555
556
 
556
557
  :root,
@@ -898,6 +899,7 @@ thead th {
898
899
  }
899
900
  .v-paper {
900
901
  --paper-radius: var(--control-field-radius);
902
+ display: block;
901
903
  color: var(--paper-text-color);
902
904
  background-color: var(--paper-background--color);
903
905
  border-radius: var(--paper-radius);
@@ -912,10 +914,14 @@ thead th {
912
914
  --paper-text-color: var(--text-color);
913
915
  --paper-link-color: var(--nav-color);
914
916
  }
917
+ .v-paper__inner {
918
+ position: relative;
919
+ border-radius: inherit;
920
+ }
915
921
  .v-paper--square {
916
922
  --paper-radius: 0px;
917
923
  }
918
- .v-paper a {
924
+ .v-paper a:not(.v-paper) {
919
925
  color: var(--paper-link-color);
920
926
  }
921
927
  .v-paper__header {
@@ -926,7 +932,48 @@ thead th {
926
932
  border-bottom-right-radius: inherit;
927
933
  border-bottom-left-radius: inherit;
928
934
  }
929
-
935
+ .v-card {
936
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
937
+ position: relative;
938
+ width: 100%;
939
+ padding: 0;
940
+ text-align: left;
941
+ touch-action: manipulation;
942
+ user-select: none;
943
+ border: 0;
944
+ outline: 0;
945
+ appearance: none;
946
+ }
947
+ .v-card::-moz-focus-inner {
948
+ border: 0;
949
+ }
950
+ .v-card, .v-card:hover, .v-card:focus {
951
+ text-decoration: none;
952
+ }
953
+ .v-card.clickable {
954
+ cursor: pointer;
955
+ }
956
+ .v-card.clickable::before {
957
+ position: absolute;
958
+ top: 0;
959
+ right: 0;
960
+ bottom: 0;
961
+ left: 0;
962
+ content: "";
963
+ background: currentColor;
964
+ border-radius: inherit;
965
+ opacity: 0;
966
+ transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1);
967
+ }
968
+ .v-card.clickable:hover::before, .v-card.clickable:focus::before {
969
+ opacity: 0.125;
970
+ }
971
+ .v-card[disabled] {
972
+ pointer-events: none;
973
+ }
974
+ .v-card[disabled]::before {
975
+ content: none;
976
+ }
930
977
  .v-card-content {
931
978
  padding: var(--card-content-padding);
932
979
  }
@@ -1178,10 +1225,12 @@ thead th {
1178
1225
  --tile-text-active-color: var(--text-color);
1179
1226
  --tile-pin-color: transparent;
1180
1227
  --paper-link-color: var(--tile-text-color);
1228
+ --depth-padding: var(--list-tile-padding);
1181
1229
  display: flex;
1182
1230
  align-items: center;
1183
1231
  width: 100%;
1184
- padding: 10px;
1232
+ padding: var(--list-tile-padding);
1233
+ padding-left: var(--depth-padding);
1185
1234
  color: var(--tile-text-color);
1186
1235
  text-align: left;
1187
1236
  text-decoration: none;
@@ -1276,6 +1325,15 @@ thead th {
1276
1325
  .v-navigation-item__expand .v-navigation-item {
1277
1326
  --tile-background: var(--tile-active-background);
1278
1327
  }
1328
+ .v-navigation-item--depth-1 {
1329
+ --depth-padding: calc(var(--list-tile-padding) * 2);
1330
+ }
1331
+ .v-navigation-item--depth-2 {
1332
+ --depth-padding: calc(var(--list-tile-padding) * 3);
1333
+ }
1334
+ .v-navigation-item--depth-3 {
1335
+ --depth-padding: calc(var(--list-tile-padding) * 4);
1336
+ }
1279
1337
  .v-navigation__caption {
1280
1338
  display: block;
1281
1339
  padding: calc(var(--root-em) * 0.625) calc(var(--root-em) * 1.5625);