@muenchen/muc-patternlab-vue 1.11.0-beta.2 → 1.11.0-beta.3

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 (47) hide show
  1. package/README.md +1 -4
  2. package/dist/components/Form/MucCheckbox.stories.d.ts +34 -0
  3. package/dist/components/Form/MucCheckbox.vue.d.ts +18 -0
  4. package/dist/components/Form/MucCheckboxGroup.stories.d.ts +223 -0
  5. package/dist/components/Form/MucCheckboxGroup.vue.d.ts +46 -0
  6. package/dist/components/Form/MucErrorList.stories.d.ts +41 -0
  7. package/dist/components/Form/MucErrorList.vue.d.ts +17 -0
  8. package/dist/components/Form/MucInput.stories.d.ts +225 -0
  9. package/dist/components/Form/MucInput.vue.d.ts +86 -0
  10. package/dist/components/Form/MucRadioButton.stories.d.ts +154 -0
  11. package/dist/components/Form/MucRadioButton.vue.d.ts +59 -0
  12. package/dist/components/Form/MucRadioButtonGroup.vue.d.ts +37 -0
  13. package/dist/components/Form/MucSelect.stories.d.ts +64 -0
  14. package/dist/components/Form/MucSelect.vue.d.ts +36 -0
  15. package/dist/components/Form/MucTextArea.stories.d.ts +86 -0
  16. package/dist/components/Form/MucTextArea.vue.d.ts +49 -0
  17. package/dist/components/Form/RadioButtonTypes.d.ts +30 -0
  18. package/dist/components/Form/index.d.ts +10 -0
  19. package/dist/components/index.d.ts +2 -1
  20. package/dist/muc-patternlab-vue.es.js +311 -240
  21. package/dist/style.css +1 -1
  22. package/package.json +1 -1
  23. package/src/components/Banner/MucBanner.vue +6 -6
  24. package/src/components/BuisnessHours/MucBusinessHours.vue +7 -11
  25. package/src/components/Button/MucButton.vue +5 -5
  26. package/src/components/Callout/MucCallout.vue +3 -6
  27. package/src/components/Comment/MucComment.vue +7 -21
  28. package/src/components/Form/MucCheckbox.stories.ts +25 -0
  29. package/src/components/Form/MucCheckbox.vue +47 -0
  30. package/src/components/Form/MucCheckboxGroup.stories.ts +43 -0
  31. package/src/components/Form/MucCheckboxGroup.vue +80 -0
  32. package/src/components/Form/MucErrorList.stories.ts +31 -0
  33. package/src/components/Form/MucErrorList.vue +34 -0
  34. package/src/components/Form/MucInput.stories.ts +90 -0
  35. package/src/components/Form/MucInput.vue +198 -0
  36. package/src/components/Form/MucRadioButton.stories.ts +32 -0
  37. package/src/components/Form/MucRadioButton.vue +81 -0
  38. package/src/components/Form/MucRadioButtonGroup.vue +62 -0
  39. package/src/components/Form/MucSelect.stories.ts +34 -0
  40. package/src/components/Form/MucSelect.vue +201 -0
  41. package/src/components/Form/MucTextArea.stories.ts +47 -0
  42. package/src/components/Form/MucTextArea.vue +80 -0
  43. package/src/components/Form/RadioButtonTypes.ts +41 -0
  44. package/src/components/Form/index.ts +23 -0
  45. package/src/components/Icon/MucIcon.vue +7 -1
  46. package/src/components/Intro/MucIntro.vue +2 -2
  47. package/src/components/index.ts +2 -0
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .m-banner--success[data-v-ac0adeb7]{background-color:#f1f6f3;border-bottom:1px solid #3a7f53}.m-callout--success[data-v-efad4956]{background-color:#f1f6f3;border-color:#95b9a2}.m-callout--success .m-callout__icon[data-v-efad4956]{background-color:#3a7f53;box-shadow:0 .3125rem .625rem #005a9f33}.m-callout--error[data-v-efad4956]{background-color:#f8f2f2;border-color:#c79a9b}.m-callout--error .m-callout__icon[data-v-efad4956]{background-color:#984447;box-shadow:0 .3125rem .625rem #005a9f33}.card[data-v-acf0a1dd]{cursor:pointer;border:solid 1px var(--color-neutrals-blue);border-bottom:solid 5px var(--color-brand-main-blue);transition:background-color ease-in .15s}.card[data-v-acf0a1dd]:hover{background-color:#f1f1f1}.card-content[data-v-acf0a1dd]{padding:32px 24px}.card-header[data-v-acf0a1dd]{display:flex}.card-tagline[data-v-acf0a1dd]{font-size:16px;font-family:Open Sans,sans-serif;color:#005a9f;font-weight:700;line-height:24px;word-wrap:break-word;padding-bottom:4px}.muc-divider[data-v-acf0a1dd]{margin-top:16px;margin-bottom:16px}@media all and (min-width: 992px){.card-container[data-v-6740df8f]{padding-left:0;padding-right:0;display:grid;grid-template-columns:repeat(auto-fit,384px);grid-column-gap:32px;grid-row-gap:32px}}@media all and (max-width: 992px){.card-container[data-v-6740df8f]{padding-left:0;padding-right:0;display:inline-grid;grid-template-columns:1fr;grid-row-gap:32px}}.muc-divider[data-v-3957c1bd]{margin-top:8px;margin-bottom:16px}
1
+ .m-banner--success[data-v-53bc7eca]{background-color:#f1f6f3;border-bottom:1px solid #3a7f53}.m-callout--success[data-v-e6cf4104]{background-color:#f1f6f3;border-color:#95b9a2}.m-callout--success .m-callout__icon[data-v-e6cf4104]{background-color:#3a7f53;box-shadow:0 .3125rem .625rem #005a9f33}.m-callout--error[data-v-e6cf4104]{background-color:#f8f2f2;border-color:#c79a9b}.m-callout--error .m-callout__icon[data-v-e6cf4104]{background-color:#984447;box-shadow:0 .3125rem .625rem #005a9f33}.card[data-v-acf0a1dd]{cursor:pointer;border:solid 1px var(--color-neutrals-blue);border-bottom:solid 5px var(--color-brand-main-blue);transition:background-color ease-in .15s}.card[data-v-acf0a1dd]:hover{background-color:#f1f1f1}.card-content[data-v-acf0a1dd]{padding:32px 24px}.card-header[data-v-acf0a1dd]{display:flex}.card-tagline[data-v-acf0a1dd]{font-size:16px;font-family:Open Sans,sans-serif;color:#005a9f;font-weight:700;line-height:24px;word-wrap:break-word;padding-bottom:4px}.muc-divider[data-v-acf0a1dd]{margin-top:16px;margin-bottom:16px}@media all and (min-width: 992px){.card-container[data-v-6740df8f]{padding-left:0;padding-right:0;display:grid;grid-template-columns:repeat(auto-fit,384px);grid-column-gap:32px;grid-row-gap:32px}}@media all and (max-width: 992px){.card-container[data-v-6740df8f]{padding-left:0;padding-right:0;display:inline-grid;grid-template-columns:1fr;grid-row-gap:32px}}.display-listbox[data-v-d28d341e]{display:block!important}.muc-divider[data-v-9ad3adc7]{margin-top:8px;margin-bottom:16px}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "FabianWilms",
4
4
  "description": "A vue component library of some of the components available from https://patternlab.muenchen.space",
5
5
  "license": "MIT",
6
- "version": "1.11.0-beta.2",
6
+ "version": "1.11.0-beta.3",
7
7
  "private": false,
8
8
  "module": "./dist/muc-patternlab-vue.es.js",
9
9
  "types": "./dist/types/index.d.ts",
@@ -1,6 +1,8 @@
1
1
  <script setup lang="ts">
2
2
  import { computed } from "vue";
3
3
 
4
+ import { MucIcon } from "../Icon";
5
+
4
6
  type bannerType = "info" | "success" | "warning" | "emergency";
5
7
 
6
8
  const props = withDefaults(
@@ -70,13 +72,13 @@ const typeAriaLabel = computed(() => {
70
72
  const typeIcon = computed(() => {
71
73
  switch (props.type) {
72
74
  case "success":
73
- return "#icon-check";
75
+ return "check";
74
76
  case "warning":
75
77
  case "emergency":
76
- return "#icon-warning";
78
+ return "warning";
77
79
  case "info":
78
80
  default:
79
- return "#icon-information";
81
+ return "information";
80
82
  }
81
83
  });
82
84
  </script>
@@ -91,9 +93,7 @@ const typeIcon = computed(() => {
91
93
  :aria-label="typeAriaLabel"
92
94
  >
93
95
  <div class="container-fluid">
94
- <svg class="icon">
95
- <use :href="typeIcon" />
96
- </svg>
96
+ <muc-icon :icon="typeIcon" />
97
97
  <slot />
98
98
  </div>
99
99
  </div>
@@ -12,12 +12,10 @@
12
12
  data-bs-toggle="collapse"
13
13
  :aria-expanded="!collapsed"
14
14
  >
15
- <svg
16
- aria-hidden="true"
15
+ <muc-icon
16
+ :icon="icon"
17
17
  class="icon icon--before"
18
- >
19
- <use :xlink:href="'#icon-' + icon"></use>
20
- </svg>
18
+ />
21
19
  <div v-if="todaysBusinessHours">
22
20
  <span> {{ todaysBusinessHours.weekDay }} geöffnet </span>
23
21
  <span
@@ -30,13 +28,10 @@
30
28
  </span>
31
29
  </span>
32
30
  </div>
33
-
34
- <svg
35
- aria-hidden="true"
31
+ <muc-icon
32
+ icon="chevron-down"
36
33
  class="icon icon--after"
37
- >
38
- <use xlink:href="#icon-chevron-down"></use>
39
- </svg>
34
+ />
40
35
  </button>
41
36
  <div
42
37
  class="m-business-hours-toggle__content"
@@ -74,6 +69,7 @@
74
69
  <script setup lang="ts">
75
70
  import { computed, ref } from "vue";
76
71
 
72
+ import { MucIcon } from "../Icon";
77
73
  import { BusinessHourType } from "./BusinessHourType";
78
74
 
79
75
  const LOCALES = "de-DE";
@@ -7,13 +7,11 @@
7
7
  >
8
8
  <span>
9
9
  <slot />
10
- <svg
10
+ <muc-icon
11
11
  v-if="icon"
12
- aria-hidden="true"
12
+ :icon="icon"
13
13
  class="m-button__icon"
14
- >
15
- <use :xlink:href="'#icon-' + icon"></use>
16
- </svg>
14
+ />
17
15
  </span>
18
16
  </button>
19
17
  </template>
@@ -21,6 +19,8 @@
21
19
  <script setup lang="ts">
22
20
  import { computed } from "vue";
23
21
 
22
+ import { MucIcon } from "../Icon";
23
+
24
24
  type buttonType = "primary" | "secondary" | "ghost";
25
25
 
26
26
  const props = withDefaults(
@@ -8,12 +8,7 @@
8
8
  <div class="m-callout__icon">
9
9
  <slot name="icon">
10
10
  <!-- fallback icon -->
11
- <svg
12
- aria-hidden="true"
13
- class="icon"
14
- >
15
- <use :xlink:href="`#icon-${fallbackCalloutIcon}`"></use>
16
- </svg>
11
+ <muc-icon :icon="fallbackCalloutIcon" />
17
12
  </slot>
18
13
  </div>
19
14
  <div class="m-callout__body">
@@ -38,6 +33,8 @@
38
33
  <script setup lang="ts">
39
34
  import { computed } from "vue";
40
35
 
36
+ import { MucIcon } from "../Icon";
37
+
41
38
  type calloutType = "info" | "warning" | "success" | "error";
42
39
 
43
40
  const props = withDefaults(
@@ -12,9 +12,9 @@
12
12
  <slot name="author" />
13
13
  </span>
14
14
  <span v-if="showDate">
15
- <span class="m-comment__author"
16
- >&nbsp;<slot name="datePrefix"
17
- /></span>
15
+ <span class="m-comment__author">
16
+ &nbsp;<slot name="datePrefix" />
17
+ </span>
18
18
  <span class="m-comment__date">&nbsp;<slot name="date" /> </span>
19
19
  </span>
20
20
  <div
@@ -27,35 +27,20 @@
27
27
  :key="n"
28
28
  class="m-star-rating__item m-star-rating__item--full"
29
29
  >
30
- <svg
31
- aria-hidden="true"
32
- class="icon"
33
- >
34
- <use xlink:href="#icon-solid-star"></use>
35
- </svg>
30
+ <muc-icon icon="solid-star" />
36
31
  </div>
37
32
  <div
38
33
  v-if="evaluateRating.isHalfStar"
39
34
  class="m-star-rating__item m-star-rating__item--half"
40
35
  >
41
- <svg
42
- aria-hidden="true"
43
- class="icon"
44
- >
45
- <use xlink:href="#icon-half-star"></use>
46
- </svg>
36
+ <muc-icon icon="half-star" />
47
37
  </div>
48
38
  <div
49
39
  v-for="n in evaluateRating.emptyStars"
50
40
  :key="n"
51
41
  class="m-star-rating__item"
52
42
  >
53
- <svg
54
- aria-hidden="true"
55
- class="icon"
56
- >
57
- <use xlink:href="#icon-solid-star"></use>
58
- </svg>
43
+ <muc-icon icon="solid-star" />
59
44
  </div>
60
45
  <div class="m-star-rating__numeric">
61
46
  {{ ratingWithDecimalComma }}
@@ -76,6 +61,7 @@
76
61
  <script setup lang="ts">
77
62
  import { computed, useSlots } from "vue";
78
63
 
64
+ import { MucIcon } from "../Icon";
79
65
  import CommentType from "./CommentType";
80
66
 
81
67
  const LOCALES = "de-DE";
@@ -0,0 +1,25 @@
1
+ import MucCheckbox from "./MucCheckbox.vue";
2
+
3
+ export default {
4
+ component: MucCheckbox,
5
+ title: "Forms/MucCheckBox",
6
+ tags: ["autodocs"],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: `The MucCheckBox component is a UI element that allows users to make a binary choice, such as "yes" or "no".
11
+ It is typically used in forms and settings where multiple options can be selected independently.
12
+
13
+
14
+ [🔗 Patternlab-Docs](https://patternlab.muenchen.space/?p=elements-checkboxes)
15
+ `,
16
+ },
17
+ },
18
+ },
19
+ };
20
+
21
+ export const Default = {
22
+ args: {
23
+ label: "This is a checkbox - click me",
24
+ },
25
+ };
@@ -0,0 +1,47 @@
1
+ <template>
2
+ <div
3
+ class="m-checkboxes__item"
4
+ @click="clickedCheckbox"
5
+ >
6
+ <input
7
+ class="m-checkboxes__input"
8
+ name="checkbox"
9
+ type="checkbox"
10
+ :checked="checkBoxValue"
11
+ @click.stop="clickedCheckbox"
12
+ />
13
+ <label class="m-label m-checkboxes__label">
14
+ {{ label }} {{ checkBoxValue }}
15
+ </label>
16
+ </div>
17
+ </template>
18
+
19
+ <script setup lang="ts">
20
+ /**
21
+ * Input value from the checkbox component.
22
+ */
23
+ const checkBoxValue = defineModel<boolean>("modelValue", { default: false });
24
+
25
+ defineProps<{
26
+ /**
27
+ * Label is displayed to the right of the checkbox as information for the user.
28
+ */
29
+ label: string;
30
+ }>();
31
+
32
+ const emit = defineEmits<{
33
+ /**
34
+ * Emits every time the checkbox or the label is clicked - thus switching the state.
35
+ * @param e emits the click event.
36
+ */
37
+ (e: "click"): void;
38
+ }>();
39
+
40
+ /**
41
+ * Called upon clicking the checkbox or label, switches the state of the checkbox and emits the event.
42
+ */
43
+ const clickedCheckbox = () => {
44
+ checkBoxValue.value = !checkBoxValue.value;
45
+ emit("click");
46
+ };
47
+ </script>
@@ -0,0 +1,43 @@
1
+ import MucCheckbox from "./MucCheckbox.vue";
2
+ import MucCheckboxGroup from "./MucCheckboxGroup.vue";
3
+
4
+ export default {
5
+ components: { MucCheckboxGroup, MucCheckbox },
6
+ component: MucCheckboxGroup,
7
+ title: "Forms/MucCheckboxGroup",
8
+ tags: ["autodocs"],
9
+ parameters: {
10
+ docs: {
11
+ description: {
12
+ component: `The MucCheckboxGroup component is a wrapper designed to group multiple MucCheckBox components together, allowing users to select multiple options from a set.
13
+
14
+ [🔗 Patternlab-Docs](https://patternlab.muenchen.space/?p=elements-checkboxes-collapse)`,
15
+ },
16
+ },
17
+ },
18
+ };
19
+
20
+ export const NotCollapsable = () => ({
21
+ components: { MucCheckbox, MucCheckboxGroup },
22
+ template: `
23
+ <MucCheckboxGroup heading="Collapsable checkbox group ">
24
+ <template #checkboxes>
25
+ <MucCheckbox v-for="index in 4" :key="index" :label="'not-collapsed-' + index" />
26
+ </template>
27
+ </MucCheckboxGroup>
28
+ `,
29
+ });
30
+
31
+ export const Collapsable = () => ({
32
+ components: { MucCheckbox, MucCheckboxGroup },
33
+ template: `
34
+ <MucCheckboxGroup heading="Collapsable checkbox group ">
35
+ <template #checkboxes>
36
+ <MucCheckbox v-for="index in 4" :key="index" :label="'not-collapsed-' + index" />
37
+ </template>
38
+ <template #collapsableCheckboxes>
39
+ <MucCheckbox v-for="index in 4" :key="index" :label="'collapsed-' + index" />
40
+ </template>
41
+ </MucCheckboxGroup>
42
+ `,
43
+ });
@@ -0,0 +1,80 @@
1
+ <template>
2
+ <div class="m-form-group">
3
+ <fieldset class="m-checkbox-group">
4
+ <legend class="m-checkbox-group__legend">
5
+ <h3 class="m-checkbox-group__heading">
6
+ {{ heading }}
7
+ </h3>
8
+ </legend>
9
+ <div class="m-checkboxes m-checkboxes--collapse">
10
+ <slot name="checkboxes" />
11
+ <div
12
+ v-if="$slots.collapsableCheckboxes"
13
+ class="m-checkboxes__collapse__container"
14
+ :class="isCollapsed"
15
+ >
16
+ <slot name="collapsableCheckboxes" />
17
+ </div>
18
+ <muc-button
19
+ v-if="$slots.collapsableCheckboxes"
20
+ variant="ghost"
21
+ @click="toggleCollapse"
22
+ :aria-expanded="!collapsed"
23
+ >
24
+ <span>Mehr </span>
25
+ <svg
26
+ aria-hidden="true"
27
+ class="icon icon--after"
28
+ >
29
+ <use :href="'#icon-chevron-' + buttonIcon"></use>
30
+ </svg>
31
+ </muc-button>
32
+ </div>
33
+ </fieldset>
34
+ </div>
35
+ </template>
36
+
37
+ <script setup lang="ts">
38
+ import { computed, ref } from "vue";
39
+
40
+ import { MucButton } from "../Button";
41
+
42
+ /**
43
+ * Internal state for the collapsed section
44
+ */
45
+ const collapsed = ref(true);
46
+
47
+ defineProps<{
48
+ /**
49
+ * Display a heading above the slots.
50
+ */
51
+ heading?: string;
52
+ }>();
53
+
54
+ defineSlots<{
55
+ /**
56
+ * Slot directly beneath the heading which will be displayed at all times.
57
+ */
58
+ checkboxes(): any;
59
+
60
+ /**
61
+ * Slot beneath the regular checkbox slot which will be collapsed at first.
62
+ */
63
+ collapsableCheckboxes(): any;
64
+ }>();
65
+
66
+ /**
67
+ * Switches the collapse class for the collapsable container.
68
+ */
69
+ const isCollapsed = computed(() => (collapsed.value ? "collapse" : ""));
70
+
71
+ /**
72
+ * Switches the icon in the button to collapse / expand the container.
73
+ */
74
+ const buttonIcon = computed(() => (collapsed.value ? "down" : "up"));
75
+
76
+ /**
77
+ * Toggles the internal state for the collapsed container.
78
+ */
79
+ const toggleCollapse = () => (collapsed.value = !collapsed.value);
80
+ </script>
@@ -0,0 +1,31 @@
1
+ import MucErrorList from "./MucErrorList.vue";
2
+
3
+ export default {
4
+ component: MucErrorList,
5
+ title: "Forms/MucErrorList",
6
+ tags: ["autodocs"],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: `Simple display of one or more errors as a list.
11
+
12
+ [🔗 Patternlab-Docs](https://patternlab.muenchen.space/?p=elements-error-list)
13
+ `,
14
+ },
15
+ },
16
+ },
17
+ };
18
+
19
+ export const Default = {
20
+ args: {
21
+ title: "A problem occurred!",
22
+ errors: "Only one error line",
23
+ },
24
+ };
25
+
26
+ export const Multiple = {
27
+ args: {
28
+ title: "A problem occurred!",
29
+ errors: ["Error 1", "Error 2", "Error 3", "Error 4"],
30
+ },
31
+ };
@@ -0,0 +1,34 @@
1
+ <template>
2
+ <div
3
+ class="m-error-list"
4
+ role="alert"
5
+ tabindex="-1"
6
+ >
7
+ <h2 class="m-error-list__title">
8
+ {{ title }}
9
+ </h2>
10
+ <div class="m-error-list__body">
11
+ <ul class="m-list m-error-list__list">
12
+ <li
13
+ v-for="(error, index) in listOfErrors"
14
+ :key="index"
15
+ >
16
+ <a>{{ error }} </a>
17
+ </li>
18
+ </ul>
19
+ </div>
20
+ </div>
21
+ </template>
22
+
23
+ <script setup lang="ts">
24
+ import { computed } from "vue";
25
+
26
+ const props = defineProps<{
27
+ title?: string;
28
+ errors: string | string[];
29
+ }>();
30
+
31
+ const listOfErrors = computed(() =>
32
+ typeof props.errors === "string" ? [props.errors] : props.errors
33
+ );
34
+ </script>
@@ -0,0 +1,90 @@
1
+ import MucInput from "./MucInput.vue";
2
+
3
+ export default {
4
+ component: MucInput,
5
+ title: "Forms/MucInput",
6
+ tags: ["autodocs"],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: `The MucInput component is a text-based input field.
11
+ Various types are allowed e.g. datepicker or password.
12
+ It supports various styling options like prefixes /suffixes, buttons and can also be displayed as a textarea.
13
+
14
+ [🔗 Patternlab-Docs](https://patternlab.muenchen.space/?p=elements-input-text)
15
+ `,
16
+ },
17
+ },
18
+ },
19
+ };
20
+
21
+ export const Default = {
22
+ args: {
23
+ placeholder: "Please type here",
24
+ },
25
+ };
26
+
27
+ export const HintAndLabel = {
28
+ args: {
29
+ ...Default.args,
30
+ hint: "This is a hint",
31
+ label: "This is a label",
32
+ },
33
+ };
34
+
35
+ export const Password = {
36
+ args: {
37
+ ...Default.args,
38
+ type: "password",
39
+ modelValue: "password",
40
+ hint: "The input text is 'password'",
41
+ },
42
+ };
43
+
44
+ export const Error = {
45
+ args: {
46
+ ...Default.args,
47
+ errorMsg: "Oops, an error occurred",
48
+ hint: "An error message triggers the error state",
49
+ },
50
+ };
51
+
52
+ export const Prefix = {
53
+ args: {
54
+ ...Default.args,
55
+ prefix: "Prefix",
56
+ },
57
+ };
58
+
59
+ export const SuffixIcon = {
60
+ args: {
61
+ ...Default.args,
62
+ suffixIcon: "search",
63
+ },
64
+ };
65
+
66
+ export const Search = {
67
+ args: {
68
+ ...Default.args,
69
+ type: "search",
70
+ datalist: ["chocolate", "coconut", "vanilla", "mint"],
71
+ },
72
+ };
73
+
74
+ export const Color = {
75
+ args: {
76
+ type: "color",
77
+ },
78
+ };
79
+
80
+ export const Date = {
81
+ args: {
82
+ type: "date",
83
+ },
84
+ };
85
+
86
+ export const Datetime_Local = {
87
+ args: {
88
+ type: "datetime-local",
89
+ },
90
+ };