@vc-shell/framework 1.0.188 → 1.0.190

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 (181) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/core/plugins/moment/humanize.ts +6 -7
  3. package/core/types/index.ts +12 -1
  4. package/dist/core/plugins/moment/humanize.d.ts.map +1 -1
  5. package/dist/core/types/index.d.ts +1 -1
  6. package/dist/core/types/index.d.ts.map +1 -1
  7. package/dist/framework.js +30782 -20187
  8. package/dist/index.css +1 -1
  9. package/dist/shared/components/error-interceptor/interceptor.d.ts.map +1 -1
  10. package/dist/shared/modules/dynamic/components/fields/Button.d.ts.map +1 -1
  11. package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts.map +1 -1
  12. package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts.map +1 -1
  13. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts +4 -1
  14. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts.map +1 -1
  15. package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts.map +1 -1
  16. package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts.map +1 -1
  17. package/dist/shared/modules/dynamic/components/fields/InputField.d.ts.map +1 -1
  18. package/dist/shared/modules/dynamic/components/fields/MultivalueField.d.ts.map +1 -1
  19. package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts.map +1 -1
  20. package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts.map +1 -1
  21. package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts.map +1 -1
  22. package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts.map +1 -1
  23. package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts +417 -0
  24. package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts.map +1 -0
  25. package/dist/shared/modules/dynamic/components/fields/storybook/Card.stories.d.ts +357 -0
  26. package/dist/shared/modules/dynamic/components/fields/storybook/Card.stories.d.ts.map +1 -0
  27. package/dist/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.d.ts +398 -0
  28. package/dist/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.d.ts.map +1 -0
  29. package/dist/shared/modules/dynamic/components/fields/storybook/ContentField.stories.d.ts +392 -0
  30. package/dist/shared/modules/dynamic/components/fields/storybook/ContentField.stories.d.ts.map +1 -0
  31. package/dist/shared/modules/dynamic/components/fields/storybook/EditorField.stories.d.ts +407 -0
  32. package/dist/shared/modules/dynamic/components/fields/storybook/EditorField.stories.d.ts.map +1 -0
  33. package/dist/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.d.ts +372 -0
  34. package/dist/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.d.ts.map +1 -0
  35. package/dist/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.d.ts +391 -0
  36. package/dist/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.d.ts.map +1 -0
  37. package/dist/shared/modules/dynamic/components/fields/storybook/ImageField.stories.d.ts +372 -0
  38. package/dist/shared/modules/dynamic/components/fields/storybook/ImageField.stories.d.ts.map +1 -0
  39. package/dist/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.d.ts +439 -0
  40. package/dist/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.d.ts.map +1 -0
  41. package/dist/shared/modules/dynamic/components/fields/storybook/InputField.stories.d.ts +460 -0
  42. package/dist/shared/modules/dynamic/components/fields/storybook/InputField.stories.d.ts.map +1 -0
  43. package/dist/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.d.ts +459 -0
  44. package/dist/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.d.ts.map +1 -0
  45. package/dist/shared/modules/dynamic/components/fields/storybook/RatingField.stories.d.ts +359 -0
  46. package/dist/shared/modules/dynamic/components/fields/storybook/RatingField.stories.d.ts.map +1 -0
  47. package/dist/shared/modules/dynamic/components/fields/storybook/SelectField.stories.d.ts +507 -0
  48. package/dist/shared/modules/dynamic/components/fields/storybook/SelectField.stories.d.ts.map +1 -0
  49. package/dist/shared/modules/dynamic/components/fields/storybook/StatusField.stories.d.ts +392 -0
  50. package/dist/shared/modules/dynamic/components/fields/storybook/StatusField.stories.d.ts.map +1 -0
  51. package/dist/shared/modules/dynamic/components/fields/storybook/SwitchField.stories.d.ts +14 -0
  52. package/dist/shared/modules/dynamic/components/fields/storybook/SwitchField.stories.d.ts.map +1 -0
  53. package/dist/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.d.ts +407 -0
  54. package/dist/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.d.ts.map +1 -0
  55. package/dist/shared/modules/dynamic/components/fields/storybook/VideoField.stories.d.ts +322 -0
  56. package/dist/shared/modules/dynamic/components/fields/storybook/VideoField.stories.d.ts.map +1 -0
  57. package/dist/shared/modules/dynamic/components/fields/storybook/common/args.d.ts +113 -0
  58. package/dist/shared/modules/dynamic/components/fields/storybook/common/args.d.ts.map +1 -0
  59. package/dist/shared/modules/dynamic/components/fields/storybook/common/templates.d.ts +3 -0
  60. package/dist/shared/modules/dynamic/components/fields/storybook/common/templates.d.ts.map +1 -0
  61. package/dist/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.d.ts +235 -0
  62. package/dist/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.d.ts.map +1 -0
  63. package/dist/shared/modules/dynamic/components/fields/storybook/utils/sourceHighlighter.d.ts +4 -0
  64. package/dist/shared/modules/dynamic/components/fields/storybook/utils/sourceHighlighter.d.ts.map +1 -0
  65. package/dist/shared/modules/dynamic/components/fields/storybook/utils/sourceTransform.d.ts +3 -0
  66. package/dist/shared/modules/dynamic/components/fields/storybook/utils/sourceTransform.d.ts.map +1 -0
  67. package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts.map +1 -1
  68. package/dist/shared/modules/dynamic/factories/types/index.d.ts +1 -0
  69. package/dist/shared/modules/dynamic/factories/types/index.d.ts.map +1 -1
  70. package/dist/shared/modules/dynamic/helpers/getters.d.ts.map +1 -1
  71. package/dist/shared/modules/dynamic/types/index.d.ts +88 -38
  72. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
  73. package/dist/shared/modules/dynamic/types/models.d.ts.map +1 -1
  74. package/dist/tsconfig.tsbuildinfo +1 -1
  75. package/dist/ui/components/atoms/vc-card/vc-card.stories.d.ts +16 -16
  76. package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts.map +1 -1
  77. package/dist/ui/components/atoms/vc-switch/index.d.ts +1 -39
  78. package/dist/ui/components/atoms/vc-switch/index.d.ts.map +1 -1
  79. package/dist/ui/components/atoms/vc-switch/vc-switch.stories.d.ts +30 -11
  80. package/dist/ui/components/atoms/vc-switch/vc-switch.stories.d.ts.map +1 -1
  81. package/dist/ui/components/atoms/vc-switch/vc-switch.vue.d.ts +22 -3
  82. package/dist/ui/components/atoms/vc-switch/vc-switch.vue.d.ts.map +1 -1
  83. package/dist/ui/components/atoms/vc-video/index.d.ts +1 -35
  84. package/dist/ui/components/atoms/vc-video/index.d.ts.map +1 -1
  85. package/dist/ui/components/atoms/vc-video/vc-video.stories.d.ts +5 -27
  86. package/dist/ui/components/atoms/vc-video/vc-video.stories.d.ts.map +1 -1
  87. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts +3 -18
  88. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
  89. package/dist/ui/components/molecules/vc-editor/vc-editor.stories.d.ts +16 -4
  90. package/dist/ui/components/molecules/vc-editor/vc-editor.stories.d.ts.map +1 -1
  91. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts +2 -1
  92. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
  93. package/dist/ui/components/molecules/vc-input/vc-input.stories.d.ts +30 -16
  94. package/dist/ui/components/molecules/vc-input/vc-input.stories.d.ts.map +1 -1
  95. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.stories.d.ts +12 -12
  96. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts.map +1 -1
  97. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.stories.d.ts +252 -42
  98. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.stories.d.ts.map +1 -1
  99. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts +36 -6
  100. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts.map +1 -1
  101. package/dist/ui/components/molecules/vc-select/vc-select.stories.d.ts +96 -32
  102. package/dist/ui/components/molecules/vc-select/vc-select.stories.d.ts.map +1 -1
  103. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +3 -3
  104. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
  105. package/dist/ui/components/molecules/vc-textarea/vc-textarea.stories.d.ts +63 -63
  106. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts +6 -6
  107. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts.map +1 -1
  108. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts +1 -0
  109. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  110. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts.map +1 -1
  111. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts +8 -2
  112. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts.map +1 -1
  113. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +3 -1
  114. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  115. package/package.json +8 -4
  116. package/shared/components/error-interceptor/interceptor.ts +1 -1
  117. package/shared/modules/dynamic/components/fields/Button.ts +5 -2
  118. package/shared/modules/dynamic/components/fields/Card.ts +4 -4
  119. package/shared/modules/dynamic/components/fields/ContentField.ts +1 -0
  120. package/shared/modules/dynamic/components/fields/DynamicProperty.ts +5 -6
  121. package/shared/modules/dynamic/components/fields/EditorField.ts +5 -3
  122. package/shared/modules/dynamic/components/fields/Fieldset.ts +1 -1
  123. package/shared/modules/dynamic/components/fields/GalleryField.ts +6 -3
  124. package/shared/modules/dynamic/components/fields/ImageField.ts +0 -1
  125. package/shared/modules/dynamic/components/fields/InputCurrency.ts +1 -1
  126. package/shared/modules/dynamic/components/fields/InputField.ts +1 -0
  127. package/shared/modules/dynamic/components/fields/MultivalueField.ts +3 -2
  128. package/shared/modules/dynamic/components/fields/SelectField.ts +1 -0
  129. package/shared/modules/dynamic/components/fields/StatusField.ts +20 -10
  130. package/shared/modules/dynamic/components/fields/TextareaField.ts +1 -0
  131. package/shared/modules/dynamic/components/fields/VideoField.ts +0 -1
  132. package/shared/modules/dynamic/components/fields/storybook/Button.stories.ts +247 -0
  133. package/shared/modules/dynamic/components/fields/storybook/Card.stories.ts +166 -0
  134. package/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.ts +185 -0
  135. package/shared/modules/dynamic/components/fields/storybook/ContentField.stories.ts +245 -0
  136. package/shared/modules/dynamic/components/fields/storybook/EditorField.stories.ts +192 -0
  137. package/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.ts +409 -0
  138. package/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.ts +239 -0
  139. package/shared/modules/dynamic/components/fields/storybook/ImageField.stories.ts +186 -0
  140. package/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.ts +267 -0
  141. package/shared/modules/dynamic/components/fields/storybook/InputField.stories.ts +298 -0
  142. package/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.ts +347 -0
  143. package/shared/modules/dynamic/components/fields/storybook/RatingField.stories.ts +131 -0
  144. package/shared/modules/dynamic/components/fields/storybook/SelectField.stories.ts +653 -0
  145. package/shared/modules/dynamic/components/fields/storybook/StatusField.stories.ts +202 -0
  146. package/shared/modules/dynamic/components/fields/storybook/SwitchField.stories.ts +178 -0
  147. package/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.ts +203 -0
  148. package/shared/modules/dynamic/components/fields/storybook/VideoField.stories.ts +92 -0
  149. package/shared/modules/dynamic/components/fields/storybook/common/args.ts +130 -0
  150. package/shared/modules/dynamic/components/fields/storybook/common/templates.ts +8 -0
  151. package/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.ts +54 -0
  152. package/shared/modules/dynamic/components/fields/storybook/utils/sourceHighlighter.ts +16 -0
  153. package/shared/modules/dynamic/components/fields/storybook/utils/sourceTransform.ts +41 -0
  154. package/shared/modules/dynamic/factories/base/useDetailsFactory.ts +1 -0
  155. package/shared/modules/dynamic/factories/types/index.ts +2 -0
  156. package/shared/modules/dynamic/helpers/getters.ts +3 -0
  157. package/shared/modules/dynamic/helpers/nodeBuilder.ts +1 -1
  158. package/shared/modules/dynamic/helpers/setters.ts +1 -1
  159. package/shared/modules/dynamic/types/index.ts +93 -40
  160. package/shared/modules/dynamic/types/models.ts +8 -7
  161. package/shared/pages/LoginPage/components/login/Login.vue +1 -1
  162. package/ui/components/atoms/vc-card/vc-card.vue +12 -2
  163. package/ui/components/atoms/vc-switch/index.ts +1 -3
  164. package/ui/components/atoms/vc-switch/vc-switch.vue +10 -3
  165. package/ui/components/atoms/vc-video/index.ts +1 -3
  166. package/ui/components/atoms/vc-video/vc-video.stories.ts +1 -15
  167. package/ui/components/atoms/vc-video/vc-video.vue +4 -37
  168. package/ui/components/molecules/vc-editor/vc-editor.vue +47 -33
  169. package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +2 -2
  170. package/ui/components/molecules/vc-input/vc-input.stories.ts +14 -0
  171. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +8 -0
  172. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +21 -9
  173. package/ui/components/molecules/vc-select/vc-select.stories.ts +74 -3
  174. package/ui/components/molecules/vc-select/vc-select.vue +35 -38
  175. package/ui/components/molecules/vc-textarea/vc-textarea.stories.ts +1 -1
  176. package/ui/components/molecules/vc-textarea/vc-textarea.vue +5 -15
  177. package/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue +1 -1
  178. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +140 -108
  179. package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +20 -6
  180. package/ui/components/organisms/vc-table/vc-table.stories.ts +6 -2
  181. package/ui/components/organisms/vc-table/vc-table.vue +176 -124
