@c8y/ngx-components 1024.15.1 → 1024.15.13

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.
Files changed (40) hide show
  1. package/fesm2022/c8y-ngx-components-asset-properties.mjs +2 -2
  2. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  3. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-DreEjPAV.mjs → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-CFZO0ZaS.mjs} +3 -3
  4. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-DreEjPAV.mjs.map → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-CFZO0ZaS.mjs.map} +1 -1
  5. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-B2z2tGM7.mjs → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-1mnvr3pp.mjs} +2 -2
  6. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-B2z2tGM7.mjs.map → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-1mnvr3pp.mjs.map} +1 -1
  7. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CwWLXBUt.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Dq4w0MQH.mjs} +4 -4
  8. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CwWLXBUt.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Dq4w0MQH.mjs.map} +1 -1
  9. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +1 -1
  10. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +3 -0
  11. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  12. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +10 -6
  13. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  14. package/fesm2022/c8y-ngx-components-global-context.mjs +4 -4
  15. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  16. package/fesm2022/c8y-ngx-components-icon-selector.mjs +23 -11
  17. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  18. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs +24 -2
  19. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs.map +1 -1
  20. package/fesm2022/c8y-ngx-components.mjs +39 -9
  21. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  22. package/locales/de.po +19 -15
  23. package/locales/es.po +3 -0
  24. package/locales/fr.po +4 -1
  25. package/locales/ja_JP.po +294 -283
  26. package/locales/ko.po +3 -0
  27. package/locales/locales.pot +3 -0
  28. package/locales/nl.po +3 -0
  29. package/locales/pl.po +3 -0
  30. package/locales/pt_BR.po +3 -0
  31. package/locales/zh_CN.po +3 -0
  32. package/locales/zh_TW.po +3 -0
  33. package/package.json +1 -1
  34. package/types/c8y-ngx-components-context-dashboard.d.ts.map +1 -1
  35. package/types/c8y-ngx-components-icon-selector.d.ts +7 -1
  36. package/types/c8y-ngx-components-icon-selector.d.ts.map +1 -1
  37. package/types/c8y-ngx-components-widgets-implementations-asset-table.d.ts +1 -0
  38. package/types/c8y-ngx-components-widgets-implementations-asset-table.d.ts.map +1 -1
  39. package/types/c8y-ngx-components.d.ts +22 -4
  40. package/types/c8y-ngx-components.d.ts.map +1 -1
@@ -613,6 +613,28 @@ class DefaultAssetTableGridColumn extends CustomColumnExtended {
613
613
  this.cellRendererComponent = DefaultCellRendererComponent;
614
614
  this.filterable = true;
615
615
  this.sortable = true;
616
+ // The inherited value entries are optional, so blank ones stay valid on their own. Adding or
617
+ // removing an entry marks the form as dirty, which would enable "Apply" for a filter that has
618
+ // nothing to filter by. Wrapping the inherited fields in a key-less group keeps the model flat
619
+ // while letting a group validator require at least one actual value.
620
+ this.filteringConfig = {
621
+ ...this.filteringConfig,
622
+ fields: [
623
+ {
624
+ fieldGroup: this.filteringConfig.fields,
625
+ validators: {
626
+ atLeastOneFilled: {
627
+ expression: (formGroup) => !!formGroup.get('exists')?.value || this.hasValueEntry(formGroup),
628
+ message: gettext('Specify at least one value.')
629
+ }
630
+ }
631
+ }
632
+ ]
633
+ };
634
+ }
635
+ hasValueEntry(formGroup) {
636
+ const entries = formGroup.get('equals')?.value ?? [];
637
+ return entries.some(entry => (typeof entry === 'string' ? entry.trim() !== '' : entry != null));
616
638
  }
617
639
  }
618
640
 
@@ -1705,11 +1727,11 @@ class AssetTableWidgetViewComponent {
1705
1727
  .subscribe();
1706
1728
  }
