@ship-ui/core 0.22.3 → 0.22.5

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.
Files changed (31) hide show
  1. package/assets/mcp/components.json +32 -32
  2. package/bin/ship-fg-scanner +0 -0
  3. package/fesm2022/ship-ui-core-ship-blueprint.mjs +1 -1
  4. package/fesm2022/ship-ui-core-ship-blueprint.mjs.map +1 -1
  5. package/fesm2022/ship-ui-core-ship-button-group.mjs +2 -2
  6. package/fesm2022/ship-ui-core-ship-button-group.mjs.map +1 -1
  7. package/fesm2022/ship-ui-core-ship-button.mjs +6 -4
  8. package/fesm2022/ship-ui-core-ship-button.mjs.map +1 -1
  9. package/fesm2022/ship-ui-core-ship-chip.mjs +6 -4
  10. package/fesm2022/ship-ui-core-ship-chip.mjs.map +1 -1
  11. package/fesm2022/ship-ui-core-ship-color-picker.mjs +1 -1
  12. package/fesm2022/ship-ui-core-ship-color-picker.mjs.map +1 -1
  13. package/fesm2022/ship-ui-core-ship-kbd.mjs +96 -0
  14. package/fesm2022/ship-ui-core-ship-kbd.mjs.map +1 -0
  15. package/fesm2022/ship-ui-core-ship-list.mjs +2 -2
  16. package/fesm2022/ship-ui-core-ship-list.mjs.map +1 -1
  17. package/fesm2022/ship-ui-core-ship-select.mjs +22 -3
  18. package/fesm2022/ship-ui-core-ship-select.mjs.map +1 -1
  19. package/fesm2022/ship-ui-core-ship-spotlight.mjs +590 -0
  20. package/fesm2022/ship-ui-core-ship-spotlight.mjs.map +1 -0
  21. package/fesm2022/ship-ui-core-ship-table.mjs +12 -6
  22. package/fesm2022/ship-ui-core-ship-table.mjs.map +1 -1
  23. package/fesm2022/ship-ui-core-ship-theme-toggle.mjs +1 -1
  24. package/fesm2022/ship-ui-core-ship-theme-toggle.mjs.map +1 -1
  25. package/package.json +9 -1
  26. package/types/ship-ui-core-ship-button.d.ts +2 -1
  27. package/types/ship-ui-core-ship-chip.d.ts +2 -1
  28. package/types/ship-ui-core-ship-kbd.d.ts +19 -0
  29. package/types/ship-ui-core-ship-select.d.ts +1 -0
  30. package/types/ship-ui-core-ship-spotlight.d.ts +83 -0
  31. package/types/ship-ui-core-ship-table.d.ts +1 -1
