@ngstarter-ui/components 21.0.48 → 21.0.49

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.
@@ -3080,6 +3080,7 @@
3080
3080
  "Data view pinning pagination",
3081
3081
  "Data view refresh",
3082
3082
  "Data view resizable columns",
3083
+ "Data view row click selection",
3083
3084
  "Data view server side empty state",
3084
3085
  "Data view server side",
3085
3086
  "Data view sticky columns",
@@ -3142,10 +3143,12 @@
3142
3143
  "DataViewPinAlign",
3143
3144
  "DataViewRowModelType",
3144
3145
  "DataViewRowSelectionEvent",
3146
+ "DataViewRowSelectionEventSource",
3145
3147
  "DataViewState",
3146
3148
  "provideDataView"
3147
3149
  ],
3148
3150
  "inputs": [
3151
+ "allowSingleRowSelectionByClick",
3149
3152
  "autoHeight",
3150
3153
  "bodyScroll",
3151
3154
  "bufferRows",
@@ -4185,13 +4188,13 @@
4185
4188
  "name": "file-type-gallery-example",
4186
4189
  "title": "File type gallery",
4187
4190
  "file": "projects/docs/src/app/components/file-type/_examples/file-type-gallery-example/file-type-gallery-example.html",
4188
- "source": "<div class=\"grid grid-cols-3 gap-4 sm:grid-cols-4 md:grid-cols-5\">\n @for (type of types(); track type) {\n <div class=\"flex flex-col items-center gap-2 rounded-lg border border-subtle p-4\">\n <ngs-file-type [extension]=\"type\" class=\"size-16\"/>\n <div class=\"text-xs uppercase text-secondary\">{{ type }}</div>\n </div>\n }\n</div>"
4191
+ "source": "<div class=\"grid grid-cols-3 gap-4 sm:grid-cols-4 md:grid-cols-5\">\n @for (type of types(); track type) {\n <div class=\"flex flex-col items-center gap-2 rounded-lg border border-border p-4\">\n <ngs-file-type [extension]=\"type\" class=\"size-16\"/>\n <div class=\"text-xs uppercase text-secondary\">{{ type }}</div>\n </div>\n }\n</div>"
4189
4192
  },
4190
4193
  {
4191
4194
  "name": "file-type-mime-example",
4192
4195
  "title": "File type mime",
4193
4196
  "file": "projects/docs/src/app/components/file-type/_examples/file-type-mime-example/file-type-mime-example.html",
4194
- "source": "<div class=\"grid gap-4 sm:grid-cols-2\">\n @for (file of files(); track file.name) {\n <div class=\"flex items-center gap-4 rounded-lg border border-subtle p-4\">\n <ngs-file-type [mimeType]=\"file.mimeType\" [fallback]=\"file.fallback\" class=\"size-12\"/>\n <div class=\"min-w-0\">\n <div class=\"truncate text-sm\">{{ file.name }}</div>\n <div class=\"truncate text-xs text-secondary\">{{ file.mimeType }}</div>\n </div>\n </div>\n }\n</div>"
4197
+ "source": "<div class=\"grid gap-4 sm:grid-cols-2\">\n @for (file of files(); track file.name) {\n <div class=\"flex items-center gap-4 rounded-lg border border-border p-4\">\n <ngs-file-type [mimeType]=\"file.mimeType\" [fallback]=\"file.fallback\" class=\"size-12\"/>\n <div class=\"min-w-0\">\n <div class=\"truncate text-sm\">{{ file.name }}</div>\n <div class=\"truncate text-xs text-secondary\">{{ file.mimeType }}</div>\n </div>\n </div>\n }\n</div>"
4195
4198
  }
4196
4199
  ],
4197
4200
  "previewAsset": "projects/components/file-type/preview.svg",
@@ -4373,7 +4376,7 @@
4373
4376
  "Static blocks are represented as fields with kind: \"static\". The built-in spacer block uses type: \"spacer\", width: 12, and settings.height with one of 8, 16, 24, 32, 48, or 64.",
4374
4377
  "Use width as a 12-column span. Default fields are 12 columns unless a narrower width is set. Nested children in group are sorted and rendered inside that group container.",
