diff --git a/docs/api/config/columnshape-property.md b/docs/api/config/columnshape-property.md
index f34ef8f..f864244 100644
--- a/docs/api/config/columnshape-property.md
+++ b/docs/api/config/columnshape-property.md
@@ -36,7 +36,7 @@ columnShape?: {
- `autoWidth` - (optional) an object that defines how column width should be calculated automatically. The default configuration uses 20 rows, and the width is calculated based on the header and data, with each field analyzed only once. The object parameters are the following:
- `columns` - (optional) an object where each key is a field id and the boolean value defines whether column width should be calculated automatically
- `auto` - (required) if set to **header**, adjusts the width to the header text; if set to **data**, adjusts the width to the cell with the widest content; if set to **true**, the width is adjusted to the content of both headers and cell.
- If autowidth is set to **false**, the `width` value is set or the value of the `colWidth` from the [`tableShape`](/api/config/tableshape-property) property is applied.
+ If autowidth is set to **false**, the `width` value is set or the value of the `columnWidth` from the [`tableShape`](/api/config/tableshape-property) property is applied.
- `maxRows` - (optional) the number of rows to be processed for the autoWidth calculation
- `firstOnly` - (optional) if set to **true** (default), each field of the same data is analyzed only once to calculate the column width; in case of multiple columns based on the same data (e.g., the *oil* field with the *count* operation and the *oil* field with the *sum* operation), only data in the first one will be analyzed and the others will inherit this width
@@ -78,5 +78,5 @@ const table = new pivot.Pivot("#root", {
~~~
**Related samples:**
-- [Pivot 2.0. Auto width. Sizing columns to content](https://snippet.dhtmlx.com/tn1yw14m)
-- [Pivot 2.0. Set columns width](https://snippet.dhtmlx.com/ceu34kkn)
+- [Pivot 2. Auto width. Sizing columns to content](https://snippet.dhtmlx.com/tn1yw14m)
+- [Pivot 2. Set columns width](https://snippet.dhtmlx.com/ceu34kkn)
diff --git a/docs/api/config/fields-property.md b/docs/api/config/fields-property.md
index 0547c27..6dd054b 100644
--- a/docs/api/config/fields-property.md
+++ b/docs/api/config/fields-property.md
@@ -19,7 +19,8 @@ fields?: [{
id: string,
label?: string,
type: "number" | "date" | "text",
- sort?: "asc" | "desc" | ((a: any, b: any) => number)
+ sort?: "asc" | "desc" | ((a: any, b: any) => number),
+ format?: string | boolean | numberFormatOptions{}
}];
~~~
@@ -33,6 +34,20 @@ Each object in the `fields` array should have the following properties:
- `label` - (optional) the field label to be displayed in GUI
- `type` - (required) data type in a field ( "number", "date", or "string")
- `sort` - (optional) defines the default sorting order for the field. Accepts "asc", "desc", or a custom sorting function
+- `format` - (optional) allows customizing the format of numbers and dates in a field; the format will be also applied during [export](/guides/exporting-data)
+ - `string` - (optional) the format for dates (by default, Pivot uses `dateFormat` from locale)
+ - `boolean` - (optional) if set to **false**, a number is displayed as is, without any formatting
+ - `numberFormatOptions` - (optional) an object with options for formatting numeric fields; by default, numbers will be shown with a maximum of 3 decimal digits and group separation for the integer part is applied.
+ - `minimumIntegerDigits`(number) - (optional) the minimum number of integer (for example, if the value is set to 2, the number 1 will be shown as "01"); the default is 1;
+ - `minimumFractionDigits`(number) - (optional) the minimum number of fraction digits to use (for example, if the value is set to 2, the number 10.5 will be shown as "10.50"); the default is 1;
+ - `maximumFractionDigits`(number) - (optional) the maximum number of fraction digits to use (for example, if the value is set to 2, the number 10.3333... will be shown as "10.33"); the default is 3;
+ For more details about digit options refer to [Digit options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#minimumintegerdigits)
+ - `prefix` (string) - (optional) a string (before a number) for additional symbols like currency
+ - `suffix` (string) - (optional) a string (after a number) for additional symbols like currency
+
+:::info
+If a template is applied via the [`tableShape`](/api/config/tableshape-property) property, it will override the `format` settings.
+:::
### Example
@@ -88,3 +103,10 @@ const table = new pivot.Pivot("#root", {
}
});
~~~
+
+**Related articles**:
+
+- [Number formatting](/guides/localization/#number-formatting)
+- [Applying formats to fields](/guides/working-with-data/#applying-formats-to-fields)
+
+**Related sample:** [Pivot 2. Defining fields formats](https://snippet.dhtmlx.com/77nc4j8v)
\ No newline at end of file
diff --git a/docs/api/config/headershape-property.md b/docs/api/config/headershape-property.md
index d6f7567..97fa1a8 100644
--- a/docs/api/config/headershape-property.md
+++ b/docs/api/config/headershape-property.md
@@ -16,15 +16,28 @@ description: You can learn about the headerShape config in the documentation of
headerShape?: {
collapsible?: boolean,
vertical?: boolean,
- template?: (label: string, field: string, subLabel?: string) => string
+ template?: (label: string, field: string, subLabel?: string) => string,
+ cellStyle?: (
+ field: string,
+ value: any,
+ area: "rows"|"columns"|"values",
+ method?: string,
+ isTotal?: boolean)
+ => string,
};
~~~
### Parameters
-- `collapsible` - (optional) if set to **true**, dimension groups in the table are collapsible; it's set to **false** by default
-- `vertical` - (optional) if set to **true**, changes the text orientation in all headers from horizontal to vertical; the default value is **false**
-- `template` - (optional) defines the format of text in headers; by default, for the fields applied as rows the value of the `label` parameter is displayed and for the fields applied as values the label and method are shown (e.g., *Oil(count)*); the function takes the field id, label and the method or predicate id (if any) and returns the processed value; the default template is as follows:
+- `collapsible` - (optional) if set to **true**, dimension groups in the table are collapsible. It's set to **false** by default
+- `vertical` - (optional) if set to **true**, changes the text orientation in all headers from horizontal to vertical. The default value is **false**
+- `cellStyle` - (optional) a function that applies a custom style to a header cell. The function returns a name of css class and takes the following parameters:
+ - `field` (string) - (required) a string representing the field name the cell corresponds to. For the header of the tree column the field is ""
+ - `value` (string | number | date) - (required) the value of a cell
+ - `area` - (required) a string indicating the area of the table where a cell resides ("rows", "columns" or "values" area)
+ - `method` (string) - (optional) a string that can represent the operation performed for a field from the "values` area (e.g., "sum", "count", etc.) or the name of a predicate set for a field from the "columns" area
+ - `isTotal` - (optional) defines whether a cell belongs to a total column
+- `template` - (optional) defines the format of text in headers. By default, for the fields applied as rows the value of the `label` parameter is displayed and for the fields applied as values the label and method are shown (e.g., *Oil(count)*). The function takes the field id, label and the method or predicate id (if any) and returns the processed value. The default template is as follows:
~~~js
template: (label, id, subLabel) =>
label + (subLabel ? ` (${subLabel})` : "")
@@ -32,34 +45,39 @@ template: (label, id, subLabel) =>
## Example
-~~~jsx {18-21}
-const table = new pivot.Pivot("#root", {
- fields,
- data: dataset,
+In the example below for the **values** fields the header will display the label, the method name (subLabel) and converts the result to lowercase (e.g., *profit (sum)*):
+
+~~~jsx {3-6}
+new pivot.Pivot("#pivot", {
+ data,
+ headerShape: {
+ // a custom template for header text
+ template: (label, id, subLabel) => (label + (subLabel ? ` (${subLabel})` : "")).toLowerCase(),
+ },
config: {
- rows: ["studio", "genre"],
+ rows: ["state", "product_type"],
columns: [],
values: [
{
- field: "title",
- method: "count"
+ field: "profit",
+ method: "sum"
},
{
- field: "score",
- method: "max"
- }
- ]
+ field: "sales",
+ method: "sum"
+ },
+ // other values
+ ],
},
- headerShape: {
- vertical: true,
- template: (label, field, subLabel) => field + (subLabel ? ` (${subLabel})` : "")
- }
+ fields,
});
~~~
**Related samples**:
-- [Pivot 2.0: Vertical orientation of text in grid headers](https://snippet.dhtmlx.com/4qroi8ka)
-- [Pivot 2.0: Collapsible columns](https://snippet.dhtmlx.com/pt2ljmcm)
-- [Pivot 2.0. Headers template](https://snippet.dhtmlx.com/g89r9ryw)
+- [Pivot 2. Vertical orientation of text in grid headers](https://snippet.dhtmlx.com/4qroi8ka)
+- [Pivot 2. Collapsible columns](https://snippet.dhtmlx.com/pt2ljmcm)
+- [Pivot 2. Adding сustom CSS for table and header cells](https://snippet.dhtmlx.com/nfdcs4i2)
-**Related article**: [Configuration](/guides/configuration)
+**Related articles**:
+- [Configuration](/guides/configuration)
+- [Cell style](/guides/stylization/#cell-style)
diff --git a/docs/api/config/limits-property.md b/docs/api/config/limits-property.md
index 0b443ba..6bb997f 100644
--- a/docs/api/config/limits-property.md
+++ b/docs/api/config/limits-property.md
@@ -58,4 +58,4 @@ const table = new pivot.Pivot("#root", {
});
~~~
-**Related sample:** [Pivot 2.0. Data limits](https://snippet.dhtmlx.com/7ryns8oe)
+**Related sample:** [Pivot 2. Data limits](https://snippet.dhtmlx.com/7ryns8oe)
diff --git a/docs/api/config/methods-property.md b/docs/api/config/methods-property.md
index c8385e0..f8b6c93 100644
--- a/docs/api/config/methods-property.md
+++ b/docs/api/config/methods-property.md
@@ -158,6 +158,6 @@ const table = new pivot.Pivot("#root", {
});
~~~
-**Related sample:** [Pivot 2.0: Custom math methods](https://snippet.dhtmlx.com/lv90d8q2)
+**Related sample:** [Pivot 2. Custom maths methods](https://snippet.dhtmlx.com/lv90d8q2)
**Related article**: [Applying maths methods](/guides/working-with-data#applying-maths-methods)
diff --git a/docs/api/config/predicates-property.md b/docs/api/config/predicates-property.md
index 172b02b..e014e43 100644
--- a/docs/api/config/predicates-property.md
+++ b/docs/api/config/predicates-property.md
@@ -112,4 +112,4 @@ const table = new pivot.Pivot("#pivot", {
**Related article**: [Processing data with predicates](/guides/working-with-data#processing-data-with-predicates)
-**Related sample**: [Pivot 2.0: Custom predicates](https://snippet.dhtmlx.com/mhymus00)
+**Related sample**: [Pivot 2. Custom predicates](https://snippet.dhtmlx.com/mhymus00)
diff --git a/docs/api/config/readonly-property.md b/docs/api/config/readonly-property.md
index 9e2b504..f29b4ad 100644
--- a/docs/api/config/readonly-property.md
+++ b/docs/api/config/readonly-property.md
@@ -49,4 +49,4 @@ const table = new pivot.Pivot("#root", {
});
~~~
-**Related sample:** [Pivot 2.0. Readonly mode](https://snippet.dhtmlx.com/0k0mvycv)
\ No newline at end of file
+**Related sample:** [Pivot 2. Readonly mode](https://snippet.dhtmlx.com/0k0mvycv)
\ No newline at end of file
diff --git a/docs/api/config/tableshape-property.md b/docs/api/config/tableshape-property.md
index f8f8770..d07bc93 100644
--- a/docs/api/config/tableshape-property.md
+++ b/docs/api/config/tableshape-property.md
@@ -30,14 +30,22 @@ tableShape?: {
sizes?: {
rowHeight?: number,
headerHeight?: number,
- colWidth?: number,
+ columnWidth?: number,
footerHeight?: number
},
tree?:boolean,
cleanRows?: boolean,
split?: {
- left?: boolean
- }
+ left?: boolean,
+ right?: boolean,
+ },
+ cellStyle?: (
+ field: string,
+ value: any,
+ area: "rows"|"columns"|"values",
+ method?: string,
+ isTotal?: "row"|"column"|"both")
+ => string,
};
~~~
@@ -45,61 +53,79 @@ tableShape?: {
- `templates` - (optional) allows setting templates to a cell; it's an object where:
- each key is a field id
- - the value is a function that returns a string and receives cell value and operation
- All columns based on the specified field will have the related template applied. For example, it allows setting the units of measurement or returning the required number of digits after the decimal point for numeric values, etc. See the example below.
-- `marks` - (optional) allows marking a cell with the required values; it's an object where keys are CSS class names and values are either a function or one of the predefined strings ("max", "min"). The default value is {}. The function should return boolean for the checked value; if **true** is returned, the css class is assigned to the cell. More information with examples see here [Marking cells](/guides/stylization#cell-style).
+ - the value is a function that returns a string and receives cell value and operation. All columns based on the specified field will have the related template applied. For example, it allows setting the units of measurement or returning the required number of digits after the decimal point for numeric values, etc. See the example below.
+- `marks` - (optional) allows marking a cell with the required values. It's an object where keys are CSS class names and values are either a function or one of the predefined strings ("max", "min"). The function should return boolean for the checked value. If **true** is returned, the css class is assigned to the cell. More information with examples see here [Marking cells](/guides/stylization#cell-style).
- `sizes` - (optional) defines the following size parameters of the table:
- - `rowHeight` - (optional) the row height in the Pivot table in pixels; the default value is 34
+ - `rowHeight` - (optional) the row height in the Pivot table in pixels. The default value is 34
- `headerHeight` - (optional) the header height in pixels; the default value is 30
- `footerHeight` - (optional) the footer height in pixels; the default value is 30
- - `colWidth` - (optional) the column width in pixels; the default value is 150
-- `tree` - (optional) if set to **true**, enables the tree mode when data can be presented with expandable rows; the default value is **false**; more information with examples see here [Switching to the tree mode](/guides/configuration/#enabling-the-tree-mode)
-- `totalColumn` - (optional) if **true**, enables generating the total column with total values for rows (**false** is set by default); if the value is set to "sumOnly", the column with the total sum value will be generated (available only for sum operations)
-- `totalRow` - (optional) if **true**, enables generating the footer with total values (**false** is set by default); if the value is set to "sumOnly", the row with the total row value will be generated (available only for sum operations)
+ - `columnWidth` - (optional) the column width in pixels; the default value is 150
+- `cellStyle` - (optional) a function that applies a custom style to a cell. The function has the next parameters:
+ - `field` - (required) a string representing the field name for which the style is applied
+ - `value` - (required) the value of the cell (the actual data for that particular row and column)
+ - `area` - (required) a string indicating the area of the table where a cell resides ("rows", "columns" or "values" area)
+ - `method` - (optional) a string that can represent the operation performed on a cell (e.g., "sum", "count", etc.)
+ - `isTotal` - (optional) defines whether a cell belongs to a total row, total column, or both: "row"|"column"|"both
+ The `cellStyle` function returns a string, which can be used as a CSS class name to apply specific styles to a cell.
+- `tree` - (optional) if set to **true**, enables the tree mode when data can be presented with expandable rows, the default value is **false**. More information with examples see here [Switching to the tree mode](/guides/configuration/#enabling-the-tree-mode)
+- `totalColumn` - (optional) if **true**, enables generating the total column with total values for rows (**false** is set by default). If the value is set to "sumOnly", the column with the total sum value will be generated (available only for sum operations)
+- `totalRow` - (optional) if **true**, enables generating the footer with total values (**false** is set by default). If the value is set to "sumOnly", the row with the total row value will be generated (available only for sum operations)
- `cleanRows` - (optional) if set to **true**, the duplicate values in scale columns are hidden in the table view. The default value is **false**
-- `split` - (optional) if set to **true**, fixes the columns from the left, which makes columns static and visible while scrolling; the number of columns that are split is equal to the number of the rows fields that are defined in the [`config`](/api/config/config-property) property.
+- `split` - (optional) allows freezing columns on the right or left depending on the parameter specified (refer to [Freezing columns](/guides/configuration/#freezing-columns)):
+ - `left` (boolean) - if set to **true** (**false** is set by default), fixes the columns from the left, which makes columns static and visible while scrolling. The number of columns that are split is equal to the number of the rows fields that are defined in the [`config`](/api/config/config-property) property
+ - `right` (boolean) - fixes total columns on the right; default value is **false**
-By default, `tableShape` is undefined, implying that no total row, no total column is present, no templates and marks are applied, the data is shown as a table and not a tree, and left columns are not fixed during scroll.
+By default, `tableShape` is undefined, implying that no total row, no total column is present, no templates and marks are applied, the data is shown as a table and not a tree, and columns are not fixed during scroll.
## Example
-In the example below we apply the template to the *score* values to display 2 digits after the decimal point for these values and we add the "€" sign to the *price* values.
+In the example below we apply the template to the *state* cells to show the combined name of a state (the full name and abbreviation).
-~~~jsx {5-8}
-const templates = { price: (v) => (v ? "€" + v : v),
-score: (v) => (v ? parseFloat(v).toFixed(2) : v) };
+~~~jsx {10-15}
+const states = {
+ "California": "CA",
+ "Colorado": "CO",
+ "Connecticut": "CT",
+ "Florida": "FL",
+// other values,
+};
const table = new pivot.Pivot("#root", {
tableShape: {
- tree: true,
- templates
+ templates: {
+ // set a template to customize values of "state" cells
+ state: v => v+ ` (${states[v]})`,
+ }
},
fields,
data,
config: {
- rows: ["studio", "genre"],
+ rows: ["state", "product_type"],
columns: [],
values: [
{
- field: "title",
- method: "count"
+ field: "profit",
+ method: "sum"
},
{
- field: "score",
- method: "max"
+ field: "sales",
+ method: "sum"
},
- {
- field: "price",
- method: "count"
- }
- ]
- }
+ // other values
+ ],
+ },
+ fields,
});
~~~
**Related samples:**
-- [Pivot 2.0: Tree mode](https://snippet.dhtmlx.com/6ylkoukn)
-- [Pivot 2.0. Frozen (fixed) columns](https://snippet.dhtmlx.com/lahf729o)
-- [Pivot 2.0. Set row, header, footer height and all columns width](https://snippet.dhtmlx.com/x46uyfy9)
-**Related article**: [Configuration](/guides/configuration)
+- [Pivot 2. Tree mode](https://snippet.dhtmlx.com/6ylkoukn)
+- [Pivot 2. Frozen (fixed) columns](https://snippet.dhtmlx.com/lahf729o)
+- [Pivot 2. Set row, header, footer height and all columns width](https://snippet.dhtmlx.com/x46uyfy9)
+- [Pivot 2. Clean rows](https://snippet.dhtmlx.com/rwwhgv2w?tag=pivot)
+- [Pivot 2. Adding сustom CSS for table and header cells](https://snippet.dhtmlx.com/nfdcs4i2)
+
+**Related articles**:
+- [Configuration](/guides/configuration)
+- [Cell style](/guides/stylization/#cell-style)
diff --git a/docs/api/events/render-table-event.md b/docs/api/events/render-table-event.md
index 0f636c8..9137b67 100644
--- a/docs/api/events/render-table-event.md
+++ b/docs/api/events/render-table-event.md
@@ -17,15 +17,21 @@ It allows you to alter the final table configuration on the fly or prevent the r
~~~jsx
"render-table": ({
config: {
- columns?: [],
- data: [],
+ columns?: any[],
+ data?: any[],
footer?: boolean,
- sizes: {},
+ sizes?: {
+ rowHeight?: number,
+ headerHeight?: number,
+ columnWidth?: number,
+ footerHeight?: number
+ },
split?: {
- left?: number
+ left?: number;
+ right?: number;
},
tree?: boolean,
- cellStyle?: (row: any, col: any) => string
+ cellStyle?: (row: any, col: any) => string,
}
}) => boolean | void;
~~~
@@ -35,19 +41,37 @@ It allows you to alter the final table configuration on the fly or prevent the r
The callback of the action takes the `config` object with the following parameters:
- `columns` - (optional) columns array with the next parameters for each object:
- - `id` (number) - (optional) the id of a column
- - `header`- (optional) an object with header settings:
- - `text` (string) - (optional) a header label
- - `rowspan` (number) - (optional) the number of rows a header should span
- - `colspan` (number) - (optional) the number of columns a header should span
+ - `id` (number) - (required) the id of a column
+ - `cell` (any) - (optional) a template with the cell content (please, refer to [Adding templates via the template helper](/guides/configuration/#adding-a-template-via-the-template-helper))
+ - `template` - (optional) the template that is defined via the [`tableShape`](/api/config/tableshape-property) property
+ - `fields` (array) - (optional) defines fields in the hierarchical column in the tree mode. Reflects fields displayed in this column on different levels
+ - `field` - (optional) it's a string which is the id of a field
+ - `method` (string) - (optional) a method, if defined for a field in this column
+ - `methods` (array) - (optional) defines methods applied to fields in the hierarchical column in the tree mode
+ - `format` (string or object) - (required) date format or number format (refer to [Applying formats to fields](/guides/working-with-data/#applying-formats-to-fields))
+ - `isNumeric` (boolean) - (optional) defines whether a column contains numeric values
+ - `isTotal` (boolean) - (optional) defines whether it is a total column
+ - `area` (string) - (optional) an area where the column is rendered: "rows", "columns", "values"
+ - `header`- (optional) an array of header cells with the next properties for each cell:
+ - `text` (string) - (optional) cell text, or formatted value, or processed with a predicate template
+ - `rowspan` (number) - (optional) the number of rows a header should span
+ - `colspan` (number) - (optional) the number of columns a header should span
+ - `value` (any) - (required) raw value, if a cell belongs to "columns" area
+ - `field` (string) - (required) a field, which value is displayed, if a cell belongs to "columns" area
+ - `method` (string) - (required) the field predicate, if a cell belongs to "columns" area and predicate is defined
+ - `format` (string or object) - date format or number format (refer to [Applying formats to fields](/guides/working-with-data/#applying-formats-to-fields))
- `footer` - (optional) a header label or an object with footer settings which are the same as the header settings
- - `field` - (optional) it's a string which is the id of a field
- - `template` - (optional) the template that is defined via the [`tableShape`](/api/config/tableshape-property) property
-- `data` - (optional) an array of objects with data for the table; each object represents a row
+ - `data` - (optional) an array of objects with data for the table; each object represents a row:
+ - `id` (number) - (required) row id
+ - `values` (array) - (required) an array with row data
+ - `open` (boolean)- (optional) branch state
+ - `$level` (boolean)- (optional) branch index
- `footer` - (optional) if it's set to **true**, the table footer is displayed at the bottom of the table; it's set to **false** and invisible by default
-- `sizes` - (optional) an object with table sizes settings, namely, colWidth, footerHeight, headerHeight, rowHeight
-- `split` - (optional) the number of columns to be fixed from the left during the scrolling process
-- `tree` - (optional) the boolean value with the tree mode setting (**true** if the tree mode is enabled)
+- `sizes` - (optional) an object with table sizes settings, namely, columnWidth, footerHeight, headerHeight, rowHeight
+- `split` (object) - (optional) an object with the next properties:
+ - `left` (number) - the number of fixed columns from the left
+ - `right` (number) - the number of fixed columns from the right
+- `tree` - (optional) defines if the tree mode is enabled (**true** if enabled)
- `cellStyle` - (optional) an object where each key is the field id and the value is a function that returns a string. All columns based on the specified field will have the related template applied.
:::info
@@ -149,4 +173,6 @@ function closeAll() {
See also how to configure the split feature using the `render-table` event: [Freezing columns](/guides/configuration#freezing-columns).
-**Related sample:** [Pivot 2.0. Custom frozen (fixed) columns (your number)](https://snippet.dhtmlx.com/53erlmgp)
+**Related article:** [pivot.template helper](/api/helpers/template)
+
+**Related sample:** [Pivot 2. Custom frozen (fixed) columns (your number)](https://snippet.dhtmlx.com/53erlmgp)
diff --git a/docs/api/helpers/template.md b/docs/api/helpers/template.md
new file mode 100644
index 0000000..dedf461
--- /dev/null
+++ b/docs/api/helpers/template.md
@@ -0,0 +1,89 @@
+---
+sidebar_label: template
+title: template
+description: You can learn about the Pivot template helper in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
+---
+
+### Description
+
+The `template` function allows applying a template to the table header and body cells.
+
+### Usage
+
+For body cells:
+
+~~~jsx
+pivot.template({value, method, row, column}) => string;
+~~~
+
+For header cells:
+
+~~~jsx
+pivot.template({value, field, method, cell, column}) => string;
+~~~
+
+### Parameters
+
+For body cells the function takes the next parameters:
+
+- `value` (any) - (required) raw cell value
+- `method` (string) - (required) a method or predicate used for a column
+- `row` - (required) an object with row data:
+ - `id` (number) - (required) row id
+ - `values` (array) - (required) an array with row data
+ - `open` (boolean)- (optional) branch state
+ - `$level` (boolean)- (optional) branch index
+- `column` - (required) an object with column data:
+ - `id` (number) - (required) the id of a column
+ - `cell` (any) - (optional) a template with the cell content (please, refer to [Adding templates via the template helper](/guides/configuration/#adding-a-template-via-the-template-helper))
+ - `template` - (optional) the template that is defined via the [`tableShape`](/api/config/tableshape-property) property
+ - `fields` (array) - (optional) defines fields in the hierarchical column in the tree mode. Reflects fields displayed in this column on different levels
+ - `field` - (optional) it's a string which is the id of a field
+ - `method` (string) - (optional) a method, if defined for a field in this column
+ - `methods` (array) - (optional) defines methods applied to fields in the hierarchical column in the tree mode
+ - `format` (string or object) - (required) date format or number format (please refer to [Applying formats to fields](/guides/working-with-data/#applying-formats-to-fields))
+ - `isNumeric` (boolean) - (optional) defines whether a column contains numeric values
+ - `isTotal` (boolean) - (optional) defines whether it is a total column
+ - `area` (string) - (optional) an area where the column is rendered: "rows", "columns", "values"
+ - `header`- (optional) an array of header cells with the next properties for each cell:
+ - `text` (string) - (optional) cell text, or formatted value, or processed with a predicate template
+ - `rowspan` (number) - (optional) the number of rows a header should span
+ - `colspan` (number) - (optional) the number of columns a header should span
+ - `value` (any) - (required) raw value, if a cell belongs to "columns" area
+ - `field` (string) - (required) a field, which value is displayed, if a cell belongs to "columns" area
+ - `method` (string) - (required) the field predicate, if a cell belongs to "columns" area and predicate is defined
+ - `format` (string or object) - date format or number format (please refer to [Applying formats to fields](/guides/working-with-data/#applying-formats-to-fields))
+
+For header cells the function parameters are the following:
+
+- `value` (any) - (required) a raw cell value
+- `method` (string) - (optional) a predicate used for a column
+- `field` (string) - (optional) a field which value is displayed in a cell
+- `cell` - (required) an object with cell data:
+ - `text` (string) - (optional) cell text, or formatted value, or processed with a predicate template
+ - `rowspan` (number) - (optional) the number of rows a header should span
+ - `colspan` (number) - (optional) the number of columns a header should span
+ - `value` (any) - (required) raw value, if a cell belongs to "columns" area
+ - `field` (string) - (required) a field, which value is displayed, if a cell belongs to "columns" area
+ - `method` (string) - (required) a field predicate, if a cell belongs to "columns" area and predicate is defined
+ - `format` (string or object) - (required) date format or number format (please refer to [Applying formats to fields](/guides/working-with-data/#applying-formats-to-fields))
+- `column` - (required) an object with column data (the same as for the body cell)
+
+### Example
+
+The snippet below shows how to define templates via the `pivot.template` helper. The helper is applied right before the table renders, which is done by intercepting the [render-table](/api/events/render-table-event) event using the [api.intercept()](/api/internal/intercept-method) method.
+
+The snippet demonstrates how you can add icons to:
+
+- body cells based on their field (id, user_score) (the template adds the flag and star icons)
+- the header labels based on the field name (for example, if the field is "id", it adds the globe icon next to the header value)
+- the column headers based on the value (colored arrow indicators are added)
+
+
+
+
+**Related articles:**
+
+- [`render-table`](/api/events/render-table-event)
+- [Applying templates to cells](/guides/configuration/#applying-templates-to-cells)
+- [Applying templates to headers](/guides/configuration/#applying-templates-to-headers)
\ No newline at end of file
diff --git a/docs/api/methods/gettable-method.md b/docs/api/methods/gettable-method.md
index db6cd9e..96e861e 100644
--- a/docs/api/methods/gettable-method.md
+++ b/docs/api/methods/gettable-method.md
@@ -10,7 +10,7 @@ description: You can learn about the getTable method in the documentation of the
@short: Gets access to the underlying Table widget instance in the Pivot table
-This method is used when there's a need to access the underlying Table widget instance in Pivot. It provides direct access to the Table functionality allowing for operations such as data serialization and exporting in various formats. The Table API has its own `api.exec()` method that can call the `open-row`, `close-row`, `export` events. Usage examples with the events you can see here: [Expanding/collapsing all rows](/guides/configuration#expandingcollapsing-all-rows), [Exporting data](/guides/loading-exporting-data#exporting-data)
+This method is used when there's a need to access the underlying Table widget instance in Pivot. It provides direct access to the Table functionality allowing for operations such as data serialization and exporting in various formats. The Table API has its own `api.exec()` method that can call the [`open-row`](/api/table/open-row), [`close-row`](/api/table/close-row), [`export`](/api/table/export), and [`filter-rows`](/api/table/filter-rows) events.
### Usage
@@ -66,3 +66,10 @@ exportButton.textContent = "Export";
document.body.appendChild(exportButton);
~~~
+
+**Related articles:**:
+
+- [`close-row`](/api/table/close-row)
+- [`export`](/api/table/export)
+- [`filter-rows`](/api/table/filter-rows)
+- [`open-row`](/api/table/open-row)
\ No newline at end of file
diff --git a/docs/api/overview/events-overview.md b/docs/api/overview/events-overview.md
index 79a57b2..877c376 100644
--- a/docs/api/overview/events-overview.md
+++ b/docs/api/overview/events-overview.md
@@ -1,7 +1,7 @@
---
sidebar_label: Events overview
title: Events Overview
-description: You can have an Events overview of JavaScript Pivot in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
+description: You can have Events overview of JavaScript Pivot in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
---
# Events overview
diff --git a/docs/api/overview/internal-state-overview.md b/docs/api/overview/internal-state-overview.md
index 368f35f..1521954 100644
--- a/docs/api/overview/internal-state-overview.md
+++ b/docs/api/overview/internal-state-overview.md
@@ -1,7 +1,7 @@
---
sidebar_label: State methods
title: State Methods
-description: You can have an Internal State methods overview of JavaScript Pivot in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
+description: You can have Internal State methods overview of JavaScript Pivot in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
---
# State methods overview
diff --git a/docs/api/overview/methods-overview.md b/docs/api/overview/methods-overview.md
index a47c772..f4081e4 100644
--- a/docs/api/overview/methods-overview.md
+++ b/docs/api/overview/methods-overview.md
@@ -1,7 +1,7 @@
---
sidebar_label: Methods overview
title: Methods Overview
-description: You can have a Methods overview of JavaScript Pivot in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
+description: You can have Methods overview of JavaScript Pivot in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
---
# Methods overview
diff --git a/docs/api/overview/properties-overview.md b/docs/api/overview/properties-overview.md
index e56bffa..6560d51 100644
--- a/docs/api/overview/properties-overview.md
+++ b/docs/api/overview/properties-overview.md
@@ -1,12 +1,12 @@
---
sidebar_label: Properties overview
title: Properties Overview
-description: You can have a Properties overview of JavaScript Pivot in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
+description: You can have Properties overview of JavaScript Pivot in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
---
# Properties overview
-To configure the **Pivot**, refer to the [Configuration](../../../guides/configuration) section.
+To configure **Pivot**, refer to the [Configuration](../../../guides/configuration) section.
| Name | Description |
| -------------------------------------------------- | ------------------------------------------------ |
@@ -17,6 +17,7 @@ To configure the **Pivot**, refer to the [Configuration](../../../guides/configu
| [](../config/fields-property.md) | @getshort(../config/fields-property.md) |
| [](../config/headershape-property.md) | @getshort(../config/headershape-property.md) |
| [](../config/limits-property.md) | @getshort(../config/limits-property.md) |
+| [](../config/locale-property.md) | @getshort(../config/locale-property.md) |
| [](../config/methods-property.md) | @getshort(../config/methods-property.md) |
| [](../config/predicates-property.md) | @getshort(../config/predicates-property.md) |
| [](../config/readonly-property.md) | @getshort(../config/readonly-property.md) |
diff --git a/docs/api/overview/table-events-overview.md b/docs/api/overview/table-events-overview.md
new file mode 100644
index 0000000..89495be
--- /dev/null
+++ b/docs/api/overview/table-events-overview.md
@@ -0,0 +1,16 @@
+---
+sidebar_label: Table events overview
+title: Table Events Overview
+description: You can have Table events overview of JavaScript Pivot in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
+---
+
+# Table events overview
+
+The [`getTable`](/api/methods/gettable-method) method of the Pivot API allows getting access to the underlying Table widget instance inside Pivot and execute the next Table events:
+
+| Name | Description |
+| ------------------------------------------------- | ----------------------------------------------- |
+| [](../table/close-row.md) | @getshort(../table/close-row.md) |
+| [](../table/export.md) | @getshort(../table/export.md) |
+| [](../table/filter-rows.md) | @getshort(../table/filter-rows.md) |
+| [](../table/open-row.md) | @getshort(../table/open-row.md) |
diff --git a/docs/api/table/close-row.md b/docs/api/table/close-row.md
new file mode 100644
index 0000000..a6e41f8
--- /dev/null
+++ b/docs/api/table/close-row.md
@@ -0,0 +1,44 @@
+---
+sidebar_label: close-row
+title: close-row
+description: You can learn about the close-row event in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot
+---
+
+# close-row
+
+### Description
+
+@short: Fires when closing (collapsing) a row
+
+To trigger the Table event, it's necessary to get access to the underlying Table widget instance inside Pivot via the [`getTable`](/api/methods/gettable-method) method. The tree mode should be enabled via the [`tableShape`](/api/config/tableshape-property) property.
+
+### Usage
+
+```jsx {}
+"close-row": ({
+ id: string | number,
+ nested?: boolean
+}) => boolean|void;
+```
+
+### Parameters
+
+The callback of the action takes an object with the following parameters:
+
+- `id` - (required) the id of a row that has nested rows
+- `nested` - (optional) if set to **true**, all nested items will be collapsed
+
+:::note
+If `id` is set to 0 and `nested` to **true**, all rows in the table will be collapsed
+:::
+
+### Example
+
+The snippet below demonstrates how to open/close all rows with a button click:
+
+
+
+**Related articles**:
+- [`getTable`](/api/methods/gettable-method)
+- [Expanding/collapsing all rows](/guides/configuration/#expandingcollapsing-all-rows)
+
diff --git a/docs/api/table/export.md b/docs/api/table/export.md
new file mode 100644
index 0000000..014bf2a
--- /dev/null
+++ b/docs/api/table/export.md
@@ -0,0 +1,110 @@
+---
+sidebar_label: export
+title: export
+description: You can learn about the export event in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot
+---
+
+# export
+
+### Description
+
+@short: Fires when exporting data
+
+To trigger the Table event, it's necessary to get access to the Table instance inside Pivot via the [`getTable`](/api/methods/gettable-method) method.
+
+### Usage
+
+```jsx
+"export": ({
+ options: {
+ format: "csv" | "xlsx",
+ fileName?: string,
+ header?: boolean,
+ footer?: boolean,
+ download?: boolean,
+
+ /* XLSX settings*/
+ styles?: boolean | {
+ header?: {
+ fontWeight?: "bold",
+ color?: string,
+ background?: string,
+ align?: "left"|"right"|"center",
+ borderBottom?: string,
+ borderRight?: string,
+ }
+ lastHeaderCell?: { /* same as header */ },
+ cell?: { /* same as header */ };
+ firstFooterCell?: { /* same as header */ },
+ footer?: {/* same as header */},
+ }
+ cellTemplate?: (value: any, row: any, column: object )
+ => string | null,
+ headerCellTemplate?: (text: string, cell: object, column: object, type: "header"| "footer")
+ => string | null,
+ cellStyle?: (value: any, row: any, column: object)
+ => { format: string; align: "left"|"right"|"center" } | null,
+ headerCellStyle?: (text: string, cell: object, column: object, type: "header"| "footer")
+ => { format: string; align: "left"|"right"|"center" } | null,
+ sheetName?: string,
+
+ /* CSV settings */
+ rows: string,
+ cols: string,
+ },
+ result?: any,
+}) => boolean|void;
+```
+
+The `export` action of the Table widget has the next parameters that you can configure to your needs:
+
+- `options` - an object with the export options; options differ depending on the format type
+- `result` - the result of the exported Excel or CSV data (usually Blob or file depending on the `download` option)
+
+ **Common options for both formats ("csv" "xlsx" ):**
+
+ - `format` (string) - (optional) the export format that can be "csv" or "xlsx"
+ - `fileName` (string) - (optional) a file name ("data" by default)
+ - `header` (boolean) - (optional) defines if a header should be exported (**true** by default)
+ - `footer` (boolean) - (optional) defines if a footer should be exported (**true** by default)
+ - `download` (boolean) - (optional) defines whether to download a file. **true** is set by default. If set to **false**, the file will not be downloaded, Excel or CSV data (Blob) will be available as `ev.result`
+
+ **Options specific for "xlsx" format:**
+
+ - `sheetName` (string) - a name of Excel sheet ( "data" by default)
+ - `styles` (boolean or object) - if set to **false**, grid will be exported without any styling; can be configured using a hash of style properties:
+ - `header` - an object with the next settings for header cells:
+ - `fontWeight` (string) - (optional) can be set to "bold" or if not set, the font will be normal
+ - `color` (string) - (optional) text color in header
+ - `background` (string) - (optional) background color for header
+ - `align` - (optional) text alignment that can be "left"|"right"|"center". If not set, alignment set in Excel will be applied
+ - `borderBottom` (string) - (optional) the style of the bottom border
+ - `borderRight` (string) - (optional) the style of the right border (e.g., *borderRight: "0.5px solid #dfdfdf"* )
+ - `lastHeaderCell` - style properties for the last row of header cells. Properties are the same as for *header*
+ - `cell` - style properties for body cells.Properties are the same as for *header*
+ - `firstFooterCell` - style properties for the first row of footer cells. Properties are the same as for *header*
+ - `footer` - style properties for footer cells. Properties are the same as for *header*
+ - `cellTemplate` - a function to customize the export value of each cell. It takes the value, row, and column objects as parameters and returns the custom value to be exported
+ - `headerCellTemplate` - a function that customizes the value of a header or footer cell during export. It is called with the text, header cell object, column object, and cell type ("header" or "footer"). This allows users to modify the exported header/footer values
+ - `cellStyle` - a function that allows customizing the style and format of individual cells during export. It takes the value, row, and column objects as parameters and should return an object with style properties (e.g., alignment or format)
+ - `headerCellStyle` - similar to cellStyle, but specifically for the header and footer cells. This function takes the text, header cell object, column object, and type ("header" or "footer") and returns style properties
+ :::note
+ By default, for the "xlsx" format, date and number fields are exported as raw values with default format or the format defined via the [`fields`](/api/config/fields-property) property. But if a template is defined for a field (see the [`tableShape`](/api/config/tableshape-property) property), it exports the rendered value defined by that template. In case both the template and `format` are set, the template settings will override the format ones.
+ :::
+
+ **Options specific for "csv" format:**
+
+ - `rows` (string) - (optional) rows delimiter, "\n" by default
+ - `cols` (string) - (optional) columns delimiter, "\t" by default
+
+## Example
+
+In this snippet you can see how to export data:
+
+
+
+**Related articles**:
+- [`getTable`](/api/methods/gettable-method)
+- [Exporting data](/guides/exporting-data)
+- [Applying formats to fields](/guides/working-with-data/#applying-formats-to-fields)
+
diff --git a/docs/api/table/filter-rows.md b/docs/api/table/filter-rows.md
new file mode 100644
index 0000000..1bf5513
--- /dev/null
+++ b/docs/api/table/filter-rows.md
@@ -0,0 +1,37 @@
+---
+sidebar_label: filter-rows
+title: filter-rows
+description: You can learn about the filter-rows event in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot
+---
+
+# filter-rows
+
+### Description
+
+@short: Fires when filtering data
+
+To trigger the Table event, it's necessary to get access to the Table instance inside Pivot via the [`getTable`](/api/methods/gettable-method) method.
+
+### Usage
+
+```jsx {}
+"filter-rows": ({
+ filter?: any
+}) => boolean|void;
+```
+
+### Parameters
+
+The callback of the action takes an object with the following parameters:
+
+- `filter` - (optional) any filtering function that takes each item from the data array and returns **true** or **false** for each item
+
+### Example
+
+The snippet below demonstrates how to filter aggregated (visible) data in the table body by input value:
+
+
+
+
+**Related article**: [`getTable`](/api/methods/gettable-method)
+
diff --git a/docs/api/table/open-row.md b/docs/api/table/open-row.md
new file mode 100644
index 0000000..7e93ebf
--- /dev/null
+++ b/docs/api/table/open-row.md
@@ -0,0 +1,43 @@
+---
+sidebar_label: open-row
+title: open-row
+description: You can learn about the close-row event in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot
+---
+
+# open-row
+
+### Description
+
+@short: Fires when opening (expanding) a row
+
+To trigger the Table event, it's necessary to get access to the Table instance inside Pivot via the [`getTable`](/api/methods/gettable-method) method. The tree mode should be enabled via the [`tableShape`](/api/config/tableshape-property) property.
+
+### Usage
+
+```jsx {}
+"open-row": ({
+ id: string | number,
+ nested?: boolean
+}) => boolean|void;
+```
+
+### Parameters
+
+The callback of the action takes an object with the following parameters:
+
+- `id` - (required) the id of a row that have nested rows
+- `nested` - (optional) if set to **true**, all nested items will be expanded
+
+:::note
+If `id` is set to 0 and `nested` to **true**, all rows in the table will be expanded
+:::
+
+### Example
+
+The snippet below demonstrates how to open/close all rows with a button click:
+
+
+
+**Related articles**:
+- [`getTable`](/api/methods/gettable-method)
+- [Expanding/collapsing all rows](/guides/configuration/#expandingcollapsing-all-rows)
\ No newline at end of file
diff --git a/docs/guides/configuration.md b/docs/guides/configuration.md
index 021951a..70a66c2 100644
--- a/docs/guides/configuration.md
+++ b/docs/guides/configuration.md
@@ -40,11 +40,11 @@ const sizes = {
rowHeight: 34,
headerHeight: 30,
footerHeight: 30,
- colWidth: 150
+ columnWidth: 150
};
~~~
-### Example
+Example:
~~~jsx {4-11}
const table = new pivot.Pivot("#root", {
@@ -55,7 +55,7 @@ const table = new pivot.Pivot("#root", {
rowHeight: 44,
headerHeight: 60,
footerHeight: 30,
- colWidth: 170
+ columnWidth: 170
}
},
config: {
@@ -91,7 +91,7 @@ All parameters of `autoWidth` are optional and for detailed description of each
If `firstOnly` is set to **true** (default), each field of the same data is analyzed only once to calculate the column width. In case of multiple columns based on the same data (e.g., the *oil* field with the *count* operation and the *oil* field with the *sum* operation), only data in the first one will be analyzed and the others will inherit this width.
-### Example
+Example:
~~~jsx {18-30}
const table = new pivot.Pivot("#root", {
@@ -129,79 +129,168 @@ const table = new pivot.Pivot("#root", {
## Applying templates to cells
+### Adding templates via tableShape
+
To set a template to cells, use the `templates` parameter of the [`tableShape`](/api/config/tableshape-property) property. It's an object where each key is a field id and the value is a function that returns a string. All columns based on the specified field will have the related template applied.
-In the example below we apply the template to the *score* values to display 2 digits after the decimal point for these values and we add the "€" sign to the *price* values.
+In the example below we apply the template to the *state* cells to show the combined name of a state (the full name and abbreviation).
-~~~jsx {1-4,8}
-const templates = {
- price: (v) => (v ? "€" + v : v),
- score: (v) => (v ? parseFloat(v).toFixed(2) : v)
+~~~jsx {10-15}
+const states = {
+ "California": "CA",
+ "Colorado": "CO",
+ "Connecticut": "CT",
+ "Florida": "FL",
+// other values,
};
const table = new pivot.Pivot("#root", {
tableShape: {
- templates
+ templates: {
+ // set a template to customize values of "state" cells
+ state: v => v+ ` (${states[v]})`,
+ }
},
fields,
data,
config: {
- rows: ["studio", "genre"],
+ rows: ["state", "product_type"],
columns: [],
values: [
{
- field: "title",
- method: "count"
+ field: "profit",
+ method: "sum"
},
{
- field: "score",
- method: "max"
+ field: "sales",
+ method: "sum"
},
- {
- field: "price",
- method: "count"
- }
- ]
+ // other values
+ ],
+ },
+ fields,
+});
+~~~
+
+### Adding a template via the template helper
+
+You can insert HTML content to table cells via the [`pivot.template`](/api/helpers/template) helper by defining a template as a `cell` property of the `column` object. You need to apply the template right before the table renders, which is done by intercepting the [render-table](/api/events/render-table-event) event using the [api.intercept()](/api/internal/intercept-method) method.
+
+The example shows how you can add icons (star or flag icon) to body cells based on their field (id, user_score):
+
+~~~js
+function cellTemplate(value, method, row, column) {
+ const field = column.fields ? column.fields[row.$level] : column.field;
+
+ if (field === "id") {
+ return idTemplate(value);
}
+
+ if (field === "user_score") {
+ return scoreTemplate(value);
+ }
+
+ return value;
+}
+
+function idTemplate(value) {
+ const name = value?.toString().split("-")[0];
+ return ` ${value}`;
+}
+
+function scoreTemplate(value) {
+ return ` ${value}`;
+}
+
+widget.api.intercept("render-table", ({ config: tableConfig }) => {
+ tableConfig.columns = tableConfig.columns.map((c) => {
+ if (c.area === "rows") {
+ // Apply a template to column cells from the "rows" area
+ c.cell = pivot.template(({ value, method, row, column }) => cellTemplate(value, method, row, column));
+ }
+ return c;
+ });
});
~~~
## Applying templates to headers
+### Adding templates via headerShape
+
To define the format of text in headers, apply the `template` parameter of the [`headerShape`](/api/config/headershape-property) property. The parameter is the function that:
+
- takes the field id, label and sublabel (the name of a method if any is applied)
- returns the processed value
A default template is as follows: *template: (label, id, subLabel) => label + (subLabel ? `(${subLabel})` : "")*. By default, for the fields applied as values the label and method are shown (e.g., *Oil(count)*).
If no other template is applied to columns, the value of the `label` parameter is displayed. If any [`predicates`](/api/config/predicates-property) template is applied, it will override the template of the `headerShape` property.
-### Example
+In the example below for the **values** fields the header will display the label, the method name (subLabel) and converts the result to lowercase (e.g., *profit (sum)*):
-In the example below for the **values** fields the header will display the method name (subLabel) and the label:
-
-~~~jsx {19-22}
-const table = new pivot.Pivot("#root", {
- fields,
+~~~jsx {3-6}
+new pivot.Pivot("#pivot", {
data,
+ headerShape: {
+ // a custom template for header text
+ template: (label, id, subLabel) => (label + (subLabel ? ` (${subLabel})` : "")).toLowerCase(),
+ },
config: {
- rows: ["studio", "genre"],
+ rows: ["state", "product_type"],
columns: [],
values: [
{
- field: "title",
- method: "count"
+ field: "profit",
+ method: "sum"
},
{
- field: "score",
- method: "max"
- }
- ]
+ field: "sales",
+ method: "sum"
+ },
+ // other values
+ ],
},
+ fields,
+});
+~~~
- headerShape: {
- vertical: true,
- template: (label, id, subLabel) => id + (subLabel ? ` (${subLabel})` : ""),
- }
+### Adding templates via the template helper
+
+You can insert HTML content to header cells via the [`pivot.template`](/api/helpers/template) helper by defining a template as a `cell` property of the header cell object. You need to apply the template right before the table renders, which is done by intercepting the [render-table](/api/events/render-table-event) event using the [api.intercept()](/api/internal/intercept-method) method.
+
+The example below shows how to add icons to:
+
+- the header labels based on the field name (for example, if the field is "id", it adds the globe icon next to the header value)
+- the column headers based on the value (colored arrow indicators are added)
+
+~~~jsx
+function rowsHeaderTemplate(value, field) {
+ let icon = "";
+ if (field === "id") icon = "";
+ if (field === "user_score") icon = "";
+ return `${value} ${icon}`;
+}
+
+function statusTemplate(value) {
+ let icon = "";
+ if (value === "Up") icon = "";
+ if (value === "Down") icon = "";
+ return `${value} ${icon}`;
+}
+
+widget.api.intercept("render-table", ({ config: tableConfig }) => {
+ tableConfig.columns = tableConfig.columns.map((c) => {
+ if (c.area === "rows") {
+ // Apply a template to the first header row of the columns from the "rows" area
+ c.header[0].cell = pivot.template(({ value, field }) => rowsHeaderTemplate(value, field));
+ } else {
+ // For header cells that display values from the "status" field
+ const headerCell = c.header.find((h) => h.field === "status");
+ if (headerCell) {
+ headerCell.cell = pivot.template(({ value }) => statusTemplate(value));
+ }
+ }
+ return c;
+ });
});
~~~
@@ -235,13 +324,13 @@ const table = new pivot.Pivot("#root", {
## Freezing columns
-The widget allows freezing columns on the left side, which makes the leftmost columns static and visible while scrolling. To freeze columns, apply the **split** parameter of the [`tableShape`](/api/config/tableshape-property) property by setting the value of the `left` property to **true**.
+The widget allows freezing columns on the left or right side, which makes the columns static and visible while scrolling. To freeze columns, apply the **split** parameter of the [`tableShape`](/api/config/tableshape-property) property by setting the value of the `left` or `right` parameter to **true**. More details with examples, see below.
-:::info
-The number of columns that are split is equal to the number of the rows fields that are defined in the [`config`](/api/config/config-property) property. 2 columns are fixed by default. In the **tree** mode only one columns gets frozen regardless of the number of the rows fields that are defined.
-:::
+### Freezing columns on the left
+
+The number of columns that are split is equal to the number of the rows fields that are defined in the [`config`](/api/config/config-property) property. In the **tree** mode only one column gets frozen regardless of the number of the rows fields that are defined. In the sample below, 1 column is fixed initially on the left, which is equal to the number of fields defined for the "rows" area.
-~~~jsx {18-22}
+~~~jsx {19}
const table = new pivot.Pivot("#root", {
fields,
data,
@@ -260,21 +349,14 @@ const table = new pivot.Pivot("#root", {
]
},
tableShape: {
- split: {
- left: true //freezes all fields from rows on the left side
- }
+ split: {left: true }
}
});
~~~
-You can also apply a custom split using the [`render-table`](/api/events/render-table-event) event.
+You can also apply a custom split using the [`render-table`](/api/events/render-table-event) event. It's not recommended to split columns with colspans.
-:::info
-For the custom split, the number of columns that are split depends on the number of the rows and values fields that are defined in the [`config`](/api/config/config-property) property.
-It's not recommended to split columns with colspans.
-:::
-
-In the example below we split all rows fields (two rows are defined in the config) and the first two columns (the first two values fields).
+In the sample below all columns from the "rows" area and first 4 columns from the "values" area are fixed initially. The number of columns that are split depends on the number of the rows and values fields that are defined via the [`config`](/api/config/config-property) property.
~~~jsx {19-25}
const table = new pivot.Pivot("#root", {
@@ -304,6 +386,65 @@ table.api.on("render-table", (tableConfig) => {
});
~~~
+### Freezing columns on the right
+
+The `right` parameter of the [`tableShape`](/api/config/tableshape-property) property allows fixing total columns on the right.
+
+~~~jsx {4-7}
+const widget = new pivot.Pivot("#pivot", {
+ fields,
+ data: dataset,
+ tableShape:{
+ split: {right: true},
+ totalColumn: true,
+ },
+ config: {
+ rows: ["hobbies"],
+ columns: ["relationship_status"],
+ values: [
+ {
+ field: "age",
+ method: "min"
+ },
+ {
+ field: "age",
+ method: "max"
+ }
+ ]
+ }
+});
+~~~
+
+To fix custom columns on the right, you need to apply the table API via the [`render-table`](/api/events/render-table-event) event. It's not recommended to split columns with colspans. In the sample below, 2 columns on the right are fixed initially.
+
+~~~jsx {20-25}
+const widget = new pivot.Pivot("#pivot", {
+ fields,
+ data: dataset,
+ config: {
+ rows: ["hobbies"],
+ columns: ["relationship_status"],
+ values: [
+ {
+ field: "age",
+ method: "min"
+ },
+ {
+ field: "age",
+ method: "max"
+ }
+ ]
+ }
+});
+
+widget.api.on("render-table", ({ config: tableConfig }) => {
+ const { config } = widget.api.getState();
+ tableConfig.split = {
+ right: config.values.length,
+ }
+})
+~~~
+
## Sorting in columns
The sorting functionality is enabled by default. A user can click the column's header to sort data. To disable/enable sorting, apply the `sort` parameter of the [`columnShape`](/api/config/columnshape-property) property. In the example below we disable sorting.
@@ -376,7 +517,7 @@ const table = new pivot.Pivot("#root", {
## Expanding/collapsing all rows
-To expand/collapse all rows, the **tree** mode should be enabled via the [`tableShape`](/api/config/tableshape-property) property and you should use the [`render-table`](/api/events/render-table-event) event that allows changing configuration settings, namely, making data rows expand or collapse (via the `row.open` parameter of the [`config`](/api/config/config-property) object).
+To expand/collapse all rows, the **tree** mode should be enabled via the [`tableShape`](/api/config/tableshape-property) property and you should use the [`close-row`](/api/table/close-row) and [`open-row`](/api/table/open-row) events of the Table widget getting access to its API via the [`getTable`](/api/methods/gettable-method) method.
The example below shows how to expand/collapse all data rows with the button click in the table tree mode.
@@ -531,7 +672,7 @@ table.api.exec("show-config-panel", {
You can block toggling the visibility of the Configuration panel on the button click via the [`api.intercept()`](/api/internal/intercept-method) method (by listening to the [`show-config-panel`](/api/events/show-config-panel-event) event and returning *false*).
-### Example
+Example:
~~~jsx {20-22}
const table = new pivot.Pivot("#root", {
@@ -569,12 +710,11 @@ In the Configuration panel it's possible to perform the next operations with fie
- [update-field](/api/events/update-value-event)
- [move-field](/api/events/move-field-event)
-## Example
-
-In this snippet you can see how to apply templates to the Pivot cells:
+**Related samples:**
+- [Pivot 2. Adding text templates for table and header cells](https://snippet.dhtmlx.com/n9ylp6b2)
+- [Pivot 2. Custom frozen (fixed) columns (your number)](https://snippet.dhtmlx.com/53erlmgp)
+- [Pivot 2. Expand and collapse all rows](https://snippet.dhtmlx.com/i4mi6ejn)
+- [Pivot 2. Frozen(fixed) columns on the left and right](https://snippet.dhtmlx.com/lahf729o)
+- [Pivot 2. Sorting](https://snippet.dhtmlx.com/j7vtief6)
-
-**Related samples:**
-- [Pivot 2.0: Sorting](https://snippet.dhtmlx.com/j7vtief6)
-- [Pivot 2.0. Expand and collapse all rows](https://snippet.dhtmlx.com/i4mi6ejn)
diff --git a/docs/guides/exporting-data.md b/docs/guides/exporting-data.md
new file mode 100644
index 0000000..effed77
--- /dev/null
+++ b/docs/guides/exporting-data.md
@@ -0,0 +1,39 @@
+---
+sidebar_label: Exporting data
+title: Exporting data
+description: You can explore how to export data in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
+---
+
+# Exporting data
+
+To export the table data to the XLSX or CSV format, it's necessary to get access to the underlying Table widget instance inside Pivot and apply its API to export data. To do this, you should use the [`getTable`](/api/methods/gettable-method) method and execute the [`export`](/api/table/export) event.
+
+In the example below we get access to the Table instance and trigger the `export`action using the [`api.exec()`](/api/internal/exec-method) method.
+
+~~~jsx
+const widget = new pivot.Pivot("#root", { /*setting*/});
+widget.api.getTable().exec("export", {
+ options: {
+ format: "csv",
+ cols: ";"
+ }
+});
+widget.api.getTable().exec("export", {
+ options: {
+ format: "xlsx",
+ fileName: "My Report",
+ sheetName: "Quarter 1",
+ }
+});
+~~~
+
+## Example
+
+In this snippet you can see how to export data:
+
+
+
+**Related articles**:
+
+- [Date formatting](/guides/localization#date-formatting)
+- [`export`](/api/table/export)
\ No newline at end of file
diff --git a/docs/guides/loading-exporting-data.md b/docs/guides/loading-data.md
similarity index 55%
rename from docs/guides/loading-exporting-data.md
rename to docs/guides/loading-data.md
index cde4c25..1b055c2 100644
--- a/docs/guides/loading-exporting-data.md
+++ b/docs/guides/loading-data.md
@@ -1,7 +1,7 @@
---
-sidebar_label: Loading and exporting data
-title: Loading and exporting data
-description: You can explore how to load and export data in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
+sidebar_label: Loading data
+title: Loading data
+description: You can explore how to load data in the documentation of the DHTMLX JavaScript Pivot library. Browse developer guides and API reference, try out code examples and live demos, and download a free 30-day evaluation version of DHTMLX Pivot.
---
## Preparing data for loading
@@ -12,7 +12,7 @@ The following types of information can be loaded into Pivot:
- [`data`](/api/config/data-property) - an array of objects, where each object represents the data row
-### Example
+**Example:**
~~~jsx
const data = [
@@ -80,7 +80,7 @@ You can load JSON data into Pivot from an external file or the server-side scrip
To load local data from a separate file, first prepare the source file with data.
-### Example
+Example:
~~~jsx
function getData() {
@@ -261,124 +261,6 @@ importButton.textContent = "Import";
document.body.appendChild(importButton);
~~~
-## Exporting data
-
-To export the table data to the XLSX or CSV format, it's necessary to get access to the underlying Table widget instance inside Pivot and apply its API to export data. To do this, you should use the [`getTable`](/api/methods/gettable-method) method.
-
-In the example below we get access to the Table instance and trigger the `export`action on the button click using the [`api.exec()`](/api/internal/exec-method) method.
-
-~~~jsx
-const table = new pivot.Pivot("#root", {
- fields,
- data: dataset,
- config: {
- rows: ["studio", "genre"],
- columns: [],
- values: [
- {
- id: "title",
- method: "count"
- },
- {
- id: "score",
- method: "max"
- }
- ]
- }
-});
-
-function toCSV() {
- table.api.getTable().exec("export", {
- options: {
- format: "csv",
- cols: ";"
- }
- });
-}
-
-const exportButton = document.createElement("button");
-exportButton.addEventListener("click", toCSV);
-exportButton.textContent = "Export";
-
-document.body.appendChild(exportButton);
-~~~
-
-## Setting date format
-
-The Pivot accepts a date that is parsed into the Date object. By default, the `dateFormat` of the current locale is applied. To redefine the format, change the value of the `dateFormat` parameter in the `formats` object of the [`locale`](/api/config/locale-property). The default format is "%d.%m.%Y".
-
-### Example
-
-~~~jsx {17}
-function setFormat(value) {
- table.setConfig({ locale: { formats: { dateFormat: value } } });
-}
-
-// date string to Date
-const dateFields = fields.filter((f) => f.type == "date");
-if (dateFields.length) {
- dataset.forEach((item) => {
- dateFields.forEach((f) => {
- const v = item[f.id];
- if (typeof v == "string") item[f.id] = new Date(v);
- });
- });
-}
-
-const table = new pivot.Pivot("#root", {
- locale: { formats: { dateFormat: "%d %M %Y %H:%i" } },
- fields,
- data: dataset,
- config: {
- rows: ["state"],
- columns: ["product_line", "product_type"],
- values: [
- {
- field: "date",
- method: "min"
- },
- {
- field: "profit",
- method: "sum"
- },
- {
- field: "sales",
- method: "sum"
- }
- ]
- }
-});
-~~~
-
-Pivot uses the following characters for setting the date format:
-
-| Character | Definition |Example |
-| :-------- | :------------------------------------------------ |:------------------------|
-| %d | day as a number with leading zero | from 01 to 31 |
-| %j | day as a number | from 1 to 31 |
-| %D | short name of the day (abbreviation) | Su Mo Tu Sat |
-| %l | full name of the day | Sunday Monday Tuesday |
-| %W | week as a number with leading zero (with Monday as the first day of the week) | from 01 to 52/53 |
-| %m | month as a number with leading zero | from 01 to 12 |
-| %n | month as a number | from 1 to 12 |
-| %M | short name of the month | Jan Feb Mar |
-| %F | full name of the month | January February March |
-| %y | year as a number, 2 digits | 24 |
-| %Y | year as a number, 4 digits | 2024 |
-| %h | hours 12-format with leading zero | from 01 to 12 |
-| %g | hours 12-format | from 1 to 12 |
-| %H | hours 24-format with leading zero | from 00 to 23 |
-| %G | hours 24-format | from 0 to 23 |
-| %i | minutes with leading zero | from 01 to 59 |
-| %s | seconds with leading zero | from 01 to 59 |
-| %S | milliseconds | 128 |
-| %a | am or pm | am (for time from midnight until noon) and pm (for time from noon until midnight)|
-| %A | AM or PM | AM (for time from midnight until noon) and PM (for time from noon until midnight)|
-| %c | displays date and time in the ISO 8601 date format| 2024-10-04T05:04:09 |
-
-
-To present the 20th of June, 2024 with the exact time as *2024-09-20 16:47:08.128*, specify "%Y-%m-%d-%H:%i:%s.%u".
-
## Example
In this snippet you can see how to load JSON and CSV data:
@@ -386,7 +268,8 @@ In this snippet you can see how to load JSON and CSV data:
**Related samples:**
-- [Pivot 2.0. Export to XLSX, CSV](https://snippet.dhtmlx.com/zjuloqxd)
-- [Pivot 2.0: Date format](https://snippet.dhtmlx.com/shn1l794)
-- [Pivot 2.0: Different datasets](https://snippet.dhtmlx.com/6xtqge4i)
-- [Pivot 2.0. Large dataset](https://snippet.dhtmlx.com/e6qwqrys)
+- [Pivot 2. Date format](https://snippet.dhtmlx.com/shn1l794)
+- [Pivot 2. Different datasets](https://snippet.dhtmlx.com/6xtqge4i)
+- [Pivot 2. Large dataset](https://snippet.dhtmlx.com/e6qwqrys)
+
+**Related articles**: [Date formatting](/guides/localization#date-formatting)
\ No newline at end of file
diff --git a/docs/guides/localization.md b/docs/guides/localization.md
index e24e863..2c3be82 100644
--- a/docs/guides/localization.md
+++ b/docs/guides/localization.md
@@ -185,6 +185,97 @@ const ko = {...} //object with locale
widget.setLocale(ko);
~~~
+## Date formatting
+
+Pivot accepts a date as a Date object (make sure to parse a date to a Date object). By default, the `dateFormat` of the current locale is applied. To redefine the format for all date fields in Pivot, change the value of the `dateFormat` parameter in the `formats` object of the [`locale`](/api/config/locale-property). The default format is "%d.%m.%Y".
+
+Example:
+
+~~~jsx {17}
+function setFormat(value) {
+ table.setConfig({ locale: { formats: { dateFormat: value } } });
+}
+
+// date string to Date
+const dateFields = fields.filter((f) => f.type == "date");
+if (dateFields.length) {
+ dataset.forEach((item) => {
+ dateFields.forEach((f) => {
+ const v = item[f.id];
+ if (typeof v == "string") item[f.id] = new Date(v);
+ });
+ });
+}
+
+const table = new pivot.Pivot("#root", {
+ locale: { formats: { dateFormat: "%d %M %Y %H:%i" } },
+ fields,
+ data: dataset,
+ config: {
+ rows: ["state"],
+ columns: ["product_line", "product_type"],
+ values: [
+ {
+ field: "date",
+ method: "min"
+ },
+ {
+ field: "profit",
+ method: "sum"
+ },
+ {
+ field: "sales",
+ method: "sum"
+ }
+ ]
+ }
+});
+~~~
+
+In case you need to set a custom format to a specific field, use the `format` parameter of the [`fields`](/api/config/fields-property) property. Refer to [Applying formats to fields](/guides/working-with-data/#applying-formats-to-fields).
+
+## Date and time format specification
+
+Pivot uses the following characters for setting the date and time format:
+
+| Character | Definition |Example |
+| :-------- | :------------------------------------------------ |:------------------------|
+| %d | day as a number with leading zero | from 01 to 31 |
+| %j | day as a number | from 1 to 31 |
+| %D | short name of the day (abbreviation) | Su Mo Tu Sat |
+| %l | full name of the day | Sunday Monday Tuesday |
+| %W | week as a number with leading zero (with Monday as the first day of the week) | from 01 to 52/53 |
+| %m | month as a number with leading zero | from 01 to 12 |
+| %n | month as a number | from 1 to 12 |
+| %M | short name of the month | Jan Feb Mar |
+| %F | full name of the month | January February March |
+| %y | year as a number, 2 digits | 24 |
+| %Y | year as a number, 4 digits | 2024 |
+| %h | hours 12-format with leading zero | from 01 to 12 |
+| %g | hours 12-format | from 1 to 12 |
+| %H | hours 24-format with leading zero | from 00 to 23 |
+| %G | hours 24-format | from 0 to 23 |
+| %i | minutes with leading zero | from 01 to 59 |
+| %s | seconds with leading zero | from 01 to 59 |
+| %S | milliseconds | 128 |
+| %a | am or pm | am (for time from midnight until noon) and pm (for time from noon until midnight)|
+| %A | AM or PM | AM (for time from midnight until noon) and PM (for time from noon until midnight)|
+| %c | displays date and time in the ISO 8601 date format| 2024-10-04T05:04:09 |
+
+
+To present the 20th of June, 2024 with the exact time as *2024-09-20 16:47:08.128*, specify "%Y-%m-%d-%H:%i:%s.%u".
+
+## Number formatting
+
+By default, all fields with the number type are localized according to the locale (the value in the `lang` field of the locale). Pivot uses [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) specification. By default the fraction digits are limited to 3 and group separation is applied for the integer part.
+In case you do not need to format specific fields with numeric values or need to set a custom format, use the the `format` parameter of the [`fields`](/api/config/fields-property) property. It can be either *false* to cancel formatting or an object with format settings (refer to [Applying formats to fields](/guides/working-with-data/#applying-formats-to-fields)).
+
+~~~jsx
+const fields = [
+ { id: "year", label: "Year", type: "number", format: false},
+];
+~~~
+
## Example
In this snippet you can see how to switch between several locales:
diff --git a/docs/guides/stylization.md b/docs/guides/stylization.md
index 9539b05..3b2967c 100644
--- a/docs/guides/stylization.md
+++ b/docs/guides/stylization.md
@@ -100,7 +100,64 @@ You can also apply a custom style to the scroll bar of Pivot. For this, you can
## Cell style
-The widget API allows marking cells with the required values. You can do it by applying the `marks` parameter of the [`tableShape`](/api/config/tableshape-property) property. You need to do the following:
+To apply a CSS class to the table body or footer cells, use the `cellStyle` parameter of the [`tableShape`](/api/config/tableshape-property) property. The style of the header cells can be customized via the `cellStyle` parameter of the [`headerShape`](/api/config/tableshape-property) property. In both cases the `cellStyle` function returns a string, which can be used as a CSS class name to apply specific styles to a cell.
+
+In the example below the styles of cells in the table body and headers are customized in the following way:
+- for the table body cells, styles are applied dynamically based on cell values (e.g., "Down", "Up", "Idle") in the "status" field and on total values (greater than 40 or less than 5)
+- the style of header cells is determined by the value in the "streaming" field, with specific styles applied for "no" or other values (the CSS class "status-down" is applied for the "no" value and "status-up" is applied for the not "no" value)
+
+~~~jsx
+const widget = new pivot.Pivot("#pivot", {
+ tableShape: {
+ totalColumn: true,
+ totalRow:true,
+ cellStyle: (field, value, area, method, isTotal) => {
+ if (field === "status" && area === "rows" && value) {
+ if (value === "Down") {
+ return "status-down";
+ } else if (value === "Up") {
+ return "status-up";
+ } else if (value === "Idle") {
+ return "status-idle";
+ }
+ }
+ if(isTotal ==="column" && area == "values"){
+ if(value > 40)
+ return "status-up";
+ else if (value < 5)
+ return "status-down";
+ }
+ }
+ },
+ headerShape:{
+ cellStyle:(field, value, area, method, isTotal) => {
+ if(field == "streaming")
+ return value ==="no"?"status-down":"status-up";
+ }
+ },
+ fields,
+ data: dataset,
+ config: {
+ rows: [
+ "protocol",
+ "status",
+ ],
+ columns: [
+ "streaming"
+ ],
+ values: [
+ {
+ field: "id",
+ method: "count"
+ }
+ ]
+ }
+});
+~~~
+
+## Marking values in cells
+
+The widget API allows marking required values in cells. You can do it by applying the `marks` parameter of the [`tableShape`](/api/config/tableshape-property) property. You need to do the following:
- create a CSS class to be applied to the marked cell
- add the CSS class name as the parameter of the `marks` object
- set its value which can be a custom function or one of the predefined strings ("max", "min"). The function should return boolean for the checked value; if **true** is returned, the css class is assigned to the cell.
@@ -156,10 +213,37 @@ const table = new pivot.Pivot("#root", {
~~~
+## Specific CSS classes
+
+By default, in the table body numbers are aligned to the right with the help of the built-in `.wx-number` CSS class. The exception is the hierarchical column in the tree mode (when `tree` is set to **true** for the [`tableShape`](/api/config/tableshape-property) property). To reset the default number alignment, change the related CSS class.
+
+~~~html
+
+~~~
+
+It's also possible to customize the style of total columns via the ` .wx-total` CSS class:
+
+~~~html
+
+~~~
+
## Example
In this snippet you can see how to apply a custom style to Pivot
-**Related sample**: [Pivot 2.0. Min/max and custom marks for cells (conditional format)](https://snippet.dhtmlx.com/4cm4asbd)
+**Related samples**:
+
+- [Pivot 2. Styling (custom CSS) for total column](https://snippet.dhtmlx.com/9lkdbzmm)
+- [Pivot 2. Min/max and custom marks for cells (conditional format)](https://snippet.dhtmlx.com/4cm4asbd)
+- [Pivot 2. Alternate row color (striped rows, zebra-striping)](https://snippet.dhtmlx.com/0cm0uko2)
diff --git a/docs/guides/working-with-data.md b/docs/guides/working-with-data.md
index 67f3165..c14a7b3 100644
--- a/docs/guides/working-with-data.md
+++ b/docs/guides/working-with-data.md
@@ -6,13 +6,13 @@ description: You can explore how to work with Data in the documentation of the D
# Working with data
-This page describes how to aggregate data in Pivot. For the instructions about loading and exporting data refer to [Loading and exporting data](/guides/loading-exporting-data).
+This page describes how to aggregate data in Pivot. For the instructions about loading and exporting data refer to [Loading data](/guides/loading-data) and [Exporting data](/guides/exporting-data).
## Defining fields
Use the [`fields`](/api/config/fields-property) property to add fields to the Pivot table. To add a new field, you should add a new object to the `fields` array.
-### Example
+Example:
~~~jsx
const table = new pivot.Pivot("#root", {
@@ -28,11 +28,103 @@ const table = new pivot.Pivot("#root", {
});
~~~
+## Applying formats to fields
+
+For the description of default formatting of date and numeric fields, which depends on locale, refer to [Date formatting](/guides/localization/#date-formatting) and [Number formatting](/guides/localization/#number-formatting).
+
+In case you need to set a custom format to a specific field, use the `format` parameter of the [`fields`](/api/config/fields-property) property. You can add text before and after numeric values using the `prefix` and `suffix` parameters. For example, to convert the value *12.345* to "12.35 EUR", `format` should contain the " EUR" suffix and maximumFractionDigits of 2:
+
+~~~js
+const fields = [
+ { id: "sales", type: "number", format: {suffix: " EUR", maximumFractionDigits: 2}},
+];
+~~~
+
+By default, the format for numeric values limits fraction digits to 3 and applies group separation for the integer part. You can cancel formatting by setting `format` to *false* in the `field` configuration:
+
+~~~js
+const fields = [
+ { id: "year", label: "Year", type: "number", format: false},
+];
+~~~
+
+In the example below, fields like marketing, profit, and sales are identified as currency-related. A formatting object is applied to these fields with:
+
+- prefix: "$" to display a dollar sign
+- *minimumFractionDigits* and *maximumFractionDigits* set to 2 for consistent decimal formatting
+
+~~~jsx
+// Initialize pivot with pre-defined dataset and fields
+new pivot.Pivot("#pivot", {
+ data,
+ config: {
+ rows: ["state", "product_type"],
+ columns: [],
+ values: [
+ { field: "marketing", method: "sum" },
+ // other values
+
+ ],
+ },
+ fields:[
+ // Custom format
+ { id: "marketing", label: "Marketing", type:"number", format:{
+ prefix: "$", minimumFractionDigits: 2, maximumFractionDigits: 2 }
+ }
+ ]
+});
+~~~
+
+To override the default locale-wide `dateFormat`, apply the `format` parameter of the [`fields`](/api/config/fields-property) property. Date format is a string, for example:
+
+~~~jsx
+const fields = [
+ { id: "date", type: "date", format: "%M %d, %Y"},
+];
+~~~
+
+In the example below we set the date format to "%d %M %Y %H:%i" for the "date" field only. The format displays day, full month name, year, hours, and minutes, e.g., "24 April 2025 14:30". In case you need to disable formatting of some fields, set the `format` parameter of the [`fields`](/api/config/fields-property) property to *false*.
+
+~~~jsx
+// Convert date strings to Date objects
+const dateFields = fields.filter(f => f.type === "date");
+dataset.forEach(item => {
+ dateFields.forEach(f => {
+ const v = item[f.id];
+ if (typeof v === "string") {
+ item[f.id] = new Date(v);
+ }
+ });
+});
+
+// Initialize Pivot with field-specific date format
+new pivot.Pivot("#pivot", {
+ data,
+ config: {
+ rows: ["state"],
+ columns: ["product_type"],
+ values: [
+ { field: "date", method: "min" },
+ { field: "profit", method: "sum" },
+ { field: "sales", method: "sum" }
+ ]
+ },
+ fields:[
+ // Custom format: Day Month Year Hour:Minute
+ {id:"date", label:"Date", type:"date", "%d %M %Y %H:%i"}
+ ]
+});
+~~~
+
+:::note
+By default, for the "xlsx" format, date and number fields are exported as raw values with default format or the format defined via the [`fields`](/api/config/fields-property) property. But if a template is defined for a field (see the [`tableShape`](/api/config/tableshape-property) property), it exports the rendered value defined by that template. In case both the template and `format` are set, the template settings will override the format ones.
+:::
+
## Defining Pivot structure
You can create the Pivot structure using the [`config`](/api/config/config-property) property that also defines how data is aggregated. By default, it has no predefined values. You need to specify this property to define the configuration of the Pivot table, namely, which fields should be applied as columns and rows. The property also allows adding data aggregation methods to be applied to the fields. Here you can also add filters. Please, refer to the [`config`](/api/config/config-property) property description for details.
-### Example
+Example:
~~~jsx {4-18}
const table = new pivot.Pivot("#root", {
@@ -194,6 +286,10 @@ const table = new pivot.Pivot("#root", {
});
~~~
+:::info
+You can also filter data using the [`filter-rows`](/api/table/filter-rows) event of the Table widget by getting access to its API via the [`getTable`](/api/methods/gettable-method) method.
+:::
+
## Limiting loaded data
To interrupt data rendering and prevent the component from hanging, you can limit the number of rows and columns in the final dataset. To limit data, specify the values using the [`limits`](/api/config/limits-property) property. The values define when to interrupt rendering data. The limits are applied based on the rows/columns defined within the Pivot configuration. The default value for rows is 10 000 and for columns it's 5 000.
@@ -202,7 +298,7 @@ To interrupt data rendering and prevent the component from hanging, you can limi
Limits are used for large dataset. Limits values are approximate values and do not show the exact values of the rows and columns.
:::
-### Example
+Example:
~~~jsx
const table = new pivot.Pivot("#root", {
@@ -280,7 +376,7 @@ const defaultMethods = {
You can apply default methods using the `values` parameter of the [`config`](/api/config/config-property) property. See [Options for defining values](#options-for-defining-values) below.
-### Example
+Example:
~~~jsx
const table = new pivot.Pivot("#root", {
@@ -311,7 +407,7 @@ You can define `values`in either of the two equally valid ways:
- option one is a string representing a data field ID: `operation(fieldID)`
- option two is an object containing the field ID and the method for data aggregation (both are required): `{ field: string, method: string }`
-### Example
+Example:
~~~jsx
values: [
@@ -532,7 +628,7 @@ To enable generating the rightmost column with total values, apply the [`tableSh
To enable generating the footer with totals, apply the [`tableShape`](/api/config/tableshape-property)property and set the value of the `totalRow` parameter to **true**.
-### Example
+**Example:**
~~~jsx {2-5}
const table = new pivot.Pivot("#root", {
@@ -574,5 +670,8 @@ In this snippet you can see how to apply custom maths operations:
**Related samples:**
-- [Pivot 2.0: Grand total for columns and rows](https://snippet.dhtmlx.com/f0ag0t9t)
-- [Pivot 2.0. Dataset with aliases](https://snippet.dhtmlx.com/7vc68rqd)
+
+- [Pivot 2. Dataset with aliases](https://snippet.dhtmlx.com/7vc68rqd)
+- [Pivot 2. Defining fields formats](https://snippet.dhtmlx.com/77nc4j8v)
+- [Pivot 2. External filter](https://snippet.dhtmlx.com/s7tc9g4z)
+- [Pivot 2. Grand total for columns and rows](https://snippet.dhtmlx.com/f0ag0t9t)
diff --git a/docs/news/migration.md b/docs/news/migration.md
index 38d5b6d..1671a44 100644
--- a/docs/news/migration.md
+++ b/docs/news/migration.md
@@ -6,6 +6,10 @@ description: You can learn about the Migration to Newer Versions in the document
# Migration to newer versions
+## 2.0 -> 2.1
+
+- `colWidth` parameter of the `sizes` object in the `tableShape` property renamed to `columnWidth`
+
## 1.5 -> 2.0
This list of changes will help you migrate from the previous version of Pivot 1.5 to the totally renewed version of Pivot 2.0
@@ -39,11 +43,11 @@ New properties do not fully duplicate the previous ones but provide more extende
### Important features
-- Exporting data: [previous export option](https://docs.dhtmlx.com/pivot/1-5/guides__export.html) -> [new export option](/guides/loading-exporting-data#exporting-data)
+- Exporting data: [previous export option](https://docs.dhtmlx.com/pivot/1-5/guides__export.html) -> [new export option](/guides/exporting-data)
- Sorting: [sorting fields](https://docs.dhtmlx.com/pivot/1-5/guides__configuration.html#configuringfields) -> [sorting data](/guides/working-with-data#sorting-data)
- Tree mode: [gridMode](https://docs.dhtmlx.com/pivot/1-5/guides__configuration.html#gridmode) -> [enabling tree mode](/guides/configuration#enabling-the-tree-mode)
- Date format: [configuring date fields](https://docs.dhtmlx.com/pivot/1-5/guides__configuration.html#configuringdatefields) ->
-[setting date format](/guides/loading-exporting-data#setting-date-format)
+[setting date format](/guides/localization#date-formatting)
- Customization:
- [cells formatting](https://docs.dhtmlx.com/pivot/1-5/guides__customization.html#conditionalformattingofcells) -> [cells style](/guides/stylization#cell-style)
- [templates for headers](https://docs.dhtmlx.com/pivot/1-5/guides__customization.html#settingtemplatesforheaders) ->
diff --git a/docs/news/whats-new.md b/docs/news/whats-new.md
index f0c6fba..47def8d 100644
--- a/docs/news/whats-new.md
+++ b/docs/news/whats-new.md
@@ -8,6 +8,44 @@ description: You can explore what's new in DHTMLX Pivot and its release history
If you are updating Pivot from an older version, check [Migration to newer versions](news/migration.md) for details.
+## Version 2.1
+
+Released on May 6, 2025
+
+### New functionality
+
+- [Ability to freeze columns on the right](/guides/configuration/#freezing-columns-on-the-right)
+- [Default aligning](/guides/stylization/#specific-css-classes) and [locale-based formatting](/guides/localization/#number-formatting) for numeric values
+- [Ability to define custom number formats](/guides/working-with-data/#applying-formats-to-fields) (for date and numeric fields) via `format` added to the [`fields`](/api/config/fields-property) property
+- [Ability to style header and table cells](/guides/stylization/#cell-style) via the `cellStyle` parameter of the [`tableShape`](/api/config/tableshape-property) and [`headerShape`](/api/config/headershape-property) properties
+- Ability to insert HTML content to header and table cells via the [`pivot.template`](/api/helpers/template) helper by defining a template as a `cell` property of the header and column objects (table customization by intercepting the [render-table](/api/events/render-table-event) event)
+- [Excel and CSV export settings enhanced](/guides/exporting-data):
+ - for the "xlsx" format, date and number fields are exported as raw values with default format or the format defined via the [`fields`](/api/config/fields-property) property
+ - ability to define file and sheet names and exclude header/footer from an exported file
+ - ability to add styles and templates for exported cells
+- [Ability to filter data via an external input](/api/table/filter-rows)
+- Visual frame for cell navigation
+- [Integration with frameworks](/category/integration-with-frameworks)
+
+### New API
+
+- `right` setting within the `split` object of the [`tableShape`](/api/config/tableshape-property)
+- `cellStyle` setting within [`tableShape`](/api/config/tableshape-property) and [`headerShape`](/api/config/headershape-property) properties
+- `format` setting within the [`fields`](/api/config/fields-property) array
+- [`filter-rows`](/api/table/filter-rows) event of the internal Table
+- [`pivot.template`](/api/helpers/template) to define HTML content for table cells
+
+### Fixes
+
+- Total columns are not sorted
+- String values with the leading 0 are converted to numbers during export
+- Predicate template is not applied to rows/columns
+- Resize observer error in corner cases
+
+### Breaking changes
+
+- `colWidth` parameter of the `sizes` object in the `tableShape` property renamed to `columnWidth`
+
## Version 2.0.3
Released on November 29, 2024
@@ -63,6 +101,6 @@ For tips about migration to the new version, check the [Migration](/news/migrati
- [limiting loaded data](/guides/working-with-data#limiting-loaded-data)
- more [operations with data](/guides/working-with-data#applying-maths-methods) are available
- [processing data with predicates](/guides/working-with-data#processing-data-with-predicates) - applying custom pre-processing functions for data
- - [setting date format via locale](/guides/loading-exporting-data#setting-date-format)
+ - [setting date format via locale](/guides/localization#date-formatting)
- New methods are added: [`getTable()`](/api/methods/gettable-method), [`setConfig()`](/api/methods/setconfig-method), [`setLocale()`](/api/methods/setlocale-method), [`showConfigPanel()`](/api/methods/showconfigpanel-method)
- New events are added: [`add-field`](/api/events/add-field-event), [`delete-field`](/api/events/delete-field-event), [`open-filter`](/api/events/open-filter-event), [`render-table`](/api/events/render-table-event), [`move-field`](/api/events/move-field-event), [`show-config-panel`](/api/events/show-config-panel-event), [`show-config-panel`](/api/events/show-config-panel-event), [`update-config`](/api/events/update-config-event), [`update-value`](/api/events/update-value-event).
diff --git a/package.json b/package.json
index 5231deb..fedd10f 100644
--- a/package.json
+++ b/package.json
@@ -14,8 +14,8 @@
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
- "@docusaurus/core": "^3.6.2",
- "@docusaurus/preset-classic": "^3.6.2",
+ "@docusaurus/core": "^3.7.0",
+ "@docusaurus/preset-classic": "^3.7.0",
"@easyops-cn/docusaurus-search-local": "^0.44.5",
"@mdx-js/react": "^3.0.0",
"@svgr/webpack": "^5.5.0",
@@ -29,8 +29,8 @@
"url-loader": "^4.1.1"
},
"devDependencies": {
- "@docusaurus/module-type-aliases": "^3.6.2",
- "@docusaurus/types": "^3.6.2",
+ "@docusaurus/module-type-aliases": "^3.7.0",
+ "@docusaurus/types": "^3.7.0",
"dhx-md-data-parser": "file:local_modules/dhx-md-data-parser",
"docusaurus-plugin-sass": "^0.2.5"
},
diff --git a/sidebars.js b/sidebars.js
index 08878e4..273cbeb 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -24,7 +24,7 @@ module.exports = {
'news/whats-new',
'news/migration'
]
- },
+ },
{
type: "category",
label: "API",
@@ -146,9 +146,42 @@ module.exports = {
"api/config/readonly-property",
"api/config/tableshape-property"
]
- }
+ },
+
+ {
+ type: "category",
+ label: "Table events",
+ collapsible: true,
+ collapsed: true,
+ link: {
+ type: "doc",
+ id: "api/overview/table-events-overview"
+
+ },
+ items: [
+ "api/table/close-row",
+ "api/table/export",
+ "api/table/filter-rows",
+ "api/table/open-row"
+ ]
+ },
]
},
+ {
+ type: "category",
+ label: "Helpers",
+ collapsible: true,
+ collapsed: true,
+ link: {
+ type: 'generated-index',
+ },
+
+ items: [
+ {
+ type: "doc",
+ id: "api/helpers/template",
+
+ },]},
//start Framework integration
{
type: "category",
@@ -181,7 +214,8 @@ module.exports = {
items: [
"guides/initialization",
"guides/configuration",
- "guides/loading-exporting-data",
+ "guides/exporting-data",
+ "guides/loading-data",
"guides/localization",
"guides/stylization",
"guides/typescript-support",
diff --git a/yarn.lock b/yarn.lock
index c6dcdf4..8897326 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,158 +2,153 @@
# yarn lockfile v1
-"@algolia/autocomplete-core@1.9.3":
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7"
- integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==
- dependencies:
- "@algolia/autocomplete-plugin-algolia-insights" "1.9.3"
- "@algolia/autocomplete-shared" "1.9.3"
-
-"@algolia/autocomplete-plugin-algolia-insights@1.9.3":
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587"
- integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==
- dependencies:
- "@algolia/autocomplete-shared" "1.9.3"
-
-"@algolia/autocomplete-preset-algolia@1.9.3":
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da"
- integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==
- dependencies:
- "@algolia/autocomplete-shared" "1.9.3"
-
-"@algolia/autocomplete-shared@1.9.3":
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa"
- integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==
-
-"@algolia/cache-browser-local-storage@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz#97bc6d067a9fd932b9c922faa6b7fd6e546e1348"
- integrity sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==
- dependencies:
- "@algolia/cache-common" "4.24.0"
+"@algolia/autocomplete-core@1.17.7":
+ version "1.17.7"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz#2c410baa94a47c5c5f56ed712bb4a00ebe24088b"
+ integrity sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==
+ dependencies:
+ "@algolia/autocomplete-plugin-algolia-insights" "1.17.7"
+ "@algolia/autocomplete-shared" "1.17.7"
+
+"@algolia/autocomplete-plugin-algolia-insights@1.17.7":
+ version "1.17.7"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz#7d2b105f84e7dd8f0370aa4c4ab3b704e6760d82"
+ integrity sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==
+ dependencies:
+ "@algolia/autocomplete-shared" "1.17.7"
+
+"@algolia/autocomplete-preset-algolia@1.17.7":
+ version "1.17.7"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz#c9badc0d73d62db5bf565d839d94ec0034680ae9"
+ integrity sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==
+ dependencies:
+ "@algolia/autocomplete-shared" "1.17.7"
+
+"@algolia/autocomplete-shared@1.17.7":
+ version "1.17.7"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz#105e84ad9d1a31d3fb86ba20dc890eefe1a313a0"
+ integrity sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==
+
+"@algolia/client-abtesting@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.19.0.tgz#0a6e73da05decc8f1bbcd7e5b9a82a8d876e7bf5"
+ integrity sha512-dMHwy2+nBL0SnIsC1iHvkBao64h4z+roGelOz11cxrDBrAdASxLxmfVMop8gmodQ2yZSacX0Rzevtxa+9SqxCw==
+ dependencies:
+ "@algolia/client-common" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
+
+"@algolia/client-analytics@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.19.0.tgz#45e33343fd4517e05a340a97bb37bebb4466000e"
+ integrity sha512-CDW4RwnCHzU10upPJqS6N6YwDpDHno7w6/qXT9KPbPbt8szIIzCHrva4O9KIfx1OhdsHzfGSI5hMAiOOYl4DEQ==
+ dependencies:
+ "@algolia/client-common" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
+
+"@algolia/client-common@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.19.0.tgz#efddaaf28f0f478117c2aab22d19c99b06f99761"
+ integrity sha512-2ERRbICHXvtj5kfFpY5r8qu9pJII/NAHsdgUXnUitQFwPdPL7wXiupcvZJC7DSntOnE8AE0lM7oDsPhrJfj5nQ==
+
+"@algolia/client-insights@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.19.0.tgz#81ff8eb3df724f6dd8ea3f423966b9ef7d36f903"
+ integrity sha512-xPOiGjo6I9mfjdJO7Y+p035aWePcbsItizIp+qVyfkfZiGgD+TbNxM12g7QhFAHIkx/mlYaocxPY/TmwPzTe+A==
+ dependencies:
+ "@algolia/client-common" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
+
+"@algolia/client-personalization@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.19.0.tgz#9a75230b9dec490a1e0851539a40a9371c8cd987"
+ integrity sha512-B9eoce/fk8NLboGje+pMr72pw+PV7c5Z01On477heTZ7jkxoZ4X92dobeGuEQop61cJ93Gaevd1of4mBr4hu2A==
+ dependencies:
+ "@algolia/client-common" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
+
+"@algolia/client-query-suggestions@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.19.0.tgz#007d1b09818d6a225fbfdf93bbcb2edf8ab17da0"
+ integrity sha512-6fcP8d4S8XRDtVogrDvmSM6g5g6DndLc0pEm1GCKe9/ZkAzCmM3ZmW1wFYYPxdjMeifWy1vVEDMJK7sbE4W7MA==
+ dependencies:
+ "@algolia/client-common" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
+
+"@algolia/client-search@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.19.0.tgz#04fc5d7e26d41c99144eb33eedb0ea6f9b1c0056"
+ integrity sha512-Ctg3xXD/1VtcwmkulR5+cKGOMj4r0wC49Y/KZdGQcqpydKn+e86F6l3tb3utLJQVq4lpEJud6kdRykFgcNsp8Q==
+ dependencies:
+ "@algolia/client-common" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
-"@algolia/cache-common@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.24.0.tgz#81a8d3a82ceb75302abb9b150a52eba9960c9744"
- integrity sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==
+"@algolia/events@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950"
+ integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==
-"@algolia/cache-in-memory@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz#ffcf8872f3a10cb85c4f4641bdffd307933a6e44"
- integrity sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==
+"@algolia/ingestion@1.19.0":
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.19.0.tgz#b481bd2283866a1df18af9babba0ecb3f1d1d675"
+ integrity sha512-LO7w1MDV+ZLESwfPmXkp+KLeYeFrYEgtbCZG6buWjddhYraPQ9MuQWLhLLiaMlKxZ/sZvFTcZYuyI6Jx4WBhcg==
dependencies:
- "@algolia/cache-common" "4.24.0"
+ "@algolia/client-common" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
-"@algolia/client-account@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.24.0.tgz#eba7a921d828e7c8c40a32d4add21206c7fe12f1"
- integrity sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==
+"@algolia/monitoring@1.19.0":
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.19.0.tgz#abc85ac073c25233c7f8dae3000cc0821d582514"
+ integrity sha512-Mg4uoS0aIKeTpu6iv6O0Hj81s8UHagi5TLm9k2mLIib4vmMtX7WgIAHAcFIaqIZp5D6s5EVy1BaDOoZ7buuJHA==
dependencies:
- "@algolia/client-common" "4.24.0"
- "@algolia/client-search" "4.24.0"
- "@algolia/transporter" "4.24.0"
+ "@algolia/client-common" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
-"@algolia/client-analytics@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.24.0.tgz#9d2576c46a9093a14e668833c505ea697a1a3e30"
- integrity sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==
+"@algolia/recommend@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.19.0.tgz#5898219e9457853c563eb527f0d1cbfcb8998c87"
+ integrity sha512-PbgrMTbUPlmwfJsxjFhal4XqZO2kpBNRjemLVTkUiti4w/+kzcYO4Hg5zaBgVqPwvFDNQ8JS4SS3TBBem88u+g==
dependencies:
- "@algolia/client-common" "4.24.0"
- "@algolia/client-search" "4.24.0"
- "@algolia/requester-common" "4.24.0"
- "@algolia/transporter" "4.24.0"
+ "@algolia/client-common" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
-"@algolia/client-common@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.24.0.tgz#77c46eee42b9444a1d1c1583a83f7df4398a649d"
- integrity sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==
+"@algolia/requester-browser-xhr@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.19.0.tgz#979a340a81a381214c0dbdd235b51204098e3b4a"
+ integrity sha512-GfnhnQBT23mW/VMNs7m1qyEyZzhZz093aY2x8p0era96MMyNv8+FxGek5pjVX0b57tmSCZPf4EqNCpkGcGsmbw==
dependencies:
- "@algolia/requester-common" "4.24.0"
- "@algolia/transporter" "4.24.0"
+ "@algolia/client-common" "5.19.0"
-"@algolia/client-personalization@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.24.0.tgz#8b47789fb1cb0f8efbea0f79295b7c5a3850f6ae"
- integrity sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==
+"@algolia/requester-fetch@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.19.0.tgz#59fe52733a718fc23bde548b377b52baf7228993"
+ integrity sha512-oyTt8ZJ4T4fYvW5avAnuEc6Laedcme9fAFryMD9ndUTIUe/P0kn3BuGcCLFjN3FDmdrETHSFkgPPf1hGy3sLCw==
dependencies:
- "@algolia/client-common" "4.24.0"
- "@algolia/requester-common" "4.24.0"
- "@algolia/transporter" "4.24.0"
+ "@algolia/client-common" "5.19.0"
-"@algolia/client-search@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.24.0.tgz#75e6c02d33ef3e0f34afd9962c085b856fc4a55f"
- integrity sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==
+"@algolia/requester-node-http@5.19.0":
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.19.0.tgz#edbd58158d9dec774d608fbf2b2196d0ca4b257c"
+ integrity sha512-p6t8ue0XZNjcRiqNkb5QAM0qQRAKsCiebZ6n9JjWA+p8fWf8BvnhO55y2fO28g3GW0Imj7PrAuyBuxq8aDVQwQ==
dependencies:
- "@algolia/client-common" "4.24.0"
- "@algolia/requester-common" "4.24.0"
- "@algolia/transporter" "4.24.0"
-
-"@algolia/events@^4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950"
- integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==
-
-"@algolia/logger-common@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.24.0.tgz#28d439976019ec0a46ba7a1a739ef493d4ef8123"
- integrity sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==
-
-"@algolia/logger-console@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.24.0.tgz#c6ff486036cd90b81d07a95aaba04461da7e1c65"
- integrity sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==
- dependencies:
- "@algolia/logger-common" "4.24.0"
-
-"@algolia/recommend@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-4.24.0.tgz#8a3f78aea471ee0a4836b78fd2aad4e9abcaaf34"
- integrity sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==
- dependencies:
- "@algolia/cache-browser-local-storage" "4.24.0"
- "@algolia/cache-common" "4.24.0"
- "@algolia/cache-in-memory" "4.24.0"
- "@algolia/client-common" "4.24.0"
- "@algolia/client-search" "4.24.0"
- "@algolia/logger-common" "4.24.0"
- "@algolia/logger-console" "4.24.0"
- "@algolia/requester-browser-xhr" "4.24.0"
- "@algolia/requester-common" "4.24.0"
- "@algolia/requester-node-http" "4.24.0"
- "@algolia/transporter" "4.24.0"
-
-"@algolia/requester-browser-xhr@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz#313c5edab4ed73a052e75803855833b62dd19c16"
- integrity sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==
- dependencies:
- "@algolia/requester-common" "4.24.0"
-
-"@algolia/requester-common@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.24.0.tgz#1c60c198031f48fcdb9e34c4057a3ea987b9a436"
- integrity sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==
-
-"@algolia/requester-node-http@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz#4461593714031d02aa7da221c49df675212f482f"
- integrity sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==
- dependencies:
- "@algolia/requester-common" "4.24.0"
-
-"@algolia/transporter@4.24.0":
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.24.0.tgz#226bb1f8af62430374c1972b2e5c8580ab275102"
- integrity sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==
- dependencies:
- "@algolia/cache-common" "4.24.0"
- "@algolia/logger-common" "4.24.0"
- "@algolia/requester-common" "4.24.0"
+ "@algolia/client-common" "5.19.0"
"@ampproject/remapping@^2.2.0":
version "2.3.0"
@@ -2391,25 +2386,25 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
-"@docsearch/css@3.6.1":
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.6.1.tgz#f0a728ecb486c81f2d282650fc1820c914913408"
- integrity sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==
+"@docsearch/css@3.8.2":
+ version "3.8.2"
+ resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.8.2.tgz#7973ceb6892c30f154ba254cd05c562257a44977"
+ integrity sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==
-"@docsearch/react@^3.5.2":
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.6.1.tgz#0f826df08693293806d64277d6d9c38636211b97"
- integrity sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==
+"@docsearch/react@^3.8.1":
+ version "3.8.2"
+ resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.8.2.tgz#7b11d39b61c976c0aa9fbde66e6b73b30f3acd42"
+ integrity sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==
dependencies:
- "@algolia/autocomplete-core" "1.9.3"
- "@algolia/autocomplete-preset-algolia" "1.9.3"
- "@docsearch/css" "3.6.1"
- algoliasearch "^4.19.1"
+ "@algolia/autocomplete-core" "1.17.7"
+ "@algolia/autocomplete-preset-algolia" "1.17.7"
+ "@docsearch/css" "3.8.2"
+ algoliasearch "^5.14.2"
-"@docusaurus/babel@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.6.2.tgz#c63dd2d9d7861189fe51950b3b6550477057bcee"
- integrity sha512-v8N8TWGXDsb5sxQC3Rcqb1CZr0LlU1OgqqVBUchN6cpIUr7EJuVJs5eHcIu5Ag8mwO/hWN3f7FE9uaHTMapAbg==
+"@docusaurus/babel@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.7.0.tgz#770dd5da525a9d6a2fee7d3212ec62040327f776"
+ integrity sha512-0H5uoJLm14S/oKV3Keihxvh8RV+vrid+6Gv+2qhuzbqHanawga8tYnsdpjEyt36ucJjqlby2/Md2ObWjA02UXQ==
dependencies:
"@babel/core" "^7.25.9"
"@babel/generator" "^7.25.9"
@@ -2421,23 +2416,23 @@
"@babel/runtime" "^7.25.9"
"@babel/runtime-corejs3" "^7.25.9"
"@babel/traverse" "^7.25.9"
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/utils" "3.6.2"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
babel-plugin-dynamic-import-node "^2.3.3"
fs-extra "^11.1.1"
tslib "^2.6.0"
-"@docusaurus/bundler@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.6.2.tgz#5bdd46862b40f1eea93f14714b858d07c2dd8c2f"
- integrity sha512-YkEifEVs4lV931SrHBB4n6WqRowMw+aM/QPH3z8aU+5t1dWa+1p2OPqARS+tSbh3la9ns+L1zIfSbd8RHi2/PQ==
+"@docusaurus/bundler@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.7.0.tgz#d8e7867b3b2c43a1e320ed429f8dfe873c38506d"
+ integrity sha512-CUUT9VlSGukrCU5ctZucykvgCISivct+cby28wJwCC/fkQFgAHRp/GKv2tx38ZmXb7nacrKzFTcp++f9txUYGg==
dependencies:
"@babel/core" "^7.25.9"
- "@docusaurus/babel" "3.6.2"
- "@docusaurus/cssnano-preset" "3.6.2"
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils" "3.6.2"
+ "@docusaurus/babel" "3.7.0"
+ "@docusaurus/cssnano-preset" "3.7.0"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
babel-loader "^9.2.1"
clean-css "^5.3.2"
copy-webpack-plugin "^11.0.0"
@@ -2532,18 +2527,18 @@
webpack-merge "^5.9.0"
webpackbar "^5.0.2"
-"@docusaurus/core@3.6.2", "@docusaurus/core@^3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.6.2.tgz#78628790f255555bb4c81e5952d16ea1412c4548"
- integrity sha512-irMts/mGLZv8dWcy0WUtbY/U6b5qIfHgQd1/kXMyAxUJo99fL0wFSqhMI+tcxjk0HYy427MXerLMqFJj+Arg1w==
- dependencies:
- "@docusaurus/babel" "3.6.2"
- "@docusaurus/bundler" "3.6.2"
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/mdx-loader" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-common" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+"@docusaurus/core@3.7.0", "@docusaurus/core@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.7.0.tgz#e871586d099093723dfe6de81c1ce610aeb20292"
+ integrity sha512-b0fUmaL+JbzDIQaamzpAFpTviiaU4cX3Qz8cuo14+HGBCwa0evEK0UYCBFY3n4cLzL8Op1BueeroUD2LYAIHbQ==
+ dependencies:
+ "@docusaurus/babel" "3.7.0"
+ "@docusaurus/bundler" "3.7.0"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/mdx-loader" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-common" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
boxen "^6.2.1"
chalk "^4.1.2"
chokidar "^3.5.3"
@@ -2564,13 +2559,12 @@
p-map "^4.0.0"
prompts "^2.4.2"
react-dev-utils "^12.0.1"
- react-helmet-async "^1.3.0"
+ react-helmet-async "npm:@slorber/react-helmet-async@1.3.0"
react-loadable "npm:@docusaurus/react-loadable@6.0.0"
react-loadable-ssr-addon-v5-slorber "^1.0.1"
react-router "^5.3.4"
react-router-config "^5.1.1"
react-router-dom "^5.3.4"
- rtl-detect "^1.0.4"
semver "^7.5.4"
serve-handler "^6.1.6"
shelljs "^0.8.5"
@@ -2591,10 +2585,10 @@
postcss-sort-media-queries "^5.2.0"
tslib "^2.6.0"
-"@docusaurus/cssnano-preset@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.2.tgz#007e7150b099ea2e9e874dd48a809614c628a335"
- integrity sha512-mBkVa4QMHRwCFCVLYdBlOZuAT1iVVsS7GGSgliSVAeTOagP/AbtlBsCVrBs+keEuDuRF1w/6QEcqDoZe9fa5pw==
+"@docusaurus/cssnano-preset@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.7.0.tgz#8fe8f2c3acbd32384b69e14983b9a63c98cae34e"
+ integrity sha512-X9GYgruZBSOozg4w4dzv9uOz8oK/EpPVQXkp0MM6Tsgp/nRIU9hJzJ0Pxg1aRa3xCeEQTOimZHcocQFlLwYajQ==
dependencies:
cssnano-preset-advanced "^6.1.2"
postcss "^8.4.38"
@@ -2609,10 +2603,10 @@
chalk "^4.1.2"
tslib "^2.6.0"
-"@docusaurus/logger@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.6.2.tgz#4f73f82b33e1d432f3940fc208b3c0646ca5549c"
- integrity sha512-1p4IQhhgLyIfsey4UAdAIW69aUE1Ei6O91Nsw30ryZeDWSG5dh4o3zaRGOLxfAX69Ac/yDm6YCwJOafUxL6Vxg==
+"@docusaurus/logger@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.7.0.tgz#07ecc2f460c4d2382df4991f9ce4e348e90af04c"
+ integrity sha512-z7g62X7bYxCYmeNNuO9jmzxLQG95q9QxINCwpboVcNff3SJiHJbGrarxxOVMVmAh1MsrSfxWkVGv4P41ktnFsA==
dependencies:
chalk "^4.1.2"
tslib "^2.6.0"
@@ -2647,14 +2641,14 @@
vfile "^6.0.1"
webpack "^5.88.1"
-"@docusaurus/mdx-loader@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.6.2.tgz#d240974b0e754d5a5d8eb3f9d0a00a2055fabc68"
- integrity sha512-7fbRmNgF3CR96Ja82Ya0/Cdu1OL9UJ/22llNMY8lr5gAbw718Y5ryXMVRIYn0JNLTiSxzgtvW4DIsUWEB8NMpw==
+"@docusaurus/mdx-loader@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.7.0.tgz#5890c6e7a5b68cb1d066264ac5290cdcd59d4ecc"
+ integrity sha512-OFBG6oMjZzc78/U3WNPSHs2W9ZJ723ewAcvVJaqS0VgyeUfmzUV8f1sv+iUHA0DtwiR5T5FjOxj6nzEE8LY6VA==
dependencies:
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
"@mdx-js/mdx" "^3.0.0"
"@slorber/remark-comment" "^1.0.0"
escape-html "^1.0.3"
@@ -2690,32 +2684,32 @@
react-helmet-async "*"
react-loadable "npm:@docusaurus/react-loadable@6.0.0"
-"@docusaurus/module-type-aliases@3.6.2", "@docusaurus/module-type-aliases@^3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.2.tgz#7432618696668acc9a7cfb47de66c6987cd57680"
- integrity sha512-NrJkL2rLTCjHtWOqUvWzwqvJrsKLj0gVJeV6q5yeKdKKgItietcTf2fTRkM9LHKSUN8CBDXxwHABeQvTahvmXQ==
+"@docusaurus/module-type-aliases@3.7.0", "@docusaurus/module-type-aliases@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.7.0.tgz#15c0745b829c6966c5b3b2c2527c72b54830b0e5"
+ integrity sha512-g7WdPqDNaqA60CmBrr0cORTrsOit77hbsTj7xE2l71YhBn79sxdm7WMK7wfhcaafkbpIh7jv5ef5TOpf1Xv9Lg==
dependencies:
- "@docusaurus/types" "3.6.2"
+ "@docusaurus/types" "3.7.0"
"@types/history" "^4.7.11"
"@types/react" "*"
"@types/react-router-config" "*"
"@types/react-router-dom" "*"
- react-helmet-async "*"
+ react-helmet-async "npm:@slorber/react-helmet-async@*"
react-loadable "npm:@docusaurus/react-loadable@6.0.0"
-"@docusaurus/plugin-content-blog@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.2.tgz#b197dd920e380bf1394995215ba7fee8019baa82"
- integrity sha512-6bJxr6Or4NslEVH3BJuPH30kUWiqUjDRdGPhvxpHmt9W/RY2/6u72WICG3bW3dLFxJ/2uDLBU92lHnatpvo7Ew==
- dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/mdx-loader" "3.6.2"
- "@docusaurus/theme-common" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-common" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+"@docusaurus/plugin-content-blog@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.7.0.tgz#7bd69de87a1f3adb652e1473ef5b7ccc9468f47e"
+ integrity sha512-EFLgEz6tGHYWdPU0rK8tSscZwx+AsyuBW/r+tNig2kbccHYGUJmZtYN38GjAa3Fda4NU+6wqUO5kTXQSRBQD3g==
+ dependencies:
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/mdx-loader" "3.7.0"
+ "@docusaurus/theme-common" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-common" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
cheerio "1.0.0-rc.12"
feed "^4.2.2"
fs-extra "^11.1.1"
@@ -2727,20 +2721,20 @@
utility-types "^3.10.0"
webpack "^5.88.1"
-"@docusaurus/plugin-content-docs@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.2.tgz#3a8b4b162a2688e5855c04ed6c4ec0b6951619a0"
- integrity sha512-e6WW1g10RIXXLN/rrtqTi/FyJ1Hj3X9Mmgz4V11/0pDCxIGGI8m4ocbAglUlLtgvbLD5viNLefl/NwbOW3JXiQ==
- dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/mdx-loader" "3.6.2"
- "@docusaurus/module-type-aliases" "3.6.2"
- "@docusaurus/theme-common" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-common" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+"@docusaurus/plugin-content-docs@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz#297a549e926ee2b1147b5242af6f21532c7b107c"
+ integrity sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ==
+ dependencies:
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/mdx-loader" "3.7.0"
+ "@docusaurus/module-type-aliases" "3.7.0"
+ "@docusaurus/theme-common" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-common" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
"@types/react-router-config" "^5.0.7"
combine-promises "^1.1.0"
fs-extra "^11.1.1"
@@ -2773,115 +2767,130 @@
utility-types "^3.10.0"
webpack "^5.88.1"
-"@docusaurus/plugin-content-pages@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.2.tgz#49b1a033d41841f7a8bcbbe67511609b402cc80f"
- integrity sha512-fo4NyGkw10lYHyHaTxE6TZLYnxNtCfRHeZkNK1N9pBYqe7TT2dBUNAEeVW2U3ed9m6YuB7JKSQsa++GGmcP+6g==
- dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/mdx-loader" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+"@docusaurus/plugin-content-pages@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.7.0.tgz#c4a8f7237872236aacb77665822c474c0a00e91a"
+ integrity sha512-YJSU3tjIJf032/Aeao8SZjFOrXJbz/FACMveSMjLyMH4itQyZ2XgUIzt4y+1ISvvk5zrW4DABVT2awTCqBkx0Q==
+ dependencies:
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/mdx-loader" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
fs-extra "^11.1.1"
tslib "^2.6.0"
webpack "^5.88.1"
-"@docusaurus/plugin-debug@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.6.2.tgz#6983f64954fe69a51b65b2d9431bdf0b5ccf1884"
- integrity sha512-T/eS3VvHElpeV5S8uwp7Si4ujEynmgFtJLvA2CSa5pzQuOF1EEghF9nekAIj0cWtDHsqNUDZNr8hK1brivFXSg==
+"@docusaurus/plugin-debug@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.7.0.tgz#a4fd45132e40cffe96bb51f48e89982a1cb8e194"
+ integrity sha512-Qgg+IjG/z4svtbCNyTocjIwvNTNEwgRjSXXSJkKVG0oWoH0eX/HAPiu+TS1HBwRPQV+tTYPWLrUypYFepfujZA==
dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils" "3.6.2"
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
fs-extra "^11.1.1"
react-json-view-lite "^1.2.0"
tslib "^2.6.0"
-"@docusaurus/plugin-google-analytics@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.2.tgz#4266b4b2273998e87fa733d932d5b464c2a10b21"
- integrity sha512-B7ihrr3wz8e4XqW+dIAtq844u3Z83u5CeiL1xrCqzFH+vDCjUZHTamS3zKXNcgi6YVVe6hUQXPG15ltaqQaVPQ==
+"@docusaurus/plugin-google-analytics@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.7.0.tgz#d20f665e810fb2295d1c1bbfe13398c5ff42eb24"
+ integrity sha512-otIqiRV/jka6Snjf+AqB360XCeSv7lQC+DKYW+EUZf6XbuE8utz5PeUQ8VuOcD8Bk5zvT1MC4JKcd5zPfDuMWA==
dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
tslib "^2.6.0"
-"@docusaurus/plugin-google-gtag@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.2.tgz#23f70f7a05e61cfb9d9d7ee18dbff3ef2b129f2c"
- integrity sha512-V8ijI6qddAAkJ0vd8sjZ7S/apRTLJn9dAwvj/rSMd93witGdKINemL+9TyfLkhcXKTxyqRT8zKdu8ewjPXqKHg==
+"@docusaurus/plugin-google-gtag@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.7.0.tgz#a48638dfd132858060458b875a440b6cbda6bf8f"
+ integrity sha512-M3vrMct1tY65ModbyeDaMoA+fNJTSPe5qmchhAbtqhDD/iALri0g9LrEpIOwNaoLmm6lO88sfBUADQrSRSGSWA==
dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
"@types/gtag.js" "^0.0.12"
tslib "^2.6.0"
-"@docusaurus/plugin-google-tag-manager@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.2.tgz#36ab95fcd5c1bf96fd18c0cf9b208bb428b81242"
- integrity sha512-fnWQ5FdN9f8c8VTgjaQ98208Y+d/JjHhD506rWIIL9rt1cJOf29XElxvOeKpMJadfkgY5KLZSAiHkGt+4qgN4g==
+"@docusaurus/plugin-google-tag-manager@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.7.0.tgz#0a4390f4b0e760d073bdb1905436bfa7bd71356b"
+ integrity sha512-X8U78nb8eiMiPNg3jb9zDIVuuo/rE1LjGDGu+5m5CX4UBZzjMy+klOY2fNya6x8ACyE/L3K2erO1ErheP55W/w==
dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
tslib "^2.6.0"
-"@docusaurus/plugin-sitemap@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.2.tgz#c8ff7cf82bd5d943a13bb8d0ae690080a025029e"
- integrity sha512-qcAQAP1Ot0dZpeRoJ0L/Zck5FVDkll2IleVZQLzxeRVDZIw1P9/TK7/Aw1w2pmH7dmw/Cwk/cLSVRvLAmp9k7A==
- dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-common" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+"@docusaurus/plugin-sitemap@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.7.0.tgz#2c1bf9de26aeda455df6f77748e5887ace39b2d7"
+ integrity sha512-bTRT9YLZ/8I/wYWKMQke18+PF9MV8Qub34Sku6aw/vlZ/U+kuEuRpQ8bTcNOjaTSfYsWkK4tTwDMHK2p5S86cA==
+ dependencies:
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-common" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
fs-extra "^11.1.1"
sitemap "^7.1.1"
tslib "^2.6.0"
-"@docusaurus/preset-classic@^3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.6.2.tgz#5ec801fa317123ba8458af3105eca8eac78a49bc"
- integrity sha512-r2n5eHdhiNSrJGsrrYcw+WsyStmXxe0ZG3RdA9LVyK5+jBHM8blrUWJEDugnzCNbyhUzhdtcmgCC9fhdAvKuQw==
- dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/plugin-content-blog" "3.6.2"
- "@docusaurus/plugin-content-docs" "3.6.2"
- "@docusaurus/plugin-content-pages" "3.6.2"
- "@docusaurus/plugin-debug" "3.6.2"
- "@docusaurus/plugin-google-analytics" "3.6.2"
- "@docusaurus/plugin-google-gtag" "3.6.2"
- "@docusaurus/plugin-google-tag-manager" "3.6.2"
- "@docusaurus/plugin-sitemap" "3.6.2"
- "@docusaurus/theme-classic" "3.6.2"
- "@docusaurus/theme-common" "3.6.2"
- "@docusaurus/theme-search-algolia" "3.6.2"
- "@docusaurus/types" "3.6.2"
-
-"@docusaurus/theme-classic@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.6.2.tgz#4c2770d3609176dd2462dfb0cb4d0b3d3010404b"
- integrity sha512-bCdOPqPNezhLx+hgNVO2Cf+8/1AHa9uHDOqTx/CKAx2I0J/jV9G+6JiMtpSRKGNfBoLT1O+56/7+WtkOf54xTw==
- dependencies:
- "@docusaurus/core" "3.6.2"
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/mdx-loader" "3.6.2"
- "@docusaurus/module-type-aliases" "3.6.2"
- "@docusaurus/plugin-content-blog" "3.6.2"
- "@docusaurus/plugin-content-docs" "3.6.2"
- "@docusaurus/plugin-content-pages" "3.6.2"
- "@docusaurus/theme-common" "3.6.2"
- "@docusaurus/theme-translations" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-common" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
+"@docusaurus/plugin-svgr@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.7.0.tgz#018e89efd615d5fde77b891a8c2aadf203013f5d"
+ integrity sha512-HByXIZTbc4GV5VAUkZ2DXtXv1Qdlnpk3IpuImwSnEzCDBkUMYcec5282hPjn6skZqB25M1TYCmWS91UbhBGxQg==
+ dependencies:
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
+ "@svgr/core" "8.1.0"
+ "@svgr/webpack" "^8.1.0"
+ tslib "^2.6.0"
+ webpack "^5.88.1"
+
+"@docusaurus/preset-classic@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.7.0.tgz#f6656a04ae6a4877523dbd04f7c491632e4003b9"
+ integrity sha512-nPHj8AxDLAaQXs+O6+BwILFuhiWbjfQWrdw2tifOClQoNfuXDjfjogee6zfx6NGHWqshR23LrcN115DmkHC91Q==
+ dependencies:
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/plugin-content-blog" "3.7.0"
+ "@docusaurus/plugin-content-docs" "3.7.0"
+ "@docusaurus/plugin-content-pages" "3.7.0"
+ "@docusaurus/plugin-debug" "3.7.0"
+ "@docusaurus/plugin-google-analytics" "3.7.0"
+ "@docusaurus/plugin-google-gtag" "3.7.0"
+ "@docusaurus/plugin-google-tag-manager" "3.7.0"
+ "@docusaurus/plugin-sitemap" "3.7.0"
+ "@docusaurus/plugin-svgr" "3.7.0"
+ "@docusaurus/theme-classic" "3.7.0"
+ "@docusaurus/theme-common" "3.7.0"
+ "@docusaurus/theme-search-algolia" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+
+"@docusaurus/theme-classic@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.7.0.tgz#b483bd8e2923b6994b5f47238884b9f8984222c5"
+ integrity sha512-MnLxG39WcvLCl4eUzHr0gNcpHQfWoGqzADCly54aqCofQX6UozOS9Th4RK3ARbM9m7zIRv3qbhggI53dQtx/hQ==
+ dependencies:
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/mdx-loader" "3.7.0"
+ "@docusaurus/module-type-aliases" "3.7.0"
+ "@docusaurus/plugin-content-blog" "3.7.0"
+ "@docusaurus/plugin-content-docs" "3.7.0"
+ "@docusaurus/plugin-content-pages" "3.7.0"
+ "@docusaurus/theme-common" "3.7.0"
+ "@docusaurus/theme-translations" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-common" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
"@mdx-js/react" "^3.0.0"
clsx "^2.0.0"
copy-text-to-clipboard "^3.2.0"
@@ -2914,15 +2923,15 @@
tslib "^2.6.0"
utility-types "^3.10.0"
-"@docusaurus/theme-common@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.6.2.tgz#a520d9053b6ea0fa913d42898d35f73ed5ca3b9b"
- integrity sha512-lfgsL064KEHpCkgGUc0OYoUPCpYfzggp6Hof8sz59UuKiLvb/Z7raewE9/NfocrJ2HZI17rLgMX3SQlRDh/5gg==
+"@docusaurus/theme-common@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.7.0.tgz#18bf5c6b149a701f4bd865715ee8b595aa40b354"
+ integrity sha512-8eJ5X0y+gWDsURZnBfH0WabdNm8XMCXHv8ENy/3Z/oQKwaB/EHt5lP9VsTDTf36lKEp0V6DjzjFyFIB+CetL0A==
dependencies:
- "@docusaurus/mdx-loader" "3.6.2"
- "@docusaurus/module-type-aliases" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-common" "3.6.2"
+ "@docusaurus/mdx-loader" "3.7.0"
+ "@docusaurus/module-type-aliases" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-common" "3.7.0"
"@types/history" "^4.7.11"
"@types/react" "*"
"@types/react-router-config" "*"
@@ -2932,21 +2941,21 @@
tslib "^2.6.0"
utility-types "^3.10.0"
-"@docusaurus/theme-search-algolia@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.2.tgz#b03b7d35a385004d089d000be764abdfb3fa5721"
- integrity sha512-SFLS+Rq8Cg2yepnHucA9sRpIR97yHvZWlCgMzBLunV3KHbB6hD2h5HPhFV39wYHYCjJUAOH1lX9poJ1qKYuSvg==
- dependencies:
- "@docsearch/react" "^3.5.2"
- "@docusaurus/core" "3.6.2"
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/plugin-content-docs" "3.6.2"
- "@docusaurus/theme-common" "3.6.2"
- "@docusaurus/theme-translations" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-validation" "3.6.2"
- algoliasearch "^4.18.0"
- algoliasearch-helper "^3.13.3"
+"@docusaurus/theme-search-algolia@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.7.0.tgz#2108ddf0b300b82de7c2b9ff9fcf62121b66ea37"
+ integrity sha512-Al/j5OdzwRU1m3falm+sYy9AaB93S1XF1Lgk9Yc6amp80dNxJVplQdQTR4cYdzkGtuQqbzUA8+kaoYYO0RbK6g==
+ dependencies:
+ "@docsearch/react" "^3.8.1"
+ "@docusaurus/core" "3.7.0"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/plugin-content-docs" "3.7.0"
+ "@docusaurus/theme-common" "3.7.0"
+ "@docusaurus/theme-translations" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-validation" "3.7.0"
+ algoliasearch "^5.17.1"
+ algoliasearch-helper "^3.22.6"
clsx "^2.0.0"
eta "^2.2.0"
fs-extra "^11.1.1"
@@ -2954,10 +2963,10 @@
tslib "^2.6.0"
utility-types "^3.10.0"
-"@docusaurus/theme-translations@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.6.2.tgz#ff6d2588aa9bf9fb1e07465def067529d5668665"
- integrity sha512-LIWrYoDUsOTKmb0c7IQzawiPUTAaczBs5IOx6srxOWoTHVUMLzJCkl5Y6whfuRrnul8G05qv2vk238bN5Ko62g==
+"@docusaurus/theme-translations@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.7.0.tgz#0891aedc7c7040afcb3a1b34051d3a69096d0d25"
+ integrity sha512-Ewq3bEraWDmienM6eaNK7fx+/lHMtGDHQyd1O+4+3EsDxxUmrzPkV7Ct3nBWTuE0MsoZr3yNwQVKjllzCMuU3g==
dependencies:
fs-extra "^11.1.1"
tslib "^2.6.0"
@@ -2985,17 +2994,17 @@
webpack "^5.88.1"
webpack-merge "^5.9.0"
-"@docusaurus/types@3.6.2", "@docusaurus/types@^3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.6.2.tgz#bd69c4c99b535b67f01276dc186622e0b1fc1305"
- integrity sha512-117Wsk6xXrWEAsCYCXS3TGJv5tkdIZDcd7T/V0UJvKYmY0gyVPPcEQChy8yTdjbIkbB2q4fa7Jpox72Qv86mqQ==
+"@docusaurus/types@3.7.0", "@docusaurus/types@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.7.0.tgz#3f5a68a60f80ecdcb085666da1d68f019afda943"
+ integrity sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==
dependencies:
"@mdx-js/mdx" "^3.0.0"
"@types/history" "^4.7.11"
"@types/react" "*"
commander "^5.1.0"
joi "^17.9.2"
- react-helmet-async "^1.3.0"
+ react-helmet-async "npm:@slorber/react-helmet-async@1.3.0"
utility-types "^3.10.0"
webpack "^5.95.0"
webpack-merge "^5.9.0"
@@ -3007,12 +3016,12 @@
dependencies:
tslib "^2.6.0"
-"@docusaurus/utils-common@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.6.2.tgz#3367572d72090b7f17e721af7f020f8e39931662"
- integrity sha512-dr5wK+OyU2QAWxG7S5siD2bPgS7+ZeqWHfgLNHZ5yalaZf8TbeNNLqydfngukAY56BGZN0NbMkX6jGIr7ZF0sA==
+"@docusaurus/utils-common@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.7.0.tgz#1bef52837d321db5dd2361fc07f3416193b5d029"
+ integrity sha512-IZeyIfCfXy0Mevj6bWNg7DG7B8G+S6o6JVpddikZtWyxJguiQ7JYr0SIZ0qWd8pGNuMyVwriWmbWqMnK7Y5PwA==
dependencies:
- "@docusaurus/types" "3.6.2"
+ "@docusaurus/types" "3.7.0"
tslib "^2.6.0"
"@docusaurus/utils-validation@3.5.2", "@docusaurus/utils-validation@^2 || ^3":
@@ -3029,14 +3038,14 @@
lodash "^4.17.21"
tslib "^2.6.0"
-"@docusaurus/utils-validation@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.6.2.tgz#62b97a0d72694c85fa63928c494dd238a84c991f"
- integrity sha512-Y3EwblDz72KOcobb5t2zlhHSmrfE8EaHusPJ96Kx2JYtNXL2omqCoOb6FpaXWhES75wvjUpkFLYfiNqAqEov8g==
+"@docusaurus/utils-validation@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.7.0.tgz#dc0786fb633ae5cef8e93337bf21c2a826c7ecbd"
+ integrity sha512-w8eiKk8mRdN+bNfeZqC4nyFoxNyI1/VExMKAzD9tqpJfLLbsa46Wfn5wcKH761g9WkKh36RtFV49iL9lh1DYBA==
dependencies:
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/utils" "3.6.2"
- "@docusaurus/utils-common" "3.6.2"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/utils" "3.7.0"
+ "@docusaurus/utils-common" "3.7.0"
fs-extra "^11.2.0"
joi "^17.9.2"
js-yaml "^4.1.0"
@@ -3069,15 +3078,14 @@
utility-types "^3.10.0"
webpack "^5.88.1"
-"@docusaurus/utils@3.6.2":
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.6.2.tgz#727299c2051eee04c1b431bc6ccd55fd4e5a0d52"
- integrity sha512-oxnpUcFZGE3uPCDoXr8GJriB3VWM9sFjPedFidX3Fsz87l1NZNc1wtbKPfQ7GYFDMYo2IGlAv5+47Me9RkM6lg==
+"@docusaurus/utils@3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.7.0.tgz#dfdebd63524c52b498f36b2907a3b2261930b9bb"
+ integrity sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA==
dependencies:
- "@docusaurus/logger" "3.6.2"
- "@docusaurus/types" "3.6.2"
- "@docusaurus/utils-common" "3.6.2"
- "@svgr/webpack" "^8.1.0"
+ "@docusaurus/logger" "3.7.0"
+ "@docusaurus/types" "3.7.0"
+ "@docusaurus/utils-common" "3.7.0"
escape-string-regexp "^4.0.0"
file-loader "^6.2.0"
fs-extra "^11.1.1"
@@ -4237,33 +4245,31 @@ ajv@^8.0.0, ajv@^8.9.0:
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
-algoliasearch-helper@^3.13.3:
- version "3.22.4"
- resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.22.4.tgz#a9de9b69a79528c65d0149978c0d5bece7240484"
- integrity sha512-fvBCywguW9f+939S6awvRMstqMF1XXcd2qs1r1aGqL/PJ1go/DqN06tWmDVmhCDqBJanm++imletrQWf0G2S1g==
+algoliasearch-helper@^3.22.6:
+ version "3.23.0"
+ resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.23.0.tgz#638e766bf6be2308b8dcda3282e47aff66438712"
+ integrity sha512-8CK4Gb/ju4OesAYcS+mjBpNiVA7ILWpg7D2vhBZohh0YkG8QT1KZ9LG+8+EntQBUGoKtPy06OFhiwP4f5zzAQg==
dependencies:
"@algolia/events" "^4.0.1"
-algoliasearch@^4.18.0, algoliasearch@^4.19.1:
- version "4.24.0"
- resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.24.0.tgz#b953b3e2309ef8f25da9de311b95b994ac918275"
- integrity sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==
- dependencies:
- "@algolia/cache-browser-local-storage" "4.24.0"
- "@algolia/cache-common" "4.24.0"
- "@algolia/cache-in-memory" "4.24.0"
- "@algolia/client-account" "4.24.0"
- "@algolia/client-analytics" "4.24.0"
- "@algolia/client-common" "4.24.0"
- "@algolia/client-personalization" "4.24.0"
- "@algolia/client-search" "4.24.0"
- "@algolia/logger-common" "4.24.0"
- "@algolia/logger-console" "4.24.0"
- "@algolia/recommend" "4.24.0"
- "@algolia/requester-browser-xhr" "4.24.0"
- "@algolia/requester-common" "4.24.0"
- "@algolia/requester-node-http" "4.24.0"
- "@algolia/transporter" "4.24.0"
+algoliasearch@^5.14.2, algoliasearch@^5.17.1:
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.19.0.tgz#2a1490bb46a937515797fac30b2d1503fb028536"
+ integrity sha512-zrLtGhC63z3sVLDDKGW+SlCRN9eJHFTgdEmoAOpsVh6wgGL1GgTTDou7tpCBjevzgIvi3AIyDAQO3Xjbg5eqZg==
+ dependencies:
+ "@algolia/client-abtesting" "5.19.0"
+ "@algolia/client-analytics" "5.19.0"
+ "@algolia/client-common" "5.19.0"
+ "@algolia/client-insights" "5.19.0"
+ "@algolia/client-personalization" "5.19.0"
+ "@algolia/client-query-suggestions" "5.19.0"
+ "@algolia/client-search" "5.19.0"
+ "@algolia/ingestion" "1.19.0"
+ "@algolia/monitoring" "1.19.0"
+ "@algolia/recommend" "5.19.0"
+ "@algolia/requester-browser-xhr" "5.19.0"
+ "@algolia/requester-fetch" "5.19.0"
+ "@algolia/requester-node-http" "5.19.0"
ansi-align@^3.0.1:
version "3.0.1"
@@ -9605,6 +9611,17 @@ react-helmet-async@^1.3.0:
react-fast-compare "^3.2.0"
shallowequal "^1.1.0"
+"react-helmet-async@npm:@slorber/react-helmet-async@*", "react-helmet-async@npm:@slorber/react-helmet-async@1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz#11fbc6094605cf60aa04a28c17e0aab894b4ecff"
+ integrity sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ invariant "^2.2.4"
+ prop-types "^15.7.2"
+ react-fast-compare "^3.2.0"
+ shallowequal "^1.1.0"
+
react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"