@fastkit/vui 0.6.38 → 0.6.42

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.
Files changed (188) hide show
  1. package/dist/tool/index.js +3 -0
  2. package/dist/tool/vite-plugin.d.ts.map +1 -1
  3. package/dist/vui.cjs.js +180 -5
  4. package/dist/vui.cjs.prod.js +180 -5
  5. package/dist/vui.css +24 -14
  6. package/dist/vui.d.ts +3294 -876
  7. package/dist/vui.esm-bundler.js +180 -7
  8. package/dist/vui.min.css +1 -1
  9. package/dist/vui.min.css.map +1 -1
  10. package/package.json +8 -7
  11. package/src/.DS_Store +0 -0
  12. package/src/assets/.DS_Store +0 -0
  13. package/src/assets/builtins/color-scheme.ts +9 -0
  14. package/src/assets/builtins/media-match.ts +3 -0
  15. package/src/components/.DS_Store +0 -0
  16. package/src/components/VAccordion/VAccordion.scss +2 -0
  17. package/src/components/VAccordion/VAccordion.tsx +5 -0
  18. package/src/components/VAccordion/index.ts +1 -0
  19. package/src/components/VApp/VApp.tsx +17 -0
  20. package/src/components/VApp/index.ts +1 -0
  21. package/src/components/VBreadcrumbs/VBreadcrumbs.scss +61 -0
  22. package/src/components/VBreadcrumbs/VBreadcrumbs.tsx +137 -0
  23. package/src/components/VBreadcrumbs/index.ts +1 -0
  24. package/src/components/VButton/.DS_Store +0 -0
  25. package/src/components/VButton/VButton.scss +137 -0
  26. package/src/components/VButton/VButton.tsx +148 -0
  27. package/src/components/VButton/VButtonGroup.scss +23 -0
  28. package/src/components/VButton/VButtonGroup.tsx +81 -0
  29. package/src/components/VButton/index.ts +2 -0
  30. package/src/components/VCard/VCard.scss +3 -0
  31. package/src/components/VCard/VCard.tsx +20 -0
  32. package/src/components/VCard/VCardActions.scss +10 -0
  33. package/src/components/VCard/VCardActions.tsx +16 -0
  34. package/src/components/VCard/VCardContent.scss +3 -0
  35. package/src/components/VCard/VCardContent.tsx +16 -0
  36. package/src/components/VCard/index.ts +3 -0
  37. package/src/components/VCheckable/VCheckable.scss +103 -0
  38. package/src/components/VCheckable/VCheckable.tsx +60 -0
  39. package/src/components/VCheckable/index.ts +1 -0
  40. package/src/components/VCheckbox/VCheckbox.scss +56 -0
  41. package/src/components/VCheckbox/VCheckbox.tsx +63 -0
  42. package/src/components/VCheckbox/index.ts +1 -0
  43. package/src/components/VCheckboxGroup/.DS_Store +0 -0
  44. package/src/components/VCheckboxGroup/VCheckboxGroup.tsx +11 -0
  45. package/src/components/VCheckboxGroup/index.ts +1 -0
  46. package/src/components/VContentSwitcher/VContentSwitcher.scss +73 -0
  47. package/src/components/VContentSwitcher/VContentSwitcher.tsx +156 -0
  48. package/src/components/VContentSwitcher/index.ts +1 -0
  49. package/src/components/VControlField/VControlField.scss +183 -0
  50. package/src/components/VControlField/VControlField.tsx +152 -0
  51. package/src/components/VControlField/index.ts +1 -0
  52. package/src/components/VDataTable/VDataTable.scss +230 -0
  53. package/src/components/VDataTable/VDataTable.tsx +761 -0
  54. package/src/components/VDataTable/index.ts +1 -0
  55. package/src/components/VDrawerLayout/VDrawerLayout.scss +26 -0
  56. package/src/components/VDrawerLayout/VDrawerLayout.tsx +35 -0
  57. package/src/components/VDrawerLayout/index.ts +1 -0
  58. package/src/components/VForm/VForm.tsx +77 -0
  59. package/src/components/VForm/index.ts +1 -0
  60. package/src/components/VFormControl/VFormControl.scss +59 -0
  61. package/src/components/VFormControl/VFormControl.tsx +85 -0
  62. package/src/components/VFormControl/index.ts +1 -0
  63. package/src/components/VGrid/VGridContainer.scss +4 -0
  64. package/src/components/VGrid/VGridContainer.tsx +191 -0
  65. package/src/components/VGrid/VGridItem.scss +3 -0
  66. package/src/components/VGrid/VGridItem.tsx +114 -0
  67. package/src/components/VGrid/index.ts +2 -0
  68. package/src/components/VGrid/schemes.ts +28 -0
  69. package/src/components/VHero/.DS_Store +0 -0
  70. package/src/components/VHero/VHero.scss +26 -0
  71. package/src/components/VHero/VHero.tsx +52 -0
  72. package/src/components/VHero/index.ts +1 -0
  73. package/src/components/VIcon/VIcon.scss +22 -0
  74. package/src/components/VIcon/VIcon.tsx +110 -0
  75. package/src/components/VIcon/index.ts +1 -0
  76. package/src/components/VListTile/VListTile.scss +71 -0
  77. package/src/components/VListTile/VListTile.tsx +121 -0
  78. package/src/components/VListTile/index.ts +1 -0
  79. package/src/components/VNavigation/VNavigation.scss +12 -0
  80. package/src/components/VNavigation/VNavigation.tsx +79 -0
  81. package/src/components/VNavigation/VNavigationItem.scss +14 -0
  82. package/src/components/VNavigation/VNavigationItem.tsx +252 -0
  83. package/src/components/VNavigation/index.ts +2 -0
  84. package/src/components/VOption/VOption.scss +61 -0
  85. package/src/components/VOption/VOption.tsx +52 -0
  86. package/src/components/VOption/index.ts +1 -0
  87. package/src/components/VOptionGroup/VOptionGroup.scss +3 -0
  88. package/src/components/VOptionGroup/VOptionGroup.tsx +55 -0
  89. package/src/components/VOptionGroup/index.ts +1 -0
  90. package/src/components/VPagination/VPagination.scss +100 -0
  91. package/src/components/VPagination/VPagination.tsx +346 -0
  92. package/src/components/VPagination/index.ts +1 -0
  93. package/src/components/VPaper/VPaper.scss +37 -0
  94. package/src/components/VPaper/VPaper.tsx +78 -0
  95. package/src/components/VPaper/index.ts +1 -0
  96. package/src/components/VRadio/.DS_Store +0 -0
  97. package/src/components/VRadio/VRadio.scss +66 -0
  98. package/src/components/VRadio/VRadio.tsx +56 -0
  99. package/src/components/VRadio/index.ts +1 -0
  100. package/src/components/VRadioGroup/.DS_Store +0 -0
  101. package/src/components/VRadioGroup/VRadioGroup.tsx +10 -0
  102. package/src/components/VRadioGroup/index.ts +1 -0
  103. package/src/components/VSelect/VSelect.scss +78 -0
  104. package/src/components/VSelect/VSelect.tsx +204 -0
  105. package/src/components/VSelect/index.ts +1 -0
  106. package/src/components/VSwitch/VSwitch.scss +125 -0
  107. package/src/components/VSwitch/VSwitch.tsx +66 -0
  108. package/src/components/VSwitch/index.ts +1 -0
  109. package/src/components/VSwitchGroup/.DS_Store +0 -0
  110. package/src/components/VSwitchGroup/VSwitchGroup.tsx +11 -0
  111. package/src/components/VSwitchGroup/index.ts +1 -0
  112. package/src/components/VTabs/.DS_Store +0 -0
  113. package/src/components/VTabs/VTab.scss +73 -0
  114. package/src/components/VTabs/VTab.tsx +88 -0
  115. package/src/components/VTabs/VTabs.scss +49 -0
  116. package/src/components/VTabs/VTabs.tsx +315 -0
  117. package/src/components/VTabs/index.ts +1 -0
  118. package/src/components/VTextCounter/VTextCounter.scss +3 -0
  119. package/src/components/VTextCounter/VTextCounter.tsx +21 -0
  120. package/src/components/VTextCounter/index.ts +1 -0
  121. package/src/components/VTextField/VTextField.scss +45 -0
  122. package/src/components/VTextField/VTextField.tsx +96 -0
  123. package/src/components/VTextField/index.ts +1 -0
  124. package/src/components/VTextarea/VTextarea.scss +41 -0
  125. package/src/components/VTextarea/VTextarea.tsx +93 -0
  126. package/src/components/VTextarea/index.ts +1 -0
  127. package/src/components/VToolbar/.DS_Store +0 -0
  128. package/src/components/VToolbar/VToolbar.scss +26 -0
  129. package/src/components/VToolbar/VToolbar.tsx +44 -0
  130. package/src/components/VToolbar/VToolbarEdge.scss +27 -0
  131. package/src/components/VToolbar/VToolbarEdge.tsx +35 -0
  132. package/src/components/VToolbar/VToolbarMenu.scss +7 -0
  133. package/src/components/VToolbar/VToolbarMenu.tsx +26 -0
  134. package/src/components/VToolbar/VToolbarTitle.scss +22 -0
  135. package/src/components/VToolbar/VToolbarTitle.tsx +25 -0
  136. package/src/components/VToolbar/index.ts +4 -0
  137. package/src/components/VWysiwygEditor/.DS_Store +0 -0
  138. package/src/components/VWysiwygEditor/VWysiwygEditor.scss +60 -0
  139. package/src/components/VWysiwygEditor/VWysiwygEditor.tsx +293 -0
  140. package/src/components/VWysiwygEditor/index.ts +2 -0
  141. package/src/components/VWysiwygEditor/schemes.ts +65 -0
  142. package/src/components/VWysiwygEditor/tools/bullet-list.ts +18 -0
  143. package/src/components/VWysiwygEditor/tools/format-bold.ts +19 -0
  144. package/src/components/VWysiwygEditor/tools/format-italic.ts +18 -0
  145. package/src/components/VWysiwygEditor/tools/format-underline.ts +18 -0
  146. package/src/components/VWysiwygEditor/tools/history.ts +26 -0
  147. package/src/components/VWysiwygEditor/tools/index.ts +8 -0
  148. package/src/components/VWysiwygEditor/tools/link.ts +57 -0
  149. package/src/components/VWysiwygEditor/tools/ordered-list.ts +21 -0
  150. package/src/components/VWysiwygEditor/tools/text-color.ts +14 -0
  151. package/src/components/index.ts +32 -0
  152. package/src/components/kits.ts +1 -0
  153. package/src/components/loading.ts +1 -0
  154. package/src/composables/.DS_Store +0 -0
  155. package/src/composables/control.ts +118 -0
  156. package/src/composables/elevation.ts +34 -0
  157. package/src/composables/form-selector.scss +11 -0
  158. package/src/composables/form-selector.tsx +101 -0
  159. package/src/composables/index.ts +4 -0
  160. package/src/composables/vui.ts +9 -0
  161. package/src/index.ts +10 -0
  162. package/src/injections.ts +61 -0
  163. package/src/logger.ts +7 -0
  164. package/src/plugin.tsx +76 -0
  165. package/src/schemes/control.ts +7 -0
  166. package/src/schemes/elevation.ts +26 -0
  167. package/src/schemes/index.ts +2 -0
  168. package/src/service.tsx +242 -0
  169. package/src/styles/.DS_Store +0 -0
  170. package/src/styles/after-effects/display-flow.scss +346 -0
  171. package/src/styles/after-effects/spacing.scss +155 -0
  172. package/src/styles/after-effects/text.scss +90 -0
  173. package/src/styles/after-effects.scss +3 -0
  174. package/src/styles/base.scss +14 -0
  175. package/src/styles/control.scss +11 -0
  176. package/src/styles/core/functions.scss +62 -0
  177. package/src/styles/core/typo.scss +56 -0
  178. package/src/styles/core.scss +2 -0
  179. package/src/styles/elevation.scss +9 -0
  180. package/src/styles/group.scss +57 -0
  181. package/src/styles/index.scss +9 -0
  182. package/src/styles/transition.scss +11 -0
  183. package/src/styles/typo.scss +11 -0
  184. package/src/styles/variables.scss +320 -0
  185. package/src/styles/wysiwyg.scss +24 -0
  186. package/src/tool/.DS_Store +0 -0
  187. package/src/tool/index.ts +2 -0
  188. package/src/tool/vite-plugin.ts +281 -0
