@ship-ui/core 0.13.15 → 0.13.17

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/index.d.ts CHANGED
@@ -428,11 +428,13 @@ declare class ShipRangeSliderComponent {
428
428
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipRangeSliderComponent, "sh-range-slider", never, { "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["label", "input[type=range]"], true, never>;
429
429
  }
430
430
 
431
+ type ValidateFreeText = (value: string) => boolean;
431
432
  declare class ShipSelectComponent {
432
433
  #private;
433
434
  value: _angular_core.InputSignal<string | undefined>;
434
435
  label: _angular_core.InputSignal<string | undefined>;
435
436
  asFreeText: _angular_core.InputSignal<boolean>;
437
+ validateFreeText: _angular_core.InputSignal<ValidateFreeText | undefined>;
436
438
  placeholder: _angular_core.InputSignal<string | undefined>;
437
439
  readonly: _angular_core.ModelSignal<boolean>;
438
440
  disabled: _angular_core.ModelSignal<boolean>;
@@ -444,11 +446,13 @@ declare class ShipSelectComponent {
444
446
  optionTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
445
447
  selectedOptionTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
446
448
  placeholderTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
449
+ freeTextOptionTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
447
450
  isOpen: _angular_core.ModelSignal<boolean>;
448
451
  isLoading: _angular_core.ModelSignal<boolean>;
449
452
  options: _angular_core.ModelSignal<unknown[]>;
450
453
  selectedOptions: _angular_core.ModelSignal<unknown[]>;
451
454
  cleared: _angular_core.OutputEmitterRef<void>;
455
+ computedFreeTextOption: _angular_core.Signal<string | Record<string, any>>;
452
456
  inlineTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
453
457
  optionsWrapRef: _angular_core.Signal<ElementRef<HTMLDivElement>>;
454
458
  inputRefInput: _angular_core.WritableSignal<ElementRef<HTMLInputElement> | null>;
@@ -476,6 +480,7 @@ declare class ShipSelectComponent {
476
480
  setInitInput(): void;
477
481
  setSelectedOptionsFromValue(value: string): void;
478
482
  setInputValueFromOptions(options: unknown[]): void;
483
+ getValue(option: unknown): unknown;
479
484
  getLabel(option: unknown): unknown;
480
485
  getLabelAsSlug(option: unknown): string;
481
486
  toggleOptionByIndex(optionIndex: number, event?: MouseEvent): void;
@@ -487,7 +492,7 @@ declare class ShipSelectComponent {
487
492
  updateInputElValue(): void;
488
493
  ngOnDestroy(): void;
489
494
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipSelectComponent, never>;
490
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipSelectComponent, "sh-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "asFreeText": { "alias": "asFreeText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "lazySearch": { "alias": "lazySearch"; "required": false; "isSignal": true; }; "inlineSearch": { "alias": "inlineSearch"; "required": false; "isSignal": true; }; "asText": { "alias": "asText"; "required": false; "isSignal": true; }; "isClearable": { "alias": "isClearable"; "required": false; "isSignal": true; }; "selectMultiple": { "alias": "selectMultiple"; "required": false; "isSignal": true; }; "optionTemplate": { "alias": "optionTemplate"; "required": false; "isSignal": true; }; "selectedOptionTemplate": { "alias": "selectedOptionTemplate"; "required": false; "isSignal": true; }; "placeholderTemplate": { "alias": "placeholderTemplate"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "selectedOptions": { "alias": "selectedOptions"; "required": false; "isSignal": true; }; }, { "readonly": "readonlyChange"; "disabled": "disabledChange"; "isOpen": "isOpenChange"; "isLoading": "isLoadingChange"; "options": "optionsChange"; "selectedOptions": "selectedOptionsChange"; "cleared": "cleared"; }, ["inlineTemplate"], ["label", "[prefix]", "[boxPrefix]", "input", "textarea"], true, never>;
495
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipSelectComponent, "sh-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "asFreeText": { "alias": "asFreeText"; "required": false; "isSignal": true; }; "validateFreeText": { "alias": "validateFreeText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "lazySearch": { "alias": "lazySearch"; "required": false; "isSignal": true; }; "inlineSearch": { "alias": "inlineSearch"; "required": false; "isSignal": true; }; "asText": { "alias": "asText"; "required": false; "isSignal": true; }; "isClearable": { "alias": "isClearable"; "required": false; "isSignal": true; }; "selectMultiple": { "alias": "selectMultiple"; "required": false; "isSignal": true; }; "optionTemplate": { "alias": "optionTemplate"; "required": false; "isSignal": true; }; "selectedOptionTemplate": { "alias": "selectedOptionTemplate"; "required": false; "isSignal": true; }; "placeholderTemplate": { "alias": "placeholderTemplate"; "required": false; "isSignal": true; }; "freeTextOptionTemplate": { "alias": "freeTextOptionTemplate"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "selectedOptions": { "alias": "selectedOptions"; "required": false; "isSignal": true; }; }, { "readonly": "readonlyChange"; "disabled": "disabledChange"; "isOpen": "isOpenChange"; "isLoading": "isLoadingChange"; "options": "optionsChange"; "selectedOptions": "selectedOptionsChange"; "cleared": "cleared"; }, ["inlineTemplate"], ["label", "[prefix]", "[boxPrefix]", "input", "textarea"], true, never>;
491
496
  }
492
497
 
493
498
  type ShipSidenavType = 'overlay' | 'simple' | '';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ship-ui/core",
3
3
  "license": "MIT",
4
- "version": "0.13.15",
4
+ "version": "0.13.17",
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=19",
7
7
  "@angular/core": ">=19"
@@ -20,6 +20,10 @@ $shipDialog: true !default;
20
20
  margin: auto;
21
21
  z-index: 0;
22
22
 
23
+ &:focus-visible {
24
+ outline: none;
25
+ }
26
+
23
27
  &.type-b {
24
28
  --dialog-s: #{p2r(26)};
25
29
  --dialog-inner-s: #{p2r(20)};
@@ -82,12 +86,34 @@ $shipDialog: true !default;
82
86
  }
83
87
 
84
88
  [header] {
85
- display: flex;
86
- align-items: center;
87
- justify-content: space-between;
89
+ display: grid;
90
+ grid-template-areas:
91
+ 'title actions'
92
+ 'description actions';
93
+ grid-template-columns: 1fr min-content;
88
94
  padding: var(--dialog-p);
89
95
  gap: var(--dialog-g);
90
96
 
97
+ h1,
98
+ h2,
99
+ h3,
100
+ h4,
101
+ [title] {
102
+ grid-area: title;
103
+ font: var(--title-20);
104
+ }
105
+
106
+ p,
107
+ [description] {
108
+ grid-area: description;
109
+ font: var(--paragraph-30);
110
+ }
111
+
112
+ button,
113
+ [actions] {
114
+ grid-area: actions;
115
+ }
116
+
91
117
  &.sticky {
92
118
  background-color: var(--dialog-bg);
93
119
  border-bottom: 1px solid var(--base-4);