@vc-shell/framework 1.0.188 → 1.0.189

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 (147) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/core/plugins/moment/humanize.ts +6 -7
  3. package/dist/core/plugins/moment/humanize.d.ts.map +1 -1
  4. package/dist/framework.js +5719 -5699
  5. package/dist/index.css +1 -1
  6. package/dist/shared/modules/dynamic/components/fields/Button.d.ts.map +1 -1
  7. package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts.map +1 -1
  8. package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts.map +1 -1
  9. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts +4 -1
  10. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts.map +1 -1
  11. package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts.map +1 -1
  12. package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts.map +1 -1
  13. package/dist/shared/modules/dynamic/components/fields/MultivalueField.d.ts.map +1 -1
  14. package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts.map +1 -1
  15. package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts.map +1 -1
  16. package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts.map +1 -1
  17. package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts +417 -0
  18. package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts.map +1 -0
  19. package/dist/shared/modules/dynamic/components/fields/storybook/Card.stories.d.ts +357 -0
  20. package/dist/shared/modules/dynamic/components/fields/storybook/Card.stories.d.ts.map +1 -0
  21. package/dist/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.d.ts +398 -0
  22. package/dist/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.d.ts.map +1 -0
  23. package/dist/shared/modules/dynamic/components/fields/storybook/ContentField.stories.d.ts +392 -0
  24. package/dist/shared/modules/dynamic/components/fields/storybook/ContentField.stories.d.ts.map +1 -0
  25. package/dist/shared/modules/dynamic/components/fields/storybook/EditorField.stories.d.ts +398 -0
  26. package/dist/shared/modules/dynamic/components/fields/storybook/EditorField.stories.d.ts.map +1 -0
  27. package/dist/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.d.ts +372 -0
  28. package/dist/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.d.ts.map +1 -0
  29. package/dist/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.d.ts +391 -0
  30. package/dist/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.d.ts.map +1 -0
  31. package/dist/shared/modules/dynamic/components/fields/storybook/ImageField.stories.d.ts +372 -0
  32. package/dist/shared/modules/dynamic/components/fields/storybook/ImageField.stories.d.ts.map +1 -0
  33. package/dist/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.d.ts +439 -0
  34. package/dist/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.d.ts.map +1 -0
  35. package/dist/shared/modules/dynamic/components/fields/storybook/InputField.stories.d.ts +448 -0
  36. package/dist/shared/modules/dynamic/components/fields/storybook/InputField.stories.d.ts.map +1 -0
  37. package/dist/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.d.ts +459 -0
  38. package/dist/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.d.ts.map +1 -0
  39. package/dist/shared/modules/dynamic/components/fields/storybook/RatingField.stories.d.ts +359 -0
  40. package/dist/shared/modules/dynamic/components/fields/storybook/RatingField.stories.d.ts.map +1 -0
  41. package/dist/shared/modules/dynamic/components/fields/storybook/SelectField.stories.d.ts +507 -0
  42. package/dist/shared/modules/dynamic/components/fields/storybook/SelectField.stories.d.ts.map +1 -0
  43. package/dist/shared/modules/dynamic/components/fields/storybook/StatusField.stories.d.ts +392 -0
  44. package/dist/shared/modules/dynamic/components/fields/storybook/StatusField.stories.d.ts.map +1 -0
  45. package/dist/shared/modules/dynamic/components/fields/storybook/SwitchField.stories.d.ts +14 -0
  46. package/dist/shared/modules/dynamic/components/fields/storybook/SwitchField.stories.d.ts.map +1 -0
  47. package/dist/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.d.ts +395 -0
  48. package/dist/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.d.ts.map +1 -0
  49. package/dist/shared/modules/dynamic/components/fields/storybook/VideoField.stories.d.ts +322 -0
  50. package/dist/shared/modules/dynamic/components/fields/storybook/VideoField.stories.d.ts.map +1 -0
  51. package/dist/shared/modules/dynamic/components/fields/storybook/common/args.d.ts +113 -0
  52. package/dist/shared/modules/dynamic/components/fields/storybook/common/args.d.ts.map +1 -0
  53. package/dist/shared/modules/dynamic/components/fields/storybook/common/templates.d.ts +3 -0
  54. package/dist/shared/modules/dynamic/components/fields/storybook/common/templates.d.ts.map +1 -0
  55. package/dist/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.d.ts +235 -0
  56. package/dist/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.d.ts.map +1 -0
  57. package/dist/shared/modules/dynamic/components/fields/storybook/utils/sourceHighlighter.d.ts +4 -0
  58. package/dist/shared/modules/dynamic/components/fields/storybook/utils/sourceHighlighter.d.ts.map +1 -0
  59. package/dist/shared/modules/dynamic/components/fields/storybook/utils/sourceTransform.d.ts +3 -0
  60. package/dist/shared/modules/dynamic/components/fields/storybook/utils/sourceTransform.d.ts.map +1 -0
  61. package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts.map +1 -1
  62. package/dist/shared/modules/dynamic/helpers/getters.d.ts.map +1 -1
  63. package/dist/shared/modules/dynamic/types/index.d.ts +73 -38
  64. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
  65. package/dist/shared/modules/dynamic/types/models.d.ts.map +1 -1
  66. package/dist/tsconfig.tsbuildinfo +1 -1
  67. package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts.map +1 -1
  68. package/dist/ui/components/atoms/vc-switch/index.d.ts +1 -39
  69. package/dist/ui/components/atoms/vc-switch/index.d.ts.map +1 -1
  70. package/dist/ui/components/atoms/vc-switch/vc-switch.stories.d.ts +30 -11
  71. package/dist/ui/components/atoms/vc-switch/vc-switch.stories.d.ts.map +1 -1
  72. package/dist/ui/components/atoms/vc-switch/vc-switch.vue.d.ts +22 -3
  73. package/dist/ui/components/atoms/vc-switch/vc-switch.vue.d.ts.map +1 -1
  74. package/dist/ui/components/atoms/vc-video/index.d.ts +1 -35
  75. package/dist/ui/components/atoms/vc-video/index.d.ts.map +1 -1
  76. package/dist/ui/components/atoms/vc-video/vc-video.stories.d.ts +5 -27
  77. package/dist/ui/components/atoms/vc-video/vc-video.stories.d.ts.map +1 -1
  78. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts +3 -18
  79. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
  80. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
  81. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts.map +1 -1
  82. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.stories.d.ts +252 -42
  83. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.stories.d.ts.map +1 -1
  84. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts +36 -6
  85. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts.map +1 -1
  86. package/dist/ui/components/molecules/vc-select/vc-select.stories.d.ts +96 -32
  87. package/dist/ui/components/molecules/vc-select/vc-select.stories.d.ts.map +1 -1
  88. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +3 -3
  89. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
  90. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts.map +1 -1
  91. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  92. package/package.json +4 -4
  93. package/shared/modules/dynamic/components/fields/Button.ts +5 -2
  94. package/shared/modules/dynamic/components/fields/Card.ts +4 -4
  95. package/shared/modules/dynamic/components/fields/ContentField.ts +1 -0
  96. package/shared/modules/dynamic/components/fields/DynamicProperty.ts +5 -6
  97. package/shared/modules/dynamic/components/fields/EditorField.ts +4 -3
  98. package/shared/modules/dynamic/components/fields/Fieldset.ts +1 -1
  99. package/shared/modules/dynamic/components/fields/GalleryField.ts +6 -3
  100. package/shared/modules/dynamic/components/fields/ImageField.ts +0 -1
  101. package/shared/modules/dynamic/components/fields/InputCurrency.ts +1 -1
  102. package/shared/modules/dynamic/components/fields/MultivalueField.ts +3 -2
  103. package/shared/modules/dynamic/components/fields/SelectField.ts +1 -0
  104. package/shared/modules/dynamic/components/fields/StatusField.ts +20 -10
  105. package/shared/modules/dynamic/components/fields/VideoField.ts +0 -1
  106. package/shared/modules/dynamic/components/fields/storybook/Button.stories.ts +247 -0
  107. package/shared/modules/dynamic/components/fields/storybook/Card.stories.ts +167 -0
  108. package/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.ts +186 -0
  109. package/shared/modules/dynamic/components/fields/storybook/ContentField.stories.ts +246 -0
  110. package/shared/modules/dynamic/components/fields/storybook/EditorField.stories.ts +185 -0
  111. package/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.ts +409 -0
  112. package/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.ts +239 -0
  113. package/shared/modules/dynamic/components/fields/storybook/ImageField.stories.ts +186 -0
  114. package/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.ts +267 -0
  115. package/shared/modules/dynamic/components/fields/storybook/InputField.stories.ts +286 -0
  116. package/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.ts +347 -0
  117. package/shared/modules/dynamic/components/fields/storybook/RatingField.stories.ts +131 -0
  118. package/shared/modules/dynamic/components/fields/storybook/SelectField.stories.ts +653 -0
  119. package/shared/modules/dynamic/components/fields/storybook/StatusField.stories.ts +202 -0
  120. package/shared/modules/dynamic/components/fields/storybook/SwitchField.stories.ts +178 -0
  121. package/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.ts +191 -0
  122. package/shared/modules/dynamic/components/fields/storybook/VideoField.stories.ts +92 -0
  123. package/shared/modules/dynamic/components/fields/storybook/common/args.ts +130 -0
  124. package/shared/modules/dynamic/components/fields/storybook/common/templates.ts +8 -0
  125. package/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.ts +54 -0
  126. package/shared/modules/dynamic/components/fields/storybook/utils/sourceHighlighter.ts +16 -0
  127. package/shared/modules/dynamic/components/fields/storybook/utils/sourceTransform.ts +41 -0
  128. package/shared/modules/dynamic/factories/base/useDetailsFactory.ts +1 -0
  129. package/shared/modules/dynamic/helpers/getters.ts +3 -0
  130. package/shared/modules/dynamic/helpers/nodeBuilder.ts +1 -1
  131. package/shared/modules/dynamic/helpers/setters.ts +1 -1
  132. package/shared/modules/dynamic/types/index.ts +78 -40
  133. package/shared/modules/dynamic/types/models.ts +8 -7
  134. package/ui/components/atoms/vc-card/vc-card.vue +12 -2
  135. package/ui/components/atoms/vc-switch/index.ts +1 -3
  136. package/ui/components/atoms/vc-switch/vc-switch.vue +10 -3
  137. package/ui/components/atoms/vc-video/index.ts +1 -3
  138. package/ui/components/atoms/vc-video/vc-video.stories.ts +1 -15
  139. package/ui/components/atoms/vc-video/vc-video.vue +4 -37
  140. package/ui/components/molecules/vc-editor/vc-editor.vue +28 -9
  141. package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +2 -2
  142. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +8 -0
  143. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +21 -9
  144. package/ui/components/molecules/vc-select/vc-select.stories.ts +74 -3
  145. package/ui/components/molecules/vc-select/vc-select.vue +35 -38
  146. package/ui/components/molecules/vc-textarea/vc-textarea.vue +1 -9
  147. package/ui/components/organisms/vc-table/vc-table.vue +1 -0
