@aleph-alpha/settings-kit 0.0.0-stage → 1.0.0

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 (174) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +489 -2
  3. package/dist/SkLayout.vue_vue_type_script_setup_true_lang-ZjV2AMdR.js +51 -0
  4. package/dist/SkLayoutPage-DGbCpQFm.js +2545 -0
  5. package/dist/UseFileConvertor-DN6cCXNi.js +50 -0
  6. package/dist/components/SkField/SkField.vue.d.ts +28 -0
  7. package/dist/components/SkField/SkField.vue.d.ts.map +1 -0
  8. package/dist/components/SkField/index.d.ts +2 -0
  9. package/dist/components/SkField/index.d.ts.map +1 -0
  10. package/dist/components/SkGroup/SkGroup.vue.d.ts +29 -0
  11. package/dist/components/SkGroup/SkGroup.vue.d.ts.map +1 -0
  12. package/dist/components/SkGroup/index.d.ts +2 -0
  13. package/dist/components/SkGroup/index.d.ts.map +1 -0
  14. package/dist/components/SkItem/SkItem.vue.d.ts +22 -0
  15. package/dist/components/SkItem/SkItem.vue.d.ts.map +1 -0
  16. package/dist/components/SkItem/index.d.ts +2 -0
  17. package/dist/components/SkItem/index.d.ts.map +1 -0
  18. package/dist/components/SkLayout/SkLayout.vue.d.ts +53 -0
  19. package/dist/components/SkLayout/SkLayout.vue.d.ts.map +1 -0
  20. package/dist/components/SkLayout/SkLayoutPage.d.ts +23 -0
  21. package/dist/components/SkLayout/SkLayoutPage.d.ts.map +1 -0
  22. package/dist/components/SkLayout/context.d.ts +61 -0
  23. package/dist/components/SkLayout/context.d.ts.map +1 -0
  24. package/dist/components/SkLayout/index.d.ts +5 -0
  25. package/dist/components/SkLayout/index.d.ts.map +1 -0
  26. package/dist/components/SkPage/SkPage.vue.d.ts +35 -0
  27. package/dist/components/SkPage/SkPage.vue.d.ts.map +1 -0
  28. package/dist/components/SkPage/index.d.ts +2 -0
  29. package/dist/components/SkPage/index.d.ts.map +1 -0
  30. package/dist/components/SkSection/SkSection.vue.d.ts +29 -0
  31. package/dist/components/SkSection/SkSection.vue.d.ts.map +1 -0
  32. package/dist/components/SkSection/index.d.ts +2 -0
  33. package/dist/components/SkSection/index.d.ts.map +1 -0
  34. package/dist/components/controls/SkActionsControl/SkActionsControl.vue.d.ts +37 -0
  35. package/dist/components/controls/SkActionsControl/SkActionsControl.vue.d.ts.map +1 -0
  36. package/dist/components/controls/SkActionsControl/index.d.ts +2 -0
  37. package/dist/components/controls/SkActionsControl/index.d.ts.map +1 -0
  38. package/dist/components/controls/SkCheckboxControl/SkCheckboxControl.vue.d.ts +35 -0
  39. package/dist/components/controls/SkCheckboxControl/SkCheckboxControl.vue.d.ts.map +1 -0
  40. package/dist/components/controls/SkCheckboxControl/index.d.ts +2 -0
  41. package/dist/components/controls/SkCheckboxControl/index.d.ts.map +1 -0
  42. package/dist/components/controls/SkColorControl/SkColorControl.vue.d.ts +35 -0
  43. package/dist/components/controls/SkColorControl/SkColorControl.vue.d.ts.map +1 -0
  44. package/dist/components/controls/SkColorControl/index.d.ts +2 -0
  45. package/dist/components/controls/SkColorControl/index.d.ts.map +1 -0
  46. package/dist/components/controls/SkFileUpload/SkFilePlaceholder.vue.d.ts +11 -0
  47. package/dist/components/controls/SkFileUpload/SkFilePlaceholder.vue.d.ts.map +1 -0
  48. package/dist/components/controls/SkFileUpload/SkFileUpload.vue.d.ts +46 -0
  49. package/dist/components/controls/SkFileUpload/SkFileUpload.vue.d.ts.map +1 -0
  50. package/dist/components/controls/SkFileUpload/index.d.ts +2 -0
  51. package/dist/components/controls/SkFileUpload/index.d.ts.map +1 -0
  52. package/dist/components/controls/SkPeriodControl/SkPeriodControl.vue.d.ts +35 -0
  53. package/dist/components/controls/SkPeriodControl/SkPeriodControl.vue.d.ts.map +1 -0
  54. package/dist/components/controls/SkPeriodControl/index.d.ts +2 -0
  55. package/dist/components/controls/SkPeriodControl/index.d.ts.map +1 -0
  56. package/dist/components/controls/SkSelectControl/SkSelectControl.vue.d.ts +40 -0
  57. package/dist/components/controls/SkSelectControl/SkSelectControl.vue.d.ts.map +1 -0
  58. package/dist/components/controls/SkSelectControl/index.d.ts +2 -0
  59. package/dist/components/controls/SkSelectControl/index.d.ts.map +1 -0
  60. package/dist/components/controls/SkTelControl/SKTelPrefixControl.vue.d.ts +16 -0
  61. package/dist/components/controls/SkTelControl/SKTelPrefixControl.vue.d.ts.map +1 -0
  62. package/dist/components/controls/SkTelControl/SkTelControl.vue.d.ts +35 -0
  63. package/dist/components/controls/SkTelControl/SkTelControl.vue.d.ts.map +1 -0
  64. package/dist/components/controls/SkTelControl/index.d.ts +4 -0
  65. package/dist/components/controls/SkTelControl/index.d.ts.map +1 -0
  66. package/dist/components/controls/SkTelControl/prefixes.d.ts +26 -0
  67. package/dist/components/controls/SkTelControl/prefixes.d.ts.map +1 -0
  68. package/dist/components/controls/SkTextControl/SkTextControl.vue.d.ts +45 -0
  69. package/dist/components/controls/SkTextControl/SkTextControl.vue.d.ts.map +1 -0
  70. package/dist/components/controls/SkTextControl/index.d.ts +2 -0
  71. package/dist/components/controls/SkTextControl/index.d.ts.map +1 -0
  72. package/dist/components/controls/SkUnsupportedControl/SkUnsupportedControl.vue.d.ts +8 -0
  73. package/dist/components/controls/SkUnsupportedControl/SkUnsupportedControl.vue.d.ts.map +1 -0
  74. package/dist/components/controls/storyEventLog.d.ts +33 -0
  75. package/dist/components/controls/storyEventLog.d.ts.map +1 -0
  76. package/dist/components/index.d.ts +8 -0
  77. package/dist/components/index.d.ts.map +1 -0
  78. package/dist/components/index.js +14 -0
  79. package/dist/composables/UseFileConvertor/UseFileConvertor.d.ts +7 -0
  80. package/dist/composables/UseFileConvertor/UseFileConvertor.d.ts.map +1 -0
  81. package/dist/composables/index.d.ts +14 -0
  82. package/dist/composables/index.d.ts.map +1 -0
  83. package/dist/composables/useFieldInheritance/useFieldInheritance.d.ts +24 -0
  84. package/dist/composables/useFieldInheritance/useFieldInheritance.d.ts.map +1 -0
  85. package/dist/composables/useFieldValidator/useFieldValidator.d.ts +50 -0
  86. package/dist/composables/useFieldValidator/useFieldValidator.d.ts.map +1 -0
  87. package/dist/composables/useSettingField/useSettingField.d.ts +24 -0
  88. package/dist/composables/useSettingField/useSettingField.d.ts.map +1 -0
  89. package/dist/composables/useSettingsForm/useSettingsForm.d.ts +12 -0
  90. package/dist/composables/useSettingsForm/useSettingsForm.d.ts.map +1 -0
  91. package/dist/composables/useSettingsLayout/useSettingsLayout.d.ts +71 -0
  92. package/dist/composables/useSettingsLayout/useSettingsLayout.d.ts.map +1 -0
  93. package/dist/composables/useSettingsLocale/useSettingsLocale.d.ts +38 -0
  94. package/dist/composables/useSettingsLocale/useSettingsLocale.d.ts.map +1 -0
  95. package/dist/composables/useStateManager/useStateManager.d.ts +10 -0
  96. package/dist/composables/useStateManager/useStateManager.d.ts.map +1 -0
  97. package/dist/core/controls/controlDefinitions.d.ts +33 -0
  98. package/dist/core/controls/controlDefinitions.d.ts.map +1 -0
  99. package/dist/core/controls/index.d.ts +26 -0
  100. package/dist/core/controls/index.d.ts.map +1 -0
  101. package/dist/core/index.d.ts +18 -0
  102. package/dist/core/index.d.ts.map +1 -0
  103. package/dist/core/layout/index.d.ts +8 -0
  104. package/dist/core/layout/index.d.ts.map +1 -0
  105. package/dist/core/layout/navigation.d.ts +33 -0
  106. package/dist/core/layout/navigation.d.ts.map +1 -0
  107. package/dist/core/layout/resolve.d.ts +41 -0
  108. package/dist/core/layout/resolve.d.ts.map +1 -0
  109. package/dist/core/layout/types.d.ts +160 -0
  110. package/dist/core/layout/types.d.ts.map +1 -0
  111. package/dist/core/layout/validate.d.ts +26 -0
  112. package/dist/core/layout/validate.d.ts.map +1 -0
  113. package/dist/core/types.d.ts +541 -0
  114. package/dist/core/types.d.ts.map +1 -0
  115. package/dist/core/useControlModel.d.ts +13 -0
  116. package/dist/core/useControlModel.d.ts.map +1 -0
  117. package/dist/core/utils/a11y.d.ts +25 -0
  118. package/dist/core/utils/a11y.d.ts.map +1 -0
  119. package/dist/core/utils/cast.d.ts +8 -0
  120. package/dist/core/utils/cast.d.ts.map +1 -0
  121. package/dist/core/utils/consts.d.ts +978 -0
  122. package/dist/core/utils/consts.d.ts.map +1 -0
  123. package/dist/core/utils/kitMessages.d.ts +165 -0
  124. package/dist/core/utils/kitMessages.d.ts.map +1 -0
  125. package/dist/core/utils/localizedText.d.ts +10 -0
  126. package/dist/core/utils/localizedText.d.ts.map +1 -0
  127. package/dist/core/utils/useName.d.ts +7 -0
  128. package/dist/core/utils/useName.d.ts.map +1 -0
  129. package/dist/core/validate/constraints.d.ts +20 -0
  130. package/dist/core/validate/constraints.d.ts.map +1 -0
  131. package/dist/core/validate/rules.d.ts +29 -0
  132. package/dist/core/validate/rules.d.ts.map +1 -0
  133. package/dist/favicon.ico +0 -0
  134. package/dist/generators/defineSettingUnit.d.ts +12 -0
  135. package/dist/generators/defineSettingUnit.d.ts.map +1 -0
  136. package/dist/generators/index.d.ts +2 -0
  137. package/dist/generators/index.d.ts.map +1 -0
  138. package/dist/generators/index.js +13 -0
  139. package/dist/index-BQ6z6MK4.js +214 -0
  140. package/dist/index-BXs-0JdT.js +168 -0
  141. package/dist/index-BynIH0EE.js +92 -0
  142. package/dist/index-C-WLhRod.js +100 -0
  143. package/dist/index-CFMv8jSO.js +4 -0
  144. package/dist/index-CGYERet5.js +373 -0
  145. package/dist/index-KAbhkO1J.js +81 -0
  146. package/dist/index.d.ts +11 -0
  147. package/dist/index.d.ts.map +1 -0
  148. package/dist/index.js +52 -0
  149. package/dist/service/index.d.ts +2 -0
  150. package/dist/service/index.d.ts.map +1 -0
  151. package/dist/shell/SkShell.vue.d.ts +80 -0
  152. package/dist/shell/SkShell.vue.d.ts.map +1 -0
  153. package/dist/shell/SkShellFrame.vue.d.ts +46 -0
  154. package/dist/shell/SkShellFrame.vue.d.ts.map +1 -0
  155. package/dist/shell/SkShellNav.vue.d.ts +19 -0
  156. package/dist/shell/SkShellNav.vue.d.ts.map +1 -0
  157. package/dist/shell/history.d.ts +9 -0
  158. package/dist/shell/history.d.ts.map +1 -0
  159. package/dist/shell/index.d.ts +12 -0
  160. package/dist/shell/index.d.ts.map +1 -0
  161. package/dist/shell/index.js +848 -0
  162. package/dist/shell/labels.d.ts +25 -0
  163. package/dist/shell/labels.d.ts.map +1 -0
  164. package/dist/shell/location.d.ts +18 -0
  165. package/dist/shell/location.d.ts.map +1 -0
  166. package/dist/shell/routes.d.ts +19 -0
  167. package/dist/shell/routes.d.ts.map +1 -0
  168. package/dist/shell/useMediaQuery.d.ts +4 -0
  169. package/dist/shell/useMediaQuery.d.ts.map +1 -0
  170. package/dist/shell/useShellLocation.d.ts +37 -0
  171. package/dist/shell/useShellLocation.d.ts.map +1 -0
  172. package/dist/types.d.ts +17 -0
  173. package/dist/types.d.ts.map +1 -0
  174. package/package.json +110 -3