@@ -18,6 +18,8 @@ const name = 'vui';
18
18
  new tinyLogger.TinyLogger(name);
19
19
  const VuiError = tinyLogger.createTinyError(name);
20
20
 
21
+ const VUI_PACKAGE_DIR = path__default.resolve(__dirname, '../..');
22
+ const STYLE_AFTER_EFFECTS_PATH = path__default.join(VUI_PACKAGE_DIR, 'src/styles/after-effects.scss');
21
23
  const COLOR_DUMP_STYLE = `@include dump-color-scheme(true);`;
22
24
  const TEMPLATE = `
23
25
  /* eslint-disable */
@@ -37,6 +39,7 @@ import { installVuiPlugin as _installVuiPlugin, VuiPluginOptions } from '@fastki
37
39
  import { colorScheme } from '<%~ it.colorScheme %>';
38
40
  import '<%~ it.mediaMatch %>';
39
41
  import './icon-font';
42
+ import '${STYLE_AFTER_EFFECTS_PATH}';
40
43
 
41
44
  export function installVui(settings: { app: App, router: Router }) {
42
45
  _installVuiPlugin(settings.app, {
@@ -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;AAwF/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,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"}
package/dist/vui.cjs.js CHANGED
@@ -6,6 +6,7 @@ var vueKit = require('@fastkit/vue-kit');
6
6
  var vue = require('vue');
7
7
  var vueRouter = require('vue-router');
8
8
  var vueUtils = require('@fastkit/vue-utils');
9
+ var vueScroller = require('@fastkit/vue-scroller');
9
10
  var vueColorScheme = require('@fastkit/vue-color-scheme');
10
11
  var vueLoading = require('@fastkit/vue-loading');
11
12
  var iconFont = require('@fastkit/icon-font');
@@ -22,7 +23,6 @@ var extensionHistory = require('@tiptap/extension-history');
22
23
  var extensionLink = require('@tiptap/extension-link');
23
24
  var rules = require('@fastkit/rules');
24
25
  var extensionOrderedList = require('@tiptap/extension-ordered-list');
25
- var vueScroller = require('@fastkit/vue-scroller');
26
26
 
27
27
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
28
28
 
@@ -274,6 +274,170 @@ function useElevation(props, opts = {}) {
274
274
  };
275
275
  }
276
276
 
277
+ function extractRawGridValueClasses(value, prefix, getter) {
278
+ if (typeof value !== 'object')
279
+ return `${prefix}${getter ? getter(value) : value}`;
280
+ return Object.entries(value).map(([breakpoint, breakpointValue]) => {
281
+ return `${prefix}${getter ? getter(breakpointValue) : breakpointValue}--${breakpoint}`;
282
+ });
283
+ }
284
+ // export const DEFAULT_MEDIA_MATCH_KEY = MEDIA_MATCH_CONDITIONS[0].key;
285
+
286
+ const VGridItem = vue.defineComponent({
287
+ name: 'VGridItem',
288
+ inheritAttrs: false,
289
+ props: { ...vueUtils.htmlAttributesPropOptions,
290
+ tag: {
291
+ type: String,
292
+ default: 'div'
293
+ },
294
+ // ...(undefined as unknown as MQSizeProps),
295
+ size: undefined,
296
+ align: undefined,
297
+ justify: undefined,
298
+ order: undefined
299
+ },
300
+
301
+ setup(props, ctx) {
302
+ const data = vue.computed(() => {
303
+ const classes = [];
304
+ const attrs = { ...ctx.attrs
305
+ };
306
+ const {
307
+ size,
308
+ align,
309
+ justify,
310
+ order
311
+ } = props;
312
+ delete attrs.size;
313
+ delete attrs.align;
314
+ delete attrs.justify;
315
+ delete attrs.order;
316
+ size != null && classes.push(extractRawGridValueClasses(size, 'grid-size-'));
317
+ align && classes.push(extractRawGridValueClasses(align, 'self-align-'));
318
+ justify && classes.push(extractRawGridValueClasses(justify, 'self-justify-'));
319
+ order != null && classes.push(extractRawGridValueClasses(order, 'order-')); // MEDIA_MATCH_CONDITIONS.forEach(({ key }) => {
320
+ // const v = attrs[key];
321
+ // delete attrs[key];
322
+ // if (v != null) {
323
+ // classes.push(`grid-size-${v}--${key}`);
324
+ // }
325
+ // });
326
+
327
+ return {
328
+ classes,
329
+ attrs
330
+ };
331
+ });
332
+ return () => {
333
+ const TagName = props.tag;
334
+ const {
335
+ classes,
336
+ attrs
337
+ } = data.value;
338
+ return vue.createVNode(TagName, vue.mergeProps({
339
+ "class": ['v-grid-item grid-item', classes]
340
+ }, attrs), ctx.slots);
341
+ };
342
+ }
343
+
344
+ });
345
+
346
+ function spacingValueToString(value) {
347
+ return Number.isInteger(value) ? String(value) : `${value}h`;
348
+ }
349
+
350
+ const VGridContainer = vue.defineComponent({
351
+ name: 'VGridContainer',
352
+ inheritAttrs: false,
353
+ props: { ...vueUtils.htmlAttributesPropOptions,
354
+ wrapperTag: {
355
+ type: String,
356
+ default: 'div'
357
+ },
358
+ tag: {
359
+ type: String,
360
+ default: 'div'
361
+ },
362
+ spacing: undefined,
363
+ spacingX: undefined,
364
+ spacingY: undefined,
365
+ direction: undefined,
366
+ wrap: undefined,
367
+ alignContent: undefined,
368
+ justifyContent: undefined
369
+ },
370
+
371
+ setup(props, ctx) {
372
+ const data = vue.computed(() => {
373
+ const classes = [];
374
+ const attrs = { ...ctx.attrs
375
+ };
376
+ const {
377
+ spacing,
378
+ spacingX,
379
+ spacingY,
380
+ direction,
381
+ wrap,
382
+ alignContent,
383
+ justifyContent
384
+ } = props;
385
+ const wrapperClass = attrs.class;
386
+ const wrapperStyle = attrs.style;
387
+ delete attrs.class;
388
+ delete attrs.style;
389
+ delete attrs.spacing;
390
+ delete attrs.spacingX;
391
+ delete attrs.spacingY;
392
+ delete attrs.direction;
393
+ delete attrs.wrap;
394
+ delete attrs.alignContent;
395
+ delete attrs.justifyContent; // spacingX = mergeSpacing(spacing, spacingX);
396
+ // spacingY = mergeSpacing(spacing, spacingY);
397
+ // if (!spacingX) {
398
+ // spacingX = spacing;
399
+ // }
400
+ // align &&
401
+ // classes.push(extractRawGridItemValueClasses(align, 'self-align-'));
402
+ // justify &&
403
+ // classes.push(extractRawGridItemValueClasses(justify, 'self-justify-'));
404
+
405
+ spacing != null && classes.push(extractRawGridValueClasses(spacing, 'grid-spacing-', spacingValueToString));
406
+ spacingX != null && classes.push(extractRawGridValueClasses(spacingX, 'grid-spacing-x-', spacingValueToString));
407
+ spacingY != null && classes.push(extractRawGridValueClasses(spacingY, 'grid-spacing-y-', spacingValueToString));
408
+ direction && classes.push(extractRawGridValueClasses(direction, 'direction-'));
409
+ wrap && classes.push(extractRawGridValueClasses(wrap, ''));
410
+ alignContent && classes.push(extractRawGridValueClasses(alignContent, 'align-'));
411
+ justifyContent && classes.push(extractRawGridValueClasses(justifyContent, 'justify-'));
412
+ return {
413
+ wrapperClass,
414
+ wrapperStyle,
415
+ classes,
416
+ attrs
417
+ };
418
+ });
419
+ return () => {
420
+ const WrapperTag = props.wrapperTag;
421
+ const TagName = props.tag;
422
+ const {
423
+ wrapperClass,
424
+ wrapperStyle,
425
+ classes,
426
+ attrs
427
+ } = data.value;
428
+ return vue.createVNode(WrapperTag, {
429
+ "class": ['v-grid-container-wrapper', wrapperClass],
430
+ "style": wrapperStyle
431
+ }, {
432
+ default: () => [vue.createVNode(TagName, vue.mergeProps({
433
+ "class": ['v-grid-container grid-container', classes]
434
+ }, attrs), ctx.slots)]
435
+ });
436
+ };
437
+ }
438
+
439
+ });
440
+
277
441
  function createPaperBaseProps() {
278
442
  return {
279
443
  color: String,
@@ -450,7 +614,7 @@ function resolveRawVButtonIcon(raw, type = 'main') {
450
614
  }, null);
451
615
  }
452
616
 
453
- const vueButtonProps = vueUtils.createPropsOptions({ ...undefined,
617
+ const vueButtonProps = vueUtils.createPropsOptions({ ...vueUtils.htmlAttributesPropOptions,
454
618
  ...vueColorScheme.colorSchemeProps(),
455
619
  ...vueUtils.navigationableInheritProps,
456
620
  spacer: [Boolean, String],
@@ -996,7 +1160,7 @@ function _isSlot$c(s) {
996
1160
 
997
1161
  const VHero = vue.defineComponent({
998
1162
  name: 'VHero',
999
- props: {
1163
+ props: { ...vueUtils.htmlAttributesPropOptions,
1000
1164
  color: {
1001
1165
  type: String,
1002
1166
  default: 'primary'
@@ -1008,7 +1172,8 @@ const VHero = vue.defineComponent({
1008
1172
  hTag: {
1009
1173
  type: String,
1010
1174
  default: 'h1'
1011
- }
1175
+ },
1176
+ ...vueUtils.defineSlotsProps()
1012
1177
  },
1013
1178
 
1014
1179
  setup(props, ctx) {
@@ -1017,6 +1182,7 @@ const VHero = vue.defineComponent({
1017
1182
 
1018
1183
  const TagName = props.tag;
1019
1184
  const HTagName = props.hTag;
1185
+ const adornment = vueUtils.renderSlotOrEmpty(ctx.slots, 'adornment');
1020
1186
  return vue.createVNode(vueAppLayout.VAppContainer, {
1021
1187
  "pulled": true
1022
1188
  }, {
@@ -1027,7 +1193,9 @@ const VHero = vue.defineComponent({
1027
1193
  "class": "v-hero__title"
1028
1194
  }, _isSlot$c(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1029
1195
  default: () => [_slot]
1030
- })]
1196
+ }), adornment && vue.createVNode("div", {
1197
+ "class": "v-hero__adornment"
1198
+ }, [adornment])]
1031
1199
  })]
1032
1200
  });
1033
1201
  };
@@ -2211,6 +2379,7 @@ const VWysiwygEditor = vue.defineComponent({
2211
2379
 
2212
2380
  if (!iconName) return;
2213
2381
  return vue.createVNode(VButton, {
2382
+ "tabindex": -1,
2214
2383
  "key": key,
2215
2384
  "icon": iconName,
2216
2385
  "onClick": ev => onClick(context, ev),
@@ -3862,6 +4031,10 @@ const VToolbarTitle = vue.defineComponent({
3862
4031
  const DEFAULT_AUTO_SCROLL_TO_ELEMENT_OFFSET_TOP = -20;
3863
4032
  const DEFAULT_TEXTAREA_ROWS = 3;
3864
4033
  class VuiService {
4034
+ get scroller() {
4035
+ return vueScroller.getDocumentScroller();
4036
+ }
4037
+
3865
4038
  constructor(options, stackService) {
3866
4039
  this.options = options;
3867
4040
  this.configure();
@@ -4070,6 +4243,8 @@ exports.VContentSwitcher = VContentSwitcher;
4070
4243
  exports.VDataTable = VDataTable;
4071
4244
  exports.VDrawerLayout = VDrawerLayout;
4072
4245
  exports.VForm = VForm;
4246
+ exports.VGridContainer = VGridContainer;
4247
+ exports.VGridItem = VGridItem;
4073
4248
  exports.VHero = VHero;
4074
4249
  exports.VIcon = VIcon;
4075
4250
  exports.VListTile = VListTile;
@@ -6,6 +6,7 @@ var vueKit = require('@fastkit/vue-kit');
6
6
  var vue = require('vue');
7
7
  var vueRouter = require('vue-router');
8
8
  var vueUtils = require('@fastkit/vue-utils');
9
+ var vueScroller = require('@fastkit/vue-scroller');
9
10
  var vueColorScheme = require('@fastkit/vue-color-scheme');
10
11
  var vueLoading = require('@fastkit/vue-loading');
11
12
  var iconFont = require('@fastkit/icon-font');
@@ -22,7 +23,6 @@ var extensionHistory = require('@tiptap/extension-history');
22
23
  var extensionLink = require('@tiptap/extension-link');
23
24
  var rules = require('@fastkit/rules');
24
25
  var extensionOrderedList = require('@tiptap/extension-ordered-list');
25
- var vueScroller = require('@fastkit/vue-scroller');
26
26
 
27
27
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
28
28
 
@@ -274,6 +274,170 @@ function useElevation(props, opts = {}) {
274
274
  };
275
275
  }
276
276
 
277
+ function extractRawGridValueClasses(value, prefix, getter) {
278
+ if (typeof value !== 'object')
279
+ return `${prefix}${getter ? getter(value) : value}`;
280
+ return Object.entries(value).map(([breakpoint, breakpointValue]) => {
281
+ return `${prefix}${getter ? getter(breakpointValue) : breakpointValue}--${breakpoint}`;
282
+ });
283
+ }
284
+ // export const DEFAULT_MEDIA_MATCH_KEY = MEDIA_MATCH_CONDITIONS[0].key;
285
+
286
+ const VGridItem = vue.defineComponent({
287
+ name: 'VGridItem',
288
+ inheritAttrs: false,
289
+ props: { ...vueUtils.htmlAttributesPropOptions,
290
+ tag: {
291
+ type: String,
292
+ default: 'div'
293
+ },
294
+ // ...(undefined as unknown as MQSizeProps),
295
+ size: undefined,
296
+ align: undefined,
297
+ justify: undefined,
298
+ order: undefined
299
+ },
300
+
301
+ setup(props, ctx) {
302
+ const data = vue.computed(() => {
303
+ const classes = [];
304
+ const attrs = { ...ctx.attrs
305
+ };
306
+ const {
307
+ size,
308
+ align,
309
+ justify,
310
+ order
311
+ } = props;
312
+ delete attrs.size;
313
+ delete attrs.align;
314
+ delete attrs.justify;
315
+ delete attrs.order;
316
+ size != null && classes.push(extractRawGridValueClasses(size, 'grid-size-'));
317
+ align && classes.push(extractRawGridValueClasses(align, 'self-align-'));
318
+ justify && classes.push(extractRawGridValueClasses(justify, 'self-justify-'));
319
+ order != null && classes.push(extractRawGridValueClasses(order, 'order-')); // MEDIA_MATCH_CONDITIONS.forEach(({ key }) => {
320
+ // const v = attrs[key];
321
+ // delete attrs[key];
322
+ // if (v != null) {
323
+ // classes.push(`grid-size-${v}--${key}`);
324
+ // }
325
+ // });
326
+
327
+ return {
328
+ classes,
329
+ attrs
330
+ };
331
+ });
332
+ return () => {
333
+ const TagName = props.tag;
334
+ const {
335
+ classes,
336
+ attrs
337
+ } = data.value;
338
+ return vue.createVNode(TagName, vue.mergeProps({
339
+ "class": ['v-grid-item grid-item', classes]
340
+ }, attrs), ctx.slots);
341
+ };
342
+ }
343
+
344
+ });
345
+
346
+ function spacingValueToString(value) {
347
+ return Number.isInteger(value) ? String(value) : `${value}h`;
348
+ }
349
+
350
+ const VGridContainer = vue.defineComponent({
351
+ name: 'VGridContainer',
352
+ inheritAttrs: false,
353
+ props: { ...vueUtils.htmlAttributesPropOptions,
354
+ wrapperTag: {
355
+ type: String,
356
+ default: 'div'
357
+ },
358
+ tag: {
359
+ type: String,
360
+ default: 'div'
361
+ },
362
+ spacing: undefined,
363
+ spacingX: undefined,
364
+ spacingY: undefined,
365
+ direction: undefined,
366
+ wrap: undefined,
367
+ alignContent: undefined,
368
+ justifyContent: undefined
369
+ },
370
+
371
+ setup(props, ctx) {
372
+ const data = vue.computed(() => {
373
+ const classes = [];
374
+ const attrs = { ...ctx.attrs
375
+ };
376
+ const {
377
+ spacing,
378
+ spacingX,
379
+ spacingY,
380
+ direction,
381
+ wrap,
382
+ alignContent,
383
+ justifyContent
384
+ } = props;
385
+ const wrapperClass = attrs.class;
386
+ const wrapperStyle = attrs.style;
387
+ delete attrs.class;
388
+ delete attrs.style;
389
+ delete attrs.spacing;
390
+ delete attrs.spacingX;
391
+ delete attrs.spacingY;
392
+ delete attrs.direction;
393
+ delete attrs.wrap;
394
+ delete attrs.alignContent;
395
+ delete attrs.justifyContent; // spacingX = mergeSpacing(spacing, spacingX);
396
+ // spacingY = mergeSpacing(spacing, spacingY);
397
+ // if (!spacingX) {
398
+ // spacingX = spacing;
399
+ // }
400
+ // align &&
401
+ // classes.push(extractRawGridItemValueClasses(align, 'self-align-'));
402
+ // justify &&
403
+ // classes.push(extractRawGridItemValueClasses(justify, 'self-justify-'));
404
+
405
+ spacing != null && classes.push(extractRawGridValueClasses(spacing, 'grid-spacing-', spacingValueToString));
406
+ spacingX != null && classes.push(extractRawGridValueClasses(spacingX, 'grid-spacing-x-', spacingValueToString));
407
+ spacingY != null && classes.push(extractRawGridValueClasses(spacingY, 'grid-spacing-y-', spacingValueToString));
408
+ direction && classes.push(extractRawGridValueClasses(direction, 'direction-'));
409
+ wrap && classes.push(extractRawGridValueClasses(wrap, ''));
410
+ alignContent && classes.push(extractRawGridValueClasses(alignContent, 'align-'));
411
+ justifyContent && classes.push(extractRawGridValueClasses(justifyContent, 'justify-'));
412
+ return {
413
+ wrapperClass,
414
+ wrapperStyle,
415
+ classes,
416
+ attrs
417
+ };
418
+ });
419
+ return () => {
420
+ const WrapperTag = props.wrapperTag;
421
+ const TagName = props.tag;
422
+ const {
423
+ wrapperClass,
424
+ wrapperStyle,
425
+ classes,
426
+ attrs
427
+ } = data.value;
428
+ return vue.createVNode(WrapperTag, {
429
+ "class": ['v-grid-container-wrapper', wrapperClass],
430
+ "style": wrapperStyle
431
+ }, {
432
+ default: () => [vue.createVNode(TagName, vue.mergeProps({
433
+ "class": ['v-grid-container grid-container', classes]
434
+ }, attrs), ctx.slots)]
435
+ });
436
+ };
437
+ }
438
+
439
+ });
440
+
277
441
  function createPaperBaseProps() {
278
442
  return {
279
443
  color: String,
@@ -450,7 +614,7 @@ function resolveRawVButtonIcon(raw, type = 'main') {
450
614
  }, null);
451
615
  }
452
616
 
453
- const vueButtonProps = vueUtils.createPropsOptions({ ...undefined,
617
+ const vueButtonProps = vueUtils.createPropsOptions({ ...vueUtils.htmlAttributesPropOptions,
454
618
  ...vueColorScheme.colorSchemeProps(),
455
619
  ...vueUtils.navigationableInheritProps,
456
620
  spacer: [Boolean, String],
@@ -996,7 +1160,7 @@ function _isSlot$c(s) {
996
1160
 
997
1161
  const VHero = vue.defineComponent({
998
1162
  name: 'VHero',
999
- props: {
1163
+ props: { ...vueUtils.htmlAttributesPropOptions,
1000
1164
  color: {
1001
1165
  type: String,
1002
1166
  default: 'primary'
@@ -1008,7 +1172,8 @@ const VHero = vue.defineComponent({
1008
1172
  hTag: {
1009
1173
  type: String,
1010
1174
  default: 'h1'
1011
- }
1175
+ },
1176
+ ...vueUtils.defineSlotsProps()
1012
1177
  },
1013
1178
 
1014
1179
  setup(props, ctx) {
@@ -1017,6 +1182,7 @@ const VHero = vue.defineComponent({
1017
1182
 
1018
1183
  const TagName = props.tag;
1019
1184
  const HTagName = props.hTag;
1185
+ const adornment = vueUtils.renderSlotOrEmpty(ctx.slots, 'adornment');
1020
1186
  return vue.createVNode(vueAppLayout.VAppContainer, {
1021
1187
  "pulled": true
1022
1188
  }, {
@@ -1027,7 +1193,9 @@ const VHero = vue.defineComponent({
1027
1193
  "class": "v-hero__title"
1028
1194
  }, _isSlot$c(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1029
1195
  default: () => [_slot]
1030
- })]
1196
+ }), adornment && vue.createVNode("div", {
1197
+ "class": "v-hero__adornment"
1198
+ }, [adornment])]
1031
1199
  })]
1032
1200
  });
1033
1201
  };
@@ -2211,6 +2379,7 @@ const VWysiwygEditor = vue.defineComponent({
2211
2379
 
2212
2380
  if (!iconName) return;
2213
2381
  return vue.createVNode(VButton, {
2382
+ "tabindex": -1,
2214
2383
  "key": key,
2215
2384
  "icon": iconName,
2216
2385
  "onClick": ev => onClick(context, ev),
@@ -3862,6 +4031,10 @@ const VToolbarTitle = vue.defineComponent({
3862
4031
  const DEFAULT_AUTO_SCROLL_TO_ELEMENT_OFFSET_TOP = -20;
3863
4032
  const DEFAULT_TEXTAREA_ROWS = 3;
3864
4033
  class VuiService {
4034
+ get scroller() {
4035
+ return vueScroller.getDocumentScroller();
4036
+ }
4037
+
3865
4038
  constructor(options, stackService) {
3866
4039
  this.options = options;
3867
4040
  this.configure();
@@ -4070,6 +4243,8 @@ exports.VContentSwitcher = VContentSwitcher;
4070
4243
  exports.VDataTable = VDataTable;
4071
4244
  exports.VDrawerLayout = VDrawerLayout;
4072
4245
  exports.VForm = VForm;
4246
+ exports.VGridContainer = VGridContainer;
4247
+ exports.VGridItem = VGridItem;
4073
4248
  exports.VHero = VHero;
4074
4249
  exports.VIcon = VIcon;
4075
4250
  exports.VListTile = VListTile;
package/dist/vui.css CHANGED
@@ -346,7 +346,7 @@ template {
346
346
 
347
347
  :root {
348
348
  --root-em: 16px;
349
- --root-spacing: 4px;
349
+ --root-spacing: 8px;
350
350
  --transition-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1);
351
351
  --transition-linear-out-slow-in: cubic-bezier(0, 0, 0.2, 1);
352
352
  --transition-fast-out-linear-in: cubic-bezier(0.4, 0, 1, 1);
@@ -431,7 +431,7 @@ template {
431
431
  --control-label-height: 1.4375em;
432
432
  --control-message-color: rgba(0, 0, 0, 0.6);
433
433
  --control-message-font-size: 0.75em;
434
- --control-message-horizontal-margin: var(--root-spacing);
434
+ --control-message-horizontal-margin: calc(var(--root-spacing) * 0.5);
435
435
  --control-checkable-outer-size: 2em;
436
436
  --control-checkable-icon-size: 1em;
437
437
  --control-checkable-faux-scale: 1.2;
@@ -591,8 +591,7 @@ body {
591
591
  font-family: var(--typo-font);
592
592
  }
593
593
 
594
- h1,
595
- .text-h1 {
594
+ h1 {
596
595
  font-size: var(--typo-h1-size);
597
596
  font-weight: var(--typo-h1-weight);
598
597
  line-height: var(--typo-h1-height);
@@ -601,8 +600,7 @@ h1,
601
600
  color: var(--typo-h1-color);
602
601
  }
603
602
 
604
- h2,
605
- .text-h2 {
603
+ h2 {
606
604
  font-size: var(--typo-h2-size);
607
605
  font-weight: var(--typo-h2-weight);
608
606
  line-height: var(--typo-h2-height);
@@ -611,8 +609,7 @@ h2,
611
609
  color: var(--typo-h2-color);
612
610
  }
613
611
 
614
- h3,
615
- .text-h3 {
612
+ h3 {
616
613
  font-size: var(--typo-h3-size);
617
614
  font-weight: var(--typo-h3-weight);
618
615
  line-height: var(--typo-h3-height);
@@ -621,8 +618,7 @@ h3,
621
618
  color: var(--typo-h3-color);
622
619
  }
623
620
 
624
- h4,
625
- .text-h4 {
621
+ h4 {
626
622
  font-size: var(--typo-h4-size);
627
623
  font-weight: var(--typo-h4-weight);
628
624
  line-height: var(--typo-h4-height);
@@ -631,8 +627,7 @@ h4,
631
627
  color: var(--typo-h4-color);
632
628
  }
633
629
 
634
- h5,
635
- .text-h5 {
630
+ h5 {
636
631
  font-size: var(--typo-h5-size);
637
632
  font-weight: var(--typo-h5-weight);
638
633
  line-height: var(--typo-h5-height);
@@ -641,8 +636,7 @@ h5,
641
636
  color: var(--typo-h5-color);
642
637
  }
643
638
 
644
- h6,
645
- .text-h6 {
639
+ h6 {
646
640
  font-size: var(--typo-h6-size);
647
641
  font-weight: var(--typo-h6-weight);
648
642
  line-height: var(--typo-h6-height);
@@ -857,6 +851,7 @@ thead th {
857
851
  .v-form-control {
858
852
  display: flex;
859
853
  flex-direction: column;
854
+ max-width: 100%;
860
855
  margin: var(--control-horizontal-margin) 0;
861
856
  --my-label-color: var(--control-label-color);
862
857
  --my-message-color: var(--control-message-color);
@@ -894,6 +889,13 @@ thead th {
894
889
  flex: 0 1;
895
890
  margin-left: auto;
896
891
  }
892
+ .v-grid-item {
893
+ display: block;
894
+ }
895
+ .v-grid-container {
896
+ display: flex;
897
+ flex-wrap: wrap;
898
+ }
897
899
  .v-paper {
898
900
  --paper-radius: var(--control-field-radius);
899
901
  color: var(--paper-text-color);
@@ -1244,18 +1246,26 @@ thead th {
1244
1246
  .v-hero {
1245
1247
  --hero-background-color: var(--main-color);
1246
1248
  --hero-text-color: var(--text-color);
1249
+ display: flex;
1250
+ align-items: center;
1247
1251
  padding: 20px 30px;
1248
1252
  margin: 0;
1249
1253
  color: var(--hero-text-color);
1250
1254
  background-color: var(--hero-background-color);
1251
1255
  }
1252
1256
  .v-hero__title {
1257
+ flex: 1 1 100%;
1253
1258
  margin: 0;
1254
1259
  font-size: 1.75rem;
1255
1260
  font-weight: 300;
1256
1261
  line-height: 1;
1257
1262
  color: inherit;
1258
1263
  }
1264
+ .v-hero__adornment {
1265
+ flex: 0 0 auto;
1266
+ padding-left: 10px;
1267
+ margin-left: auto;
1268
+ }
1259
1269
  .v-navigation-item--opened {
1260
1270
  --tile-background: var(--tile-active-background);
1261
1271
  --tile-text-color: var(--tile-text-active-color);