@ngstarter-ui/components 21.0.18 → 21.0.19
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/ai/component-registry.json +25 -11
- package/fesm2022/ngstarter-ui-components-chips.mjs +72 -38
- package/fesm2022/ngstarter-ui-components-chips.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-color-picker.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-color-picker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-comment-editor.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-comment-editor.mjs.map +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs → ngstarter-ui-components-content-editor-code-block.component-Czb0bvcr.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs.map → ngstarter-ui-components-content-editor-code-block.component-Czb0bvcr.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs → ngstarter-ui-components-content-editor-embed-block-c8Pq0Jdq.mjs} +3 -3
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs.map → ngstarter-ui-components-content-editor-embed-block-c8Pq0Jdq.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs → ngstarter-ui-components-content-editor-heading-block.component-CT5g3MLZ.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs.map → ngstarter-ui-components-content-editor-heading-block.component-CT5g3MLZ.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs → ngstarter-ui-components-content-editor-image-block.component-Cp_Yo7zI.mjs} +3 -3
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs.map → ngstarter-ui-components-content-editor-image-block.component-Cp_Yo7zI.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs → ngstarter-ui-components-content-editor-list-block.component-BvineUWy.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs.map → ngstarter-ui-components-content-editor-list-block.component-BvineUWy.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-4_TqxgpH.mjs} +13 -13
- package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs.map → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-4_TqxgpH.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs → ngstarter-ui-components-content-editor-paragraph-block.component-sH44U1I8.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs.map → ngstarter-ui-components-content-editor-paragraph-block.component-sH44U1I8.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs → ngstarter-ui-components-content-editor-quote-block.component-CA3KoZ-u.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs.map → ngstarter-ui-components-content-editor-quote-block.component-CA3KoZ-u.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs → ngstarter-ui-components-content-editor-table-block.component-GTZiYUjU.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs.map → ngstarter-ui-components-content-editor-table-block.component-GTZiYUjU.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs → ngstarter-ui-components-content-editor-video-block.component-CzMZ1s6C.mjs} +3 -3
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs.map → ngstarter-ui-components-content-editor-video-block.component-CzMZ1s6C.mjs.map} +1 -1
- package/fesm2022/ngstarter-ui-components-content-editor.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-country-select.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-currency-select.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-currency-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-date-format-select.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-date-format-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-filter-builder.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-filter-builder.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-form-field.mjs +9 -9
- package/fesm2022/ngstarter-ui-components-form-field.mjs.map +1 -1
- package/fesm2022/{ngstarter-ui-components-form-renderer-autocomplete-many-field-BZBE7KSU.mjs → ngstarter-ui-components-form-renderer-autocomplete-many-field-BLhfO1zC.mjs} +3 -3
- package/fesm2022/ngstarter-ui-components-form-renderer-autocomplete-many-field-BLhfO1zC.mjs.map +1 -0
- package/fesm2022/{ngstarter-ui-components-form-renderer-datepicker-field-Bzc0TPO9.mjs → ngstarter-ui-components-form-renderer-datepicker-field-DRSVe0gK.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-form-renderer-datepicker-field-Bzc0TPO9.mjs.map → ngstarter-ui-components-form-renderer-datepicker-field-DRSVe0gK.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-form-renderer-input-field-UaMfHCtj.mjs → ngstarter-ui-components-form-renderer-input-field-DpGLKZjz.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-form-renderer-input-field-UaMfHCtj.mjs.map → ngstarter-ui-components-form-renderer-input-field-DpGLKZjz.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-form-renderer-select-field-Dvg--xrB.mjs → ngstarter-ui-components-form-renderer-select-field-CCbpYyZo.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-form-renderer-select-field-Dvg--xrB.mjs.map → ngstarter-ui-components-form-renderer-select-field-CCbpYyZo.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-form-renderer-textarea-field-4zH7FTQ1.mjs → ngstarter-ui-components-form-renderer-textarea-field-D89GlMDO.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-form-renderer-textarea-field-4zH7FTQ1.mjs.map → ngstarter-ui-components-form-renderer-textarea-field-D89GlMDO.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-form-renderer-timezone-field-BpH65Hd-.mjs → ngstarter-ui-components-form-renderer-timezone-field-C9wz7zPg.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-form-renderer-timezone-field-BpH65Hd-.mjs.map → ngstarter-ui-components-form-renderer-timezone-field-C9wz7zPg.mjs.map} +1 -1
- package/fesm2022/ngstarter-ui-components-form-renderer.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-image-designer.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-image-designer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-paginator.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-paginator.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-panel.mjs +8 -4
- package/fesm2022/ngstarter-ui-components-panel.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-pin-input.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-pin-input.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-select.mjs +19 -4
- package/fesm2022/ngstarter-ui-components-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-text-editor.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-text-editor.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-timezone-select.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-timezone-select.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ngstarter-ui-components-chips.d.ts +15 -6
- package/types/ngstarter-ui-components-form-field.d.ts +3 -2
- package/types/ngstarter-ui-components-panel.d.ts +3 -1
- package/types/ngstarter-ui-components-select.d.ts +5 -1
- package/fesm2022/ngstarter-ui-components-form-renderer-autocomplete-many-field-BZBE7KSU.mjs.map +0 -1
|
@@ -1603,7 +1603,7 @@
|
|
|
1603
1603
|
"name": "chips-autocomplete-example",
|
|
1604
1604
|
"title": "Chips autocomplete",
|
|
1605
1605
|
"file": "projects/docs/src/app/components/chips/_examples/chips-autocomplete-example/chips-autocomplete-example.html",
|
|
1606
|
-
"source": "<ngs-form-field class=\"w-1/2\">\n <ngs-label>Favorite Fruits</ngs-label>\n <ngs-chip-grid #chipGrid aria-label=\"Fruit selection\">\n @for (fruit of fruits; track fruit) {\n <ngs-chip-row (removed)=\"remove(fruit)\">\n {{fruit}}\n <button ngsChipRemove>\n <ngs-icon name=\"fluent:dismiss-20-regular\"/>\n </button>\n </ngs-chip-row>\n }\n
|
|
1606
|
+
"source": "<ngs-form-field class=\"w-1/2\">\n <ngs-label>Favorite Fruits</ngs-label>\n <ngs-chip-grid #chipGrid aria-label=\"Fruit selection\">\n @for (fruit of fruits; track fruit) {\n <ngs-chip-row (removed)=\"remove(fruit)\">\n {{fruit}}\n <button ngsChipRemove>\n <ngs-icon name=\"fluent:dismiss-20-regular\"/>\n </button>\n </ngs-chip-row>\n }\n <input ngsInput\n placeholder=\"New Fruit...\" #fruitInput\n [formControl]=\"fruitCtrl\"\n [ngsChipInputFor]=\"chipGrid\"\n [ngsAutocomplete]=\"auto\"\n [ngsChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (chipInputTokenEnd)=\"add($event)\">\n </ngs-chip-grid>\n <ngs-autocomplete #auto=\"ngsAutocomplete\" (optionSelected)=\"selected($event)\">\n @for (fruit of filteredFruits | async; track fruit) {\n <ngs-option [value]=\"fruit\">{{ fruit }}</ngs-option>\n }\n </ngs-autocomplete>\n</ngs-form-field>"
|
|
1607
1607
|
}
|
|
1608
1608
|
],
|
|
1609
1609
|
"previewAsset": "projects/components/chips/preview.svg",
|
|
@@ -1663,15 +1663,18 @@
|
|
|
1663
1663
|
"valueChange"
|
|
1664
1664
|
],
|
|
1665
1665
|
"cssTokens": [
|
|
1666
|
-
"--ngs-
|
|
1666
|
+
"--ngs-avatar-size",
|
|
1667
|
+
"--ngs-chip-background",
|
|
1668
|
+
"--ngs-chip-border-color",
|
|
1667
1669
|
"--ngs-chip-color",
|
|
1668
1670
|
"--ngs-chip-font-size",
|
|
1669
1671
|
"--ngs-chip-font-weight",
|
|
1670
1672
|
"--ngs-chip-height",
|
|
1673
|
+
"--ngs-chip-input-height",
|
|
1671
1674
|
"--ngs-chip-outline-color",
|
|
1672
1675
|
"--ngs-chip-padding",
|
|
1673
1676
|
"--ngs-chip-radius",
|
|
1674
|
-
"--ngs-chip-selected-
|
|
1677
|
+
"--ngs-chip-selected-background",
|
|
1675
1678
|
"--ngs-chip-selected-color",
|
|
1676
1679
|
"--ngs-chip-set-gap",
|
|
1677
1680
|
"--ngs-chip-set-spacing",
|
|
@@ -1681,7 +1684,9 @@
|
|
|
1681
1684
|
"--ngs-color-outline-variant",
|
|
1682
1685
|
"--ngs-color-primary",
|
|
1683
1686
|
"--ngs-color-surface-container-high",
|
|
1687
|
+
"--ngs-field-input-height",
|
|
1684
1688
|
"--ngs-font-size-xs",
|
|
1689
|
+
"--ngs-form-field-input-height",
|
|
1685
1690
|
"--ngs-icon-size",
|
|
1686
1691
|
"--ngs-radius-xl"
|
|
1687
1692
|
],
|
|
@@ -4149,6 +4154,7 @@
|
|
|
4149
4154
|
],
|
|
4150
4155
|
"inputs": [
|
|
4151
4156
|
"align",
|
|
4157
|
+
"sameHeightAsButton",
|
|
4152
4158
|
"subscriptHiddenIfEmpty"
|
|
4153
4159
|
],
|
|
4154
4160
|
"outputs": [],
|
|
@@ -7531,6 +7537,7 @@
|
|
|
7531
7537
|
"useWhen": "Use ngs-select inside one ngs-form-field when a form, filter, setting, table filter, DataView filter, or admin configuration field should choose from predefined options. Use ngs-option for options, ngs-optgroup for visible grouping, multiple for array values, placeholder, required, disabled, Angular forms, value, and selectionChange for state. Use ngs-select-trigger to customize the closed label, and ngs-select-header, ngs-select-body, or ngs-select-footer when the dropdown panel needs search, custom scrolling, or supporting controls. Do not use Select as a command menu or action list; use Menu. Do not use for route or page navigation; use Navigation, Tabs, Sidebar, Sidenav, or RailNav. Do not use for compact visible mode switching; use Segmented. Do not use for simple visible choices or rich card choices; use Radio or RadioCard. Do not use for arbitrary free text or large remote search suggestion flows; use Autocomplete or a dedicated async picker. Do not use generic Select when a domain-specific control exists, such as CountrySelect, CurrencySelect, DateFormatSelect, or TimezoneSelect.",
|
|
7532
7538
|
"exampleTopics": [
|
|
7533
7539
|
"Basic Select",
|
|
7540
|
+
"Clearable Select",
|
|
7534
7541
|
"Getting and setting the select value",
|
|
7535
7542
|
"Form Field Features",
|
|
7536
7543
|
"Disabled",
|
|
@@ -7544,25 +7551,25 @@
|
|
|
7544
7551
|
"Custom trigger",
|
|
7545
7552
|
"Select search"
|
|
7546
7553
|
],
|
|
7547
|
-
"minimalExample": "<p>Basic
|
|
7554
|
+
"minimalExample": "<p>Basic ngs-select</p>\n<ngs-form-field class=\"w-1/2\">\n <ngs-label>Favorite food</ngs-label>\n <ngs-select>\n @for (food of foods; track food) {\n <ngs-option [value]=\"food.value\">{{food.viewValue}}</ngs-option>\n }\n </ngs-select>\n</ngs-form-field>",
|
|
7548
7555
|
"exampleFiles": [
|
|
7549
7556
|
{
|
|
7550
7557
|
"name": "basic-select-example",
|
|
7551
7558
|
"title": "Basic select",
|
|
7552
7559
|
"file": "projects/docs/src/app/forms/select/_examples/basic-select-example/basic-select-example.html",
|
|
7553
|
-
"source": "<p>Basic
|
|
7560
|
+
"source": "<p>Basic ngs-select</p>\n<ngs-form-field class=\"w-1/2\">\n <ngs-label>Favorite food</ngs-label>\n <ngs-select>\n @for (food of foods; track food) {\n <ngs-option [value]=\"food.value\">{{food.viewValue}}</ngs-option>\n }\n </ngs-select>\n</ngs-form-field>"
|
|
7561
|
+
},
|
|
7562
|
+
{
|
|
7563
|
+
"name": "clearable-select-example",
|
|
7564
|
+
"title": "Clearable select",
|
|
7565
|
+
"file": "projects/docs/src/app/forms/select/_examples/clearable-select-example/clearable-select-example.html",
|
|
7566
|
+
"source": "<ngs-form-field class=\"w-1/2\">\n <ngs-label>Status</ngs-label>\n <ngs-select [formControl]=\"status()\" clearable>\n @for (statusOption of statuses(); track statusOption.value) {\n <ngs-option [value]=\"statusOption.value\">{{ statusOption.label }}</ngs-option>\n }\n </ngs-select>\n</ngs-form-field>"
|
|
7554
7567
|
},
|
|
7555
7568
|
{
|
|
7556
7569
|
"name": "custom-trigger-example",
|
|
7557
7570
|
"title": "Custom trigger",
|
|
7558
7571
|
"file": "projects/docs/src/app/forms/select/_examples/custom-trigger-example/custom-trigger-example.html",
|
|
7559
7572
|
"source": "<ngs-form-field class=\"w-1/2\">\n <ngs-label>Toppings</ngs-label>\n <ngs-select [formControl]=\"toppings\" multiple>\n <ngs-select-trigger>\n {{ toppings.value?.[0] || '' }}\n @if ((toppings.value?.length || 0) > 1) {\n <span class=\"opacity-75 text-sm\">\n (+{{ (toppings.value?.length || 0) - 1 }} {{ toppings.value?.length === 2 ? 'other' : 'others' }})\n </span>\n }\n </ngs-select-trigger>\n @for (topping of toppingList; track topping) {\n <ngs-option [value]=\"topping\">{{topping}}</ngs-option>\n }\n </ngs-select>\n</ngs-form-field>"
|
|
7560
|
-
},
|
|
7561
|
-
{
|
|
7562
|
-
"name": "disabled-example",
|
|
7563
|
-
"title": "Disabled",
|
|
7564
|
-
"file": "projects/docs/src/app/forms/select/_examples/disabled-example/disabled-example.html",
|
|
7565
|
-
"source": "<p>\n <ngs-checkbox [formControl]=\"disableSelect\">Disable select</ngs-checkbox>\n</p>\n<ngs-form-field class=\"w-1/2\">\n <ngs-label>Choose an option</ngs-label>\n <ngs-select [disabled]=\"disableSelect.value\">\n <ngs-option value=\"option1\">Option 1</ngs-option>\n <ngs-option value=\"option2\" disabled>Option 2 (disabled)</ngs-option>\n <ngs-option value=\"option3\">Option 3</ngs-option>\n </ngs-select>\n</ngs-form-field>"
|
|
7566
7573
|
}
|
|
7567
7574
|
],
|
|
7568
7575
|
"previewAsset": "projects/components/select/preview.svg",
|
|
@@ -7590,6 +7597,7 @@
|
|
|
7590
7597
|
"inputs": [
|
|
7591
7598
|
"aria-describedby",
|
|
7592
7599
|
"aria-label",
|
|
7600
|
+
"clearable",
|
|
7593
7601
|
"disabled",
|
|
7594
7602
|
"hideCheckIcon",
|
|
7595
7603
|
"id",
|
|
@@ -7607,6 +7615,7 @@
|
|
|
7607
7615
|
"selectionChange"
|
|
7608
7616
|
],
|
|
7609
7617
|
"cssTokens": [
|
|
7618
|
+
"--ngs-color-danger",
|
|
7610
7619
|
"--ngs-color-on-primary",
|
|
7611
7620
|
"--ngs-color-on-surface",
|
|
7612
7621
|
"--ngs-color-on-surface-variant",
|
|
@@ -7640,6 +7649,11 @@
|
|
|
7640
7649
|
"--ngs-select-arrow-container-width",
|
|
7641
7650
|
"--ngs-select-arrow-size",
|
|
7642
7651
|
"--ngs-select-border-color",
|
|
7652
|
+
"--ngs-select-clear-color",
|
|
7653
|
+
"--ngs-select-clear-container-width",
|
|
7654
|
+
"--ngs-select-clear-hover-color",
|
|
7655
|
+
"--ngs-select-clear-icon-size",
|
|
7656
|
+
"--ngs-select-clear-overlap",
|
|
7643
7657
|
"--ngs-select-content-padding",
|
|
7644
7658
|
"--ngs-select-font-size",
|
|
7645
7659
|
"--ngs-select-min-width",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, input, booleanAttribute, output,
|
|
2
|
+
import { inject, ElementRef, input, booleanAttribute, output, ChangeDetectionStrategy, Component, ChangeDetectorRef, viewChild, signal, forwardRef, computed, contentChildren, effect, ViewEncapsulation, Directive } from '@angular/core';
|
|
3
3
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
5
|
import { AutoFocusDirective } from '@ngstarter-ui/components/core';
|
|
@@ -26,18 +26,18 @@ class Chip {
|
|
|
26
26
|
_handleBlur() {
|
|
27
27
|
}
|
|
28
28
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Chip, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: Chip, isStandalone: true, selector: "ngs-chip", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { destroyed: "destroyed", removed: "removed" }, host: { properties: { "class.ngs-chip-disabled": "disabled()", "attr.appearance": "appearance()", "attr.aria-disabled": "disabled()" }, classAttribute: "ngs-chip" }, ngImport: i0, template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: ["
|
|
29
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: Chip, isStandalone: true, selector: "ngs-chip", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { destroyed: "destroyed", removed: "removed" }, host: { properties: { "class.ngs-chip-disabled": "disabled()", "attr.appearance": "appearance()", "attr.aria-disabled": "disabled()" }, classAttribute: "ngs-chip" }, exportAs: ["ngsChip"], ngImport: i0, template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n #editInput\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: [":host{--ngs-chip-background: var(--ngs-color-surface-container-high);--ngs-chip-color: var(--ngs-color-on-surface);--ngs-chip-radius: var(--ngs-radius-xl);--ngs-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-chip-font-size: var(--ngs-font-size-xs);--ngs-chip-font-weight: 500;--ngs-chip-height: calc(var(--spacing, .25rem) * 8);--ngs-chip-border-color: var(--ngs-chip-outline-color, var(--ngs-color-outline-variant));--ngs-chip-selected-background: var(--ngs-color-primary);--ngs-chip-selected-color: var(--ngs-color-on-primary);display:inline-flex;align-items:center;border-radius:var(--ngs-chip-radius);padding:var(--ngs-chip-padding);font-size:var(--ngs-chip-font-size);font-weight:var(--ngs-chip-font-weight);height:var(--ngs-chip-height);box-sizing:border-box;vertical-align:middle;white-space:nowrap;position:relative;overflow:hidden;cursor:pointer}:host[appearance=filled],:host.ngs-chip-filled{background:var(--ngs-chip-background);color:var(--ngs-chip-color)}:host[appearance=outlined],:host.ngs-chip-outlined{--ngs-chip-background: transparent;color:var(--ngs-chip-color);border:1px solid var(--ngs-chip-border-color)}:host[appearance=outlined].ngs-chip-selected,:host.ngs-chip-outlined.ngs-chip-selected{border-color:var(--ngs-chip-selected-background)}:host:not(.ngs-chip-selected):not(.ngs-chip-editing):hover{filter:brightness(97%)}:host:has(.avatar:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.shape:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.ngs-chip-remove:not(:empty)){padding-right:calc(var(--spacing, .25rem) * 1.5)}:host .avatar{position:relative;margin-right:calc(var(--spacing, .25rem) * 1);display:flex;height:100%;justify-content:center;align-items:center}:host .avatar:empty{display:none}:host .avatar ::ng-deep ngs-avatar,:host .avatar ::ng-deep ngs-dicebear{--ngs-avatar-size: calc(var(--spacing, .25rem) * 6)}:host .avatar ::ng-deep img{width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border-radius:50%}:host .shape{position:relative;max-height:max-content;display:flex;align-items:center;justify-content:center}:host .shape:empty{display:none}:host.ngs-chip-disabled{opacity:.4;cursor:default;pointer-events:none}:host .ngs-chip-content{display:flex;align-items:center;width:100%;height:100%;gap:calc(var(--spacing, .25rem) * 1)}:host .controls{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * .5)}:host .controls:empty{display:none}:host .controls ::ng-deep .ngs-chip-edit,:host .controls ::ng-deep .ngs-chip-remove{--ngs-icon-size: calc(var(--spacing, .25rem) * 4);appearance:none;display:inline-flex;align-items:center;justify-content:center;flex:none;width:calc(var(--spacing, .25rem) * 5);height:calc(var(--spacing, .25rem) * 5);padding:0;margin:0;border:0;border-radius:50%;background:transparent;color:inherit;font:inherit;line-height:1;vertical-align:middle;cursor:pointer;opacity:.65}:host .controls ::ng-deep .ngs-chip-edit:hover,:host .controls ::ng-deep .ngs-chip-remove:hover{opacity:1}:host .controls ::ng-deep .ngs-chip-remove:hover{color:var(--ngs-color-danger)}:host .ngs-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .ngs-chip-label[contenteditable=true]{display:inline-block;min-width:calc(var(--spacing, .25rem) * 5);outline:none;margin-inline-end:calc(var(--spacing, .25rem) * 2)}:host .ngs-chip-avatar{margin-right:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;justify-content:center}:host.ngs-chip-editing .avatar,:host.ngs-chip-editing .controls{display:none}:host.ngs-chip-selected{--ngs-chip-background: var(--ngs-chip-selected-background);--ngs-chip-color: var(--ngs-chip-selected-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: AutoFocusDirective, selector: "[ngsAutoFocus]", inputs: ["ngsAutoFocus"], exportAs: ["ngsAutoFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
30
30
|
}
|
|
31
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Chip, decorators: [{
|
|
32
32
|
type: Component,
|
|
33
|
-
args: [{ selector: 'ngs-chip',
|
|
33
|
+
args: [{ selector: 'ngs-chip', exportAs: 'ngsChip', imports: [
|
|
34
|
+
AutoFocusDirective
|
|
35
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
34
36
|
'class': 'ngs-chip',
|
|
35
37
|
'[class.ngs-chip-disabled]': 'disabled()',
|
|
36
38
|
'[attr.appearance]': 'appearance()',
|
|
37
39
|
'[attr.aria-disabled]': 'disabled()',
|
|
38
|
-
},
|
|
39
|
-
AutoFocusDirective
|
|
40
|
-
], template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: [".ngs-chip{--ngs-chip-bg: var(--ngs-color-surface-container-high);--ngs-chip-color: var(--ngs-color-on-surface);--ngs-chip-radius: var(--ngs-radius-xl);--ngs-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-chip-font-size: var(--ngs-font-size-xs);--ngs-chip-font-weight: 500;--ngs-chip-height: calc(var(--spacing, .25rem) * 8);display:inline-flex;align-items:center;border-radius:var(--ngs-chip-radius);padding:var(--ngs-chip-padding);font-size:var(--ngs-chip-font-size);font-weight:var(--ngs-chip-font-weight);height:var(--ngs-chip-height);box-sizing:border-box;vertical-align:middle;white-space:nowrap;position:relative;overflow:hidden;cursor:pointer}.ngs-chip[appearance=filled]{background:var(--ngs-chip-bg);color:var(--ngs-chip-color)}.ngs-chip[appearance=outlined]{background:transparent;color:var(--ngs-chip-color);border:1px solid var(--ngs-chip-outline-color, var(--ngs-color-outline-variant))}.ngs-chip[appearance=outlined].ngs-chip-selected{border-color:var(--ngs-chip-selected-bg, var(--ngs-color-primary))}.ngs-chip:not(.ngs-chip-selected):not(.ngs-chip-editing):hover{filter:brightness(97%)}.ngs-chip:has(.avatar:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}.ngs-chip:has(.shape:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}.ngs-chip:has(.ngs-chip-remove:not(:empty)){padding-right:calc(var(--spacing, .25rem) * 1.5)}.ngs-chip .avatar{position:relative;margin-right:calc(var(--spacing, .25rem) * 1.5)}.ngs-chip .avatar:empty{display:none}.ngs-chip .avatar img{width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border-radius:50%}.ngs-chip .shape{position:relative;max-height:max-content;display:flex;align-items:center;justify-content:center}.ngs-chip .shape:empty{display:none}.ngs-chip.ngs-chip-disabled{opacity:.4;cursor:default;pointer-events:none}.ngs-chip .ngs-chip-content{display:flex;align-items:center;width:100%;height:100%;gap:calc(var(--spacing, .25rem) * 1)}.ngs-chip .controls{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 1)}.ngs-chip .controls:empty{display:none}.ngs-chip .ngs-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngs-chip .ngs-chip-label[contenteditable=true]{display:inline-block;min-width:calc(var(--spacing, .25rem) * 5);outline:none;margin-inline-end:calc(var(--spacing, .25rem) * 2)}.ngs-chip .ngs-chip-avatar{margin-right:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;justify-content:center}.ngs-chip .ngs-chip-edit,.ngs-chip .ngs-chip-remove{line-height:0;--ngs-icon-size: calc(var(--spacing, .25rem) * 5);cursor:pointer;opacity:.55}.ngs-chip .ngs-chip-edit:hover,.ngs-chip .ngs-chip-remove:hover{opacity:1}.ngs-chip .ngs-chip-remove:hover{color:var(--ngs-color-danger)}.ngs-chip.ngs-chip-editing .avatar,.ngs-chip.ngs-chip-editing .controls{display:none}.ngs-chip.ngs-chip-selected{--ngs-chip-bg: var(--ngs-chip-selected-bg, var(--ngs-color-primary));--ngs-chip-color: var(--ngs-chip-selected-color, var(--ngs-color-on-primary))}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
40
|
+
}, template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n #editInput\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: [":host{--ngs-chip-background: var(--ngs-color-surface-container-high);--ngs-chip-color: var(--ngs-color-on-surface);--ngs-chip-radius: var(--ngs-radius-xl);--ngs-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-chip-font-size: var(--ngs-font-size-xs);--ngs-chip-font-weight: 500;--ngs-chip-height: calc(var(--spacing, .25rem) * 8);--ngs-chip-border-color: var(--ngs-chip-outline-color, var(--ngs-color-outline-variant));--ngs-chip-selected-background: var(--ngs-color-primary);--ngs-chip-selected-color: var(--ngs-color-on-primary);display:inline-flex;align-items:center;border-radius:var(--ngs-chip-radius);padding:var(--ngs-chip-padding);font-size:var(--ngs-chip-font-size);font-weight:var(--ngs-chip-font-weight);height:var(--ngs-chip-height);box-sizing:border-box;vertical-align:middle;white-space:nowrap;position:relative;overflow:hidden;cursor:pointer}:host[appearance=filled],:host.ngs-chip-filled{background:var(--ngs-chip-background);color:var(--ngs-chip-color)}:host[appearance=outlined],:host.ngs-chip-outlined{--ngs-chip-background: transparent;color:var(--ngs-chip-color);border:1px solid var(--ngs-chip-border-color)}:host[appearance=outlined].ngs-chip-selected,:host.ngs-chip-outlined.ngs-chip-selected{border-color:var(--ngs-chip-selected-background)}:host:not(.ngs-chip-selected):not(.ngs-chip-editing):hover{filter:brightness(97%)}:host:has(.avatar:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.shape:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.ngs-chip-remove:not(:empty)){padding-right:calc(var(--spacing, .25rem) * 1.5)}:host .avatar{position:relative;margin-right:calc(var(--spacing, .25rem) * 1);display:flex;height:100%;justify-content:center;align-items:center}:host .avatar:empty{display:none}:host .avatar ::ng-deep ngs-avatar,:host .avatar ::ng-deep ngs-dicebear{--ngs-avatar-size: calc(var(--spacing, .25rem) * 6)}:host .avatar ::ng-deep img{width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border-radius:50%}:host .shape{position:relative;max-height:max-content;display:flex;align-items:center;justify-content:center}:host .shape:empty{display:none}:host.ngs-chip-disabled{opacity:.4;cursor:default;pointer-events:none}:host .ngs-chip-content{display:flex;align-items:center;width:100%;height:100%;gap:calc(var(--spacing, .25rem) * 1)}:host .controls{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * .5)}:host .controls:empty{display:none}:host .controls ::ng-deep .ngs-chip-edit,:host .controls ::ng-deep .ngs-chip-remove{--ngs-icon-size: calc(var(--spacing, .25rem) * 4);appearance:none;display:inline-flex;align-items:center;justify-content:center;flex:none;width:calc(var(--spacing, .25rem) * 5);height:calc(var(--spacing, .25rem) * 5);padding:0;margin:0;border:0;border-radius:50%;background:transparent;color:inherit;font:inherit;line-height:1;vertical-align:middle;cursor:pointer;opacity:.65}:host .controls ::ng-deep .ngs-chip-edit:hover,:host .controls ::ng-deep .ngs-chip-remove:hover{opacity:1}:host .controls ::ng-deep .ngs-chip-remove:hover{color:var(--ngs-color-danger)}:host .ngs-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .ngs-chip-label[contenteditable=true]{display:inline-block;min-width:calc(var(--spacing, .25rem) * 5);outline:none;margin-inline-end:calc(var(--spacing, .25rem) * 2)}:host .ngs-chip-avatar{margin-right:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;justify-content:center}:host.ngs-chip-editing .avatar,:host.ngs-chip-editing .controls{display:none}:host.ngs-chip-selected{--ngs-chip-background: var(--ngs-chip-selected-background);--ngs-chip-color: var(--ngs-chip-selected-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
41
41
|
}], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], destroyed: [{ type: i0.Output, args: ["destroyed"] }], removed: [{ type: i0.Output, args: ["removed"] }] } });
|
|
42
42
|
|
|
43
43
|
class ChipRow extends Chip {
|
|
@@ -99,7 +99,7 @@ class ChipRow extends Chip {
|
|
|
99
99
|
provide: Chip,
|
|
100
100
|
useExisting: forwardRef(() => ChipRow)
|
|
101
101
|
}
|
|
102
|
-
], viewQueries: [{ propertyName: "_editInput", first: true, predicate: ["editInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: ["
|
|
102
|
+
], viewQueries: [{ propertyName: "_editInput", first: true, predicate: ["editInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n #editInput\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: [":host{--ngs-chip-background: var(--ngs-color-surface-container-high);--ngs-chip-color: var(--ngs-color-on-surface);--ngs-chip-radius: var(--ngs-radius-xl);--ngs-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-chip-font-size: var(--ngs-font-size-xs);--ngs-chip-font-weight: 500;--ngs-chip-height: calc(var(--spacing, .25rem) * 8);--ngs-chip-border-color: var(--ngs-chip-outline-color, var(--ngs-color-outline-variant));--ngs-chip-selected-background: var(--ngs-color-primary);--ngs-chip-selected-color: var(--ngs-color-on-primary);display:inline-flex;align-items:center;border-radius:var(--ngs-chip-radius);padding:var(--ngs-chip-padding);font-size:var(--ngs-chip-font-size);font-weight:var(--ngs-chip-font-weight);height:var(--ngs-chip-height);box-sizing:border-box;vertical-align:middle;white-space:nowrap;position:relative;overflow:hidden;cursor:pointer}:host[appearance=filled],:host.ngs-chip-filled{background:var(--ngs-chip-background);color:var(--ngs-chip-color)}:host[appearance=outlined],:host.ngs-chip-outlined{--ngs-chip-background: transparent;color:var(--ngs-chip-color);border:1px solid var(--ngs-chip-border-color)}:host[appearance=outlined].ngs-chip-selected,:host.ngs-chip-outlined.ngs-chip-selected{border-color:var(--ngs-chip-selected-background)}:host:not(.ngs-chip-selected):not(.ngs-chip-editing):hover{filter:brightness(97%)}:host:has(.avatar:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.shape:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.ngs-chip-remove:not(:empty)){padding-right:calc(var(--spacing, .25rem) * 1.5)}:host .avatar{position:relative;margin-right:calc(var(--spacing, .25rem) * 1);display:flex;height:100%;justify-content:center;align-items:center}:host .avatar:empty{display:none}:host .avatar ::ng-deep ngs-avatar,:host .avatar ::ng-deep ngs-dicebear{--ngs-avatar-size: calc(var(--spacing, .25rem) * 6)}:host .avatar ::ng-deep img{width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border-radius:50%}:host .shape{position:relative;max-height:max-content;display:flex;align-items:center;justify-content:center}:host .shape:empty{display:none}:host.ngs-chip-disabled{opacity:.4;cursor:default;pointer-events:none}:host .ngs-chip-content{display:flex;align-items:center;width:100%;height:100%;gap:calc(var(--spacing, .25rem) * 1)}:host .controls{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * .5)}:host .controls:empty{display:none}:host .controls ::ng-deep .ngs-chip-edit,:host .controls ::ng-deep .ngs-chip-remove{--ngs-icon-size: calc(var(--spacing, .25rem) * 4);appearance:none;display:inline-flex;align-items:center;justify-content:center;flex:none;width:calc(var(--spacing, .25rem) * 5);height:calc(var(--spacing, .25rem) * 5);padding:0;margin:0;border:0;border-radius:50%;background:transparent;color:inherit;font:inherit;line-height:1;vertical-align:middle;cursor:pointer;opacity:.65}:host .controls ::ng-deep .ngs-chip-edit:hover,:host .controls ::ng-deep .ngs-chip-remove:hover{opacity:1}:host .controls ::ng-deep .ngs-chip-remove:hover{color:var(--ngs-color-danger)}:host .ngs-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .ngs-chip-label[contenteditable=true]{display:inline-block;min-width:calc(var(--spacing, .25rem) * 5);outline:none;margin-inline-end:calc(var(--spacing, .25rem) * 2)}:host .ngs-chip-avatar{margin-right:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;justify-content:center}:host.ngs-chip-editing .avatar,:host.ngs-chip-editing .controls{display:none}:host.ngs-chip-selected{--ngs-chip-background: var(--ngs-chip-selected-background);--ngs-chip-color: var(--ngs-chip-selected-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: AutoFocusDirective, selector: "[ngsAutoFocus]", inputs: ["ngsAutoFocus"], exportAs: ["ngsAutoFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
103
103
|
}
|
|
104
104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ChipRow, decorators: [{
|
|
105
105
|
type: Component,
|
|
@@ -114,14 +114,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
114
114
|
'role': 'row',
|
|
115
115
|
'(keydown)': '_handleKeydown($event)',
|
|
116
116
|
'(click)': '_handleClick($event)',
|
|
117
|
-
}, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush,
|
|
117
|
+
}, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
118
118
|
AutoFocusDirective
|
|
119
119
|
], providers: [
|
|
120
120
|
{
|
|
121
121
|
provide: Chip,
|
|
122
122
|
useExisting: forwardRef(() => ChipRow)
|
|
123
123
|
}
|
|
124
|
-
], template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: ["
|
|
124
|
+
], template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n #editInput\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: [":host{--ngs-chip-background: var(--ngs-color-surface-container-high);--ngs-chip-color: var(--ngs-color-on-surface);--ngs-chip-radius: var(--ngs-radius-xl);--ngs-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-chip-font-size: var(--ngs-font-size-xs);--ngs-chip-font-weight: 500;--ngs-chip-height: calc(var(--spacing, .25rem) * 8);--ngs-chip-border-color: var(--ngs-chip-outline-color, var(--ngs-color-outline-variant));--ngs-chip-selected-background: var(--ngs-color-primary);--ngs-chip-selected-color: var(--ngs-color-on-primary);display:inline-flex;align-items:center;border-radius:var(--ngs-chip-radius);padding:var(--ngs-chip-padding);font-size:var(--ngs-chip-font-size);font-weight:var(--ngs-chip-font-weight);height:var(--ngs-chip-height);box-sizing:border-box;vertical-align:middle;white-space:nowrap;position:relative;overflow:hidden;cursor:pointer}:host[appearance=filled],:host.ngs-chip-filled{background:var(--ngs-chip-background);color:var(--ngs-chip-color)}:host[appearance=outlined],:host.ngs-chip-outlined{--ngs-chip-background: transparent;color:var(--ngs-chip-color);border:1px solid var(--ngs-chip-border-color)}:host[appearance=outlined].ngs-chip-selected,:host.ngs-chip-outlined.ngs-chip-selected{border-color:var(--ngs-chip-selected-background)}:host:not(.ngs-chip-selected):not(.ngs-chip-editing):hover{filter:brightness(97%)}:host:has(.avatar:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.shape:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.ngs-chip-remove:not(:empty)){padding-right:calc(var(--spacing, .25rem) * 1.5)}:host .avatar{position:relative;margin-right:calc(var(--spacing, .25rem) * 1);display:flex;height:100%;justify-content:center;align-items:center}:host .avatar:empty{display:none}:host .avatar ::ng-deep ngs-avatar,:host .avatar ::ng-deep ngs-dicebear{--ngs-avatar-size: calc(var(--spacing, .25rem) * 6)}:host .avatar ::ng-deep img{width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border-radius:50%}:host .shape{position:relative;max-height:max-content;display:flex;align-items:center;justify-content:center}:host .shape:empty{display:none}:host.ngs-chip-disabled{opacity:.4;cursor:default;pointer-events:none}:host .ngs-chip-content{display:flex;align-items:center;width:100%;height:100%;gap:calc(var(--spacing, .25rem) * 1)}:host .controls{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * .5)}:host .controls:empty{display:none}:host .controls ::ng-deep .ngs-chip-edit,:host .controls ::ng-deep .ngs-chip-remove{--ngs-icon-size: calc(var(--spacing, .25rem) * 4);appearance:none;display:inline-flex;align-items:center;justify-content:center;flex:none;width:calc(var(--spacing, .25rem) * 5);height:calc(var(--spacing, .25rem) * 5);padding:0;margin:0;border:0;border-radius:50%;background:transparent;color:inherit;font:inherit;line-height:1;vertical-align:middle;cursor:pointer;opacity:.65}:host .controls ::ng-deep .ngs-chip-edit:hover,:host .controls ::ng-deep .ngs-chip-remove:hover{opacity:1}:host .controls ::ng-deep .ngs-chip-remove:hover{color:var(--ngs-color-danger)}:host .ngs-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .ngs-chip-label[contenteditable=true]{display:inline-block;min-width:calc(var(--spacing, .25rem) * 5);outline:none;margin-inline-end:calc(var(--spacing, .25rem) * 2)}:host .ngs-chip-avatar{margin-right:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;justify-content:center}:host.ngs-chip-editing .avatar,:host.ngs-chip-editing .controls{display:none}:host.ngs-chip-selected{--ngs-chip-background: var(--ngs-chip-selected-background);--ngs-chip-color: var(--ngs-chip-selected-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
125
125
|
}], propDecorators: { _editInput: [{ type: i0.ViewChild, args: ['editInput', { isSignal: true }] }], editable: [{ type: i0.Input, args: [{ isSignal: true, alias: "editable", required: false }] }], edited: [{ type: i0.Output, args: ["edited"] }] } });
|
|
126
126
|
|
|
127
127
|
let nextId = 0;
|
|
@@ -146,6 +146,7 @@ class ChipGrid {
|
|
|
146
146
|
stateChanges = signal(undefined, ...(ngDevMode ? [{ debugName: "stateChanges" }] : /* istanbul ignore next */ []));
|
|
147
147
|
_focused = signal(false, ...(ngDevMode ? [{ debugName: "_focused" }] : /* istanbul ignore next */ []));
|
|
148
148
|
get focused() { return this._focused(); }
|
|
149
|
+
get multiline() { return this._chipsLength() > 0; }
|
|
149
150
|
_errorState = signal(false, ...(ngDevMode ? [{ debugName: "_errorState" }] : /* istanbul ignore next */ []));
|
|
150
151
|
get errorState() { return this._errorState(); }
|
|
151
152
|
_chipsLength = signal(0, ...(ngDevMode ? [{ debugName: "_chipsLength" }] : /* istanbul ignore next */ []));
|
|
@@ -235,7 +236,7 @@ class ChipGrid {
|
|
|
235
236
|
provide: FormFieldControl,
|
|
236
237
|
useExisting: forwardRef(() => ChipGrid),
|
|
237
238
|
},
|
|
238
|
-
], queries: [{ propertyName: "_chips", predicate: ChipRow, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content />\n", styles: [":host{--ngs-chip-set-gap: var(--ngs-chip-set-spacing, calc(var(--spacing, .25rem) * 2));display:flex;flex-wrap:wrap;gap:var(--ngs-chip-set-gap)}:host ::ng-deep .ngs-chip-input{outline:none;width:100
|
|
239
|
+
], queries: [{ propertyName: "_chips", predicate: ChipRow, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content />\n", styles: [":host{--ngs-chip-set-gap: var(--ngs-chip-set-spacing, calc(var(--spacing, .25rem) * 2));--ngs-chip-input-height: var(--ngs-form-field-input-height, var(--ngs-field-input-height, 1.25rem));display:flex;flex-wrap:wrap;align-items:center;gap:var(--ngs-chip-set-gap);width:100%}:host ::ng-deep .ngs-chip-input{outline:none;flex:1 0 100%;min-width:0;max-width:100%;width:100%!important;height:var(--ngs-chip-input-height);min-height:var(--ngs-chip-input-height);box-sizing:border-box}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
239
240
|
}
|
|
240
241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ChipGrid, decorators: [{
|
|
241
242
|
type: Component,
|
|
@@ -249,12 +250,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
249
250
|
provide: FormFieldControl,
|
|
250
251
|
useExisting: forwardRef(() => ChipGrid),
|
|
251
252
|
},
|
|
252
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content />\n", styles: [":host{--ngs-chip-set-gap: var(--ngs-chip-set-spacing, calc(var(--spacing, .25rem) * 2));display:flex;flex-wrap:wrap;gap:var(--ngs-chip-set-gap)}:host ::ng-deep .ngs-chip-input{outline:none;width:100
|
|
253
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content />\n", styles: [":host{--ngs-chip-set-gap: var(--ngs-chip-set-spacing, calc(var(--spacing, .25rem) * 2));--ngs-chip-input-height: var(--ngs-form-field-input-height, var(--ngs-field-input-height, 1.25rem));display:flex;flex-wrap:wrap;align-items:center;gap:var(--ngs-chip-set-gap);width:100%}:host ::ng-deep .ngs-chip-input{outline:none;flex:1 0 100%;min-width:0;max-width:100%;width:100%!important;height:var(--ngs-chip-input-height);min-height:var(--ngs-chip-input-height);box-sizing:border-box}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
253
254
|
}], ctorParameters: () => [], propDecorators: { _id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], _placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], _required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], _disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], _chips: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ChipRow), { ...{ descendants: true }, isSignal: true }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
|
|
254
255
|
|
|
255
256
|
class ChipOption extends Chip {
|
|
256
257
|
selected = input(false, { ...(ngDevMode ? { debugName: "selected" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
257
|
-
_internalSelected = false;
|
|
258
|
+
_internalSelected = signal(false, ...(ngDevMode ? [{ debugName: "_internalSelected" }] : /* istanbul ignore next */ []));
|
|
258
259
|
constructor() {
|
|
259
260
|
super();
|
|
260
261
|
effect(() => {
|
|
@@ -262,10 +263,10 @@ class ChipOption extends Chip {
|
|
|
262
263
|
});
|
|
263
264
|
}
|
|
264
265
|
get isSelected() {
|
|
265
|
-
return this._internalSelected;
|
|
266
|
+
return this._internalSelected();
|
|
266
267
|
}
|
|
267
268
|
_setSelected(value) {
|
|
268
|
-
this._internalSelected
|
|
269
|
+
this._internalSelected.set(value);
|
|
269
270
|
}
|
|
270
271
|
selectionChange = output();
|
|
271
272
|
toggleSelected() {
|
|
@@ -280,11 +281,18 @@ class ChipOption extends Chip {
|
|
|
280
281
|
provide: Chip,
|
|
281
282
|
useExisting: forwardRef(() => ChipOption)
|
|
282
283
|
}
|
|
283
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: ["
|
|
284
|
+
], exportAs: ["ngsChipOption"], usesInheritance: true, ngImport: i0, template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n #editInput\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: [":host{--ngs-chip-background: var(--ngs-color-surface-container-high);--ngs-chip-color: var(--ngs-color-on-surface);--ngs-chip-radius: var(--ngs-radius-xl);--ngs-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-chip-font-size: var(--ngs-font-size-xs);--ngs-chip-font-weight: 500;--ngs-chip-height: calc(var(--spacing, .25rem) * 8);--ngs-chip-border-color: var(--ngs-chip-outline-color, var(--ngs-color-outline-variant));--ngs-chip-selected-background: var(--ngs-color-primary);--ngs-chip-selected-color: var(--ngs-color-on-primary);display:inline-flex;align-items:center;border-radius:var(--ngs-chip-radius);padding:var(--ngs-chip-padding);font-size:var(--ngs-chip-font-size);font-weight:var(--ngs-chip-font-weight);height:var(--ngs-chip-height);box-sizing:border-box;vertical-align:middle;white-space:nowrap;position:relative;overflow:hidden;cursor:pointer}:host[appearance=filled],:host.ngs-chip-filled{background:var(--ngs-chip-background);color:var(--ngs-chip-color)}:host[appearance=outlined],:host.ngs-chip-outlined{--ngs-chip-background: transparent;color:var(--ngs-chip-color);border:1px solid var(--ngs-chip-border-color)}:host[appearance=outlined].ngs-chip-selected,:host.ngs-chip-outlined.ngs-chip-selected{border-color:var(--ngs-chip-selected-background)}:host:not(.ngs-chip-selected):not(.ngs-chip-editing):hover{filter:brightness(97%)}:host:has(.avatar:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.shape:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.ngs-chip-remove:not(:empty)){padding-right:calc(var(--spacing, .25rem) * 1.5)}:host .avatar{position:relative;margin-right:calc(var(--spacing, .25rem) * 1);display:flex;height:100%;justify-content:center;align-items:center}:host .avatar:empty{display:none}:host .avatar ::ng-deep ngs-avatar,:host .avatar ::ng-deep ngs-dicebear{--ngs-avatar-size: calc(var(--spacing, .25rem) * 6)}:host .avatar ::ng-deep img{width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border-radius:50%}:host .shape{position:relative;max-height:max-content;display:flex;align-items:center;justify-content:center}:host .shape:empty{display:none}:host.ngs-chip-disabled{opacity:.4;cursor:default;pointer-events:none}:host .ngs-chip-content{display:flex;align-items:center;width:100%;height:100%;gap:calc(var(--spacing, .25rem) * 1)}:host .controls{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * .5)}:host .controls:empty{display:none}:host .controls ::ng-deep .ngs-chip-edit,:host .controls ::ng-deep .ngs-chip-remove{--ngs-icon-size: calc(var(--spacing, .25rem) * 4);appearance:none;display:inline-flex;align-items:center;justify-content:center;flex:none;width:calc(var(--spacing, .25rem) * 5);height:calc(var(--spacing, .25rem) * 5);padding:0;margin:0;border:0;border-radius:50%;background:transparent;color:inherit;font:inherit;line-height:1;vertical-align:middle;cursor:pointer;opacity:.65}:host .controls ::ng-deep .ngs-chip-edit:hover,:host .controls ::ng-deep .ngs-chip-remove:hover{opacity:1}:host .controls ::ng-deep .ngs-chip-remove:hover{color:var(--ngs-color-danger)}:host .ngs-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .ngs-chip-label[contenteditable=true]{display:inline-block;min-width:calc(var(--spacing, .25rem) * 5);outline:none;margin-inline-end:calc(var(--spacing, .25rem) * 2)}:host .ngs-chip-avatar{margin-right:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;justify-content:center}:host.ngs-chip-editing .avatar,:host.ngs-chip-editing .controls{display:none}:host.ngs-chip-selected{--ngs-chip-background: var(--ngs-chip-selected-background);--ngs-chip-color: var(--ngs-chip-selected-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: AutoFocusDirective, selector: "[ngsAutoFocus]", inputs: ["ngsAutoFocus"], exportAs: ["ngsAutoFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
284
285
|
}
|
|
285
286
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ChipOption, decorators: [{
|
|
286
287
|
type: Component,
|
|
287
|
-
args: [{ selector: 'ngs-chip-option',
|
|
288
|
+
args: [{ selector: 'ngs-chip-option', exportAs: 'ngsChipOption', imports: [
|
|
289
|
+
AutoFocusDirective
|
|
290
|
+
], providers: [
|
|
291
|
+
{
|
|
292
|
+
provide: Chip,
|
|
293
|
+
useExisting: forwardRef(() => ChipOption)
|
|
294
|
+
}
|
|
295
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
288
296
|
'class': 'ngs-chip ngs-chip-option',
|
|
289
297
|
'[class.ngs-chip-selected]': 'isSelected',
|
|
290
298
|
'[class.ngs-chip-disabled]': 'disabled()',
|
|
@@ -293,21 +301,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
293
301
|
'[attr.aria-selected]': 'isSelected',
|
|
294
302
|
'[attr.aria-disabled]': 'disabled()',
|
|
295
303
|
'(click)': 'toggleSelected()',
|
|
296
|
-
},
|
|
297
|
-
AutoFocusDirective
|
|
298
|
-
], providers: [
|
|
299
|
-
{
|
|
300
|
-
provide: Chip,
|
|
301
|
-
useExisting: forwardRef(() => ChipOption)
|
|
302
|
-
}
|
|
303
|
-
], template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: [".ngs-chip{--ngs-chip-bg: var(--ngs-color-surface-container-high);--ngs-chip-color: var(--ngs-color-on-surface);--ngs-chip-radius: var(--ngs-radius-xl);--ngs-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-chip-font-size: var(--ngs-font-size-xs);--ngs-chip-font-weight: 500;--ngs-chip-height: calc(var(--spacing, .25rem) * 8);display:inline-flex;align-items:center;border-radius:var(--ngs-chip-radius);padding:var(--ngs-chip-padding);font-size:var(--ngs-chip-font-size);font-weight:var(--ngs-chip-font-weight);height:var(--ngs-chip-height);box-sizing:border-box;vertical-align:middle;white-space:nowrap;position:relative;overflow:hidden;cursor:pointer}.ngs-chip[appearance=filled]{background:var(--ngs-chip-bg);color:var(--ngs-chip-color)}.ngs-chip[appearance=outlined]{background:transparent;color:var(--ngs-chip-color);border:1px solid var(--ngs-chip-outline-color, var(--ngs-color-outline-variant))}.ngs-chip[appearance=outlined].ngs-chip-selected{border-color:var(--ngs-chip-selected-bg, var(--ngs-color-primary))}.ngs-chip:not(.ngs-chip-selected):not(.ngs-chip-editing):hover{filter:brightness(97%)}.ngs-chip:has(.avatar:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}.ngs-chip:has(.shape:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}.ngs-chip:has(.ngs-chip-remove:not(:empty)){padding-right:calc(var(--spacing, .25rem) * 1.5)}.ngs-chip .avatar{position:relative;margin-right:calc(var(--spacing, .25rem) * 1.5)}.ngs-chip .avatar:empty{display:none}.ngs-chip .avatar img{width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border-radius:50%}.ngs-chip .shape{position:relative;max-height:max-content;display:flex;align-items:center;justify-content:center}.ngs-chip .shape:empty{display:none}.ngs-chip.ngs-chip-disabled{opacity:.4;cursor:default;pointer-events:none}.ngs-chip .ngs-chip-content{display:flex;align-items:center;width:100%;height:100%;gap:calc(var(--spacing, .25rem) * 1)}.ngs-chip .controls{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 1)}.ngs-chip .controls:empty{display:none}.ngs-chip .ngs-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngs-chip .ngs-chip-label[contenteditable=true]{display:inline-block;min-width:calc(var(--spacing, .25rem) * 5);outline:none;margin-inline-end:calc(var(--spacing, .25rem) * 2)}.ngs-chip .ngs-chip-avatar{margin-right:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;justify-content:center}.ngs-chip .ngs-chip-edit,.ngs-chip .ngs-chip-remove{line-height:0;--ngs-icon-size: calc(var(--spacing, .25rem) * 5);cursor:pointer;opacity:.55}.ngs-chip .ngs-chip-edit:hover,.ngs-chip .ngs-chip-remove:hover{opacity:1}.ngs-chip .ngs-chip-remove:hover{color:var(--ngs-color-danger)}.ngs-chip.ngs-chip-editing .avatar,.ngs-chip.ngs-chip-editing .controls{display:none}.ngs-chip.ngs-chip-selected{--ngs-chip-bg: var(--ngs-chip-selected-bg, var(--ngs-color-primary));--ngs-chip-color: var(--ngs-chip-selected-color, var(--ngs-color-on-primary))}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
304
|
+
}, template: "<div class=\"ngs-chip-content\">\n <span class=\"avatar\">\n <ng-content select=\"ngs-chip-avatar, [ngsChipAvatar]\"/>\n </span>\n <span class=\"shape\">\n <ng-content select=\"ngs-chip-shape, [ngsChipShape]\"/>\n </span>\n <span\n #editInput\n class=\"ngs-chip-label\"\n [attr.contenteditable]=\"_editing || null\"\n (blur)=\"_handleBlur()\"\n (keydown)=\"_handleKeydown($event)\"\n [ngsAutoFocus]=\"_editing\"\n >\n <ng-content/>\n </span>\n <div class=\"controls\">\n <ng-content select=\"ngs-chip-remove, [ngsChipRemove], [ngsChipControl], [ngsChipEdit]\"/>\n </div>\n</div>\n", styles: [":host{--ngs-chip-background: var(--ngs-color-surface-container-high);--ngs-chip-color: var(--ngs-color-on-surface);--ngs-chip-radius: var(--ngs-radius-xl);--ngs-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-chip-font-size: var(--ngs-font-size-xs);--ngs-chip-font-weight: 500;--ngs-chip-height: calc(var(--spacing, .25rem) * 8);--ngs-chip-border-color: var(--ngs-chip-outline-color, var(--ngs-color-outline-variant));--ngs-chip-selected-background: var(--ngs-color-primary);--ngs-chip-selected-color: var(--ngs-color-on-primary);display:inline-flex;align-items:center;border-radius:var(--ngs-chip-radius);padding:var(--ngs-chip-padding);font-size:var(--ngs-chip-font-size);font-weight:var(--ngs-chip-font-weight);height:var(--ngs-chip-height);box-sizing:border-box;vertical-align:middle;white-space:nowrap;position:relative;overflow:hidden;cursor:pointer}:host[appearance=filled],:host.ngs-chip-filled{background:var(--ngs-chip-background);color:var(--ngs-chip-color)}:host[appearance=outlined],:host.ngs-chip-outlined{--ngs-chip-background: transparent;color:var(--ngs-chip-color);border:1px solid var(--ngs-chip-border-color)}:host[appearance=outlined].ngs-chip-selected,:host.ngs-chip-outlined.ngs-chip-selected{border-color:var(--ngs-chip-selected-background)}:host:not(.ngs-chip-selected):not(.ngs-chip-editing):hover{filter:brightness(97%)}:host:has(.avatar:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.shape:not(:empty)){padding-left:calc(var(--spacing, .25rem) * 1.5)}:host:has(.ngs-chip-remove:not(:empty)){padding-right:calc(var(--spacing, .25rem) * 1.5)}:host .avatar{position:relative;margin-right:calc(var(--spacing, .25rem) * 1);display:flex;height:100%;justify-content:center;align-items:center}:host .avatar:empty{display:none}:host .avatar ::ng-deep ngs-avatar,:host .avatar ::ng-deep ngs-dicebear{--ngs-avatar-size: calc(var(--spacing, .25rem) * 6)}:host .avatar ::ng-deep img{width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border-radius:50%}:host .shape{position:relative;max-height:max-content;display:flex;align-items:center;justify-content:center}:host .shape:empty{display:none}:host.ngs-chip-disabled{opacity:.4;cursor:default;pointer-events:none}:host .ngs-chip-content{display:flex;align-items:center;width:100%;height:100%;gap:calc(var(--spacing, .25rem) * 1)}:host .controls{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * .5)}:host .controls:empty{display:none}:host .controls ::ng-deep .ngs-chip-edit,:host .controls ::ng-deep .ngs-chip-remove{--ngs-icon-size: calc(var(--spacing, .25rem) * 4);appearance:none;display:inline-flex;align-items:center;justify-content:center;flex:none;width:calc(var(--spacing, .25rem) * 5);height:calc(var(--spacing, .25rem) * 5);padding:0;margin:0;border:0;border-radius:50%;background:transparent;color:inherit;font:inherit;line-height:1;vertical-align:middle;cursor:pointer;opacity:.65}:host .controls ::ng-deep .ngs-chip-edit:hover,:host .controls ::ng-deep .ngs-chip-remove:hover{opacity:1}:host .controls ::ng-deep .ngs-chip-remove:hover{color:var(--ngs-color-danger)}:host .ngs-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .ngs-chip-label[contenteditable=true]{display:inline-block;min-width:calc(var(--spacing, .25rem) * 5);outline:none;margin-inline-end:calc(var(--spacing, .25rem) * 2)}:host .ngs-chip-avatar{margin-right:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;justify-content:center}:host.ngs-chip-editing .avatar,:host.ngs-chip-editing .controls{display:none}:host.ngs-chip-selected{--ngs-chip-background: var(--ngs-chip-selected-background);--ngs-chip-color: var(--ngs-chip-selected-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
304
305
|
}], ctorParameters: () => [], propDecorators: { selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }] } });
|
|
305
306
|
|
|
306
307
|
class ChipListbox {
|
|
307
308
|
multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
308
309
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
310
|
+
_disabledByControl = signal(false, ...(ngDevMode ? [{ debugName: "_disabledByControl" }] : /* istanbul ignore next */ []));
|
|
311
|
+
isDisabled = computed(() => this.disabled() || this._disabledByControl(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
309
312
|
_chips = contentChildren(ChipOption, { ...(ngDevMode ? { debugName: "_chips" } : /* istanbul ignore next */ {}), descendants: true });
|
|
310
313
|
_chips$ = toObservable(this._chips);
|
|
314
|
+
_chipSelectionSubscriptions = [];
|
|
315
|
+
_syncTimeout = null;
|
|
311
316
|
_value;
|
|
312
317
|
onChange = () => { };
|
|
313
318
|
onTouched = () => { };
|
|
@@ -316,11 +321,11 @@ class ChipListbox {
|
|
|
316
321
|
}
|
|
317
322
|
set value(value) {
|
|
318
323
|
this._value = value;
|
|
319
|
-
this.
|
|
324
|
+
this._syncChipsAsync();
|
|
320
325
|
}
|
|
321
326
|
writeValue(value) {
|
|
322
327
|
this._value = value;
|
|
323
|
-
this.
|
|
328
|
+
this._syncChipsAsync();
|
|
324
329
|
}
|
|
325
330
|
registerOnChange(fn) {
|
|
326
331
|
this.onChange = fn;
|
|
@@ -329,10 +334,11 @@ class ChipListbox {
|
|
|
329
334
|
this.onTouched = fn;
|
|
330
335
|
}
|
|
331
336
|
setDisabledState(isDisabled) {
|
|
337
|
+
this._disabledByControl.set(isDisabled);
|
|
332
338
|
}
|
|
333
339
|
ngAfterContentInit() {
|
|
334
340
|
this._chips$.subscribe(() => {
|
|
335
|
-
this.
|
|
341
|
+
this._syncChipsAsync();
|
|
336
342
|
});
|
|
337
343
|
if (this._value === undefined) {
|
|
338
344
|
const selectedChips = this._chips().filter(chip => chip.isSelected);
|
|
@@ -344,16 +350,20 @@ class ChipListbox {
|
|
|
344
350
|
this._value = lastSelected ? (lastSelected.value() !== undefined ? lastSelected.value() : lastSelected) : undefined;
|
|
345
351
|
}
|
|
346
352
|
}
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
this.
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
353
|
+
this._syncChipsAsync();
|
|
354
|
+
}
|
|
355
|
+
ngOnDestroy() {
|
|
356
|
+
if (this._syncTimeout !== null) {
|
|
357
|
+
clearTimeout(this._syncTimeout);
|
|
358
|
+
this._syncTimeout = null;
|
|
359
|
+
}
|
|
360
|
+
this._clearChipSelectionSubscriptions();
|
|
355
361
|
}
|
|
356
362
|
_onSelectionChange(chip) {
|
|
363
|
+
if (this.isDisabled()) {
|
|
364
|
+
this._updateChips();
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
357
367
|
const value = chip.value() !== undefined ? chip.value() : chip;
|
|
358
368
|
if (this.multiple()) {
|
|
359
369
|
if (!Array.isArray(this._value)) {
|
|
@@ -383,6 +393,26 @@ class ChipListbox {
|
|
|
383
393
|
this.onChange(this._value);
|
|
384
394
|
this.onTouched();
|
|
385
395
|
}
|
|
396
|
+
_watchChips() {
|
|
397
|
+
this._clearChipSelectionSubscriptions();
|
|
398
|
+
this._chipSelectionSubscriptions = this._chips().map(chip => chip.selectionChange.subscribe(() => {
|
|
399
|
+
this._onSelectionChange(chip);
|
|
400
|
+
}));
|
|
401
|
+
}
|
|
402
|
+
_clearChipSelectionSubscriptions() {
|
|
403
|
+
this._chipSelectionSubscriptions.forEach(subscription => subscription.unsubscribe());
|
|
404
|
+
this._chipSelectionSubscriptions = [];
|
|
405
|
+
}
|
|
406
|
+
_syncChipsAsync() {
|
|
407
|
+
if (this._syncTimeout !== null) {
|
|
408
|
+
clearTimeout(this._syncTimeout);
|
|
409
|
+
}
|
|
410
|
+
this._syncTimeout = setTimeout(() => {
|
|
411
|
+
this._syncTimeout = null;
|
|
412
|
+
this._watchChips();
|
|
413
|
+
this._updateChips();
|
|
414
|
+
});
|
|
415
|
+
}
|
|
386
416
|
_updateChips() {
|
|
387
417
|
const _chips = this._chips();
|
|
388
418
|
if (!_chips || this._value === undefined) {
|
|
@@ -399,7 +429,7 @@ class ChipListbox {
|
|
|
399
429
|
});
|
|
400
430
|
}
|
|
401
431
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ChipListbox, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
402
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: ChipListbox, isStandalone: true, selector: "ngs-chip-listbox", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listbox" }, properties: { "attr.aria-multiselectable": "multiple()", "attr.aria-disabled": "
|
|
432
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: ChipListbox, isStandalone: true, selector: "ngs-chip-listbox", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listbox" }, properties: { "attr.aria-multiselectable": "multiple()", "attr.aria-disabled": "isDisabled()" }, classAttribute: "ngs-chip-listbox ngs-chip-set" }, providers: [
|
|
403
433
|
{
|
|
404
434
|
provide: NG_VALUE_ACCESSOR,
|
|
405
435
|
useExisting: forwardRef(() => ChipListbox),
|
|
@@ -413,7 +443,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
413
443
|
'class': 'ngs-chip-listbox ngs-chip-set',
|
|
414
444
|
'role': 'listbox',
|
|
415
445
|
'[attr.aria-multiselectable]': 'multiple()',
|
|
416
|
-
'[attr.aria-disabled]': '
|
|
446
|
+
'[attr.aria-disabled]': 'isDisabled()',
|
|
417
447
|
}, standalone: true, providers: [
|
|
418
448
|
{
|
|
419
449
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -531,7 +561,11 @@ class ChipInput {
|
|
|
531
561
|
if (event.defaultPrevented) {
|
|
532
562
|
return;
|
|
533
563
|
}
|
|
534
|
-
|
|
564
|
+
const separatorKeyCodes = this.chipInputSeparatorKeyCodes();
|
|
565
|
+
const isSeparatorKey = Array.isArray(separatorKeyCodes)
|
|
566
|
+
? separatorKeyCodes.includes(event.keyCode)
|
|
567
|
+
: !!separatorKeyCodes && 'has' in separatorKeyCodes && separatorKeyCodes.has(event.keyCode);
|
|
568
|
+
if (isSeparatorKey) {
|
|
535
569
|
this.chipInputTokenEnd.emit({
|
|
536
570
|
chipInput: this,
|
|
537
571
|
value: this._elementRef.nativeElement.value,
|