@@ -1,4 +1,4 @@
1
- import { Component, ExtractPropTypes, computed, h, unref } from "vue";
1
+ import { Component, ExtractPropTypes, computed, h, mergeProps, unref } from "vue";
2
2
  import { Button } from "../factories";
3
3
  import componentProps from "./props";
4
4
  import { ButtonSchema } from "../../types";
@@ -19,6 +19,9 @@ export default {
19
19
  icon: props.element?.icon,
20
20
  iconSize: props.element?.iconSize,
21
21
  text: props.element?.text,
22
+ variant: props.element?.variant,
23
+ raised: props.element?.raised,
24
+ outline: props.element?.outline,
22
25
  onClick: () => {
23
26
  unref(props.bladeContext.scope)?.[props.element.method]();
24
27
  },
@@ -33,7 +36,7 @@ export default {
33
36
  },
34
37
  });
35
38
 
36
- return h(field.component as Component, field.props, field.slots);
39
+ return h(field.component as Component, mergeProps(field.props, { class: "tw-self-start" }), field.slots);
37
40
  };
38
41
  },
39
42
  };
@@ -65,7 +65,7 @@ export default {
65
65
  {
66
66
  header: toValue(props.baseProps.label),
67
67
  isCollapsable: props.element.collapsible,
68
- isCollapsed: restoreCollapsed(props.element.id),
68
+ isCollapsed: restoreCollapsed(props.element.id) || props.element.collapsed,
69
69
  "onState:collapsed": (e: boolean) => handleCollapsed(props.element.id, e),
70
70
  },
71
71
  unrefNested(props.baseProps),
@@ -89,13 +89,13 @@ export default {
89
89
  toValue(props.fields),
90
90
  ),
91
91
  actions: () => {
92
- if (props.element.action && props.fieldContext && props.currentLocale) {
92
+ if (props.element.action) {
93
93
  const elem = nodeBuilder({
94
94
  controlSchema: props.element.action,
95
95
  parentId: `${props.element.id}`,
96
- internalContext: props.fieldContext,
96
+ internalContext: props.fieldContext ?? {},
97
97
  bladeContext: props.bladeContext,
98
- currentLocale: props.currentLocale,
98
+ currentLocale: props.currentLocale ?? "en",
99
99
  formData: props.formData,
100
100
  });
101
101
  return elem;
@@ -16,6 +16,7 @@ export default {
16
16
  type: props.element.variant,
17
17
  copyable: props.element.copyable || false,
18
18
  orientation: props.element.orientation,
19
+ aspectRatio: props.element.aspectRatio,
19
20
  },
20
21
  unrefNested(props.baseProps),
21
22
  {
@@ -78,12 +78,11 @@ export default {
78
78
  disabled:
79
79
  props.bladeContext.scope && "disabled" in props.bladeContext.scope && props.bladeContext.scope.disabled,
80
80
  property: prop,
81
- modelValue: computed(
82
- () =>
83
- props.bladeContext.scope?.dynamicProperties?.getPropertyValue(
84
- prop,
85
- toValue(props.currentLocale ?? "en-US"),
86
- ),
81
+ modelValue: computed(() =>
82
+ props.bladeContext.scope?.dynamicProperties?.getPropertyValue(
83
+ prop,
84
+ toValue(props.currentLocale ?? "en-US"),
85
+ ),
87
86
  ),
88
87
  optionsGetter: props.bladeContext.scope?.dynamicProperties?.loadDictionaries as (
89
88
  property: Record<string, any>,
@@ -1,20 +1,22 @@
1
- import { h, ExtractPropTypes, Component, unref } from "vue";
1
+ import { h, ExtractPropTypes, Component } from "vue";
2
2
  import { EditorField } from "../factories";
3
3
  import componentProps from "./props";
4
4
  import ValidationField from "./ValidationField";
5
5
  import { unrefNested } from "../../helpers/unrefNested";
6
+ import { EditorSchema } from "../..";
6
7
 
7
8
  export default {
8
9
  name: "EditorField",
9
10
  props: componentProps,
10
- setup(props: ExtractPropTypes<typeof componentProps>) {
11
+ setup(props: ExtractPropTypes<typeof componentProps> & { element: EditorSchema }) {
11
12
  return () => {
12
13
  const field = EditorField({
13
14
  props: Object.assign(
14
15
  {},
15
16
  {
16
17
  currentLanguage: props.currentLocale,
17
- assetsFolder: unref(props.formData).id || unref(props.formData).categoryId,
18
+ assetsFolder: props.element.assetsFolder,
19
+ maxlength: props.element.maxlength,
18
20
  },
19
21
  unrefNested(props.baseProps),
20
22
  {
@@ -14,7 +14,7 @@ export default {
14
14
  const { fields: fieldsetFields } = toRefs(props);
15
15
 
16
16
  return () =>
17
- toValue(fieldsetFields.value).map((fields, index, arr) => {
17
+ toValue(fieldsetFields.value)?.map((fields, index, arr) => {
18
18
  const divideByCols = _.chunk(fields, props.element.columns || 1) ?? [];
19
19
 
20
20
  return h(
@@ -1,4 +1,4 @@
1
- import { Component, ExtractPropTypes, computed, h, markRaw, ref, toRefs, toValue, unref, watch } from "vue";
1
+ import { Component, ExtractPropTypes, computed, h, markRaw, ref, toRefs, toValue, watch } from "vue";
2
2
  import { Gallery } from "../factories";
3
3
  import componentProps from "./props";
4
4
  import { ICommonAsset } from "../../../../../core/types";
@@ -81,7 +81,7 @@ export default {
81
81
  await showConfirmation(
82
82
  computed(() =>
83
83
  t(
84
- `${props.bladeContext.settings.localizationPrefix
84
+ `${props.bladeContext?.settings?.localizationPrefix
85
85
  .trim()
86
86
  .toUpperCase()}.PAGES.DETAILS.ALERTS.DELETE_CONFIRMATION`,
87
87
  ),
@@ -114,7 +114,10 @@ export default {
114
114
  context: props.fieldContext,
115
115
  scope: props.bladeContext.scope,
116
116
  });
117
- await props.bladeContext.validationState.setFieldValue(props.element.id, args);
117
+
118
+ if (props.bladeContext.validationState) {
119
+ await props.bladeContext.validationState.setFieldValue(props.element.id, args);
120
+ }
118
121
  }
119
122
  }
120
123
 
@@ -17,7 +17,6 @@ export default {
17
17
  aspect: props.element.aspect,
18
18
  rounded: props.element.rounded,
19
19
  bordered: props.element.bordered,
20
- clickable: props.element.clickable,
21
20
  size: props.element.size,
22
21
  background: props.element.background,
23
22
  },
@@ -21,7 +21,7 @@ export default {
21
21
  option: toValue(getModel(props.element.optionProperty, props.fieldContext ?? {})),
22
22
  optionLabel: props.element.optionLabel,
23
23
  optionValue: props.element.optionValue,
24
- options: unref(props.bladeContext.scope)?.["currencies"],
24
+ options: toValue(unref(props.bladeContext.scope)?.[props.element.options]),
25
25
  "onUpdate:option": (e: string | number | Record<string, unknown>) => {
26
26
  setModel({
27
27
  value: e,
@@ -25,6 +25,7 @@ export default {
25
25
  type: props.element.variant,
26
26
  currentLanguage: props.currentLocale,
27
27
  clearable: props.element.clearable || false,
28
+ maxlength: props.element.maxlength,
28
29
  },
29
30
  unrefNested(props.baseProps),
30
31
  {
@@ -7,7 +7,8 @@ import { MultivalueSchema } from "../../types";
7
7
  import { VcMultivalue } from "../../../../../ui/components";
8
8
  import { unrefNested } from "../../helpers/unrefNested";
9
9
 
10
- type TScope = Parameters<ComponentSlots<typeof VcMultivalue>["item"]>["0"];
10
+ type TScope = Parameters<ComponentSlots<typeof VcMultivalue>["option"]>["0"] &
11
+ Parameters<ComponentSlots<typeof VcMultivalue>["selected-item"]>["0"];
11
12
 
12
13
  export default {
13
14
  name: "MultivalueField",
@@ -33,7 +34,7 @@ export default {
33
34
 
34
35
  slots:
35
36
  props.element.customTemplate &&
36
- ["item"].reduce(
37
+ ["option", "selected-item"].reduce(
37
38
  (obj, slot) => {
38
39
  obj[slot] = (scope: TScope) =>
39
40
  h(resolveComponent(props.element.customTemplate?.component as string), {
@@ -23,6 +23,7 @@ export default {
23
23
  optionValue: props.element.optionValue,
24
24
  optionLabel: props.element.optionLabel,
25
25
  emitValue: props.element.emitValue,
26
+ mapOptions: props.element.mapOptions,
26
27
  options: props.bladeContext.scope?.[props.element.optionsMethod],
27
28
  currentLanguage: props.currentLocale,
28
29
  clearable: props.element.clearable || false,
@@ -15,10 +15,14 @@ export default {
15
15
  return () => {
16
16
  const slotContent = computed(() => {
17
17
  if (props.element.content && typeof props.element.content === "string") {
18
- return props.element.content;
19
- } else if (props.element.content?.method) {
18
+ return t(props.element.content);
19
+ } else if (
20
+ typeof props.element.content === "object" &&
21
+ "method" in props.element.content &&
22
+ props.element.content?.method
23
+ ) {
20
24
  const method = unref(props.bladeContext.scope)?.[props.element.content?.method];
21
- if (method === "function") {
25
+ if (typeof method === "function") {
22
26
  return method();
23
27
  } else {
24
28
  return method;
@@ -43,12 +47,14 @@ export default {
43
47
  slots: {
44
48
  default: () => {
45
49
  return h("div", { class: "tw-flex tw-flex-row tw-items-center" }, [
46
- h(VcIcon, {
47
- icon: props.element.icon,
48
- size: props.element.iconSize,
49
- variant: props.element.iconVariant,
50
- class: "tw-mr-3",
51
- }),
50
+ props.element.icon
51
+ ? h(VcIcon, {
52
+ icon: props.element.icon,
53
+ size: props.element.iconSize,
54
+ variant: props.element.iconVariant,
55
+ class: "tw-mr-3",
56
+ })
57
+ : undefined,
52
58
  h("div", [
53
59
  h("div", { class: "tw-font-bold" }, computed(() => t(props.element.title ?? "")).value),
54
60
  h("div", slotContent.value),
@@ -58,7 +64,11 @@ export default {
58
64
  },
59
65
  });
60
66
 
61
- return h(field.component as Component, { ...field.props, class: "tw-w-full tw-box-border" }, field.slots);
67
+ return h(
68
+ field.component as Component,
69
+ { ...field.props, class: props.element.extend ? "tw-w-full tw-box-border" : "tw-flex tw-self-start" },
70
+ field.slots,
71
+ );
62
72
  };
63
73
  },
64
74
  };
@@ -16,6 +16,7 @@ export default {
16
16
  {
17
17
  currentLanguage: props.currentLocale,
18
18
  clearable: props.element.clearable || false,
19
+ maxlength: props.element.maxlength,
19
20
  },
20
21
  unrefNested(props.baseProps),
21
22
  {
@@ -14,7 +14,6 @@ export default {
14
14
  {},
15
15
  {
16
16
  source: toValue(props.baseProps.modelValue),
17
- size: props.element.size,
18
17
  },
19
18
  unrefNested(props.baseProps),
20
19
  {
@@ -0,0 +1,247 @@
1
+ import { template, templateWithVisibilityToggle } from "./common/templates";
2
+ import { Meta, StoryFn } from "@storybook/vue3";
3
+ import { computed, reactive, ref } from "vue";
4
+ import page from "./pages/DynamicRender";
5
+ import * as _ from "lodash-es";
6
+ import { SchemaBaseArgTypes } from "./common/args";
7
+ import { ButtonSchema } from "../../..";
8
+
9
+ export default {
10
+ title: "DynamicViews/atoms/VcButton",
11
+ component: page,
12
+ args: {
13
+ id: "buttonId",
14
+ component: "vc-button",
15
+ content: "I am a button",
16
+ method: "runFn",
17
+ },
18
+ argTypes: {
19
+ ..._.pick(SchemaBaseArgTypes, ["id", "disabled", "visibility"]),
20
+ variant: {
21
+ description: "Button variant.",
22
+ control: "radio",
23
+ options: ["primary", "warning", "danger"],
24
+ table: {
25
+ type: {
26
+ summary: "primary | warning | danger",
27
+ },
28
+ defaultValue: {
29
+ summary: "primary",
30
+ },
31
+ },
32
+ },
33
+ content: {
34
+ description: `Button inner text.
35
+ Supports i18n keys.`,
36
+ type: {
37
+ required: true,
38
+ name: "string",
39
+ },
40
+ table: {
41
+ type: {
42
+ summary: "string",
43
+ },
44
+ },
45
+ },
46
+ component: {
47
+ description: `Component type.`,
48
+ control: "text",
49
+ type: {
50
+ required: true,
51
+ name: "string",
52
+ },
53
+ table: {
54
+ type: {
55
+ summary: "vc-button",
56
+ },
57
+ defaultValue: {
58
+ summary: "vc-button",
59
+ },
60
+ },
61
+ },
62
+ small: {
63
+ description: "Small sized button.",
64
+ control: "boolean",
65
+ table: {
66
+ type: {
67
+ summary: "boolean",
68
+ },
69
+ defaultValue: {
70
+ summary: "false",
71
+ },
72
+ },
73
+ },
74
+ raised: {
75
+ description: "Raised button.",
76
+ control: "boolean",
77
+ table: {
78
+ type: {
79
+ summary: "boolean",
80
+ },
81
+ defaultValue: {
82
+ summary: "false",
83
+ },
84
+ },
85
+ },
86
+ text: {
87
+ description: "Button as text without overlay.",
88
+ control: "boolean",
89
+ table: {
90
+ type: {
91
+ summary: "boolean",
92
+ },
93
+ defaultValue: {
94
+ summary: "false",
95
+ },
96
+ },
97
+ },
98
+ outline: {
99
+ description: "Outlined button.",
100
+ control: "boolean",
101
+ table: {
102
+ type: {
103
+ summary: "boolean",
104
+ },
105
+ defaultValue: {
106
+ summary: "false",
107
+ },
108
+ },
109
+ },
110
+ icon: {
111
+ description: "Button icon.",
112
+ control: "text",
113
+ table: {
114
+ type: {
115
+ summary: "string",
116
+ },
117
+ },
118
+ },
119
+ iconSize: {
120
+ description: "Size of the button icon.",
121
+ control: "radio",
122
+ options: ["s", "m", "xs", "l", "xl", "xxl", "xxxl"],
123
+ table: {
124
+ type: {
125
+ summary: "s | m | xs | l | xl | xxl | xxxl",
126
+ },
127
+ defaultValue: {
128
+ summary: "s",
129
+ },
130
+ },
131
+ },
132
+ method: {
133
+ description: `Method to be called when the button is clicked.
134
+ Method should be defined in the blade \`scope\``,
135
+ type: {
136
+ required: true,
137
+ name: "string",
138
+ },
139
+ control: "text",
140
+ table: {
141
+ type: {
142
+ summary: "string",
143
+ },
144
+ },
145
+ },
146
+ },
147
+ parameters: {
148
+ docs: {
149
+ canvas: {
150
+ sourceState: "none",
151
+ },
152
+ },
153
+ },
154
+ } satisfies Meta<ButtonSchema>;
155
+
156
+ export const Template: StoryFn<ButtonSchema> = (args) => ({
157
+ components: { page },
158
+ setup: () => {
159
+ const context = reactive({
160
+ scope: {
161
+ runFn: () => alert("Button click"),
162
+ },
163
+ });
164
+ return { args, context };
165
+ },
166
+ template,
167
+ });
168
+
169
+ export const Disabled: StoryFn<ButtonSchema> = (args) => ({
170
+ components: { page },
171
+ setup: () => {
172
+ const context = reactive({
173
+ scope: {
174
+ runFn: () => alert("Button click"),
175
+ disabledFn: computed(() => true),
176
+ },
177
+ });
178
+ return { args, context };
179
+ },
180
+ template,
181
+ });
182
+ Disabled.args = {
183
+ disabled: { method: "disabledFn" },
184
+ };
185
+
186
+ export const WithVisibilityMethod: StoryFn<ButtonSchema> = (args) => ({
187
+ components: { page },
188
+ setup: () => {
189
+ const isVisible = ref(false);
190
+ const toggle = () => {
191
+ isVisible.value = !isVisible.value;
192
+ };
193
+
194
+ const context = reactive({
195
+ scope: {
196
+ runFn: () => alert("Button click"),
197
+ visibilityFn: isVisible,
198
+ },
199
+ });
200
+ return { args, context, toggle };
201
+ },
202
+ template: templateWithVisibilityToggle,
203
+ });
204
+ WithVisibilityMethod.args = {
205
+ visibility: { method: "visibilityFn" },
206
+ };
207
+
208
+ export const Small = Template.bind({});
209
+ Small.args = {
210
+ small: true,
211
+ };
212
+
213
+ export const Text = Template.bind({});
214
+ Text.args = {
215
+ text: true,
216
+ };
217
+
218
+ export const Icon = Template.bind({});
219
+ Icon.args = {
220
+ icon: "fas fa-truck-moving",
221
+ };
222
+
223
+ export const IconSize = Template.bind({});
224
+ IconSize.args = {
225
+ icon: "fas fa-truck-moving",
226
+ iconSize: "xxl",
227
+ };
228
+
229
+ export const Raised = Template.bind({});
230
+ Raised.args = {
231
+ raised: true,
232
+ };
233
+
234
+ export const Warning = Template.bind({});
235
+ Warning.args = {
236
+ variant: "warning",
237
+ };
238
+
239
+ export const Danger = Template.bind({});
240
+ Danger.args = {
241
+ variant: "danger",
242
+ };
243
+
244
+ export const Outline = Template.bind({});
245
+ Outline.args = {
246
+ outline: true,
247
+ };
@@ -0,0 +1,166 @@
1
+ import { template, templateWithVisibilityToggle } from "./common/templates";
2
+ import { Meta, StoryFn } from "@storybook/vue3";
3
+ import { reactive, ref } from "vue";
4
+ import page from "./pages/DynamicRender";
5
+ import * as _ from "lodash-es";
6
+ import { SchemaBaseArgTypes } from "./common/args";
7
+ import { CardSchema } from "../../..";
8
+
9
+ export default {
10
+ title: "DynamicViews/atoms/VcCard",
11
+ component: page,
12
+ args: {
13
+ id: "cardId",
14
+ component: "vc-card",
15
+ label: "Card Title",
16
+ fields: [
17
+ {
18
+ id: "fieldId",
19
+ component: "vc-input",
20
+ label: "Input field",
21
+ placeholder: "Enter text here",
22
+ property: "mockedProperty",
23
+ },
24
+ ],
25
+ },
26
+ argTypes: {
27
+ ..._.pick(SchemaBaseArgTypes, ["id", "disabled", "visibility"]),
28
+ component: {
29
+ description: "Component type.",
30
+ type: {
31
+ required: true,
32
+ name: "string",
33
+ },
34
+ table: {
35
+ type: {
36
+ summary: "vc-card",
37
+ },
38
+ defaultValue: {
39
+ summary: "vc-card",
40
+ },
41
+ },
42
+ },
43
+ fields: {
44
+ description: "Array of control schemas for the fields in the card.",
45
+ type: {
46
+ required: true,
47
+ name: "string",
48
+ },
49
+ table: {
50
+ type: {
51
+ summary: "ControlSchema[]",
52
+ },
53
+ },
54
+ },
55
+ collapsible: {
56
+ description: "Whether the card is collapsible or not.",
57
+ control: "boolean",
58
+ table: {
59
+ type: {
60
+ summary: "boolean",
61
+ },
62
+ },
63
+ },
64
+ collapsed: {
65
+ description: "Whether the card is collapsed or not.",
66
+ control: "boolean",
67
+ table: {
68
+ type: {
69
+ summary: "boolean",
70
+ },
71
+ },
72
+ },
73
+ removePadding: {
74
+ description: "Remove padding from card.",
75
+ control: "boolean",
76
+ table: {
77
+ type: {
78
+ summary: "boolean",
79
+ },
80
+ },
81
+ },
82
+ action: {
83
+ description: "Action button to be displayed in card.",
84
+ table: {
85
+ type: {
86
+ summary: "ButtonSchema",
87
+ },
88
+ },
89
+ },
90
+ },
91
+ parameters: {
92
+ docs: {
93
+ canvas: {
94
+ sourceState: "none",
95
+ },
96
+ },
97
+ },
98
+ } satisfies Meta<CardSchema>;
99
+
100
+ export const Template: StoryFn<CardSchema> = (args) => ({
101
+ components: { page },
102
+ setup: () => {
103
+ const context = reactive({
104
+ scope: {
105
+ runFn: () => alert("Button click"),
106
+ },
107
+ });
108
+ return { args, context };
109
+ },
110
+ template,
111
+ });
112
+
113
+ export const EmptyCard = Template.bind({});
114
+ EmptyCard.args = {
115
+ fields: [],
116
+ };
117
+
118
+ export const Collapsible = Template.bind({});
119
+ Collapsible.args = {
120
+ collapsible: true,
121
+ };
122
+
123
+ export const Collapsed = Template.bind({});
124
+ Collapsed.args = {
125
+ collapsed: true,
126
+ collapsible: true,
127
+ };
128
+
129
+ export const WithoutPadding = Template.bind({});
130
+ WithoutPadding.args = {
131
+ removePadding: true,
132
+ };
133
+
134
+ export const WithAction = Template.bind({});
135
+ WithAction.args = {
136
+ action: {
137
+ id: "actionId",
138
+ component: "vc-button",
139
+ content: "Action",
140
+ method: "runFn",
141
+ small: true,
142
+ variant: "danger",
143
+ },
144
+ };
145
+
146
+ export const WithVisibilityMethod: StoryFn<CardSchema> = (args) => ({
147
+ components: { page },
148
+ setup: () => {
149
+ const isVisible = ref(false);
150
+ const toggle = () => {
151
+ isVisible.value = !isVisible.value;
152
+ };
153
+
154
+ const context = reactive({
155
+ scope: {
156
+ runFn: () => alert("Button click"),
157
+ visibilityFn: isVisible,
158
+ },
159
+ });
160
+ return { args, context, toggle };
161
+ },
162
+ template: templateWithVisibilityToggle,
163
+ });
164
+ WithVisibilityMethod.args = {
165
+ visibility: { method: "visibilityFn" },
166
+ };