4375
4378
  "Option fields use options entries { label: string; value: any; selected?: boolean }. For select, multiple controls array values; clearable enables the clear action. For radio, settings.orientation is \"vertical\" by default and can be \"horizontal\". Hidden fields use type: \"hidden\" and render as native <input type=\"hidden\"> controls included in raw form values. Date and time fields include type: \"date\" for a single date, type: \"time\" for HH:mm time values, and type: \"date-range\" for a DateRange-like value with start/end dates. Upload fields use type: \"upload\", multiple for File[] values, and settings.accept for comma-separated MIME types such as \"*/*\" or \"image/*,application/pdf\". Upload handling can be provided with [uploadCallback] on ngs-form-builder/ngs-form-renderer or globally through provideFormBuilder({ uploadCallback }). The callback receives { field, control, event, files, fileList, multiple } and may return sync/async value stored in the form control.",
4376
- "Use <ngs-form-renderer> from @ngstarter-ui/components/form-builder to render a saved FormBuilderSchema as a runtime form. The Angular class export is FormBuilderRenderer.",
4379
+ "Use <ngs-form-renderer> from @ngstarter-ui/components/form-builder to render a saved FormBuilderSchema as a runtime form. The Angular class export is FormRenderer.",
4377
4380
  "Register custom placeholders through provideFormBuilder({ fields/items/settings }) using formBuilderField(), formBuilderItem(), and formBuilderSettings(). Custom field definitions can provide defaults, renderer, settings, validators, acceptsChildren, group, icon, and kind."
4378
4381
  ],
4379
4382
  "exampleTopics": [
@@ -4444,7 +4447,6 @@
4444
4447
  "FormBuilderItemKind",
4445
4448
  "FormBuilderLayoutItem",
4446
4449
  "FormBuilderOption",
4447
- "FormBuilderRenderer",
4448
4450
  "FormBuilderSchema",
4449
4451
  "FormBuilderSection",
4450
4452
  "FormBuilderSectionSettingsContext",
@@ -4458,12 +4460,14 @@
4458
4460
  "FormBuilderUploadCallback",
4459
4461
  "FormBuilderUploadContext",
4460
4462
  "FormBuilderValidationRule",
4463
+ "FormRenderer",
4461
4464
  "provideFormBuilder",
4462
4465
  "provideFormBuilderField",
4463
4466
  "provideFormBuilderFields",
4464
4467
  "validatorsFromRules"
4465
4468
  ],
4466
4469
  "inputs": [
4470
+ "canvasDropPlaceholderDelay",
4467
4471
  "control",
4468
4472
  "definitions",
4469
4473
  "editableCanvas",
@@ -4486,6 +4490,7 @@
4486
4490
  ],
4487
4491
  "cssTokens": [
4488
4492
  "--ngs-card-padding",
4493
+ "--ngs-color-border",
4489
4494
  "--ngs-color-danger",
4490
4495
  "--ngs-color-on-primary-container",
4491
4496
  "--ngs-color-on-surface",
@@ -4494,7 +4499,6 @@
4494
4499
  "--ngs-color-primary",
4495
4500
  "--ngs-color-primary-container",
4496
4501
  "--ngs-color-surface",
4497
- "--ngs-color-surface-container-low",
4498
4502
  "--ngs-color-surface-container-lowest",
4499
4503
  "--ngs-field-radius",
4500
4504
  "--ngs-font-size-base",
@@ -4502,6 +4506,7 @@
4502
4506
  "--ngs-font-size-sm",
4503
4507
  "--ngs-font-size-xs",
4504
4508
  "--ngs-line-height-base",
4509
+ "--ngs-radius-current",
4505
4510
  "--ngs-radius-lg",
4506
4511
  "--ngs-radius-md",
4507
4512
  "--ngs-radius-sm",
@@ -5720,13 +5725,13 @@
5720
5725
  "Layout with nested layouts example",
5721
5726
  "Layout with nested layouts"
5722
5727
  ],
