@cute-widgets/base 20.0.1
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.
- package/CHANGELOG.md +1 -0
- package/LICENSE.md +191 -0
- package/README.md +190 -0
- package/abstract/index.d.ts +327 -0
- package/alert/index.d.ts +68 -0
- package/autocomplete/index.d.ts +442 -0
- package/badge/index.d.ts +26 -0
- package/bottom-sheet/index.d.ts +231 -0
- package/button/index.d.ts +182 -0
- package/button-toggle/index.d.ts +225 -0
- package/card/index.d.ts +163 -0
- package/checkbox/index.d.ts +174 -0
- package/chips/index.d.ts +963 -0
- package/collapse/index.d.ts +97 -0
- package/core/animation/index.d.ts +43 -0
- package/core/datetime/index.d.ts +404 -0
- package/core/directives/index.d.ts +168 -0
- package/core/error/index.d.ts +74 -0
- package/core/index.d.ts +1039 -0
- package/core/interfaces/index.d.ts +114 -0
- package/core/layout/index.d.ts +53 -0
- package/core/line/index.d.ts +37 -0
- package/core/nav/index.d.ts +321 -0
- package/core/observers/index.d.ts +124 -0
- package/core/option/index.d.ts +185 -0
- package/core/pipes/index.d.ts +53 -0
- package/core/ripple/index.d.ts +66 -0
- package/core/testing/index.d.ts +154 -0
- package/core/theming/index.d.ts +118 -0
- package/core/types/index.d.ts +53 -0
- package/core/utils/index.d.ts +129 -0
- package/cute-widgets-base-20.0.1.tgz +0 -0
- package/datepicker/index.d.ts +1817 -0
- package/dialog/index.d.ts +484 -0
- package/divider/index.d.ts +24 -0
- package/expansion/README.md +8 -0
- package/expansion/index.d.ts +308 -0
- package/fesm2022/cute-widgets-base-abstract.mjs +547 -0
- package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-alert.mjs +198 -0
- package/fesm2022/cute-widgets-base-alert.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs +1217 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-badge.mjs +75 -0
- package/fesm2022/cute-widgets-base-badge.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs +416 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs +640 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button.mjs +546 -0
- package/fesm2022/cute-widgets-base-button.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-card.mjs +471 -0
- package/fesm2022/cute-widgets-base-card.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs +390 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-chips.mjs +2360 -0
- package/fesm2022/cute-widgets-base-chips.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-collapse.mjs +259 -0
- package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs +53 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs +568 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs +404 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-error.mjs +105 -0
- package/fesm2022/cute-widgets-base-core-error.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs +74 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-line.mjs +87 -0
- package/fesm2022/cute-widgets-base-core-line.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs +863 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs +304 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-option.mjs +373 -0
- package/fesm2022/cute-widgets-base-core-option.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs +97 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs +172 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs +210 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs +314 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-types.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-types.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs +257 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core.mjs +1600 -0
- package/fesm2022/cute-widgets-base-core.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs +4827 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-dialog.mjs +1046 -0
- package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-divider.mjs +86 -0
- package/fesm2022/cute-widgets-base-divider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-expansion.mjs +623 -0
- package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-form-field.mjs +969 -0
- package/fesm2022/cute-widgets-base-form-field.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs +715 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-icon.mjs +1105 -0
- package/fesm2022/cute-widgets-base-icon.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-input.mjs +726 -0
- package/fesm2022/cute-widgets-base-input.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs +95 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs +166 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout.mjs +250 -0
- package/fesm2022/cute-widgets-base-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-list.mjs +1557 -0
- package/fesm2022/cute-widgets-base-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-menu.mjs +1283 -0
- package/fesm2022/cute-widgets-base-menu.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-navbar.mjs +359 -0
- package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-paginator.mjs +485 -0
- package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-progress.mjs +321 -0
- package/fesm2022/cute-widgets-base-progress.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-radio.mjs +637 -0
- package/fesm2022/cute-widgets-base-radio.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-select.mjs +1208 -0
- package/fesm2022/cute-widgets-base-select.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs +1095 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-slider.mjs +99 -0
- package/fesm2022/cute-widgets-base-slider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs +897 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sort.mjs +639 -0
- package/fesm2022/cute-widgets-base-sort.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-spinner.mjs +154 -0
- package/fesm2022/cute-widgets-base-spinner.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-stepper.mjs +673 -0
- package/fesm2022/cute-widgets-base-stepper.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-table.mjs +1023 -0
- package/fesm2022/cute-widgets-base-table.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tabs.mjs +729 -0
- package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs +965 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs +120 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs +947 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tree.mjs +598 -0
- package/fesm2022/cute-widgets-base-tree.mjs.map +1 -0
- package/fesm2022/cute-widgets-base.mjs +68 -0
- package/fesm2022/cute-widgets-base.mjs.map +1 -0
- package/form-field/index.d.ts +401 -0
- package/grid-list/index.d.ts +361 -0
- package/icon/index.d.ts +477 -0
- package/index.d.ts +3 -0
- package/input/index.d.ts +256 -0
- package/layout/container/index.d.ts +31 -0
- package/layout/index.d.ts +78 -0
- package/layout/stack/index.d.ts +52 -0
- package/list/index.d.ts +659 -0
- package/menu/index.d.ts +497 -0
- package/navbar/index.d.ts +91 -0
- package/package.json +279 -0
- package/paginator/index.d.ts +216 -0
- package/progress/index.d.ts +130 -0
- package/radio/index.d.ts +259 -0
- package/select/index.d.ts +426 -0
- package/sidenav/index.d.ts +369 -0
- package/slider/index.d.ts +48 -0
- package/snack-bar/index.d.ts +374 -0
- package/sort/index.d.ts +334 -0
- package/spinner/index.d.ts +70 -0
- package/stepper/index.d.ts +295 -0
- package/table/index.d.ts +395 -0
- package/tabs/index.d.ts +307 -0
- package/timepicker/index.d.ts +350 -0
- package/toolbar/index.d.ts +36 -0
- package/tooltip/index.d.ts +299 -0
- package/tree/index.d.ts +314 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cute-widgets-base-chips.mjs","sources":["../../../../projects/cute-widgets/base/chips/src/tokens.ts","../../../../projects/cute-widgets/base/chips/src/chip-action.ts","../../../../projects/cute-widgets/base/chips/src/chip.ts","../../../../projects/cute-widgets/base/chips/src/chip.html","../../../../projects/cute-widgets/base/chips/src/chip-edit-input.ts","../../../../projects/cute-widgets/base/chips/src/chip-row.ts","../../../../projects/cute-widgets/base/chips/src/chip-row.html","../../../../projects/cute-widgets/base/chips/src/chip-set.ts","../../../../projects/cute-widgets/base/chips/src/chip-grid.ts","../../../../projects/cute-widgets/base/chips/src/chip-icons.ts","../../../../projects/cute-widgets/base/chips/src/chip-input.ts","../../../../projects/cute-widgets/base/chips/src/chip-option.ts","../../../../projects/cute-widgets/base/chips/src/chip-option.html","../../../../projects/cute-widgets/base/chips/src/chip-listbox.ts","../../../../projects/cute-widgets/base/chips/src/chip-text-control.ts","../../../../projects/cute-widgets/base/chips/src/chips.module.ts","../../../../projects/cute-widgets/base/chips/cute-widgets-base-chips.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ENTER} from '@angular/cdk/keycodes';\r\nimport {InjectionToken} from '@angular/core';\r\n\r\n/** Default options, for the chips module, that can be overridden. */\r\nexport interface CuteChipsDefaultOptions {\r\n /** The list of key codes that will trigger a chipEnd event. */\r\n separatorKeyCodes: readonly number[] | ReadonlySet<number>;\r\n\r\n /** Whether icon indicators should be hidden for single-selection. */\r\n hideSingleSelectionIndicator?: boolean;\r\n\r\n /** Whether the chip input should be interactive while disabled by default. */\r\n inputDisabledInteractive?: boolean;\r\n}\r\n\r\n/** Injection token to be used to override the default options for the chips module. */\r\nexport const CUTE_CHIPS_DEFAULT_OPTIONS = new InjectionToken<CuteChipsDefaultOptions>(\r\n 'cute-chips-default-options',\r\n {\r\n providedIn: 'root',\r\n factory: () => ({\r\n separatorKeyCodes: [ENTER],\r\n }),\r\n },\r\n);\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteChipAvatar`. It serves as\r\n * an alternative token to the actual `CuteChipAvatar` class which could cause unnecessary\r\n * retention of the class and its directive metadata.\r\n */\r\nexport const CUTE_CHIP_AVATAR = new InjectionToken('CuteChipAvatar');\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteChipTrailingIcon`. It serves as\r\n * an alternative token to the actual `CuteChipTrailingIcon` class, which could cause unnecessary\r\n * retention of the class and its directive metadata.\r\n */\r\nexport const CUTE_CHIP_TRAILING_ICON = new InjectionToken('CuteChipTrailingIcon');\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteChipEdit`. It serves as\r\n * alternative token to the actual `CuteChipEdit` class which could cause unnecessary\r\n * retention of the class and its directive metadata.\r\n */\r\nexport const CUTE_CHIP_EDIT = new InjectionToken('CuteChipEdit');\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteChipRemove`. It serves as\r\n * an alternative token to the actual `CuteChipRemove` class, which could cause unnecessary\r\n * retention of the class and its directive metadata.\r\n */\r\nexport const CUTE_CHIP_REMOVE = new InjectionToken('CuteChipRemove');\r\n\r\n/**\r\n * Injection token used to avoid a circular dependency between the `CuteChip` and `CuteChipAction`.\r\n */\r\nexport const CUTE_CHIP = new InjectionToken('CuteChip');\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n booleanAttribute,\r\n numberAttribute, inject,\r\n} from '@angular/core';\r\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\r\nimport {CUTE_CHIP} from './tokens';\r\n\r\n/**\r\n * Section within a chip.\r\n * @docs-private\r\n */\r\n@Directive({\r\n selector: '[cuteChipAction]',\r\n host: {\r\n 'class': 'cute-chip__action cute-chip-action',\r\n '[class.cute-chip__action--primary]': '_isPrimary',\r\n '[class.cute-chip__action--presentational]': '!isInteractive',\r\n '[class.cute-chip__action--secondary]': '!_isPrimary',\r\n '[class.cute-chip__action--trailing]': '!_isPrimary && !_isLeading',\r\n '[attr.tabindex]': '_getTabindex()',\r\n '[attr.disabled]': '_getDisabledAttribute()',\r\n '[attr.aria-disabled]': 'disabled',\r\n '(click)': '_handleClick($event)',\r\n '(keydown)': '_handleKeydown($event)',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteChipAction {\r\n _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n protected _parentChip = inject<{\r\n _handlePrimaryActionInteraction(): void;\r\n remove(): void;\r\n disabled: boolean;\r\n _edit(): void;\r\n _isEditing?: boolean;\r\n }>(CUTE_CHIP);\r\n\r\n /** Whether the action is interactive. */\r\n @Input() isInteractive = true;\r\n\r\n /** Whether this is the primary action in the chip. */\r\n _isPrimary = true;\r\n\r\n /** Whether this is the leading action in the chip. */\r\n _isLeading = false; // TODO(adolgachev): consolidate usage to secondary css class\r\n\r\n /** Whether the action is disabled. */\r\n @Input({transform: booleanAttribute})\r\n get disabled(): boolean { return this._disabled || this._parentChip.disabled; }\r\n set disabled(value: boolean) { this._disabled = value; }\r\n private _disabled = false;\r\n\r\n /** Tab index of the action. */\r\n @Input({\r\n transform: (value: unknown) => (value == null ? -1 : numberAttribute(value)),\r\n })\r\n tabIndex: number = -1;\r\n\r\n /**\r\n * Private API to allow focusing this chip when it is disabled.\r\n */\r\n @Input()\r\n _allowFocusWhenDisabled = false;\r\n\r\n /**\r\n * Determine the value of the disabled attribute for this chip action.\r\n */\r\n protected _getDisabledAttribute(): string | null {\r\n // When this chip action is disabled and focusing disabled chips is not permitted, return empty\r\n // string to indicate that disabled attribute should be included.\r\n return this.disabled && !this._allowFocusWhenDisabled ? '' : null;\r\n }\r\n\r\n /**\r\n * Determine the value of the tabindex attribute for this chip action.\r\n */\r\n protected _getTabindex(): string | null {\r\n return (this.disabled && !this._allowFocusWhenDisabled) || !this.isInteractive\r\n ? null\r\n : this.tabIndex.toString();\r\n }\r\n\r\n constructor(...args: unknown[]);\r\n\r\n constructor() {\r\n if (this._elementRef.nativeElement.nodeName === 'BUTTON') {\r\n this._elementRef.nativeElement.setAttribute('type', 'button');\r\n }\r\n }\r\n\r\n focus() {\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n protected _handleClick(event: MouseEvent) {\r\n if (!this.disabled && this.isInteractive && this._isPrimary) {\r\n event.preventDefault();\r\n this._parentChip._handlePrimaryActionInteraction();\r\n }\r\n }\r\n\r\n protected _handleKeydown(event: KeyboardEvent) {\r\n if (\r\n (event.keyCode === ENTER || event.keyCode === SPACE) &&\r\n !this.disabled &&\r\n this.isInteractive &&\r\n this._isPrimary &&\r\n !this._parentChip._isEditing\r\n ) {\r\n event.preventDefault();\r\n this._parentChip._handlePrimaryActionInteraction();\r\n }\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n AfterViewInit,\r\n AfterContentInit,\r\n Component,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Output,\r\n ViewEncapsulation,\r\n ViewChild,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n DoCheck,\r\n inject,\r\n booleanAttribute,\r\n ANIMATION_MODULE_TYPE,\r\n Injector,\r\n DOCUMENT, HOST_TAG_NAME\r\n} from '@angular/core';\r\n\r\nimport {BACKSPACE, DELETE} from '@angular/cdk/keycodes';\r\nimport {merge, Subject, Subscription} from 'rxjs';\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {CuteChipAvatar, CuteChipTrailingIcon, CuteChipRemove, CuteChipEdit} from './chip-icons';\r\nimport {CuteChipAction} from './chip-action';\r\nimport {CUTE_CHIP, CUTE_CHIP_AVATAR, CUTE_CHIP_EDIT, CUTE_CHIP_REMOVE, CUTE_CHIP_TRAILING_ICON} from './tokens';\r\n\r\nlet uid = 0;\r\n\r\n/** Represents an event fired on an individual `mat-chip`. */\r\nexport interface CuteChipEvent {\r\n /** The chip the event was fired on. */\r\n chip: CuteChip;\r\n}\r\n\r\n/**\r\n * A Chip base component used inside the `CuteChipSet` component.\r\n * Extended by `CuteChipOption` and `CuteChipRow` for different interaction patterns.\r\n */\r\n@Component({\r\n selector: 'cute-basic-chip, [cute-basic-chip], cute-chip, [cute-chip]',\r\n exportAs: 'cuteChip',\r\n templateUrl: './chip.html',\r\n styleUrl: './chip.scss',\r\n host: {\r\n 'class': 'cute-chip',\r\n '[class.btn]': '_isStandardStaticChip',\r\n '[class.btn-sm]': '_isStandardStaticChip',\r\n '[class.border]': '_isStandardStaticChip',\r\n '[class.rounded-pill]': '_isStandardStaticChip',\r\n '[class.cute-static-chip]': '_isStandardStaticChip',\r\n /*\r\n '[class]': '\"text-bg-\"+color||\"tertiary\"',\r\n '[class.mdc-evolution-chip]': '!_isBasicChip',\r\n '[class.mdc-evolution-chip--disabled]': 'disabled',\r\n '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\r\n '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon',\r\n '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\r\n '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\r\n */\r\n '[class.cute-chip-with-avatar]': 'leadingIcon',\r\n '[class.cute-chip-highlighted]': 'highlighted',\r\n '[class.disabled]': '_isStandardStaticChip && disabled',\r\n '[class.cute-basic-chip]': '_isBasicChip',\r\n '[class.cute-standard-chip]': '!_isBasicChip',\r\n '[class.cute-chip-with-trailing-icon]': '_hasTrailingIcon()',\r\n '[class._cute-animation-noopable]': '_animationsDisabled',\r\n '[id]': 'id',\r\n '[attr.role]': 'role',\r\n '[attr.tabindex]': '_getTabIndex()',\r\n '[attr.aria-label]': 'ariaLabel',\r\n '(keydown)': '_handleKeydown($event)',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: CUTE_CHIP, useExisting: CuteChip }],\r\n imports: [CuteChipAction]\r\n})\r\nexport class CuteChip extends CuteFocusableControl implements OnInit, AfterViewInit, AfterContentInit, DoCheck, OnDestroy {\r\n public override _changeDetectorRef = inject(ChangeDetectorRef);\r\n protected _ngZone = inject(NgZone);\r\n private readonly _tagName = inject(HOST_TAG_NAME);\r\n //private _globalRippleOptions = inject<RippleGlobalOptions>(MAT_RIPPLE_GLOBAL_OPTIONS, {\r\n // optional: true,\r\n //});\r\n protected _document = inject(DOCUMENT);\r\n\r\n /** Emits when the chip is focused. */\r\n readonly _onFocus = new Subject<CuteChipEvent>();\r\n\r\n /** Emits when the chip is blurred. */\r\n readonly _onBlur = new Subject<CuteChipEvent>();\r\n\r\n /** Whether this chip is a basic (unstyled) chip. */\r\n protected _isBasicChip: boolean | undefined;\r\n\r\n protected _isStandardStaticChip: boolean | undefined;\r\n\r\n /** Whether the chip has focus. */\r\n private _hasFocusInternal = false;\r\n\r\n /** Whether moving focus into the chip is pending. */\r\n private _pendingFocus: boolean | undefined;\r\n\r\n /** Subscription to changes in the chip's actions. */\r\n private _actionChanges: Subscription | undefined;\r\n\r\n /** Whether animations for the chip are enabled. */\r\n protected _animationsDisabled: boolean;\r\n\r\n /** All avatars present in the chip. */\r\n @ContentChildren(CUTE_CHIP_AVATAR, {descendants: true})\r\n protected _allLeadingIcons!: QueryList<CuteChipAvatar>;\r\n\r\n /** All trailing icons present in the chip. */\r\n @ContentChildren(CUTE_CHIP_TRAILING_ICON, {descendants: true})\r\n protected _allTrailingIcons!: QueryList<CuteChipTrailingIcon>;\r\n\r\n /** All edit icons present in the chip. */\r\n @ContentChildren(CUTE_CHIP_EDIT, {descendants: true})\r\n protected _allEditIcons!: QueryList<CuteChipEdit>;\r\n\r\n /** All remove icons present in the chip. */\r\n @ContentChildren(CUTE_CHIP_REMOVE, {descendants: true})\r\n protected _allRemoveIcons!: QueryList<CuteChipRemove>;\r\n\r\n _hasFocus() {\r\n return this._hasFocusInternal;\r\n }\r\n\r\n /** A unique id for the chip. If none is supplied, it will be auto-generated. */\r\n protected override generateId(): string {\r\n return `cute-chip-${uid++}`;\r\n }\r\n\r\n /** The `id` of a span that contains this chip's aria description. */\r\n protected _ariaDescriptionId = `${this.id}-aria-description`;\r\n\r\n /** Whether the chip list is disabled. */\r\n _chipListDisabled: boolean = false;\r\n\r\n /** Whether the chip was focused when it was removed. */\r\n _hadFocusOnRemove = false;\r\n\r\n private _textElement!: HTMLElement;\r\n\r\n /**\r\n * The value of the chip. Defaults to the content inside\r\n * the `cute-chip-action-label` element.\r\n */\r\n @Input()\r\n get value(): any {\r\n return this._value !== undefined ? this._value : this._textElement?.textContent!.trim();\r\n }\r\n set value(value: any) {\r\n this._value = value;\r\n }\r\n protected _value: any;\r\n\r\n /**\r\n * Determines whether the chip displays the remove styling and emits (removed) events.\r\n */\r\n @Input({transform: booleanAttribute})\r\n removable: boolean = true;\r\n\r\n /**\r\n * Colors the chip for emphasis as if it were selected.\r\n */\r\n @Input({transform: booleanAttribute})\r\n highlighted: boolean = false;\r\n\r\n /** Whether the ripple effect is disabled or not. */\r\n @Input({transform: booleanAttribute})\r\n disableRipple: boolean = false;\r\n\r\n /** Emitted when a chip is to be removed. */\r\n @Output() readonly removed: EventEmitter<CuteChipEvent> = new EventEmitter<CuteChipEvent>();\r\n\r\n /** Emitted when the chip is destroyed. */\r\n @Output() readonly destroyed: EventEmitter<CuteChipEvent> = new EventEmitter<CuteChipEvent>();\r\n\r\n /** The unstyled chip selector for this component. */\r\n protected basicChipAttrName = 'cute-basic-chip';\r\n\r\n /** The chip's leading icon. */\r\n @ContentChild(CUTE_CHIP_AVATAR) leadingIcon: CuteChipAvatar | undefined;\r\n\r\n /** The chip's leading edit icon. */\r\n @ContentChild(CUTE_CHIP_EDIT) editIcon: CuteChipEdit | undefined;\r\n\r\n /** The chip's trailing icon. */\r\n @ContentChild(CUTE_CHIP_TRAILING_ICON) trailingIcon: CuteChipTrailingIcon | undefined;\r\n\r\n /** The chip's trailing remove icon. */\r\n @ContentChild(CUTE_CHIP_REMOVE) removeIcon: CuteChipRemove | undefined;\r\n\r\n /** Action receiving the primary set of user interactions. */\r\n @ViewChild(CuteChipAction) primaryAction: CuteChipAction | undefined;\r\n\r\n /**\r\n * Handles the lazy creation of the CuteChip ripple.\r\n * Used to improve initial load time of large applications.\r\n */\r\n //_rippleLoader: MatRippleLoader = inject(MatRippleLoader);\r\n\r\n override getDisabledState(): boolean {\r\n return super.getDisabledState() || this._chipListDisabled;\r\n }\r\n\r\n private _injector = inject(Injector);\r\n\r\n constructor(...args: unknown[]);\r\n\r\n constructor() {\r\n super();\r\n const animationMode = inject(ANIMATION_MODULE_TYPE, {optional: true});\r\n this._animationsDisabled = animationMode === 'NoopAnimations';\r\n\r\n const tabIndex = this.getAttribute(\"tabindex\");\r\n if (tabIndex) {\r\n this.tabIndex = parseInt(tabIndex) ?? -1;\r\n } else {\r\n this.tabIndex = undefined;\r\n }\r\n this._monitorFocus();\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n // This check needs to happen in `ngOnInit` so the overridden value of\r\n // `basicChipAttrName` coming from base classes can be picked up.\r\n const element = this._elementRef.nativeElement;\r\n this._isBasicChip =\r\n element.hasAttribute(this.basicChipAttrName) ||\r\n element.tagName.toLowerCase() === this.basicChipAttrName;\r\n\r\n this._isStandardStaticChip = !this._isBasicChip &&\r\n (element.tagName.toLowerCase() === \"cute-chip\" ||\r\n element.tagName.toLowerCase() === \"cute-chip-row\");\r\n\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n this._textElement = this._elementRef.nativeElement.querySelector('.cute-chip-action-label')!;\r\n\r\n if (this._pendingFocus) {\r\n this._pendingFocus = false;\r\n this.focus();\r\n }\r\n }\r\n\r\n override ngAfterContentInit(): void {\r\n super.ngAfterContentInit();\r\n // Since the styling depends on the presence of some\r\n // actions, we have to mark for check on changes.\r\n this._actionChanges = merge(\r\n this._allLeadingIcons?.changes,\r\n this._allTrailingIcons?.changes,\r\n this._allEditIcons?.changes,\r\n this._allRemoveIcons?.changes,\r\n ).subscribe(() => this._changeDetectorRef.markForCheck());\r\n }\r\n\r\n ngDoCheck(): void {\r\n //this._rippleLoader.setDisabled(this._elementRef.nativeElement, this._isRippleDisabled());\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._actionChanges?.unsubscribe();\r\n this.destroyed.emit({chip: this});\r\n this.destroyed.complete();\r\n }\r\n\r\n /**\r\n * Allows for programmatic removal of the chip.\r\n *\r\n * Informs any listeners of the removal request. Does not remove the chip from the DOM.\r\n */\r\n remove(): void {\r\n if (this.removable) {\r\n this._hadFocusOnRemove = this._hasFocus();\r\n this.removed.emit({chip: this});\r\n }\r\n }\r\n\r\n /** Whether the ripple should be disabled. */\r\n /*\r\n _isRippleDisabled(): boolean {\r\n return (\r\n this.disabled ||\r\n this.disableRipple ||\r\n this._animationsDisabled ||\r\n this._isBasicChip ||\r\n !!this._globalRippleOptions?.disabled\r\n );\r\n }\r\n */\r\n\r\n /** Returns whether the chip has a trailing icon. */\r\n _hasTrailingIcon() {\r\n return !!(this.trailingIcon || this.removeIcon);\r\n }\r\n\r\n /** Handles keyboard events on the chip. */\r\n _handleKeydown(event: KeyboardEvent) {\r\n // Ignore backspace events where the user is holding down the key\r\n // so that we don't accidentally remove too many chips.\r\n if ((event.keyCode === BACKSPACE && !event.repeat) || event.keyCode === DELETE) {\r\n event.preventDefault();\r\n this.remove();\r\n }\r\n }\r\n\r\n /** Allows for programmatic focusing of the chip. */\r\n override focus(): void {\r\n super.focus();\r\n\r\n if (!this.disabled) {\r\n // If `focus` is called before `ngAfterViewInit`, we won't have access to the primary action.\r\n // This can happen if the consumer tries to focus a chip immediately after it is added.\r\n // Queue the method to be called again on init.\r\n if (this.primaryAction) {\r\n this.primaryAction.focus();\r\n } else {\r\n this._pendingFocus = true;\r\n }\r\n }\r\n }\r\n\r\n /** Gets the action that contains a specific target node. */\r\n _getSourceAction(target: Node): CuteChipAction | undefined {\r\n return this._getActions().find(action => {\r\n const element = action._elementRef.nativeElement;\r\n return element === target || element.contains(target);\r\n });\r\n }\r\n\r\n /** Gets all the actions within the chip. */\r\n _getActions(): CuteChipAction[] {\r\n const result: CuteChipAction[] = [];\r\n\r\n if (this.editIcon) {\r\n result.push(this.editIcon);\r\n }\r\n\r\n if (this.primaryAction) {\r\n result.push(this.primaryAction);\r\n }\r\n\r\n if (this.removeIcon) {\r\n result.push(this.removeIcon);\r\n }\r\n\r\n if (this.trailingIcon) {\r\n result.push(this.trailingIcon);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /** Handles interactions with the primary action of the chip. */\r\n protected _handlePrimaryActionInteraction() {\r\n // Empty here, but is overwritten in child classes.\r\n }\r\n\r\n /** Handles interactions with the edit action of the chip. */\r\n _edit(event: Event) {\r\n // Empty here, but is overwritten in child classes.\r\n }\r\n\r\n /** Gets the tabindex of the chip. */\r\n protected _getTabIndex() {\r\n if (!this.role) {\r\n return null;\r\n }\r\n return this.disabled ? -1 : this.tabIndex;\r\n }\r\n\r\n /** Starts the focus monitoring process on the chip. */\r\n private _monitorFocus() {\r\n this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\r\n const hasFocus = origin !== null;\r\n\r\n if (hasFocus !== this._hasFocusInternal) {\r\n this._hasFocusInternal = hasFocus;\r\n\r\n if (hasFocus) {\r\n this._onFocus.next({chip: this});\r\n } else {\r\n // When animations are enabled, Angular may end up removing the chip from the DOM a little\r\n // earlier than usual, causing it to be blurred and throwing off the logic in the chip list\r\n // that moves focus not the next item. To work around the issue, we defer marking the chip\r\n // as not focused until after the next render.\r\n this.markForCheck();\r\n setTimeout(() => this._ngZone.run(() => this._onBlur.next({chip: this})));\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","<span class=\"cute-chip-focus-overlay\"></span>\r\n\r\n<span class=\"cute-chip__cell cute-chip__cell--primary\">\r\n <span cuteChipAction [isInteractive]=\"false\">\r\n @if (leadingIcon) {\r\n <span class=\"cute-chip__graphic cute-chip-graphic\">\r\n <ng-content select=\"cute-avatar, cute-chip-avatar, [cuteChipAvatar]\"></ng-content>\r\n </span>\r\n }\r\n <span class=\"cute-chip__text-label cute-chip-action-label\">\r\n <ng-content></ng-content>\r\n <span class=\"cute-chip-primary-focus-indicator cute-focus-indicator\"></span>\r\n </span>\r\n </span>\r\n</span>\r\n\r\n@if (_hasTrailingIcon()) {\r\n <span class=\"cute-chip__cell cute-chip__cell--trailing\">\r\n <ng-content select=\"cute-chip-trailing-icon,[cuteChipRemove],[cuteChipTrailingIcon]\"></ng-content>\r\n </span>\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, ElementRef, inject, Inject, DOCUMENT} from '@angular/core';\r\n\r\n\r\n/**\r\n * A directive that makes a <span> editable and exposes functions to modify and retrieve the\r\n * element's contents.\r\n */\r\n@Directive({\r\n selector: 'span[cuteChipEditInput]',\r\n host: {\r\n 'class': 'cute-chip-edit-input',\r\n 'role': 'textbox',\r\n 'tabindex': '-1',\r\n 'contenteditable': 'true',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteChipEditInput {\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _document = inject(DOCUMENT);\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {}\r\n\r\n initialize(initialValue: string) {\r\n this.getNativeElement().focus();\r\n this.setValue(initialValue);\r\n }\r\n\r\n getNativeElement(): HTMLElement {\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n setValue(value: string) {\r\n this.getNativeElement().textContent = value;\r\n this._moveCursorToEndOfInput();\r\n }\r\n\r\n getValue(): string {\r\n return this.getNativeElement().textContent || '';\r\n }\r\n\r\n private _moveCursorToEndOfInput() {\r\n const range = this._document.createRange();\r\n range.selectNodeContents(this.getNativeElement());\r\n range.collapse(false);\r\n const sel = window.getSelection()!;\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ENTER} from '@angular/cdk/keycodes';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n ANIMATION_MODULE_TYPE,\r\n} from '@angular/core';\r\nimport {FocusMonitor} from '@angular/cdk/a11y';\r\nimport {CuteChip, CuteChipEvent} from './chip';\r\nimport {CuteChipEditInput} from './chip-edit-input';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {CUTE_CHIP} from './tokens';\r\nimport {CuteChipAction} from './chip-action';\r\n\r\n/** Represents an event fired on an individual `cute-chip` when it is edited. */\r\nexport interface CuteChipEditedEvent extends CuteChipEvent {\r\n /** The final edit value. */\r\n value: string;\r\n}\r\n\r\n/**\r\n * An extension of the CuteChip component used with CuteChipGrid and\r\n * the cuteChipInputFor directive.\r\n */\r\n@Component({\r\n selector: 'cute-chip-row, [cute-chip-row], cute-basic-chip-row, [cute-basic-chip-row]',\r\n templateUrl: './chip-row.html',\r\n styleUrl: './chip.scss',\r\n host: {\r\n 'class': 'cute-chip-row',\r\n '[class.cute-chip-with-avatar]': 'leadingIcon',\r\n '[class.cute-chip-disabled]': 'disabled',\r\n '[class.cute-chip-editing]': '_isEditing',\r\n '[class.cute-chip-editable]': 'editable',\r\n '[class.cute-chip-highlighted]': 'highlighted',\r\n '[class.cute-chip-with-trailing-icon]': '_hasTrailingIcon()',\r\n /*\r\n '[class.mdc-evolution-chip--disabled]': 'disabled',\r\n '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\r\n '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon',\r\n '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\r\n '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\r\n */\r\n '[id]': 'id',\r\n // Has to have a negative tabindex to capture\r\n // focus and redirect it to the primary action.\r\n '[attr.tabindex]': 'disabled ? null : -1',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-description]': 'null',\r\n '[attr.role]': 'role',\r\n '(focus)': '_handleFocus($event)',\r\n '(dblclick)': '_handleDoubleclick($event)',\r\n },\r\n providers: [\r\n { provide: CuteChip, useExisting: CuteChipRow },\r\n { provide: CUTE_CHIP, useExisting: CuteChipRow },\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CuteChipAction, CuteChipEditInput]\r\n})\r\nexport class CuteChipRow extends CuteChip implements AfterViewInit {\r\n protected override basicChipAttrName = 'cute-basic-chip-row';\r\n\r\n /**\r\n * The editing action has to be triggered in a timeout. While we're waiting on it, a blur\r\n * event might occur which will interrupt the editing. This flag is used to avoid interruptions\r\n * while the editing action is being initialized.\r\n */\r\n private _editStartPending = false;\r\n\r\n @Input() editable: boolean = false;\r\n\r\n /** Emitted when the chip is edited. */\r\n @Output() readonly edited: EventEmitter<CuteChipEditedEvent> =\r\n new EventEmitter<CuteChipEditedEvent>();\r\n\r\n /** The default chip edit input that is used if none is projected into this chip row. */\r\n @ViewChild(CuteChipEditInput) defaultEditInput?: CuteChipEditInput;\r\n\r\n /** The projected chip edit input. */\r\n @ContentChild(CuteChipEditInput) contentEditInput?: CuteChipEditInput;\r\n\r\n _isEditing = false;\r\n\r\n constructor(...args: unknown[]);\r\n\r\n constructor() {\r\n super();\r\n\r\n this.role = 'row';\r\n this._onBlur.pipe(takeUntil(this.destroyed)).subscribe(() => {\r\n if (this._isEditing && !this._editStartPending) {\r\n this._onEditFinish();\r\n }\r\n });\r\n }\r\n\r\n override _hasTrailingIcon() {\r\n // The trailing icon is hidden while editing.\r\n return !this._isEditing && super._hasTrailingIcon();\r\n }\r\n\r\n /** Sends focus to the first gridcell when the user clicks anywhere inside the chip. */\r\n _handleFocus() {\r\n if (!this._isEditing && !this.disabled) {\r\n this.focus();\r\n }\r\n }\r\n\r\n override _handleKeydown(event: KeyboardEvent): void {\r\n if (event.keyCode === ENTER && !this.disabled) {\r\n if (this._isEditing) {\r\n event.preventDefault();\r\n this._onEditFinish();\r\n } else if (this.editable) {\r\n this._startEditing(event);\r\n }\r\n } else if (this._isEditing) {\r\n // Stop the event from reaching the chip set in order to avoid navigating.\r\n event.stopPropagation();\r\n } else {\r\n super._handleKeydown(event);\r\n }\r\n }\r\n\r\n _handleDoubleclick(event: MouseEvent) {\r\n if (!this.disabled && this.editable) {\r\n this._startEditing(event);\r\n }\r\n }\r\n\r\n private _startEditing(event: Event) {\r\n if (\r\n !this.primaryAction ||\r\n (this.removeIcon && this._getSourceAction(event.target as Node) === this.removeIcon)\r\n ) {\r\n return;\r\n }\r\n\r\n // The value depends on the DOM so we need to extract it before we flip the flag.\r\n const value = this.value;\r\n\r\n this._isEditing = this._editStartPending = true;\r\n\r\n // Starting the editing sequence below depends on the edit input\r\n // query resolving on time. Trigger a synchronous change detection to\r\n // ensure that it happens by the time we hit the timeout below.\r\n this._changeDetectorRef.detectChanges();\r\n\r\n // TODO(crisbeto): this timeout shouldn't be necessary given the `detectChange` call above.\r\n // Defer initializing the input so it has time to be added to the DOM.\r\n setTimeout(() => {\r\n this._getEditInput().initialize(value);\r\n this._editStartPending = false;\r\n });\r\n }\r\n\r\n private _onEditFinish() {\r\n this._isEditing = this._editStartPending = false;\r\n this.edited.emit({chip: this, value: this._getEditInput().getValue()});\r\n\r\n // If the edit input is still focused or focus was returned to the body after it was destroyed,\r\n // return focus to the chip contents.\r\n if (\r\n this._document.activeElement === this._getEditInput().getNativeElement() ||\r\n this._document.activeElement === this._document.body\r\n ) {\r\n this.primaryAction?.focus();\r\n }\r\n }\r\n /*\r\n override _isRippleDisabled(): boolean {\r\n return super._isRippleDisabled() || this._isEditing;\r\n }\r\n */\r\n\r\n /**\r\n * Gets the projected chip edit input, or the default input if none is projected in. One of these\r\n * two values is guaranteed to be defined.\r\n */\r\n private _getEditInput(): CuteChipEditInput {\r\n return this.contentEditInput || this.defaultEditInput!;\r\n }\r\n}\r\n","@if (!_isEditing) {\r\n <span class=\"cute-chip-focus-overlay\"></span>\r\n}\r\n\r\n<span class=\"cute-chip__cell cute-chip__cell--primary\">\r\n <span class=\"cute-chip-action\" role=\"gridcell\"\r\n cuteChipAction\r\n [tabIndex]=\"tabIndex\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-describedby]=\"_ariaDescriptionId\">\r\n @if (leadingIcon) {\r\n <span class=\"cute-chip-graphic\">\r\n <ng-content select=\"cute-avatar, cute-chip-avatar, [cuteChipAvatar]\"></ng-content>\r\n </span>\r\n }\r\n\r\n <span class=\"cute-chip__text-label cute-chip-action-label\">\r\n @if (_isEditing) {\r\n @if (contentEditInput) {\r\n <ng-content select=\"[cuteChipEditInput]\"></ng-content>\r\n } @else {\r\n <span cuteChipEditInput></span>\r\n }\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n\r\n <span class=\"cute-chip-primary-focus-indicator cute-focus-indicator\" aria-hidden=\"true\"></span>\r\n </span>\r\n </span>\r\n</span>\r\n\r\n@if (_hasTrailingIcon()) {\r\n <span\r\n class=\"cute-chip__cell cute-chip__cell--trailing\"\r\n role=\"gridcell\">\r\n <ng-content select=\"cute-chip-trailing-icon,[cuteChipRemove],[cuteChipTrailingIcon]\"></ng-content>\r\n </span>\r\n}\r\n\r\n<span class=\"visually-hidden\" [id]=\"_ariaDescriptionId\">{{ariaDescription}}</span>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {FocusKeyManager} from '@angular/cdk/a11y';\r\nimport {Directionality} from '@angular/cdk/bidi';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n QueryList,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n numberAttribute, inject,\r\n} from '@angular/core';\r\nimport {EMPTY, merge, Observable, Subject} from 'rxjs';\r\nimport {startWith, switchMap, takeUntil} from 'rxjs/operators';\r\nimport {CuteChip, CuteChipEvent} from './chip';\r\nimport {CuteChipAction} from './chip-action';\r\n\r\n/**\r\n * Basic container component for the `CuteChip` component.\r\n * Extended by `CuteChipListbox` and `CuteChipGrid` for different interaction patterns.\r\n */\r\n@Component({\r\n selector: 'cute-chip-set',\r\n template: `\r\n <div class=\"cute-chip-set__chips\" role=\"presentation\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n styleUrl: './chip-set.scss',\r\n host: {\r\n 'class': 'cute-chip-set',\r\n '(keydown)': '_handleKeydown($event)',\r\n '[attr.role]': 'role',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class CuteChipSet implements AfterViewInit, OnDestroy {\r\n protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n protected _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _dir = inject(Directionality, {optional: true});\r\n\r\n /** Index of the last destroyed chip that had focus. */\r\n private _lastDestroyedFocusedChipIndex: number | null = null;\r\n\r\n /** Used to manage focus within the chip list. */\r\n protected _keyManager: FocusKeyManager<CuteChipAction> | undefined;\r\n\r\n /** Subject that emits when the component has been destroyed. */\r\n protected _destroyed = new Subject<void>();\r\n\r\n /** Role to use if it hasn't been overwritten by the user. */\r\n protected _defaultRole = 'presentation';\r\n\r\n /** Combined stream of all the child chips' focus events. */\r\n get chipFocusChanges(): Observable<CuteChipEvent> {\r\n return this._getChipStream(chip => chip._onFocus);\r\n }\r\n\r\n /** Combined stream of all the child chips' destroy events. */\r\n get chipDestroyedChanges(): Observable<CuteChipEvent> {\r\n return this._getChipStream(chip => chip.destroyed);\r\n }\r\n\r\n /** Combined stream of all the child chips' remove events. */\r\n get chipRemovedChanges(): Observable<CuteChipEvent> {\r\n return this._getChipStream(chip => chip.removed);\r\n }\r\n\r\n /** Whether the chip set is disabled. */\r\n @Input({transform: booleanAttribute})\r\n get disabled(): boolean { return this._disabled; }\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n this._syncChipsState();\r\n }\r\n protected _disabled: boolean = false;\r\n\r\n /** Whether the chip list contains chips or not. */\r\n get empty(): boolean {\r\n return !this._chips || this._chips.length === 0;\r\n }\r\n\r\n /** The ARIA role applied to the chip set. */\r\n @Input()\r\n get role(): string | null {\r\n if (this._explicitRole) {\r\n return this._explicitRole;\r\n }\r\n\r\n return this.empty ? null : this._defaultRole;\r\n }\r\n set role(value: string | null) {\r\n this._explicitRole = value;\r\n }\r\n private _explicitRole: string | null = null;\r\n\r\n /** Tabindex of the chip set. */\r\n @Input({\r\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\r\n })\r\n tabIndex: number = 0;\r\n\r\n /** Whether any of the chips inside this chip-set has focus. */\r\n get focused(): boolean {\r\n return this._hasFocusedChip();\r\n }\r\n\r\n /** The chips that are part of this chip set. */\r\n @ContentChildren(CuteChip, {\r\n // We need to use `descendants: true`, because Ivy will no longer match\r\n // indirect descendants if it's left as false.\r\n descendants: true,\r\n })\r\n _chips: QueryList<CuteChip> | undefined;\r\n\r\n /** Flat list of all the actions contained within the chips. */\r\n _chipActions = new QueryList<CuteChipAction>();\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {}\r\n\r\n ngAfterViewInit() {\r\n this._setUpFocusManagement();\r\n this._trackChipSetChanges();\r\n this._trackDestroyedFocusedChip();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._keyManager?.destroy();\r\n this._chipActions.destroy();\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n }\r\n\r\n /** Checks whether any of the chips is focused. */\r\n protected _hasFocusedChip() {\r\n return (this._chips && this._chips.some(chip => chip._hasFocus())) || false;\r\n }\r\n\r\n /** Syncs the chip-set's state with the individual chips. */\r\n protected _syncChipsState() {\r\n if (this._chips) {\r\n this._chips.forEach(chip => {\r\n chip._chipListDisabled = this._disabled;\r\n chip._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n /** The dummy method for subclasses to override. Base chip set cannot be focused. */\r\n focus() {}\r\n\r\n /** Handles keyboard events on the chip set. */\r\n protected _handleKeydown(event: KeyboardEvent) {\r\n if (this._originatesFromChip(event)) {\r\n this._keyManager?.onKeydown(event);\r\n }\r\n }\r\n\r\n /**\r\n * Utility to ensure all indexes are valid.\r\n *\r\n * @param index The index to be checked.\r\n * @returns True if the index is valid for our list of chips.\r\n */\r\n protected _isValidIndex(index: number): boolean {\r\n if (this._chips) {\r\n return index >= 0 && index < this._chips.length;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Removes the `tabindex` from the chip set and resets it back afterward, allowing the\r\n * user to tab out of it. This prevents the set from capturing focus and redirecting\r\n * it back to the first chip, creating a focus trap if its user tries to tab away.\r\n */\r\n protected _allowFocusEscape() {\r\n const previous = this._elementRef.nativeElement.tabIndex;\r\n\r\n if (previous !== -1) {\r\n // Set the tabindex directly on the element, instead of going through\r\n // the data binding, because we aren't guaranteed that change detection\r\n // will run quickly enough to allow focus to escape.\r\n this._elementRef.nativeElement.tabIndex = -1;\r\n\r\n // Note that this needs to be a `setTimeout`, because a `Promise.resolve`\r\n // doesn't allow enough time for the focus to escape.\r\n setTimeout(() => (this._elementRef.nativeElement.tabIndex = previous));\r\n }\r\n }\r\n\r\n /**\r\n * Gets a stream of events from all the chips within the set.\r\n * The stream will automatically incorporate any newly added chips.\r\n */\r\n protected _getChipStream<T, C extends CuteChip = CuteChip>(\r\n mappingFunction: (chip: C) => Observable<T>,\r\n ): Observable<T> {\r\n if (this._chips) {\r\n return this._chips.changes.pipe(\r\n startWith(null),\r\n switchMap(() => merge(...(this._chips as QueryList<C>).map(mappingFunction))),\r\n );\r\n }\r\n return EMPTY;\r\n }\r\n\r\n /** Checks whether an event comes from inside a chip element. */\r\n protected _originatesFromChip(event: Event): boolean {\r\n let currentElement = event.target as HTMLElement | null;\r\n\r\n while (currentElement && currentElement !== this._elementRef.nativeElement) {\r\n if (currentElement.classList.contains('cute-chip')) {\r\n return true;\r\n }\r\n currentElement = currentElement.parentElement;\r\n }\r\n return false;\r\n }\r\n\r\n /** Sets up the chip set's focus management logic. */\r\n private _setUpFocusManagement() {\r\n // Create a flat `QueryList` containing the actions of all the chips.\r\n // This allows us to navigate both within the chip and move to the next/previous\r\n // one using the existing `ListKeyManager`.\r\n this._chips?.changes.pipe(startWith(this._chips)).subscribe((chips: QueryList<CuteChip>) => {\r\n const actions: CuteChipAction[] = [];\r\n chips.forEach(chip => chip._getActions().forEach(action => actions.push(action)));\r\n this._chipActions.reset(actions);\r\n this._chipActions.notifyOnChanges();\r\n });\r\n\r\n this._keyManager = new FocusKeyManager(this._chipActions)\r\n .withVerticalOrientation()\r\n .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr')\r\n .withHomeAndEnd()\r\n .skipPredicate(action => this._skipPredicate(action));\r\n\r\n // Keep the manager active index in sync so that navigation picks\r\n // up from the current chip if the user clicks into the list directly.\r\n this.chipFocusChanges.pipe(takeUntil(this._destroyed)).subscribe(({chip}) => {\r\n const action = chip._getSourceAction(document.activeElement as Element);\r\n\r\n if (action) {\r\n this._keyManager?.updateActiveItem(action);\r\n }\r\n });\r\n\r\n this._dir?.change\r\n .pipe(takeUntil(this._destroyed))\r\n .subscribe(direction => this._keyManager?.withHorizontalOrientation(direction));\r\n }\r\n\r\n /**\r\n * Determines if key manager should avoid putting a given chip action in the tab index. Skip\r\n * non-interactive and disabled actions since the user can't do anything with them.\r\n */\r\n protected _skipPredicate(action: CuteChipAction): boolean {\r\n // Skip chips that the user cannot interact with.\r\n // The `cute-chip-set` does not permit focusing on disabled chips.\r\n return !action.isInteractive || action.disabled;\r\n }\r\n\r\n /** Listens to changes in the chip set and syncs up the state of the individual chips. */\r\n private _trackChipSetChanges() {\r\n this._chips?.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\r\n if (this.disabled) {\r\n // Since this happens after the content has been\r\n // checked, we need to defer it to the next tick.\r\n Promise.resolve().then(() => this._syncChipsState());\r\n }\r\n\r\n this._redirectDestroyedChipFocus();\r\n });\r\n }\r\n\r\n /** Starts tracking the destroyed chips to capture the focused one. */\r\n private _trackDestroyedFocusedChip() {\r\n this.chipDestroyedChanges.pipe(takeUntil(this._destroyed)).subscribe((event: CuteChipEvent) => {\r\n // If the focused chip is destroyed, save its index so that we can move focus to the next\r\n // chip. We only save the index here, rather than move the focus immediately, because we want\r\n // to wait until the chip is removed from the chip list before focusing the next one. This\r\n // allows us to keep focus on the same index if the chip gets swapped out.\r\n const chipArray = this._chips?.toArray() || [];\r\n const chipIndex = chipArray.indexOf(event.chip);\r\n const hasFocus = event.chip._hasFocus();\r\n const wasLastFocused =\r\n event.chip._hadFocusOnRemove &&\r\n this._keyManager?.activeItem &&\r\n event.chip._getActions().includes(this._keyManager.activeItem);\r\n\r\n // Note that depending on the timing, the chip might've already lost focus by the\r\n // time we check this. We need the `wasLastFocused` as a fallback to detect such cases.\r\n // In `wasLastFocused` we also need to ensure that the chip actually had focus when it was\r\n // deleted so that we don't steal away the user's focus after they've moved on from the chip.\r\n const shouldMoveFocus = hasFocus || wasLastFocused;\r\n\r\n if (this._isValidIndex(chipIndex) && shouldMoveFocus) {\r\n this._lastDestroyedFocusedChipIndex = chipIndex;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Finds the next appropriate chip to move focus to\r\n * if the currently focused chip is destroyed.\r\n */\r\n private _redirectDestroyedChipFocus() {\r\n if (this._lastDestroyedFocusedChipIndex == null) {\r\n return;\r\n }\r\n\r\n if (this._chips && this._chips.length) {\r\n const newIndex = Math.min(this._lastDestroyedFocusedChipIndex, this._chips.length - 1);\r\n const chipToFocus = this._chips.toArray()[newIndex];\r\n\r\n if (chipToFocus.disabled) {\r\n // If we're down to one disabled chip, move focus back to the set.\r\n if (this._chips.length === 1) {\r\n this.focus();\r\n } else {\r\n this._keyManager?.setPreviousItemActive();\r\n }\r\n } else {\r\n chipToFocus.focus();\r\n }\r\n } else {\r\n this.focus();\r\n }\r\n\r\n this._lastDestroyedFocusedChipIndex = null;\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {hasModifierKey, TAB} from '@angular/cdk/keycodes';\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DoCheck,\r\n ElementRef,\r\n EventEmitter, inject,\r\n Input, isDevMode,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n QueryList,\r\n Self,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormGroupDirective,\r\n NgControl,\r\n NgForm,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {ErrorStateMatcher, _ErrorStateTracker} from '@cute-widgets/base/core/error';\r\nimport {CuteFormFieldControl} from '@cute-widgets/base/form-field';\r\nimport {CuteChipTextControl} from './chip-text-control';\r\nimport {Observable, Subject, merge} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {CuteChipEvent} from './chip';\r\nimport {CuteChipRow} from './chip-row';\r\nimport {CuteChipSet} from './chip-set';\r\nimport {Directionality} from '@angular/cdk/bidi';\r\n\r\n/** Change event object that is emitted when the chip grid value has changed. */\r\nexport class CuteChipGridChange {\r\n constructor(\r\n /** Chip grid that emitted the event. */\r\n public source: CuteChipGrid,\r\n /** Value of the chip grid when the event was emitted. */\r\n public value: any,\r\n ) {}\r\n}\r\n\r\n/**\r\n * An extension of the CuteChipSet component used with CuteChipRow chips and\r\n * the cuteChipInputFor directive.\r\n */\r\n@Component({\r\n selector: 'cute-chip-grid',\r\n template: `\r\n <div class=\"cute-chip-set__chips\" role=\"presentation\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n styleUrl: './chip-set.scss',\r\n host: {\r\n 'class': 'cute-chip-grid input-group-text',\r\n '[attr.role]': 'role',\r\n '[attr.tabindex]': '(disabled || (_chips && _chips.length === 0)) ? -1 : tabIndex',\r\n '[attr.aria-disabled]': 'disabled',\r\n '[attr.aria-invalid]': 'errorState',\r\n '[class.cute-chip-list-disabled]': 'disabled',\r\n '[class.cute-chip-list-invalid]': 'errorState',\r\n '[class.cute-chip-list-required]': 'required',\r\n '(focus)': 'focus()',\r\n '(blur)': '_blur()',\r\n },\r\n providers: [{provide: CuteFormFieldControl, useExisting: CuteChipGrid}],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class CuteChipGrid\r\n extends CuteChipSet\r\n implements\r\n AfterContentInit,\r\n AfterViewInit,\r\n ControlValueAccessor,\r\n DoCheck,\r\n CuteFormFieldControl<any>,\r\n OnDestroy\r\n{\r\n ngControl = inject(NgControl, {optional: true, self: true})!;\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n * @docs-private\r\n */\r\n readonly controlType: string = 'cute-chip-grid';\r\n\r\n /** The chip input to add more chips */\r\n protected _chipInput: CuteChipTextControl | undefined;\r\n\r\n protected override _defaultRole = 'grid';\r\n private _errorStateTracker: _ErrorStateTracker;\r\n\r\n /**\r\n * List of element ids to propagate to the chipInput's `aria-describedby` attribute.\r\n */\r\n private _ariaDescribedbyIds: string[] = [];\r\n\r\n /**\r\n * Function when touched. Set as part of ControlValueAccessor implementation.\r\n * @docs-private\r\n */\r\n _onTouched = () => {};\r\n\r\n /**\r\n * Function when changed. Set as part of ControlValueAccessor implementation.\r\n * @docs-private\r\n */\r\n _onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input({transform: booleanAttribute})\r\n override get disabled(): boolean {\r\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\r\n }\r\n override set disabled(value: boolean) {\r\n this._disabled = value;\r\n this._syncChipsState();\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n * @docs-private\r\n */\r\n get id(): string {\r\n return this._chipInput?.id || \"\";\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n * @docs-private\r\n */\r\n override get empty(): boolean {\r\n return (\r\n (!this._chipInput || this._chipInput.empty) && (!this._chips || this._chips.length === 0)\r\n );\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get placeholder(): string {\r\n return (this._chipInput ? this._chipInput.placeholder : this._placeholder) || \"\";\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n protected _placeholder: string | undefined;\r\n\r\n /** Whether any chips or the `cuteChipInput` inside this <chip-grid> has focus. */\r\n override get focused(): boolean {\r\n return this._chipInput?.focused || this._hasFocusedChip();\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input({transform: booleanAttribute})\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n protected _required: boolean | undefined;\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n * @docs-private\r\n */\r\n get shouldLabelFloat(): boolean {\r\n return !this.empty || this.focused;\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get value(): any { return this._value; }\r\n set value(value: any) { this._value = value; }\r\n protected _value: any[] = [];\r\n\r\n /** An object used to control when error messages are shown. */\r\n @Input()\r\n get errorStateMatcher() { return this._errorStateTracker.matcher; }\r\n set errorStateMatcher(value: ErrorStateMatcher) {\r\n this._errorStateTracker.matcher = value;\r\n }\r\n\r\n /** Combined stream of all of the child chips' blur events. */\r\n get chipBlurChanges(): Observable<CuteChipEvent> {\r\n return this._getChipStream(chip => chip._onBlur);\r\n }\r\n\r\n /** Emits when the user has changed the chip grid value. */\r\n @Output() readonly change: EventEmitter<CuteChipGridChange> =\r\n new EventEmitter<CuteChipGridChange>();\r\n\r\n /**\r\n * Emits whenever the raw value of the <chip-grid> changes. This is here primarily\r\n * to facilitate the two-way binding for the `value` input.\r\n */\r\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @ContentChildren(CuteChipRow, {\r\n // We need to use `descendants: true`, because Ivy will no longer match\r\n // indirect descendants if it's left as false.\r\n descendants: true,\r\n })\r\n // We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.\r\n override _chips: QueryList<CuteChipRow> = undefined!;\r\n\r\n /**\r\n * Emits whenever the component state changes and should cause the parent\r\n * form-field to update. Implemented as part of `CuteFormFieldControl`.\r\n */\r\n readonly stateChanges = new Subject<void>();\r\n\r\n /** Whether the chip grid is in an error state. */\r\n get errorState() { return this._errorStateTracker.errorState; }\r\n set errorState(value: boolean) {\r\n this._errorStateTracker.errorState = value;\r\n }\r\n\r\n get controlElementRef(): ElementRef {\r\n return this._elementRef;\r\n }\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n\r\n const parentForm = inject(NgForm, {optional: true});\r\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\r\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\r\n\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n this._errorStateTracker = new _ErrorStateTracker(\r\n defaultErrorStateMatcher,\r\n this.ngControl,\r\n parentFormGroup,\r\n parentForm,\r\n this.stateChanges,\r\n );\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => {\r\n this._blur();\r\n this.stateChanges.next();\r\n });\r\n\r\n merge(this.chipFocusChanges, this._chips.changes)\r\n .pipe(takeUntil(this._destroyed))\r\n .subscribe(() => this.stateChanges.next());\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n if (!this._chipInput && isDevMode()) {\r\n throw Error('cute-chip-grid must be used in combination with cuteChipInputFor.');\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n if (this.ngControl) {\r\n // We need to re-evaluate this on every change detection cycle, because there are some\r\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\r\n // that whatever logic is in here has to be super lean, or we risk destroying the performance.\r\n this.updateErrorState();\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this.stateChanges.complete();\r\n }\r\n\r\n /** Associates an HTML input element with this chip grid. */\r\n registerInput(inputElement: CuteChipTextControl): void {\r\n this._chipInput = inputElement;\r\n this._chipInput.setDescribedByIds(this._ariaDescribedbyIds);\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n */\r\n onContainerClick(event: MouseEvent) {\r\n if (!this.disabled && !this._originatesFromChip(event)) {\r\n this.focus();\r\n }\r\n }\r\n\r\n _toggleFocusedStyle(force?: boolean) {\r\n if (this._elementRef.nativeElement.classList.contains(\"input-group-text\")) {\r\n this._elementRef.nativeElement.classList.toggle(\"cute-chip-grid-focused\", force);\r\n }\r\n }\r\n\r\n /**\r\n * Focuses the first chip in this chip grid, or the associated input when there\r\n * are no eligible chips.\r\n */\r\n override focus(): void {\r\n if (this.disabled || this._chipInput?.focused) {\r\n return;\r\n }\r\n\r\n if (!this._chips.length || this._chips.first.disabled) {\r\n // Delay until the next tick, because this can cause a \"changed after checked\"\r\n // error if the input does something on focus (e.g., opens an autocomplete).\r\n Promise.resolve().then(() => this._chipInput?.focus());\r\n } else {\r\n const activeItem = this._keyManager?.activeItem;\r\n\r\n if (activeItem) {\r\n activeItem.focus();\r\n } else {\r\n this._keyManager?.setFirstItemActive();\r\n }\r\n }\r\n\r\n this.stateChanges.next();\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n */\r\n setDescribedByIds(ids: string[]) {\r\n // We must keep this up to date to handle the case where ids are set\r\n // before the chip input is registered.\r\n this._ariaDescribedbyIds = ids;\r\n this._chipInput?.setDescribedByIds(ids);\r\n }\r\n\r\n /**\r\n * Implemented as part of ControlValueAccessor.\r\n */\r\n writeValue(value: any): void {\r\n // The user is responsible for creating the child chips, so we just store the value.\r\n this._value = value;\r\n }\r\n\r\n /**\r\n * Implemented as part of ControlValueAccessor.\r\n */\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Implemented as part of ControlValueAccessor.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n /**\r\n * Implemented as part of ControlValueAccessor.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.stateChanges.next();\r\n }\r\n\r\n /** Refreshes the error state of the chip grid. */\r\n updateErrorState() {\r\n this._errorStateTracker.updateErrorState();\r\n }\r\n\r\n /** When blurred, mark the field as touched when focus moved outside the chip grid. */\r\n _blur() {\r\n if (!this.disabled) {\r\n\r\n this._toggleFocusedStyle(false);\r\n\r\n // Check whether the focus moved to chip input.\r\n // If the focus is not moved to chip input, mark the field as touched. If the focus moved\r\n // to chip input, do nothing.\r\n // Timeout is needed to wait for the focus() event trigger on chip input.\r\n setTimeout(() => {\r\n if (!this.focused) {\r\n this._propagateChanges();\r\n this._markAsTouched();\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Removes the `tabindex` from the chip grid and resets it back afterward, allowing the\r\n * user to tab out of it. This prevents the grid from capturing focus and redirecting\r\n * it back to the first chip, creating a focus trap if its user tries to tab away.\r\n */\r\n protected override _allowFocusEscape() {\r\n if (!this._chipInput?.focused) {\r\n super._allowFocusEscape();\r\n }\r\n }\r\n\r\n /** Handles custom keyboard events. */\r\n override _handleKeydown(event: KeyboardEvent) {\r\n if (event.keyCode === TAB) {\r\n if (\r\n this._chipInput?.focused &&\r\n hasModifierKey(event, 'shiftKey') &&\r\n this._chips.length &&\r\n !this._chips.last.disabled\r\n ) {\r\n event.preventDefault();\r\n\r\n if (this._keyManager?.activeItem) {\r\n this._keyManager?.setActiveItem(this._keyManager.activeItem);\r\n } else {\r\n this._focusLastChip();\r\n }\r\n } else {\r\n // Use the super method here since it doesn't check for the input\r\n // focused state. This allows focus to escape if there's only one\r\n // disabled chip left in the list.\r\n super._allowFocusEscape();\r\n }\r\n } else if (!this._chipInput?.focused) {\r\n super._handleKeydown(event);\r\n }\r\n\r\n this.stateChanges.next();\r\n }\r\n\r\n _focusLastChip() {\r\n if (this._chips.length) {\r\n this._chips.last.focus();\r\n }\r\n }\r\n\r\n /** Emits change event to set the model value. */\r\n private _propagateChanges(): void {\r\n const valueToEmit = this._chips.length ? this._chips.toArray().map(chip => chip.value) : [];\r\n this._value = valueToEmit;\r\n this.change.emit(new CuteChipGridChange(this, valueToEmit));\r\n this.valueChange.emit(valueToEmit);\r\n this._onChange(valueToEmit);\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /** Mark the field as touched */\r\n private _markAsTouched() {\r\n this._onTouched();\r\n this._changeDetectorRef.markForCheck();\r\n this.stateChanges.next();\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\r\nimport {Directive} from '@angular/core';\r\nimport {CuteChipAction} from './chip-action';\r\nimport {CUTE_CHIP_AVATAR, CUTE_CHIP_EDIT, CUTE_CHIP_REMOVE, CUTE_CHIP_TRAILING_ICON} from './tokens';\r\n\r\n/** Avatar image within a chip. */\r\n@Directive({\r\n selector: 'cute-chip-avatar, [cuteChipAvatar]',\r\n host: {\r\n 'class': 'cute-chip-avatar cute-chip__icon cute-chip__icon--primary',\r\n 'role': 'img',\r\n },\r\n providers: [{provide: CUTE_CHIP_AVATAR, useExisting: CuteChipAvatar}],\r\n standalone: true,\r\n})\r\nexport class CuteChipAvatar {}\r\n\r\n/** Non-interactive trailing icon in a chip. */\r\n@Directive({\r\n selector: 'cute-chip-trailing-icon, [cuteChipTrailingIcon]',\r\n host: {\r\n 'class':\r\n 'cute-chip-trailing-icon cute-chip__icon cute-chip__icon--trailing',\r\n 'aria-hidden': 'true',\r\n },\r\n providers: [{provide: CUTE_CHIP_TRAILING_ICON, useExisting: CuteChipTrailingIcon}],\r\n standalone: true,\r\n})\r\nexport class CuteChipTrailingIcon extends CuteChipAction {\r\n /**\r\n * MDC considers all trailing actions as a remove icon,\r\n * but we support non-interactive trailing icons.\r\n */\r\n override isInteractive = false;\r\n\r\n override _isPrimary = false;\r\n}\r\n\r\n/**\r\n * Directive to edit the parent chip when the leading action icon is clicked or\r\n * when the ENTER key is pressed on it.\r\n *\r\n * Recommended for use with the Material Design \"edit\" icon\r\n * available at https://material.io/icons/#ic_edit.\r\n *\r\n * Example:\r\n *\r\n * ```\r\n * <cute-chip>\r\n * <button cuteChipEdit aria-label=\"Edit\">\r\n * <cute-icon>edit</cute-icon>\r\n * </button>\r\n * </cute-chip>\r\n * ```\r\n */\r\n\r\n@Directive({\r\n selector: '[cuteChipEdit]',\r\n host: {\r\n 'class':\r\n 'cute-chip-edit cute-chip-avatar cute-focus-indicator ' +\r\n 'cute-chip__icon cute-chip__icon--primary',\r\n 'role': 'button',\r\n '[attr.aria-hidden]': 'null',\r\n },\r\n providers: [{provide: CUTE_CHIP_EDIT, useExisting: CuteChipEdit}],\r\n})\r\nexport class CuteChipEdit extends CuteChipAction {\r\n override _isPrimary = false;\r\n override _isLeading = true;\r\n\r\n override _handleClick(event: MouseEvent): void {\r\n if (!this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this._parentChip._edit();\r\n }\r\n }\r\n\r\n override _handleKeydown(event: KeyboardEvent) {\r\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this._parentChip._edit();\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Directive to remove the parent chip when the trailing icon is clicked or\r\n * when the ENTER key is pressed on it.\r\n *\r\n * Recommended for use with the Material Design \"cancel\" icon\r\n * available at https://material.io/icons/#ic_cancel.\r\n *\r\n * Example:\r\n *\r\n * ```\r\n * <cute-chip>\r\n * <cute-icon cuteChipRemove>cancel</cute-icon>\r\n * </cute-chip>\r\n * ```\r\n */\r\n\r\n@Directive({\r\n selector: '[cuteChipRemove]',\r\n host: {\r\n 'class':\r\n 'cute-chip-remove cute-chip-trailing-icon cute-focus-indicator ' +\r\n 'cute-chip__icon cute-chip__icon--trailing cute-chip__action',\r\n 'role': 'button',\r\n '[attr.aria-hidden]': 'null',\r\n },\r\n providers: [{provide: CUTE_CHIP_REMOVE, useExisting: CuteChipRemove}],\r\n standalone: true,\r\n})\r\nexport class CuteChipRemove extends CuteChipAction {\r\n override _isPrimary = false;\r\n\r\n override _handleClick(event: MouseEvent): void {\r\n if (!this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this._parentChip.remove();\r\n }\r\n }\r\n\r\n override _handleKeydown(event: KeyboardEvent) {\r\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this._parentChip.remove();\r\n }\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {BACKSPACE, hasModifierKey} from '@angular/cdk/keycodes';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n booleanAttribute, inject,\r\n} from '@angular/core';\r\nimport {CuteFormField, CUTE_FORM_FIELD} from '@cute-widgets/base/form-field';\r\nimport {CuteChipsDefaultOptions, CUTE_CHIPS_DEFAULT_OPTIONS} from './tokens';\r\nimport {CuteChipGrid} from './chip-grid';\r\nimport {CuteChipTextControl} from './chip-text-control';\r\n\r\n/** Represents an input event on a `matChipInput`. */\r\nexport interface CuteChipInputEvent {\r\n /**\r\n * The native `<input>` element that the event is being fired for.\r\n * @deprecated Use `CuteChipInputEvent#chipInput.inputElement` instead.\r\n * @breaking-change 13.0.0 This property will be removed.\r\n */\r\n input: HTMLInputElement;\r\n\r\n /** The value of the input. */\r\n value: string;\r\n\r\n /** Reference to the chip input that emitted the event. */\r\n chipInput: CuteChipInput;\r\n}\r\n\r\n// Increasing integer for generating unique ids.\r\nlet nextUniqueId = 0;\r\n\r\n/**\r\n * Directive that adds chip-specific behaviors to an input element inside `<cute-form-field>`.\r\n * May be placed inside or outside a `<cute-chip-grid>`.\r\n */\r\n@Directive({\r\n selector: 'input[cuteChipInputFor]',\r\n exportAs: 'cuteChipInput, cuteChipInputFor',\r\n host: {\r\n 'class': 'cute-chip-input',\r\n '(keydown)': '_keydown($event)',\r\n '(blur)': '_blur()',\r\n '(focus)': '_focus()',\r\n '(input)': '_onInput()',\r\n '[id]': 'id',\r\n '[attr.disabled]': 'disabled && !disabledInteractive ? \"\" : null',\r\n '[attr.placeholder]': 'placeholder || null',\r\n '[attr.aria-invalid]': 'chipGrid && chipGrid.ngControl ? chipGrid.ngControl.invalid : null',\r\n '[attr.aria-required]': '(chipGrid && chipGrid.required) || null',\r\n '[attr.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\r\n '[attr.readonly]': '_getReadonlyAttribute()',\r\n '[attr.required]': '(chipGrid && chipGrid.required) || null',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteChipInput implements CuteChipTextControl, OnChanges, OnDestroy {\r\n protected _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n\r\n /** Used to prevent focus moving to chips while user is holding backspace */\r\n private _focusLastChipOnBackspace: boolean = false;\r\n\r\n /** Whether the control is focused. */\r\n focused: boolean = false;\r\n\r\n /** Register input for a chip list */\r\n @Input('cuteChipInputFor')\r\n get chipGrid(): CuteChipGrid | undefined { return this._chipGrid; }\r\n set chipGrid(value: CuteChipGrid) {\r\n if (value) {\r\n this._chipGrid = value;\r\n this._chipGrid.registerInput(this);\r\n }\r\n }\r\n private _chipGrid: CuteChipGrid | undefined;\r\n\r\n /**\r\n * Whether the `chipEnd` event will be emitted when the input is blurred.\r\n */\r\n @Input({alias: 'cuteChipInputAddOnBlur', transform: booleanAttribute})\r\n addOnBlur: boolean = false;\r\n\r\n /**\r\n * The list of key codes that will trigger a `chipEnd` event.\r\n *\r\n * Defaults to `[ENTER]`.\r\n */\r\n @Input('cuteChipInputSeparatorKeyCodes')\r\n separatorKeyCodes: readonly number[] | ReadonlySet<number>;\r\n\r\n /** Emitted when a chip is to be added. */\r\n @Output('cuteChipInputTokenEnd')\r\n readonly chipEnd: EventEmitter<CuteChipInputEvent> = new EventEmitter<CuteChipInputEvent>();\r\n\r\n /** The input's placeholder text. */\r\n @Input() placeholder: string = '';\r\n\r\n /** Unique id for the input. */\r\n @Input() id: string = `cute-chip-list-input-${nextUniqueId++}`;\r\n\r\n /** Whether the input is disabled. */\r\n @Input({transform: booleanAttribute})\r\n get disabled(): boolean {\r\n return (this._disabled || (this._chipGrid && this._chipGrid.disabled)) ?? false;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n }\r\n private _disabled: boolean = false;\r\n\r\n /** Whether the input is readonly. */\r\n @Input({transform: booleanAttribute})\r\n readonly: boolean = false;\r\n\r\n /** Whether the input should remain interactive when it is disabled. */\r\n @Input({alias: 'cuteChipInputDisabledInteractive', transform: booleanAttribute})\r\n disabledInteractive: boolean = false;\r\n\r\n /** Whether the input is empty. */\r\n get empty(): boolean {\r\n return !this.inputElement.value;\r\n }\r\n\r\n /** The native input element to which this directive is attached. */\r\n readonly inputElement!: HTMLInputElement;\r\n\r\n constructor(...args: unknown[]);\r\n\r\n constructor() {\r\n const defaultOptions = inject<CuteChipsDefaultOptions>(CUTE_CHIPS_DEFAULT_OPTIONS);\r\n const formField = inject<CuteFormField>(CUTE_FORM_FIELD, {optional: true});\r\n\r\n this.inputElement = this._elementRef.nativeElement as HTMLInputElement;\r\n this.separatorKeyCodes = defaultOptions.separatorKeyCodes;\r\n this.disabledInteractive = defaultOptions.inputDisabledInteractive ?? false;\r\n\r\n if (formField) {\r\n this.inputElement.classList.add('cute-form-field-input-control');\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n this._chipGrid?.stateChanges.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.chipEnd.complete();\r\n }\r\n\r\n /** Utility method to make host definition/tests more clear. */\r\n _keydown(event: KeyboardEvent) {\r\n if (this.empty && event.keyCode === BACKSPACE) {\r\n // Ignore events where the user is holding down backspace\r\n // so that we don't accidentally remove too many chips.\r\n if (!event.repeat) {\r\n this._chipGrid?._focusLastChip();\r\n }\r\n event.preventDefault();\r\n } else {\r\n this._emitChipEnd(event);\r\n }\r\n }\r\n\r\n /** Checks to see if the blur should emit the (chipEnd) event. */\r\n _blur() {\r\n if (this.addOnBlur) {\r\n this._emitChipEnd();\r\n }\r\n this.focused = false;\r\n // Blur the chip list if it is not focused\r\n if (this._chipGrid) {\r\n if (!this._chipGrid.focused) {\r\n this._chipGrid._blur();\r\n }\r\n this._chipGrid.stateChanges.next();\r\n }\r\n }\r\n\r\n _focus() {\r\n this.focused = true;\r\n this._focusLastChipOnBackspace = this.empty;\r\n this._chipGrid?._toggleFocusedStyle(true);\r\n this._chipGrid?.stateChanges.next();\r\n }\r\n\r\n /** Checks to see if the (chipEnd) event needs to be emitted. */\r\n _emitChipEnd(event?: KeyboardEvent) {\r\n if (!event || this._isSeparatorKey(event)) {\r\n this.chipEnd.emit({\r\n input: this.inputElement,\r\n value: this.inputElement.value,\r\n chipInput: this,\r\n });\r\n\r\n event?.preventDefault();\r\n }\r\n }\r\n\r\n _onInput() {\r\n // Let the chip list know whenever the value changes.\r\n this._chipGrid?.stateChanges.next();\r\n }\r\n\r\n /** Focuses the input. */\r\n focus(): void {\r\n this.inputElement.focus();\r\n }\r\n\r\n /** Clears the input */\r\n clear(): void {\r\n this.inputElement.value = '';\r\n this._focusLastChipOnBackspace = true;\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n const element = this._elementRef.nativeElement;\r\n\r\n // Set the value directly in the DOM since this binding\r\n // is prone to \"changed after checked\" errors.\r\n if (ids.length) {\r\n element.setAttribute('aria-describedby', ids.join(' '));\r\n } else {\r\n element.removeAttribute('aria-describedby');\r\n }\r\n }\r\n\r\n /** Checks whether a keycode is one of the configured separators. */\r\n private _isSeparatorKey(event: KeyboardEvent) {\r\n return !hasModifierKey(event) && new Set(this.separatorKeyCodes).has(event.keyCode);\r\n }\r\n\r\n /** Gets the value to set on the `readonly` attribute. */\r\n protected _getReadonlyAttribute(): string | null {\r\n return this.readonly || (this.disabled && this.disabledInteractive) ? 'true' : null;\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n OnInit,\r\n inject,\r\n booleanAttribute,\r\n} from '@angular/core';\r\nimport {CuteChip} from './chip';\r\nimport {CUTE_CHIP, CUTE_CHIPS_DEFAULT_OPTIONS} from './tokens';\r\nimport {CuteChipAction} from './chip-action';\r\nimport {CuteButton} from \"@cute-widgets/base/button\";\r\n\r\n/** Event object emitted by CuteChipOption when selected or deselected. */\r\nexport class CuteChipSelectionChange {\r\n constructor(\r\n /** Reference to the chip that emitted the event. */\r\n public source: CuteChipOption,\r\n /** Whether the chip that emitted the event is selected. */\r\n public selected: boolean,\r\n /** Whether the selection change was a result of a user interaction. */\r\n public isUserInput = false,\r\n ) {}\r\n}\r\n\r\n/**\r\n * An extension of the CuteChip component that supports chip selection. Used with CuteChipListbox.\r\n *\r\n * Unlike other chips, the user can focus on disabled chip options inside a CuteChipListbox. The\r\n * user cannot click disabled chips.\r\n */\r\n@Component({\r\n selector: 'cute-basic-chip-option, [cute-basic-chip-option], cute-chip-option, [cute-chip-option]',\r\n templateUrl: './chip-option.html',\r\n styleUrl: './chip.scss',\r\n host: {\r\n 'class': 'cute-chip-option',\r\n '[class.cute-chip-disabled]': 'disabled',\r\n '[class.cute-chip-highlighted]': 'highlighted',\r\n '[class.cute-chip-with-trailing-icon]': '_hasTrailingIcon()',\r\n '[class.cute-chip-selected]': 'selected',\r\n '[class.cute-chip-multiple]': '_chipListMultiple',\r\n '[class.cute-chip-with-avatar]': 'leadingIcon',\r\n /*\r\n '[class.mdc-evolution-chip]': '!_isBasicChip',\r\n '[class.mdc-evolution-chip--filter]': '!_isBasicChip',\r\n '[class.mdc-evolution-chip--selectable]': '!_isBasicChip',\r\n '[class.mdc-evolution-chip--disabled]': 'disabled',\r\n '[class.mdc-evolution-chip--selected]': 'selected',\r\n // This class enables the transition on the checkmark. Usually MDC adds it when selection\r\n // starts and removes it once the animation is finished. We don't need to go through all\r\n // the trouble, because we only care about the selection animation. MDC needs to do it,\r\n // because they also have an exit animation that we don't care about.\r\n '[class.mdc-evolution-chip--selecting]': '!_animationsDisabled',\r\n '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\r\n '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\r\n '[class.mdc-evolution-chip--with-primary-graphic]': '_hasLeadingGraphic()',\r\n '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\r\n */\r\n '[attr.tabindex]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-description]': 'null',\r\n '[attr.role]': 'role',\r\n '[id]': 'id',\r\n },\r\n providers: [\r\n { provide: CuteChip, useExisting: CuteChipOption },\r\n { provide: CUTE_CHIP, useExisting: CuteChipOption },\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CuteChipAction, CuteButton]\r\n})\r\nexport class CuteChipOption extends CuteChip implements OnInit {\r\n /** Default chip options. */\r\n private _defaultOptions = inject(CUTE_CHIPS_DEFAULT_OPTIONS, {optional: true});\r\n\r\n /** Whether the chip list is selectable. */\r\n chipListSelectable: boolean = true;\r\n\r\n /** Whether the chip list is in multi-selection mode. */\r\n _chipListMultiple: boolean = false;\r\n\r\n /** Whether the chip list hides single-selection indicator. */\r\n _chipListHideSingleSelectionIndicator: boolean =\r\n this._defaultOptions?.hideSingleSelectionIndicator ?? false;\r\n\r\n /**\r\n * Whether the chip is selectable.\r\n *\r\n * When a chip is not selectable, changes to its selected state are always\r\n * ignored. By default, an option chip is selectable, and it becomes\r\n * non-selectable if its parent chip list is not selectable.\r\n */\r\n @Input({transform: booleanAttribute})\r\n get selectable(): boolean { return this._selectable && this.chipListSelectable; }\r\n set selectable(value: boolean) {\r\n this._selectable = value;\r\n this.markForCheck();\r\n }\r\n protected _selectable: boolean = true;\r\n\r\n /** Whether the chip is selected. */\r\n @Input({transform: booleanAttribute})\r\n get selected(): boolean { return this._selected; }\r\n set selected(value: boolean) { this._setSelectedState(value, false, true); }\r\n private _selected = false;\r\n\r\n /**\r\n * The ARIA selected applied to the chip. Conforms to WAI ARIA best practices for listbox\r\n * interaction patterns.\r\n *\r\n * From [WAI ARIA Listbox authoring practices guide](\r\n * https://www.w3.org/WAI/ARIA/apg/patterns/listbox/):\r\n * \"If any options are selected, each selected option has either aria-selected or aria-checked\r\n * set to true. All options that are selectable but not selected have either aria-selected or\r\n * aria-checked set to false.\"\r\n *\r\n * Set `aria-selected=\"false\"` on not-selected listbox options that are selectable to fix\r\n * VoiceOver reading every option as \"selected\" (#25736).\r\n */\r\n get ariaSelected(): string | null {\r\n return this.selectable ? this.selected.toString() : null;\r\n }\r\n\r\n /** The unstyled chip selector for this component. */\r\n protected override basicChipAttrName = 'cute-basic-chip-option';\r\n\r\n /** Emitted when the chip is selected or deselected. */\r\n @Output() readonly selectionChange = new EventEmitter<CuteChipSelectionChange>();\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n this.role = 'presentation';\r\n }\r\n\r\n /** Selects the chip. */\r\n select(): void { this._setSelectedState(true, false, true); }\r\n\r\n /** Deselects the chip. */\r\n deselect(): void { this._setSelectedState(false, false, true); }\r\n\r\n /** Selects this chip and emits userInputSelection event */\r\n selectViaInteraction(): void { this._setSelectedState(true, true, true); }\r\n\r\n /** Toggles the current selected state of this chip. */\r\n toggleSelected(isUserInput: boolean = false): boolean {\r\n this._setSelectedState(!this.selected, isUserInput, true);\r\n return this.selected;\r\n }\r\n\r\n override _handlePrimaryActionInteraction() {\r\n if (!this.disabled) {\r\n // Interacting with the primary action implies that the chip already has focus, however,\r\n // there's a bug in Safari where focus ends up lingering on the previous chip (see #27544).\r\n // We work around it by explicitly focusing the primary action of the current chip.\r\n this.focus();\r\n\r\n if (this.selectable) {\r\n this.toggleSelected(true);\r\n }\r\n }\r\n }\r\n\r\n protected _hasLeadingGraphic() {\r\n if (this.leadingIcon) {\r\n return true;\r\n }\r\n\r\n // The checkmark graphic communicates selected state for both single-select and multi-select.\r\n // Include checkmark in single-select to fix a11y issue where the selected state is communicated\r\n // visually only using color (#25886).\r\n return !this._chipListHideSingleSelectionIndicator || this._chipListMultiple;\r\n }\r\n\r\n _setSelectedState(isSelected: boolean, isUserInput: boolean, emitEvent: boolean) {\r\n if (isSelected !== this.selected) {\r\n this._selected = isSelected;\r\n\r\n if (emitEvent) {\r\n this.selectionChange.emit({\r\n source: this,\r\n isUserInput,\r\n selected: this.selected,\r\n });\r\n }\r\n\r\n this.markForCheck();\r\n }\r\n }\r\n}\r\n","<span class=\"cute-chip-focus-overlay\"></span>\r\n\r\n<span class=\"cute-chip__cell cute-chip__cell--primary\">\r\n <button\r\n cuteButton=\"outline-button\"\r\n class=\"cute-chip-action rounded-pill text-nowrap\"\r\n [class.active]=\"selected\"\r\n magnitude=\"small\"\r\n [color]=\"color\"\r\n [tabIndex]=\"tabIndex\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-selected]=\"ariaSelected\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-describedby]=\"_ariaDescriptionId\"\r\n data-bs-toggle=\"button\"\r\n role=\"option\"\r\n (click)=\"_handlePrimaryActionInteraction()\">\r\n @if (_hasLeadingGraphic()) {\r\n <span cuteButtonIcon class=\"cute-chip-graphic cute-chip__graphic\">\r\n <ng-content select=\"cute-avatar, cute-chip-avatar, [cuteChipAvatar]\"></ng-content>\r\n @if (selected && !leadingIcon ) {\r\n <span class=\"cute-chip__checkmark\">\r\n <svg\r\n class=\"cute-chip__checkmark-svg\"\r\n viewBox=\"-2 2 24 24\"\r\n focusable=\"false\"\r\n aria-hidden=\"true\">\r\n <path class=\"cute-chip__checkmark-path\"\r\n fill=\"none\" stroke=\"currentColor\" d=\"M1.73,12.91 8.1,19.28 22.79,4.59\" />\r\n </svg>\r\n </span>\r\n }\r\n </span>\r\n }\r\n <span class=\"cute-chip__text-label cute-chip-action-label\">\r\n <ng-content></ng-content>\r\n <span class=\"cute-chip-primary-focus-indicator\"></span>\r\n </span>\r\n </button>\r\n</span>\r\n\r\n@if (_hasTrailingIcon()) {\r\n <span class=\"cute-chip__cell cute-chip__cell--trailing\">\r\n <ng-content select=\"cute-chip-trailing-icon,[cuteChipRemove],[cuteChipTrailingIcon]\"></ng-content>\r\n </span>\r\n}\r\n\r\n<span class=\"visually-hidden\" [id]=\"_ariaDescriptionId\">{{ariaDescription}}</span>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {Observable} from 'rxjs';\r\nimport {startWith, takeUntil} from 'rxjs/operators';\r\nimport {TAB} from '@angular/cdk/keycodes';\r\nimport {CuteChip, CuteChipEvent} from './chip';\r\nimport {CuteChipOption, CuteChipSelectionChange} from './chip-option';\r\nimport {CuteChipSet} from './chip-set';\r\nimport {CuteChipAction} from './chip-action';\r\nimport {CUTE_CHIPS_DEFAULT_OPTIONS} from './tokens';\r\n\r\n/** Change event object that is emitted when the chip listbox value has changed. */\r\nexport class CuteChipListboxChange {\r\n constructor(\r\n /** Chip listbox that emitted the event. */\r\n public source: CuteChipListbox,\r\n /** Value of the chip listbox when the event was emitted. */\r\n public value: any,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Provider Expression that allows cute-chip-listbox to register as a ControlValueAccessor.\r\n * This allows it to support [(ngModel)].\r\n * @docs-private\r\n */\r\nexport const CUTE_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CuteChipListbox),\r\n multi: true,\r\n};\r\n\r\n/**\r\n * An extension of the CuteChipSet component that supports chip selection.\r\n * Used with CuteChipOption chips.\r\n */\r\n@Component({\r\n selector: 'cute-chip-listbox',\r\n template: `\r\n <div class=\"cute-chip-set__chips\" role=\"presentation\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n styleUrl: './chip-set.scss',\r\n host: {\r\n 'class': 'cute-chip-listbox',\r\n '[attr.role]': 'role',\r\n '[tabIndex]': '(disabled || empty) ? -1 : tabIndex',\r\n // TODO: replace this binding with use of AriaDescriber\r\n //'[attr.aria-describedby]': '_ariaDescribedby || null',\r\n '[attr.aria-required]': 'role ? required : null',\r\n '[attr.aria-disabled]': 'disabled',\r\n '[attr.aria-multiselectable]': 'multiple',\r\n '[attr.aria-orientation]': 'ariaOrientation',\r\n '[class.cute-chip-list-disabled]': 'disabled',\r\n '[class.cute-chip-list-required]': 'required',\r\n '(focus)': 'focus()',\r\n '(blur)': '_blur()',\r\n '(keydown)': '_keydown($event)',\r\n },\r\n providers: [CUTE_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class CuteChipListbox extends CuteChipSet\r\n implements AfterContentInit, OnDestroy, ControlValueAccessor\r\n{\r\n /**\r\n * Function when touched. Set as part of ControlValueAccessor implementation.\r\n * @docs-private\r\n */\r\n _onTouched = () => {};\r\n\r\n /**\r\n * Function when changed. Set as part of ControlValueAccessor implementation.\r\n * @docs-private\r\n */\r\n _onChange: (value: any) => void = () => {};\r\n\r\n // TODO: MDC uses `grid` here\r\n protected override _defaultRole = 'listbox';\r\n\r\n /** Value that was assigned before the listbox was initialized. */\r\n private _pendingInitialValue: any;\r\n\r\n /** Default chip options. */\r\n private _defaultOptions = inject(CUTE_CHIPS_DEFAULT_OPTIONS, {optional: true});\r\n\r\n /** Whether the user should be allowed to select multiple chips. */\r\n @Input({transform: booleanAttribute})\r\n get multiple(): boolean { return this._multiple; }\r\n set multiple(value: boolean) {\r\n this._multiple = value;\r\n this._syncListboxProperties();\r\n }\r\n private _multiple: boolean = false;\r\n\r\n /** The array of selected chips inside the chip listbox. */\r\n get selected(): CuteChipOption[] | CuteChipOption {\r\n const selectedChips = this._chips.toArray().filter(chip => chip.selected);\r\n return this.multiple ? selectedChips : selectedChips[0];\r\n }\r\n\r\n /** Orientation of the chip list. */\r\n @Input('aria-orientation') ariaOrientation: 'horizontal' | 'vertical' = 'horizontal';\r\n\r\n /**\r\n * Whether this chip listbox is selectable.\r\n *\r\n * When a chip listbox is not selectable, the selected states for all\r\n * the chips inside the chip listbox are always ignored.\r\n */\r\n @Input({transform: booleanAttribute})\r\n get selectable(): boolean { return this._selectable; }\r\n set selectable(value: boolean) {\r\n this._selectable = value;\r\n this._syncListboxProperties();\r\n }\r\n protected _selectable: boolean = true;\r\n\r\n /**\r\n * A function to compare the option values with the selected values. The first argument\r\n * is a value from an option. The second is a value from the selection. A boolean\r\n * should be returned.\r\n */\r\n @Input() compareWith: (o1: any, o2: any) => boolean = (o1: any, o2: any) => o1 === o2;\r\n\r\n /** Whether this chip listbox is required. */\r\n @Input({transform: booleanAttribute})\r\n required: boolean = false;\r\n\r\n /** Whether the checkmark indicator for single-selection options is hidden. */\r\n @Input({transform: booleanAttribute})\r\n get hideSingleSelectionIndicator(): boolean { return this._hideSingleSelectionIndicator; }\r\n set hideSingleSelectionIndicator(value: boolean) {\r\n this._hideSingleSelectionIndicator = value;\r\n this._syncListboxProperties();\r\n }\r\n private _hideSingleSelectionIndicator: boolean =\r\n this._defaultOptions?.hideSingleSelectionIndicator ?? false;\r\n\r\n /** The combined stream of all of the child chips' selection change events. */\r\n get chipSelectionChanges(): Observable<CuteChipSelectionChange> {\r\n return this._getChipStream<CuteChipSelectionChange, CuteChipOption>(chip => chip.selectionChange);\r\n }\r\n\r\n /** Combined stream of all of the child chips' blur events. */\r\n get chipBlurChanges(): Observable<CuteChipEvent> {\r\n return this._getChipStream(chip => chip._onBlur);\r\n }\r\n\r\n /** The value of the listbox, which is the combined value of the selected chips. */\r\n @Input()\r\n get value(): any { return this._value; }\r\n set value(value: any) {\r\n this.writeValue(value);\r\n this._value = value;\r\n }\r\n protected _value: any;\r\n\r\n /** Event emitted when the user has changed the selected chip listbox value. */\r\n @Output() readonly change: EventEmitter<CuteChipListboxChange> = new EventEmitter<CuteChipListboxChange>();\r\n\r\n @ContentChildren(CuteChipOption, {\r\n // We need to use `descendants: true`, because Ivy will no longer match\r\n // indirect descendants if it's left as false.\r\n descendants: true,\r\n })\r\n // We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.\r\n override _chips: QueryList<CuteChipOption> = undefined!;\r\n\r\n ngAfterContentInit() {\r\n if (this._pendingInitialValue !== undefined) {\r\n Promise.resolve().then(() => {\r\n this._setSelectionByValue(this._pendingInitialValue, false);\r\n this._pendingInitialValue = undefined;\r\n });\r\n }\r\n\r\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\r\n // Update listbox selectable/multiple properties on chips\r\n this._syncListboxProperties();\r\n });\r\n\r\n this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => this._blur());\r\n this.chipSelectionChanges.pipe(takeUntil(this._destroyed)).subscribe(event => {\r\n if (!this.multiple) {\r\n this._chips.forEach(chip => {\r\n if (chip !== event.source) {\r\n chip._setSelectedState(false, false, false);\r\n }\r\n });\r\n }\r\n\r\n if (event.isUserInput) {\r\n this._propagateChanges();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Focuses the first selected chip in this chip listbox, or the first non-disabled chip when there\r\n * are no selected chips.\r\n */\r\n override focus(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const firstSelectedChip = this._getFirstSelectedChip();\r\n\r\n if (firstSelectedChip && !firstSelectedChip.disabled) {\r\n firstSelectedChip.focus();\r\n } else if (this._chips.length > 0) {\r\n this._keyManager?.setFirstItemActive();\r\n } else {\r\n this._elementRef.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Implemented as part of ControlValueAccessor.\r\n * @docs-private\r\n */\r\n writeValue(value: any): void {\r\n if (this._chips) {\r\n this._setSelectionByValue(value, false);\r\n } else if (value != null) {\r\n this._pendingInitialValue = value;\r\n }\r\n }\r\n\r\n /**\r\n * Implemented as part of ControlValueAccessor.\r\n * @docs-private\r\n */\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Implemented as part of ControlValueAccessor.\r\n * @docs-private\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n /**\r\n * Implemented as part of ControlValueAccessor.\r\n * @docs-private\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n /** Selects all chips with value. */\r\n _setSelectionByValue(value: any, isUserInput: boolean = true) {\r\n this._clearSelection();\r\n\r\n if (Array.isArray(value)) {\r\n value.forEach(currentValue => this._selectValue(currentValue, isUserInput));\r\n } else {\r\n this._selectValue(value, isUserInput);\r\n }\r\n }\r\n\r\n /** When blurred, marks the field as touched when focus moved outside the chip listbox. */\r\n _blur() {\r\n if (!this.disabled) {\r\n // Wait to see if focus moves to an individual chip.\r\n setTimeout(() => {\r\n if (!this.focused) {\r\n this._markAsTouched();\r\n }\r\n });\r\n }\r\n }\r\n\r\n _keydown(event: KeyboardEvent) {\r\n if (event.keyCode === TAB) {\r\n super._allowFocusEscape();\r\n }\r\n }\r\n\r\n /** Marks the field as touched */\r\n private _markAsTouched() {\r\n this._onTouched();\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /** Emits change event to set the model value. */\r\n private _propagateChanges(): void {\r\n let valueToEmit: any = null;\r\n\r\n if (Array.isArray(this.selected)) {\r\n valueToEmit = this.selected.map(chip => chip.value);\r\n } else {\r\n valueToEmit = this.selected ? this.selected.value : undefined;\r\n }\r\n this._value = valueToEmit;\r\n this.change.emit(new CuteChipListboxChange(this, valueToEmit));\r\n this._onChange(valueToEmit);\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Deselects every chip in the listbox.\r\n * @param skip Chip that should not be deselected.\r\n */\r\n private _clearSelection(skip?: CuteChip): void {\r\n this._chips.forEach(chip => {\r\n if (chip !== skip) {\r\n chip.deselect();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Finds and selects the chip based on its value.\r\n * @returns Chip that has the corresponding value.\r\n */\r\n private _selectValue(value: any, isUserInput: boolean): CuteChip | undefined {\r\n const correspondingChip = this._chips.find(chip => {\r\n return chip.value != null && this.compareWith(chip.value, value);\r\n });\r\n\r\n if (correspondingChip) {\r\n isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\r\n }\r\n\r\n return correspondingChip;\r\n }\r\n\r\n /** Syncs the chip-listbox selection state with the individual chips. */\r\n private _syncListboxProperties() {\r\n if (this._chips) {\r\n // Defers setting the value to avoid the \"Expression\r\n // has changed after it was checked\" errors from Angular.\r\n Promise.resolve().then(() => {\r\n this._chips.forEach(chip => {\r\n chip._chipListMultiple = this.multiple;\r\n chip.chipListSelectable = this._selectable;\r\n chip._chipListHideSingleSelectionIndicator = this.hideSingleSelectionIndicator;\r\n chip._changeDetectorRef.markForCheck();\r\n });\r\n });\r\n }\r\n }\r\n\r\n /** Returns the first selected chip in this listbox, or undefined if no chips are selected. */\r\n private _getFirstSelectedChip(): CuteChipOption | undefined {\r\n if (Array.isArray(this.selected)) {\r\n return this.selected.length ? this.selected[0] : undefined;\r\n } else {\r\n return this.selected;\r\n }\r\n }\r\n\r\n /**\r\n * Determines if key manager should avoid putting a given chip action in the tab index. Skip\r\n * non-interactive actions since the user can't do anything with them.\r\n */\r\n protected override _skipPredicate(action: CuteChipAction): boolean {\r\n // Override the skip predicate in the base class to avoid skipping disabled chips. Allow\r\n // disabled chip options to receive focus to align with WAI ARIA recommendation. Normally WAI\r\n // ARIA's instructions are to exclude disabled items from the tab order, but it makes a few\r\n // exceptions for compound widgets.\r\n //\r\n // From [Developing a Keyboard Interface](\r\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\r\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\r\n // Listbox...\"\r\n return !action.isInteractive;\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\n\r\n/** Interface for a text control that is used to drive interaction with a cute-chip-list. */\r\nexport interface CuteChipTextControl {\r\n /** Unique identifier for the text control. */\r\n id: string;\r\n\r\n /** The text control's placeholder text. */\r\n placeholder: string;\r\n\r\n /** Whether the text control has browser focus. */\r\n focused: boolean;\r\n\r\n /** Whether the text control is empty. */\r\n empty: boolean;\r\n\r\n /** Focuses the text control. */\r\n focus(): void;\r\n\r\n /** Sets the list of ids the input is described by. */\r\n setDescribedByIds(ids: string[]): void;\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteChipAvatar, CuteChipRemove, CuteChipTrailingIcon} from \"./chip-icons\";\r\nimport {CuteChip} from \"./chip\";\r\nimport {CuteChipEditInput} from \"./chip-edit-input\";\r\nimport {CuteChipGrid} from \"./chip-grid\";\r\nimport {CuteChipInput} from \"./chip-input\";\r\nimport {CuteChipListbox} from \"./chip-listbox\";\r\nimport {CuteChipOption} from \"./chip-option\";\r\nimport {CuteChipRow} from \"./chip-row\";\r\nimport {CuteChipSet} from \"./chip-set\";\r\nimport {ErrorStateMatcher} from \"@cute-widgets/base/core/error\";\r\nimport {CUTE_CHIPS_DEFAULT_OPTIONS, CuteChipsDefaultOptions} from \"./tokens\";\r\nimport {ENTER} from \"@angular/cdk/keycodes\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteChip,\r\n CuteChipAvatar,\r\n CuteChipEditInput,\r\n CuteChipGrid,\r\n CuteChipInput,\r\n CuteChipListbox,\r\n CuteChipOption,\r\n CuteChipRemove,\r\n CuteChipRow,\r\n CuteChipSet,\r\n CuteChipTrailingIcon,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n providers: [\r\n ErrorStateMatcher,\r\n {\r\n provide: CUTE_CHIPS_DEFAULT_OPTIONS,\r\n useValue: {\r\n separatorKeyCodes: [ENTER],\r\n } as CuteChipsDefaultOptions,\r\n },\r\n ],\r\n})\r\nexport class CuteChipsModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|