import { expect, test } from "vitest" import { SelectInputorController } from "#Source/form/index.ts" test("SelectInputorController.select keeps disabled selected options sticky and supports unselect", async () => { const stickyController = new SelectInputorController({ id: "select-sticky-id", value: [ { name: "a", label: "A", value: "a", isSelected: false }, { name: "b", label: "B", value: "b", isSelected: true, isDisabled: true }, { name: "c", label: "C", value: "c", isSelected: false }, ], }) await stickyController.waitForReady() await stickyController.select("a") expect((await stickyController.getSchema()).value).toEqual([ { name: "a", label: "A", value: "a", isSelected: false }, { name: "b", label: "B", value: "b", isSelected: true, isDisabled: true }, { name: "c", label: "C", value: "c", isSelected: false }, ]) const unselectController = new SelectInputorController({ id: "select-unselect-id", value: [ { name: "a", label: "A", value: "a", isSelected: false }, { name: "b", label: "B", value: "b", isSelected: false }, ], enableUnselect: true, }) await unselectController.waitForReady() await unselectController.select("a") await unselectController.select("a") expect((await unselectController.getSchema()).value).toEqual([ { name: "a", label: "A", value: "a", isSelected: false }, { name: "b", label: "B", value: "b", isSelected: false }, ]) await unselectController.updateIsDisabled(true) await unselectController.select("b") expect((await unselectController.getSchema()).value).toEqual([ { name: "a", label: "A", value: "a", isSelected: false }, { name: "b", label: "B", value: "b", isSelected: false }, ]) })