5723
- "minimalExample": "<div class=\"h-[300px] border border-muted\">\n <ngs-layout>\n <ngs-layout-sidebar>\n <div class=\"p-6 border-r border-e-muted h-full w-[240px]\">Sidebar</div>\n </ngs-layout-sidebar>\n <ngs-layout-content class=\"p-6\">\n Body\n </ngs-layout-content>\n <ngs-layout-aside>\n <div class=\"p-6 border-l border-s-muted h-full w-[200px]\">Aside</div>\n </ngs-layout-aside>\n </ngs-layout>\n</div>",
5728
+ "minimalExample": "<div class=\"h-[300px] border border-muted\">\n <ngs-layout>\n <ngs-layout-sidebar>\n <div class=\"p-6 border-r border-e-muted h-full w-[240px]\">Sidebar</div>\n </ngs-layout-sidebar>\n <ngs-layout-content class=\"p-6\">\n Body\n </ngs-layout-content>\n <ngs-layout-aside>\n <div class=\"p-6 border-s border-s-muted h-full w-[200px]\">Aside</div>\n </ngs-layout-aside>\n </ngs-layout>\n</div>",
5724
5729
  "exampleFiles": [
5725
5730
  {
5726
5731
  "name": "layout-aside-example",
5727
5732
  "title": "Layout aside",
5728
5733
  "file": "projects/docs/src/app/components/layout/_examples/layout-aside-example/layout-aside-example.html",
5729
- "source": "<div class=\"h-[300px] border border-muted\">\n <ngs-layout>\n <ngs-layout-sidebar>\n <div class=\"p-6 border-r border-e-muted h-full w-[240px]\">Sidebar</div>\n </ngs-layout-sidebar>\n <ngs-layout-content class=\"p-6\">\n Body\n </ngs-layout-content>\n <ngs-layout-aside>\n <div class=\"p-6 border-l border-s-muted h-full w-[200px]\">Aside</div>\n </ngs-layout-aside>\n </ngs-layout>\n</div>"
5734
+ "source": "<div class=\"h-[300px] border border-muted\">\n <ngs-layout>\n <ngs-layout-sidebar>\n <div class=\"p-6 border-r border-e-muted h-full w-[240px]\">Sidebar</div>\n </ngs-layout-sidebar>\n <ngs-layout-content class=\"p-6\">\n Body\n </ngs-layout-content>\n <ngs-layout-aside>\n <div class=\"p-6 border-s border-s-muted h-full w-[200px]\">Aside</div>\n </ngs-layout-aside>\n </ngs-layout>\n</div>"
5730
5735
  },
5731
5736
  {
5732
5737
  "name": "layout-footer-example",
@@ -9426,7 +9431,7 @@
9426
9431
  "name": "tab-panel-with-panels-inside-example",
9427
9432
  "title": "Tab panel with panels inside",
9428
9433
  "file": "projects/docs/src/app/navigation/tab-panel/_examples/tab-panel-with-panels-inside-example/tab-panel-with-panels-inside-example.html",
9429
- "source": "<div class=\"flex gap-10\">\n <ngs-tab-panel activeItemId=\"home\" class=\"h-[500px]\">\n <ngs-tab-panel-content>\n <ngs-tab-panel-nav>\n <ngs-tab-panel-item for=\"home\">\n <ngs-icon name=\"fluent:home-24-regular\" ngsTabPanelItemIcon/>\n <ngs-tab-panel-item-text>Home</ngs-tab-panel-item-text>\n </ngs-tab-panel-item>\n <ngs-tab-panel-item for=\"code\">\n <ngs-icon name=\"fluent:code-24-regular\" ngsTabPanelItemIcon/>\n <ngs-tab-panel-item-text>Code</ngs-tab-panel-item-text>\n </ngs-tab-panel-item>\n </ngs-tab-panel-nav>\n </ngs-tab-panel-content>\n <ngs-tab-panel-aside class=\"bg-surface-container-low rounded-xl\">\n <ng-template ngsTabPanelAsideContent=\"home\">\n <ngs-panel>\n <ngs-panel-header class=\"border-b border-b-subtle flex items-center px-4\">Home Header</ngs-panel-header>\n <ngs-panel-content class=\"p-4\">\n <div class=\"h-[1000px]\">Home Content</div>\n </ngs-panel-content>\n <ngs-panel-footer class=\"border-t border-t-subtle flex items-center px-4\">Footer</ngs-panel-footer>\n </ngs-panel>\n </ng-template>\n <ng-template ngsTabPanelAsideContent=\"code\">\n <ngs-panel>\n <ngs-panel-header class=\"border-b border-b-subtle flex items-center px-4\">Code Header</ngs-panel-header>\n <ngs-panel-content class=\"p-4\">\n <div class=\"h-[1000px]\">Code Content</div>\n </ngs-panel-content>\n <ngs-panel-footer class=\"border-t border-t-subtle flex items-center px-4\">Footer</ngs-panel-footer>\n </ngs-panel>\n </ng-\n..."
9434
+ "source": "<div class=\"flex gap-10\">\n <ngs-tab-panel activeItemId=\"home\" class=\"h-[500px]\">\n <ngs-tab-panel-content>\n <ngs-tab-panel-nav>\n <ngs-tab-panel-item for=\"home\">\n <ngs-icon name=\"fluent:home-24-regular\" ngsTabPanelItemIcon/>\n <ngs-tab-panel-item-text>Home</ngs-tab-panel-item-text>\n </ngs-tab-panel-item>\n <ngs-tab-panel-item for=\"code\">\n <ngs-icon name=\"fluent:code-24-regular\" ngsTabPanelItemIcon/>\n <ngs-tab-panel-item-text>Code</ngs-tab-panel-item-text>\n </ngs-tab-panel-item>\n </ngs-tab-panel-nav>\n </ngs-tab-panel-content>\n <ngs-tab-panel-aside class=\"bg-surface-container-low rounded-xl\">\n <ng-template ngsTabPanelAsideContent=\"home\">\n <ngs-panel>\n <ngs-panel-header class=\"border-b border-b-border flex items-center px-4\">Home Header</ngs-panel-header>\n <ngs-panel-content class=\"p-4\">\n <div class=\"h-[1000px]\">Home Content</div>\n </ngs-panel-content>\n <ngs-panel-footer class=\"border-t border-t-border flex items-center px-4\">Footer</ngs-panel-footer>\n </ngs-panel>\n </ng-template>\n <ng-template ngsTabPanelAsideContent=\"code\">\n <ngs-panel>\n <ngs-panel-header class=\"border-b border-b-border flex items-center px-4\">Code Header</ngs-panel-header>\n <ngs-panel-content class=\"p-4\">\n <div class=\"h-[1000px]\">Code Content</div>\n </ngs-panel-content>\n <ngs-panel-footer class=\"border-t border-t-border flex items-center px-4\">Footer</ngs-panel-footer>\n </ngs-panel>\n </ng-\n..."
9430
9435
  }
9431
9436
  ],