@@ -0,0 +1,168 @@
1
+ import { defineComponent, ref, computed, watch, openBlock, createElementBlock, Fragment, renderSlot, createVNode, unref, withCtx, mergeProps, createElementVNode, toDisplayString, renderList, createBlock, createCommentVNode, mergeDefaults } from "vue";
2
+ import { UiButtonGroup, UiInput, UiDropdownMenu, UiDropdownMenuTrigger, UiButton, UiIcon, UiDropdownMenuContent, UiDropdownMenuItem } from "@aleph-alpha/ui-library";
3
+ import { ChevronDownIcon, CheckIcon } from "@aleph-alpha/ui-library/icons";
4
+ import { N as useControlModel, I as useSettingsLocale, O as useName, P as useA11yAttrs, R as skPeriodUnits, Q as skBaseControlDefaults } from "./SkLayoutPage-DGbCpQFm.js";
5
+ const _hoisted_1 = { class: "body-s-regular !font-medium text-content-on-surface-primary" };
6
+ const _hoisted_2 = { class: "flex-1 body-s-regular text-content-on-surface-primary" };
7
+ const _sfc_main = /* @__PURE__ */ defineComponent({
8
+ ...{
9
+ name: "SkPeriodControl",
10
+ inheritAttrs: false
11
+ },
12
+ __name: "SkPeriodControl",
13
+ props: /* @__PURE__ */ mergeDefaults({
14
+ modelValue: {},
15
+ id: {},
16
+ name: {},
17
+ placeholder: {},
18
+ disabled: { type: Boolean },
19
+ inheriting: { type: Boolean },
20
+ required: { type: Boolean },
21
+ label: {},
22
+ tooltip: {},
23
+ errors: {}
24
+ }, {
25
+ ...skBaseControlDefaults
26
+ }),
27
+ emits: ["update:modelValue", "change"],
28
+ setup(__props, { emit: __emit }) {
29
+ const props = __props;
30
+ const emit = __emit;
31
+ const model = useControlModel(props, emit, "");
32
+ const { message } = useSettingsLocale();
33
+ const unitLabel = (unit2) => message(`period.unit.${unit2}`);
34
+ const controlName = useName(props?.name ?? props?.id);
35
+ const a11yAttrs = useA11yAttrs([
36
+ "aria-label",
37
+ "aria-labelledby",
38
+ "aria-describedby",
39
+ "aria-invalid",
40
+ "aria-required",
41
+ "aria-errormessage"
42
+ ]);
43
+ const unitAliases = Object.fromEntries(
44
+ skPeriodUnits.flatMap(({ value, label }) => [
45
+ [value, value],
46
+ [label.toLowerCase(), value],
47
+ [label.toLowerCase().slice(0, -1), value]
48
+ ])
49
+ );
50
+ function parsePeriod(value) {
51
+ const match = /^(\d+)[\s-]*([a-z]+)$/i.exec(value.trim());
52
+ const [, amountPart, unitPart] = match ?? [];
53
+ const unit2 = unitPart ? unitAliases[unitPart.toLowerCase()] : void 0;
54
+ if (!amountPart || !unit2) return void 0;
55
+ return { amount: amountPart, unit: unit2 };
56
+ }
57
+ function composePeriod(amount2, unit2) {
58
+ return amount2 ? `${amount2}${unit2}` : "";
59
+ }
60
+ const amount = ref("");
61
+ const unit = ref("d");
62
+ const composedPeriod = computed(() => composePeriod(amount.value, unit.value));
63
+ const selectedUnit = computed(
64
+ () => skPeriodUnits.find(({ value }) => value === unit.value) ?? skPeriodUnits[0]
65
+ );
66
+ watch(
67
+ () => model.value ?? "",
68
+ (value) => {
69
+ if (value === composedPeriod.value) return;
70
+ const parsed = parsePeriod(value);
71
+ if (parsed) {
72
+ amount.value = parsed.amount;
73
+ unit.value = parsed.unit;
74
+ } else {
75
+ amount.value = value.replace(/\D/g, "");
76
+ }
77
+ },
78
+ { immediate: true }
79
+ );
80
+ const amountInput = computed({
81
+ get: () => amount.value,
82
+ set: (value) => {
83
+ amount.value = String(value ?? "").replace(/\D/g, "");
84
+ model.value = composedPeriod.value;
85
+ }
86
+ });
87
+ function selectUnit(value) {
88
+ unit.value = value;
89
+ model.value = composedPeriod.value;
90
+ emit("change", composedPeriod.value);
91
+ }
92
+ return (_ctx, _cache) => {
93
+ return openBlock(), createElementBlock(Fragment, null, [
94
+ renderSlot(_ctx.$slots, "label"),
95
+ createVNode(unref(UiButtonGroup), { class: "w-full" }, {
96
+ default: withCtx(() => [
97
+ createVNode(unref(UiInput), mergeProps({
98
+ id: __props.id,
99
+ modelValue: amountInput.value,
100
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => amountInput.value = $event)
101
+ }, unref(a11yAttrs), {
102
+ type: "text",
103
+ inputmode: "numeric",
104
+ name: unref(controlName),
105
+ placeholder: __props.placeholder,
106
+ disabled: __props.disabled,
107
+ required: __props.required,
108
+ onChange: _cache[1] || (_cache[1] = ($event) => emit("change", composedPeriod.value))
109
+ }), null, 16, ["id", "modelValue", "name", "placeholder", "disabled", "required"]),
110
+ createVNode(unref(UiDropdownMenu), null, {
111
+ default: withCtx(() => [
112
+ createVNode(unref(UiDropdownMenuTrigger), { "as-child": "" }, {
113
+ default: withCtx(() => [
114
+ createVNode(unref(UiButton), {
115
+ variant: "outline",
116
+ class: "rounded-md",
117
+ disabled: __props.disabled,
118
+ "aria-label": unref(message)("period.unitAria", { unit: unitLabel(selectedUnit.value.value) })
119
+ }, {
120
+ default: withCtx(() => [
121
+ createElementVNode("span", _hoisted_1, toDisplayString(unitLabel(selectedUnit.value.value)), 1),
122
+ createVNode(unref(UiIcon), {
123
+ name: unref(ChevronDownIcon),
124
+ class: "shrink-0 text-content-on-surface-primary"
125
+ }, null, 8, ["name"])
126
+ ]),
127
+ _: 1
128
+ }, 8, ["disabled", "aria-label"])
129
+ ]),
130
+ _: 1
131
+ }),
132
+ createVNode(unref(UiDropdownMenuContent), { align: "start" }, {
133
+ default: withCtx(() => [
134
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(skPeriodUnits), (periodUnit) => {
135
+ return openBlock(), createBlock(unref(UiDropdownMenuItem), {
136
+ key: periodUnit.value,
137
+ "text-value": unitLabel(periodUnit.value),
138
+ onSelect: ($event) => selectUnit(periodUnit.value)
139
+ }, {
140
+ default: withCtx(() => [
141
+ createElementVNode("span", _hoisted_2, toDisplayString(unitLabel(periodUnit.value)), 1),
142
+ periodUnit.value === unit.value ? (openBlock(), createBlock(unref(UiIcon), {
143
+ key: 0,
144
+ name: unref(CheckIcon),
145
+ size: "s",
146
+ class: "shrink-0"
147
+ }, null, 8, ["name"])) : createCommentVNode("", true)
148
+ ]),
149
+ _: 2
150
+ }, 1032, ["text-value", "onSelect"]);
151
+ }), 128))
152
+ ]),
153
+ _: 1
154
+ })
155
+ ]),
156
+ _: 1
157
+ })
158
+ ]),
159
+ _: 1
160
+ }),
161
+ renderSlot(_ctx.$slots, "error")
162
+ ], 64);
163
+ };
164
+ }
165
+ });
166
+ export {
167
+ _sfc_main as SkPeriodControl
168
+ };
@@ -0,0 +1,92 @@
1
+ import { defineComponent, computed, openBlock, createElementBlock, Fragment, renderSlot, createElementVNode, normalizeStyle, unref, normalizeClass, withDirectives, mergeProps, isRef, vModelText, createVNode, mergeDefaults } from "vue";
2
+ import { UiInput } from "@aleph-alpha/ui-library";
3
+ import { N as useControlModel, I as useSettingsLocale, O as useName, P as useA11yAttrs, Q as skBaseControlDefaults } from "./SkLayoutPage-DGbCpQFm.js";
4
+ const _hoisted_1 = { class: "flex items-center gap-2" };
5
+ const _hoisted_2 = ["id", "name", "disabled", "required"];
6
+ const _hoisted_3 = { class: "flex flex-col grow gap-2" };
7
+ const _sfc_main = /* @__PURE__ */ defineComponent({
8
+ ...{
9
+ name: "SkColorControl",
10
+ inheritAttrs: false
11
+ },
12
+ __name: "SkColorControl",
13
+ props: /* @__PURE__ */ mergeDefaults({
14
+ modelValue: {},
15
+ id: {},
16
+ name: {},
17
+ placeholder: {},
18
+ disabled: { type: Boolean },
19
+ inheriting: { type: Boolean },
20
+ required: { type: Boolean },
21
+ label: {},
22
+ tooltip: {},
23
+ errors: {}
24
+ }, {
25
+ ...skBaseControlDefaults
26
+ }),
27
+ emits: ["update:modelValue", "change"],
28
+ setup(__props, { emit: __emit }) {
29
+ const props = __props;
30
+ const emit = __emit;
31
+ const model = useControlModel(props, emit, "#000000");
32
+ const { message } = useSettingsLocale();
33
+ const controlName = useName(props?.name ?? props?.id);
34
+ const a11yAttrs = useA11yAttrs([
35
+ "aria-label",
36
+ "aria-labelledby",
37
+ "aria-describedby",
38
+ "aria-invalid",
39
+ "aria-required",
40
+ "aria-errormessage"
41
+ ]);
42
+ const hexA11yAttrs = computed(() => ({
43
+ ...a11yAttrs.value,
44
+ "aria-label": a11yAttrs.value["aria-label"] ? message("color.hexValue", { label: a11yAttrs.value["aria-label"] }) : message("color.hexValueDefault"),
45
+ "aria-labelledby": void 0
46
+ }));
47
+ function onChange(event) {
48
+ emit("change", event.target.value);
49
+ }
50
+ return (_ctx, _cache) => {
51
+ return openBlock(), createElementBlock(Fragment, null, [
52
+ renderSlot(_ctx.$slots, "label"),
53
+ createElementVNode("div", _hoisted_1, [
54
+ createElementVNode("label", {
55
+ class: normalizeClass(["ui-focus-ring-within size-9 shrink-0 cursor-pointer rounded-full border border-input self-start", { "pointer-events-none opacity-50": __props.disabled }]),
56
+ style: normalizeStyle({ backgroundColor: unref(model) })
57
+ }, [
58
+ withDirectives(createElementVNode("input", mergeProps({
59
+ id: __props.id,
60
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(model) ? model.value = $event : null)
61
+ }, unref(a11yAttrs), {
62
+ type: "color",
63
+ name: `${unref(controlName)}-color`,
64
+ disabled: __props.disabled,
65
+ required: __props.required,
66
+ class: "sr-only",
67
+ onChange
68
+ }), null, 16, _hoisted_2), [
69
+ [vModelText, unref(model)]
70
+ ])
71
+ ], 6),
72
+ createElementVNode("div", _hoisted_3, [
73
+ createVNode(unref(UiInput), mergeProps({
74
+ modelValue: unref(model),
75
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(model) ? model.value = $event : null)
76
+ }, hexA11yAttrs.value, {
77
+ class: "grow",
78
+ name: `${unref(controlName)}-input`,
79
+ placeholder: __props.placeholder,
80
+ disabled: __props.disabled,
81
+ onChange
82
+ }), null, 16, ["modelValue", "name", "placeholder", "disabled"]),
83
+ renderSlot(_ctx.$slots, "error")
84
+ ])
85
+ ])
86
+ ], 64);
87
+ };
88
+ }
89
+ });
90
+ export {
91
+ _sfc_main as SkColorControl
92
+ };
@@ -0,0 +1,100 @@
1
+ import { defineComponent, computed, openBlock, createElementBlock, Fragment, renderSlot, createVNode, unref, withCtx, mergeProps, renderList, createBlock, createTextVNode, toDisplayString, mergeDefaults } from "vue";
2
+ import { UiSelect, UiSelectTrigger, UiSelectValue, UiSelectContent, UiSelectItem } from "@aleph-alpha/ui-library";
3
+ import { I as useSettingsLocale, N as useControlModel, O as useName, P as useA11yAttrs, Q as skBaseControlDefaults } from "./SkLayoutPage-DGbCpQFm.js";
4
+ const _sfc_main = /* @__PURE__ */ defineComponent({
5
+ ...{
6
+ name: "SkSelectControl",
7
+ inheritAttrs: false
8
+ },
9
+ __name: "SkSelectControl",
10
+ props: /* @__PURE__ */ mergeDefaults({
11
+ options: {},
12
+ modelValue: {},
13
+ id: {},
14
+ name: {},
15
+ placeholder: {},
16
+ disabled: { type: Boolean },
17
+ inheriting: { type: Boolean },
18
+ required: { type: Boolean },
19
+ label: {},
20
+ tooltip: {},
21
+ errors: {}
22
+ }, {
23
+ ...skBaseControlDefaults,
24
+ options: () => []
25
+ }),
26
+ emits: ["update:modelValue", "change"],
27
+ setup(__props, { emit: __emit }) {
28
+ const props = __props;
29
+ const emit = __emit;
30
+ const { resolveText } = useSettingsLocale();
31
+ const resolvedOptions = computed(
32
+ () => props.options.map((option) => ({
33
+ value: option.value,
34
+ label: resolveText(option.label),
35
+ disabled: option.disabled
36
+ }))
37
+ );
38
+ const model = useControlModel(props, emit);
39
+ function pick(next) {
40
+ const value = Array.isArray(next) ? next[0] : next;
41
+ model.value = value;
42
+ emit("change", value);
43
+ }
44
+ const controlName = useName(props?.name ?? props?.id);
45
+ const a11yAttrs = useA11yAttrs([
46
+ "aria-label",
47
+ "aria-labelledby",
48
+ "aria-describedby",
49
+ "aria-invalid",
50
+ "aria-required",
51
+ "aria-errormessage"
52
+ ]);
53
+ return (_ctx, _cache) => {
54
+ return openBlock(), createElementBlock(Fragment, null, [
55
+ renderSlot(_ctx.$slots, "label"),
56
+ createVNode(unref(UiSelect), {
57
+ "model-value": unref(model),
58
+ name: unref(controlName),
59
+ disabled: __props.disabled,
60
+ required: __props.required,
61
+ "onUpdate:modelValue": pick
62
+ }, {
63
+ default: withCtx(() => [
64
+ createVNode(unref(UiSelectTrigger), mergeProps({ id: __props.id }, unref(a11yAttrs), {
65
+ class: "w-full",
66
+ disabled: __props.disabled
67
+ }), {
68
+ default: withCtx(() => [
69
+ createVNode(unref(UiSelectValue), { placeholder: __props.placeholder }, null, 8, ["placeholder"])
70
+ ]),
71
+ _: 1
72
+ }, 16, ["id", "disabled"]),
73
+ createVNode(unref(UiSelectContent), null, {
74
+ default: withCtx(() => [
75
+ (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedOptions.value, (option) => {
76
+ return openBlock(), createBlock(unref(UiSelectItem), {
77
+ key: option.value,
78
+ value: option.value,
79
+ disabled: option.disabled
80
+ }, {
81
+ default: withCtx(() => [
82
+ createTextVNode(toDisplayString(option.label), 1)
83
+ ]),
84
+ _: 2
85
+ }, 1032, ["value", "disabled"]);
86
+ }), 128))
87
+ ]),
88
+ _: 1
89
+ })
90
+ ]),
91
+ _: 1
92
+ }, 8, ["model-value", "name", "disabled", "required"]),
93
+ renderSlot(_ctx.$slots, "error")
94
+ ], 64);
95
+ };
96
+ }
97
+ });
98
+ export {
99
+ _sfc_main as SkSelectControl
100
+ };
@@ -0,0 +1,4 @@
1
+ import { M as _sfc_main } from "./SkLayoutPage-DGbCpQFm.js";
2
+ export {
3
+ _sfc_main as SkCheckboxControl
4
+ };