@underlayerdev/ui 0.7.5 → 0.8.1
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/package.json
CHANGED
|
@@ -1554,6 +1554,80 @@ declare class SelectComponent implements FormValueControl<string | null> {
|
|
|
1554
1554
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent, "ul-select", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "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; }; "options": { "alias": "options"; "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; }; "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; }, { "touch": "touch"; "value": "valueChange"; "selectedIndex": "selectedIndexChange"; }, never, never, true, never>;
|
|
1555
1555
|
}
|
|
1556
1556
|
|
|
1557
|
+
/**
|
|
1558
|
+
* Makes any row of projected content (thumbnail/media + label content, plus
|
|
1559
|
+
* anything else — a status pill, actions) selectable in a bulk-select list,
|
|
1560
|
+
* without the consumer having to hand-roll device detection or gesture
|
|
1561
|
+
* wiring themselves:
|
|
1562
|
+
*
|
|
1563
|
+
* - Fine-pointer/real-hover devices (desktop): a checkbox is always present
|
|
1564
|
+
* but invisible until the row is hovered, keyboard-focused, or already
|
|
1565
|
+
* checked — Gmail-list style.
|
|
1566
|
+
* - Coarse-pointer/no-hover devices (touch): long-press a row to select it;
|
|
1567
|
+
* every row then swaps its projected `[ul-selectable-row-media]` content
|
|
1568
|
+
* for a large checkbox — there's rarely room for both a thumbnail and an
|
|
1569
|
+
* easy-to-hit checkbox on a small card.
|
|
1570
|
+
*
|
|
1571
|
+
* This component only decides what to *show* and detects the long-press
|
|
1572
|
+
* gesture — it doesn't know about routing, so a consumer whose media/content
|
|
1573
|
+
* slots contain a routerLink-driven anchor still needs to null that binding
|
|
1574
|
+
* out itself while `selectionActive` (see ul-selectable-row's own usage in
|
|
1575
|
+
* undermarket's profile-listings for the pattern).
|
|
1576
|
+
*
|
|
1577
|
+
* @example
|
|
1578
|
+
* ```html
|
|
1579
|
+
* <ul-selectable-row
|
|
1580
|
+
* [selected]="isSelected(item.id)"
|
|
1581
|
+
* [selectionActive]="hasSelection()"
|
|
1582
|
+
* [ariaLabel]="'Select ' + item.title"
|
|
1583
|
+
* (selectedChange)="toggleSelect(item.id, $event)"
|
|
1584
|
+
* (longPress)="onRowLongPress(item.id)"
|
|
1585
|
+
* >
|
|
1586
|
+
* <img ul-selectable-row-media [src]="item.imageUrl" alt="" />
|
|
1587
|
+
* <div ul-selectable-row-content>{{ item.title }}</div>
|
|
1588
|
+
* <ul-pill>{{ item.status }}</ul-pill>
|
|
1589
|
+
* </ul-selectable-row>
|
|
1590
|
+
* ```
|
|
1591
|
+
*/
|
|
1592
|
+
declare class SelectableRowComponent {
|
|
1593
|
+
/** Whether this row is currently selected. */
|
|
1594
|
+
selected: _angular_core.InputSignal<boolean>;
|
|
1595
|
+
/**
|
|
1596
|
+
* Whether the list is in selection mode (something, anywhere, is
|
|
1597
|
+
* selected) — drives the compact-mode media-for-checkbox swap.
|
|
1598
|
+
*/
|
|
1599
|
+
selectionActive: _angular_core.InputSignal<boolean>;
|
|
1600
|
+
/** Accessible label for this row's checkbox(es). */
|
|
1601
|
+
ariaLabel: _angular_core.InputSignal<string | null>;
|
|
1602
|
+
selectedChange: _angular_core.OutputEmitterRef<boolean>;
|
|
1603
|
+
longPress: _angular_core.OutputEmitterRef<void>;
|
|
1604
|
+
/**
|
|
1605
|
+
* Same distinction the hover-reveal CSS relies on — a width breakpoint
|
|
1606
|
+
* alone would misclassify a wide tablet in landscape, which has no real
|
|
1607
|
+
* hover, as "desktop".
|
|
1608
|
+
*/
|
|
1609
|
+
private readonly hasFinePointer;
|
|
1610
|
+
readonly isCompact: _angular_core.Signal<boolean>;
|
|
1611
|
+
private justLongPressed;
|
|
1612
|
+
constructor();
|
|
1613
|
+
/**
|
|
1614
|
+
* While selecting, a tap anywhere in the row toggles it — not just on the
|
|
1615
|
+
* checkbox. This applies on every device, not only once the checkbox has
|
|
1616
|
+
* replaced the media (compact): otherwise the row's content on
|
|
1617
|
+
* fine-pointer devices would only be togglable by precisely hitting the
|
|
1618
|
+
* small hover-revealed checkbox, which is inconsistent with how compact
|
|
1619
|
+
* mode behaves and isn't how Gmail/Photos-style bulk-select works even on
|
|
1620
|
+
* desktop web. It's safe to do unconditionally (regardless of what's
|
|
1621
|
+
* projected) because a consumer whose content contains a routerLink is
|
|
1622
|
+
* already expected to have nulled that binding out while
|
|
1623
|
+
* `selectionActive` — so there's no competing navigation to accidentally
|
|
1624
|
+
* trigger.
|
|
1625
|
+
*/
|
|
1626
|
+
onHostClick(event: MouseEvent): void;
|
|
1627
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectableRowComponent, never>;
|
|
1628
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectableRowComponent, "ul-selectable-row", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "selectionActive": { "alias": "selectionActive"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "selectedChange": "selectedChange"; "longPress": "longPress"; }, never, ["[ul-selectable-row-media]", "[ul-selectable-row-content]", "*"], true, [{ directive: typeof LongPressDirective; inputs: {}; outputs: {}; }]>;
|
|
1629
|
+
}
|
|
1630
|
+
|
|
1557
1631
|
/**
|
|
1558
1632
|
* Generates unique IDs for form field elements (control, helper, error).
|
|
1559
1633
|
* Use this so label `for`, helper `id`, and `aria-describedby` stay in sync.
|
|
@@ -1736,5 +1810,5 @@ declare class TextareaComponent implements FormValueControl<string> {
|
|
|
1736
1810
|
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>;
|
|
1737
1811
|
}
|
|
1738
1812
|
|
|
1739
|
-
export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CarouselComponent, CarouselItemComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DockItemContentSlotDirective, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, LongPressDirective, MenuComponent, MenuItemsComponent, MenuTriggerComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchSelectComponent, SelectComponent, SidebarComponent, SkeletonComponent, StatusComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
|
|
1813
|
+
export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CarouselComponent, CarouselItemComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DockItemContentSlotDirective, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, LongPressDirective, MenuComponent, MenuItemsComponent, MenuTriggerComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchSelectComponent, SelectComponent, SelectableRowComponent, SidebarComponent, SkeletonComponent, StatusComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
|
|
1740
1814
|
export type { ActionsDistribution, AvatarData, BreadcrumbItem, BreadcrumbSeparator, CalendarDay, CalendarMode, CardCaptionSize, CardDirection, CheckboxZoneType, CollapseVariant, Currency, DockItemVariant, DropdownItem, FileInputAppearance, HeroAction, HeroAlignment, HeroSize, IconName, IconSize, IconWeight, InputAppearance, InputType, ListItemTheme, MediaAspectRatio, MenuItem, ModalVariant, PillSize, PillTheme, PillVariant, RadioGroupOption, RichTextSize, RichTextTone, SalePosition, SearchSelectOption, SelectOption, SidebarItem, SkeletonBorderRadius, SkeletonVariant, SortDirection, Status, TableColumn, TextareaResize, TimeSelection, ToastConfig, ToastKind, ToastWithRole, TooltipPosition };
|