diff --git a/packages/boxel-ui/addon/package.json b/packages/boxel-ui/addon/package.json index 7db6a5a4e8..80f9fc5929 100644 --- a/packages/boxel-ui/addon/package.json +++ b/packages/boxel-ui/addon/package.json @@ -40,7 +40,6 @@ "@embroider/addon-shim": "^1.8.9", "@floating-ui/dom": "^1.6.3", "@glint/template": "1.3.0", - "@types/pluralize": "^0.0.30", "classnames": "^2.3.2", "dayjs": "^1.11.7", "ember-basic-dropdown": "^8.0.0", @@ -75,6 +74,7 @@ "@rollup/plugin-babel": "^6.0.4", "@tsconfig/ember": "3.0.1", "@types/lodash": "^4.14.182", + "@types/pluralize": "^0.0.30", "@typescript-eslint/eslint-plugin": "^7.16.1", "@typescript-eslint/parser": "^7.16.1", "babel-plugin-ember-template-compilation": "^2.2.1", diff --git a/packages/boxel-ui/addon/src/components.ts b/packages/boxel-ui/addon/src/components.ts index 572bb27dec..234ed6e9a0 100644 --- a/packages/boxel-ui/addon/src/components.ts +++ b/packages/boxel-ui/addon/src/components.ts @@ -33,6 +33,9 @@ import Menu from './components/menu/index.gts'; import BoxelMessage from './components/message/index.gts'; import Message from './components/message/index.gts'; import Modal from './components/modal/index.gts'; +import BoxelMultiSelect, { + BoxelMultiSelectBasic, +} from './components/multi-select/index.gts'; import Pill from './components/pill/index.gts'; import ProgressBar from './components/progress-bar/index.gts'; import RadioInput from './components/radio-input/index.gts'; @@ -61,6 +64,8 @@ export { BoxelInputValidationState, BoxelInputValidationStates, BoxelMessage, + BoxelMultiSelect, + BoxelMultiSelectBasic, BoxelSelect, Button, CardContainer, diff --git a/packages/boxel-ui/addon/src/components/multi-select/index.gts b/packages/boxel-ui/addon/src/components/multi-select/index.gts index ba8290f9c7..526a916274 100644 --- a/packages/boxel-ui/addon/src/components/multi-select/index.gts +++ b/packages/boxel-ui/addon/src/components/multi-select/index.gts @@ -1,6 +1,9 @@ import Component from '@glimmer/component'; import type { ComponentLike } from '@glint/template'; -import type { PowerSelectArgs } from 'ember-power-select/components/power-select'; +import type { + PowerSelectArgs, + Select, +} from 'ember-power-select/components/power-select'; import BeforeOptions from 'ember-power-select/components/power-select/before-options'; import PowerSelectMultiple from 'ember-power-select/components/power-select-multiple'; @@ -8,10 +11,24 @@ import { BoxelAfterOptionsComponent } from './after-options.gts'; import BoxelSelectedItem, { type SelectedItemSignature, } from './selected-item.gts'; -import BoxelTrigger, { type TriggerComponentSignature } from './trigger.gts'; +import BoxelMultiSelectDefaultTrigger, { + type TriggerComponentSignature, +} from './trigger.gts'; export interface BoxelMultiSelectArgs extends PowerSelectArgs { + ariaLabel?: string; + closeOnSelect?: boolean; + disabled?: boolean; + extra?: any; + matchTriggerWidth?: boolean; + onBlur?: (select: Select, e: Event) => boolean | undefined; + onClose?: (select: Select, e: Event) => boolean | undefined; + onOpen?: (select: Select, e: Event) => boolean | undefined; options: ItemT[]; + placeholder?: string; + renderInPlace?: boolean; + searchEnabled?: boolean; + searchField?: string; selected: ItemT[]; selectedItemComponent?: ComponentLike>; triggerComponent?: ComponentLike>; @@ -37,37 +54,40 @@ export interface Signature { export class BoxelMultiSelectBasic extends Component> { diff --git a/packages/boxel-ui/addon/src/components/multi-select/usage.gts b/packages/boxel-ui/addon/src/components/multi-select/usage.gts index 6443cdfe87..09c53ab9f1 100644 --- a/packages/boxel-ui/addon/src/components/multi-select/usage.gts +++ b/packages/boxel-ui/addon/src/components/multi-select/usage.gts @@ -7,6 +7,7 @@ import { type CSSVariableInfo, cssVariable, } from 'ember-freestyle/decorators/css-variable'; +import type { Select } from 'ember-power-select/components/power-select'; import { includes } from 'lodash'; import pluralize from 'pluralize'; @@ -82,9 +83,6 @@ interface AssigneePillArgs { //Custom component for rendering dropdown items with enhanced design and functionality class AssigneePill extends Component { - get issueText() { - return String(this.args.option.issues); - } +} + +export class BoxelSelectDefaultTrigger extends Component { + +} diff --git a/packages/boxel-ui/addon/src/components/select/usage.gts b/packages/boxel-ui/addon/src/components/select/usage.gts index 245a9a09c3..628677857a 100644 --- a/packages/boxel-ui/addon/src/components/select/usage.gts +++ b/packages/boxel-ui/addon/src/components/select/usage.gts @@ -45,14 +45,6 @@ export default class BoxelSelectUsage extends Component { } } diff --git a/packages/boxel-ui/addon/src/icons/caret-up.gts b/packages/boxel-ui/addon/src/icons/caret-up.gts new file mode 100644 index 0000000000..3045c3fd2d --- /dev/null +++ b/packages/boxel-ui/addon/src/icons/caret-up.gts @@ -0,0 +1,23 @@ +// This file is auto-generated by 'pnpm rebuild:icons' +import type { TemplateOnlyComponent } from '@ember/component/template-only'; + +import type { Signature } from './types.ts'; + +const IconComponent: TemplateOnlyComponent = ; + +// @ts-expect-error this is the only way to set a name on a Template Only Component currently +IconComponent.name = 'CaretUp'; +export default IconComponent; diff --git a/packages/host/app/components/card-pill.gts b/packages/host/app/components/card-pill.gts index 70d4ad7439..eab43cfaed 100644 --- a/packages/host/app/components/card-pill.gts +++ b/packages/host/app/components/card-pill.gts @@ -41,9 +41,9 @@ export default class CardPill extends Component { data-test-autoattached-card={{@isAutoAttachedCard}} ...attributes > - <:icon> + <:iconLeft> - + <:default>
diff --git a/packages/host/app/components/operator-mode/card-schema-editor.gts b/packages/host/app/components/operator-mode/card-schema-editor.gts index 0f8bfd5907..0b102b33db 100644 --- a/packages/host/app/components/operator-mode/card-schema-editor.gts +++ b/packages/host/app/components/operator-mode/card-schema-editor.gts @@ -256,12 +256,12 @@ export default class CardSchemaEditor extends Component { {{on 'click' (fn @goToDefinition codeRef @cardType.localName)}} data-test-card-schema-navigational-button > - <:icon> + <:iconLeft> - + <:default> {{@cardType.displayName}} @@ -342,7 +342,7 @@ export default class CardSchemaEditor extends Component { }} data-test-card-schema-field-navigational-button > - <:icon> + <:iconLeft> {{#if field.isComputed}} { @realmInfo={{this.realm.info moduleUrl}} class='icon' /> - + <:default> {{#let (this.fieldCardDisplayName field.card) diff --git a/packages/host/app/components/operator-mode/create-file-modal.gts b/packages/host/app/components/operator-mode/create-file-modal.gts index 0694baf567..d5f69f43f8 100644 --- a/packages/host/app/components/operator-mode/create-file-modal.gts +++ b/packages/host/app/components/operator-mode/create-file-modal.gts @@ -801,9 +801,9 @@ class SelectedTypePill extends Component {