9432
9437
  "previewAsset": "projects/components/tab-panel/preview.svg",
@@ -9731,12 +9736,12 @@
9731
9736
  "--ngs-color-border",
9732
9737
  "--ngs-color-on-surface-variant",
9733
9738
  "--ngs-color-primary",
9734
- "--ngs-color-subtle",
9735
9739
  "--ngs-color-surface-container-high",
9736
9740
  "--ngs-tab-content-padding",
9737
9741
  "--ngs-tab-group-animation-duration",
9738
9742
  "--ngs-tab-group-header-border-bottom",
9739
9743
  "--ngs-tab-group-header-border-top",
9744
+ "--ngs-tab-group-header-height",
9740
9745
  "--ngs-tab-group-pagination-control-after-border-left",
9741
9746
  "--ngs-tab-group-pagination-control-before-border-right",
9742
9747
  "--ngs-tab-label-active-border-bottom",
@@ -10300,25 +10305,25 @@
10300
10305
  "Toolbar overflow",
10301
10306
  "Toolbar nav"
10302
10307
  ],
10303
- "minimalExample": "<ngs-toolbar>\n <ngs-toolbar-title>My App</ngs-toolbar-title>\n <ngs-toolbar-spacer/>\n <button>Login</button>\n</ngs-toolbar>",
10308
+ "minimalExample": "<ngs-toolbar>\n <ngs-toolbar-title appearance=\"large\">My App</ngs-toolbar-title>\n <ngs-toolbar-spacer/>\n <button>Login</button>\n</ngs-toolbar>",
10304
10309
  "exampleFiles": [
10305
10310
  {
10306
10311
  "name": "basic-toolbar-example",
10307
10312
  "title": "Basic toolbar",
10308
10313
  "file": "projects/docs/src/app/components/toolbar/_examples/basic-toolbar-example/basic-toolbar-example.html",
10309
- "source": "<ngs-toolbar>\n <ngs-toolbar-title>My App</ngs-toolbar-title>\n <ngs-toolbar-spacer/>\n <button>Login</button>\n</ngs-toolbar>"
10314
+ "source": "<ngs-toolbar>\n <ngs-toolbar-title appearance=\"large\">My App</ngs-toolbar-title>\n <ngs-toolbar-spacer/>\n <button>Login</button>\n</ngs-toolbar>"
10310
10315
  },
10311
10316
  {
10312
10317
  "name": "multi-row-toolbar-example",
10313
10318
  "title": "Multi row toolbar",
10314
10319
  "file": "projects/docs/src/app/components/toolbar/_examples/multi-row-toolbar-example/multi-row-toolbar-example.html",
10315
- "source": "<ngs-toolbar>\n <ngs-toolbar-row>\n <ngs-toolbar-title>Multi-row Toolbar</ngs-toolbar-title>\n <ngs-toolbar-spacer></ngs-toolbar-spacer>\n <ngs-toolbar-item>Menu</ngs-toolbar-item>\n </ngs-toolbar-row>\n <ngs-toolbar-row>\n <ngs-toolbar-item>Second row content</ngs-toolbar-item>\n </ngs-toolbar-row>\n</ngs-toolbar>"
10320
+ "source": "<ngs-toolbar>\n <ngs-toolbar-row>\n <ngs-toolbar-title appearance=\"large\">Multi-row Toolbar</ngs-toolbar-title>\n <ngs-toolbar-spacer></ngs-toolbar-spacer>\n <ngs-toolbar-item>Menu</ngs-toolbar-item>\n </ngs-toolbar-row>\n <ngs-toolbar-row>\n <ngs-toolbar-item>Second row content</ngs-toolbar-item>\n </ngs-toolbar-row>\n</ngs-toolbar>"
10316
10321
  },
10317
10322
  {
10318
10323
  "name": "toolbar-nav-example",
10319
10324
  "title": "Toolbar nav",
10320
10325
  "file": "projects/docs/src/app/components/toolbar/_examples/toolbar-nav-example/toolbar-nav-example.html",
10321
- "source": "<ngs-toolbar>\n <ngs-toolbar-title>Nav Example</ngs-toolbar-title>\n <ngs-toolbar-nav>\n <ngs-toolbar-nav-link [active]=\"true\">Home</ngs-toolbar-nav-link>\n <ngs-toolbar-nav-link>About</ngs-toolbar-nav-link>\n <ngs-toolbar-nav-link>Contact</ngs-toolbar-nav-link>\n </ngs-toolbar-nav>\n <ngs-toolbar-spacer />\n <ngs-toolbar-nav>\n <a ngs-toolbar-nav-link [routerLink]=\"['/dashboard']\">Dashboard</a>\n </ngs-toolbar-nav>\n</ngs-toolbar>"
10326
+ "source": "<ngs-toolbar>\n <ngs-toolbar-title appearance=\"large\">Nav Example</ngs-toolbar-title>\n <ngs-toolbar-nav>\n <ngs-toolbar-nav-link [active]=\"true\">Home</ngs-toolbar-nav-link>\n <ngs-toolbar-nav-link>About</ngs-toolbar-nav-link>\n <ngs-toolbar-nav-link>Contact</ngs-toolbar-nav-link>\n </ngs-toolbar-nav>\n <ngs-toolbar-spacer />\n <ngs-toolbar-nav>\n <a ngs-toolbar-nav-link [routerLink]=\"['/dashboard']\">Dashboard</a>\n </ngs-toolbar-nav>\n</ngs-toolbar>"
10322
10327
  }
10323
10328
  ],
