@ship-ui/core 0.22.14 → 0.22.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -0
- package/assets/mcp/components.json +578 -1
- package/bin/src/scanner.zig +9 -18
- package/fesm2022/ship-ui-core-sh-form-field-experimental.mjs +17 -2
- package/fesm2022/ship-ui-core-sh-form-field-experimental.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-a11y-keybindings.mjs +433 -0
- package/fesm2022/ship-ui-core-ship-a11y-keybindings.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-accordion.mjs +1 -0
- package/fesm2022/ship-ui-core-ship-accordion.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-alert.mjs +3 -2
- package/fesm2022/ship-ui-core-ship-alert.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-blueprint.mjs +14 -9
- package/fesm2022/ship-ui-core-ship-blueprint.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-checkbox.mjs +16 -14
- package/fesm2022/ship-ui-core-ship-checkbox.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-color-picker.mjs +3 -1
- package/fesm2022/ship-ui-core-ship-color-picker.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-datepicker.mjs +51 -29
- package/fesm2022/ship-ui-core-ship-datepicker.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-dialog.mjs +10 -5
- package/fesm2022/ship-ui-core-ship-dialog.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-divider.mjs +4 -2
- package/fesm2022/ship-ui-core-ship-divider.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-editor.mjs +2673 -0
- package/fesm2022/ship-ui-core-ship-editor.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-icon.mjs +2 -2
- package/fesm2022/ship-ui-core-ship-icon.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-list.mjs +4 -2
- package/fesm2022/ship-ui-core-ship-list.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-menu.mjs +8 -5
- package/fesm2022/ship-ui-core-ship-menu.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-popover.mjs +10 -5
- package/fesm2022/ship-ui-core-ship-popover.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-progress-bar.mjs +5 -1
- package/fesm2022/ship-ui-core-ship-progress-bar.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-radio.mjs +16 -14
- package/fesm2022/ship-ui-core-ship-radio.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-select.mjs +9 -9
- package/fesm2022/ship-ui-core-ship-select.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-sidenav.mjs +2 -2
- package/fesm2022/ship-ui-core-ship-sidenav.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-spinner.mjs +3 -1
- package/fesm2022/ship-ui-core-ship-spinner.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-spotlight.mjs +77 -24
- package/fesm2022/ship-ui-core-ship-spotlight.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-table.mjs +94 -119
- package/fesm2022/ship-ui-core-ship-table.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-theme-toggle.mjs +2 -2
- package/fesm2022/ship-ui-core-ship-theme-toggle.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-toggle-card.mjs +24 -3
- package/fesm2022/ship-ui-core-ship-toggle-card.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-toggle.mjs +16 -14
- package/fesm2022/ship-ui-core-ship-toggle.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-tree.mjs +2 -2
- package/fesm2022/ship-ui-core-ship-tree.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-virtual-scroll.mjs +2 -2
- package/fesm2022/ship-ui-core-ship-virtual-scroll.mjs.map +1 -1
- package/fesm2022/ship-ui-core.mjs +36 -23
- package/fesm2022/ship-ui-core.mjs.map +1 -1
- package/package.json +33 -2
- package/types/ship-ui-core-sh-form-field-experimental.d.ts +2 -0
- package/types/ship-ui-core-ship-a11y-keybindings.d.ts +102 -0
- package/types/ship-ui-core-ship-blueprint.d.ts +1 -1
- package/types/ship-ui-core-ship-checkbox.d.ts +2 -1
- package/types/ship-ui-core-ship-editor.d.ts +168 -0
- package/types/ship-ui-core-ship-radio.d.ts +2 -1
- package/types/ship-ui-core-ship-spotlight.d.ts +1 -1
- package/types/ship-ui-core-ship-table.d.ts +1 -0
- package/types/ship-ui-core-ship-toggle-card.d.ts +1 -0
- package/types/ship-ui-core-ship-toggle.d.ts +2 -1
- package/types/ship-ui-core.d.ts +3 -0
- package/bin/ship-fg-scanner +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship-ui-core-ship-radio.mjs","sources":["../../../projects/ship-ui/ship-radio/ship-radio.ts","../../../projects/ship-ui/ship-radio/ship-ui-core-ship-radio.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, input, model, viewChild, ViewEncapsulation } from '@angular/core';\nimport { classMutationSignal } from '@ship-ui/core';\nimport { contentProjectionSignal } from '@ship-ui/core';\nimport { shipComponentClasses } from '@ship-ui/core';\nimport { ShipColor, ShipSheetVariant } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-radio',\n styleUrl: './ship-radio.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: `\n <div class=\"radio sh-sheet\" [class]=\"currentClassList()\"></div>\n\n <ng-content />\n\n @if (projectedInputs().length === 0 && !noInternalInput()) {\n <input\n #internalInput\n type=\"radio\"\n class=\"internal-input\"\n [attr.disabled]=\"disabled() ? '' : null\"\n [checked]=\"checked()\"\n (change)=\"onInternalInputChange($event)\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.role]': 'noInternalInput() ? \"radio\" : null',\n '[attr.aria-checked]': 'noInternalInput() ? checked() : null',\n '[attr.tabindex]': 'noInternalInput() ? (disabled() ? \"-1\" : \"0\") : null',\n },\n})\nexport class ShipRadio {\n private readonly _elementRef = inject(ElementRef);\n\n internalInput = viewChild<ElementRef<HTMLInputElement>>('internalInput');\n projectedInputs = contentProjectionSignal<HTMLInputElement>('input:not(.internal-input)', {\n childList: true,\n attributes: true,\n });\n\n checked = model<boolean>(false);\n currentClassList = classMutationSignal();\n color = input<ShipColor | null>(null);\n variant = input<ShipSheetVariant | null>(null);\n readonly = input<boolean>(false);\n disabled = input<boolean>(false);\n noInternalInput = input<boolean>(false);\n\n protected onInternalInputChange(event: Event) {\n if (this.disabled()) return;\n\n const input = event.target as HTMLInputElement;\n this.checked.set(input.checked);\n }\n\n hostClasses = shipComponentClasses('radio', {\n color: this.color,\n variant: this.variant,\n readonly: this.readonly,\n });\n\n @HostListener('keydown
|
|
1
|
+
{"version":3,"file":"ship-ui-core-ship-radio.mjs","sources":["../../../projects/ship-ui/ship-radio/ship-radio.ts","../../../projects/ship-ui/ship-radio/ship-ui-core-ship-radio.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, input, model, viewChild, ViewEncapsulation } from '@angular/core';\nimport { classMutationSignal } from '@ship-ui/core';\nimport { ShipA11yKeybindingsService } from '@ship-ui/core/ship-a11y-keybindings';\nimport { contentProjectionSignal } from '@ship-ui/core';\nimport { shipComponentClasses } from '@ship-ui/core';\nimport { ShipColor, ShipSheetVariant } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-radio',\n styleUrl: './ship-radio.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: `\n <div class=\"radio sh-sheet\" [class]=\"currentClassList()\"></div>\n\n <ng-content />\n\n @if (projectedInputs().length === 0 && !noInternalInput()) {\n <input\n #internalInput\n type=\"radio\"\n class=\"internal-input\"\n [attr.disabled]=\"disabled() ? '' : null\"\n [checked]=\"checked()\"\n (change)=\"onInternalInputChange($event)\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.role]': 'noInternalInput() ? \"radio\" : null',\n '[attr.aria-checked]': 'noInternalInput() ? checked() : null',\n '[attr.tabindex]': 'noInternalInput() ? (disabled() ? \"-1\" : \"0\") : null',\n },\n})\nexport class ShipRadio {\n private readonly _elementRef = inject(ElementRef);\n #keybindings = inject(ShipA11yKeybindingsService);\n\n internalInput = viewChild<ElementRef<HTMLInputElement>>('internalInput');\n projectedInputs = contentProjectionSignal<HTMLInputElement>('input:not(.internal-input)', {\n childList: true,\n attributes: true,\n });\n\n checked = model<boolean>(false);\n currentClassList = classMutationSignal();\n color = input<ShipColor | null>(null);\n variant = input<ShipSheetVariant | null>(null);\n readonly = input<boolean>(false);\n disabled = input<boolean>(false);\n noInternalInput = input<boolean>(false);\n\n protected onInternalInputChange(event: Event) {\n if (this.disabled()) return;\n\n const input = event.target as HTMLInputElement;\n this.checked.set(input.checked);\n }\n\n hostClasses = shipComponentClasses('radio', {\n color: this.color,\n variant: this.variant,\n readonly: this.readonly,\n });\n\n @HostListener('keydown', ['$event'])\n protected onKeyDown(event: KeyboardEvent) {\n if (this.#keybindings.matches(event, 'radio.select')) {\n const inputEl = this.internalInput()?.nativeElement;\n if (inputEl && getComputedStyle(inputEl).display !== 'none') {\n inputEl.click();\n } else {\n this._elementRef.nativeElement.click();\n }\n event.preventDefault();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { NgTemplateOutlet } from '@angular/common';
|
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, ElementRef, input, model, output, computed, signal, contentChild, TemplateRef, viewChild, untracked, effect, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
|
|
4
4
|
import { ShipCheckbox } from '@ship-ui/core/ship-checkbox';
|
|
5
|
+
import { ShipA11yKeybindingsService } from '@ship-ui/core/ship-a11y-keybindings';
|
|
5
6
|
import { ShipChip } from '@ship-ui/core/ship-chip';
|
|
6
7
|
import { ShipDivider } from '@ship-ui/core/ship-divider';
|
|
7
8
|
import { ShipFormField } from '@ship-ui/core/ship-form-field';
|
|
@@ -13,6 +14,7 @@ import { shipComponentClasses, generateUniqueId } from '@ship-ui/core';
|
|
|
13
14
|
class ShipSelect {
|
|
14
15
|
constructor() {
|
|
15
16
|
this.#selfRef = inject((ElementRef));
|
|
17
|
+
this.#keybindings = inject(ShipA11yKeybindingsService);
|
|
16
18
|
this.value = input(/* @ts-ignore */
|
|
17
19
|
...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
|
|
18
20
|
this.label = input(/* @ts-ignore */
|
|
@@ -242,26 +244,23 @@ class ShipSelect {
|
|
|
242
244
|
return;
|
|
243
245
|
input.setAttribute('aria-expanded', this.isOpen().toString());
|
|
244
246
|
input.addEventListener('keydown', (e) => {
|
|
245
|
-
if (e
|
|
247
|
+
if (this.#keybindings.matches(e, 'select.close') || e.key === 'Tab') {
|
|
246
248
|
e.preventDefault();
|
|
247
249
|
this.close();
|
|
248
250
|
}
|
|
249
|
-
if (e
|
|
250
|
-
e.
|
|
251
|
-
|
|
252
|
-
}
|
|
253
|
-
if (e.key === ' ' || e.key === 'Spacebar') {
|
|
254
|
-
if (!this.hasSearch()) {
|
|
251
|
+
if (this.#keybindings.matches(e, 'select.select')) {
|
|
252
|
+
const isSpace = e.key === ' ' || e.key === 'Spacebar';
|
|
253
|
+
if (!isSpace || !this.hasSearch()) {
|
|
255
254
|
e.preventDefault();
|
|
256
255
|
this.toggleOptionByIndex(this.focusedOptionIndex(), undefined, true);
|
|
257
256
|
}
|
|
258
257
|
}
|
|
259
|
-
if (e
|
|
258
|
+
if (this.#keybindings.matches(e, 'select.next')) {
|
|
260
259
|
e.preventDefault();
|
|
261
260
|
const newIndex = this.focusedOptionIndex() + 1;
|
|
262
261
|
this.focusedOptionIndex.set(newIndex > this.filteredOptions().length - 1 ? baseIndex : newIndex);
|
|
263
262
|
}
|
|
264
|
-
if (e
|
|
263
|
+
else if (this.#keybindings.matches(e, 'select.prev')) {
|
|
265
264
|
e.preventDefault();
|
|
266
265
|
const newIndex = this.focusedOptionIndex() - 1;
|
|
267
266
|
this.focusedOptionIndex.set(newIndex < baseIndex ? this.filteredOptions().length - 1 : newIndex);
|
|
@@ -362,6 +361,7 @@ class ShipSelect {
|
|
|
362
361
|
...(ngDevMode ? [{ debugName: "#selectedOptionsEffect" }] : /* istanbul ignore next */ []));
|
|
363
362
|
}
|
|
364
363
|
#selfRef;
|
|
364
|
+
#keybindings;
|
|
365
365
|
#previousSelectedOptions;
|
|
366
366
|
#inputObserver;
|
|
367
367
|
#calculateMatchScore(option, input) {
|
|
@@ -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();\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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"}
|
|
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 { ShipA11yKeybindingsService } from '@ship-ui/core/ship-a11y-keybindings';\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 #keybindings = inject(ShipA11yKeybindingsService);\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 (this.#keybindings.matches(e, 'select.close') || e.key === 'Tab') {\n e.preventDefault();\n\n this.close();\n }\n\n if (this.#keybindings.matches(e, 'select.select')) {\n const isSpace = e.key === ' ' || e.key === 'Spacebar';\n if (!isSpace || !this.hasSearch()) {\n e.preventDefault();\n this.toggleOptionByIndex(this.focusedOptionIndex(), undefined, true);\n }\n }\n\n if (this.#keybindings.matches(e, 'select.next')) {\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 } else if (this.#keybindings.matches(e, 'select.prev')) {\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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"}
|
|
@@ -168,7 +168,7 @@ class ShipSidenav {
|
|
|
168
168
|
<div class="dropping-surface" (drop)="drop($event)" (dragenter)="dragEnter()" (dragleave)="dragLeave()"></div>
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
<div class="sidenav">
|
|
171
|
+
<div class="sidenav" role="navigation">
|
|
172
172
|
<ng-content select="[sidenav]"></ng-content>
|
|
173
173
|
</div>
|
|
174
174
|
|
|
@@ -207,7 +207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
207
207
|
<div class="dropping-surface" (drop)="drop($event)" (dragenter)="dragEnter()" (dragleave)="dragLeave()"></div>
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
<div class="sidenav">
|
|
210
|
+
<div class="sidenav" role="navigation">
|
|
211
211
|
<ng-content select="[sidenav]"></ng-content>
|
|
212
212
|
</div>
|
|
213
213
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship-ui-core-ship-sidenav.mjs","sources":["../../../projects/ship-ui/ship-sidenav/ship-sidenav.ts","../../../projects/ship-ui/ship-sidenav/ship-ui-core-ship-sidenav.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, DestroyRef, DOCUMENT, effect, ElementRef, inject, input, model, runInInjectionContext, signal, viewChild, WritableSignal, ViewEncapsulation } from '@angular/core';\n\nexport type ShipSidenavType = 'overlay' | 'simple' | '';\nexport function watchHostClass(className: string): WritableSignal<boolean> {\n const elementRef = inject(ElementRef);\n const destroyRef = inject(DestroyRef);\n\n const hasClass = signal(false);\n const observer =\n typeof MutationObserver !== 'undefined'\n ? new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n hasClass.set(elementRef.nativeElement.classList.contains(className));\n }\n });\n })\n : undefined;\n\n runInInjectionContext(elementRef.nativeElement, () => {\n if (observer) {\n observer.observe(elementRef.nativeElement, { attributes: true });\n }\n\n hasClass.set(elementRef.nativeElement.classList.contains(className));\n });\n\n destroyRef.onDestroy(() => {\n if (observer) {\n observer.disconnect();\n }\n });\n\n return hasClass;\n}\n\n@Component({\n selector: 'sh-sidenav',\n styleUrl: './ship-sidenav.scss',\n encapsulation: ViewEncapsulation.None,\n template: `\n @if (isOverlay() && !disableDrag()) {\n <div #dragImageElement class=\"drag-image\"></div>\n }\n\n @if (isOverlay() && isDragging()) {\n <div class=\"dropping-surface\" (drop)=\"drop($event)\" (dragenter)=\"dragEnter()\" (dragleave)=\"dragLeave()\"></div>\n }\n\n <div class=\"sidenav\">\n <ng-content select=\"[sidenav]\"></ng-content>\n </div>\n\n <div class=\"main-wrap\" [style.transform]=\"!disableDrag() && draggingStyle()\">\n @if (isOverlay() && !disableDrag()) {\n <div\n class=\"dragable\"\n draggable=\"true\"\n (dragstart)=\"dragStart($event)\"\n (dragend)=\"dragEnd($event)\"\n (drag)=\"drag($event)\"\n (touchstart)=\"touchStart($event)\"\n (touchmove)=\"touchMove($event)\"\n (touchend)=\"touchEnd($event)\"\n (touchcancel)=\"touchCancel($event)\"></div>\n }\n\n <div class=\"closed-topbar\">\n <ng-content select=\"[sidenav-closed-topbar]\"></ng-content>\n </div>\n\n <main>\n <ng-content />\n </main>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.open]': 'isOpen()',\n '[class.closed]': '!isOpen()',\n '[class.is-dragging]': 'isDragging()',\n },\n})\nexport class ShipSidenav {\n #document = inject(DOCUMENT);\n #selfRef = inject(ElementRef);\n openWidth = 280;\n openWidthTreshold = this.openWidth * 0.5;\n\n disableDrag = input<boolean>(false);\n isOpen = model<boolean>(false);\n isOverlay = watchHostClass('overlay');\n\n #closestParent = this.#selfRef.nativeElement.parentElement;\n #closestParentRect = this.#closestParent.getBoundingClientRect && this.#closestParent.getBoundingClientRect();\n\n dragImageElement = viewChild.required<ElementRef<HTMLDivElement>>('dragImageElement');\n dragIsEnding = signal<boolean>(false);\n dragIsOnScreen = signal<boolean>(true);\n isDragging = signal<boolean>(false);\n dragPositionX = signal<number>(0);\n\n dragActualPositionX = computed(() => {\n const dragPosition = this.dragPositionX();\n const openWidth = 280;\n const noEffectWidth = 100;\n const tensionFactor = 0.008;\n\n const center = openWidth / 2;\n const deadZoneStart = center - noEffectWidth / 2;\n const deadZoneEnd = center + noEffectWidth / 2;\n\n if (dragPosition > deadZoneEnd) {\n const distancePastDeadZone = dragPosition - deadZoneEnd;\n const maxTensionDistance = openWidth - deadZoneEnd;\n\n const dampenedDistance = maxTensionDistance * (1 - Math.exp(-tensionFactor * distancePastDeadZone));\n\n return deadZoneEnd + dampenedDistance;\n } else if (dragPosition < deadZoneStart) {\n const distancePastDeadZone = deadZoneStart - dragPosition;\n const maxTensionDistance = deadZoneStart;\n\n const dampenedDistance = maxTensionDistance * (1 - Math.exp(-tensionFactor * distancePastDeadZone));\n\n return deadZoneStart - dampenedDistance;\n }\n\n return dragPosition;\n });\n\n draggingStyle = computed(() => {\n if (!this.isOverlay() || this.disableDrag()) return null;\n\n if (this.isDragging()) {\n return `translateX(${this.dragActualPositionX()}px)`;\n }\n\n return this.isOpen() ? `translateX(${this.openWidth}px)` : `translateX(0px)`;\n });\n\n draggingEffect = effect(() => {\n if (this.disableDrag()) return;\n\n if (this.isDragging()) {\n this.#document.body.classList.add('dragging');\n } else {\n this.#document.body.classList.remove('dragging');\n }\n });\n\n drop(e: DragEvent) {\n e.stopPropagation();\n this.#drop(e.clientX - this.#closestParentRect.left);\n }\n\n #drop(clientX: number) {\n this.isDragging.set(false);\n\n if (clientX >= this.openWidthTreshold) {\n this.isOpen.set(true);\n } else {\n this.isOpen.set(false);\n }\n }\n\n dragEnd(e: DragEvent) {\n if (e.clientX - this.#closestParentRect.left < 0) {\n this.#drop(0);\n }\n\n if (e.clientX - this.#closestParentRect.left > this.openWidthTreshold) {\n this.#drop(this.openWidthTreshold);\n }\n }\n\n dragEnter() {\n this.dragIsOnScreen.set(true);\n }\n\n dragLeave() {\n this.dragIsOnScreen.set(false);\n }\n\n dragStart(e: DragEvent) {\n e.stopPropagation();\n\n this.#closestParentRect = this.#closestParent.getBoundingClientRect();\n this.isDragging.set(true);\n }\n\n drag(e: DragEvent) {\n e.stopPropagation();\n\n if (!this.isDragging()) return;\n\n if (e.clientX !== 0 || e.clientY !== 0) {\n this.dragPositionX.set(e.clientX - this.#closestParentRect.left);\n }\n }\n\n touchStart(e: TouchEvent) {\n e.stopPropagation();\n\n this.isDragging.set(true);\n this.#closestParentRect = this.#closestParent.getBoundingClientRect();\n this.dragPositionX.set(0);\n }\n\n touchMove(e: TouchEvent) {\n e.stopPropagation();\n\n if (!this.isDragging()) return;\n\n this.dragPositionX.set(e.touches[0].clientX - this.#closestParentRect.left);\n }\n\n touchEnd(e: TouchEvent) {\n e.stopPropagation();\n\n this.#drop(e.changedTouches[0].clientX - this.#closestParentRect.left);\n }\n\n touchCancel(e: TouchEvent) {\n e.stopPropagation();\n\n this.isDragging.set(false);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAGM,SAAU,cAAc,CAAC,SAAiB,EAAA;AAC9C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK;iFAAC;AAC9B,IAAA,MAAM,QAAQ,GACZ,OAAO,gBAAgB,KAAK;AAC1B,UAAE,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAI;AACjC,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7B,gBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,EAAE;AACxE,oBAAA,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACtE;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;UACD,SAAS;AAEf,IAAA,qBAAqB,CAAC,UAAU,CAAC,aAAa,EAAE,MAAK;QACnD,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAClE;AAEA,QAAA,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtE,IAAA,CAAC,CAAC;AAEF,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;QACxB,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,UAAU,EAAE;QACvB;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,QAAQ;AACjB;MAiDa,WAAW,CAAA;AA/CxB,IAAA,WAAA,GAAA;AAgDE,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;QAC7B,IAAA,CAAA,SAAS,GAAG,GAAG;AACf,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG;QAExC,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK;wFAAC;QACnC,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK;mFAAC;AAC9B,QAAA,IAAA,CAAA,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;QAErC,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa;AAC1D,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,IAAI,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE;AAE7G,QAAA,IAAA,CAAA,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAA6B,kBAAkB,CAAC;QACrF,IAAA,CAAA,YAAY,GAAG,MAAM,CAAU,KAAK;yFAAC;QACrC,IAAA,CAAA,cAAc,GAAG,MAAM,CAAU,IAAI;2FAAC;QACtC,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK;uFAAC;QACnC,IAAA,CAAA,aAAa,GAAG,MAAM,CAAS,CAAC;0FAAC;AAEjC,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;YACzC,MAAM,SAAS,GAAG,GAAG;YACrB,MAAM,aAAa,GAAG,GAAG;YACzB,MAAM,aAAa,GAAG,KAAK;AAE3B,YAAA,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC;AAC5B,YAAA,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,GAAG,CAAC;AAChD,YAAA,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,CAAC;AAE9C,YAAA,IAAI,YAAY,GAAG,WAAW,EAAE;AAC9B,gBAAA,MAAM,oBAAoB,GAAG,YAAY,GAAG,WAAW;AACvD,gBAAA,MAAM,kBAAkB,GAAG,SAAS,GAAG,WAAW;AAElD,gBAAA,MAAM,gBAAgB,GAAG,kBAAkB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,oBAAoB,CAAC,CAAC;gBAEnG,OAAO,WAAW,GAAG,gBAAgB;YACvC;AAAO,iBAAA,IAAI,YAAY,GAAG,aAAa,EAAE;AACvC,gBAAA,MAAM,oBAAoB,GAAG,aAAa,GAAG,YAAY;gBACzD,MAAM,kBAAkB,GAAG,aAAa;AAExC,gBAAA,MAAM,gBAAgB,GAAG,kBAAkB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,oBAAoB,CAAC,CAAC;gBAEnG,OAAO,aAAa,GAAG,gBAAgB;YACzC;AAEA,YAAA,OAAO,YAAY;QACrB,CAAC;gGAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,IAAI;AAExD,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,OAAO,cAAc,IAAI,CAAC,mBAAmB,EAAE,KAAK;YACtD;AAEA,YAAA,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAA,GAAA,CAAK,GAAG,iBAAiB;QAC9E,CAAC;0FAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,MAAK;YAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;gBAAE;AAExB,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;YAC/C;iBAAO;gBACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;YAClD;QACF,CAAC;2FAAC;AA+EH,IAAA;AAhJC,IAAA,SAAS;AACT,IAAA,QAAQ;AAQR,IAAA,cAAc;AACd,IAAA,kBAAkB;AAyDlB,IAAA,IAAI,CAAC,CAAY,EAAA;QACf,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACtD;AAEA,IAAA,KAAK,CAAC,OAAe,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAI,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB;IACF;AAEA,IAAA,OAAO,CAAC,CAAY,EAAA;AAClB,QAAA,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACf;AAEA,QAAA,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACrE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACpC;IACF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;IAC/B;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;AAEA,IAAA,SAAS,CAAC,CAAY,EAAA;QACpB,CAAC,CAAC,eAAe,EAAE;QAEnB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE;AACrE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,IAAI,CAAC,CAAY,EAAA;QACf,CAAC,CAAC,eAAe,EAAE;AAEnB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AAExB,QAAA,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAClE;IACF;AAEA,IAAA,UAAU,CAAC,CAAa,EAAA;QACtB,CAAC,CAAC,eAAe,EAAE;AAEnB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE;AACrE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B;AAEA,IAAA,SAAS,CAAC,CAAa,EAAA;QACrB,CAAC,CAAC,eAAe,EAAE;AAEnB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;QAExB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IAC7E;AAEA,IAAA,QAAQ,CAAC,CAAa,EAAA;QACpB,CAAC,CAAC,eAAe,EAAE;AAEnB,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACxE;AAEA,IAAA,WAAW,CAAC,CAAa,EAAA;QACvB,CAAC,CAAC,eAAe,EAAE;AAEnB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;8GAhJW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3CZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kpFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQU,WAAW,EAAA,UAAA,EAAA,CAAA;kBA/CvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,aAAA,EAEP,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCT,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,cAAc,EAAE,UAAU;AAC1B,wBAAA,gBAAgB,EAAE,WAAW;AAC7B,wBAAA,qBAAqB,EAAE,cAAc;AACtC,qBAAA,EAAA,MAAA,EAAA,CAAA,kpFAAA,CAAA,EAAA;6TAeiE,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AChGtF;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ship-ui-core-ship-sidenav.mjs","sources":["../../../projects/ship-ui/ship-sidenav/ship-sidenav.ts","../../../projects/ship-ui/ship-sidenav/ship-ui-core-ship-sidenav.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, DestroyRef, DOCUMENT, effect, ElementRef, inject, input, model, runInInjectionContext, signal, viewChild, WritableSignal, ViewEncapsulation } from '@angular/core';\n\nexport type ShipSidenavType = 'overlay' | 'simple' | '';\nexport function watchHostClass(className: string): WritableSignal<boolean> {\n const elementRef = inject(ElementRef);\n const destroyRef = inject(DestroyRef);\n\n const hasClass = signal(false);\n const observer =\n typeof MutationObserver !== 'undefined'\n ? new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n hasClass.set(elementRef.nativeElement.classList.contains(className));\n }\n });\n })\n : undefined;\n\n runInInjectionContext(elementRef.nativeElement, () => {\n if (observer) {\n observer.observe(elementRef.nativeElement, { attributes: true });\n }\n\n hasClass.set(elementRef.nativeElement.classList.contains(className));\n });\n\n destroyRef.onDestroy(() => {\n if (observer) {\n observer.disconnect();\n }\n });\n\n return hasClass;\n}\n\n@Component({\n selector: 'sh-sidenav',\n styleUrl: './ship-sidenav.scss',\n encapsulation: ViewEncapsulation.None,\n template: `\n @if (isOverlay() && !disableDrag()) {\n <div #dragImageElement class=\"drag-image\"></div>\n }\n\n @if (isOverlay() && isDragging()) {\n <div class=\"dropping-surface\" (drop)=\"drop($event)\" (dragenter)=\"dragEnter()\" (dragleave)=\"dragLeave()\"></div>\n }\n\n <div class=\"sidenav\" role=\"navigation\">\n <ng-content select=\"[sidenav]\"></ng-content>\n </div>\n\n <div class=\"main-wrap\" [style.transform]=\"!disableDrag() && draggingStyle()\">\n @if (isOverlay() && !disableDrag()) {\n <div\n class=\"dragable\"\n draggable=\"true\"\n (dragstart)=\"dragStart($event)\"\n (dragend)=\"dragEnd($event)\"\n (drag)=\"drag($event)\"\n (touchstart)=\"touchStart($event)\"\n (touchmove)=\"touchMove($event)\"\n (touchend)=\"touchEnd($event)\"\n (touchcancel)=\"touchCancel($event)\"></div>\n }\n\n <div class=\"closed-topbar\">\n <ng-content select=\"[sidenav-closed-topbar]\"></ng-content>\n </div>\n\n <main>\n <ng-content />\n </main>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.open]': 'isOpen()',\n '[class.closed]': '!isOpen()',\n '[class.is-dragging]': 'isDragging()',\n },\n})\nexport class ShipSidenav {\n #document = inject(DOCUMENT);\n #selfRef = inject(ElementRef);\n openWidth = 280;\n openWidthTreshold = this.openWidth * 0.5;\n\n disableDrag = input<boolean>(false);\n isOpen = model<boolean>(false);\n isOverlay = watchHostClass('overlay');\n\n #closestParent = this.#selfRef.nativeElement.parentElement;\n #closestParentRect = this.#closestParent.getBoundingClientRect && this.#closestParent.getBoundingClientRect();\n\n dragImageElement = viewChild.required<ElementRef<HTMLDivElement>>('dragImageElement');\n dragIsEnding = signal<boolean>(false);\n dragIsOnScreen = signal<boolean>(true);\n isDragging = signal<boolean>(false);\n dragPositionX = signal<number>(0);\n\n dragActualPositionX = computed(() => {\n const dragPosition = this.dragPositionX();\n const openWidth = 280;\n const noEffectWidth = 100;\n const tensionFactor = 0.008;\n\n const center = openWidth / 2;\n const deadZoneStart = center - noEffectWidth / 2;\n const deadZoneEnd = center + noEffectWidth / 2;\n\n if (dragPosition > deadZoneEnd) {\n const distancePastDeadZone = dragPosition - deadZoneEnd;\n const maxTensionDistance = openWidth - deadZoneEnd;\n\n const dampenedDistance = maxTensionDistance * (1 - Math.exp(-tensionFactor * distancePastDeadZone));\n\n return deadZoneEnd + dampenedDistance;\n } else if (dragPosition < deadZoneStart) {\n const distancePastDeadZone = deadZoneStart - dragPosition;\n const maxTensionDistance = deadZoneStart;\n\n const dampenedDistance = maxTensionDistance * (1 - Math.exp(-tensionFactor * distancePastDeadZone));\n\n return deadZoneStart - dampenedDistance;\n }\n\n return dragPosition;\n });\n\n draggingStyle = computed(() => {\n if (!this.isOverlay() || this.disableDrag()) return null;\n\n if (this.isDragging()) {\n return `translateX(${this.dragActualPositionX()}px)`;\n }\n\n return this.isOpen() ? `translateX(${this.openWidth}px)` : `translateX(0px)`;\n });\n\n draggingEffect = effect(() => {\n if (this.disableDrag()) return;\n\n if (this.isDragging()) {\n this.#document.body.classList.add('dragging');\n } else {\n this.#document.body.classList.remove('dragging');\n }\n });\n\n drop(e: DragEvent) {\n e.stopPropagation();\n this.#drop(e.clientX - this.#closestParentRect.left);\n }\n\n #drop(clientX: number) {\n this.isDragging.set(false);\n\n if (clientX >= this.openWidthTreshold) {\n this.isOpen.set(true);\n } else {\n this.isOpen.set(false);\n }\n }\n\n dragEnd(e: DragEvent) {\n if (e.clientX - this.#closestParentRect.left < 0) {\n this.#drop(0);\n }\n\n if (e.clientX - this.#closestParentRect.left > this.openWidthTreshold) {\n this.#drop(this.openWidthTreshold);\n }\n }\n\n dragEnter() {\n this.dragIsOnScreen.set(true);\n }\n\n dragLeave() {\n this.dragIsOnScreen.set(false);\n }\n\n dragStart(e: DragEvent) {\n e.stopPropagation();\n\n this.#closestParentRect = this.#closestParent.getBoundingClientRect();\n this.isDragging.set(true);\n }\n\n drag(e: DragEvent) {\n e.stopPropagation();\n\n if (!this.isDragging()) return;\n\n if (e.clientX !== 0 || e.clientY !== 0) {\n this.dragPositionX.set(e.clientX - this.#closestParentRect.left);\n }\n }\n\n touchStart(e: TouchEvent) {\n e.stopPropagation();\n\n this.isDragging.set(true);\n this.#closestParentRect = this.#closestParent.getBoundingClientRect();\n this.dragPositionX.set(0);\n }\n\n touchMove(e: TouchEvent) {\n e.stopPropagation();\n\n if (!this.isDragging()) return;\n\n this.dragPositionX.set(e.touches[0].clientX - this.#closestParentRect.left);\n }\n\n touchEnd(e: TouchEvent) {\n e.stopPropagation();\n\n this.#drop(e.changedTouches[0].clientX - this.#closestParentRect.left);\n }\n\n touchCancel(e: TouchEvent) {\n e.stopPropagation();\n\n this.isDragging.set(false);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,14 @@ class ShipSpinner {
|
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.0", type: ShipSpinner, isStandalone: true, selector: "sh-spinner", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: ``, isInline: true, styles: ["sh-spinner{--spinner-c: var(--base-8);--spinner-size: 2.5rem;--spinner-thickness: .3125rem;width:var(--spinner-size);height:var(--spinner-size);display:grid;place-content:center;color:var(--spinner-c);position:relative}sh-spinner:before{content:\"\";width:var(--spinner-size);height:var(--spinner-size);border:var(--spinner-thickness) solid currentColor;border-bottom-color:transparent;border-radius:50%;display:flex;box-sizing:border-box;animation:rotation 1s linear infinite;margin:auto;inset:0;position:absolute}sh-spinner.primary{--spinner-c: var(--primary-8)}sh-spinner.accent{--spinner-c: var(--accent-8)}sh-spinner.warn{--spinner-c: var(--warn-8)}sh-spinner.error{--spinner-c: var(--error-8)}sh-spinner.success{--spinner-c: var(--success-8)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.0", type: ShipSpinner, isStandalone: true, selector: "sh-spinner", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "status", "aria-busy": "true" }, properties: { "class": "hostClasses()" } }, ngImport: i0, template: ``, isInline: true, styles: ["sh-spinner{--spinner-c: var(--base-8);--spinner-size: 2.5rem;--spinner-thickness: .3125rem;width:var(--spinner-size);height:var(--spinner-size);display:grid;place-content:center;color:var(--spinner-c);position:relative}sh-spinner:before{content:\"\";width:var(--spinner-size);height:var(--spinner-size);border:var(--spinner-thickness) solid currentColor;border-bottom-color:transparent;border-radius:50%;display:flex;box-sizing:border-box;animation:rotation 1s linear infinite;margin:auto;inset:0;position:absolute}sh-spinner.primary{--spinner-c: var(--primary-8)}sh-spinner.accent{--spinner-c: var(--accent-8)}sh-spinner.warn{--spinner-c: var(--warn-8)}sh-spinner.error{--spinner-c: var(--error-8)}sh-spinner.success{--spinner-c: var(--success-8)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
15
15
|
}
|
|
16
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipSpinner, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
18
|
args: [{ selector: 'sh-spinner', encapsulation: ViewEncapsulation.None, imports: [], template: ``, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
19
19
|
'[class]': 'hostClasses()',
|
|
20
|
+
'role': 'status',
|
|
21
|
+
'aria-busy': 'true',
|
|
20
22
|
}, styles: ["sh-spinner{--spinner-c: var(--base-8);--spinner-size: 2.5rem;--spinner-thickness: .3125rem;width:var(--spinner-size);height:var(--spinner-size);display:grid;place-content:center;color:var(--spinner-c);position:relative}sh-spinner:before{content:\"\";width:var(--spinner-size);height:var(--spinner-size);border:var(--spinner-thickness) solid currentColor;border-bottom-color:transparent;border-radius:50%;display:flex;box-sizing:border-box;animation:rotation 1s linear infinite;margin:auto;inset:0;position:absolute}sh-spinner.primary{--spinner-c: var(--primary-8)}sh-spinner.accent{--spinner-c: var(--accent-8)}sh-spinner.warn{--spinner-c: var(--warn-8)}sh-spinner.error{--spinner-c: var(--error-8)}sh-spinner.success{--spinner-c: var(--success-8)}\n"] }]
|
|
21
23
|
}], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
22
24
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship-ui-core-ship-spinner.mjs","sources":["../../../projects/ship-ui/ship-spinner/ship-spinner.component.ts","../../../projects/ship-ui/ship-spinner/ship-ui-core-ship-spinner.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { shipComponentClasses } from '@ship-ui/core';\nimport { ShipColor } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-spinner',\n styleUrl: './ship-spinner.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ShipSpinner {\n color = input<ShipColor | null>(null);\n\n hostClasses = shipComponentClasses('spinner', {\n color: this.color,\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"ship-ui-core-ship-spinner.mjs","sources":["../../../projects/ship-ui/ship-spinner/ship-spinner.component.ts","../../../projects/ship-ui/ship-spinner/ship-ui-core-ship-spinner.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { shipComponentClasses } from '@ship-ui/core';\nimport { ShipColor } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-spinner',\n styleUrl: './ship-spinner.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n 'role': 'status',\n 'aria-busy': 'true',\n },\n})\nexport class ShipSpinner {\n color = input<ShipColor | null>(null);\n\n hostClasses = shipComponentClasses('spinner', {\n color: this.color,\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAiBa,WAAW,CAAA;AAbxB,IAAA,WAAA,GAAA;QAcE,IAAA,CAAA,KAAK,GAAG,KAAK,CAAmB,IAAI;kFAAC;AAErC,QAAA,IAAA,CAAA,WAAW,GAAG,oBAAoB,CAAC,SAAS,EAAE;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,SAAA,CAAC;AACH,IAAA;8GANY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,qTARZ,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gvBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQD,WAAW,EAAA,UAAA,EAAA,CAAA;kBAbvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,aAAA,EAEP,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,EAAE,EAAA,QAAA,EACD,CAAA,CAAE,EAAA,eAAA,EACK,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,WAAW,EAAE,MAAM;AACpB,qBAAA,EAAA,MAAA,EAAA,CAAA,gvBAAA,CAAA,EAAA;;;ACfH;;AAEG;;;;"}
|