diff --git a/_data/components/currencyInput.yml b/_data/components/currencyInput.yml
index a097fcf3d..ca4057cfe 100644
--- a/_data/components/currencyInput.yml
+++ b/_data/components/currencyInput.yml
@@ -28,6 +28,13 @@ attributes: [{
default : "right",
required : "",
description : "Position of the currency symbol"
+},{
+ name : "currency-symbol-column",
+ type: "string",
+ default: "",
+ since: "15.9.0",
+ description: "Column name containing the currency symbol for each row. Default:$. Supports nested properties using dot notation (e.g., 'currency.symbol')"
+
}]
inheritedOutputs: [{
diff --git a/_data/components/data-view.yml b/_data/components/data-view.yml
new file mode 100644
index 000000000..16be5d074
--- /dev/null
+++ b/_data/components/data-view.yml
@@ -0,0 +1,110 @@
+directive: "o-data-view"
+version: "15.0.0"
+
+apiTitle: "ODataViewComponent"
+inheritedAttributes:
+ [
+ {
+ component: "OServiceBaseComponent",
+ path: "components/service/service-base/api",
+ attributes:
+ [
+ "attr",
+ "columns",
+ "configure-service-args",
+ "delete-method",
+ "entity",
+ "insert-method",
+ "keys",
+ "pageable",
+ "paginated-query-method",
+ "parent-keys",
+ "query-fallback-function",
+ "query-method",
+ "query-on-bind",
+ "query-on-init",
+ "query-rows",
+ "query-with-null-parent-keys",
+ "service",
+ "service-type",
+ "static-data",
+ "store-state",
+ "update-method",
+ "show-buttons-text",
+ "quick-filter-placeholder",
+ "insert-button",
+ "refresh-button",
+ "fixed-header",
+ "controls",
+ "title",
+ "quick-filter",
+ "quick-filter-appearance",
+ "recursive-detail",
+ "recursive-edit",
+ "recursive-insert",
+ "detail-form-route",
+ "pagination-controls",
+ "insert-form-route",
+ "filter-case-sensitive",
+ ],
+ },
+ ]
+
+attributes:
+ [
+ {
+ name: "default-view",
+ type: "'table' | 'grid'",
+ default: "table",
+ required: "",
+ description: "Default view rendered by the component.",
+ },
+ {
+ name: "toggle-button",
+ type: "no | false | yes | true",
+ default: "yes",
+ required: "",
+ description: "Indicates whether or not to show the built-in view toggle. By default it is enabled, which is the standard way `o-data-view` provides view switching.",
+ },
+ {
+ name: "toggle-on-toolbar",
+ type: "no | false | yes | true",
+ default: "no",
+ required: "",
+ description: "Indicates whether or not to render the view toggle inside the toolbar.",
+ },
+ {
+ name: "toggle-floatable",
+ type: "no | false | yes | true",
+ default: "no",
+ required: "",
+ description: "Indicates whether or not the view toggle is rendered as a floating control.",
+ },
+ {
+ name: "table-config",
+ type: "TableConfig",
+ default: "",
+ required: "",
+ description: "Table view configuration object. Values defined here have precedence over the global table configuration injection token and the component defaults.",
+ },
+ {
+ name: "grid-config",
+ type: "GridConfig",
+ default: "",
+ required: "",
+ description: "Grid view configuration object.",
+ },
+ {
+ name: "delete-button",
+ type: "no | false | yes | true",
+ default: "yes",
+ required: "",
+ description: "Indicates whether or not to show a button for deleting data",
+ },
+ { name: "insert-button" },
+ { name: "refresh-button" },
+ ]
+
+extraComponents: "dataViewData"
+
+directives: [{ name: "oDataViewTableColumns" }, { name: "oDataViewGridItem" }]
diff --git a/_data/components/dataViewData/01.tableConfig.yml b/_data/components/dataViewData/01.tableConfig.yml
new file mode 100644
index 000000000..b1145938a
--- /dev/null
+++ b/_data/components/dataViewData/01.tableConfig.yml
@@ -0,0 +1,59 @@
+directive: "table-config"
+title: "Table configuration"
+
+inheritedAttributes:
+ [
+ {
+ component: "OTableComponent",
+ path: "components/data/table/api",
+ attributes:
+ [
+ "visible",
+ "detailButtonInRow",
+ "detailButtonInRowIcon",
+ "editButtonInRow",
+ "editButtonInRowIcon",
+ "editFormRoute",
+ "rowHeight",
+ "autoAdjust",
+ "autoAlignTitles",
+ "collapseGroupedColumns",
+ "columnsVisibilityButton",
+ "defaultVisibleColumns",
+ "deleteButton",
+ "disableSelectionFunction",
+ "detailMode",
+ "editionMode",
+ "enabled",
+ "exportButton",
+ "exportServiceType",
+ "filterColumnActiveByDefault",
+ "groupable",
+ "groupedColumns",
+ "horizontalScroll",
+ "keepSelectedItems",
+ "multipleSort",
+ "nonHidableColumns",
+ "pageSizeOptions",
+ "orderable",
+ "quickFilterFunction",
+ "resizable",
+ "rowClass",
+ "selectAllCheckbox",
+ "selectAllCheckboxVisible",
+ "selectionMode",
+ "showConfigurationOption",
+ "showExpandableIconFunction",
+ "showFilterOption",
+ "showPaginatorFirstLastButtons",
+ "showReportOnDemandOption",
+ "showChartsOnDemandOption",
+ "showResetWidthOption",
+ "sortColumns",
+ "virtualScroll",
+ "visibleColumns",
+ "visibleExportDialogButtons",
+ "selectionOnRowClick",
+ ],
+ },
+ ]
diff --git a/_data/components/dataViewData/02.gridConfig.yml b/_data/components/dataViewData/02.gridConfig.yml
new file mode 100644
index 000000000..6a03279f2
--- /dev/null
+++ b/_data/components/dataViewData/02.gridConfig.yml
@@ -0,0 +1,28 @@
+directive: "grid-config"
+title: "Grid configuration"
+
+inheritedAttributes:
+ [
+ {
+ component: "OGridComponent",
+ path: "components/data/grid/api",
+ attributes:
+ [
+ "enabled",
+ "visible",
+ "cols",
+ "gridItemHeight",
+ "gutterSize",
+ "insertButtonFloatable",
+ "insertButtonPosition",
+ "pageSizeOptions",
+ "orderable",
+ "quickFilterColumns",
+ "showFooter",
+ "showPageSize",
+ "sortColumn",
+ "sortableColumns",
+ "detailMode",
+ ],
+ },
+ ]
diff --git a/_data/components/dataViewData/types/grid-config.yml b/_data/components/dataViewData/types/grid-config.yml
new file mode 100644
index 000000000..ef413f7b2
--- /dev/null
+++ b/_data/components/dataViewData/types/grid-config.yml
@@ -0,0 +1,52 @@
+type: "GridConfig"
+
+description: "Represents the configuration object used by o-data-view to customize the embedded o-grid view.
+All options are equivalent to the o-grid inputs, so you can consult its API to understand the meaning of each property.
+
+type GridConfig = {
+ enabled?: CustomBoolean;
+ visible?: CustomBoolean;
+ cols?: number;
+ gridItemHeight?: string | number;
+ gutterSize?: string;
+ insertButtonFloatable?: CustomBoolean;
+ insertButtonPosition?: 'botton' | 'top';
+ pageSizeOptions?: any[];
+ orderable?: CustomBoolean;
+ quickFilterColumns?: string;
+ showFooter?: CustomBoolean;
+ showPageSize?: CustomBoolean;
+ sortColumn?: string;
+ sortableColumns?: string;
+ detailMode?: 'none' | 'click' | 'dblclick';
+};
+
+"
+
+propertiesColumns: ["Name", "Type", "Description"]
+
+attributes:
+ [
+ { name: "enabled", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "visible", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+
+ { name: "cols", type: "number", optional: true },
+ { name: "gridItemHeight", type: "string | number", optional: true },
+ { name: "gutterSize", type: "string", optional: true },
+
+ { name: "insertButtonFloatable", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "insertButtonPosition", type: "'botton' | 'top'", optional: true },
+
+ { name: "pageSizeOptions", type: "any[]", optional: true },
+ { name: "orderable", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+
+ { name: "quickFilterColumns", type: "string", optional: true },
+
+ { name: "showFooter", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "showPageSize", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+
+ { name: "sortColumn", type: "string", optional: true },
+ { name: "sortableColumns", type: "string", optional: true },
+
+ { name: "detailMode", type: "'none' | 'click' | 'dblclick'", optional: true }
+ ]
\ No newline at end of file
diff --git a/_data/components/dataViewData/types/table-config.yml b/_data/components/dataViewData/types/table-config.yml
new file mode 100644
index 000000000..2f5899102
--- /dev/null
+++ b/_data/components/dataViewData/types/table-config.yml
@@ -0,0 +1,137 @@
+type: "TableConfig"
+
+description: "Represents the configuration object used by o-data-view to customize the embedded o-table view.
+All options are equivalent to the o-table inputs, so you can consult its API to understand the meaning of each property.
+
+type TableConfig = {
+ visible?: CustomBoolean;
+ detailButtonInRow?: CustomBoolean;
+ detailButtonInRowIcon?: string;
+ editButtonInRow?: CustomBoolean;
+ editButtonInRowIcon?: string;
+ editFormRoute?: string;
+ rowHeight?: 'small' | 'medium' | 'large';
+ autoAdjust?: CustomBoolean;
+ autoAlignTitles?: CustomBoolean;
+ collapseGroupedColumns?: CustomBoolean;
+ columnsVisibilityButton?: CustomBoolean;
+ defaultVisibleColumns?: string;
+ disableSelectionFunction?: (item: any) => boolean;
+ detailMode?: 'none' | 'click' | 'dblclick';
+ editionMode?: 'none' | 'click' | 'dblclick';
+ enabled?: CustomBoolean;
+ exportButton?: CustomBoolean;
+ exportServiceType?: string;
+ filterColumnActiveByDefault?: CustomBoolean;
+ groupable?: CustomBoolean;
+ groupedColumns?: string;
+ horizontalScroll?: CustomBoolean;
+ keepSelectedItems?: CustomBoolean;
+ multipleSort?: CustomBoolean;
+ nonHidableColumns?: string;
+ pageSizeOptions?: any[];
+ orderable?: CustomBoolean;
+ quickFilterFunction?: QuickFilterFunction;
+ resizable?: CustomBoolean;
+ rowClass?: (rowData: any, rowIndex: number) => string | string[];
+ selectAllCheckbox?: CustomBoolean;
+ selectAllCheckboxVisible?: CustomBoolean;
+ selectionMode?: 'none' | 'single' | 'multiple';
+ showConfigurationOption?: CustomBoolean;
+ showExpandableIconFunction?: Function;
+ showFilterOption?: CustomBoolean;
+ showPaginatorFirstLastButtons?: CustomBoolean;
+ showReportOnDemandOption?: CustomBoolean;
+ showChartsOnDemandOption?: CustomBoolean;
+ showResetWidthOption?: CustomBoolean;
+ sortColumns?: string;
+ virtualScroll?: CustomBoolean;
+ visibleColumns?: string;
+ visibleExportDialogButtons?: string;
+ selectionOnRowClick?: CustomBoolean;
+};
+
+"
+
+propertiesColumns: ["Name", "Type", "Description"]
+
+attributes:
+ [
+ { name: "visible", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "detailButtonInRow", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "detailButtonInRowIcon", type: "string", optional: true },
+ { name: "editButtonInRow", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "editButtonInRowIcon", type: "string", optional: true },
+ { name: "editFormRoute", type: "string", optional: true },
+ { name: "rowHeight", type: "'small' | 'medium' | 'large'", optional: true },
+ { name: "autoAdjust", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "autoAlignTitles", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "collapseGroupedColumns", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "columnsVisibilityButton", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "defaultVisibleColumns", type: "string", optional: true },
+ {
+ name: "disableSelectionFunction",
+ type: "(item: any) => boolean",
+ optional: true,
+ },
+ {
+ name: "detailMode",
+ type: "'none' | 'click' | 'dblclick'",
+ optional: true,
+ },
+ {
+ name: "editionMode",
+ type: "'none' | 'click' | 'dblclick'",
+ optional: true,
+ },
+ { name: "enabled", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "exportButton", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "exportServiceType", type: "string", optional: true },
+ {
+ name: "filterColumnActiveByDefault",
+ type: "'yes' | 'no' | 'true' | 'false'",
+ optional: true,
+ },
+ { name: "groupable", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "groupedColumns", type: "string", optional: true },
+ { name: "horizontalScroll", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "keepSelectedItems", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "multipleSort", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "nonHidableColumns", type: "string", optional: true },
+ { name: "pageSizeOptions", type: "any[]", optional: true },
+ { name: "orderable", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ {
+ name: "quickFilterFunction",
+ type: "QuickFilterFunction",
+ optional: true,
+ },
+ { name: "resizable", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ {
+ name: "rowClass",
+ type: "(rowData: any, rowIndex: number) => string | string[]",
+ optional: true,
+ },
+ { name: "selectAllCheckbox", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "selectAllCheckboxVisible", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ {
+ name: "selectionMode",
+ type: "'none' | 'single' | 'multiple'",
+ optional: true,
+ },
+ { name: "showConfigurationOption", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "showExpandableIconFunction", type: "Function", optional: true },
+ { name: "showFilterOption", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ {
+ name: "showPaginatorFirstLastButtons",
+ type: "'yes' | 'no' | 'true' | 'false'",
+ optional: true,
+ },
+ { name: "showReportOnDemandOption", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "showChartsOnDemandOption", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "showResetWidthOption", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "sortColumns", type: "string", optional: true },
+ { name: "virtualScroll", type: "'yes' | 'no' | 'true' | 'false'", optional: true },
+ { name: "visibleColumns", type: "string", optional: true },
+ { name: "visibleExportDialogButtons", type: "string", optional: true },
+ { name: "selectionOnRowClick", type: "'yes' | 'no' | 'true' | 'false'", optional: true }
+ ]
diff --git a/_data/components/form.yml b/_data/components/form.yml
index f40a197b1..ea3d8e4f6 100644
--- a/_data/components/form.yml
+++ b/_data/components/form.yml
@@ -185,6 +185,12 @@ attributes: [
type: "(data: any) => OFormValidation",
since: "15.4.2",
description: "Executes the before-save validation callback for insert and update operations."
+},{
+ name: "header-position",
+ type: "top | bottom",
+ default: "top",
+ required: "",
+ description: "Indicates the position of the form toolbar"
},{
name: "configure-service-args"
}]
diff --git a/_data/components/formLayoutManager.yml b/_data/components/formLayoutManager.yml
index ca0435090..78b5f672a 100644
--- a/_data/components/formLayoutManager.yml
+++ b/_data/components/formLayoutManager.yml
@@ -8,7 +8,7 @@ attributes: [{
name: "attr"
},{
name: "mode",
- type: "tab | dialog | split-pane",
+ type: "tab | dialog | split-pane | sidenav",
default: "dialog",
required: "",
description: "Form layout manager mode"
@@ -78,6 +78,18 @@ attributes: [{
default: "",
required: "",
description: "Deprecated. The dialog maximum height"
+},{
+ name: "sidenav-position",
+ type: "start | end",
+ default: "end",
+ required: "",
+ description: "Position of the sidenav when the layout manager is in sidenav mode"
+},{
+ name: "sidenav-width",
+ type: "string",
+ default: "60%",
+ required: "",
+ description: "Width of the sidenav when the layout manager is in sidenav mode"
},{
name: "store-state"
}]
@@ -102,5 +114,8 @@ directives: [
},
{
name: "o-form-layout-tabgroup-options"
+ },
+ {
+ name: "o-form-layout-sidenav-options"
}
]
diff --git a/_data/components/formLayoutManagerComponents/formLayoutSidenavOptions.yml b/_data/components/formLayoutManagerComponents/formLayoutSidenavOptions.yml
new file mode 100644
index 000000000..38eb471b4
--- /dev/null
+++ b/_data/components/formLayoutManagerComponents/formLayoutSidenavOptions.yml
@@ -0,0 +1,28 @@
+directive: "o-form-layout-sidenav-options"
+title: "Sidenav mode"
+
+attributes: [{
+ name: "width",
+ type: "string",
+ default: "",
+ required: "",
+ description: "Width of the sidenav panel"
+},{
+ name: "position",
+ type: "start | end",
+ default: "end",
+ required: "",
+ description: "Position of the sidenav"
+},{
+ name: "label-columns",
+ type: "string",
+ default: "",
+ required: "",
+ description: "Form data columns used in the detail form title. Separated by ';'"
+},{
+ name: "separator",
+ type: "string",
+ default: "' ' (blank space)",
+ required: "",
+ description: "Separator between multiple label columns values"
+}]
diff --git a/_data/components/grid.yml b/_data/components/grid.yml
index faa0eb343..61662ecb3 100644
--- a/_data/components/grid.yml
+++ b/_data/components/grid.yml
@@ -10,7 +10,7 @@ inheritedAttributes: [{
},{
component: "OServiceComponent",
path: "components/service/service/api",
- attributes: ["title", "visible", "enabled", "controls", "detail-mode", "detail-form-route", "recursive-detail", "quick-filter", "quick-filter-placeholder", "quick-filter-appearance", "pagination-controls", "page-size-options"]
+ attributes: ["title", "visible", "enabled", "controls", "detail-mode", "detail-form-route", "recursive-detail", "quick-filter", "quick-filter-placeholder", "quick-filter-appearance", "pagination-controls", "page-size-options","initial-filter-function", "filter-builder-function"]
}]
attributes: [{
diff --git a/_data/components/image-editor.yml b/_data/components/image-editor.yml
new file mode 100644
index 000000000..63e0763d7
--- /dev/null
+++ b/_data/components/image-editor.yml
@@ -0,0 +1,39 @@
+directive: "o-image-editor"
+version: "15.0.0"
+
+apiTitle: "OImageEditorComponent"
+
+attributes:
+ [
+ {
+ name: "image",
+ type: "base64",
+ default: "",
+ required: "",
+ description: "Initial image to load into the editor (e.g., 'data:image/png;base64,...'). If empty, the component shows the upload/drop zone.",
+ },
+ {
+ name: "actions-position",
+ type: "'top' | 'bottom'",
+ default: "top",
+ required: "",
+ description: "Controls where the save and reset buttons are rendered inside the component. Use 'bottom' when the editor is used inside a modal/dialog to keep actions always reachable.",
+ },
+ {
+ name: "save-target",
+ type: "'download' | 'base64'",
+ default: "download",
+ required: "",
+ description: "Defines the behavior of the Save action. 'download' triggers a client-side download of the resulting image; 'base64' returns the resulting image as a base64 string through the component output event.",
+ },
+ ]
+
+outputs: [
+ {
+ name: "onSaveBase64",
+ description:
+ "Event triggered when the user clicks Save and the resulting edited image is generated. Emits the final image as a data URL string (e.g., 'data:image/png;base64,...')."
+ }
+]
+
+extraComponents: "imageEditorData"
diff --git a/_data/components/list.yml b/_data/components/list.yml
index 15764fffe..109e25846 100644
--- a/_data/components/list.yml
+++ b/_data/components/list.yml
@@ -9,7 +9,7 @@ inheritedAttributes: [{
},{
component: "OServiceComponent",
path: "components/service/service/api",
- attributes: ["title", "visible", "enabled", "controls", "detail-mode", "detail-form-route", "recursive-detail", "detail-button-in-row", "detail-button-in-row-icon", "edit-form-route", "recursive-edit", "edit-button-in-row", "edit-button-in-row-icon", "insert-button", "row-height", "insert-form-route", "recursive-insert", "quick-filter", "quick-filter-placeholder", "quick-filter-appearance", "pagination-controls", "page-size-options"]
+ attributes: ["title", "visible", "enabled", "controls", "detail-mode", "detail-form-route", "recursive-detail", "detail-button-in-row", "detail-button-in-row-icon", "edit-form-route", "recursive-edit", "edit-button-in-row", "edit-button-in-row-icon", "insert-button", "row-height", "insert-form-route", "recursive-insert", "quick-filter", "quick-filter-placeholder", "quick-filter-appearance", "pagination-controls", "page-size-options","initial-filter-function", "filter-builder-function"]
}]
inheritedOutputs: [{
diff --git a/_data/components/listData/01.listItem.yml b/_data/components/listData/01.listItem.yml
deleted file mode 100644
index 363360a4f..000000000
--- a/_data/components/listData/01.listItem.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-directive: "o-list-item"
-title: "List item"
diff --git a/_data/components/listData/02.listItemDirective.yml b/_data/components/listData/02.listItemDirective.yml
index a257048b7..0709b90a3 100644
--- a/_data/components/listData/02.listItemDirective.yml
+++ b/_data/components/listData/02.listItemDirective.yml
@@ -1,5 +1,5 @@
directive: "o-list-item"
-title: "List item directive"
+title: "List item"
attributes: [{
name: "o-list-item",
diff --git a/_data/components/otableData/00table.yml b/_data/components/otableData/00table.yml
index bcbadb980..02f6a5aed 100644
--- a/_data/components/otableData/00table.yml
+++ b/_data/components/otableData/00table.yml
@@ -9,7 +9,7 @@ inheritedAttributes: [{
},{
component: "OServiceComponent",
path: "components/service/service/api",
- attributes: ["title", "visible", "enabled", "controls", "detail-mode", "detail-form-route", "recursive-detail", "detail-button-in-row", "detail-button-in-row-icon", "edit-form-route", "recursive-edit", "edit-button-in-row", "edit-button-in-row-icon", "insert-button", "row-height", "insert-form-route", "recursive-insert", "filter-case-sensitive", "quick-filter", "quick-filter-placeholder", "pagination-controls", "page-size-options"]
+ attributes: ["title", "visible", "enabled", "controls", "detail-mode", "detail-form-route", "recursive-detail", "detail-button-in-row", "detail-button-in-row-icon", "edit-form-route", "recursive-edit", "edit-button-in-row", "edit-button-in-row-icon", "insert-button", "row-height", "insert-form-route", "recursive-insert", "filter-case-sensitive", "quick-filter", "quick-filter-placeholder", "pagination-controls", "page-size-options","initial-filter-function", "filter-builder-function"]
}]
attributes: [{
@@ -190,7 +190,7 @@ attributes: [{
},{
name: "groupable",
type: "no | false | yes | true",
- default: "no",
+ default: "yes",
required: "",
description: "Indicates whether or not to group by column"
},{
@@ -225,6 +225,13 @@ attributes: [{
required: "",
default: "yes"
},{
+ name: "show-charts-on-demand-option",
+ type: "yes|no|true|false",
+ description: "Indicates whether or not to show the charts on demand menu option in the header menu",
+ required: "",
+ default: "yes"
+},
+{
name: "show-reset-width-option",
type: "yes|no|true|false",
description: "Indicates whether or not to show the reset width menu option in the header menu",
@@ -249,6 +256,12 @@ attributes: [{
description: "Indicates whether row selection is triggered when clicking on a row",
required: "",
default: "yes"
+},{
+ name: "show-header-tooltip",
+ type: "yes|no|true|false",
+ description: "Indicates whether or not to show tooltip in the column headers",
+ required: "",
+ default: "no"
}]
inheritedOutputs: [{
@@ -573,6 +586,15 @@ methods: [{
type: "method",
description: "Updates the state storage with the current table configuration when enabled."
-}]
+},{
+ name: "addDefaultRowButtons",
+ type: "method",
+ description: "Adds the default per-row action button columns (edit/detail) to the table when enabled by configuration."
+},{
+ name: "addButtonInRow",
+ type: "method",
+ description: "Creates and registers a fixed non-searchable/non-orderable/non-resizable/non-groupable action column and ensures it is included in visibleColumns"
+}
+]
extraComponents: "otableData"
\ No newline at end of file
diff --git a/_data/components/otableData/01tableColumn.yml b/_data/components/otableData/01tableColumn.yml
index 9b22f5426..ebaf62be5 100644
--- a/_data/components/otableData/01tableColumn.yml
+++ b/_data/components/otableData/01tableColumn.yml
@@ -139,4 +139,20 @@ attributes: [{
type: "ErrorData[]",
default: "[]",
description: "Array of custom validators error information (synchronous or asynchronous). Each element must have a 'name' property corresponding to the validator error name and a 'text' property that will be displayed when the component value does not satisfy the validator condition"
+},{
+ name: "header-tooltip",
+ type: "string",
+ since: "v15.9.0",
+ description: "Tooltip text shown when hovering over the column header. If `header-tooltip-icon` is also set, the tooltip is displayed on the icon instead of the header text"
+},{
+ name: "header-tooltip-icon",
+ type: "string",
+ since: "v15.9.0",
+ description: "Material icon name rendered next to the header title. The tooltip defined in `header-tooltip` will be attached to this icon."
+},{
+ name: "header-tooltip-class",
+ type: "string",
+ since: "v15.9.0",
+ default: "o-table-header-icon-tooltip",
+ description: "CSS class applied to the matTooltip in the column header. Useful for custom tooltip styling."
}]
diff --git a/_data/components/otableData/02tableColumnsFiltersColumn.yml b/_data/components/otableData/02tableColumnsFiltersColumn.yml
index 30d25439d..7ca7fd640 100644
--- a/_data/components/otableData/02tableColumnsFiltersColumn.yml
+++ b/_data/components/otableData/02tableColumnsFiltersColumn.yml
@@ -29,5 +29,22 @@ attributes:
{
name: "query-method",
since: "15.2.1"
- }
+ },
+ {
+ name: 'mode',
+ description: 'Indicates the filtering mode for the column. `default` combines both selection and custom modes. `selection` allows filtering by selecting values present in the column. `custom` allows filtering using a form control.',
+ since: '15.9.0',
+ type: 'default | custom | selection',
+ default: 'default'
+ },{
+ name: 'date-format',
+ default: "Column format",
+ required: "15.9.0",
+ description: "Date format. See [MomentJS format](http://momentjs.com/docs/#/displaying/format){:target='_blank'}"
+ },{
+ name: 'date-value-type',
+ since: '15.9.0',
+ description: 'Indicates how the date value is stored and sent in the filter query.',
+ type: 'string | date | iso-8601 | timestamp',
+ default: 'timestamp' }
]
diff --git a/_data/components/otableData/renderers/03tableColumnRendererCurrency.yml b/_data/components/otableData/renderers/03tableColumnRendererCurrency.yml
index 320c37708..ba4cbfbd7 100644
--- a/_data/components/otableData/renderers/03tableColumnRendererCurrency.yml
+++ b/_data/components/otableData/renderers/03tableColumnRendererCurrency.yml
@@ -26,6 +26,11 @@ attributes: [{
name: "min-decimal-digits"
},{
name: "max-decimal-digits"
+},{
+ name: "currency-symbol-column",
+ type: "string",
+ default: "$",
+ description: "Column name containing the currency symbol for each row. Supports nested properties using dot notation (e.g., 'currency.symbol')"
}]
inherit_properties: [{
diff --git a/_data/components/otableData/types/OTableGlobalConfig.yml b/_data/components/otableData/types/OTableGlobalConfig.yml
index 85e3f18e0..b3d73ce1c 100644
--- a/_data/components/otableData/types/OTableGlobalConfig.yml
+++ b/_data/components/otableData/types/OTableGlobalConfig.yml
@@ -1,16 +1,30 @@
type: "OTableGlobalConfig"
description: "Represents the default options for the table that can be configured using the O_TABLE_GLOBAL_CONFIG injection token.
-
-type OTableGlobalConfig = {
- autoAdjust: boolean;
- autoAlignTitles: boolean;
- filterColumnActiveByDefault: boolean;
- editionMode: OTableEditionMode;
- detailMode: OTableDetailMode;
- rowHeight: ORowHeight
-};
-
-"
+
+
+
+
+ type OTableGlobalConfig = {
+ autoAdjust: boolean;
+ autoAlignTitles: boolean;
+ filterColumnActiveByDefault: boolean;
+ editionMode: OTableEditionMode;
+ detailMode: OTableDetailMode;
+ rowHeight: ORowHeight;
+ selectionOnRowClick: boolean;
+ showChartOnDemandOption: boolean;
+ showReportOnDemandOption: boolean;
+ loading: {
+ threshold: number;
+ minVisibleRows: number;
+ };
+ horizontalScroll: boolean;
+ showHeaderTooltip: boolean;
+ };
+
+
+
+
"
attributes: [{
name: "autoAlignTitles",
@@ -18,67 +32,73 @@ attributes: [{
default: "yes",
description: "Indicates whether or not to auto align the table header cells",
required : "",
-},{
+ },{
name: "autoAdjust",
type: "false | true",
default : "yes",
required : "",
description : "Indicates whether or not to auto adjust column width to its content."
-},{
+ },{
name: "filterColumnActiveByDefault",
type: "false | true",
default : "yes",
required : "",
description : "Indicates whether or not to active filter by column."
-},{
+ },{
name: "editionMode",
type: "'none' | 'click' | 'dblclick' | 'doubleclick'",
default : "'none'",
required : "",
description : "Indicates the edition mode."
-},{
+ },{
name: "detailMode",
type: "'none' | 'click' | 'dblclick' | 'doubleclick'",
default : "'click'",
required : "",
description : "Indicates the detail mode."
-},{
+ },{
name: "rowHeight",
type: "'small' | 'medium' | 'large'",
default : "'click'",
required : "",
description : "Indicates the row height"
-},{
+ },{
name: "horizontalScroll" ,
type: "boolean",
default : "false",
required : "",
description : "Indicates whether horizontal scroll is enabled."
-},{
+ },{
name: "selectionOnRowClick",
type: "boolean",
default : "",
required : "",
description : "Indicates whether row selection is triggered when clicking on a row."
-},
-{
- name: "showChartOnDemandOption",
+ },{
+ name: "showChartsOnDemandOption",
type: "boolean",
default : "true",
required : "",
- description : "Indicates whether to show or not the 'Cart on demand' option in the table menu."
-},
-{
+ description : "Indicates whether to show or not the 'Chart on demand' option in the table menu."
+ },{
name: "showReportOnDemandOption",
type: "boolean",
default : "true",
required : "",
description : "Indicates whether to show or not the 'Report on demand' option in the table menu."
-},
-{ name: "loading",
+ },{
+ name: "loading",
type: "{threshold: number, minVisibleRows: number}",
default : "{threshold:300 , minVisibleRows: 300}",
required : "",
description : "Configuration object for loading strategy."
-}]
+},
+{
+ name: "showHeaderTooltip",
+ type: "boolean",
+ default : "false",
+ required : "",
+ description : "Indicates whether to show or not the tooltip on header cells."
+}
+]
diff --git a/_data/components/service.yml b/_data/components/service.yml
index fe6bbaf5e..cbc1b5cbe 100644
--- a/_data/components/service.yml
+++ b/_data/components/service.yml
@@ -62,6 +62,16 @@ attributes: [{
default : "outline",
required : "",
description : "Indicates which of the mat-form-field different except in o-table component[appearance variants](https://v15.material.angular.io/components/form-field/overview#form-field-appearance-variants) will be used. except in the o-table component."
+},{
+ name: "initial-filter-function",
+ type: "() => Expression | { [key: string]: any }",
+ since: "15.8.3",
+ description: "Callback function that returns an initial filter to be applied on every query."
+},{
+ name : "filter-builder-function",
+ type: "() => OFilterBuilderComponent",
+ description: "Callback function that resolves the OFilterBuilderComponent instance",
+ since: "15.9.0"
}]
diff --git a/_data/components/tree.yml b/_data/components/tree.yml
index 667096aad..dbcbef6c2 100644
--- a/_data/components/tree.yml
+++ b/_data/components/tree.yml
@@ -6,7 +6,7 @@ apiTitle: "OTreeComponent"
inheritedAttributes: [{
component: "OServiceBaseComponent",
path: "components/service/service-base/api",
- attributes: ["attr", "static-data", "service", "service-type","query-fallback-function", "query-method", "entity", "keys", "parent-keys", "columns", "query-on-init", "query-on-bind", "query-rows", "insert-method", "update-method", "paginated-query-method", "delete-method", "pageable", "store-state"]
+ attributes: ["attr", "static-data", "service", "service-type","query-fallback-function", "query-method", "entity", "keys", "parent-keys", "columns", "query-on-init", "query-on-bind", "query-rows", "insert-method", "update-method", "paginated-query-method", "delete-method", "pageable", "store-state", "initial-filter-function"]
}]
attributes: [{
diff --git a/_data/menu_descriptions.yml b/_data/menu_descriptions.yml
index edbf9d29e..68fba8017 100644
--- a/_data/menu_descriptions.yml
+++ b/_data/menu_descriptions.yml
@@ -425,4 +425,13 @@ sections:
- url: "/guide/service/ontimize"
title: "Ontimize"
imagepath: "/assets/images/menus/services/ontimize"
-
+ "extra-components":
+ - url: "/extra-components/installation"
+ title: "Installation"
+ description: "How to install the ontimize-web-ngx-extra-components addon"
+ - url: "/extra-components/data-view/overview"
+ title: "Data View"
+ description: "Display the same dataset using two different visualizations"
+ - url: "/extra-components/image-editor/overview"
+ title: "Image Editor"
+ description: "Display and refine the same image through different editing interactions"
diff --git a/_includes/o-component-single-api.md b/_includes/o-component-single-api.md
index dabf5d3d2..01850cee9 100644
--- a/_includes/o-component-single-api.md
+++ b/_includes/o-component-single-api.md
@@ -178,7 +178,15 @@
{% endif %}
-
+ {% if componentData.directives %}
+ Directives
+
+ {% assign sortedDirectives = (componentData.directives | sort: 'name') %}
+ {% for d in sortedDirectives %}
+ - {{ d.name }}
+ {% endfor %}
+
+ {% endif %}
{% if componentData.inheritedOutputs %}
Inherited outputs
@@ -260,3 +268,16 @@
{% endif %}
{% endif %}
+
+{% assign typesFolder = componentData.types %}
+
+{% if componentData.extraComponents %}
+ {% assign extraKey = componentData.extraComponents %}
+ {% assign typesFolder = site.data.components[extraKey].types | default: typesFolder %}
+{% endif %}
+
+{% if typesFolder and typesFolder.size > 0 %}
+
+ {% include functions/o-table/type-api.html folder=typesFolder %}
+
+{% endif %}
\ No newline at end of file
diff --git a/_includes/o-component-single.md b/_includes/o-component-single.md
index 17f704b75..2fbc2594c 100644
--- a/_includes/o-component-single.md
+++ b/_includes/o-component-single.md
@@ -137,12 +137,18 @@
{% endfor %}
{% assign filenameArray = filenameArray | sort %}
{% for filename in filenameArray %}
- {% assign dataFile = site.data.components[extraComp][filename] %}
- {% capture dataFileCapture %}
- {% include o-component-single-api.md component=dataFile extra=true %}
- {% endcapture %}
-
- {{ dataFileCapture | replace: ' ', '' }}
+ {% if filename != 'types' %}
+ {% assign dataFile = site.data.components[extraComp][filename] %}
+
+ {%- comment -%} render only "file-like" entries {%- endcomment -%}
+ {% if dataFile.directive or dataFile.class or dataFile.apiTitle or dataFile.title %}
+ {% capture dataFileCapture %}
+ {% include o-component-single-api.md component=dataFile extra=true %}
+ {% endcapture %}
+
+ {{ dataFileCapture | replace: ' ', '' }}
+ {% endif %}
+ {% endif %}
{% endfor %}
{% endif %}
diff --git a/assets/images/components/tabla/header-tooltip-icon.png b/assets/images/components/tabla/header-tooltip-icon.png
new file mode 100644
index 000000000..debb1e7ce
Binary files /dev/null and b/assets/images/components/tabla/header-tooltip-icon.png differ
diff --git a/assets/images/extra-components/data-view/data-view-example.gif b/assets/images/extra-components/data-view/data-view-example.gif
new file mode 100644
index 000000000..a1e440239
Binary files /dev/null and b/assets/images/extra-components/data-view/data-view-example.gif differ
diff --git a/assets/images/extra-components/image-editor/example-crop.png b/assets/images/extra-components/image-editor/example-crop.png
new file mode 100644
index 000000000..1c11c88d7
Binary files /dev/null and b/assets/images/extra-components/image-editor/example-crop.png differ
diff --git a/assets/images/extra-components/image-editor/example-resize.png b/assets/images/extra-components/image-editor/example-resize.png
new file mode 100644
index 000000000..bc169a5e7
Binary files /dev/null and b/assets/images/extra-components/image-editor/example-resize.png differ
diff --git a/assets/images/extra-components/image-editor/example-upload.png b/assets/images/extra-components/image-editor/example-upload.png
new file mode 100644
index 000000000..c5123d280
Binary files /dev/null and b/assets/images/extra-components/image-editor/example-upload.png differ
diff --git a/assets/images/layouts/form-layout-manager/formLayoutManagerSIDENAV.png b/assets/images/layouts/form-layout-manager/formLayoutManagerSIDENAV.png
new file mode 100644
index 000000000..0de91eeb0
Binary files /dev/null and b/assets/images/layouts/form-layout-manager/formLayoutManagerSIDENAV.png differ
diff --git a/assets/images/menus/data/data-view.svg b/assets/images/menus/data/data-view.svg
new file mode 100644
index 000000000..6d057209c
--- /dev/null
+++ b/assets/images/menus/data/data-view.svg
@@ -0,0 +1,16 @@
+
diff --git a/assets/images/menus/data/data-view_dark.svg b/assets/images/menus/data/data-view_dark.svg
new file mode 100644
index 000000000..5b71cd4bf
--- /dev/null
+++ b/assets/images/menus/data/data-view_dark.svg
@@ -0,0 +1,16 @@
+
diff --git a/assets/images/menus/data/tree.svg b/assets/images/menus/data/tree.svg
index 0033ea51c..56d6bfb7d 100644
--- a/assets/images/menus/data/tree.svg
+++ b/assets/images/menus/data/tree.svg
@@ -1,5 +1,12 @@
-