10324
10329
  "previewAsset": "projects/components/toolbar/preview.svg",
@@ -10342,10 +10347,12 @@
10342
10347
  "ToolbarRow",
10343
10348
  "ToolbarSpacer",
10344
10349
  "ToolbarSubtitle",
10345
- "ToolbarTitle"
10350
+ "ToolbarTitle",
10351
+ "ToolbarTitleAppearance"
10346
10352
  ],
10347
10353
  "inputs": [
10348
10354
  "active",
10355
+ "appearance",
10349
10356
  "hidden"
10350
10357
  ],
10351
10358
  "outputs": [],
@@ -10360,6 +10367,7 @@
10360
10367
  "--ngs-nav-item-hover-color",
10361
10368
  "--ngs-nav-item-padding",
10362
10369
  "--ngs-nav-item-radius",
10370
+ "--ngs-toolbar-gap",
10363
10371
  "--ngs-toolbar-nav-link-active-color",
10364
10372
  "--ngs-toolbar-nav-link-color",
10365
10373
  "--ngs-toolbar-nav-link-font-size",
@@ -10369,7 +10377,9 @@
10369
10377
  "--ngs-toolbar-nav-link-radius",
10370
10378
  "--ngs-toolbar-subtitle-color",
10371
10379
  "--ngs-toolbar-subtitle-font-size",
10372
- "--ngs-toolbar-subtitle-weight"
10380
+ "--ngs-toolbar-subtitle-weight",
10381
+ "--ngs-toolbar-title-font-size",
10382
+ "--ngs-toolbar-title-font-weight"
10373
10383
  ],
10374
10384
  "example": null
10375
10385
  },