@underlayerdev/ui 0.13.3 → 0.14.0
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/fesm2022/underlayerdev-ui-carousel.mjs +133 -0
- package/fesm2022/underlayerdev-ui-carousel.mjs.map +1 -0
- package/fesm2022/underlayerdev-ui.mjs +627 -581
- package/fesm2022/underlayerdev-ui.mjs.map +1 -1
- package/package.json +5 -1
- package/types/underlayerdev-ui-carousel.d.ts +30 -0
- package/types/underlayerdev-ui.d.ts +76 -27
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@underlayerdev/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/cdk": "^22.0.0",
|
|
6
6
|
"@angular/common": "^22.0.0",
|
|
@@ -22,6 +22,10 @@
|
|
|
22
22
|
"types": "./types/underlayerdev-ui.d.ts",
|
|
23
23
|
"default": "./fesm2022/underlayerdev-ui.mjs"
|
|
24
24
|
},
|
|
25
|
+
"./carousel": {
|
|
26
|
+
"types": "./types/underlayerdev-ui-carousel.d.ts",
|
|
27
|
+
"default": "./fesm2022/underlayerdev-ui-carousel.mjs"
|
|
28
|
+
},
|
|
25
29
|
"./design-tokens/*": "./design-tokens/*",
|
|
26
30
|
"./breakpoints/*": "./breakpoints/*",
|
|
27
31
|
"./containers/*": "./containers/*"
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { AfterViewInit, OnDestroy } from '@angular/core';
|
|
3
|
+
import Splide, { Options } from '@splidejs/splide';
|
|
4
|
+
|
|
5
|
+
declare class CarouselItemComponent {
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CarouselItemComponent, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CarouselItemComponent, "ul-carousel-item", never, {}, {}, never, ["*"], true, never>;
|
|
8
|
+
}
|
|
9
|
+
declare class CarouselComponent implements AfterViewInit, OnDestroy {
|
|
10
|
+
options: i0.InputSignal<Options>;
|
|
11
|
+
autoMount: i0.InputSignal<boolean>;
|
|
12
|
+
mounted: i0.OutputEmitterRef<Splide>;
|
|
13
|
+
private carousel;
|
|
14
|
+
private items;
|
|
15
|
+
private instance;
|
|
16
|
+
constructor();
|
|
17
|
+
ngAfterViewInit(): void;
|
|
18
|
+
ngOnDestroy(): void;
|
|
19
|
+
getInstance(): Splide | null;
|
|
20
|
+
goNext(): void;
|
|
21
|
+
goPrev(): void;
|
|
22
|
+
goTo(index: number): void;
|
|
23
|
+
mount(): void;
|
|
24
|
+
private init;
|
|
25
|
+
private updateCarouselOnItemsChange;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CarouselComponent, never>;
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CarouselComponent, "ul-carousel", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "autoMount": { "alias": "autoMount"; "required": false; "isSignal": true; }; }, { "mounted": "mounted"; }, ["items"], ["*"], true, never>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export { CarouselComponent, CarouselItemComponent };
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { AfterViewInit,
|
|
2
|
+
import { AfterViewInit, ElementRef, TemplateRef, PipeTransform } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/cdk/accordion';
|
|
4
4
|
import { CdkAccordionItem } from '@angular/cdk/accordion';
|
|
5
5
|
import { FormValueControl, WithOptionalFieldTree, ValidationError, FormCheckboxControl } from '@angular/forms/signals';
|
|
6
|
-
import Splide, { Options } from '@splidejs/splide';
|
|
7
6
|
import { ImageTransform, Dimensions } from 'ngx-image-cropper';
|
|
8
7
|
import { CurrencyPipe } from '@angular/common';
|
|
9
8
|
import * as _underlayerdev_ui from '@underlayerdev/ui';
|
|
@@ -347,29 +346,79 @@ declare class CardComponent {
|
|
|
347
346
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "ul-card", never, { "focused": { "alias": "focused"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "cardDirection": { "alias": "cardDirection"; "required": false; "isSignal": true; }; "cardCaptionSize": { "alias": "cardCaptionSize"; "required": false; "isSignal": true; }; "footerDist": { "alias": "footerDist"; "required": false; "isSignal": true; }; "mediaAspectRatio": { "alias": "mediaAspectRatio"; "required": false; "isSignal": true; }; "mediaBlur": { "alias": "mediaBlur"; "required": false; "isSignal": true; }; "mediaGrayscale": { "alias": "mediaGrayscale"; "required": false; "isSignal": true; }; "cardCaption": { "alias": "cardCaption"; "required": false; "isSignal": true; }; "cardTitle": { "alias": "cardTitle"; "required": false; "isSignal": true; }; "cardTitleSingleLine": { "alias": "cardTitleSingleLine"; "required": false; "isSignal": true; }; "cardSubtitle": { "alias": "cardSubtitle"; "required": false; "isSignal": true; }; "cardSubtitleSingleLine": { "alias": "cardSubtitleSingleLine"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, ["[ulCardMedia]", "[ulCardMediaOverlay]", "[ulCardMediaAction]", "[ulCardFooter]"], true, never>;
|
|
348
347
|
}
|
|
349
348
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
349
|
+
interface CategoryPickerNode {
|
|
350
|
+
id: string;
|
|
351
|
+
parentId: string | null;
|
|
352
|
+
label: string;
|
|
353
|
+
icon?: string;
|
|
354
|
+
isLeaf: boolean;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Picker for a hierarchical category tree of unbounded depth: a closed field
|
|
358
|
+
* that opens a drill-down + search modal (one level of children at a time,
|
|
359
|
+
* with a breadcrumb trail back to root) and resolves to a single leaf
|
|
360
|
+
* node's id. Implements FormValueControl for Signal Forms [formField]. Use
|
|
361
|
+
* [(value)] for two-way binding.
|
|
362
|
+
*
|
|
363
|
+
* Rows are real buttons (ul-list-item), so Tab/Shift+Tab and Enter/Space
|
|
364
|
+
* already give full keyboard access without extra arrow-key wiring — unlike
|
|
365
|
+
* ul-search-select's single-line combobox overlay, there's no need for
|
|
366
|
+
* ComboboxState here.
|
|
367
|
+
*
|
|
368
|
+
* @example
|
|
369
|
+
* <ul-category-picker label="Category" [nodes]="categoryNodes" [(value)]="categoryId" />
|
|
370
|
+
*/
|
|
371
|
+
declare class CategoryPickerComponent implements FormValueControl<string | null> {
|
|
372
|
+
readonly size: _angular_core.InputSignal<UiSize>;
|
|
373
|
+
readonly label: _angular_core.InputSignal<string | null>;
|
|
374
|
+
readonly helperText: _angular_core.InputSignal<string | null>;
|
|
375
|
+
readonly errorText: _angular_core.InputSignal<string | null>;
|
|
376
|
+
readonly error: _angular_core.InputSignal<boolean>;
|
|
377
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
378
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
379
|
+
readonly showRequiredIndicator: _angular_core.InputSignal<boolean>;
|
|
380
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
381
|
+
readonly searchPlaceholder: _angular_core.InputSignal<string>;
|
|
382
|
+
readonly modalTitle: _angular_core.InputSignal<string>;
|
|
383
|
+
readonly rootLabel: _angular_core.InputSignal<string>;
|
|
384
|
+
readonly noResultsText: _angular_core.InputSignal<string>;
|
|
385
|
+
readonly nodes: _angular_core.InputSignal<CategoryPickerNode[]>;
|
|
386
|
+
readonly invalid: _angular_core.InputSignal<boolean>;
|
|
387
|
+
readonly errors: _angular_core.InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
|
|
388
|
+
/** Emitted when the modal closes, whether or not a value was picked — mirrors ul-select's touch. */
|
|
389
|
+
readonly touch: _angular_core.OutputEmitterRef<void>;
|
|
390
|
+
readonly value: _angular_core.ModelSignal<string | null>;
|
|
391
|
+
protected readonly ids: {
|
|
392
|
+
controlId: string;
|
|
393
|
+
helperId: string;
|
|
394
|
+
errorId: string;
|
|
395
|
+
};
|
|
396
|
+
protected readonly open: _angular_core.WritableSignal<boolean>;
|
|
397
|
+
protected readonly currentParentId: _angular_core.WritableSignal<string | null>;
|
|
398
|
+
protected readonly query: _angular_core.WritableSignal<string>;
|
|
399
|
+
protected readonly hasError: _angular_core.Signal<boolean>;
|
|
400
|
+
protected readonly describedBy: _angular_core.Signal<string | undefined>;
|
|
401
|
+
private readonly nodesById;
|
|
402
|
+
protected readonly selectedNode: _angular_core.Signal<CategoryPickerNode | null>;
|
|
403
|
+
protected readonly selectedLabel: _angular_core.Signal<string>;
|
|
404
|
+
protected readonly currentChildren: _angular_core.Signal<CategoryPickerNode[]>;
|
|
405
|
+
/** Root→current ancestor chain, for the breadcrumb trail (empty at the root level). */
|
|
406
|
+
protected readonly breadcrumb: _angular_core.Signal<CategoryPickerNode[]>;
|
|
407
|
+
private readonly normalizedQuery;
|
|
408
|
+
protected readonly isSearching: _angular_core.Signal<boolean>;
|
|
409
|
+
protected readonly searchResults: _angular_core.Signal<{
|
|
410
|
+
node: CategoryPickerNode;
|
|
411
|
+
breadcrumb: string;
|
|
412
|
+
}[]>;
|
|
413
|
+
protected readonly hasNoResults: _angular_core.Signal<boolean>;
|
|
414
|
+
openPicker(): void;
|
|
415
|
+
closePicker(): void;
|
|
416
|
+
selectNode(node: CategoryPickerNode): void;
|
|
417
|
+
goToBreadcrumb(parentId: string | null): void;
|
|
418
|
+
private ancestorNodes;
|
|
419
|
+
private ancestorLabels;
|
|
420
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CategoryPickerComponent, never>;
|
|
421
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CategoryPickerComponent, "ul-category-picker", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "showRequiredIndicator": { "alias": "showRequiredIndicator"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "modalTitle": { "alias": "modalTitle"; "required": false; "isSignal": true; }; "rootLabel": { "alias": "rootLabel"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "touch": "touch"; "value": "valueChange"; }, never, never, true, never>;
|
|
373
422
|
}
|
|
374
423
|
|
|
375
424
|
type CheckboxZoneType = 'none' | 'accessible' | 'visible' | 'checked-visible';
|
|
@@ -2133,5 +2182,5 @@ declare class TextareaComponent implements FormValueControl<string> {
|
|
|
2133
2182
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "ul-textarea", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "showRequiredIndicator": { "alias": "showRequiredIndicator"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "groupFocused": { "alias": "groupFocused"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "touched": "touchedChange"; "touch": "touch"; "value": "valueChange"; "inputBlur": "inputBlur"; "inputFocus": "inputFocus"; }, ["customField"], ["[ul-textarea-left-elements]", "[ul-textarea-field]", "[ul-textarea-right-elements]"], true, never>;
|
|
2134
2183
|
}
|
|
2135
2184
|
|
|
2136
|
-
export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent,
|
|
2137
|
-
export type { ActionsDistribution, AvatarData, AvatarSize, BreadcrumbItem, BreadcrumbSeparator, CalendarDay, CalendarMode, CardCaptionSize, CardDirection, CheckboxZoneType, CollapseVariant, Currency, DockItemVariant, DropdownItem, FileInputAppearance, HeroAction, HeroAlignment, HeroSize, IconName, IconSize, IconWeight, ImageCropperShape, InputAppearance, InputType, ListItemTheme, MediaAspectRatio, MenuItem, ModalVariant, PillSize, PillTheme, PillVariant, RadioGroupOption, RichTextSize, RichTextTone, SalePosition, SearchSelectOption, SearchSuggestion, SelectOption, SidebarItem, SkeletonBorderRadius, SkeletonVariant, SortDirection, Status, TableColumn, TextareaResize, TimeSelection, ToastConfig, ToastKind, ToastWithRole, TooltipPosition };
|
|
2185
|
+
export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CategoryPickerComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DockItemContentSlotDirective, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageCropperComponent, ImageNotFoundComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, LongPressDirective, MenuComponent, MenuItemsComponent, MenuTriggerComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchInputComponent, SearchSelectComponent, SelectComponent, SelectableRowComponent, SidebarComponent, SkeletonComponent, StatusComponent, StepperComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, ToggleComponent, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
|
|
2186
|
+
export type { ActionsDistribution, AvatarData, AvatarSize, BreadcrumbItem, BreadcrumbSeparator, CalendarDay, CalendarMode, CardCaptionSize, CardDirection, CategoryPickerNode, CheckboxZoneType, CollapseVariant, Currency, DockItemVariant, DropdownItem, FileInputAppearance, HeroAction, HeroAlignment, HeroSize, IconName, IconSize, IconWeight, ImageCropperShape, InputAppearance, InputType, ListItemTheme, MediaAspectRatio, MenuItem, ModalVariant, PillSize, PillTheme, PillVariant, RadioGroupOption, RichTextSize, RichTextTone, SalePosition, SearchSelectOption, SearchSuggestion, SelectOption, SidebarItem, SkeletonBorderRadius, SkeletonVariant, SortDirection, Status, TableColumn, TextareaResize, TimeSelection, ToastConfig, ToastKind, ToastWithRole, TooltipPosition };
|