@@ -0,0 +1,96 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, PLATFORM_ID, input, booleanAttribute, computed, Component } from '@angular/core';
3
+ import { isPlatformBrowser } from '@angular/common';
4
+
5
+ class ShipKbd {
6
+ constructor() {
7
+ this.#platformId = inject(PLATFORM_ID);
8
+ this.meta = input(false, { ...(ngDevMode ? { debugName: "meta" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
9
+ this.shift = input(false, { ...(ngDevMode ? { debugName: "shift" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
10
+ this.alt = input(false, { ...(ngDevMode ? { debugName: "alt" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
11
+ this.ctrl = input(false, { ...(ngDevMode ? { debugName: "ctrl" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
12
+ this.enter = input(false, { ...(ngDevMode ? { debugName: "enter" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
13
+ this.escape = input(false, { ...(ngDevMode ? { debugName: "escape" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
14
+ this.backspace = input(false, { ...(ngDevMode ? { debugName: "backspace" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
15
+ this.isMac = computed(() => {
16
+ if (!isPlatformBrowser(this.#platformId))
17
+ return false;
18
+ return navigator.userAgent.toLowerCase().includes('mac');
19
+ }, /* @ts-ignore */
20
+ ...(ngDevMode ? [{ debugName: "isMac" }] : /* istanbul ignore next */ []));
21
+ this.hasContent = computed(() => {
22
+ // If there is any content, it will be projected. We just need to render the separator
23
+ // if there are modifiers before it. Angular ng-content always renders if projected,
24
+ // so we assume true if they use the component with innerHTML (which we can't easily check
25
+ // statically, but we can assume if it's used as a wrapper, there's content).
26
+ // Actually, we can check if any modifiers exist to prepend.
27
+ return true;
28
+ }, /* @ts-ignore */
29
+ ...(ngDevMode ? [{ debugName: "hasContent" }] : /* istanbul ignore next */ []));
30
+ this.displayKeys = computed(() => {
31
+ const keys = [];
32
+ const mac = this.isMac();
33
+ if (this.meta())
34
+ keys.push(mac ? '⌘' : 'Win');
35
+ if (this.ctrl())
36
+ keys.push(mac ? '⌃' : 'Ctrl');
37
+ if (this.alt())
38
+ keys.push(mac ? '⌥' : 'Alt');
39
+ if (this.shift())
40
+ keys.push(mac ? '⇧' : 'Shift');
41
+ if (this.enter())
42
+ keys.push(mac ? '↵' : 'Enter');
43
+ if (this.escape())
44
+ keys.push(mac ? '⎋' : 'Esc');
45
+ if (this.backspace())
46
+ keys.push(mac ? '⌫' : 'Backspace');
47
+ // Remove duplicates if they specify both meta and ctrl on windows (which both map to Ctrl)
48
+ return Array.from(new Set(keys));
49
+ }, /* @ts-ignore */
50
+ ...(ngDevMode ? [{ debugName: "displayKeys" }] : /* istanbul ignore next */ []));
51
+ }
52
+ #platformId;
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipKbd, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: ShipKbd, isStandalone: true, selector: "sh-kbd, [sh-kbd]", inputs: { meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, shift: { classPropertyName: "shift", publicName: "shift", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, ctrl: { classPropertyName: "ctrl", publicName: "ctrl", isSignal: true, isRequired: false, transformFunction: null }, enter: { classPropertyName: "enter", publicName: "enter", isSignal: true, isRequired: false, transformFunction: null }, escape: { classPropertyName: "escape", publicName: "escape", isSignal: true, isRequired: false, transformFunction: null }, backspace: { classPropertyName: "backspace", publicName: "backspace", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
55
+ @for (key of displayKeys(); track $index) {
56
+ <span class="key-part">{{ key }}</span>
57
+ @if (!isMac() && !$last) {
58
+ <span class="separator">+</span>
59
+ }
60
+ }
61
+ @if (hasContent()) {
62
+ @if (!isMac() && displayKeys().length > 0) {
63
+ <span class="separator">+</span>
64
+ }
65
+ <span class="content">
66
+ <ng-content></ng-content>
67
+ </span>
68
+ }
69
+ `, isInline: true, styles: [":host{display:inline-flex;align-items:center;font-family:inherit;background:rgb(from var(--base-2) r g b/80%);border:1px solid rgb(from var(--base-4) r g b/60%);padding:.0625rem .25rem;border-radius:var(--shape-1);font-weight:700;color:var(--base-11);gap:.125rem;font-size:.9em}:host .separator{color:var(--base-8);font-weight:400;margin:0 .125rem}:host .content{text-transform:uppercase}\n"] }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipKbd, decorators: [{
72
+ type: Component,
73
+ args: [{ selector: 'sh-kbd, [sh-kbd]', standalone: true, template: `
74
+ @for (key of displayKeys(); track $index) {
75
+ <span class="key-part">{{ key }}</span>
76
+ @if (!isMac() && !$last) {
77
+ <span class="separator">+</span>
78
+ }
79
+ }
80
+ @if (hasContent()) {
81
+ @if (!isMac() && displayKeys().length > 0) {
82
+ <span class="separator">+</span>
83
+ }
84
+ <span class="content">
85
+ <ng-content></ng-content>
86
+ </span>
87
+ }
88
+ `, styles: [":host{display:inline-flex;align-items:center;font-family:inherit;background:rgb(from var(--base-2) r g b/80%);border:1px solid rgb(from var(--base-4) r g b/60%);padding:.0625rem .25rem;border-radius:var(--shape-1);font-weight:700;color:var(--base-11);gap:.125rem;font-size:.9em}:host .separator{color:var(--base-8);font-weight:400;margin:0 .125rem}:host .content{text-transform:uppercase}\n"] }]
89
+ }], propDecorators: { meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], shift: [{ type: i0.Input, args: [{ isSignal: true, alias: "shift", required: false }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], ctrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "ctrl", required: false }] }], enter: [{ type: i0.Input, args: [{ isSignal: true, alias: "enter", required: false }] }], escape: [{ type: i0.Input, args: [{ isSignal: true, alias: "escape", required: false }] }], backspace: [{ type: i0.Input, args: [{ isSignal: true, alias: "backspace", required: false }] }] } });
90
+
91
+ /**
92
+ * Generated bundle index. Do not edit.
93
+ */
94
+
95
+ export { ShipKbd };
96
+ //# sourceMappingURL=ship-ui-core-ship-kbd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-ui-core-ship-kbd.mjs","sources":["../../../projects/ship-ui/ship-kbd/ship-kbd.ts","../../../projects/ship-ui/ship-kbd/ship-ui-core-ship-kbd.ts"],"sourcesContent":["import { booleanAttribute, Component, computed, inject, input, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Component({\n selector: 'sh-kbd, [sh-kbd]',\n standalone: true,\n template: `\n @for (key of displayKeys(); track $index) {\n <span class=\"key-part\">{{ key }}</span>\n @if (!isMac() && !$last) {\n <span class=\"separator\">+</span>\n }\n }\n @if (hasContent()) {\n @if (!isMac() && displayKeys().length > 0) {\n <span class=\"separator\">+</span>\n }\n <span class=\"content\">\n <ng-content></ng-content>\n </span>\n }\n `,\n styleUrl: './ship-kbd.scss',\n})\nexport class ShipKbd {\n #platformId = inject(PLATFORM_ID);\n\n meta = input<boolean, string | boolean>(false, { transform: booleanAttribute });\n shift = input<boolean, string | boolean>(false, { transform: booleanAttribute });\n alt = input<boolean, string | boolean>(false, { transform: booleanAttribute });\n ctrl = input<boolean, string | boolean>(false, { transform: booleanAttribute });\n enter = input<boolean, string | boolean>(false, { transform: booleanAttribute });\n escape = input<boolean, string | boolean>(false, { transform: booleanAttribute });\n backspace = input<boolean, string | boolean>(false, { transform: booleanAttribute });\n\n isMac = computed(() => {\n if (!isPlatformBrowser(this.#platformId)) return false;\n return navigator.userAgent.toLowerCase().includes('mac');\n });\n\n hasContent = computed(() => {\n // If there is any content, it will be projected. We just need to render the separator\n // if there are modifiers before it. Angular ng-content always renders if projected,\n // so we assume true if they use the component with innerHTML (which we can't easily check\n // statically, but we can assume if it's used as a wrapper, there's content).\n // Actually, we can check if any modifiers exist to prepend. \n return true; \n });\n\n displayKeys = computed(() => {\n const keys: string[] = [];\n const mac = this.isMac();\n\n if (this.meta()) keys.push(mac ? '⌘' : 'Win');\n if (this.ctrl()) keys.push(mac ? '⌃' : 'Ctrl');\n if (this.alt()) keys.push(mac ? '⌥' : 'Alt');\n if (this.shift()) keys.push(mac ? '⇧' : 'Shift');\n if (this.enter()) keys.push(mac ? '↵' : 'Enter');\n if (this.escape()) keys.push(mac ? '⎋' : 'Esc');\n if (this.backspace()) keys.push(mac ? '⌫' : 'Backspace');\n\n // Remove duplicates if they specify both meta and ctrl on windows (which both map to Ctrl)\n return Array.from(new Set(keys));\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -5,13 +5,13 @@ class ShipList {
5
5
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
6
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.0", type: ShipList, isStandalone: true, selector: "sh-list", ngImport: i0, template: `
7
7
  <ng-content />
8
- `, isInline: true, styles: ["sh-list{--list-s: var(--shape-2);--list-active-bg: var(--base-1);--list-color: var(--base-9);--list-active-bs: none;--list-item-b: 1px solid transparent;--list-item-active-b: 1px solid --list-active-bg;--list-p: 1.25rem 1rem;--list-item-p: .5rem .75rem;--list-item-gap: .5rem;width:100%;padding:var(--list-p);gap:.5rem;display:flex;flex-direction:column}sh-list.base-1{--list-active-bg: var(--base-1);--list-active-bs: var(--box-shadow-20)}sh-list.outlined{--list-active-bg: transparent;--list-active-bs: none;--list-item-b: 1px solid transparent;--list-item-active-b: 1px solid var(--primary-8)}sh-list:empty{padding:0}sh-list>[title]{color:var(--base-8);margin:0 .75rem;font:var(--paragraph-30);line-height:1.5rem}sh-list[shsortable] [item]:active{transform:scale(1)}sh-list>[action],sh-list>[item]{border-radius:var(--list-s);padding:var(--list-item-p);font:var(--paragraph-30B);color:var(--list-color);border:var(--list-item-b);display:flex;align-items:center;gap:var(--list-item-gap);width:100%;-webkit-user-select:none;user-select:none;appearance:none;border:0;text-align:left;text-wrap:balance;background-color:transparent;text-decoration:none;transition:transform 125ms linear,box-shadow 125ms linear;transform:scale(1)}sh-list>[action]:active,sh-list>[item]:active{--list-active-bs: var(--box-shadow-10);transform:scale(.98)}sh-list>[action]:focus,sh-list>[item]:focus{outline:none}sh-list>[action]:focus-visible,sh-list>[item]:focus-visible{outline:2px solid var(--primary-8);outline-offset:2px}sh-list>[action] [suffix],sh-list>[item] [suffix]{margin-left:auto;color:var(--base-8)}sh-list :has(input),sh-list>[action]{cursor:pointer}sh-list>[item]:has(input:checked),sh-list>[action]:has(input:checked),sh-list>[action].active,sh-list>[action].selected{--list-color: var(--base-12);background-color:var(--list-active-bg);box-shadow:var(--list-active-bs);border:var(--list-item-active-b)}sh-list.primary>[item]:has(input:checked) sh-icon:first-child,sh-list.primary>[action]:has(input:checked) sh-icon:first-child,sh-list.primary>[action].active sh-icon:first-child,sh-list.primary>[action].selected sh-icon:first-child{color:var(--primary-8)}sh-list.accent>[item]:has(input:checked) sh-icon:first-child,sh-list.accent>[action]:has(input:checked) sh-icon:first-child,sh-list.accent>[action].active sh-icon:first-child,sh-list.accent>[action].selected sh-icon:first-child{color:var(--accent-8)}sh-list.warn>[item]:has(input:checked) sh-icon:first-child,sh-list.warn>[action]:has(input:checked) sh-icon:first-child,sh-list.warn>[action].active sh-icon:first-child,sh-list.warn>[action].selected sh-icon:first-child{color:var(--warn-8)}sh-list.error>[item]:has(input:checked) sh-icon:first-child,sh-list.error>[action]:has(input:checked) sh-icon:first-child,sh-list.error>[action].active sh-icon:first-child,sh-list.error>[action].selected sh-icon:first-child{color:var(--error-8)}sh-list.success>[item]:has(input:checked) sh-icon:first-child,sh-list.success>[action]:has(input:checked) sh-icon:first-child,sh-list.success>[action].active sh-icon:first-child,sh-list.success>[action].selected sh-icon:first-child{color:var(--success-8)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8
+ `, isInline: true, styles: ["sh-list{--list-s: var(--shape-2);--list-active-bg: var(--base-1);--list-color: var(--base-9);--list-active-bs: none;--list-item-b: 1px solid transparent;--list-item-active-b: 1px solid --list-active-bg;--list-p: 1.25rem 1rem;--list-item-p: .5rem .75rem;--list-item-gap: .5rem;width:100%;padding:var(--list-p);gap:.5rem;display:flex;flex-direction:column}sh-list.base-1{--list-active-bg: var(--base-1);--list-active-bs: var(--box-shadow-20)}sh-list.outlined{--list-active-bg: transparent;--list-active-bs: none;--list-item-b: 1px solid transparent;--list-item-active-b: 1px solid var(--primary-8)}sh-list.type-b{--list-p: 0;--list-item-p: .625rem .75rem;--list-item-gap: .75rem;--list-s: var(--shape-2)}sh-list.type-b>[action],sh-list.type-b>[item]{color:var(--base-10)}sh-list.type-b>[action].active,sh-list.type-b>[action].selected,sh-list.type-b>[item].active,sh-list.type-b>[item].selected{background:rgb(from var(--base-3) r g b/90%);color:var(--base-12)}sh-list.type-b>[action].active sh-icon:first-child,sh-list.type-b>[action].selected sh-icon:first-child,sh-list.type-b>[item].active sh-icon:first-child,sh-list.type-b>[item].selected sh-icon:first-child{color:var(--primary-8)}sh-list.type-b>[action].active .description,sh-list.type-b>[action].selected .description,sh-list.type-b>[item].active .description,sh-list.type-b>[item].selected .description{color:var(--base-9)}sh-list.type-b>[action] sh-icon:first-child,sh-list.type-b>[item] sh-icon:first-child{font-size:1.125rem;color:var(--base-7);transition:color .15s ease}sh-list.type-b>[action] .text-group,sh-list.type-b>[item] .text-group{display:flex;flex-direction:column;flex:1}sh-list.type-b>[action] .label,sh-list.type-b>[item] .label{font:var(--paragraph-30B)}sh-list.type-b>[action] .description,sh-list.type-b>[item] .description{font:var(--paragraph-40);color:var(--base-7);transition:color .15s ease}sh-list.type-b>[action] .shortcut,sh-list.type-b>[item] .shortcut{display:flex;gap:.25rem}sh-list.type-b>[action] .shortcut kbd,sh-list.type-b>[item] .shortcut kbd{font-family:inherit;background:rgb(from var(--base-3) r g b/80%);border:1px solid rgb(from var(--base-4) r g b/60%);color:var(--base-8);border-radius:var(--shape-1);padding:.125rem .375rem;font-size:.6875rem;line-height:1;box-shadow:0 1px #0000001a}sh-list:empty{padding:0}sh-list>[title]{color:var(--base-8);margin:0 .75rem;font:var(--paragraph-30);line-height:1.5rem}sh-list[shsortable] [item]:active{transform:scale(1)}sh-list>[action],sh-list>[item]{border-radius:var(--list-s);padding:var(--list-item-p);font:var(--paragraph-30B);color:var(--list-color);border:var(--list-item-b);display:flex;align-items:center;gap:var(--list-item-gap);width:100%;-webkit-user-select:none;user-select:none;appearance:none;border:0;text-align:left;text-wrap:balance;background-color:transparent;text-decoration:none;transition:transform 125ms linear,box-shadow 125ms linear;transform:scale(1)}sh-list>[action]:active,sh-list>[item]:active{--list-active-bs: var(--box-shadow-10);transform:scale(.98)}sh-list>[action]:focus,sh-list>[item]:focus{outline:none}sh-list>[action]:focus-visible,sh-list>[item]:focus-visible{outline:2px solid var(--primary-8);outline-offset:2px}sh-list>[action] [suffix],sh-list>[item] [suffix]{margin-left:auto;color:var(--base-8)}sh-list :has(input),sh-list>[action]{cursor:pointer}sh-list>[item]:has(input:checked),sh-list>[action]:has(input:checked),sh-list>[action].active,sh-list>[action].selected{--list-color: var(--base-12);background-color:var(--list-active-bg);box-shadow:var(--list-active-bs);border:var(--list-item-active-b)}sh-list.primary>[item]:has(input:checked) sh-icon:first-child,sh-list.primary>[action]:has(input:checked) sh-icon:first-child,sh-list.primary>[action].active sh-icon:first-child,sh-list.primary>[action].selected sh-icon:first-child{color:var(--primary-8)}sh-list.accent>[item]:has(input:checked) sh-icon:first-child,sh-list.accent>[action]:has(input:checked) sh-icon:first-child,sh-list.accent>[action].active sh-icon:first-child,sh-list.accent>[action].selected sh-icon:first-child{color:var(--accent-8)}sh-list.warn>[item]:has(input:checked) sh-icon:first-child,sh-list.warn>[action]:has(input:checked) sh-icon:first-child,sh-list.warn>[action].active sh-icon:first-child,sh-list.warn>[action].selected sh-icon:first-child{color:var(--warn-8)}sh-list.error>[item]:has(input:checked) sh-icon:first-child,sh-list.error>[action]:has(input:checked) sh-icon:first-child,sh-list.error>[action].active sh-icon:first-child,sh-list.error>[action].selected sh-icon:first-child{color:var(--error-8)}sh-list.success>[item]:has(input:checked) sh-icon:first-child,sh-list.success>[action]:has(input:checked) sh-icon:first-child,sh-list.success>[action].active sh-icon:first-child,sh-list.success>[action].selected sh-icon:first-child{color:var(--success-8)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9
9
  }
10
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipList, decorators: [{
11
11
  type: Component,
12
12
  args: [{ selector: 'sh-list', encapsulation: ViewEncapsulation.None, imports: [], template: `
13
13
  <ng-content />
14
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["sh-list{--list-s: var(--shape-2);--list-active-bg: var(--base-1);--list-color: var(--base-9);--list-active-bs: none;--list-item-b: 1px solid transparent;--list-item-active-b: 1px solid --list-active-bg;--list-p: 1.25rem 1rem;--list-item-p: .5rem .75rem;--list-item-gap: .5rem;width:100%;padding:var(--list-p);gap:.5rem;display:flex;flex-direction:column}sh-list.base-1{--list-active-bg: var(--base-1);--list-active-bs: var(--box-shadow-20)}sh-list.outlined{--list-active-bg: transparent;--list-active-bs: none;--list-item-b: 1px solid transparent;--list-item-active-b: 1px solid var(--primary-8)}sh-list:empty{padding:0}sh-list>[title]{color:var(--base-8);margin:0 .75rem;font:var(--paragraph-30);line-height:1.5rem}sh-list[shsortable] [item]:active{transform:scale(1)}sh-list>[action],sh-list>[item]{border-radius:var(--list-s);padding:var(--list-item-p);font:var(--paragraph-30B);color:var(--list-color);border:var(--list-item-b);display:flex;align-items:center;gap:var(--list-item-gap);width:100%;-webkit-user-select:none;user-select:none;appearance:none;border:0;text-align:left;text-wrap:balance;background-color:transparent;text-decoration:none;transition:transform 125ms linear,box-shadow 125ms linear;transform:scale(1)}sh-list>[action]:active,sh-list>[item]:active{--list-active-bs: var(--box-shadow-10);transform:scale(.98)}sh-list>[action]:focus,sh-list>[item]:focus{outline:none}sh-list>[action]:focus-visible,sh-list>[item]:focus-visible{outline:2px solid var(--primary-8);outline-offset:2px}sh-list>[action] [suffix],sh-list>[item] [suffix]{margin-left:auto;color:var(--base-8)}sh-list :has(input),sh-list>[action]{cursor:pointer}sh-list>[item]:has(input:checked),sh-list>[action]:has(input:checked),sh-list>[action].active,sh-list>[action].selected{--list-color: var(--base-12);background-color:var(--list-active-bg);box-shadow:var(--list-active-bs);border:var(--list-item-active-b)}sh-list.primary>[item]:has(input:checked) sh-icon:first-child,sh-list.primary>[action]:has(input:checked) sh-icon:first-child,sh-list.primary>[action].active sh-icon:first-child,sh-list.primary>[action].selected sh-icon:first-child{color:var(--primary-8)}sh-list.accent>[item]:has(input:checked) sh-icon:first-child,sh-list.accent>[action]:has(input:checked) sh-icon:first-child,sh-list.accent>[action].active sh-icon:first-child,sh-list.accent>[action].selected sh-icon:first-child{color:var(--accent-8)}sh-list.warn>[item]:has(input:checked) sh-icon:first-child,sh-list.warn>[action]:has(input:checked) sh-icon:first-child,sh-list.warn>[action].active sh-icon:first-child,sh-list.warn>[action].selected sh-icon:first-child{color:var(--warn-8)}sh-list.error>[item]:has(input:checked) sh-icon:first-child,sh-list.error>[action]:has(input:checked) sh-icon:first-child,sh-list.error>[action].active sh-icon:first-child,sh-list.error>[action].selected sh-icon:first-child{color:var(--error-8)}sh-list.success>[item]:has(input:checked) sh-icon:first-child,sh-list.success>[action]:has(input:checked) sh-icon:first-child,sh-list.success>[action].active sh-icon:first-child,sh-list.success>[action].selected sh-icon:first-child{color:var(--success-8)}\n"] }]
14
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["sh-list{--list-s: var(--shape-2);--list-active-bg: var(--base-1);--list-color: var(--base-9);--list-active-bs: none;--list-item-b: 1px solid transparent;--list-item-active-b: 1px solid --list-active-bg;--list-p: 1.25rem 1rem;--list-item-p: .5rem .75rem;--list-item-gap: .5rem;width:100%;padding:var(--list-p);gap:.5rem;display:flex;flex-direction:column}sh-list.base-1{--list-active-bg: var(--base-1);--list-active-bs: var(--box-shadow-20)}sh-list.outlined{--list-active-bg: transparent;--list-active-bs: none;--list-item-b: 1px solid transparent;--list-item-active-b: 1px solid var(--primary-8)}sh-list.type-b{--list-p: 0;--list-item-p: .625rem .75rem;--list-item-gap: .75rem;--list-s: var(--shape-2)}sh-list.type-b>[action],sh-list.type-b>[item]{color:var(--base-10)}sh-list.type-b>[action].active,sh-list.type-b>[action].selected,sh-list.type-b>[item].active,sh-list.type-b>[item].selected{background:rgb(from var(--base-3) r g b/90%);color:var(--base-12)}sh-list.type-b>[action].active sh-icon:first-child,sh-list.type-b>[action].selected sh-icon:first-child,sh-list.type-b>[item].active sh-icon:first-child,sh-list.type-b>[item].selected sh-icon:first-child{color:var(--primary-8)}sh-list.type-b>[action].active .description,sh-list.type-b>[action].selected .description,sh-list.type-b>[item].active .description,sh-list.type-b>[item].selected .description{color:var(--base-9)}sh-list.type-b>[action] sh-icon:first-child,sh-list.type-b>[item] sh-icon:first-child{font-size:1.125rem;color:var(--base-7);transition:color .15s ease}sh-list.type-b>[action] .text-group,sh-list.type-b>[item] .text-group{display:flex;flex-direction:column;flex:1}sh-list.type-b>[action] .label,sh-list.type-b>[item] .label{font:var(--paragraph-30B)}sh-list.type-b>[action] .description,sh-list.type-b>[item] .description{font:var(--paragraph-40);color:var(--base-7);transition:color .15s ease}sh-list.type-b>[action] .shortcut,sh-list.type-b>[item] .shortcut{display:flex;gap:.25rem}sh-list.type-b>[action] .shortcut kbd,sh-list.type-b>[item] .shortcut kbd{font-family:inherit;background:rgb(from var(--base-3) r g b/80%);border:1px solid rgb(from var(--base-4) r g b/60%);color:var(--base-8);border-radius:var(--shape-1);padding:.125rem .375rem;font-size:.6875rem;line-height:1;box-shadow:0 1px #0000001a}sh-list:empty{padding:0}sh-list>[title]{color:var(--base-8);margin:0 .75rem;font:var(--paragraph-30);line-height:1.5rem}sh-list[shsortable] [item]:active{transform:scale(1)}sh-list>[action],sh-list>[item]{border-radius:var(--list-s);padding:var(--list-item-p);font:var(--paragraph-30B);color:var(--list-color);border:var(--list-item-b);display:flex;align-items:center;gap:var(--list-item-gap);width:100%;-webkit-user-select:none;user-select:none;appearance:none;border:0;text-align:left;text-wrap:balance;background-color:transparent;text-decoration:none;transition:transform 125ms linear,box-shadow 125ms linear;transform:scale(1)}sh-list>[action]:active,sh-list>[item]:active{--list-active-bs: var(--box-shadow-10);transform:scale(.98)}sh-list>[action]:focus,sh-list>[item]:focus{outline:none}sh-list>[action]:focus-visible,sh-list>[item]:focus-visible{outline:2px solid var(--primary-8);outline-offset:2px}sh-list>[action] [suffix],sh-list>[item] [suffix]{margin-left:auto;color:var(--base-8)}sh-list :has(input),sh-list>[action]{cursor:pointer}sh-list>[item]:has(input:checked),sh-list>[action]:has(input:checked),sh-list>[action].active,sh-list>[action].selected{--list-color: var(--base-12);background-color:var(--list-active-bg);box-shadow:var(--list-active-bs);border:var(--list-item-active-b)}sh-list.primary>[item]:has(input:checked) sh-icon:first-child,sh-list.primary>[action]:has(input:checked) sh-icon:first-child,sh-list.primary>[action].active sh-icon:first-child,sh-list.primary>[action].selected sh-icon:first-child{color:var(--primary-8)}sh-list.accent>[item]:has(input:checked) sh-icon:first-child,sh-list.accent>[action]:has(input:checked) sh-icon:first-child,sh-list.accent>[action].active sh-icon:first-child,sh-list.accent>[action].selected sh-icon:first-child{color:var(--accent-8)}sh-list.warn>[item]:has(input:checked) sh-icon:first-child,sh-list.warn>[action]:has(input:checked) sh-icon:first-child,sh-list.warn>[action].active sh-icon:first-child,sh-list.warn>[action].selected sh-icon:first-child{color:var(--warn-8)}sh-list.error>[item]:has(input:checked) sh-icon:first-child,sh-list.error>[action]:has(input:checked) sh-icon:first-child,sh-list.error>[action].active sh-icon:first-child,sh-list.error>[action].selected sh-icon:first-child{color:var(--error-8)}sh-list.success>[item]:has(input:checked) sh-icon:first-child,sh-list.success>[action]:has(input:checked) sh-icon:first-child,sh-list.success>[action].active sh-icon:first-child,sh-list.success>[action].selected sh-icon:first-child{color:var(--success-8)}\n"] }]
15
15
  }] });
16
16
 
17
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ship-ui-core-ship-list.mjs","sources":["../../../projects/ship-ui/ship-list/ship-list.ts","../../../projects/ship-ui/ship-list/ship-ui-core-ship-list.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'sh-list',\n styleUrl: './ship-list.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: `\n <ng-content />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShipList {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAYa,QAAQ,CAAA;8GAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALT;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2kGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGU,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAVpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,iBAEJ,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,EAAE,EAAA,QAAA,EACD;;GAET,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,2kGAAA,CAAA,EAAA;;;ACVjD;;AAEG;;;;"}
1
+ {"version":3,"file":"ship-ui-core-ship-list.mjs","sources":["../../../projects/ship-ui/ship-list/ship-list.ts","../../../projects/ship-ui/ship-list/ship-ui-core-ship-list.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'sh-list',\n styleUrl: './ship-list.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: `\n <ng-content />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShipList {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAYa,QAAQ,CAAA;8GAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALT;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wuJAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGU,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAVpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,iBAEJ,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,EAAE,EAAA,QAAA,EACD;;GAET,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,wuJAAA,CAAA,EAAA;;;ACVjD;;AAEG;;;;"}
@@ -250,6 +250,12 @@ class ShipSelect {
250
250
  e.preventDefault();
251
251
  this.toggleOptionByIndex(this.focusedOptionIndex(), undefined, true);
252
252
  }
253
+ if (e.key === ' ' || e.key === 'Spacebar') {
254
+ if (!this.hasSearch()) {
255
+ e.preventDefault();
256
+ this.toggleOptionByIndex(this.focusedOptionIndex(), undefined, true);
257
+ }
258
+ }
253
259
  if (e.key === 'ArrowDown') {
254
260
  e.preventDefault();
255
261
  const newIndex = this.focusedOptionIndex() + 1;
@@ -296,6 +302,19 @@ class ShipSelect {
296
302
  });
297
303
  }, /* @ts-ignore */
298
304
  ...(ngDevMode ? [{ debugName: "inputRefElEffect" }] : /* istanbul ignore next */ []));
305
+ this.inputReadonlyEffect = effect(() => {
306
+ const input = this.inputRefEl();
307
+ if (!input)
308
+ return;
309
+ const isReadOnly = this.readonly() || !this.hasSearch();
310
+ if (isReadOnly) {
311
+ input.setAttribute('readonly', 'true');
312
+ }
313
+ else {
314
+ input.removeAttribute('readonly');
315
+ }
316
+ }, /* @ts-ignore */
317
+ ...(ngDevMode ? [{ debugName: "inputReadonlyEffect" }] : /* istanbul ignore next */ []));
299
318
  this.selectedLabels = computed(() => {
300
319
  const selected = this.selectedOptions();
301
320
  const label = this.label();
@@ -649,7 +668,7 @@ class ShipSelect {
649
668
  @let _selOptionTemplate = _selectedOptionTemplate || _optionTemplate || _inlineTemplate;
650
669
  @let _listOptionTemplate = _optionTemplate || _inlineTemplate;
651
670
  @let _asChips = !asText() && selectMultiple();
652
- @let _showSearchText = isOpen() && hasSearch() && (_asChips || inputValue().length > 0);
671
+ @let _showSearchText = isOpen() && hasSearch();
653
672
 
654
673
  <sh-popover
655
674
  #formFieldWrapper
@@ -795,7 +814,7 @@ class ShipSelect {
795
814
  }
796
815
  </div>
797
816
  </sh-popover>
798
- `, isInline: true, styles: ["sh-select{--miw: 13.125rem;--select-option-mih: min-content;--select-options-mh: 11.25rem;display:flex}sh-select sh-form-field{display:flex;--ff-mw: var(--miw)}sh-select sh-popover{flex:1 0}sh-select sh-popover:has(.ship-options:empty) .popover{opacity:0}sh-select .selected-value{width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;color:var(--base-8)}sh-select .selected-value input{margin:0}sh-select .selected-value.is-selected{color:var(--base-12)}sh-select sh-form-field .input-wrap .input{position:relative;display:flex;flex-wrap:wrap;--ff-space: .4375rem .625rem}sh-select sh-form-field .input-wrap .input textarea,sh-select sh-form-field .input-wrap .input input{opacity:0;width:0;height:0;position:absolute}sh-select sh-form-field .input-wrap .input.show-search-text input{opacity:1;height:initial;min-width:min-content;field-sizing:content;font:var(--paragraph-30);position:relative}sh-select sh-form-field .input-wrap .input.show-search-text textarea{opacity:1;height:initial;margin:.25rem 0 0}sh-select sh-form-field.small .input-wrap .input{--ff-space: .3125rem .5rem}sh-select sh-form-field.small .input-wrap .input sh-chip{--chip-h: 1.25rem;font-size:80%}.ship-options{padding:.5rem 0;display:flex;flex-direction:column;max-height:var(--select-options-mh);overflow-y:auto;overflow-x:hidden}.ship-options p[title]{padding:.25rem 1rem}.ship-options sh-divider{margin:.5rem 0}.ship-options .option{display:flex;justify-content:flex-start;align-items:center;min-height:var(--select-option-mih);margin:0 .5rem;padding:.5rem;gap:.5rem;width:calc(100% - 1rem);border-radius:var(--shape-2);appearance:none;background-color:transparent;border:0;cursor:pointer;color:var(--base-12);-webkit-user-select:none;user-select:none}.ship-options .option[disabled]{opacity:.3;cursor:initial}.ship-options .option[disabled]:hover{background-color:transparent}.ship-options .option sh-icon{font-size:1rem}.ship-options .option span.placeholder{color:var(--base-7)}.ship-options .option.active,.ship-options .option:checked,.ship-options .option:hover{background-color:var(--base-2);color:var(--base-12)}.ship-options .option.focused{background-color:var(--primary-1);color:var(--base-12)}.ship-options .option.focused:hover{background-color:var(--primary-2)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ShipPopover, selector: "sh-popover", inputs: ["asMultiLayer", "asSheetOnMobile", "disableOpenByClick", "isOpen", "options"], outputs: ["isOpenChange", "closed"] }, { kind: "component", type: ShipFormField, selector: "sh-form-field", inputs: ["color", "variant", "size", "readonly"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }, { kind: "component", type: ShipCheckbox, selector: "sh-checkbox", inputs: ["checked", "color", "variant", "readonly", "disabled", "noInternalInput"], outputs: ["checkedChange"] }, { kind: "component", type: ShipSpinner, selector: "sh-spinner", inputs: ["color"] }, { kind: "component", type: ShipChip, selector: "sh-chip", inputs: ["color", "variant", "size", "sharp", "dynamic", "readonly"] }, { kind: "component", type: ShipDivider, selector: "sh-divider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
817
+ `, isInline: true, styles: ["sh-select{--miw: 13.125rem;--select-option-mih: min-content;--select-options-mh: 11.25rem;display:flex}sh-select sh-form-field{display:flex;--ff-mw: var(--miw)}sh-select sh-popover{flex:1 0}sh-select sh-popover:has(.ship-options:empty) .popover{opacity:0}sh-select .selected-value{width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;color:var(--base-8)}sh-select .selected-value input{margin:0}sh-select .selected-value.is-selected{color:var(--base-12)}sh-select sh-form-field .input-wrap .input{position:relative;display:flex;flex-wrap:wrap;--ff-space: .4375rem .625rem}sh-select sh-form-field .input-wrap .input textarea,sh-select sh-form-field .input-wrap .input input{opacity:0;width:0;height:0;position:absolute}sh-select sh-form-field .input-wrap .input.show-search-text input{opacity:1;height:initial;min-width:min-content;field-sizing:content;font:var(--paragraph-30);position:relative}sh-select sh-form-field .input-wrap .input.show-search-text textarea{opacity:1;height:initial;margin:.25rem 0 0}sh-select sh-form-field.small .input-wrap .input{--ff-space: .3125rem .5rem}sh-select sh-form-field.small .input-wrap .input sh-chip{--chip-h: 1.25rem;font-size:80%}.ship-options{padding:.5rem 0;display:flex;flex-direction:column;max-height:var(--select-options-mh);overflow-y:auto;overflow-x:hidden}.ship-options p[title]{padding:.25rem 1rem}.ship-options sh-divider{margin:.5rem 0}.ship-options .option{display:flex;justify-content:flex-start;align-items:center;min-height:var(--select-option-mih);margin:0 .5rem;padding:.5rem;gap:.5rem;width:calc(100% - 1rem);border-radius:var(--shape-2);appearance:none;background-color:transparent;border:0;cursor:pointer;color:var(--base-12);-webkit-user-select:none;user-select:none}.ship-options .option[disabled]{opacity:.3;cursor:initial}.ship-options .option[disabled]:hover{background-color:transparent}.ship-options .option sh-icon{font-size:1rem}.ship-options .option span.placeholder{color:var(--base-7)}.ship-options .option.active,.ship-options .option:checked,.ship-options .option:hover{background-color:var(--base-2);color:var(--base-12)}.ship-options .option.focused{background-color:var(--primary-1);color:var(--base-12)}.ship-options .option.focused:hover{background-color:var(--primary-2)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ShipPopover, selector: "sh-popover", inputs: ["asMultiLayer", "asSheetOnMobile", "disableOpenByClick", "isOpen", "options"], outputs: ["isOpenChange", "closed"] }, { kind: "component", type: ShipFormField, selector: "sh-form-field", inputs: ["color", "variant", "size", "readonly"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }, { kind: "component", type: ShipCheckbox, selector: "sh-checkbox", inputs: ["checked", "color", "variant", "readonly", "disabled", "noInternalInput"], outputs: ["checkedChange"] }, { kind: "component", type: ShipSpinner, selector: "sh-spinner", inputs: ["color"] }, { kind: "component", type: ShipChip, selector: "sh-chip", inputs: ["color", "variant", "size", "sharp", "dynamic", "readonly", "noBg"] }, { kind: "component", type: ShipDivider, selector: "sh-divider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
799
818
  }
800
819
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipSelect, decorators: [{
801
820
  type: Component,
@@ -811,7 +830,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
811
830
  @let _selOptionTemplate = _selectedOptionTemplate || _optionTemplate || _inlineTemplate;
812
831
  @let _listOptionTemplate = _optionTemplate || _inlineTemplate;
813
832
  @let _asChips = !asText() && selectMultiple();
814
- @let _showSearchText = isOpen() && hasSearch() && (_asChips || inputValue().length > 0);
833
+ @let _showSearchText = isOpen() && hasSearch();
815
834
 
816
835
  <sh-popover
817
836
  #formFieldWrapper
@@ -1 +1 @@
1
- {"version":3,"file":"ship-ui-core-ship-select.mjs","sources":["../../../projects/ship-ui/ship-select/ship-select.ts","../../../projects/ship-ui/ship-select/ship-ui-core-ship-select.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, effect, ElementRef, inject, input, model, output, signal, TemplateRef, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { ShipCheckbox } from '@ship-ui/core/ship-checkbox';\nimport { ShipChip } from '@ship-ui/core/ship-chip';\nimport { ShipDivider } from '@ship-ui/core/ship-divider';\nimport { ShipFormField } from '@ship-ui/core/ship-form-field';\nimport { ShipIcon } from '@ship-ui/core/ship-icon';\nimport { ShipPopover } from '@ship-ui/core/ship-popover';\nimport { ShipSpinner } from '@ship-ui/core/ship-spinner';\nimport { generateUniqueId } from '@ship-ui/core';\nimport { shipComponentClasses } from '@ship-ui/core';\nimport { ShipColor, ShipFormFieldVariant, ShipSize } from '@ship-ui/core';\n\n// TODO build in live validation response for free text validation\n\ntype ValidateFreeText = (value: string) => boolean;\n\n@Component({\n selector: 'sh-select',\n styleUrl: './ship-select.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, ShipPopover, ShipFormField, ShipIcon, ShipCheckbox, ShipSpinner, ShipChip, ShipDivider],\n template: `\n @let _placeholderTemplate = placeholderTemplate();\n @let _optionTemplate = optionTemplate();\n @let _freeTextOptionTemplate = freeTextOptionTemplate();\n @let _selectedOptionTemplate = selectedOptionTemplate();\n @let _inlineTemplate = inlineTemplate();\n @let _selectedOptions = selectedOptions();\n @let _inputState = inputState();\n\n @let _selOptionTemplate = _selectedOptionTemplate || _optionTemplate || _inlineTemplate;\n @let _listOptionTemplate = _optionTemplate || _inlineTemplate;\n @let _asChips = !asText() && selectMultiple();\n @let _showSearchText = isOpen() && hasSearch() && (_asChips || inputValue().length > 0);\n\n <sh-popover\n #formFieldWrapper\n [(isOpen)]=\"isOpen\"\n [disableOpenByClick]=\"true\"\n (closed)=\"close()\"\n [options]=\"{\n closeOnButton: false,\n closeOnEsc: false,\n }\">\n <sh-form-field\n trigger\n (click)=\"open()\"\n [color]=\"color()\"\n [variant]=\"variant()\"\n [size]=\"size()\"\n [class.stretch]=\"stretch()\"\n [class.small]=\"small()\"\n [class.readonly]=\"readonly() || disabled()\">\n <ng-content select=\"label\" ngProjectAs=\"label\" />\n <ng-content select=\"[prefix]\" ngProjectAs=\"[prefix]\" />\n <ng-content select=\"[boxPrefix]\" ngProjectAs=\"[boxPrefix]\" />\n\n <div class=\"input\" [class.show-search-text]=\"_showSearchText\" ngProjectAs=\"input\">\n <div class=\"selected-value\" [class.is-selected]=\"_inputState === 'selected'\">\n @if (asFreeText() && inputValue().length > 0 && !isOpen()) {\n {{ spacedSelectedOptions() }}\n } @else if (_selectedOptions.length > 0) {\n @for (selectedOption of _selectedOptions; track $index) {\n @if (selectedOption) {\n @if (_asChips) {\n <sh-chip\n [class]=\"selectClasses()\"\n class=\"small\"\n (click)=\"removeSelectedOptionByIndex($event, $index)\">\n @if (_selOptionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"_selOptionTemplate; context: { $implicit: selectedOption, last: $last }\" />\n } @else {\n {{ getLabel(selectedOption) }}\n }\n\n <sh-icon>x-bold</sh-icon>\n </sh-chip>\n } @else {\n @if (!_showSearchText) {\n @if (_selOptionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"_selOptionTemplate; context: { $implicit: selectedOption, last: $last }\" />\n } @else {\n {{ $last ? getLabel(selectedOption) : getLabel(selectedOption) + ',' }}\n }\n }\n }\n }\n }\n } @else if (!_showSearchText) {\n @if (_placeholderTemplate) {\n <ng-container *ngTemplateOutlet=\"_placeholderTemplate\" />\n } @else {\n {{ placeholderText() ?? '' }}\n }\n }\n\n <ng-content select=\"input\" />\n <ng-content select=\"textarea\" />\n </div>\n </div>\n\n @if (_inputState === 'closed') {\n <sh-icon suffix>caret-down</sh-icon>\n } @else if (_inputState === 'loading') {\n <sh-spinner class=\"primary\" suffix></sh-spinner>\n } @else if (_inputState === 'open-searching') {\n <sh-icon suffix>list-magnifying-glass</sh-icon>\n } @else if (_inputState === 'searching') {\n <sh-icon suffix>magnifying-glass</sh-icon>\n } @else if (_inputState === 'selected' && _isClearable()) {\n <sh-icon suffix (click)=\"clear($event)\">x-bold</sh-icon>\n } @else if (_inputState === 'selected' && !_isClearable()) {\n <sh-icon suffix>caret-down</sh-icon>\n } @else {\n <sh-icon suffix>caret-up</sh-icon>\n }\n </sh-form-field>\n\n <div class=\"ship-options\" #optionsWrap [id]=\"'optionsWrapId-' + componentId\" role=\"listbox\">\n @if (asFreeText()) {\n @let freeTextOption = computedFreeTextOption();\n @let freeTextOptionValue = getValue(freeTextOption);\n\n @if ($any(freeTextOptionValue).length > 0) {\n @if (freeTextTitle()) {\n <p title>{{ freeTextTitle() }}</p>\n }\n\n <li\n (click)=\"toggleOptionByIndex(-1)\"\n class=\"option\"\n role=\"option\"\n [id]=\"this.getOptionId(-1)\"\n [attr.aria-selected]=\"isSelected(-1)\"\n [class.selected]=\"isSelected(-1)\"\n [class.focused]=\"-1 === focusedOptionIndex()\">\n @if (_freeTextOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"_freeTextOptionTemplate; context: { $implicit: freeTextOption }\" />\n } @else if (_listOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"_listOptionTemplate; context: { $implicit: freeTextOption }\" />\n } @else {\n {{ freeTextOptionValue }}\n }\n </li>\n\n @if (freeTextTitle() && filteredOptions().length > 0) {\n <sh-divider />\n }\n }\n }\n\n @if (optionTitle() && filteredOptions().length > 0) {\n <p title>{{ optionTitle() }}</p>\n }\n\n @for (option of filteredOptions(); track $index) {\n <li\n (click)=\"toggleOptionByIndex($index)\"\n class=\"option\"\n role=\"option\"\n [id]=\"this.getOptionId($index)\"\n [attr.aria-selected]=\"isSelected($index)\"\n [class.selected]=\"isSelected($index)\"\n [class.focused]=\"$index === focusedOptionIndex()\">\n @if (selectMultiple()) {\n <sh-checkbox [class]=\"selectClasses()\" [checked]=\"isSelected($index)\" />\n }\n\n @if (_listOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"_listOptionTemplate; context: { $implicit: option }\" />\n } @else {\n {{ getLabel(option) }}\n }\n </li>\n }\n </div>\n </sh-popover>\n `,\n host: {\n '[class.multiple]': 'selectMultiple()',\n '[class]': 'hostClasses()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShipSelect {\n #selfRef = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\n\n value = input<string>();\n label = input<string>();\n asFreeText = input(false);\n\n color = input<ShipColor | null>(null);\n variant = input<ShipFormFieldVariant | null>(null);\n size = input<ShipSize | null>(null);\n\n optionTitle = input<string | null>(null);\n freeTextTitle = input<string | null>(null);\n freeTextPlaceholder = input<string | null>('Type to create a new option');\n validateFreeText = input<ValidateFreeText>();\n placeholder = input<string>();\n readonly = model(false);\n disabled = model(false);\n\n hostClasses = shipComponentClasses('select', {\n color: this.color,\n variant: this.variant,\n size: this.size,\n readonly: this.readonly,\n });\n lazySearch = input(false);\n inlineSearch = input(false);\n asText = input(false);\n isClearable = input(true);\n selectMultiple = input(false);\n optionTemplate = input<TemplateRef<unknown> | null>(null);\n selectedOptionTemplate = input<TemplateRef<unknown> | null>(null);\n placeholderTemplate = input<TemplateRef<unknown> | null>(null);\n freeTextOptionTemplate = input<TemplateRef<unknown> | null>(null);\n isOpen = model(false);\n isLoading = model(false);\n options = model<unknown[]>([]);\n selectedOptions = model<unknown[]>([]);\n cleared = output<void>();\n onAddNewFreeTextOption = output<string>();\n\n spacedSelectedOptions = computed(() => {\n const selectedOptions = this.selectedOptions();\n const valueKey = this.value();\n\n return selectedOptions.map((option) => (valueKey ? this.#getProperty(option, valueKey) : option)).join(', ');\n });\n\n computedFreeTextOption = computed(() => {\n const inputValue = this.inputValue();\n const valueKey = this.value();\n const newOption: Record<string, any> | string = valueKey ? {} : inputValue;\n\n if (valueKey && typeof newOption === 'object') {\n newOption[valueKey] = inputValue;\n }\n\n return newOption;\n });\n\n #previousSelectedOptions = signal<unknown[] | null>(null);\n inlineTemplate = contentChild<TemplateRef<unknown>>(TemplateRef);\n optionsWrapRef = viewChild.required<ElementRef<HTMLDivElement>>('optionsWrap');\n inputRefInput = signal<ElementRef<HTMLInputElement> | null>(null);\n #inputObserver =\n typeof MutationObserver !== 'undefined'\n ? new MutationObserver((mutations) => {\n for (var mutation of mutations) {\n if (mutation && (mutation.target.nodeName === 'INPUT' || mutation.target.nodeName === 'TEXTAREA')) {\n this.inputRefInput.set(new ElementRef(mutation.target as HTMLInputElement));\n (this.#inputObserver as MutationObserver).disconnect();\n }\n }\n })\n : undefined;\n\n inputValue = signal<string>('');\n\n prevInputValue = signal<string | null>(null);\n focusedOptionIndex = signal<number>(-1);\n\n _isClearable = computed(() => this.selectMultiple() || this.isClearable());\n selectClasses = computed(() => this.#selfRef.nativeElement.classList.toString());\n stretch = computed(() => this.selectClasses().includes('stretch'));\n small = computed(() => this.selectClasses().includes('small'));\n placeholderText = computed(() => {\n const placeholder = this.placeholder();\n const inputRefEl = this.inputRefEl();\n\n return placeholder || inputRefEl?.placeholder || null;\n });\n\n selectedOptionValues = computed(() => {\n const selectedOptions = this.selectedOptions();\n const valueKey = this.value();\n\n return valueKey\n ? selectedOptions.map((selectedOption) => this.#getProperty(selectedOption, valueKey))\n : selectedOptions;\n });\n\n filteredOptions = computed<unknown[]>(() => {\n const opts = this.options() || [];\n const label = this.label();\n const valueKey = this.value();\n const inlineSearch = this.inlineSearch();\n const inputValue = this.inputValue().toLowerCase();\n const inputValueRegex = this.#createWildcardRegex(inputValue);\n\n if (opts.length <= 0) return [];\n if (!inlineSearch || inputValue === '') {\n return opts;\n }\n\n const filtered = opts.filter((item) => {\n const optionLabel = label\n ? (this.#getProperty(item, label) ?? '').toString().toLowerCase()\n : (item ?? '').toString().toLowerCase();\n\n const optionValue = ((valueKey ? this.#getProperty(item, valueKey) : item) ?? '').toString().toLowerCase();\n\n const testLabel = inputValueRegex.test(optionLabel);\n const testValue = inputValueRegex.test(optionValue);\n\n return testLabel || testValue;\n });\n\n const scoredOptions = filtered.map((item) => {\n const optionLabel = label\n ? (this.#getProperty(item, label) ?? '').toString().toLowerCase()\n : (item ?? '').toString().toLowerCase();\n\n const optionValue = ((valueKey ? this.#getProperty(item, valueKey) : item) ?? '').toString().toLowerCase();\n\n const labelScore = this.#calculateMatchScore(optionLabel, inputValue);\n const valueScore = this.#calculateMatchScore(optionValue, inputValue);\n\n return {\n item,\n score: Math.max(labelScore, valueScore),\n };\n });\n\n scoredOptions.sort((a, b) => b.score - a.score);\n\n return scoredOptions.map((scoredOption) => scoredOption.item);\n });\n\n #calculateMatchScore(option: string, input: string): number {\n if (!input) return 0;\n\n let score = 0;\n let lastIndex = -1;\n let matchCount = 0;\n let inSequence = true;\n\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n if (option.length > lastIndex + 1 && option[lastIndex + 1] === char) {\n score += i === 0 ? 100 : 150;\n lastIndex++;\n matchCount++;\n } else {\n const charIndex = option.indexOf(char, lastIndex + 1);\n\n if (i > 0) {\n inSequence = false;\n }\n\n if (charIndex === -1) {\n return 0;\n }\n\n score += 100;\n\n lastIndex = charIndex;\n matchCount++;\n }\n }\n\n if (inSequence && input.length === matchCount) {\n score += 1000;\n }\n\n score += matchCount * 20;\n\n return score;\n }\n\n componentId = generateUniqueId();\n inputRefEl = computed(() => {\n const inputRefInput = this.inputRefInput();\n\n if (inputRefInput === null) return;\n\n const input = inputRefInput ? inputRefInput.nativeElement : null;\n\n if (!input) {\n console.warn(\n '<sh-select> input element not found are you missing to pass an <input> or <textarea> element to select component?'\n );\n return null;\n }\n\n input.autocomplete = 'off';\n input.setAttribute('role', 'combobox');\n input.setAttribute('id', `combobox-${this.componentId}`);\n input.setAttribute('aria-haspopup', 'listbox');\n input.setAttribute('aria-owns', `optionsWrapId-${this.componentId}`);\n input.setAttribute('aria-controls', `optionsWrapId-${this.componentId}`);\n\n this.#createCustomInputEventListener(input);\n\n input.addEventListener('focus', () => {\n if (this.readonly()) return;\n\n this.open();\n });\n\n input.addEventListener('input', (e: any) => {\n const newInputValue = e.target.value;\n const inputValue = this.inputValue();\n\n if (newInputValue === inputValue) return;\n\n this.focusedOptionIndex.set(this.asFreeText() ? -1 : 0);\n this.inputValue.set(newInputValue);\n this.updateInputElValue();\n });\n\n input.addEventListener('inputValueChanged', (event: any) => {\n const newInputValue = event.detail.value;\n const inputValue = this.inputValue();\n const selectedOptionsLength = untracked(() => this.selectedOptions().length);\n\n if (newInputValue === inputValue && (newInputValue !== '' || selectedOptionsLength > 0)) return;\n\n this.setSelectedOptionsFromValue(newInputValue);\n this.setInputValueFromOptions(this.selectedOptions());\n this.#setFirstSelectedOptionAsFocused();\n });\n\n return input;\n });\n\n focusEffect = effect(() => {\n const input = this.inputRefEl();\n\n if (!input) return;\n\n const index = this.focusedOptionIndex();\n\n if (index >= 0 || (index === -1 && this.asFreeText())) {\n input.setAttribute('aria-activedescendant', this.getOptionId(index));\n } else {\n input.removeAttribute('aria-activedescendant');\n }\n });\n\n openAbortController: AbortController | null = null;\n\n isOpenEffect = effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n if (!this.openAbortController) {\n this.openAbortController = new AbortController();\n }\n\n const input = this.inputRefEl();\n const asFreeText = this.asFreeText();\n const baseIndex = asFreeText ? -1 : 0;\n\n if (!input) return;\n\n input.setAttribute('aria-expanded', this.isOpen().toString());\n\n (input as HTMLInputElement).addEventListener(\n 'keydown',\n (e: KeyboardEvent) => {\n if (e.key === 'Escape' || e.key === 'Tab') {\n e.preventDefault();\n\n this.close();\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n\n this.toggleOptionByIndex(this.focusedOptionIndex(), undefined, true);\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n\n const newIndex = (this.focusedOptionIndex() as number) + 1;\n\n this.focusedOptionIndex.set(newIndex > this.filteredOptions().length - 1 ? baseIndex : newIndex);\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n\n const newIndex = (this.focusedOptionIndex() as number) - 1;\n\n this.focusedOptionIndex.set(newIndex < baseIndex ? this.filteredOptions().length - 1 : newIndex);\n }\n },\n {\n signal: this.openAbortController?.signal,\n }\n );\n } else {\n const input = this.inputRefEl();\n\n if (!input) return;\n\n input.setAttribute('aria-expanded', this.isOpen().toString());\n\n if (this.openAbortController) {\n this.openAbortController.abort();\n this.openAbortController = null;\n }\n }\n });\n\n _inputValue = '';\n inputValueEffect = effect(() => {\n const inputValue = this.inputValue();\n this._inputValue = inputValue;\n });\n\n inputRefElEffect = effect(() => {\n const input = this.inputRefEl();\n\n if (!input) return;\n\n const selectedOptionsLength = untracked(() => this.selectedOptions().length);\n if (input.value === this._inputValue && (input.value !== '' || selectedOptionsLength > 0)) return;\n\n this.disabled.set(input.disabled);\n\n untracked(() => {\n this.setSelectedOptionsFromValue(input.value);\n this.setInputValueFromOptions(this.selectedOptions());\n });\n });\n\n selectedLabels = computed(() => {\n const selected = this.selectedOptions();\n const label = this.label();\n\n if (!label) {\n return selected.join(', ');\n }\n\n return selected.map((selected) => this.getLabel(selected)).join(', ');\n });\n\n inputState = computed(() => {\n if ((this.selectedOptions().length > 0 || (this.asFreeText() && this.inputValue().length > 0)) && !this.isOpen()) {\n return 'selected';\n }\n\n if (this.isLoading()) {\n return 'loading';\n }\n\n if (this.isOpen() && (this.lazySearch() || this.inlineSearch())) {\n return 'open-searching';\n }\n\n if (this.isOpen()) {\n return 'open';\n }\n\n if (this.inlineSearch() || this.lazySearch()) {\n return 'searching';\n }\n\n return 'closed';\n });\n\n hasSearch = computed(() => this.inlineSearch() || this.lazySearch());\n\n #selectedOptionsEffect = effect(() => {\n if (this.selectMultiple() && this.hasSearch()) {\n return;\n }\n\n const selectedOptions = this.selectedOptions();\n const valueKey = this.value();\n\n const inputValue = selectedOptions\n .map((option) => {\n const optionValue = valueKey ? this.#getProperty(option, valueKey) : option;\n return optionValue;\n })\n .join(',');\n\n this.inputValue.set(inputValue);\n });\n\n ngOnInit() {\n this.setInitInput();\n }\n\n setInitInput() {\n const input = this.#selfRef.nativeElement.querySelector('input');\n\n if (input) {\n this.inputRefInput.set(new ElementRef(input));\n return;\n }\n\n const textarea = this.#selfRef.nativeElement.querySelector('textarea');\n\n if (textarea) {\n this.inputRefInput.set(new ElementRef(textarea as any as HTMLInputElement));\n return;\n }\n\n if (typeof MutationObserver !== 'undefined') {\n (this.#inputObserver as MutationObserver).observe(this.#selfRef.nativeElement, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n }\n\n setSelectedOptionsFromValue(value: string) {\n const options = this.options() || [];\n const valueKey = this.value();\n const selectMultiple = this.selectMultiple();\n\n const inputValueAsString = value.toString().split(',');\n\n if (inputValueAsString.length === 0) {\n this.selectedOptions.set([]);\n return;\n }\n const inputAsArray = selectMultiple ? inputValueAsString : [inputValueAsString[0]];\n\n const selectedOptions = options.filter((option) => {\n const optionValue = valueKey ? this.#getProperty(option, valueKey)?.toString() : option?.toString();\n\n return optionValue !== undefined && optionValue !== null && inputAsArray.includes(optionValue);\n });\n\n const isMatched = selectedOptions.length > 0;\n this.selectedOptions.set(selectMultiple ? selectedOptions : isMatched ? [selectedOptions[0]] : []);\n }\n\n setInputValueFromOptions(options: unknown[]) {\n const valueKey = this.value();\n\n if (options.length === 0) {\n this.inputValue.set('');\n this.updateInputElValue();\n\n return;\n }\n\n const newInputValue = options\n .map((option) => {\n const optionValue = valueKey ? this.#getProperty(option, valueKey) : option;\n return optionValue;\n })\n .join(',');\n\n if (newInputValue === this.inputValue()) return;\n\n this.inputValue.set(newInputValue);\n this.updateInputElValue();\n }\n\n getValue(option: unknown) {\n const valueKey = this.value();\n\n if (!valueKey) return option;\n\n return this.#getProperty(option, valueKey);\n }\n\n getLabel(option: unknown) {\n const label = this.label();\n\n if (!label) return option;\n\n return this.#getProperty(option, label);\n }\n\n getOptionId(index: number) {\n return `opt-${this.componentId}-${index}`;\n }\n\n toggleOptionByIndex(optionIndex: number, event?: MouseEvent, enterKey = false) {\n let option = this.filteredOptions()[optionIndex];\n\n if (this.asFreeText() && optionIndex === -1) {\n const newOption = this.computedFreeTextOption();\n const newOptionValue = this.getValue(newOption);\n const validateFreeTextFunc = this.validateFreeText() ?? ((val: string) => true);\n\n const isValid = validateFreeTextFunc(newOptionValue as string);\n\n if (!isValid) return;\n\n this.options.update((options) => {\n const index = options.findIndex((option) => this.getValue(option) === newOptionValue);\n\n if (index > -1) return options;\n\n this.onAddNewFreeTextOption.emit(newOptionValue as string);\n\n return [newOption, ...options];\n });\n\n optionIndex = 0;\n option = newOption;\n } else if (!option) {\n this.close();\n return;\n }\n\n if (event) {\n event.stopPropagation();\n }\n\n const selectMultiple = this.selectMultiple();\n const isClearable = this._isClearable();\n const valueKey = this.value();\n const selectedOptionValues = this.selectedOptionValues();\n const optionValue = valueKey ? this.#getProperty(option, valueKey) : option;\n\n this.prevInputValue.set(null);\n this.#previousSelectedOptions.set(null);\n this.selectedOptions.update((selectedOptions) => {\n const index = selectedOptionValues.indexOf(optionValue);\n\n if (index > -1) {\n // Remove it\n const nextSelectedOptions = [...selectedOptions.slice(0, index), ...selectedOptions.slice(index + 1)];\n\n return isClearable\n ? nextSelectedOptions\n : nextSelectedOptions.length > 0\n ? nextSelectedOptions\n : selectedOptions;\n } else {\n // Add it\n this.focusedOptionIndex.set(optionIndex);\n return selectMultiple ? [...selectedOptions, option] : [option];\n }\n });\n\n if (selectMultiple) {\n this.inputRefEl()?.focus();\n } else {\n this.isOpen.set(false);\n }\n\n this.setInputValueFromOptions(this.selectedOptions());\n\n if (selectMultiple && this.hasSearch()) {\n this.inputValue.set('');\n this.updateInputElValue();\n }\n }\n\n removeSelectedOptionByIndex($event: MouseEvent, optionRemoveIndex: number) {\n $event.stopPropagation();\n\n this.selectedOptions.update((selectedOptions) => {\n return [...selectedOptions.slice(0, optionRemoveIndex), ...selectedOptions.slice(optionRemoveIndex + 1)];\n });\n\n this.setInputValueFromOptions(this.selectedOptions());\n }\n\n isSelected(optionIndex: number): boolean {\n const valueKey = this.value();\n const option = this.filteredOptions()[optionIndex];\n const optionValue = valueKey ? this.#getProperty(option, valueKey) : option;\n\n return this.selectedOptionValues().indexOf(optionValue) > -1;\n }\n\n open() {\n if (this.isOpen()) return;\n\n this.isOpen.set(true);\n\n if (this.hasSearch()) {\n this.prevInputValue.set(this.inputValue() ?? '');\n this.inputValue.set('');\n this.updateInputElValue();\n } else {\n this.#previousSelectedOptions.set(this.selectedOptions());\n }\n\n if (!this.selectMultiple()) {\n this.#setFirstSelectedOptionAsFocused();\n }\n }\n\n #setFirstSelectedOptionAsFocused() {\n const firstSelectedValue = this.selectedOptionValues()[0];\n const valueKey = this.value();\n\n if (firstSelectedValue) {\n const findOptionIndex = this.filteredOptions().findIndex((x) =>\n valueKey ? this.#getProperty(x, valueKey) === firstSelectedValue : x === firstSelectedValue\n );\n\n this.focusedOptionIndex.set(findOptionIndex);\n } else {\n this.focusedOptionIndex.set(-1);\n }\n }\n\n close() {\n this.isOpen.set(false);\n\n const prevInputValue = this.prevInputValue();\n const prevSelectedOptions = this.#previousSelectedOptions();\n\n if (this.asFreeText() && !this.selectMultiple()) {\n this.updateInputElValue();\n return;\n }\n\n if (this.hasSearch() && prevInputValue) {\n this.inputValue.set(prevInputValue);\n this.setInputValueFromOptions(this.selectedOptions());\n }\n\n if (!this.hasSearch() && prevSelectedOptions !== null) {\n this.setInputValueFromOptions(prevSelectedOptions);\n }\n\n if (this.selectMultiple()) {\n this.setInputValueFromOptions(this.selectedOptions());\n }\n }\n\n clear($event?: MouseEvent) {\n $event?.stopPropagation();\n\n this.inputValue.set('');\n this.selectedOptions.set([]);\n this.isOpen.set(false);\n this.prevInputValue.set(null);\n this.cleared.emit();\n\n this.updateInputElValue();\n }\n\n updateInputElValue() {\n const inputEl = this.inputRefEl();\n const inputValue = this.inputValue();\n\n if (!inputEl || inputEl.value === inputValue) return;\n\n inputEl.value = inputValue;\n inputEl.dispatchEvent(new Event('input'));\n }\n\n #getProperty(obj: unknown, path: string): unknown {\n return path.split('.').reduce((o: unknown, i: string) => (o as any)?.[i], obj);\n }\n\n #createCustomInputEventListener(input: HTMLInputElement | HTMLTextAreaElement) {\n Object.defineProperty(input, 'value', {\n configurable: true,\n get() {\n const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(input), 'value');\n return descriptor!.get!.call(this);\n },\n set(newVal) {\n const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(input), 'value');\n descriptor!.set!.call(this, newVal);\n\n const inputEvent = new CustomEvent('inputValueChanged', {\n bubbles: true,\n cancelable: true,\n detail: {\n value: newVal,\n },\n });\n\n this.dispatchEvent(inputEvent);\n\n return newVal;\n },\n });\n }\n\n #createWildcardRegex(inputValue: string | null | undefined): RegExp {\n const lowerCaseInput = (inputValue ?? '').toLowerCase();\n let regexPattern = '^';\n\n for (const char of lowerCaseInput) {\n regexPattern += '.*' + this.#escapeRegexChar(char);\n }\n\n regexPattern += '.*$';\n\n return new RegExp(regexPattern, 'i');\n }\n\n #escapeRegexChar(char: string): string {\n return char.replace(/[-\\/\\\\^$+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n ngOnDestroy() {\n if (this.openAbortController) {\n this.openAbortController.abort();\n this.openAbortController = null;\n }\n\n if (typeof MutationObserver !== 'undefined') {\n (this.#inputObserver as MutationObserver).disconnect();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ship-ui-core-ship-select.mjs","sources":["../../../projects/ship-ui/ship-select/ship-select.ts","../../../projects/ship-ui/ship-select/ship-ui-core-ship-select.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, effect, ElementRef, inject, input, model, output, signal, TemplateRef, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { ShipCheckbox } from '@ship-ui/core/ship-checkbox';\nimport { ShipChip } from '@ship-ui/core/ship-chip';\nimport { ShipDivider } from '@ship-ui/core/ship-divider';\nimport { ShipFormField } from '@ship-ui/core/ship-form-field';\nimport { ShipIcon } from '@ship-ui/core/ship-icon';\nimport { ShipPopover } from '@ship-ui/core/ship-popover';\nimport { ShipSpinner } from '@ship-ui/core/ship-spinner';\nimport { generateUniqueId } from '@ship-ui/core';\nimport { shipComponentClasses } from '@ship-ui/core';\nimport { ShipColor, ShipFormFieldVariant, ShipSize } from '@ship-ui/core';\n\n// TODO build in live validation response for free text validation\n\ntype ValidateFreeText = (value: string) => boolean;\n\n@Component({\n selector: 'sh-select',\n styleUrl: './ship-select.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, ShipPopover, ShipFormField, ShipIcon, ShipCheckbox, ShipSpinner, ShipChip, ShipDivider],\n template: `\n @let _placeholderTemplate = placeholderTemplate();\n @let _optionTemplate = optionTemplate();\n @let _freeTextOptionTemplate = freeTextOptionTemplate();\n @let _selectedOptionTemplate = selectedOptionTemplate();\n @let _inlineTemplate = inlineTemplate();\n @let _selectedOptions = selectedOptions();\n @let _inputState = inputState();\n\n @let _selOptionTemplate = _selectedOptionTemplate || _optionTemplate || _inlineTemplate;\n @let _listOptionTemplate = _optionTemplate || _inlineTemplate;\n @let _asChips = !asText() && selectMultiple();\n @let _showSearchText = isOpen() && hasSearch();\n\n <sh-popover\n #formFieldWrapper\n [(isOpen)]=\"isOpen\"\n [disableOpenByClick]=\"true\"\n (closed)=\"close()\"\n [options]=\"{\n closeOnButton: false,\n closeOnEsc: false,\n }\">\n <sh-form-field\n trigger\n (click)=\"open()\"\n [color]=\"color()\"\n [variant]=\"variant()\"\n [size]=\"size()\"\n [class.stretch]=\"stretch()\"\n [class.small]=\"small()\"\n [class.readonly]=\"readonly() || disabled()\">\n <ng-content select=\"label\" ngProjectAs=\"label\" />\n <ng-content select=\"[prefix]\" ngProjectAs=\"[prefix]\" />\n <ng-content select=\"[boxPrefix]\" ngProjectAs=\"[boxPrefix]\" />\n\n <div class=\"input\" [class.show-search-text]=\"_showSearchText\" ngProjectAs=\"input\">\n <div class=\"selected-value\" [class.is-selected]=\"_inputState === 'selected'\">\n @if (asFreeText() && inputValue().length > 0 && !isOpen()) {\n {{ spacedSelectedOptions() }}\n } @else if (_selectedOptions.length > 0) {\n @for (selectedOption of _selectedOptions; track $index) {\n @if (selectedOption) {\n @if (_asChips) {\n <sh-chip\n [class]=\"selectClasses()\"\n class=\"small\"\n (click)=\"removeSelectedOptionByIndex($event, $index)\">\n @if (_selOptionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"_selOptionTemplate; context: { $implicit: selectedOption, last: $last }\" />\n } @else {\n {{ getLabel(selectedOption) }}\n }\n\n <sh-icon>x-bold</sh-icon>\n </sh-chip>\n } @else {\n @if (!_showSearchText) {\n @if (_selOptionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"_selOptionTemplate; context: { $implicit: selectedOption, last: $last }\" />\n } @else {\n {{ $last ? getLabel(selectedOption) : getLabel(selectedOption) + ',' }}\n }\n }\n }\n }\n }\n } @else if (!_showSearchText) {\n @if (_placeholderTemplate) {\n <ng-container *ngTemplateOutlet=\"_placeholderTemplate\" />\n } @else {\n {{ placeholderText() ?? '' }}\n }\n }\n\n <ng-content select=\"input\" />\n <ng-content select=\"textarea\" />\n </div>\n </div>\n\n @if (_inputState === 'closed') {\n <sh-icon suffix>caret-down</sh-icon>\n } @else if (_inputState === 'loading') {\n <sh-spinner class=\"primary\" suffix></sh-spinner>\n } @else if (_inputState === 'open-searching') {\n <sh-icon suffix>list-magnifying-glass</sh-icon>\n } @else if (_inputState === 'searching') {\n <sh-icon suffix>magnifying-glass</sh-icon>\n } @else if (_inputState === 'selected' && _isClearable()) {\n <sh-icon suffix (click)=\"clear($event)\">x-bold</sh-icon>\n } @else if (_inputState === 'selected' && !_isClearable()) {\n <sh-icon suffix>caret-down</sh-icon>\n } @else {\n <sh-icon suffix>caret-up</sh-icon>\n }\n </sh-form-field>\n\n <div class=\"ship-options\" #optionsWrap [id]=\"'optionsWrapId-' + componentId\" role=\"listbox\">\n @if (asFreeText()) {\n @let freeTextOption = computedFreeTextOption();\n @let freeTextOptionValue = getValue(freeTextOption);\n\n @if ($any(freeTextOptionValue).length > 0) {\n @if (freeTextTitle()) {\n <p title>{{ freeTextTitle() }}</p>\n }\n\n <li\n (click)=\"toggleOptionByIndex(-1)\"\n class=\"option\"\n role=\"option\"\n [id]=\"this.getOptionId(-1)\"\n [attr.aria-selected]=\"isSelected(-1)\"\n [class.selected]=\"isSelected(-1)\"\n [class.focused]=\"-1 === focusedOptionIndex()\">\n @if (_freeTextOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"_freeTextOptionTemplate; context: { $implicit: freeTextOption }\" />\n } @else if (_listOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"_listOptionTemplate; context: { $implicit: freeTextOption }\" />\n } @else {\n {{ freeTextOptionValue }}\n }\n </li>\n\n @if (freeTextTitle() && filteredOptions().length > 0) {\n <sh-divider />\n }\n }\n }\n\n @if (optionTitle() && filteredOptions().length > 0) {\n <p title>{{ optionTitle() }}</p>\n }\n\n @for (option of filteredOptions(); track $index) {\n <li\n (click)=\"toggleOptionByIndex($index)\"\n class=\"option\"\n role=\"option\"\n [id]=\"this.getOptionId($index)\"\n [attr.aria-selected]=\"isSelected($index)\"\n [class.selected]=\"isSelected($index)\"\n [class.focused]=\"$index === focusedOptionIndex()\">\n @if (selectMultiple()) {\n <sh-checkbox [class]=\"selectClasses()\" [checked]=\"isSelected($index)\" />\n }\n\n @if (_listOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"_listOptionTemplate; context: { $implicit: option }\" />\n } @else {\n {{ getLabel(option) }}\n }\n </li>\n }\n </div>\n </sh-popover>\n `,\n host: {\n '[class.multiple]': 'selectMultiple()',\n '[class]': 'hostClasses()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShipSelect {\n #selfRef = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\n\n value = input<string>();\n label = input<string>();\n asFreeText = input(false);\n\n color = input<ShipColor | null>(null);\n variant = input<ShipFormFieldVariant | null>(null);\n size = input<ShipSize | null>(null);\n\n optionTitle = input<string | null>(null);\n freeTextTitle = input<string | null>(null);\n freeTextPlaceholder = input<string | null>('Type to create a new option');\n validateFreeText = input<ValidateFreeText>();\n placeholder = input<string>();\n readonly = model(false);\n disabled = model(false);\n\n hostClasses = shipComponentClasses('select', {\n color: this.color,\n variant: this.variant,\n size: this.size,\n readonly: this.readonly,\n });\n lazySearch = input(false);\n inlineSearch = input(false);\n asText = input(false);\n isClearable = input(true);\n selectMultiple = input(false);\n optionTemplate = input<TemplateRef<unknown> | null>(null);\n selectedOptionTemplate = input<TemplateRef<unknown> | null>(null);\n placeholderTemplate = input<TemplateRef<unknown> | null>(null);\n freeTextOptionTemplate = input<TemplateRef<unknown> | null>(null);\n isOpen = model(false);\n isLoading = model(false);\n options = model<unknown[]>([]);\n selectedOptions = model<unknown[]>([]);\n cleared = output<void>();\n onAddNewFreeTextOption = output<string>();\n\n spacedSelectedOptions = computed(() => {\n const selectedOptions = this.selectedOptions();\n const valueKey = this.value();\n\n return selectedOptions.map((option) => (valueKey ? this.#getProperty(option, valueKey) : option)).join(', ');\n });\n\n computedFreeTextOption = computed(() => {\n const inputValue = this.inputValue();\n const valueKey = this.value();\n const newOption: Record<string, any> | string = valueKey ? {} : inputValue;\n\n if (valueKey && typeof newOption === 'object') {\n newOption[valueKey] = inputValue;\n }\n\n return newOption;\n });\n\n #previousSelectedOptions = signal<unknown[] | null>(null);\n inlineTemplate = contentChild<TemplateRef<unknown>>(TemplateRef);\n optionsWrapRef = viewChild.required<ElementRef<HTMLDivElement>>('optionsWrap');\n inputRefInput = signal<ElementRef<HTMLInputElement> | null>(null);\n #inputObserver =\n typeof MutationObserver !== 'undefined'\n ? new MutationObserver((mutations) => {\n for (var mutation of mutations) {\n if (mutation && (mutation.target.nodeName === 'INPUT' || mutation.target.nodeName === 'TEXTAREA')) {\n this.inputRefInput.set(new ElementRef(mutation.target as HTMLInputElement));\n (this.#inputObserver as MutationObserver).disconnect();\n }\n }\n })\n : undefined;\n\n inputValue = signal<string>('');\n\n prevInputValue = signal<string | null>(null);\n focusedOptionIndex = signal<number>(-1);\n\n _isClearable = computed(() => this.selectMultiple() || this.isClearable());\n selectClasses = computed(() => this.#selfRef.nativeElement.classList.toString());\n stretch = computed(() => this.selectClasses().includes('stretch'));\n small = computed(() => this.selectClasses().includes('small'));\n placeholderText = computed(() => {\n const placeholder = this.placeholder();\n const inputRefEl = this.inputRefEl();\n\n return placeholder || inputRefEl?.placeholder || null;\n });\n\n selectedOptionValues = computed(() => {\n const selectedOptions = this.selectedOptions();\n const valueKey = this.value();\n\n return valueKey\n ? selectedOptions.map((selectedOption) => this.#getProperty(selectedOption, valueKey))\n : selectedOptions;\n });\n\n filteredOptions = computed<unknown[]>(() => {\n const opts = this.options() || [];\n const label = this.label();\n const valueKey = this.value();\n const inlineSearch = this.inlineSearch();\n const inputValue = this.inputValue().toLowerCase();\n const inputValueRegex = this.#createWildcardRegex(inputValue);\n\n if (opts.length <= 0) return [];\n if (!inlineSearch || inputValue === '') {\n return opts;\n }\n\n const filtered = opts.filter((item) => {\n const optionLabel = label\n ? (this.#getProperty(item, label) ?? '').toString().toLowerCase()\n : (item ?? '').toString().toLowerCase();\n\n const optionValue = ((valueKey ? this.#getProperty(item, valueKey) : item) ?? '').toString().toLowerCase();\n\n const testLabel = inputValueRegex.test(optionLabel);\n const testValue = inputValueRegex.test(optionValue);\n\n return testLabel || testValue;\n });\n\n const scoredOptions = filtered.map((item) => {\n const optionLabel = label\n ? (this.#getProperty(item, label) ?? '').toString().toLowerCase()\n : (item ?? '').toString().toLowerCase();\n\n const optionValue = ((valueKey ? this.#getProperty(item, valueKey) : item) ?? '').toString().toLowerCase();\n\n const labelScore = this.#calculateMatchScore(optionLabel, inputValue);\n const valueScore = this.#calculateMatchScore(optionValue, inputValue);\n\n return {\n item,\n score: Math.max(labelScore, valueScore),\n };\n });\n\n scoredOptions.sort((a, b) => b.score - a.score);\n\n return scoredOptions.map((scoredOption) => scoredOption.item);\n });\n\n #calculateMatchScore(option: string, input: string): number {\n if (!input) return 0;\n\n let score = 0;\n let lastIndex = -1;\n let matchCount = 0;\n let inSequence = true;\n\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n if (option.length > lastIndex + 1 && option[lastIndex + 1] === char) {\n score += i === 0 ? 100 : 150;\n lastIndex++;\n matchCount++;\n } else {\n const charIndex = option.indexOf(char, lastIndex + 1);\n\n if (i > 0) {\n inSequence = false;\n }\n\n if (charIndex === -1) {\n return 0;\n }\n\n score += 100;\n\n lastIndex = charIndex;\n matchCount++;\n }\n }\n\n if (inSequence && input.length === matchCount) {\n score += 1000;\n }\n\n score += matchCount * 20;\n\n return score;\n }\n\n componentId = generateUniqueId();\n inputRefEl = computed(() => {\n const inputRefInput = this.inputRefInput();\n\n if (inputRefInput === null) return;\n\n const input = inputRefInput ? inputRefInput.nativeElement : null;\n\n if (!input) {\n console.warn(\n '<sh-select> input element not found are you missing to pass an <input> or <textarea> element to select component?'\n );\n return null;\n }\n\n input.autocomplete = 'off';\n input.setAttribute('role', 'combobox');\n input.setAttribute('id', `combobox-${this.componentId}`);\n input.setAttribute('aria-haspopup', 'listbox');\n input.setAttribute('aria-owns', `optionsWrapId-${this.componentId}`);\n input.setAttribute('aria-controls', `optionsWrapId-${this.componentId}`);\n\n this.#createCustomInputEventListener(input);\n\n input.addEventListener('focus', () => {\n if (this.readonly()) return;\n\n this.open();\n });\n\n input.addEventListener('input', (e: any) => {\n const newInputValue = e.target.value;\n const inputValue = this.inputValue();\n\n if (newInputValue === inputValue) return;\n\n this.focusedOptionIndex.set(this.asFreeText() ? -1 : 0);\n this.inputValue.set(newInputValue);\n this.updateInputElValue();\n });\n\n input.addEventListener('inputValueChanged', (event: any) => {\n const newInputValue = event.detail.value;\n const inputValue = this.inputValue();\n const selectedOptionsLength = untracked(() => this.selectedOptions().length);\n\n if (newInputValue === inputValue && (newInputValue !== '' || selectedOptionsLength > 0)) return;\n\n this.setSelectedOptionsFromValue(newInputValue);\n this.setInputValueFromOptions(this.selectedOptions());\n this.#setFirstSelectedOptionAsFocused();\n });\n\n return input;\n });\n\n focusEffect = effect(() => {\n const input = this.inputRefEl();\n\n if (!input) return;\n\n const index = this.focusedOptionIndex();\n\n if (index >= 0 || (index === -1 && this.asFreeText())) {\n input.setAttribute('aria-activedescendant', this.getOptionId(index));\n } else {\n input.removeAttribute('aria-activedescendant');\n }\n });\n\n openAbortController: AbortController | null = null;\n\n isOpenEffect = effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n if (!this.openAbortController) {\n this.openAbortController = new AbortController();\n }\n\n const input = this.inputRefEl();\n const asFreeText = this.asFreeText();\n const baseIndex = asFreeText ? -1 : 0;\n\n if (!input) return;\n\n input.setAttribute('aria-expanded', this.isOpen().toString());\n\n (input as HTMLInputElement).addEventListener(\n 'keydown',\n (e: KeyboardEvent) => {\n if (e.key === 'Escape' || e.key === 'Tab') {\n e.preventDefault();\n\n this.close();\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n\n this.toggleOptionByIndex(this.focusedOptionIndex(), undefined, true);\n }\n\n if (e.key === ' ' || e.key === 'Spacebar') {\n if (!this.hasSearch()) {\n e.preventDefault();\n\n this.toggleOptionByIndex(this.focusedOptionIndex(), undefined, true);\n }\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n\n const newIndex = (this.focusedOptionIndex() as number) + 1;\n\n this.focusedOptionIndex.set(newIndex > this.filteredOptions().length - 1 ? baseIndex : newIndex);\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n\n const newIndex = (this.focusedOptionIndex() as number) - 1;\n\n this.focusedOptionIndex.set(newIndex < baseIndex ? this.filteredOptions().length - 1 : newIndex);\n }\n },\n {\n signal: this.openAbortController?.signal,\n }\n );\n } else {\n const input = this.inputRefEl();\n\n if (!input) return;\n\n input.setAttribute('aria-expanded', this.isOpen().toString());\n\n if (this.openAbortController) {\n this.openAbortController.abort();\n this.openAbortController = null;\n }\n }\n });\n\n _inputValue = '';\n inputValueEffect = effect(() => {\n const inputValue = this.inputValue();\n this._inputValue = inputValue;\n });\n\n inputRefElEffect = effect(() => {\n const input = this.inputRefEl();\n\n if (!input) return;\n\n const selectedOptionsLength = untracked(() => this.selectedOptions().length);\n if (input.value === this._inputValue && (input.value !== '' || selectedOptionsLength > 0)) return;\n\n this.disabled.set(input.disabled);\n\n untracked(() => {\n this.setSelectedOptionsFromValue(input.value);\n this.setInputValueFromOptions(this.selectedOptions());\n });\n });\n\n inputReadonlyEffect = effect(() => {\n const input = this.inputRefEl();\n\n if (!input) return;\n\n const isReadOnly = this.readonly() || !this.hasSearch();\n if (isReadOnly) {\n input.setAttribute('readonly', 'true');\n } else {\n input.removeAttribute('readonly');\n }\n });\n\n selectedLabels = computed(() => {\n const selected = this.selectedOptions();\n const label = this.label();\n\n if (!label) {\n return selected.join(', ');\n }\n\n return selected.map((selected) => this.getLabel(selected)).join(', ');\n });\n\n inputState = computed(() => {\n if ((this.selectedOptions().length > 0 || (this.asFreeText() && this.inputValue().length > 0)) && !this.isOpen()) {\n return 'selected';\n }\n\n if (this.isLoading()) {\n return 'loading';\n }\n\n if (this.isOpen() && (this.lazySearch() || this.inlineSearch())) {\n return 'open-searching';\n }\n\n if (this.isOpen()) {\n return 'open';\n }\n\n if (this.inlineSearch() || this.lazySearch()) {\n return 'searching';\n }\n\n return 'closed';\n });\n\n hasSearch = computed(() => this.inlineSearch() || this.lazySearch());\n\n #selectedOptionsEffect = effect(() => {\n if (this.selectMultiple() && this.hasSearch()) {\n return;\n }\n\n const selectedOptions = this.selectedOptions();\n const valueKey = this.value();\n\n const inputValue = selectedOptions\n .map((option) => {\n const optionValue = valueKey ? this.#getProperty(option, valueKey) : option;\n return optionValue;\n })\n .join(',');\n\n this.inputValue.set(inputValue);\n });\n\n ngOnInit() {\n this.setInitInput();\n }\n\n setInitInput() {\n const input = this.#selfRef.nativeElement.querySelector('input');\n\n if (input) {\n this.inputRefInput.set(new ElementRef(input));\n return;\n }\n\n const textarea = this.#selfRef.nativeElement.querySelector('textarea');\n\n if (textarea) {\n this.inputRefInput.set(new ElementRef(textarea as any as HTMLInputElement));\n return;\n }\n\n if (typeof MutationObserver !== 'undefined') {\n (this.#inputObserver as MutationObserver).observe(this.#selfRef.nativeElement, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n }\n\n setSelectedOptionsFromValue(value: string) {\n const options = this.options() || [];\n const valueKey = this.value();\n const selectMultiple = this.selectMultiple();\n\n const inputValueAsString = value.toString().split(',');\n\n if (inputValueAsString.length === 0) {\n this.selectedOptions.set([]);\n return;\n }\n const inputAsArray = selectMultiple ? inputValueAsString : [inputValueAsString[0]];\n\n const selectedOptions = options.filter((option) => {\n const optionValue = valueKey ? this.#getProperty(option, valueKey)?.toString() : option?.toString();\n\n return optionValue !== undefined && optionValue !== null && inputAsArray.includes(optionValue);\n });\n\n const isMatched = selectedOptions.length > 0;\n this.selectedOptions.set(selectMultiple ? selectedOptions : isMatched ? [selectedOptions[0]] : []);\n }\n\n setInputValueFromOptions(options: unknown[]) {\n const valueKey = this.value();\n\n if (options.length === 0) {\n this.inputValue.set('');\n this.updateInputElValue();\n\n return;\n }\n\n const newInputValue = options\n .map((option) => {\n const optionValue = valueKey ? this.#getProperty(option, valueKey) : option;\n return optionValue;\n })\n .join(',');\n\n if (newInputValue === this.inputValue()) return;\n\n this.inputValue.set(newInputValue);\n this.updateInputElValue();\n }\n\n getValue(option: unknown) {\n const valueKey = this.value();\n\n if (!valueKey) return option;\n\n return this.#getProperty(option, valueKey);\n }\n\n getLabel(option: unknown) {\n const label = this.label();\n\n if (!label) return option;\n\n return this.#getProperty(option, label);\n }\n\n getOptionId(index: number) {\n return `opt-${this.componentId}-${index}`;\n }\n\n toggleOptionByIndex(optionIndex: number, event?: MouseEvent, enterKey = false) {\n let option = this.filteredOptions()[optionIndex];\n\n if (this.asFreeText() && optionIndex === -1) {\n const newOption = this.computedFreeTextOption();\n const newOptionValue = this.getValue(newOption);\n const validateFreeTextFunc = this.validateFreeText() ?? ((val: string) => true);\n\n const isValid = validateFreeTextFunc(newOptionValue as string);\n\n if (!isValid) return;\n\n this.options.update((options) => {\n const index = options.findIndex((option) => this.getValue(option) === newOptionValue);\n\n if (index > -1) return options;\n\n this.onAddNewFreeTextOption.emit(newOptionValue as string);\n\n return [newOption, ...options];\n });\n\n optionIndex = 0;\n option = newOption;\n } else if (!option) {\n this.close();\n return;\n }\n\n if (event) {\n event.stopPropagation();\n }\n\n const selectMultiple = this.selectMultiple();\n const isClearable = this._isClearable();\n const valueKey = this.value();\n const selectedOptionValues = this.selectedOptionValues();\n const optionValue = valueKey ? this.#getProperty(option, valueKey) : option;\n\n this.prevInputValue.set(null);\n this.#previousSelectedOptions.set(null);\n this.selectedOptions.update((selectedOptions) => {\n const index = selectedOptionValues.indexOf(optionValue);\n\n if (index > -1) {\n // Remove it\n const nextSelectedOptions = [...selectedOptions.slice(0, index), ...selectedOptions.slice(index + 1)];\n\n return isClearable\n ? nextSelectedOptions\n : nextSelectedOptions.length > 0\n ? nextSelectedOptions\n : selectedOptions;\n } else {\n // Add it\n this.focusedOptionIndex.set(optionIndex);\n return selectMultiple ? [...selectedOptions, option] : [option];\n }\n });\n\n if (selectMultiple) {\n this.inputRefEl()?.focus();\n } else {\n this.isOpen.set(false);\n }\n\n this.setInputValueFromOptions(this.selectedOptions());\n\n if (selectMultiple && this.hasSearch()) {\n this.inputValue.set('');\n this.updateInputElValue();\n }\n }\n\n removeSelectedOptionByIndex($event: MouseEvent, optionRemoveIndex: number) {\n $event.stopPropagation();\n\n this.selectedOptions.update((selectedOptions) => {\n return [...selectedOptions.slice(0, optionRemoveIndex), ...selectedOptions.slice(optionRemoveIndex + 1)];\n });\n\n this.setInputValueFromOptions(this.selectedOptions());\n }\n\n isSelected(optionIndex: number): boolean {\n const valueKey = this.value();\n const option = this.filteredOptions()[optionIndex];\n const optionValue = valueKey ? this.#getProperty(option, valueKey) : option;\n\n return this.selectedOptionValues().indexOf(optionValue) > -1;\n }\n\n open() {\n if (this.isOpen()) return;\n\n this.isOpen.set(true);\n\n if (this.hasSearch()) {\n this.prevInputValue.set(this.inputValue() ?? '');\n this.inputValue.set('');\n this.updateInputElValue();\n } else {\n this.#previousSelectedOptions.set(this.selectedOptions());\n }\n\n if (!this.selectMultiple()) {\n this.#setFirstSelectedOptionAsFocused();\n }\n }\n\n #setFirstSelectedOptionAsFocused() {\n const firstSelectedValue = this.selectedOptionValues()[0];\n const valueKey = this.value();\n\n if (firstSelectedValue) {\n const findOptionIndex = this.filteredOptions().findIndex((x) =>\n valueKey ? this.#getProperty(x, valueKey) === firstSelectedValue : x === firstSelectedValue\n );\n\n this.focusedOptionIndex.set(findOptionIndex);\n } else {\n this.focusedOptionIndex.set(-1);\n }\n }\n\n close() {\n this.isOpen.set(false);\n\n const prevInputValue = this.prevInputValue();\n const prevSelectedOptions = this.#previousSelectedOptions();\n\n if (this.asFreeText() && !this.selectMultiple()) {\n this.updateInputElValue();\n return;\n }\n\n if (this.hasSearch() && prevInputValue) {\n this.inputValue.set(prevInputValue);\n this.setInputValueFromOptions(this.selectedOptions());\n }\n\n if (!this.hasSearch() && prevSelectedOptions !== null) {\n this.setInputValueFromOptions(prevSelectedOptions);\n }\n\n if (this.selectMultiple()) {\n this.setInputValueFromOptions(this.selectedOptions());\n }\n }\n\n clear($event?: MouseEvent) {\n $event?.stopPropagation();\n\n this.inputValue.set('');\n this.selectedOptions.set([]);\n this.isOpen.set(false);\n this.prevInputValue.set(null);\n this.cleared.emit();\n\n this.updateInputElValue();\n }\n\n updateInputElValue() {\n const inputEl = this.inputRefEl();\n const inputValue = this.inputValue();\n\n if (!inputEl || inputEl.value === inputValue) return;\n\n inputEl.value = inputValue;\n inputEl.dispatchEvent(new Event('input'));\n }\n\n #getProperty(obj: unknown, path: string): unknown {\n return path.split('.').reduce((o: unknown, i: string) => (o as any)?.[i], obj);\n }\n\n #createCustomInputEventListener(input: HTMLInputElement | HTMLTextAreaElement) {\n Object.defineProperty(input, 'value', {\n configurable: true,\n get() {\n const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(input), 'value');\n return descriptor!.get!.call(this);\n },\n set(newVal) {\n const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(input), 'value');\n descriptor!.set!.call(this, newVal);\n\n const inputEvent = new CustomEvent('inputValueChanged', {\n bubbles: true,\n cancelable: true,\n detail: {\n value: newVal,\n },\n });\n\n this.dispatchEvent(inputEvent);\n\n return newVal;\n },\n });\n }\n\n #createWildcardRegex(inputValue: string | null | undefined): RegExp {\n const lowerCaseInput = (inputValue ?? '').toLowerCase();\n let regexPattern = '^';\n\n for (const char of lowerCaseInput) {\n regexPattern += '.*' + this.#escapeRegexChar(char);\n }\n\n regexPattern += '.*$';\n\n return new RegExp(regexPattern, 'i');\n }\n\n #escapeRegexChar(char: string): string {\n return char.replace(/[-\\/\\\\^$+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n ngOnDestroy() {\n if (this.openAbortController) {\n this.openAbortController.abort();\n this.openAbortController = null;\n }\n\n if (typeof MutationObserver !== 'undefined') {\n (this.#inputObserver as MutationObserver).disconnect();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}