@@ -1,20 +1,21 @@
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,
18
19
  },
19
20
  unrefNested(props.baseProps),
20
21
  {
@@ -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,
@@ -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
  };
@@ -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,167 @@
1
+ import { template, templateWithVisibilityToggle } from "./common/templates";
2
+ import { Meta, StoryFn } from "@storybook/vue3";
3
+ import Card from "../Card";
4
+ import { computed, reactive, ref } from "vue";
5
+ import page from "./pages/DynamicRender";
6
+ import * as _ from "lodash-es";
7
+ import { SchemaBaseArgTypes } from "./common/args";
8
+ import { CardSchema } from "../../..";
9
+
10
+ export default {
11
+ title: "DynamicViews/atoms/VcCard",
12
+ component: page,
13
+ args: {
14
+ id: "cardId",
15
+ component: "vc-card",
16
+ label: "Card Title",
17
+ fields: [
18
+ {
19
+ id: "fieldId",
20
+ component: "vc-input",
21
+ label: "Input field",
22
+ placeholder: "Enter text here",
23
+ property: "mockedProperty",
24
+ },
25
+ ],
26
+ },
27
+ argTypes: {
28
+ ..._.pick(SchemaBaseArgTypes, ["id", "disabled", "visibility"]),
29
+ component: {
30
+ description: "Component type.",
31
+ type: {
32
+ required: true,
33
+ name: "string",
34
+ },
35
+ table: {
36
+ type: {
37
+ summary: "vc-card",
38
+ },
39
+ defaultValue: {
40
+ summary: "vc-card",
41
+ },
42
+ },
43
+ },
44
+ fields: {
45
+ description: "Array of control schemas for the fields in the card.",
46
+ type: {
47
+ required: true,
48
+ name: "string",
49
+ },
50
+ table: {
51
+ type: {
52
+ summary: "ControlSchema[]",
53
+ },
54
+ },
55
+ },
56
+ collapsible: {
57
+ description: "Whether the card is collapsible or not.",
58
+ control: "boolean",
59
+ table: {
60
+ type: {
61
+ summary: "boolean",
62
+ },
63
+ },
64
+ },
65
+ collapsed: {
66
+ description: "Whether the card is collapsed or not.",
67
+ control: "boolean",
68
+ table: {
69
+ type: {
70
+ summary: "boolean",
71
+ },
72
+ },
73
+ },
74
+ removePadding: {
75
+ description: "Remove padding from card.",
76
+ control: "boolean",
77
+ table: {
78
+ type: {
79
+ summary: "boolean",
80
+ },
81
+ },
82
+ },
83
+ action: {
84
+ description: "Action button to be displayed in card.",
85
+ table: {
86
+ type: {
87
+ summary: "ButtonSchema",
88
+ },
89
+ },
90
+ },
91
+ },
92
+ parameters: {
93
+ docs: {
94
+ canvas: {
95
+ sourceState: "none",
96
+ },
97
+ },
98
+ },
99
+ } satisfies Meta<CardSchema>;
100
+
101
+ export const Template: StoryFn<CardSchema> = (args) => ({
102
+ components: { page },
103
+ setup: () => {
104
+ const context = reactive({
105
+ scope: {
106
+ runFn: () => alert("Button click"),
107
+ },
108
+ });
109
+ return { args, context };
110
+ },
111
+ template,
112
+ });
113
+
114
+ export const EmptyCard = Template.bind({});
115
+ EmptyCard.args = {
116
+ fields: [],
117
+ };
118
+
119
+ export const Collapsible = Template.bind({});
120
+ Collapsible.args = {
121
+ collapsible: true,
122
+ };
123
+
124
+ export const Collapsed = Template.bind({});
125
+ Collapsed.args = {
126
+ collapsed: true,
127
+ collapsible: true,
128
+ };
129
+
130
+ export const WithoutPadding = Template.bind({});
131
+ WithoutPadding.args = {
132
+ removePadding: true,
133
+ };
134
+
135
+ export const WithAction = Template.bind({});
136
+ WithAction.args = {
137
+ action: {
138
+ id: "actionId",
139
+ component: "vc-button",
140
+ content: "Action",
141
+ method: "runFn",
142
+ small: true,
143
+ variant: "danger",
144
+ },
145
+ };
146
+
147
+ export const WithVisibilityMethod: StoryFn<CardSchema> = (args) => ({
148
+ components: { page },
149
+ setup: () => {
150
+ const isVisible = ref(false);
151
+ const toggle = () => {
152
+ isVisible.value = !isVisible.value;
153
+ };
154
+
155
+ const context = reactive({
156
+ scope: {
157
+ runFn: () => alert("Button click"),
158
+ visibilityFn: isVisible,
159
+ },
160
+ });
161
+ return { args, context, toggle };
162
+ },
163
+ template: templateWithVisibilityToggle,
164
+ });
165
+ WithVisibilityMethod.args = {
166
+ visibility: { method: "visibilityFn" },
167
+ };