@dataworkz/crystal 0.1.0-beta.2 → 0.1.0-beta.3
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/CHANGELOG.md +25 -0
- package/fesm2022/dataworkz-crystal-icons.mjs.map +1 -1
- package/fesm2022/dataworkz-crystal.mjs +927 -27
- package/fesm2022/dataworkz-crystal.mjs.map +1 -1
- package/icons/index.d.ts +3 -1
- package/index.d.ts +411 -12
- package/package.json +4 -7
- package/styles/components/content.css +5 -0
- package/styles/components/form.css +31 -1
- package/styles/crystal-no-fonts.css +2 -0
package/icons/index.d.ts
CHANGED
|
@@ -171,6 +171,8 @@ declare const DW_LOGO_URIS: {
|
|
|
171
171
|
readonly "tools/snowflake": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cg fill='%2329b5e8' clip-path='url(%23a)'%3E%3Cpath d='m13.75 12.194-3.386-1.951a1 1 0 0 0-1.359.364 1 1 0 0 0-.128.592v3.813a.99.99 0 0 0 1.982 0V12.82l1.896 1.093a.996.996 0 0 0 1.36-.364.99.99 0 0 0-.365-1.354M5.33 8.013a.97.97 0 0 0-.486-.857l-3.386-1.95a.973.973 0 0 0-1.328.355.97.97 0 0 0 .356 1.325l1.952 1.123L.486 9.133a.96.96 0 0 0-.452.588.96.96 0 0 0 .096.736.975.975 0 0 0 1.328.355l3.386-1.95a.97.97 0 0 0 .486-.85M2.226 3.825l3.386 1.95a1 1 0 0 0 1.194-.15.98.98 0 0 0 .32-.728V.99a.99.99 0 0 0-1.982 0v2.225L3.22 2.106a.996.996 0 0 0-1.36.363.99.99 0 0 0 .365 1.356M9.84 8.171a.4.4 0 0 1-.097.233L8.401 9.743a.38.38 0 0 1-.233.096h-.342a.38.38 0 0 1-.233-.096L6.249 8.404a.4.4 0 0 1-.096-.233v-.34c0-.077.043-.18.096-.233l1.344-1.34a.38.38 0 0 1 .233-.097h.342a.38.38 0 0 1 .233.096l1.342 1.34a.38.38 0 0 1 .097.233zm-1.198-.164v-.014a.3.3 0 0 0-.07-.171l-.397-.394a.27.27 0 0 0-.172-.072H7.99a.28.28 0 0 0-.172.072l-.395.394a.28.28 0 0 0-.07.17v.015c0 .056.032.133.07.171l.395.396c.04.039.117.07.172.07h.014a.28.28 0 0 0 .172-.07l.396-.396a.28.28 0 0 0 .07-.17m1.722-2.234 3.386-1.95a.99.99 0 0 0 .365-1.355.996.996 0 0 0-1.36-.363L10.86 3.2V.99a.99.99 0 0 0-1.982 0v3.83a.992.992 0 0 0 1.487.955m-4.074 4.353a1 1 0 0 0-.679.115l-3.386 1.951a.99.99 0 0 0-.364 1.354.995.995 0 0 0 1.359.364l1.923-1.107v2.207a.99.99 0 0 0 1.982 0v-3.908a.99.99 0 0 0-.835-.976m9.575-4.578a.995.995 0 0 0-1.359-.364l-3.386 1.95a.99.99 0 0 0-.497.877.99.99 0 0 0 .497.868l3.386 1.952a1 1 0 0 0 1.36-.364.99.99 0 0 0-.365-1.356l-1.918-1.104 1.918-1.105a.99.99 0 0 0 .364-1.354'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h16v16H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E";
|
|
172
172
|
readonly "tools/workflow": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='%231f2a37' d='M13.333 0H8.667v2.388c.344-.143.533-.433 1.192-.433 1.137 0 2.062.925 2.062 2.062A2.064 2.064 0 0 1 9.86 6.079c-.659 0-.847-.29-1.192-.434v1.688h2.254c.26 0 .469.408.469.667 0 .509-.175.858-.315 1.14-.12.24-.216.431-.216.719 0 .62.504 1.125 1.124 1.125s1.125-.505 1.125-1.125c0-.288-.095-.478-.216-.72-.14-.28-.315-.63-.315-1.139 0-.259.21-.667.469-.667H16V2.667C16 1.333 14.667 0 13.333 0'/%3E%3Cpath fill='%239ca3af' d='M1.954 6.141c0-1.137.926-2.062 2.063-2.062s2.062.925 2.062 2.062c0 .659-.29.847-.434 1.192h1.688V5.08c0-.259.408-.469.667-.469.509 0 .858.175 1.14.315.24.12.431.216.719.216.62 0 1.125-.504 1.125-1.124s-.505-1.125-1.125-1.125c-.288 0-.478.095-.72.216-.28.14-.63.315-1.139.315-.259 0-.667-.21-.667-.469V0H2.667C1.333 0 0 1.333 0 2.667v4.666h2.388c-.143-.344-.434-.533-.434-1.192m12.092 3.718a2.065 2.065 0 0 1-2.063 2.062A2.064 2.064 0 0 1 9.921 9.86c0-.659.29-.847.434-1.192H8.667v2.254c0 .26-.408.469-.667.469-.51 0-.858-.175-1.14-.315-.24-.12-.431-.216-.719-.216-.62 0-1.125.504-1.125 1.124s.505 1.125 1.125 1.125c.288 0 .478-.095.72-.216.28-.14.63-.315 1.139-.315.259 0 .667.21.667.469V16h4.666C14.667 16 16 14.667 16 13.333V8.667h-2.388c.143.344.434.533.434 1.192'/%3E%3Cpath fill='%231f2a37' d='M6.141 14.046a2.064 2.064 0 0 1-2.062-2.063c0-1.137.925-2.062 2.062-2.062.659 0 .847.29 1.192.434V8.667H5.08c-.259 0-.469-.408-.469-.667 0-.51.175-.858.315-1.14.12-.24.216-.431.216-.719 0-.62-.504-1.125-1.124-1.125s-1.125.505-1.125 1.125c0 .288.095.478.216.72.14.28.315.63.315 1.139 0 .259-.21.667-.469.667H0v4.666C0 14.667 1.333 16 2.667 16h4.666v-2.388c-.344.143-.533.434-1.192.434'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h16v16H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E";
|
|
173
173
|
};
|
|
174
|
+
/** A PrimeIcons name (without `pi-`), from the installed primeicons package. */
|
|
175
|
+
type DwPrimeIcon = "address-book" | "align-center" | "align-justify" | "align-left" | "align-right" | "amazon" | "android" | "angle-double-down" | "angle-double-left" | "angle-double-right" | "angle-double-up" | "angle-down" | "angle-left" | "angle-right" | "angle-up" | "apple" | "arrow-circle-down" | "arrow-circle-left" | "arrow-circle-right" | "arrow-circle-up" | "arrow-down" | "arrow-down-left" | "arrow-down-left-and-arrow-up-right-to-center" | "arrow-down-right" | "arrow-left" | "arrow-right" | "arrow-right-arrow-left" | "arrow-up" | "arrow-up-left" | "arrow-up-right" | "arrow-up-right-and-arrow-down-left-from-center" | "arrows-alt" | "arrows-h" | "arrows-v" | "asterisk" | "at" | "backward" | "ban" | "barcode" | "bars" | "bell" | "bell-slash" | "bitcoin" | "bolt" | "book" | "bookmark" | "bookmark-fill" | "box" | "briefcase" | "building" | "building-columns" | "bullseye" | "calculator" | "calendar" | "calendar-clock" | "calendar-minus" | "calendar-plus" | "calendar-times" | "camera" | "car" | "caret-down" | "caret-left" | "caret-right" | "caret-up" | "cart-arrow-down" | "cart-minus" | "cart-plus" | "chart-bar" | "chart-line" | "chart-pie" | "chart-scatter" | "check" | "check-circle" | "check-square" | "chevron-circle-down" | "chevron-circle-left" | "chevron-circle-right" | "chevron-circle-up" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "circle" | "circle-fill" | "circle-off" | "circle-on" | "clipboard" | "clock" | "clone" | "cloud" | "cloud-download" | "cloud-upload" | "code" | "cog" | "comment" | "comments" | "compass" | "copy" | "credit-card" | "crown" | "database" | "delete-left" | "desktop" | "directions" | "directions-alt" | "discord" | "dollar" | "download" | "eject" | "ellipsis-h" | "ellipsis-v" | "envelope" | "equals" | "eraser" | "ethereum" | "euro" | "exclamation-circle" | "exclamation-triangle" | "expand" | "external-link" | "eye" | "eye-slash" | "face-smile" | "facebook" | "fast-backward" | "fast-forward" | "file" | "file-arrow-up" | "file-check" | "file-edit" | "file-excel" | "file-export" | "file-import" | "file-o" | "file-pdf" | "file-plus" | "file-word" | "filter" | "filter-fill" | "filter-slash" | "flag" | "flag-fill" | "folder" | "folder-open" | "folder-plus" | "forward" | "gauge" | "gift" | "github" | "globe" | "google" | "graduation-cap" | "hammer" | "hashtag" | "headphones" | "heart" | "heart-fill" | "history" | "home" | "hourglass" | "id-card" | "image" | "images" | "inbox" | "indian-rupee" | "info" | "info-circle" | "instagram" | "key" | "language" | "lightbulb" | "link" | "linkedin" | "list" | "list-check" | "lock" | "lock-open" | "map" | "map-marker" | "mars" | "megaphone" | "microchip" | "microchip-ai" | "microphone" | "microsoft" | "minus" | "minus-circle" | "mobile" | "money-bill" | "moon" | "objects-column" | "palette" | "paperclip" | "pause" | "pause-circle" | "paypal" | "pen-to-square" | "pencil" | "percentage" | "phone" | "pinterest" | "play" | "play-circle" | "plus" | "plus-circle" | "pound" | "power-off" | "prime" | "print" | "qrcode" | "question" | "question-circle" | "receipt" | "reddit" | "refresh" | "replay" | "reply" | "save" | "search" | "search-minus" | "search-plus" | "send" | "server" | "share-alt" | "shield" | "shop" | "shopping-bag" | "shopping-cart" | "sign-in" | "sign-out" | "sitemap" | "slack" | "sliders-h" | "sliders-v" | "sort" | "sort-alpha-down" | "sort-alpha-down-alt" | "sort-alpha-up" | "sort-alpha-up-alt" | "sort-alt" | "sort-alt-slash" | "sort-amount-down" | "sort-amount-down-alt" | "sort-amount-up" | "sort-amount-up-alt" | "sort-down" | "sort-down-fill" | "sort-numeric-down" | "sort-numeric-down-alt" | "sort-numeric-up" | "sort-numeric-up-alt" | "sort-up" | "sort-up-fill" | "sparkles" | "spinner" | "spinner-dotted" | "star" | "star-fill" | "star-half" | "star-half-fill" | "step-backward" | "step-backward-alt" | "step-forward" | "step-forward-alt" | "stop" | "stop-circle" | "stopwatch" | "sun" | "sync" | "table" | "tablet" | "tag" | "tags" | "telegram" | "th-large" | "thumbs-down" | "thumbs-down-fill" | "thumbs-up" | "thumbs-up-fill" | "thumbtack" | "ticket" | "tiktok" | "times" | "times-circle" | "trash" | "trophy" | "truck" | "turkish-lira" | "twitch" | "twitter" | "undo" | "unlock" | "upload" | "user" | "user-edit" | "user-minus" | "user-plus" | "users" | "venus" | "verified" | "video" | "vimeo" | "volume-down" | "volume-off" | "volume-up" | "wallet" | "warehouse" | "wave-pulse" | "whatsapp" | "wifi" | "window-maximize" | "window-minimize" | "wrench" | "youtube";
|
|
174
176
|
|
|
175
177
|
/**
|
|
176
178
|
* The Dataworkz glyphs (what PrimeIcons lacks: hand, brain, workflow…), one file each in
|
|
@@ -242,4 +244,4 @@ declare function storageIcon(key: string | null | undefined, options?: StorageIc
|
|
|
242
244
|
declare function fileIconByExtension(extension: string): string;
|
|
243
245
|
|
|
244
246
|
export { DW_ICON_NAMES, DW_ICON_PREFIX, DW_LOGO_URIS, GENERIC_COLLECTION_ICON, GENERIC_STORAGE_ICON, GENERIC_TOOL_ICON, TOOL_ICON_KEYS, dwIconName, fileIconByExtension, icon, isGlyphName, isToolIconKey, storageIcon, storageIconKeys, toolIcon };
|
|
245
|
-
export type { DwIconName, IconName, StorageIconKey, StorageIconOptions, StorageIconSet, ToolIconKey };
|
|
247
|
+
export type { DwIconName, DwPrimeIcon, IconName, StorageIconKey, StorageIconOptions, StorageIconSet, ToolIconKey };
|
package/index.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, EnvironmentProviders, OnDestroy, TemplateRef } from '@angular/core';
|
|
3
|
-
import { StorageIconSet } from '@dataworkz/crystal/icons';
|
|
4
|
-
export { DW_ICON_NAMES, DW_ICON_PREFIX, DwIconName, IconName, dwIconName, icon } from '@dataworkz/crystal/icons';
|
|
2
|
+
import { InjectionToken, EnvironmentProviders, OnDestroy, TemplateRef, OnInit } from '@angular/core';
|
|
3
|
+
import { StorageIconSet, DwPrimeIcon } from '@dataworkz/crystal/icons';
|
|
4
|
+
export { DW_ICON_NAMES, DW_ICON_PREFIX, DwIconName, DwPrimeIcon, IconName, dwIconName, icon } from '@dataworkz/crystal/icons';
|
|
5
5
|
import { ValidationErrors, AbstractControl, NgModel, NgControl, ControlValueAccessor } from '@angular/forms';
|
|
6
6
|
import { MenuItem, SortMeta, SortEvent } from 'primeng/api';
|
|
7
7
|
import { UrlTree } from '@angular/router';
|
|
8
8
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
9
9
|
import { Observable } from 'rxjs';
|
|
10
|
+
import * as i1 from 'primeng/tooltip';
|
|
11
|
+
import * as i1$1 from 'primeng/inputtext';
|
|
12
|
+
import * as i2 from 'primeng/textarea';
|
|
10
13
|
import { TablePageEvent, Table } from 'primeng/table';
|
|
11
14
|
import { SafeHtml } from '@angular/platform-browser';
|
|
12
15
|
|
|
@@ -935,12 +938,12 @@ type DwShowErrorsWhen = 'touched' | 'dirty' | 'touchedOrDirty' | 'always';
|
|
|
935
938
|
*
|
|
936
939
|
* ```html
|
|
937
940
|
* <dw-field label="Name" [control]="form.controls.name" help="Shown to end users" [maxLength]="100">
|
|
938
|
-
* <input
|
|
941
|
+
* <input dwInput formControlName="name" />
|
|
939
942
|
* </dw-field>
|
|
940
943
|
*
|
|
941
944
|
* <dw-field label="Prompt" layout="inline" info="Supports {{ '{{' }}variables}}">
|
|
942
945
|
* <a dwFieldActions class="dw-link" (click)="generate()">Generate with AI</a>
|
|
943
|
-
* <textarea
|
|
946
|
+
* <textarea dwInput [(ngModel)]="prompt" #p="ngModel" required></textarea>
|
|
944
947
|
* </dw-field>
|
|
945
948
|
*
|
|
946
949
|
* <dw-field label="Region" [error]="regionError">…</dw-field> <!-- template-driven / manual -->
|
|
@@ -1325,7 +1328,7 @@ declare class DwCardComponent {
|
|
|
1325
1328
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DwCardComponent, "dw-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "clampLines": { "alias": "clampLines"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconTint": { "alias": "iconTint"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "badgeTone": { "alias": "badgeTone"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "disabledReason": { "alias": "disabledReason"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "menuContext": { "alias": "menuContext"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelStyle": { "alias": "labelStyle"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "valueSuffix": { "alias": "valueSuffix"; "required": false; "isSignal": true; }; "infoPosition": { "alias": "infoPosition"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "hasBody": { "alias": "hasBody"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; }, { "activate": "activate"; }, never, ["*", "[dwStatLabelEnd]", "[dwCardHeaderEnd]", "[dwCardTags]", "[dwCardFooter]"], true, never>;
|
|
1326
1329
|
}
|
|
1327
1330
|
|
|
1328
|
-
/** Marks the switch (usually `<
|
|
1331
|
+
/** Marks the switch (usually `<dw-switch formControlName=…>`) shown at the card's leading edge. */
|
|
1329
1332
|
declare class DwToggleCardControlDirective {
|
|
1330
1333
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwToggleCardControlDirective, never>;
|
|
1331
1334
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DwToggleCardControlDirective, "[dwToggleCardControl]", never, {}, {}, never, never, true, never>;
|
|
@@ -1348,7 +1351,7 @@ declare class DwToggleCardBodyDirective {
|
|
|
1348
1351
|
* <dw-toggle-card title="Full Text Search Index" description="Enable full text search"
|
|
1349
1352
|
* icon="pi pi-search" [expanded]="form.value.fullTextSearchIndex"
|
|
1350
1353
|
* [disabledReason]="graphDbOn ? '' : 'Requires Graph Database Storage to be enabled'">
|
|
1351
|
-
* <
|
|
1354
|
+
* <dw-switch dwToggleCardControl formControlName="fullTextSearchIndex" />
|
|
1352
1355
|
* <ng-template dwToggleCardBody>…configuration fields…</ng-template>
|
|
1353
1356
|
* </dw-toggle-card>
|
|
1354
1357
|
* ```
|
|
@@ -2344,6 +2347,390 @@ declare class DwTooltipIfTruncatedDirective {
|
|
|
2344
2347
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DwTooltipIfTruncatedDirective, "[dwTooltipIfTruncated]", never, { "truncationTarget": { "alias": "truncationTarget"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2345
2348
|
}
|
|
2346
2349
|
|
|
2350
|
+
type DwTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
2351
|
+
/** `multiline` keeps line breaks (up to 360px), `code` monospace, `error` danger red, `toolbar` a slate chip. */
|
|
2352
|
+
type DwTooltipVariant = 'default' | 'multiline' | 'code' | 'error' | 'toolbar';
|
|
2353
|
+
/**
|
|
2354
|
+
* A tooltip on any element, in crystal's look (PrimeNG's Tooltip underneath, which the app never imports). It opens
|
|
2355
|
+
* on hover and focus, above the element unless told otherwise, appended to `<body>` so nothing clips it.
|
|
2356
|
+
*
|
|
2357
|
+
* ```html
|
|
2358
|
+
* <button dwTooltip="Refresh">…</button>
|
|
2359
|
+
* <span [dwTooltip]="fullName" dwTooltipPosition="bottom" [dwTooltipDelay]="300">{{ shortName }}</span>
|
|
2360
|
+
* <i dwTooltip="Line one line two" dwTooltipVariant="multiline"></i>
|
|
2361
|
+
* ```
|
|
2362
|
+
*/
|
|
2363
|
+
declare class DwTooltipDirective {
|
|
2364
|
+
private readonly prime;
|
|
2365
|
+
readonly dwTooltipPosition: _angular_core.InputSignal<DwTooltipPosition>;
|
|
2366
|
+
/** Milliseconds before it opens. */
|
|
2367
|
+
readonly dwTooltipDelay: _angular_core.InputSignal<number>;
|
|
2368
|
+
readonly dwTooltipVariant: _angular_core.InputSignal<DwTooltipVariant>;
|
|
2369
|
+
constructor();
|
|
2370
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwTooltipDirective, never>;
|
|
2371
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DwTooltipDirective, "[dwTooltip]", never, { "dwTooltipPosition": { "alias": "dwTooltipPosition"; "required": false; "isSignal": true; }; "dwTooltipDelay": { "alias": "dwTooltipDelay"; "required": false; "isSignal": true; }; "dwTooltipVariant": { "alias": "dwTooltipVariant"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.Tooltip; inputs: { "pTooltip": "dwTooltip"; "tooltipDisabled": "dwTooltipDisabled"; }; outputs: {}; }]>;
|
|
2372
|
+
}
|
|
2373
|
+
|
|
2374
|
+
type DwInputSize = 'sm' | 'md' | 'lg';
|
|
2375
|
+
/**
|
|
2376
|
+
* Crystal's text input: a native `<input>` in crystal's look (PrimeNG's InputText underneath, which the app never
|
|
2377
|
+
* imports). Works with ngModel and reactive forms, and inside `dw-field`, which wires its label and error.
|
|
2378
|
+
*
|
|
2379
|
+
* ```html
|
|
2380
|
+
* <input dwInput placeholder="Name" [(ngModel)]="name" />
|
|
2381
|
+
* <input dwInput size="sm" type="number" formControlName="limit" />
|
|
2382
|
+
* <input dwInput [fluid]="true" [invalid]="!!serverError" />
|
|
2383
|
+
* ```
|
|
2384
|
+
*/
|
|
2385
|
+
declare class DwInputDirective {
|
|
2386
|
+
private readonly prime;
|
|
2387
|
+
/** `md` by default; `sm` matches small buttons (28px). Shadows the native character-count `size` attribute. */
|
|
2388
|
+
set size(size: DwInputSize | null | undefined);
|
|
2389
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwInputDirective, never>;
|
|
2390
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DwInputDirective, "input[dwInput]", never, { "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1$1.InputText; inputs: { "fluid": "fluid"; "invalid": "invalid"; }; outputs: {}; }]>;
|
|
2391
|
+
}
|
|
2392
|
+
/**
|
|
2393
|
+
* Crystal's multi-line text input: a native `<textarea>` in crystal's look (PrimeNG's Textarea underneath).
|
|
2394
|
+
* `autoResize` grows it with its content.
|
|
2395
|
+
*
|
|
2396
|
+
* ```html
|
|
2397
|
+
* <textarea dwInput rows="3" [(ngModel)]="prompt"></textarea>
|
|
2398
|
+
* <textarea dwInput [autoResize]="true" formControlName="notes"></textarea>
|
|
2399
|
+
* ```
|
|
2400
|
+
*/
|
|
2401
|
+
declare class DwTextareaDirective {
|
|
2402
|
+
private readonly prime;
|
|
2403
|
+
/** `md` by default; `sm` uses the 12px type. */
|
|
2404
|
+
set size(size: DwInputSize | null | undefined);
|
|
2405
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwTextareaDirective, never>;
|
|
2406
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DwTextareaDirective, "textarea[dwInput]", never, { "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i2.Textarea; inputs: { "autoResize": "autoResize"; "fluid": "fluid"; "invalid": "invalid"; }; outputs: {}; }]>;
|
|
2407
|
+
}
|
|
2408
|
+
/** Both: `imports: [DW_INPUT]` covers `<input dwInput>` and `<textarea dwInput>`. */
|
|
2409
|
+
declare const DW_INPUT: readonly [typeof DwInputDirective, typeof DwTextareaDirective];
|
|
2410
|
+
|
|
2411
|
+
/**
|
|
2412
|
+
* What every crystal form control shares (dw-select, dw-checkbox, dw-switch…): it works with ngModel, formControlName
|
|
2413
|
+
* and formControl, or on its own through `[(value)]`; it is disabled by the form or by `disabled`; and it shows
|
|
2414
|
+
* itself invalid once its control is invalid and touched or dirty (as crystal's inputs do), or when `invalid` says so.
|
|
2415
|
+
*
|
|
2416
|
+
* A subclass renders its PrimeNG control from `isDisabled()` and `showInvalid()` and hands it to `drive()`, which keeps
|
|
2417
|
+
* it in step with `value()`; or it calls `commit(value)` itself when the user changes the value, and `markTouched()`
|
|
2418
|
+
* when the control loses focus.
|
|
2419
|
+
*/
|
|
2420
|
+
declare abstract class DwFormControl<T> implements ControlValueAccessor, OnInit {
|
|
2421
|
+
private readonly ngControl;
|
|
2422
|
+
private readonly destroyRef;
|
|
2423
|
+
/** The value, for use without forms: `[(value)]`. With forms, bind ngModel / formControlName instead. */
|
|
2424
|
+
readonly value: _angular_core.ModelSignal<T | null>;
|
|
2425
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2426
|
+
/** Shows the invalid state whatever the form says (e.g. a server error). */
|
|
2427
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2428
|
+
/** The user changed the value (not emitted when the form or `[value]` sets one). */
|
|
2429
|
+
readonly changed: _angular_core.OutputEmitterRef<T | null>;
|
|
2430
|
+
private readonly formDisabled;
|
|
2431
|
+
/** Bumped on every status / value / touched event of the bound control, so `showInvalid` re-evaluates. */
|
|
2432
|
+
private readonly controlEvents;
|
|
2433
|
+
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
2434
|
+
readonly showInvalid: _angular_core.Signal<boolean>;
|
|
2435
|
+
private onChange;
|
|
2436
|
+
private onTouched;
|
|
2437
|
+
constructor();
|
|
2438
|
+
ngOnInit(): void;
|
|
2439
|
+
writeValue(value: T | null | undefined): void;
|
|
2440
|
+
registerOnChange(fn: (value: T | null) => void): void;
|
|
2441
|
+
registerOnTouched(fn: () => void): void;
|
|
2442
|
+
setDisabledState(disabled: boolean): void;
|
|
2443
|
+
/** The user changed the value. */
|
|
2444
|
+
protected commit(value: T | null): void;
|
|
2445
|
+
/**
|
|
2446
|
+
* Keeps a PrimeNG control (its own value accessor) in step with this one, synchronously: the value goes in through
|
|
2447
|
+
* its `writeValue`, the user's changes and blurs come back. Call from the constructor with the control's viewChild.
|
|
2448
|
+
* (A second ngModel on the PrimeNG control would write a microtask after the app's, one render behind.)
|
|
2449
|
+
* `prepare` runs just before each write, for inputs the control reads while writing (a radio's own value).
|
|
2450
|
+
*/
|
|
2451
|
+
protected drive<C extends DwPrimeValueAccessor<T>>(prime: () => C | undefined, prepare?: (control: C) => void): void;
|
|
2452
|
+
/** The control lost focus. */
|
|
2453
|
+
protected markTouched(): void;
|
|
2454
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwFormControl<any>, never>;
|
|
2455
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DwFormControl<any>, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
|
|
2456
|
+
}
|
|
2457
|
+
/** The part of a PrimeNG form control that `drive()` uses: Angular's value accessor. */
|
|
2458
|
+
interface DwPrimeValueAccessor<T> {
|
|
2459
|
+
writeValue(value: T | null): void;
|
|
2460
|
+
registerOnChange(fn: (value: T | null) => void): void;
|
|
2461
|
+
registerOnTouched(fn: () => void): void;
|
|
2462
|
+
}
|
|
2463
|
+
type DwControlSize = 'sm' | 'md' | 'lg';
|
|
2464
|
+
/** Crystal's control sizes in PrimeNG's words: `md` is PrimeNG's default. */
|
|
2465
|
+
declare function primeSize(size: DwControlSize): 'small' | 'large' | undefined;
|
|
2466
|
+
|
|
2467
|
+
/** Context of an option template: the option itself. */
|
|
2468
|
+
interface DwSelectOptionContext<T = unknown> {
|
|
2469
|
+
$implicit: T;
|
|
2470
|
+
}
|
|
2471
|
+
/**
|
|
2472
|
+
* How each option of a dw-select / dw-multiselect is drawn in its list.
|
|
2473
|
+
*
|
|
2474
|
+
* ```html
|
|
2475
|
+
* <dw-select [options]="llms" optionLabel="name" optionValue="id" [(ngModel)]="llmId">
|
|
2476
|
+
* <ng-template dwSelectOption let-llm><dw-entity-icon kind="llm" [type]="llm.provider" /> {{ llm.name }}</ng-template>
|
|
2477
|
+
* </dw-select>
|
|
2478
|
+
* ```
|
|
2479
|
+
*/
|
|
2480
|
+
declare class DwSelectOptionDirective<T = unknown> {
|
|
2481
|
+
readonly template: TemplateRef<DwSelectOptionContext<T>>;
|
|
2482
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwSelectOptionDirective<any>, never>;
|
|
2483
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DwSelectOptionDirective<any>, "ng-template[dwSelectOption]", never, {}, {}, never, never, true, never>;
|
|
2484
|
+
}
|
|
2485
|
+
/** How a dw-select draws its selected option in the closed control (defaults to the option template's look). */
|
|
2486
|
+
declare class DwSelectValueDirective<T = unknown> {
|
|
2487
|
+
readonly template: TemplateRef<DwSelectOptionContext<T>>;
|
|
2488
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwSelectValueDirective<any>, never>;
|
|
2489
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DwSelectValueDirective<any>, "ng-template[dwSelectValue]", never, {}, {}, never, never, true, never>;
|
|
2490
|
+
}
|
|
2491
|
+
/** Content under the option list (e.g. a "Create new" action). */
|
|
2492
|
+
declare class DwSelectFooterDirective {
|
|
2493
|
+
readonly template: TemplateRef<void>;
|
|
2494
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwSelectFooterDirective, never>;
|
|
2495
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DwSelectFooterDirective, "ng-template[dwSelectFooter]", never, {}, {}, never, never, true, never>;
|
|
2496
|
+
}
|
|
2497
|
+
|
|
2498
|
+
/**
|
|
2499
|
+
* Crystal's single select (PrimeNG's Select underneath, which the app never imports). The option list is appended to
|
|
2500
|
+
* `<body>`, as wide as the control; long options end in an ellipsis. Works with ngModel and reactive forms, inside
|
|
2501
|
+
* `dw-field`, or on its own with `[(value)]`.
|
|
2502
|
+
*
|
|
2503
|
+
* ```html
|
|
2504
|
+
* <dw-select [options]="regions" optionLabel="name" optionValue="id" placeholder="Region" formControlName="region" />
|
|
2505
|
+
* <dw-select size="sm" [options]="llms" [(ngModel)]="llm" [filter]="true" filterBy="name" (changed)="save($event)">
|
|
2506
|
+
* <ng-template dwSelectOption let-llm>{{ llm.name }}</ng-template>
|
|
2507
|
+
* </dw-select>
|
|
2508
|
+
* <dw-select [options]="providers" [readonly]="true" [(value)]="provider" />
|
|
2509
|
+
* ```
|
|
2510
|
+
*/
|
|
2511
|
+
declare class DwSelectComponent<T = unknown> extends DwFormControl<T> {
|
|
2512
|
+
readonly options: _angular_core.InputSignal<unknown[] | null | undefined>;
|
|
2513
|
+
/** The option field to show; options are shown as they are when omitted (strings, numbers). */
|
|
2514
|
+
readonly optionLabel: _angular_core.InputSignal<string | undefined>;
|
|
2515
|
+
/** The option field to bind; the whole option is the value when omitted. */
|
|
2516
|
+
readonly optionValue: _angular_core.InputSignal<string | undefined>;
|
|
2517
|
+
/** The option field that disables an option. */
|
|
2518
|
+
readonly optionDisabled: _angular_core.InputSignal<string | undefined>;
|
|
2519
|
+
/** The field that identifies an option when the value is an object. */
|
|
2520
|
+
readonly dataKey: _angular_core.InputSignal<string | undefined>;
|
|
2521
|
+
readonly placeholder: _angular_core.InputSignal<string | undefined>;
|
|
2522
|
+
/** A search box at the top of the list. */
|
|
2523
|
+
readonly filter: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2524
|
+
/** Fields to search, comma-separated; the label by default. */
|
|
2525
|
+
readonly filterBy: _angular_core.InputSignal<string | undefined>;
|
|
2526
|
+
readonly filterPlaceholder: _angular_core.InputSignal<string | undefined>;
|
|
2527
|
+
readonly emptyMessage: _angular_core.InputSignal<string>;
|
|
2528
|
+
readonly emptyFilterMessage: _angular_core.InputSignal<string>;
|
|
2529
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2530
|
+
/** A clear (×) button once something is selected. */
|
|
2531
|
+
readonly showClear: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2532
|
+
/** Lets the user type a value of their own. */
|
|
2533
|
+
readonly editable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2534
|
+
/** Height of the list before it scrolls. */
|
|
2535
|
+
readonly scrollHeight: _angular_core.InputSignal<string>;
|
|
2536
|
+
readonly autofocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2537
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
2538
|
+
/** Id of the focusable element, for a `<label for>` outside dw-field. */
|
|
2539
|
+
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
2540
|
+
readonly size: _angular_core.InputSignal<DwControlSize>;
|
|
2541
|
+
/** Fills the width of its container. */
|
|
2542
|
+
readonly fluid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2543
|
+
/** Reads as a fixed value, not a control: no arrow, the value in body text. */
|
|
2544
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2545
|
+
readonly opened: _angular_core.OutputEmitterRef<void>;
|
|
2546
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
2547
|
+
readonly focused: _angular_core.OutputEmitterRef<void>;
|
|
2548
|
+
readonly blurred: _angular_core.OutputEmitterRef<void>;
|
|
2549
|
+
protected readonly optionTemplate: _angular_core.Signal<DwSelectOptionDirective<any> | undefined>;
|
|
2550
|
+
protected readonly valueTemplate: _angular_core.Signal<DwSelectValueDirective<any> | undefined>;
|
|
2551
|
+
protected readonly footerTemplate: _angular_core.Signal<DwSelectFooterDirective | undefined>;
|
|
2552
|
+
protected readonly primeSize: _angular_core.Signal<"small" | "large" | undefined>;
|
|
2553
|
+
private readonly prime;
|
|
2554
|
+
constructor();
|
|
2555
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwSelectComponent<any>, never>;
|
|
2556
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DwSelectComponent<any>, "dw-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterBy": { "alias": "filterBy"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyFilterMessage": { "alias": "emptyFilterMessage"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fluid": { "alias": "fluid"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; "focused": "focused"; "blurred": "blurred"; }, ["optionTemplate", "valueTemplate", "footerTemplate"], never, true, never>;
|
|
2557
|
+
}
|
|
2558
|
+
|
|
2559
|
+
/**
|
|
2560
|
+
* Crystal's multiple select (PrimeNG's MultiSelect underneath, which the app never imports): a checkbox per option,
|
|
2561
|
+
* a search box and "select all" by default, the picks shown as a comma list (or chips) up to `maxSelectedLabels`.
|
|
2562
|
+
* The list is appended to `<body>`. Its value is an array.
|
|
2563
|
+
*
|
|
2564
|
+
* ```html
|
|
2565
|
+
* <dw-multiselect [options]="tags" optionLabel="name" optionValue="id" placeholder="Tags" formControlName="tags" />
|
|
2566
|
+
* <dw-multiselect [options]="columns" [(ngModel)]="shown" display="chip" [filter]="false" />
|
|
2567
|
+
* ```
|
|
2568
|
+
*/
|
|
2569
|
+
declare class DwMultiselectComponent<T = unknown> extends DwFormControl<T[]> {
|
|
2570
|
+
readonly options: _angular_core.InputSignal<unknown[] | undefined>;
|
|
2571
|
+
readonly optionLabel: _angular_core.InputSignal<string | undefined>;
|
|
2572
|
+
readonly optionValue: _angular_core.InputSignal<string | undefined>;
|
|
2573
|
+
readonly optionDisabled: _angular_core.InputSignal<string | undefined>;
|
|
2574
|
+
readonly dataKey: _angular_core.InputSignal<string | undefined>;
|
|
2575
|
+
readonly placeholder: _angular_core.InputSignal<string | undefined>;
|
|
2576
|
+
/** A search box at the top of the list (on by default, as in PrimeNG). */
|
|
2577
|
+
readonly filter: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2578
|
+
readonly filterBy: _angular_core.InputSignal<string | undefined>;
|
|
2579
|
+
readonly filterPlaceholder: _angular_core.InputSignal<string | undefined>;
|
|
2580
|
+
readonly emptyMessage: _angular_core.InputSignal<string>;
|
|
2581
|
+
readonly emptyFilterMessage: _angular_core.InputSignal<string>;
|
|
2582
|
+
/** A "select all" checkbox above the options. */
|
|
2583
|
+
readonly showToggleAll: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2584
|
+
/** How many picks are listed before it says "{0} items selected"; `null` lists them all. */
|
|
2585
|
+
readonly maxSelectedLabels: _angular_core.InputSignal<number | null>;
|
|
2586
|
+
/** The summary past `maxSelectedLabels`; `{0}` is the count. */
|
|
2587
|
+
readonly selectedItemsLabel: _angular_core.InputSignal<string | undefined>;
|
|
2588
|
+
readonly display: _angular_core.InputSignal<"comma" | "chip">;
|
|
2589
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2590
|
+
readonly showClear: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2591
|
+
readonly scrollHeight: _angular_core.InputSignal<string>;
|
|
2592
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
2593
|
+
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
2594
|
+
readonly size: _angular_core.InputSignal<DwControlSize>;
|
|
2595
|
+
readonly fluid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2596
|
+
readonly opened: _angular_core.OutputEmitterRef<void>;
|
|
2597
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
2598
|
+
readonly focused: _angular_core.OutputEmitterRef<void>;
|
|
2599
|
+
readonly blurred: _angular_core.OutputEmitterRef<void>;
|
|
2600
|
+
protected readonly optionTemplate: _angular_core.Signal<DwSelectOptionDirective<any> | undefined>;
|
|
2601
|
+
protected readonly footerTemplate: _angular_core.Signal<DwSelectFooterDirective | undefined>;
|
|
2602
|
+
protected readonly primeSize: _angular_core.Signal<"small" | "large" | undefined>;
|
|
2603
|
+
/** PrimeNG reads a null maxSelectedLabels as 0 (summarise everything), so "list them all" is a ceiling no list reaches. */
|
|
2604
|
+
protected readonly listAll: number;
|
|
2605
|
+
private readonly prime;
|
|
2606
|
+
constructor();
|
|
2607
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwMultiselectComponent<any>, never>;
|
|
2608
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DwMultiselectComponent<any>, "dw-multiselect", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterBy": { "alias": "filterBy"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyFilterMessage": { "alias": "emptyFilterMessage"; "required": false; "isSignal": true; }; "showToggleAll": { "alias": "showToggleAll"; "required": false; "isSignal": true; }; "maxSelectedLabels": { "alias": "maxSelectedLabels"; "required": false; "isSignal": true; }; "selectedItemsLabel": { "alias": "selectedItemsLabel"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fluid": { "alias": "fluid"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; "focused": "focused"; "blurred": "blurred"; }, ["optionTemplate", "footerTemplate"], never, true, never>;
|
|
2609
|
+
}
|
|
2610
|
+
|
|
2611
|
+
/**
|
|
2612
|
+
* Crystal's checkbox (PrimeNG's Checkbox underneath, which the app never imports), on/off: its value is a boolean.
|
|
2613
|
+
* With a `label` (or projected content) the label sits beside it on one line and toggles it too.
|
|
2614
|
+
*
|
|
2615
|
+
* ```html
|
|
2616
|
+
* <dw-checkbox label="Remember me" [(ngModel)]="remember" />
|
|
2617
|
+
* <dw-checkbox formControlName="agree">I accept the <a href="/terms">terms</a></dw-checkbox>
|
|
2618
|
+
* <dw-checkbox ariaLabel="Select row" [indeterminate]="some" [(value)]="all" />
|
|
2619
|
+
* ```
|
|
2620
|
+
*/
|
|
2621
|
+
declare class DwCheckboxComponent extends DwFormControl<boolean> {
|
|
2622
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
2623
|
+
/** For a checkbox with no visible label. */
|
|
2624
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
2625
|
+
/** Id of the native checkbox; generated when omitted. */
|
|
2626
|
+
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
2627
|
+
/** The "some, not all" state of a select-all checkbox. */
|
|
2628
|
+
readonly indeterminate: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2629
|
+
readonly size: _angular_core.InputSignal<DwControlSize>;
|
|
2630
|
+
readonly focused: _angular_core.OutputEmitterRef<void>;
|
|
2631
|
+
readonly blurred: _angular_core.OutputEmitterRef<void>;
|
|
2632
|
+
private readonly generatedId;
|
|
2633
|
+
protected readonly id: _angular_core.Signal<string>;
|
|
2634
|
+
protected readonly primeSize: _angular_core.Signal<"small" | "large" | undefined>;
|
|
2635
|
+
private readonly prime;
|
|
2636
|
+
constructor();
|
|
2637
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwCheckboxComponent, never>;
|
|
2638
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DwCheckboxComponent, "dw-checkbox", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "focused": "focused"; "blurred": "blurred"; }, never, ["*"], true, never>;
|
|
2639
|
+
}
|
|
2640
|
+
|
|
2641
|
+
/**
|
|
2642
|
+
* One radio button of a choice (PrimeNG's RadioButton underneath, which the app never imports). Every radio of the
|
|
2643
|
+
* choice binds the same model and `name`; each has its own `option`, and is checked while the model equals it.
|
|
2644
|
+
*
|
|
2645
|
+
* ```html
|
|
2646
|
+
* <dw-radio name="schedule" option="daily" label="Daily" [(ngModel)]="schedule" />
|
|
2647
|
+
* <dw-radio name="schedule" option="weekly" label="Weekly" [(ngModel)]="schedule" />
|
|
2648
|
+
* ```
|
|
2649
|
+
*/
|
|
2650
|
+
declare class DwRadioComponent<T = unknown> extends DwFormControl<T> {
|
|
2651
|
+
/** The value this radio stands for: the model takes it when the radio is picked. */
|
|
2652
|
+
readonly option: _angular_core.InputSignal<T>;
|
|
2653
|
+
/** Groups the radios of one choice (keyboard arrows move between them). */
|
|
2654
|
+
readonly name: _angular_core.InputSignal<string | undefined>;
|
|
2655
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
2656
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
2657
|
+
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
2658
|
+
readonly size: _angular_core.InputSignal<DwControlSize>;
|
|
2659
|
+
readonly focused: _angular_core.OutputEmitterRef<void>;
|
|
2660
|
+
readonly blurred: _angular_core.OutputEmitterRef<void>;
|
|
2661
|
+
private readonly generatedId;
|
|
2662
|
+
protected readonly id: _angular_core.Signal<string>;
|
|
2663
|
+
protected readonly primeSize: _angular_core.Signal<"small" | "large" | undefined>;
|
|
2664
|
+
private readonly prime;
|
|
2665
|
+
constructor();
|
|
2666
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwRadioComponent<any>, never>;
|
|
2667
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DwRadioComponent<any>, "dw-radio", never, { "option": { "alias": "option"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "focused": "focused"; "blurred": "blurred"; }, never, ["*"], true, never>;
|
|
2668
|
+
}
|
|
2669
|
+
|
|
2670
|
+
type DwSwitchSize = 'xs' | 'sm' | 'md';
|
|
2671
|
+
/**
|
|
2672
|
+
* Crystal's on/off switch (PrimeNG's ToggleSwitch underneath, which the app never imports); its value is a boolean.
|
|
2673
|
+
* `sm` sits beside small buttons in a toolbar, `xs` in dense settings rows.
|
|
2674
|
+
*
|
|
2675
|
+
* ```html
|
|
2676
|
+
* <dw-switch label="Enabled" formControlName="enabled" />
|
|
2677
|
+
* <dw-switch size="xs" ariaLabel="Stream responses" [(ngModel)]="stream" (changed)="save()" />
|
|
2678
|
+
* ```
|
|
2679
|
+
*/
|
|
2680
|
+
declare class DwSwitchComponent extends DwFormControl<boolean> {
|
|
2681
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
2682
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
2683
|
+
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
2684
|
+
readonly size: _angular_core.InputSignal<DwSwitchSize>;
|
|
2685
|
+
/** Shows the state without letting the user change it. */
|
|
2686
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2687
|
+
readonly blurred: _angular_core.OutputEmitterRef<void>;
|
|
2688
|
+
private readonly generatedId;
|
|
2689
|
+
protected readonly id: _angular_core.Signal<string>;
|
|
2690
|
+
private readonly prime;
|
|
2691
|
+
constructor();
|
|
2692
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwSwitchComponent, never>;
|
|
2693
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DwSwitchComponent, "dw-switch", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "blurred": "blurred"; }, never, never, true, never>;
|
|
2694
|
+
}
|
|
2695
|
+
|
|
2696
|
+
/**
|
|
2697
|
+
* Crystal's number input (PrimeNG's InputNumber underneath, which the app never imports): typed digits only, kept
|
|
2698
|
+
* within `min` / `max`, with optional prefix / suffix text, fraction digits and +/− buttons. Its value is a number.
|
|
2699
|
+
*
|
|
2700
|
+
* ```html
|
|
2701
|
+
* <dw-number-input [min]="1" [max]="100" suffix=" %" formControlName="threshold" />
|
|
2702
|
+
* <dw-number-input size="sm" [showButtons]="true" buttonLayout="horizontal" [(ngModel)]="retries" />
|
|
2703
|
+
* ```
|
|
2704
|
+
*/
|
|
2705
|
+
declare class DwNumberInputComponent extends DwFormControl<number> {
|
|
2706
|
+
readonly min: _angular_core.InputSignal<number | null | undefined>;
|
|
2707
|
+
readonly max: _angular_core.InputSignal<number | null | undefined>;
|
|
2708
|
+
/** How far the buttons and arrow keys move it. */
|
|
2709
|
+
readonly step: _angular_core.InputSignal<number>;
|
|
2710
|
+
readonly prefix: _angular_core.InputSignal<string | undefined>;
|
|
2711
|
+
readonly suffix: _angular_core.InputSignal<string | undefined>;
|
|
2712
|
+
readonly minFractionDigits: _angular_core.InputSignal<number | undefined>;
|
|
2713
|
+
readonly maxFractionDigits: _angular_core.InputSignal<number | undefined>;
|
|
2714
|
+
/** Thousands separators (on by default, as in PrimeNG). */
|
|
2715
|
+
readonly useGrouping: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2716
|
+
/** +/− buttons: stacked arrows on the right, or − and + on either side (`horizontal`). */
|
|
2717
|
+
readonly showButtons: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2718
|
+
readonly buttonLayout: _angular_core.InputSignal<"horizontal" | "stacked">;
|
|
2719
|
+
readonly placeholder: _angular_core.InputSignal<string | undefined>;
|
|
2720
|
+
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
2721
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
2722
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2723
|
+
readonly size: _angular_core.InputSignal<DwControlSize>;
|
|
2724
|
+
readonly fluid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2725
|
+
readonly focused: _angular_core.OutputEmitterRef<void>;
|
|
2726
|
+
readonly blurred: _angular_core.OutputEmitterRef<void>;
|
|
2727
|
+
protected readonly primeSize: _angular_core.Signal<"small" | "large" | undefined>;
|
|
2728
|
+
private readonly prime;
|
|
2729
|
+
constructor();
|
|
2730
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwNumberInputComponent, never>;
|
|
2731
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DwNumberInputComponent, "dw-number-input", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "minFractionDigits": { "alias": "minFractionDigits"; "required": false; "isSignal": true; }; "maxFractionDigits": { "alias": "maxFractionDigits"; "required": false; "isSignal": true; }; "useGrouping": { "alias": "useGrouping"; "required": false; "isSignal": true; }; "showButtons": { "alias": "showButtons"; "required": false; "isSignal": true; }; "buttonLayout": { "alias": "buttonLayout"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fluid": { "alias": "fluid"; "required": false; "isSignal": true; }; }, { "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
|
|
2732
|
+
}
|
|
2733
|
+
|
|
2347
2734
|
/**
|
|
2348
2735
|
* Backend timestamp normalization.
|
|
2349
2736
|
*
|
|
@@ -2673,13 +3060,18 @@ declare class DwColumnPickerComponent<T = any> {
|
|
|
2673
3060
|
}
|
|
2674
3061
|
|
|
2675
3062
|
/**
|
|
2676
|
-
* One
|
|
2677
|
-
*
|
|
3063
|
+
* One icon, drawn at 1em so it follows the font size of its context, in `currentColor`:
|
|
3064
|
+
* - `name`: one of crystal's SVG glyphs (icons/svg/glyphs), or an icon the app registered with provideCrystalIcons();
|
|
3065
|
+
* - `pi`: a PrimeIcons glyph, by its name without `pi-` (crystal ships the icon font, so an app never loads it).
|
|
3066
|
+
*
|
|
3067
|
+
* Give it one of the two. It is decorative (hidden from assistive tech) unless it has a `label`.
|
|
2678
3068
|
*
|
|
2679
3069
|
* ```html
|
|
2680
3070
|
* <dw-icon name="hand" />
|
|
2681
3071
|
* <dw-icon name="workflow" size="16px" class="dw-text-accent" />
|
|
2682
3072
|
* <dw-icon name="rocket" /> <!-- registered by the app -->
|
|
3073
|
+
* <dw-icon pi="trash" />
|
|
3074
|
+
* <dw-icon pi="spinner" [spin]="true" label="Loading" />
|
|
2683
3075
|
* ```
|
|
2684
3076
|
*/
|
|
2685
3077
|
declare class DwIconComponent {
|
|
@@ -2687,11 +3079,18 @@ declare class DwIconComponent {
|
|
|
2687
3079
|
private readonly registry;
|
|
2688
3080
|
/** A crystal glyph name, or a name registered with provideCrystalIcons(). */
|
|
2689
3081
|
readonly name: _angular_core.InputSignal<"link" | "reset" | "code" | "search" | "info" | "workflow" | "agent" | "agentBuilder" | "alertError" | "alertWarn" | "attach" | "autoplay" | "back" | "bell" | "bolt" | "book" | "brain" | "bulb" | "chart" | "check" | "chevDown" | "chevLeft" | "chevRight" | "chevUp" | "close" | "cog" | "collapse" | "comment" | "comments" | "copy" | "cpu" | "expand" | "file" | "gear" | "hand" | "home" | "kebab" | "layers" | "notesPad" | "panelCollapse" | "panelExpand" | "paperclip" | "parse" | "pencil" | "play" | "plus" | "reference" | "refresh" | "robot" | "send" | "sidebarCollapse" | "sidebarExpand" | "sparkle" | "tag" | "tagFilled" | "testShield" | "trash" | "users" | "wrench" | (string & {})>;
|
|
3082
|
+
/** A PrimeIcons name without `pi-` (`trash`, `check-circle`…), checked against the installed font. */
|
|
3083
|
+
readonly pi: _angular_core.InputSignal<"" | DwPrimeIcon>;
|
|
2690
3084
|
/** CSS length; defaults to the surrounding font size. */
|
|
2691
3085
|
readonly size: _angular_core.InputSignal<string>;
|
|
3086
|
+
/** Spins the icon (a loader). */
|
|
3087
|
+
readonly spin: _angular_core.InputSignal<boolean>;
|
|
3088
|
+
/** Makes the icon meaningful: read out as an image with this text. */
|
|
3089
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
3090
|
+
readonly hostClass: _angular_core.Signal<string>;
|
|
2692
3091
|
readonly svg: _angular_core.Signal<SafeHtml>;
|
|
2693
3092
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DwIconComponent, never>;
|
|
2694
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DwIconComponent, "dw-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3093
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DwIconComponent, "dw-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "pi": { "alias": "pi"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "spin": { "alias": "spin"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2695
3094
|
}
|
|
2696
3095
|
|
|
2697
3096
|
/** Icon names starting with this (any case) are crystal's: `dw…` and `dwi-…`. */
|
|
@@ -2879,5 +3278,5 @@ declare function installCrystalHostTheme({ fonts }?: CrystalHostThemeOptions): v
|
|
|
2879
3278
|
/** Removes the host theme again (e.g. a host that unloads crystal, or a test). */
|
|
2880
3279
|
declare function removeCrystalHostTheme(): void;
|
|
2881
3280
|
|
|
2882
|
-
export { DW_APP_FIELD_MESSAGES, DW_CLOCK_TICK_MS, DW_CRYSTAL_CONFIG, DW_DIALOG, DW_DRAWER, DW_FIELD_MESSAGES, DW_HOST_THEME_ATTR, DW_ICON_RESOLVERS, DW_IN_PROGRESS_STATUSES, DW_LAYOUT, DW_MENU_PLAIN_GROUP, DW_OVERLAY_ANCHOR_ATTR, DW_OVERLAY_ANCHOR_GAP, DW_POPOVER, DW_RESERVED_ICON_PREFIX, DW_STATUS_TONES, DW_TABLE, DW_TAG_PALETTE, DW_THEME_STORAGE_KEY, DW_TOGGLE_CARD, DwActionBarComponent, DwAvatarComponent, DwBadgeComponent, DwBannerComponent, DwBoxComponent, DwBreadcrumbComponent, DwButtonComponent, DwCardComponent, DwCellDirective, DwCheckToggleComponent, DwChipComponent, DwClockService, DwColumnPickerComponent, DwConfirmDialogComponent, DwConfirmHostComponent, DwConfirmService, DwCopyButtonComponent, DwDialogComponent, DwDialogFooterDirective, DwDialogHeaderDirective, DwDialogTitleSuffixDirective, DwDividerComponent, DwDrawerComponent, DwDrawerFooterDirective, DwDrawerHeaderDirective, DwDrawerSubheaderDirective, DwEmptyStateComponent, DwEntityIconComponent, DwFieldComponent, DwFileDropzoneComponent, DwFileListComponent, DwFormSectionHeaderComponent, DwGridDirective, DwHeaderDirective, DwHstackDirective, DwIconButtonComponent, DwIconComponent, DwIconRegistry, IdBlockComponent as DwIdBlockComponent, DwMenuComponent, DwMenuHeaderDirective, DwMeterComponent, DwNavItemActionsDirective, DwNavItemExtraDirective, DwNavListComponent, DwPageHeaderComponent, DwPopoverComponent, DwPopoverFooterDirective, DwRailTabsComponent, DwResizerComponent, DwRowActionsDirective, DwRowExpansionDirective, DwSearchInputComponent, DwSectionComponent, DwSkeletonComponent, DwSpinnerComponent, DwStackDirective, DwStatusPillComponent, DwTabPanelDirective, DwTableComponent, DwTableEmptyComponent, DwTabsComponent, DwTagColorButtonComponent, DwTagColorPickerComponent, DwTagComponent, DwTagListComponent, DwTileComponent, DwTimestampComponent, DwToastHostComponent, DwToastService, DwToggleCardBodyDirective, DwToggleCardComponent, DwToggleCardControlDirective, DwTooltipIfTruncatedDirective, ThemeService, alignUnderOverlayAnchor, extensionOf, fieldErrorMessage, formatBytes, gapToken, hashTagIndex, humanizeStatus, initialsOf, installCrystalHostTheme, isImageIcon, isTruncated, normalizeStatus, provideCrystal, provideCrystalFieldMessages, provideCrystalIconResolvers, provideCrystalIcons, removeCrystalHostTheme, tagColorVar, tintFor, toneForStatus };
|
|
2883
|
-
export type { CrystalConfig, CrystalHostThemeOptions, CrystalThemeConfig, DwAlign, DwAvatarTint, DwBadgeKind, DwBadgeTone, DwBreadcrumb, DwButtonAppearance, DwButtonSize, DwButtonVariant, DwCanClose, DwCardTint, DwCardVariant, DwColumn, DwConfirmOptions, DwConfirmSeverity, DwConfirmSummaryRow, DwConfirmWarning, DwDialogSize, DwDividerOrientation, DwDividerSpacing, DwDrawerAction, DwDrawerSize, DwEntityKind, DwEntityTint, DwFieldMessage, DwFileItem, DwFileRejectReason, DwFileRejection, DwFileStatus, DwGap, DwIconButtonVariant, DwIconResolvers, DwInitialsStrategy, DwJustify, DwMenuItem, DwNavGroup, DwNavItem, DwNavItemDot, DwNavReorder, DwRailTab, DwResizerDrag, DwRowClickEvent, DwSeverity, DwShowErrorsWhen, DwSkeletonPreset, DwSupportedType, DwTabOption, DwTabValue, DwTagItem, DwTheme, DwToast, DwToastOptions, DwToastPosition, DwToastSeverity, DwTone };
|
|
3281
|
+
export { DW_APP_FIELD_MESSAGES, DW_CLOCK_TICK_MS, DW_CRYSTAL_CONFIG, DW_DIALOG, DW_DRAWER, DW_FIELD_MESSAGES, DW_HOST_THEME_ATTR, DW_ICON_RESOLVERS, DW_INPUT, DW_IN_PROGRESS_STATUSES, DW_LAYOUT, DW_MENU_PLAIN_GROUP, DW_OVERLAY_ANCHOR_ATTR, DW_OVERLAY_ANCHOR_GAP, DW_POPOVER, DW_RESERVED_ICON_PREFIX, DW_STATUS_TONES, DW_TABLE, DW_TAG_PALETTE, DW_THEME_STORAGE_KEY, DW_TOGGLE_CARD, DwActionBarComponent, DwAvatarComponent, DwBadgeComponent, DwBannerComponent, DwBoxComponent, DwBreadcrumbComponent, DwButtonComponent, DwCardComponent, DwCellDirective, DwCheckToggleComponent, DwCheckboxComponent, DwChipComponent, DwClockService, DwColumnPickerComponent, DwConfirmDialogComponent, DwConfirmHostComponent, DwConfirmService, DwCopyButtonComponent, DwDialogComponent, DwDialogFooterDirective, DwDialogHeaderDirective, DwDialogTitleSuffixDirective, DwDividerComponent, DwDrawerComponent, DwDrawerFooterDirective, DwDrawerHeaderDirective, DwDrawerSubheaderDirective, DwEmptyStateComponent, DwEntityIconComponent, DwFieldComponent, DwFileDropzoneComponent, DwFileListComponent, DwFormControl, DwFormSectionHeaderComponent, DwGridDirective, DwHeaderDirective, DwHstackDirective, DwIconButtonComponent, DwIconComponent, DwIconRegistry, IdBlockComponent as DwIdBlockComponent, DwInputDirective, DwMenuComponent, DwMenuHeaderDirective, DwMeterComponent, DwMultiselectComponent, DwNavItemActionsDirective, DwNavItemExtraDirective, DwNavListComponent, DwNumberInputComponent, DwPageHeaderComponent, DwPopoverComponent, DwPopoverFooterDirective, DwRadioComponent, DwRailTabsComponent, DwResizerComponent, DwRowActionsDirective, DwRowExpansionDirective, DwSearchInputComponent, DwSectionComponent, DwSelectComponent, DwSelectFooterDirective, DwSelectOptionDirective, DwSelectValueDirective, DwSkeletonComponent, DwSpinnerComponent, DwStackDirective, DwStatusPillComponent, DwSwitchComponent, DwTabPanelDirective, DwTableComponent, DwTableEmptyComponent, DwTabsComponent, DwTagColorButtonComponent, DwTagColorPickerComponent, DwTagComponent, DwTagListComponent, DwTextareaDirective, DwTileComponent, DwTimestampComponent, DwToastHostComponent, DwToastService, DwToggleCardBodyDirective, DwToggleCardComponent, DwToggleCardControlDirective, DwTooltipDirective, DwTooltipIfTruncatedDirective, ThemeService, alignUnderOverlayAnchor, extensionOf, fieldErrorMessage, formatBytes, gapToken, hashTagIndex, humanizeStatus, initialsOf, installCrystalHostTheme, isImageIcon, isTruncated, normalizeStatus, primeSize, provideCrystal, provideCrystalFieldMessages, provideCrystalIconResolvers, provideCrystalIcons, removeCrystalHostTheme, tagColorVar, tintFor, toneForStatus };
|
|
3282
|
+
export type { CrystalConfig, CrystalHostThemeOptions, CrystalThemeConfig, DwAlign, DwAvatarTint, DwBadgeKind, DwBadgeTone, DwBreadcrumb, DwButtonAppearance, DwButtonSize, DwButtonVariant, DwCanClose, DwCardTint, DwCardVariant, DwColumn, DwConfirmOptions, DwConfirmSeverity, DwConfirmSummaryRow, DwConfirmWarning, DwControlSize, DwDialogSize, DwDividerOrientation, DwDividerSpacing, DwDrawerAction, DwDrawerSize, DwEntityKind, DwEntityTint, DwFieldMessage, DwFileItem, DwFileRejectReason, DwFileRejection, DwFileStatus, DwGap, DwIconButtonVariant, DwIconResolvers, DwInitialsStrategy, DwInputSize, DwJustify, DwMenuItem, DwNavGroup, DwNavItem, DwNavItemDot, DwNavReorder, DwPrimeValueAccessor, DwRailTab, DwResizerDrag, DwRowClickEvent, DwSelectOptionContext, DwSeverity, DwShowErrorsWhen, DwSkeletonPreset, DwSupportedType, DwSwitchSize, DwTabOption, DwTabValue, DwTagItem, DwTheme, DwToast, DwToastOptions, DwToastPosition, DwToastSeverity, DwTone, DwTooltipPosition, DwTooltipVariant };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dataworkz/crystal",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.3",
|
|
4
4
|
"description": "Dataworkz core UI for Angular: dw-* components, icons, toasts, design tokens, theme CSS and bundled fonts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Dataworkz",
|
|
@@ -19,21 +19,18 @@
|
|
|
19
19
|
"@angular/forms": "^20.3.0",
|
|
20
20
|
"@angular/platform-browser": "^20.3.0",
|
|
21
21
|
"@angular/router": "^20.3.0",
|
|
22
|
-
"@primeng/themes": "^21.0.0",
|
|
23
22
|
"ngx-markdown": "^20.0.0",
|
|
24
|
-
"primeicons": "^7.0.0",
|
|
25
|
-
"primeng": "^20.4.0",
|
|
26
23
|
"rxjs": "~7.8.0"
|
|
27
24
|
},
|
|
28
25
|
"peerDependenciesMeta": {
|
|
29
|
-
"@primeng/themes": {
|
|
30
|
-
"optional": true
|
|
31
|
-
},
|
|
32
26
|
"ngx-markdown": {
|
|
33
27
|
"optional": true
|
|
34
28
|
}
|
|
35
29
|
},
|
|
36
30
|
"dependencies": {
|
|
31
|
+
"@primeng/themes": "^21.0.0",
|
|
32
|
+
"primeicons": "^7.0.0",
|
|
33
|
+
"primeng": "~20.4.0",
|
|
37
34
|
"tslib": "^2.8.1"
|
|
38
35
|
},
|
|
39
36
|
"exports": {
|
|
@@ -156,3 +156,8 @@ dw-markdown.dw-prose { display: block; }
|
|
|
156
156
|
/* ── dw-icon: app SVG glyphs, drawn in currentColor at the text size ── */
|
|
157
157
|
.dw-icon { display: inline-flex; flex-shrink: 0; align-items: center; justify-content: center; line-height: 0; vertical-align: -0.125em; }
|
|
158
158
|
.dw-icon svg { display: block; }
|
|
159
|
+
/* A PrimeIcons glyph (dw-icon pi="…") is a font glyph: it needs a line box, which the SVG case sets to 0. */
|
|
160
|
+
.dw-icon.pi { line-height: 1; }
|
|
161
|
+
.dw-icon--spin { animation: dw-icon-spin 1s linear infinite; }
|
|
162
|
+
@keyframes dw-icon-spin { to { transform: rotate(360deg); } }
|
|
163
|
+
@media (prefers-reduced-motion: reduce) { .dw-icon--spin, .dw-icon.pi-spin { animation-duration: 3s; } }
|