From ce43049db999773ed7d839d166ac119edad34322 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Sun, 17 Mar 2024 12:20:34 -0400 Subject: [PATCH 1/3] Start disclosure manager --- ember-primitives/src/components/disclosure-manager.gts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 ember-primitives/src/components/disclosure-manager.gts diff --git a/ember-primitives/src/components/disclosure-manager.gts b/ember-primitives/src/components/disclosure-manager.gts new file mode 100644 index 00000000..2c43f09d --- /dev/null +++ b/ember-primitives/src/components/disclosure-manager.gts @@ -0,0 +1,9 @@ +import Component from "@glimmer/component"; + +export class DisclosureManager extends Component<{ + Element: null; + Args: {}; + Blocks: { default: [] }; +}> { + +} From ab41037945cde820954d5d194fef2e830d44fa61 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Sun, 17 Mar 2024 13:33:10 -0400 Subject: [PATCH 2/3] wip --- .../src/components/disclosure-manager.gts | 57 ++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/ember-primitives/src/components/disclosure-manager.gts b/ember-primitives/src/components/disclosure-manager.gts index 2c43f09d..4fcda647 100644 --- a/ember-primitives/src/components/disclosure-manager.gts +++ b/ember-primitives/src/components/disclosure-manager.gts @@ -1,8 +1,61 @@ import Component from "@glimmer/component"; -export class DisclosureManager extends Component<{ +export class DisclosureSingleManager extends Component<{ Element: null; - Args: {}; + Args: { + /** + * Whether the disclosure is disabled. When `true`, all items cannot be expanded or collapsed. + */ + disabled?: boolean; + /** + * When type is `single`, whether the disclosure is collapsible. When `true`, the selected item can be collapsed by clicking its trigger. + */ + collapsible?: boolean; + }; + Blocks: { default: [] }; +}> { + +} + +export class DisclosureMultipleManager extends Component<{ + Element: null; + Args: { + /** + * Whether the disclosure is disabled. When `true`, all items cannot be expanded or collapsed. + */ + disabled?: boolean; + /** + * The currently selected values. To be used in a controlled fashion in conjunction with `onValueChange`. + */ + value: string[]; + /** + * A callback that is called when the selected values change. To be used in a controlled fashion in conjunction with `value`. + */ + onValueChange: (value?: string[] | undefined) => void; + /** + * Not available in a controlled fashion. + */ + defaultValue?: never; + } + | { + /** + * Whether the disclosure is disabled. When `true`, all items cannot be expanded or collapsed. + */ + disabled?: boolean; + /** + * Not available in an uncontrolled fashion. + */ + value?: never; + /** + * Not available in an uncontrolled fashion. + */ + onValueChange?: never; + /** + * The default values of the accordion. To be used in an uncontrolled fashion. + */ + defaultValue?: string[]; + }; + Blocks: { default: [] }; }> { From 0e3f0c14ccfdd1267a8ebe81c49d0739298ea900 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Sun, 17 Mar 2024 13:39:49 -0400 Subject: [PATCH 3/3] More Interface driven dev --- ember-primitives/src/components/disclosure-manager.gts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ember-primitives/src/components/disclosure-manager.gts b/ember-primitives/src/components/disclosure-manager.gts index 4fcda647..749d76cf 100644 --- a/ember-primitives/src/components/disclosure-manager.gts +++ b/ember-primitives/src/components/disclosure-manager.gts @@ -1,6 +1,9 @@ import Component from "@glimmer/component"; -export class DisclosureSingleManager extends Component<{ +/** + * Allow only one disclosure to be open at a time + */ +export class SingleDisclosureManager extends Component<{ Element: null; Args: { /** @@ -17,6 +20,9 @@ export class DisclosureSingleManager extends Component<{ } +/** + * Allow multiple disclosures to be open at a time + */ export class DisclosureMultipleManager extends Component<{ Element: null; Args: {