diff --git a/console/src/formkit/formkit.config.ts b/console/src/formkit/formkit.config.ts index b96634922a..78b90628b0 100644 --- a/console/src/formkit/formkit.config.ts +++ b/console/src/formkit/formkit.config.ts @@ -17,6 +17,8 @@ import { categorySelect } from "./inputs/category-select"; import { categoryCheckbox } from "./inputs/category-checkbox"; import { tagCheckbox } from "./inputs/tag-checkbox"; import { roleSelect } from "./inputs/role-select"; +import { attachmentPolicySelect } from "./inputs/attachment-policy-select"; +import { attachmentGroupSelect } from "./inputs/attachment-group-select"; import radioAlt from "./plugins/radio-alt"; import stopImplicitSubmission from "./plugins/stop-implicit-submission"; @@ -49,6 +51,8 @@ const config: DefaultConfigOptions = { categoryCheckbox, tagCheckbox, roleSelect, + attachmentPolicySelect, + attachmentGroupSelect, }, locales: { zh, en }, locale: "zh", diff --git a/console/src/formkit/inputs/attachment-group-select.ts b/console/src/formkit/inputs/attachment-group-select.ts new file mode 100644 index 0000000000..ffa7eda4b6 --- /dev/null +++ b/console/src/formkit/inputs/attachment-group-select.ts @@ -0,0 +1,26 @@ +import { apiClient } from "@/utils/api-client"; +import type { FormKitNode, FormKitTypeDefinition } from "@formkit/core"; +import { select, selects, defaultIcon } from "@formkit/inputs"; + +function optionsHandler(node: FormKitNode) { + node.on("created", async () => { + const { data } = + await apiClient.extension.storage.group.liststorageHaloRunV1alpha1Group({ + labelSelector: ["!halo.run/hidden"], + }); + + node.props.options = data.items.map((group) => { + return { + value: group.metadata.name, + label: group.spec.displayName, + }; + }); + }); +} + +export const attachmentGroupSelect: FormKitTypeDefinition = { + ...select, + props: ["placeholder"], + forceTypeProp: "select", + features: [optionsHandler, selects, defaultIcon("select", "select")], +}; diff --git a/console/src/formkit/inputs/attachment-policy-select.ts b/console/src/formkit/inputs/attachment-policy-select.ts new file mode 100644 index 0000000000..9905962ee2 --- /dev/null +++ b/console/src/formkit/inputs/attachment-policy-select.ts @@ -0,0 +1,24 @@ +import { apiClient } from "@/utils/api-client"; +import type { FormKitNode, FormKitTypeDefinition } from "@formkit/core"; +import { select, selects, defaultIcon } from "@formkit/inputs"; + +function optionsHandler(node: FormKitNode) { + node.on("created", async () => { + const { data } = + await apiClient.extension.storage.policy.liststorageHaloRunV1alpha1Policy(); + + node.props.options = data.items.map((policy) => { + return { + value: policy.metadata.name, + label: policy.spec.displayName, + }; + }); + }); +} + +export const attachmentPolicySelect: FormKitTypeDefinition = { + ...select, + props: ["placeholder"], + forceTypeProp: "select", + features: [optionsHandler, selects, defaultIcon("select", "select")], +};