1707
1729
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AssetTableWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1708
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: AssetTableWidgetViewComponent, isStandalone: true, selector: "c8y-asset-table-widget-view", inputs: { config: "config" }, host: { properties: { "class.hide-footer": "config?.displayOptions?.footer === false" } }, ngImport: i0, template: "@if (!config.widgetInstanceGlobalTimeContext) {\n <c8y-widget-action>\n <c8y-asset-table-auto-refresh\n class=\"d-contents\"\n [isIntervalRefresh]=\"!!config.refreshInterval\"\n [refreshInterval]=\"config.refreshInterval\"\n [config]=\"config\"\n [isRefreshDisabled]=\"false\"\n [isLoading]=\"isLoading$\"\n (onCountdownEnded)=\"updateSelectedAssets()\"\n ></c8y-asset-table-auto-refresh>\n </c8y-widget-action>\n}\n<c8y-data-grid\n class=\"content-fullpage d-flex d-col\"\n [title]=\"config.title\"\n [displayOptions]=\"config.displayOptions\"\n [configureColumnsEnabled]=\"config.displayOptions.configurableColumnsEnabled ?? true\"\n [columns]=\"columns\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [pagination]=\"pagination\"\n (onPageSizeChange)=\"pagination = $event.pagination\"\n [refresh]=\"refresh\"\n (onSort)=\"onGridSort($event)\"\n>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n</c8y-data-grid>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: i1.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "loading", "columns", "rows", "pagination", "childNodePagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "treeGrid", "hideReload", "childNodesProperty", "parentNodeLabelProperty"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: AssetTableAutoRefreshComponent, selector: "c8y-asset-table-auto-refresh", inputs: ["config", "isIntervalRefresh", "refreshInterval", "isLoading", "isScrolling", "isRefreshDisabled"], outputs: ["onCountdownEnded"] }, { kind: "component", type: WidgetActionWrapperComponent, selector: "c8y-widget-action" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
1730
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: AssetTableWidgetViewComponent, isStandalone: true, selector: "c8y-asset-table-widget-view", inputs: { config: "config" }, host: { properties: { "class.hide-footer": "config?.displayOptions?.footer === false" } }, ngImport: i0, template: "@if (!config.widgetInstanceGlobalTimeContext) {\n <c8y-widget-action>\n <c8y-asset-table-auto-refresh\n class=\"d-contents\"\n [isIntervalRefresh]=\"!!config.refreshInterval\"\n [refreshInterval]=\"config.refreshInterval\"\n [config]=\"config\"\n [isRefreshDisabled]=\"false\"\n [isLoading]=\"isLoading$\"\n (onCountdownEnded)=\"updateSelectedAssets()\"\n ></c8y-asset-table-auto-refresh>\n </c8y-widget-action>\n}\n<c8y-data-grid\n class=\"content-fullpage d-flex d-col\"\n [title]=\"config.title\"\n [displayOptions]=\"config.displayOptions\"\n [configureColumnsEnabled]=\"config.displayOptions?.configurableColumnsEnabled ?? true\"\n [columns]=\"columns\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [pagination]=\"pagination\"\n (onPageSizeChange)=\"pagination = $event.pagination\"\n [refresh]=\"refresh\"\n (onSort)=\"onGridSort($event)\"\n>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n</c8y-data-grid>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: i1.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "loading", "columns", "rows", "pagination", "childNodePagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "treeGrid", "hideReload", "childNodesProperty", "parentNodeLabelProperty"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: AssetTableAutoRefreshComponent, selector: "c8y-asset-table-auto-refresh", inputs: ["config", "isIntervalRefresh", "refreshInterval", "isLoading", "isScrolling", "isRefreshDisabled"], outputs: ["onCountdownEnded"] }, { kind: "component", type: WidgetActionWrapperComponent, selector: "c8y-widget-action" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
1709
1731
  }
1710
1732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AssetTableWidgetViewComponent, decorators: [{
1711
1733
  type: Component,
1712
- args: [{ selector: 'c8y-asset-table-widget-view', standalone: true, imports: [CoreModule, RouterModule, AssetTableAutoRefreshComponent, WidgetActionWrapperComponent], host: { '[class.hide-footer]': 'config?.displayOptions?.footer === false' }, template: "@if (!config.widgetInstanceGlobalTimeContext) {\n <c8y-widget-action>\n <c8y-asset-table-auto-refresh\n class=\"d-contents\"\n [isIntervalRefresh]=\"!!config.refreshInterval\"\n [refreshInterval]=\"config.refreshInterval\"\n [config]=\"config\"\n [isRefreshDisabled]=\"false\"\n [isLoading]=\"isLoading$\"\n (onCountdownEnded)=\"updateSelectedAssets()\"\n ></c8y-asset-table-auto-refresh>\n </c8y-widget-action>\n}\n<c8y-data-grid\n class=\"content-fullpage d-flex d-col\"\n [title]=\"config.title\"\n [displayOptions]=\"config.displayOptions\"\n [configureColumnsEnabled]=\"config.displayOptions.configurableColumnsEnabled ?? true\"\n [columns]=\"columns\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [pagination]=\"pagination\"\n (onPageSizeChange)=\"pagination = $event.pagination\"\n [refresh]=\"refresh\"\n (onSort)=\"onGridSort($event)\"\n>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n</c8y-data-grid>\n" }]
1734
+ args: [{ selector: 'c8y-asset-table-widget-view', standalone: true, imports: [CoreModule, RouterModule, AssetTableAutoRefreshComponent, WidgetActionWrapperComponent], host: { '[class.hide-footer]': 'config?.displayOptions?.footer === false' }, template: "@if (!config.widgetInstanceGlobalTimeContext) {\n <c8y-widget-action>\n <c8y-asset-table-auto-refresh\n class=\"d-contents\"\n [isIntervalRefresh]=\"!!config.refreshInterval\"\n [refreshInterval]=\"config.refreshInterval\"\n [config]=\"config\"\n [isRefreshDisabled]=\"false\"\n [isLoading]=\"isLoading$\"\n (onCountdownEnded)=\"updateSelectedAssets()\"\n ></c8y-asset-table-auto-refresh>\n </c8y-widget-action>\n}\n<c8y-data-grid\n class=\"content-fullpage d-flex d-col\"\n [title]=\"config.title\"\n [displayOptions]=\"config.displayOptions\"\n [configureColumnsEnabled]=\"config.displayOptions?.configurableColumnsEnabled ?? true\"\n [columns]=\"columns\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [pagination]=\"pagination\"\n (onPageSizeChange)=\"pagination = $event.pagination\"\n [refresh]=\"refresh\"\n (onSort)=\"onGridSort($event)\"\n>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n</c8y-data-grid>\n" }]
1713
1735
  }], ctorParameters: () => [], propDecorators: { config: [{
1714
1736
  type: Input
1715
1737
  }] } });