handsontable 16.2.0 → 17.0.0-rc3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleColumns.js +0 -3
- package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleColumns.mjs +0 -3
- package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleRows.js +0 -3
- package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleRows.mjs +0 -3
- package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleColumns.js +0 -3
- package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleColumns.mjs +0 -3
- package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleRows.js +0 -3
- package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleRows.mjs +0 -3
- package/3rdparty/walkontable/src/calculator/calculationType/renderedAllColumns.js +0 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedAllColumns.mjs +0 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedAllRows.js +0 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedAllRows.mjs +0 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +0 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +0 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +0 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +0 -1
- package/3rdparty/walkontable/src/calculator/viewportBase.js +0 -3
- package/3rdparty/walkontable/src/calculator/viewportBase.mjs +0 -3
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +0 -2
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +0 -2
- package/3rdparty/walkontable/src/calculator/viewportRows.js +0 -2
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +0 -2
- package/3rdparty/walkontable/src/cell/coords.js +0 -1
- package/3rdparty/walkontable/src/cell/coords.mjs +0 -1
- package/3rdparty/walkontable/src/cell/range.js +0 -2
- package/3rdparty/walkontable/src/cell/range.mjs +0 -2
- package/3rdparty/walkontable/src/core/_base.js +0 -2
- package/3rdparty/walkontable/src/core/_base.mjs +0 -2
- package/3rdparty/walkontable/src/core/clone.js +0 -1
- package/3rdparty/walkontable/src/core/clone.mjs +0 -1
- package/3rdparty/walkontable/src/core/core.js +0 -1
- package/3rdparty/walkontable/src/core/core.mjs +0 -1
- package/3rdparty/walkontable/src/event.js +0 -1
- package/3rdparty/walkontable/src/event.mjs +0 -1
- package/3rdparty/walkontable/src/filter/column.js +0 -1
- package/3rdparty/walkontable/src/filter/column.mjs +0 -1
- package/3rdparty/walkontable/src/filter/row.js +0 -1
- package/3rdparty/walkontable/src/filter/row.mjs +0 -1
- package/3rdparty/walkontable/src/overlay/_base.js +6 -4
- package/3rdparty/walkontable/src/overlay/_base.mjs +6 -4
- package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
- package/3rdparty/walkontable/src/overlay/bottom.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/index.js +0 -2
- package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -2
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/top.js +2 -2
- package/3rdparty/walkontable/src/overlay/top.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +0 -1
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +0 -1
- package/3rdparty/walkontable/src/overlays.js +5 -8
- package/3rdparty/walkontable/src/overlays.mjs +5 -8
- package/3rdparty/walkontable/src/renderer/_base.js +0 -1
- package/3rdparty/walkontable/src/renderer/_base.mjs +0 -1
- package/3rdparty/walkontable/src/renderer/cells.js +0 -1
- package/3rdparty/walkontable/src/renderer/cells.mjs +0 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -2
- package/3rdparty/walkontable/src/renderer/rows.js +1 -12
- package/3rdparty/walkontable/src/renderer/rows.mjs +1 -12
- package/3rdparty/walkontable/src/renderer/table.js +0 -1
- package/3rdparty/walkontable/src/renderer/table.mjs +0 -1
- package/3rdparty/walkontable/src/scroll.js +0 -1
- package/3rdparty/walkontable/src/scroll.mjs +0 -1
- package/3rdparty/walkontable/src/selection/border/border.js +13 -26
- package/3rdparty/walkontable/src/selection/border/border.mjs +13 -26
- package/3rdparty/walkontable/src/selection/border/utils.js +0 -9
- package/3rdparty/walkontable/src/selection/border/utils.mjs +0 -9
- package/3rdparty/walkontable/src/selection/index.js +0 -2
- package/3rdparty/walkontable/src/selection/manager.js +0 -13
- package/3rdparty/walkontable/src/selection/manager.mjs +0 -13
- package/3rdparty/walkontable/src/selection/scanner.js +0 -8
- package/3rdparty/walkontable/src/selection/scanner.mjs +0 -8
- package/3rdparty/walkontable/src/settings.js +2 -2
- package/3rdparty/walkontable/src/settings.mjs +2 -2
- package/3rdparty/walkontable/src/table/master.js +1 -1
- package/3rdparty/walkontable/src/table/master.mjs +1 -1
- package/3rdparty/walkontable/src/table.js +3 -6
- package/3rdparty/walkontable/src/table.mjs +3 -6
- package/3rdparty/walkontable/src/utils/column.js +0 -1
- package/3rdparty/walkontable/src/utils/column.mjs +0 -1
- package/3rdparty/walkontable/src/utils/nodesPool.js +7 -1
- package/3rdparty/walkontable/src/utils/nodesPool.mjs +7 -1
- package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/differBasedRendererAdapter.js +100 -0
- package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/differBasedRendererAdapter.mjs +96 -0
- package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/directDomRendererAdapter.js +117 -0
- package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/directDomRendererAdapter.mjs +113 -0
- package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/index.js +19 -0
- package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/index.mjs +15 -0
- package/3rdparty/walkontable/src/utils/orderView/view.js +16 -58
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +16 -58
- package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.js +0 -2
- package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.mjs +0 -2
- package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.js +0 -2
- package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.mjs +0 -2
- package/3rdparty/walkontable/src/utils/orderView/viewSize.js +0 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +0 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +0 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +0 -1
- package/3rdparty/walkontable/src/utils/row.js +0 -1
- package/3rdparty/walkontable/src/utils/row.mjs +0 -1
- package/3rdparty/walkontable/src/viewport.js +0 -2
- package/3rdparty/walkontable/src/viewport.mjs +0 -2
- package/CHANGELOG.md +36 -1
- package/README.md +4 -23
- package/base.js +13 -2
- package/base.mjs +14 -3
- package/cellTypes/autocompleteType/accessors/valueSetter.js +2 -4
- package/cellTypes/autocompleteType/accessors/valueSetter.mjs +1 -3
- package/cellTypes/autocompleteType/autocompleteType.js +2 -1
- package/cellTypes/autocompleteType/autocompleteType.mjs +2 -1
- package/cellTypes/dropdownType/dropdownType.js +2 -1
- package/cellTypes/dropdownType/dropdownType.mjs +2 -1
- package/cellTypes/index.d.ts +6 -0
- package/cellTypes/index.js +12 -0
- package/cellTypes/index.mjs +7 -1
- package/cellTypes/intlDateType/index.d.ts +1 -0
- package/cellTypes/intlDateType/index.js +6 -0
- package/cellTypes/intlDateType/index.mjs +1 -0
- package/cellTypes/intlDateType/intlDateType.d.ts +23 -0
- package/cellTypes/intlDateType/intlDateType.js +16 -0
- package/cellTypes/intlDateType/intlDateType.mjs +13 -0
- package/cellTypes/intlTimeType/index.d.ts +1 -0
- package/cellTypes/intlTimeType/index.js +6 -0
- package/cellTypes/intlTimeType/index.mjs +1 -0
- package/cellTypes/intlTimeType/intlTimeType.d.ts +23 -0
- package/cellTypes/intlTimeType/intlTimeType.js +16 -0
- package/cellTypes/intlTimeType/intlTimeType.mjs +13 -0
- package/cellTypes/multiSelectType/accessors/index.js +7 -0
- package/cellTypes/multiSelectType/accessors/index.mjs +2 -0
- package/cellTypes/multiSelectType/accessors/valueGetter.js +20 -0
- package/cellTypes/multiSelectType/accessors/valueGetter.mjs +16 -0
- package/cellTypes/multiSelectType/accessors/valueSetter.js +27 -0
- package/cellTypes/multiSelectType/accessors/valueSetter.mjs +23 -0
- package/cellTypes/multiSelectType/index.js +6 -0
- package/cellTypes/multiSelectType/index.mjs +1 -0
- package/cellTypes/multiSelectType/multiSelectType.js +19 -0
- package/cellTypes/multiSelectType/multiSelectType.mjs +16 -0
- package/cellTypes/numericType/numericType.d.ts +3 -1
- package/cellTypes/numericType/numericType.js +2 -1
- package/cellTypes/numericType/numericType.mjs +3 -2
- package/cellTypes/registry.js +2 -2
- package/cellTypes/registry.mjs +2 -2
- package/common.d.ts +3 -1
- package/core/coordsMapper/index.js +0 -2
- package/core/coordsMapper/rangeToRenderableMapper.js +0 -1
- package/core/coordsMapper/rangeToRenderableMapper.mjs +0 -1
- package/core/hooks/bucket.js +0 -14
- package/core/hooks/bucket.mjs +0 -14
- package/core/hooks/constants.js +0 -28
- package/core/hooks/constants.mjs +0 -28
- package/core/hooks/index.d.ts +0 -3
- package/core/hooks/index.js +0 -2
- package/core/hooks/index.mjs +0 -2
- package/core/index.js +0 -2
- package/core.d.ts +0 -5
- package/core.js +193 -104
- package/core.mjs +194 -105
- package/dataMap/dataMap.js +6 -8
- package/dataMap/dataMap.mjs +6 -8
- package/dataMap/dataSource.js +0 -4
- package/dataMap/dataSource.mjs +0 -4
- package/dataMap/index.js +5 -0
- package/dataMap/index.mjs +3 -1
- package/dataMap/metaManager/index.js +2 -4
- package/dataMap/metaManager/index.mjs +2 -4
- package/dataMap/metaManager/lazyFactoryMap.js +0 -11
- package/dataMap/metaManager/lazyFactoryMap.mjs +0 -11
- package/dataMap/metaManager/metaLayers/cellMeta.js +0 -2
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +0 -2
- package/dataMap/metaManager/metaLayers/columnMeta.js +0 -1
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +0 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +0 -1
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +0 -1
- package/dataMap/metaManager/metaLayers/tableMeta.js +0 -1
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +0 -1
- package/dataMap/metaManager/metaSchema.js +862 -79
- package/dataMap/metaManager/metaSchema.mjs +862 -79
- package/dataMap/metaManager/mods/dynamicCellMeta.js +0 -8
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +0 -8
- package/dataMap/metaManager/mods/extendMetaProperties.js +23 -15
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +23 -15
- package/dataMap/metaManager/utils.js +2 -9
- package/dataMap/metaManager/utils.mjs +2 -9
- package/dataMap/replaceData.js +6 -3
- package/dataMap/replaceData.mjs +6 -3
- package/dataMap/sourceDataValidator.js +122 -0
- package/dataMap/sourceDataValidator.mjs +117 -0
- package/dist/handsontable.full.js +57523 -54761
- package/dist/handsontable.full.min.js +228 -213
- package/dist/handsontable.js +39604 -37938
- package/dist/handsontable.min.js +51 -51
- package/dist/languages/all.js +1 -1
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.js +1 -1
- package/dist/languages/ar-AR.min.js +1 -1
- package/dist/languages/cs-CZ.js +1 -1
- package/dist/languages/cs-CZ.min.js +1 -1
- package/dist/languages/de-CH.js +1 -1
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.js +1 -1
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.js +1 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.js +1 -1
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fa-IR.js +1 -1
- package/dist/languages/fa-IR.min.js +1 -1
- package/dist/languages/fr-FR.js +1 -1
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/hr-HR.js +1 -1
- package/dist/languages/hr-HR.min.js +1 -1
- package/dist/languages/it-IT.js +1 -1
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.js +1 -1
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.js +1 -1
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.js +1 -1
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.js +1 -1
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.js +1 -1
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.js +1 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.js +1 -1
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.js +1 -1
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/sr-SP.js +1 -1
- package/dist/languages/sr-SP.min.js +1 -1
- package/dist/languages/zh-CN.js +1 -1
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.js +1 -1
- package/dist/languages/zh-TW.min.js +1 -1
- package/dist/themes/classic.js +467 -0
- package/dist/themes/classic.min.js +31 -0
- package/dist/themes/horizon.js +467 -0
- package/dist/themes/horizon.min.js +31 -0
- package/dist/themes/main.js +467 -0
- package/dist/themes/main.min.js +31 -0
- package/dist/themes/static/variables/colors/ant.js +137 -0
- package/dist/themes/static/variables/colors/ant.min.js +31 -0
- package/dist/themes/static/variables/colors/classic.js +137 -0
- package/dist/themes/static/variables/colors/classic.min.js +31 -0
- package/dist/themes/static/variables/colors/horizon.js +137 -0
- package/dist/themes/static/variables/colors/horizon.min.js +31 -0
- package/dist/themes/static/variables/colors/main.js +137 -0
- package/dist/themes/static/variables/colors/main.min.js +31 -0
- package/dist/themes/static/variables/colors/material.js +137 -0
- package/dist/themes/static/variables/colors/material.min.js +31 -0
- package/dist/themes/static/variables/colors/shadcn.js +137 -0
- package/dist/themes/static/variables/colors/shadcn.min.js +31 -0
- package/dist/themes/static/variables/density.js +163 -0
- package/dist/themes/static/variables/density.min.js +31 -0
- package/dist/themes/static/variables/helpers/iconsMap.js +240 -0
- package/dist/themes/static/variables/helpers/iconsMap.min.js +31 -0
- package/dist/themes/static/variables/icons/horizon.js +135 -0
- package/dist/themes/static/variables/icons/horizon.min.js +31 -0
- package/dist/themes/static/variables/icons/main.js +135 -0
- package/dist/themes/static/variables/icons/main.min.js +31 -0
- package/dist/themes/static/variables/sizing.js +126 -0
- package/dist/themes/static/variables/sizing.min.js +31 -0
- package/dist/themes/static/variables/tokens/classic.js +375 -0
- package/dist/themes/static/variables/tokens/classic.min.js +31 -0
- package/dist/themes/static/variables/tokens/horizon.js +375 -0
- package/dist/themes/static/variables/tokens/horizon.min.js +31 -0
- package/dist/themes/static/variables/tokens/main.js +375 -0
- package/dist/themes/static/variables/tokens/main.min.js +31 -0
- package/editorManager.js +0 -1
- package/editorManager.mjs +0 -1
- package/editors/autocompleteEditor/autocompleteEditor.js +5 -23
- package/editors/autocompleteEditor/autocompleteEditor.mjs +6 -24
- package/editors/baseEditor/baseEditor.js +18 -13
- package/editors/baseEditor/baseEditor.mjs +18 -13
- package/editors/dateEditor/dateEditor.js +9 -3
- package/editors/dateEditor/dateEditor.mjs +9 -3
- package/editors/dropdownEditor/dropdownEditor.js +0 -2
- package/editors/dropdownEditor/dropdownEditor.mjs +0 -2
- package/editors/factory.d.ts +48 -0
- package/editors/factory.js +372 -0
- package/editors/factory.mjs +368 -0
- package/editors/handsontableEditor/handsontableEditor.js +0 -1
- package/editors/handsontableEditor/handsontableEditor.mjs +0 -1
- package/editors/index.d.ts +7 -0
- package/editors/index.js +14 -0
- package/editors/index.mjs +9 -2
- package/editors/intlDateEditor/index.d.ts +1 -0
- package/editors/intlDateEditor/index.js +6 -0
- package/editors/intlDateEditor/index.mjs +1 -0
- package/editors/intlDateEditor/intlDateEditor.d.ts +7 -0
- package/editors/intlDateEditor/intlDateEditor.js +76 -0
- package/editors/intlDateEditor/intlDateEditor.mjs +72 -0
- package/editors/intlTimeEditor/index.d.ts +1 -0
- package/editors/intlTimeEditor/index.js +6 -0
- package/editors/intlTimeEditor/index.mjs +1 -0
- package/editors/intlTimeEditor/intlTimeEditor.d.ts +7 -0
- package/editors/intlTimeEditor/intlTimeEditor.js +72 -0
- package/editors/intlTimeEditor/intlTimeEditor.mjs +68 -0
- package/editors/multiSelectEditor/controllers/dropdownController.js +566 -0
- package/editors/multiSelectEditor/controllers/dropdownController.mjs +561 -0
- package/editors/multiSelectEditor/controllers/inputController.js +101 -0
- package/editors/multiSelectEditor/controllers/inputController.mjs +96 -0
- package/editors/multiSelectEditor/controllers/selectedItemsController.js +124 -0
- package/editors/multiSelectEditor/controllers/selectedItemsController.mjs +120 -0
- package/editors/multiSelectEditor/controllers/utils.js +275 -0
- package/editors/multiSelectEditor/controllers/utils.mjs +258 -0
- package/editors/multiSelectEditor/index.js +6 -0
- package/editors/multiSelectEditor/index.mjs +1 -0
- package/editors/multiSelectEditor/multiSelectEditor.js +509 -0
- package/editors/multiSelectEditor/multiSelectEditor.mjs +504 -0
- package/editors/multiSelectEditor/utils/utils.js +57 -0
- package/editors/multiSelectEditor/utils/utils.mjs +50 -0
- package/editors/passwordEditor/passwordEditor.js +0 -1
- package/editors/passwordEditor/passwordEditor.mjs +0 -1
- package/editors/registry.js +4 -4
- package/editors/registry.mjs +4 -4
- package/editors/selectEditor/selectEditor.js +1 -1
- package/editors/selectEditor/selectEditor.mjs +1 -1
- package/editors/textEditor/textEditor.js +4 -2
- package/editors/textEditor/textEditor.mjs +4 -2
- package/eventManager.js +0 -2
- package/eventManager.mjs +0 -2
- package/focusManager/grid.js +0 -1
- package/focusManager/grid.mjs +0 -1
- package/focusManager/index.js +0 -2
- package/focusManager/scopeManager.js +5 -8
- package/focusManager/scopeManager.mjs +5 -8
- package/focusManager/utils/focusDetector.js +5 -11
- package/focusManager/utils/focusDetector.mjs +5 -11
- package/helpers/a11y.js +2 -0
- package/helpers/a11y.mjs +1 -0
- package/helpers/array.js +26 -15
- package/helpers/array.mjs +25 -15
- package/helpers/console.js +33 -0
- package/helpers/console.mjs +32 -0
- package/helpers/constants.js +4 -0
- package/helpers/constants.mjs +1 -0
- package/helpers/data.js +0 -4
- package/helpers/data.mjs +0 -4
- package/helpers/dateTime.d.ts +5 -0
- package/helpers/dateTime.js +110 -0
- package/helpers/dateTime.mjs +102 -0
- package/helpers/dom/element.d.ts +1 -1
- package/helpers/dom/element.js +23 -20
- package/helpers/dom/element.mjs +23 -20
- package/helpers/errors.d.ts +1 -0
- package/helpers/errors.js +21 -0
- package/helpers/errors.mjs +17 -0
- package/helpers/index.d.ts +2 -1
- package/helpers/mixed.js +10 -7
- package/helpers/mixed.mjs +10 -6
- package/helpers/moves.js +0 -4
- package/helpers/moves.mjs +0 -4
- package/helpers/number.js +0 -9
- package/helpers/number.mjs +0 -9
- package/helpers/object.js +47 -6
- package/helpers/object.mjs +45 -6
- package/helpers/string.js +15 -2
- package/helpers/string.mjs +14 -2
- package/helpers/templateLiteralTag.js +0 -3
- package/helpers/templateLiteralTag.mjs +0 -3
- package/helpers/unicode.js +0 -1
- package/helpers/unicode.mjs +0 -1
- package/helpers/wrappers/jquery.js +2 -2
- package/helpers/wrappers/jquery.mjs +2 -2
- package/i18n/index.js +0 -2
- package/i18n/phraseFormatters/substituteVariables.js +0 -2
- package/i18n/phraseFormatters/substituteVariables.mjs +0 -2
- package/i18n/registry.js +0 -2
- package/i18n/registry.mjs +0 -2
- package/index.d.ts +85 -9
- package/index.js +18 -3
- package/index.mjs +18 -3
- package/languages/all.js +1 -1
- package/languages/ar-AR.js +1 -1
- package/languages/cs-CZ.js +1 -1
- package/languages/de-CH.js +1 -1
- package/languages/de-DE.js +1 -1
- package/languages/en-US.js +1 -1
- package/languages/es-MX.js +1 -1
- package/languages/fa-IR.js +1 -1
- package/languages/fr-FR.js +1 -1
- package/languages/hr-HR.js +1 -1
- package/languages/index.js +1 -1
- package/languages/it-IT.js +1 -1
- package/languages/ja-JP.js +1 -1
- package/languages/ko-KR.js +1 -1
- package/languages/lv-LV.js +1 -1
- package/languages/nb-NO.js +1 -1
- package/languages/nl-NL.js +1 -1
- package/languages/pl-PL.js +1 -1
- package/languages/pt-BR.js +1 -1
- package/languages/ru-RU.js +1 -1
- package/languages/sr-SP.js +1 -1
- package/languages/zh-CN.js +1 -1
- package/languages/zh-TW.js +1 -1
- package/mixins/hooksRefRegisterer.js +0 -1
- package/mixins/hooksRefRegisterer.mjs +0 -1
- package/mixins/localHooks.js +0 -1
- package/mixins/localHooks.mjs +0 -1
- package/package.json +184 -78
- package/plugins/autoColumnSize/autoColumnSize.js +4 -7
- package/plugins/autoColumnSize/autoColumnSize.mjs +4 -7
- package/plugins/autoRowSize/autoRowSize.js +8 -9
- package/plugins/autoRowSize/autoRowSize.mjs +8 -9
- package/plugins/autofill/autofill.js +7 -8
- package/plugins/autofill/autofill.mjs +7 -8
- package/plugins/base/base.js +3 -7
- package/plugins/base/base.mjs +3 -7
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +0 -1
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +0 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +2 -3
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +2 -3
- package/plugins/columnSorting/columnSorting.js +2 -64
- package/plugins/columnSorting/columnSorting.mjs +2 -64
- package/plugins/columnSorting/columnStatesManager.js +0 -3
- package/plugins/columnSorting/columnStatesManager.mjs +0 -3
- package/plugins/columnSorting/domHelpers.js +0 -1
- package/plugins/columnSorting/domHelpers.mjs +0 -1
- package/plugins/columnSorting/sortFunction/intlDate.js +17 -0
- package/plugins/columnSorting/sortFunction/intlDate.mjs +13 -0
- package/plugins/columnSorting/sortFunction/intlTime.js +17 -0
- package/plugins/columnSorting/sortFunction/intlTime.mjs +13 -0
- package/plugins/columnSorting/sortService/registry.js +5 -1
- package/plugins/columnSorting/sortService/registry.mjs +4 -0
- package/plugins/columnSorting/utils.js +107 -10
- package/plugins/columnSorting/utils.mjs +105 -10
- package/plugins/columnSummary/columnSummary.js +2 -2
- package/plugins/columnSummary/columnSummary.mjs +2 -2
- package/plugins/columnSummary/endpoints.js +0 -5
- package/plugins/columnSummary/endpoints.mjs +0 -5
- package/plugins/comments/commentEditor.js +0 -1
- package/plugins/comments/commentEditor.mjs +0 -1
- package/plugins/comments/comments.js +5 -6
- package/plugins/comments/comments.mjs +5 -6
- package/plugins/comments/displaySwitch.js +0 -1
- package/plugins/comments/displaySwitch.mjs +0 -1
- package/plugins/comments/editorResizeObserver.js +0 -3
- package/plugins/comments/editorResizeObserver.mjs +0 -3
- package/plugins/contextMenu/commandExecutor.js +2 -4
- package/plugins/contextMenu/commandExecutor.mjs +2 -4
- package/plugins/contextMenu/contextMenu.js +0 -1
- package/plugins/contextMenu/contextMenu.mjs +0 -1
- package/plugins/contextMenu/itemsFactory.js +0 -2
- package/plugins/contextMenu/itemsFactory.mjs +0 -2
- package/plugins/contextMenu/menu/cursor.js +0 -1
- package/plugins/contextMenu/menu/cursor.mjs +0 -1
- package/plugins/contextMenu/menu/index.js +0 -2
- package/plugins/contextMenu/menu/menu.js +3 -15
- package/plugins/contextMenu/menu/menu.mjs +3 -15
- package/plugins/contextMenu/menu/menuItemRenderer.js +4 -2
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +4 -2
- package/plugins/contextMenu/menu/positioner.js +0 -1
- package/plugins/contextMenu/menu/positioner.mjs +0 -1
- package/plugins/contextMenu/menu/shortcuts.js +0 -3
- package/plugins/contextMenu/menu/shortcuts.mjs +0 -3
- package/plugins/contextMenu/menu/utils.js +0 -1
- package/plugins/contextMenu/menu/utils.mjs +0 -1
- package/plugins/copyPaste/copyPaste.js +53 -31
- package/plugins/copyPaste/copyPaste.mjs +54 -32
- package/plugins/copyPaste/copyableRanges.js +0 -2
- package/plugins/copyPaste/copyableRanges.mjs +0 -2
- package/plugins/customBorders/customBorders.js +3 -6
- package/plugins/customBorders/customBorders.mjs +3 -6
- package/plugins/customBorders/utils.js +0 -2
- package/plugins/customBorders/utils.mjs +0 -2
- package/plugins/dialog/dialog.js +3 -6
- package/plugins/dialog/dialog.mjs +3 -6
- package/plugins/dialog/templates/base.js +2 -2
- package/plugins/dialog/templates/base.mjs +2 -2
- package/plugins/dialog/templates/confirm.js +2 -5
- package/plugins/dialog/templates/confirm.mjs +2 -5
- package/plugins/dialog/ui.js +13 -8
- package/plugins/dialog/ui.mjs +13 -8
- package/plugins/dragToScroll/dragToScroll.js +0 -1
- package/plugins/dragToScroll/dragToScroll.mjs +0 -1
- package/plugins/dropdownMenu/dropdownMenu.js +0 -1
- package/plugins/dropdownMenu/dropdownMenu.mjs +0 -1
- package/plugins/emptyDataState/emptyDataState.js +0 -6
- package/plugins/emptyDataState/emptyDataState.mjs +0 -6
- package/plugins/emptyDataState/ui.js +0 -4
- package/plugins/emptyDataState/ui.mjs +0 -4
- package/plugins/exportFile/dataProvider.js +0 -2
- package/plugins/exportFile/dataProvider.mjs +0 -2
- package/plugins/exportFile/exportFile.js +3 -3
- package/plugins/exportFile/exportFile.mjs +3 -3
- package/plugins/exportFile/types/_base.js +0 -1
- package/plugins/exportFile/types/_base.mjs +0 -1
- package/plugins/exportFile/types/csv.js +0 -3
- package/plugins/exportFile/types/csv.mjs +0 -3
- package/plugins/filters/component/_base.js +3 -3
- package/plugins/filters/component/_base.mjs +3 -3
- package/plugins/filters/component/actionBar.js +0 -2
- package/plugins/filters/component/actionBar.mjs +0 -2
- package/plugins/filters/component/condition.js +2 -4
- package/plugins/filters/component/condition.mjs +2 -4
- package/plugins/filters/component/operators.js +2 -5
- package/plugins/filters/component/operators.mjs +2 -5
- package/plugins/filters/component/value.js +4 -12
- package/plugins/filters/component/value.mjs +4 -12
- package/plugins/filters/condition/intlDate/after.js +31 -0
- package/plugins/filters/condition/intlDate/after.mjs +26 -0
- package/plugins/filters/condition/intlDate/before.js +31 -0
- package/plugins/filters/condition/intlDate/before.mjs +26 -0
- package/plugins/filters/condition/intlDate/between.js +30 -0
- package/plugins/filters/condition/intlDate/between.mjs +25 -0
- package/plugins/filters/condition/intlDate/today.js +27 -0
- package/plugins/filters/condition/intlDate/today.mjs +22 -0
- package/plugins/filters/condition/intlDate/tomorrow.js +28 -0
- package/plugins/filters/condition/intlDate/tomorrow.mjs +23 -0
- package/plugins/filters/condition/intlDate/yesterday.js +28 -0
- package/plugins/filters/condition/intlDate/yesterday.mjs +23 -0
- package/plugins/filters/condition/intlTime/after.js +31 -0
- package/plugins/filters/condition/intlTime/after.mjs +26 -0
- package/plugins/filters/condition/intlTime/before.js +31 -0
- package/plugins/filters/condition/intlTime/before.mjs +26 -0
- package/plugins/filters/condition/intlTime/between.js +30 -0
- package/plugins/filters/condition/intlTime/between.mjs +25 -0
- package/plugins/filters/conditionCollection.js +3 -9
- package/plugins/filters/conditionCollection.mjs +3 -9
- package/plugins/filters/conditionRegisterer.js +3 -3
- package/plugins/filters/conditionRegisterer.mjs +3 -3
- package/plugins/filters/conditionUpdateObserver.js +3 -7
- package/plugins/filters/conditionUpdateObserver.mjs +3 -7
- package/plugins/filters/constants.js +14 -2
- package/plugins/filters/constants.mjs +14 -2
- package/plugins/filters/dataFilter.js +1 -3
- package/plugins/filters/dataFilter.mjs +1 -3
- package/plugins/filters/filters.js +36 -44
- package/plugins/filters/filters.mjs +36 -44
- package/plugins/filters/logicalOperationRegisterer.js +2 -2
- package/plugins/filters/logicalOperationRegisterer.mjs +2 -2
- package/plugins/filters/logicalOperations/conjunction.js +0 -2
- package/plugins/filters/logicalOperations/conjunction.mjs +0 -2
- package/plugins/filters/logicalOperations/disjunction.js +0 -2
- package/plugins/filters/logicalOperations/disjunction.mjs +0 -2
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -4
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -4
- package/plugins/filters/menu/focusController.js +0 -2
- package/plugins/filters/menu/focusController.mjs +0 -2
- package/plugins/filters/ui/_base.js +0 -1
- package/plugins/filters/ui/_base.mjs +0 -1
- package/plugins/filters/ui/input.js +1 -1
- package/plugins/filters/ui/input.mjs +1 -1
- package/plugins/filters/ui/link.js +0 -1
- package/plugins/filters/ui/link.mjs +0 -1
- package/plugins/filters/ui/multipleSelect.js +0 -6
- package/plugins/filters/ui/multipleSelect.mjs +0 -6
- package/plugins/filters/ui/radioInput.js +0 -1
- package/plugins/filters/ui/radioInput.mjs +0 -1
- package/plugins/filters/ui/select.js +0 -1
- package/plugins/filters/ui/select.mjs +0 -1
- package/plugins/filters/utils.js +0 -11
- package/plugins/filters/utils.mjs +0 -11
- package/plugins/formulas/engine/register.js +0 -4
- package/plugins/formulas/engine/register.mjs +0 -4
- package/plugins/formulas/engine/settings.js +0 -3
- package/plugins/formulas/engine/settings.mjs +0 -3
- package/plugins/formulas/formulas.js +0 -14
- package/plugins/formulas/formulas.mjs +0 -14
- package/plugins/formulas/indexSyncer/axisSyncer.js +0 -5
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +0 -5
- package/plugins/formulas/indexSyncer/index.js +0 -1
- package/plugins/formulas/indexSyncer/index.mjs +0 -1
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +0 -1
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +0 -1
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +0 -3
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +0 -3
- package/plugins/hiddenColumns/hiddenColumns.js +1 -13
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -13
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +0 -1
- package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +0 -1
- package/plugins/hiddenRows/contextMenuItem/showRow.js +0 -3
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +0 -3
- package/plugins/hiddenRows/hiddenRows.js +1 -13
- package/plugins/hiddenRows/hiddenRows.mjs +1 -13
- package/plugins/index.d.ts +0 -3
- package/plugins/index.js +0 -3
- package/plugins/index.mjs +1 -3
- package/plugins/loading/loading.js +0 -1
- package/plugins/loading/loading.mjs +0 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +0 -4
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +0 -4
- package/plugins/manualColumnMove/manualColumnMove.js +2 -36
- package/plugins/manualColumnMove/manualColumnMove.mjs +2 -36
- package/plugins/manualColumnMove/ui/_base.js +0 -1
- package/plugins/manualColumnMove/ui/_base.mjs +0 -1
- package/plugins/manualColumnResize/manualColumnResize.js +4 -39
- package/plugins/manualColumnResize/manualColumnResize.mjs +4 -39
- package/plugins/manualRowMove/manualRowMove.js +2 -37
- package/plugins/manualRowMove/manualRowMove.mjs +2 -37
- package/plugins/manualRowMove/ui/_base.js +0 -1
- package/plugins/manualRowMove/ui/_base.mjs +0 -1
- package/plugins/manualRowResize/manualRowResize.js +3 -38
- package/plugins/manualRowResize/manualRowResize.mjs +3 -38
- package/plugins/mergeCells/calculations/autofill.js +0 -3
- package/plugins/mergeCells/calculations/autofill.mjs +0 -3
- package/plugins/mergeCells/calculations/selection.js +0 -2
- package/plugins/mergeCells/calculations/selection.mjs +0 -2
- package/plugins/mergeCells/cellCoords.js +0 -1
- package/plugins/mergeCells/cellCoords.mjs +0 -1
- package/plugins/mergeCells/cellsCollection.js +0 -14
- package/plugins/mergeCells/cellsCollection.mjs +0 -14
- package/plugins/mergeCells/focusOrder.js +0 -4
- package/plugins/mergeCells/focusOrder.mjs +0 -4
- package/plugins/mergeCells/mergeCells.js +0 -14
- package/plugins/mergeCells/mergeCells.mjs +0 -14
- package/plugins/multiColumnSorting/domHelpers.js +0 -3
- package/plugins/multiColumnSorting/domHelpers.mjs +0 -3
- package/plugins/multiColumnSorting/multiColumnSorting.js +0 -1
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +0 -1
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +0 -2
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +0 -2
- package/plugins/nestedHeaders/nestedHeaders.js +0 -4
- package/plugins/nestedHeaders/nestedHeaders.mjs +0 -4
- package/plugins/nestedHeaders/stateManager/headersTree.js +0 -1
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +0 -1
- package/plugins/nestedHeaders/stateManager/index.js +0 -4
- package/plugins/nestedHeaders/stateManager/index.mjs +0 -4
- package/plugins/nestedHeaders/stateManager/matrixGenerator.js +0 -1
- package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +0 -1
- package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +0 -7
- package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +0 -7
- package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.js +0 -7
- package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.mjs +0 -7
- package/plugins/nestedHeaders/stateManager/nodeModifiers/hideColumn.js +3 -4
- package/plugins/nestedHeaders/stateManager/nodeModifiers/hideColumn.mjs +3 -4
- package/plugins/nestedHeaders/stateManager/nodeModifiers/index.js +2 -2
- package/plugins/nestedHeaders/stateManager/nodeModifiers/index.mjs +2 -2
- package/plugins/nestedHeaders/stateManager/nodeModifiers/showColumn.js +3 -3
- package/plugins/nestedHeaders/stateManager/nodeModifiers/showColumn.mjs +3 -3
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +0 -1
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +0 -1
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +3 -4
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +3 -4
- package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
- package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -2
- package/plugins/nestedRows/data/dataManager.js +0 -2
- package/plugins/nestedRows/data/dataManager.mjs +0 -2
- package/plugins/nestedRows/nestedRows.js +0 -12
- package/plugins/nestedRows/nestedRows.mjs +0 -12
- package/plugins/nestedRows/ui/_base.js +0 -1
- package/plugins/nestedRows/ui/_base.mjs +0 -1
- package/plugins/nestedRows/ui/collapsing.js +0 -1
- package/plugins/nestedRows/ui/collapsing.mjs +0 -1
- package/plugins/nestedRows/ui/contextMenu.js +0 -1
- package/plugins/nestedRows/ui/contextMenu.mjs +0 -1
- package/plugins/nestedRows/ui/headers.js +2 -4
- package/plugins/nestedRows/ui/headers.mjs +2 -4
- package/plugins/nestedRows/utils/rowMoveController.js +0 -6
- package/plugins/nestedRows/utils/rowMoveController.mjs +0 -6
- package/plugins/pagination/pagination.js +1 -7
- package/plugins/pagination/pagination.mjs +1 -7
- package/plugins/pagination/strategies/autoPageSize.js +0 -2
- package/plugins/pagination/strategies/autoPageSize.mjs +0 -2
- package/plugins/pagination/strategies/fixedPageSize.js +0 -1
- package/plugins/pagination/strategies/fixedPageSize.mjs +0 -1
- package/plugins/pagination/strategies/index.js +2 -2
- package/plugins/pagination/strategies/index.mjs +2 -2
- package/plugins/pagination/ui.js +0 -3
- package/plugins/pagination/ui.mjs +0 -3
- package/plugins/registry.js +2 -2
- package/plugins/registry.mjs +2 -2
- package/plugins/search/search.js +0 -2
- package/plugins/search/search.mjs +0 -2
- package/plugins/stretchColumns/calculator.js +1 -6
- package/plugins/stretchColumns/calculator.mjs +1 -6
- package/plugins/stretchColumns/strategies/_base.js +0 -1
- package/plugins/stretchColumns/strategies/_base.mjs +0 -1
- package/plugins/stretchColumns/strategies/all.js +0 -4
- package/plugins/stretchColumns/strategies/all.mjs +0 -4
- package/plugins/stretchColumns/strategies/last.js +0 -3
- package/plugins/stretchColumns/strategies/last.mjs +0 -3
- package/plugins/stretchColumns/stretchColumns.js +0 -3
- package/plugins/stretchColumns/stretchColumns.mjs +0 -3
- package/plugins/touchScroll/touchScroll.js +0 -2
- package/plugins/touchScroll/touchScroll.mjs +0 -2
- package/plugins/trimRows/trimRows.js +1 -12
- package/plugins/trimRows/trimRows.mjs +1 -12
- package/plugins/undoRedo/actions/_base.js +3 -3
- package/plugins/undoRedo/actions/_base.mjs +3 -3
- package/plugins/undoRedo/actions/cellAlignment.js +0 -1
- package/plugins/undoRedo/actions/cellAlignment.mjs +0 -1
- package/plugins/undoRedo/actions/columnMove.js +0 -3
- package/plugins/undoRedo/actions/columnMove.mjs +0 -3
- package/plugins/undoRedo/actions/columnSort.js +0 -1
- package/plugins/undoRedo/actions/columnSort.mjs +0 -1
- package/plugins/undoRedo/actions/createColumn.js +0 -1
- package/plugins/undoRedo/actions/createColumn.mjs +0 -1
- package/plugins/undoRedo/actions/createRow.js +0 -1
- package/plugins/undoRedo/actions/createRow.mjs +0 -1
- package/plugins/undoRedo/actions/dataChange.js +0 -6
- package/plugins/undoRedo/actions/dataChange.mjs +0 -6
- package/plugins/undoRedo/actions/filters.js +0 -3
- package/plugins/undoRedo/actions/filters.mjs +0 -3
- package/plugins/undoRedo/actions/mergeCells.js +0 -1
- package/plugins/undoRedo/actions/mergeCells.mjs +0 -1
- package/plugins/undoRedo/actions/removeColumn.js +0 -4
- package/plugins/undoRedo/actions/removeColumn.mjs +0 -4
- package/plugins/undoRedo/actions/removeRow.js +0 -4
- package/plugins/undoRedo/actions/removeRow.mjs +0 -4
- package/plugins/undoRedo/actions/rowMove.js +0 -3
- package/plugins/undoRedo/actions/rowMove.mjs +0 -3
- package/plugins/undoRedo/actions/unmergeCells.js +0 -1
- package/plugins/undoRedo/actions/unmergeCells.mjs +0 -1
- package/plugins/undoRedo/undoRedo.js +0 -87
- package/plugins/undoRedo/undoRedo.mjs +0 -87
- package/plugins/undoRedo/utils.js +1 -13
- package/plugins/undoRedo/utils.mjs +1 -13
- package/renderers/baseRenderer/baseRenderer.js +3 -1
- package/renderers/baseRenderer/baseRenderer.mjs +3 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -7
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +2 -7
- package/renderers/dateRenderer/dateRenderer.js +6 -0
- package/renderers/dateRenderer/dateRenderer.mjs +6 -0
- package/renderers/factory.d.ts +20 -0
- package/renderers/factory.js +51 -0
- package/renderers/factory.mjs +47 -0
- package/renderers/htmlRenderer/htmlRenderer.js +1 -4
- package/renderers/htmlRenderer/htmlRenderer.mjs +1 -4
- package/renderers/index.d.ts +7 -0
- package/renderers/index.js +10 -0
- package/renderers/index.mjs +7 -2
- package/renderers/intlDateRenderer/index.d.ts +1 -0
- package/renderers/intlDateRenderer/index.js +7 -0
- package/renderers/intlDateRenderer/index.mjs +1 -0
- package/renderers/intlDateRenderer/intlDateRenderer.d.ts +6 -0
- package/renderers/intlDateRenderer/intlDateRenderer.js +58 -0
- package/renderers/intlDateRenderer/intlDateRenderer.mjs +53 -0
- package/renderers/intlTimeRenderer/index.d.ts +1 -0
- package/renderers/intlTimeRenderer/index.js +7 -0
- package/renderers/intlTimeRenderer/index.mjs +1 -0
- package/renderers/intlTimeRenderer/intlTimeRenderer.d.ts +6 -0
- package/renderers/intlTimeRenderer/intlTimeRenderer.js +57 -0
- package/renderers/intlTimeRenderer/intlTimeRenderer.mjs +52 -0
- package/renderers/multiSelectRenderer/index.js +7 -0
- package/renderers/multiSelectRenderer/index.mjs +1 -0
- package/renderers/multiSelectRenderer/multiSelectRenderer.js +60 -0
- package/renderers/multiSelectRenderer/multiSelectRenderer.mjs +56 -0
- package/renderers/multiSelectRenderer/utils/utils.js +270 -0
- package/renderers/multiSelectRenderer/utils/utils.mjs +258 -0
- package/renderers/numericRenderer/index.d.ts +1 -1
- package/renderers/numericRenderer/index.js +1 -1
- package/renderers/numericRenderer/index.mjs +1 -1
- package/renderers/numericRenderer/numericRenderer.d.ts +1 -0
- package/renderers/numericRenderer/numericRenderer.js +19 -22
- package/renderers/numericRenderer/numericRenderer.mjs +18 -20
- package/renderers/numericRenderer/utils.js +64 -0
- package/renderers/numericRenderer/utils.mjs +57 -0
- package/renderers/passwordRenderer/passwordRenderer.js +22 -12
- package/renderers/passwordRenderer/passwordRenderer.mjs +21 -12
- package/renderers/registry.d.ts +1 -1
- package/renderers/registry.js +51 -3
- package/renderers/registry.mjs +51 -3
- package/renderers/textRenderer/textRenderer.js +0 -2
- package/renderers/textRenderer/textRenderer.mjs +0 -2
- package/renderers/timeRenderer/timeRenderer.js +6 -0
- package/renderers/timeRenderer/timeRenderer.mjs +6 -0
- package/selection/highlight/highlight.js +0 -2
- package/selection/highlight/highlight.mjs +0 -2
- package/selection/highlight/visualSelection.js +0 -1
- package/selection/highlight/visualSelection.mjs +0 -1
- package/selection/index.js +0 -2
- package/selection/mouseEventHandler.js +0 -2
- package/selection/mouseEventHandler.mjs +0 -2
- package/selection/range.js +0 -7
- package/selection/range.mjs +0 -7
- package/selection/selection.js +6 -15
- package/selection/selection.mjs +6 -15
- package/selection/transformation/_base.js +6 -6
- package/selection/transformation/_base.mjs +6 -6
- package/selection/transformation/focus.js +2 -2
- package/selection/transformation/focus.mjs +2 -2
- package/selection/utils.js +3 -13
- package/selection/utils.mjs +3 -13
- package/settings.d.ts +9 -3
- package/shortcutContexts/commands/editor/open.js +0 -2
- package/shortcutContexts/commands/editor/open.mjs +0 -2
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -2
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -2
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -2
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -2
- package/shortcutContexts/grid.js +11 -12
- package/shortcutContexts/grid.mjs +11 -12
- package/shortcutContexts/index.js +0 -2
- package/shortcuts/context.js +4 -8
- package/shortcuts/context.mjs +4 -8
- package/shortcuts/keyObserver.js +0 -7
- package/shortcuts/keyObserver.mjs +0 -7
- package/shortcuts/manager.js +2 -2
- package/shortcuts/manager.mjs +2 -2
- package/shortcuts/recorder.js +0 -1
- package/shortcuts/recorder.mjs +0 -1
- package/shortcuts/utils.js +0 -2
- package/shortcuts/utils.mjs +0 -2
- package/styles/handsontable.css +302 -83
- package/styles/handsontable.min.css +3 -3
- package/styles/handsontableStyles.js +6 -0
- package/styles/handsontableStyles.mjs +4 -0
- package/styles/ht-icons-horizon.css +55 -61
- package/styles/ht-icons-horizon.min.css +3 -3
- package/styles/ht-icons-main.css +55 -61
- package/styles/ht-icons-main.min.css +3 -3
- package/styles/ht-theme-classic-no-icons.css +302 -374
- package/styles/ht-theme-classic-no-icons.min.css +3 -3
- package/styles/ht-theme-classic.css +383 -408
- package/styles/ht-theme-classic.min.css +3 -3
- package/styles/ht-theme-horizon-no-icons.css +300 -378
- package/styles/ht-theme-horizon-no-icons.min.css +3 -3
- package/styles/ht-theme-horizon.css +381 -412
- package/styles/ht-theme-horizon.min.css +3 -3
- package/styles/ht-theme-main-no-icons.css +302 -371
- package/styles/ht-theme-main-no-icons.min.css +3 -3
- package/styles/ht-theme-main.css +383 -405
- package/styles/ht-theme-main.min.css +3 -3
- package/tableView.js +16 -4
- package/tableView.mjs +16 -4
- package/themes/engine/builder.js +251 -0
- package/themes/engine/builder.mjs +246 -0
- package/themes/engine/index.js +7 -0
- package/themes/engine/index.mjs +2 -0
- package/themes/engine/manager.js +188 -0
- package/themes/engine/manager.mjs +183 -0
- package/themes/engine/utils/cssVariables.js +132 -0
- package/themes/engine/utils/cssVariables.mjs +128 -0
- package/themes/engine/utils/validation.js +348 -0
- package/themes/engine/utils/validation.mjs +342 -0
- package/themes/index.js +15 -0
- package/themes/index.mjs +2 -0
- package/themes/registry.js +131 -0
- package/themes/registry.mjs +122 -0
- package/themes/static/variables/colors/ant.d.ts +4 -0
- package/themes/static/variables/colors/ant.js +32 -0
- package/themes/static/variables/colors/ant.mjs +30 -0
- package/themes/static/variables/colors/classic.d.ts +4 -0
- package/themes/static/variables/colors/classic.js +32 -0
- package/themes/static/variables/colors/classic.mjs +30 -0
- package/themes/static/variables/colors/horizon.d.ts +4 -0
- package/themes/static/variables/colors/horizon.js +32 -0
- package/themes/static/variables/colors/horizon.mjs +30 -0
- package/themes/static/variables/colors/main.d.ts +4 -0
- package/themes/static/variables/colors/main.js +32 -0
- package/themes/static/variables/colors/main.mjs +30 -0
- package/themes/static/variables/colors/material.d.ts +4 -0
- package/themes/static/variables/colors/material.js +32 -0
- package/themes/static/variables/colors/material.mjs +30 -0
- package/themes/static/variables/colors/shadcn.d.ts +4 -0
- package/themes/static/variables/colors/shadcn.js +32 -0
- package/themes/static/variables/colors/shadcn.mjs +30 -0
- package/themes/static/variables/density.d.ts +4 -0
- package/themes/static/variables/density.js +59 -0
- package/themes/static/variables/density.mjs +57 -0
- package/themes/static/variables/helpers/iconsMap.d.ts +3 -0
- package/themes/static/variables/helpers/iconsMap.js +139 -0
- package/themes/static/variables/helpers/iconsMap.mjs +135 -0
- package/themes/static/variables/icons/horizon.d.ts +4 -0
- package/themes/static/variables/icons/horizon.js +29 -0
- package/themes/static/variables/icons/horizon.mjs +28 -0
- package/themes/static/variables/icons/main.d.ts +4 -0
- package/themes/static/variables/icons/main.js +29 -0
- package/themes/static/variables/icons/main.mjs +28 -0
- package/themes/static/variables/sizing.d.ts +4 -0
- package/themes/static/variables/sizing.js +22 -0
- package/themes/static/variables/sizing.mjs +20 -0
- package/themes/static/variables/tokens/classic.d.ts +4 -0
- package/themes/static/variables/tokens/classic.js +270 -0
- package/themes/static/variables/tokens/classic.mjs +268 -0
- package/themes/static/variables/tokens/horizon.d.ts +4 -0
- package/themes/static/variables/tokens/horizon.js +270 -0
- package/themes/static/variables/tokens/horizon.mjs +268 -0
- package/themes/static/variables/tokens/main.d.ts +4 -0
- package/themes/static/variables/tokens/main.js +270 -0
- package/themes/static/variables/tokens/main.mjs +268 -0
- package/themes/theme/classic.d.ts +3 -0
- package/themes/theme/classic.js +14 -0
- package/themes/theme/classic.mjs +11 -0
- package/themes/theme/horizon.d.ts +3 -0
- package/themes/theme/horizon.js +14 -0
- package/themes/theme/horizon.mjs +11 -0
- package/themes/theme/index.d.ts +5 -0
- package/themes/theme/index.js +9 -0
- package/themes/theme/index.mjs +3 -0
- package/themes/theme/main.d.ts +3 -0
- package/themes/theme/main.js +14 -0
- package/themes/theme/main.mjs +11 -0
- package/themes.d.ts +491 -0
- package/translations/changesObservable/observable.js +0 -10
- package/translations/changesObservable/observable.mjs +0 -10
- package/translations/changesObservable/observer.js +0 -1
- package/translations/changesObservable/observer.mjs +0 -1
- package/translations/changesObservable/utils.js +0 -1
- package/translations/changesObservable/utils.mjs +0 -1
- package/translations/index.js +0 -2
- package/translations/indexMapper.js +3 -14
- package/translations/indexMapper.mjs +3 -14
- package/translations/mapCollections/aggregatedCollection.js +0 -2
- package/translations/mapCollections/aggregatedCollection.mjs +0 -2
- package/translations/mapCollections/index.js +0 -2
- package/translations/mapCollections/mapCollection.js +0 -3
- package/translations/mapCollections/mapCollection.mjs +0 -3
- package/translations/maps/hidingMap.js +0 -1
- package/translations/maps/hidingMap.mjs +0 -1
- package/translations/maps/index.js +2 -4
- package/translations/maps/index.mjs +2 -2
- package/translations/maps/indexMap.js +0 -2
- package/translations/maps/indexMap.mjs +0 -2
- package/translations/maps/linkedPhysicalIndexToValueMap.js +0 -3
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +0 -3
- package/translations/maps/trimmingMap.js +0 -1
- package/translations/maps/trimmingMap.mjs +0 -1
- package/translations/maps/utils/actionsOnIndexes.js +0 -2
- package/translations/maps/utils/actionsOnIndexes.mjs +0 -2
- package/translations/maps/utils/index.js +2 -2
- package/translations/maps/utils/index.mjs +2 -2
- package/translations/maps/utils/physicallyIndexed.js +0 -2
- package/translations/maps/utils/physicallyIndexed.mjs +0 -2
- package/utils/dataStructures/linkedList.js +0 -1
- package/utils/dataStructures/linkedList.mjs +0 -1
- package/utils/dataStructures/priorityMap.js +3 -5
- package/utils/dataStructures/priorityMap.mjs +3 -5
- package/utils/dataStructures/queue.js +0 -1
- package/utils/dataStructures/queue.mjs +0 -1
- package/utils/dataStructures/stack.js +0 -1
- package/utils/dataStructures/stack.mjs +0 -1
- package/utils/dataStructures/tree.js +2 -3
- package/utils/dataStructures/tree.mjs +2 -3
- package/utils/dataStructures/uniqueMap.js +2 -4
- package/utils/dataStructures/uniqueMap.mjs +2 -4
- package/utils/dataStructures/uniqueSet.js +2 -9
- package/utils/dataStructures/uniqueSet.mjs +2 -9
- package/utils/ghostTable.js +3 -6
- package/utils/ghostTable.mjs +3 -6
- package/utils/interval.js +0 -1
- package/utils/interval.mjs +0 -1
- package/utils/paginator.js +0 -7
- package/utils/paginator.mjs +0 -7
- package/utils/parseTable.js +0 -6
- package/utils/parseTable.mjs +0 -6
- package/utils/samplesGenerator.js +2 -3
- package/utils/samplesGenerator.mjs +2 -3
- package/utils/stylesHandler.js +49 -60
- package/utils/stylesHandler.mjs +48 -60
- package/validators/autocompleteValidator/autocompleteValidator.js +9 -1
- package/validators/autocompleteValidator/autocompleteValidator.mjs +10 -2
- package/validators/dateValidator/dateValidator.js +2 -2
- package/validators/dateValidator/dateValidator.mjs +1 -1
- package/validators/index.d.ts +6 -0
- package/validators/index.js +12 -0
- package/validators/index.mjs +7 -1
- package/validators/intlDateValidator/index.d.ts +1 -0
- package/validators/intlDateValidator/index.js +8 -0
- package/validators/intlDateValidator/index.mjs +1 -0
- package/validators/intlDateValidator/intlDateValidator.d.ts +6 -0
- package/validators/intlDateValidator/intlDateValidator.js +39 -0
- package/validators/intlDateValidator/intlDateValidator.mjs +34 -0
- package/validators/intlTimeValidator/index.d.ts +1 -0
- package/validators/intlTimeValidator/index.js +8 -0
- package/validators/intlTimeValidator/index.mjs +1 -0
- package/validators/intlTimeValidator/intlTimeValidator.d.ts +6 -0
- package/validators/intlTimeValidator/intlTimeValidator.js +39 -0
- package/validators/intlTimeValidator/intlTimeValidator.mjs +34 -0
- package/validators/multiSelectValidator/index.js +6 -0
- package/validators/multiSelectValidator/index.mjs +1 -0
- package/validators/multiSelectValidator/multiSelectValidator.js +84 -0
- package/validators/multiSelectValidator/multiSelectValidator.mjs +80 -0
- package/validators/registry.js +2 -2
- package/validators/registry.mjs +2 -2
- package/dist/README.md +0 -54
- package/dist/handsontable.css +0 -2551
- package/dist/handsontable.full.css +0 -2781
- package/dist/handsontable.full.min.css +0 -51
- package/dist/handsontable.min.css +0 -46
- package/helpers/date.d.ts +0 -1
- package/helpers/date.js +0 -22
- package/helpers/date.mjs +0 -18
- package/plugins/persistentState/index.d.ts +0 -1
- package/plugins/persistentState/index.js +0 -7
- package/plugins/persistentState/index.mjs +0 -1
- package/plugins/persistentState/persistentState.d.ts +0 -16
- package/plugins/persistentState/persistentState.js +0 -159
- package/plugins/persistentState/persistentState.mjs +0 -154
- package/plugins/persistentState/storage.js +0 -120
- package/plugins/persistentState/storage.mjs +0 -117
|
@@ -920,7 +920,7 @@ export default () => {
|
|
|
920
920
|
* | `forceNumeric` | `true` \| `false` | [Treat non-numerics as numerics](@/guides/columns/column-summary/column-summary.md#force-numeric-values) |
|
|
921
921
|
* | `reversedRowCoords` | `true` \| `false` | [Reverse row coordinates](@/guides/columns/column-summary/column-summary.md#step-5-make-room-for-the-destination-cell) |
|
|
922
922
|
* | `suppressDataTypeErrors` | `true` \| `false` | [Suppress data type errors](@/guides/columns/column-summary/column-summary.md#throw-data-type-errors) |
|
|
923
|
-
* | `readOnly` | `true` \| `false` | Make summary cell read-only
|
|
923
|
+
* | `readOnly` | `true` \| `false` | Make summary cell [read-only](@/api/options.md#readonly) |
|
|
924
924
|
* | `roundFloat` | `true` \| `false` \| A number | [Round summary result](@/guides/columns/column-summary/column-summary.md#round-a-column-summary-result) |
|
|
925
925
|
* | `customFunction` | A function | [Custom summary function](@/guides/columns/column-summary/column-summary.md#implement-a-custom-summary-function) |
|
|
926
926
|
*
|
|
@@ -1289,6 +1289,7 @@ export default () => {
|
|
|
1289
1289
|
* - [Time cell type](@/guides/cell-types/time-cell-type/time-cell-type.md)
|
|
1290
1290
|
* - [`dateFormat`](#dateFormat)
|
|
1291
1291
|
*
|
|
1292
|
+
* @deprecated This option is deprecated and will be removed in the next major release.
|
|
1292
1293
|
* @memberof Options#
|
|
1293
1294
|
* @type {boolean}
|
|
1294
1295
|
* @default false
|
|
@@ -1638,61 +1639,239 @@ export default () => {
|
|
|
1638
1639
|
*/
|
|
1639
1640
|
dataSchema: undefined,
|
|
1640
1641
|
/**
|
|
1641
|
-
*
|
|
1642
|
+
* Configures the date format for date cells. Accepts either a string (legacy, for [`date`](@/guides/cell-types/date-cell-type/date-cell-type.md)
|
|
1643
|
+
* cells) or an object of [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat)
|
|
1644
|
+
* options (for [`intl-date`](@/guides/cell-types/date-cell-type/date-cell-type.md) cells).
|
|
1642
1645
|
*
|
|
1643
|
-
*
|
|
1646
|
+
* ::: warning
|
|
1647
|
+
* The string form of `dateFormat` is deprecated and will be removed in the next major release.
|
|
1648
|
+
* It is used only by the `date` cell type (moment.js-based). Use the `intl-date` cell type
|
|
1649
|
+
* with an `Intl.DateTimeFormat` options object instead. In the next major release, `intl-date`
|
|
1650
|
+
* will become the default `date` cell type, and `intl-date` will be an alias for `date`.
|
|
1651
|
+
* :::
|
|
1652
|
+
*
|
|
1653
|
+
* **Object form (Intl.DateTimeFormat options):**
|
|
1644
1654
|
*
|
|
1645
|
-
*
|
|
1655
|
+
* The object form is supported only when the cell type is `intl-date`. The locale is controlled separately via the [`locale`](@/api/options.md#locale) option.
|
|
1656
|
+
*
|
|
1657
|
+
* ::: tip Source data format
|
|
1658
|
+
* For `intl-date` cells, source data must be in an ISO 8601 date format (`YYYY-MM-DD`). Otherwise operations such
|
|
1659
|
+
* as sorting and filtering can be unstable or unpredictable. The `dateFormat` object affects only how dates are
|
|
1660
|
+
* displayed; the underlying value should remain ISO.
|
|
1661
|
+
* :::
|
|
1662
|
+
*
|
|
1663
|
+
* **Style shortcuts:**
|
|
1664
|
+
*
|
|
1665
|
+
* | Property | Possible values | Description |
|
|
1666
|
+
* | ------------ | -------------------------------------------------- | -------------------------------------------------------- |
|
|
1667
|
+
* | `dateStyle` | `'full'`, `'long'`, `'medium'`, `'short'` | Date formatting style (expands to weekday, day, month, year, era) |
|
|
1668
|
+
* | `timeStyle` | `'full'`, `'long'`, `'medium'`, `'short'` | Time formatting style (expands to hour, minute, second, timeZoneName) |
|
|
1669
|
+
*
|
|
1670
|
+
* **Date-time component options:**
|
|
1671
|
+
*
|
|
1672
|
+
* | Property | Possible values | Description |
|
|
1673
|
+
* | ------------------------ | ------------------------------------------------------------------------------- | ------------------------------------ |
|
|
1674
|
+
* | `weekday` | `'long'`, `'short'`, `'narrow'` | Representation of the weekday |
|
|
1675
|
+
* | `era` | `'long'`, `'short'`, `'narrow'` | Representation of the era |
|
|
1676
|
+
* | `year` | `'numeric'`, `'2-digit'` | Representation of the year |
|
|
1677
|
+
* | `month` | `'numeric'`, `'2-digit'`, `'long'`, `'short'`, `'narrow'` | Representation of the month |
|
|
1678
|
+
* | `day` | `'numeric'`, `'2-digit'` | Representation of the day |
|
|
1679
|
+
* | `dayPeriod` | `'narrow'`, `'short'`, `'long'` | Day period (e.g. "am", "noon") |
|
|
1680
|
+
* | `hour` | `'numeric'`, `'2-digit'` | Representation of the hour |
|
|
1681
|
+
* | `minute` | `'numeric'`, `'2-digit'` | Representation of the minute |
|
|
1682
|
+
* | `second` | `'numeric'`, `'2-digit'` | Representation of the second |
|
|
1683
|
+
* | `fractionalSecondDigits` | `1`, `2`, `3` | Fraction-of-second digits |
|
|
1684
|
+
* | `timeZoneName` | `'long'`, `'short'`, `'shortOffset'`, `'longOffset'`, `'shortGeneric'`, `'longGeneric'` | Time zone display |
|
|
1685
|
+
*
|
|
1686
|
+
* **Locale and other options:**
|
|
1687
|
+
*
|
|
1688
|
+
* | Property | Possible values | Description |
|
|
1689
|
+
* | ----------------- | -------------------------------------------------- | ------------------------------ |
|
|
1690
|
+
* | `localeMatcher` | `'best fit'` (default), `'lookup'` | Locale matching algorithm |
|
|
1691
|
+
* | `calendar` | `'chinese'`, `'gregory'`, `'persian'`, etc. | Calendar to use |
|
|
1692
|
+
* | `numberingSystem` | `'latn'`, `'arab'`, `'hans'`, etc. | Numbering system |
|
|
1693
|
+
* | `timeZone` | IANA time zone (e.g. `'UTC'`, `'America/New_York'`) | Time zone for formatting |
|
|
1694
|
+
* | `hour12` | `true`, `false` | Use 12-hour vs 24-hour time |
|
|
1695
|
+
* | `hourCycle` | `'h11'`, `'h12'`, `'h23'`, `'h24'` | Hour cycle |
|
|
1696
|
+
* | `formatMatcher` | `'basic'`, `'best fit'` (default) | Format matching algorithm |
|
|
1697
|
+
*
|
|
1698
|
+
* For complete reference, see [MDN: Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat).
|
|
1646
1699
|
*
|
|
1647
1700
|
* Read more:
|
|
1648
1701
|
* - [Date cell type](@/guides/cell-types/date-cell-type/date-cell-type.md)
|
|
1649
|
-
* - [`
|
|
1650
|
-
*
|
|
1702
|
+
* - [`locale`](@/api/options.md#locale)
|
|
1703
|
+
*
|
|
1704
|
+
* ---
|
|
1705
|
+
*
|
|
1706
|
+
* **Deprecated: string form**
|
|
1707
|
+
*
|
|
1708
|
+
* Passing a string (e.g. `'DD/MM/YYYY'`, `'YYYY-MM-DD'`) is deprecated and works only with the `date` cell type.
|
|
1709
|
+
* Migrate to the `intl-date` cell type and pass an `Intl.DateTimeFormat` options object.
|
|
1710
|
+
*
|
|
1711
|
+
* **Migration example:**
|
|
1712
|
+
*
|
|
1713
|
+
* ```js
|
|
1714
|
+
* // Before (deprecated)
|
|
1715
|
+
* columns: [{
|
|
1716
|
+
* type: 'date',
|
|
1717
|
+
* dateFormat: 'YYYY-MM-DD'
|
|
1718
|
+
* }]
|
|
1719
|
+
*
|
|
1720
|
+
* // After (recommended)
|
|
1721
|
+
* columns: [{
|
|
1722
|
+
* type: 'intl-date',
|
|
1723
|
+
* locale: 'en-US',
|
|
1724
|
+
* dateFormat: {
|
|
1725
|
+
* year: 'numeric',
|
|
1726
|
+
* month: '2-digit',
|
|
1727
|
+
* day: '2-digit'
|
|
1728
|
+
* }
|
|
1729
|
+
* }]
|
|
1730
|
+
* ```
|
|
1651
1731
|
*
|
|
1652
1732
|
* @memberof Options#
|
|
1653
|
-
* @type {string}
|
|
1733
|
+
* @type {string|object}
|
|
1654
1734
|
* @default 'DD/MM/YYYY'
|
|
1655
1735
|
* @category Core
|
|
1656
1736
|
*
|
|
1657
1737
|
* @example
|
|
1658
1738
|
* ```js
|
|
1739
|
+
* // intl-date cell type with Intl options
|
|
1659
1740
|
* columns: [
|
|
1660
1741
|
* {
|
|
1661
|
-
*
|
|
1662
|
-
*
|
|
1663
|
-
*
|
|
1664
|
-
*
|
|
1665
|
-
*
|
|
1666
|
-
*
|
|
1742
|
+
* type: 'intl-date',
|
|
1743
|
+
* locale: 'en-US',
|
|
1744
|
+
* dateFormat: {
|
|
1745
|
+
* dateStyle: 'short'
|
|
1746
|
+
* }
|
|
1747
|
+
* }
|
|
1748
|
+
* ]
|
|
1749
|
+
* ```
|
|
1750
|
+
*
|
|
1751
|
+
* @example
|
|
1752
|
+
* ```js
|
|
1753
|
+
* // Legacy: date cell type with string format (deprecated)
|
|
1754
|
+
* columns: [
|
|
1755
|
+
* {
|
|
1756
|
+
* type: 'date',
|
|
1757
|
+
* dateFormat: 'YYYY-MM-DD'
|
|
1758
|
+
* }
|
|
1759
|
+
* ]
|
|
1667
1760
|
* ```
|
|
1668
1761
|
*/
|
|
1669
1762
|
dateFormat: 'DD/MM/YYYY',
|
|
1670
1763
|
/**
|
|
1671
|
-
*
|
|
1764
|
+
* Configures the time format for time cells. Accepts either a string (legacy, for [`time`](@/guides/cell-types/time-cell-type/time-cell-type.md)
|
|
1765
|
+
* cells) or an object of [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat)
|
|
1766
|
+
* options (for [`intl-time`](@/guides/cell-types/time-cell-type/time-cell-type.md) cells).
|
|
1767
|
+
*
|
|
1768
|
+
* ::: warning
|
|
1769
|
+
* The string form of `timeFormat` is deprecated and will be removed in the next major release.
|
|
1770
|
+
* It is used only by the `time` cell type. Use the `intl-time` cell type with an `Intl.DateTimeFormat`
|
|
1771
|
+
* options object instead.
|
|
1772
|
+
* :::
|
|
1672
1773
|
*
|
|
1673
|
-
*
|
|
1774
|
+
* **Object form (Intl.DateTimeFormat options):**
|
|
1674
1775
|
*
|
|
1675
|
-
*
|
|
1776
|
+
* The object form is supported only when the cell type is `intl-time`. The locale is controlled separately
|
|
1777
|
+
* via the [`locale`](@/api/options.md#locale) option.
|
|
1778
|
+
*
|
|
1779
|
+
* ::: tip Source data format
|
|
1780
|
+
* For `intl-time` cells, source data must be in 24-hour time format (`HH:mm`, `HH:mm:ss`, or `HH:mm:ss.SSS`), matching
|
|
1781
|
+
* the HTML `input type="time"` value. Otherwise operations such as sorting and filtering can be unstable or unpredictable.
|
|
1782
|
+
* The `timeFormat` object affects only how times are displayed; the underlying value should remain in that format.
|
|
1783
|
+
* :::
|
|
1784
|
+
*
|
|
1785
|
+
* **Style shortcuts:**
|
|
1786
|
+
*
|
|
1787
|
+
* | Property | Possible values | Description |
|
|
1788
|
+
* | ------------ | -------------------------------------------------- | -------------------------------------------------------- |
|
|
1789
|
+
* | `timeStyle` | `'full'`, `'long'`, `'medium'`, `'short'` | Time formatting style (expands to hour, minute, second, timeZoneName) |
|
|
1790
|
+
*
|
|
1791
|
+
* **Time component options:**
|
|
1792
|
+
*
|
|
1793
|
+
* | Property | Possible values | Description |
|
|
1794
|
+
* | ------------------------ | ------------------------------------------------------------------------------- | ------------------------------------ |
|
|
1795
|
+
* | `hour` | `'numeric'`, `'2-digit'` | Representation of the hour |
|
|
1796
|
+
* | `minute` | `'numeric'`, `'2-digit'` | Representation of the minute |
|
|
1797
|
+
* | `second` | `'numeric'`, `'2-digit'` | Representation of the second |
|
|
1798
|
+
* | `fractionalSecondDigits` | `1`, `2`, `3` | Fraction-of-second digits |
|
|
1799
|
+
* | `dayPeriod` | `'narrow'`, `'short'`, `'long'` | Day period (e.g. "am", "noon") |
|
|
1800
|
+
* | `timeZoneName` | `'long'`, `'short'`, `'shortOffset'`, `'longOffset'`, `'shortGeneric'`, `'longGeneric'` | Time zone display |
|
|
1801
|
+
*
|
|
1802
|
+
* **Locale and other options:**
|
|
1803
|
+
*
|
|
1804
|
+
* | Property | Possible values | Description |
|
|
1805
|
+
* | ----------------- | -------------------------------------------------- | ------------------------------ |
|
|
1806
|
+
* | `localeMatcher` | `'best fit'` (default), `'lookup'` | Locale matching algorithm |
|
|
1807
|
+
* | `timeZone` | IANA time zone (e.g. `'UTC'`, `'America/New_York'`) | Time zone for formatting |
|
|
1808
|
+
* | `hour12` | `true`, `false` | Use 12-hour vs 24-hour time |
|
|
1809
|
+
* | `hourCycle` | `'h11'`, `'h12'`, `'h23'`, `'h24'` | Hour cycle |
|
|
1810
|
+
* | `formatMatcher` | `'basic'`, `'best fit'` (default) | Format matching algorithm |
|
|
1811
|
+
*
|
|
1812
|
+
* For complete reference, see [MDN: Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat).
|
|
1676
1813
|
*
|
|
1677
1814
|
* Read more:
|
|
1678
1815
|
* - [Time cell type](@/guides/cell-types/time-cell-type/time-cell-type.md)
|
|
1679
|
-
* - [`
|
|
1816
|
+
* - [`locale`](@/api/options.md#locale)
|
|
1817
|
+
*
|
|
1818
|
+
* ---
|
|
1819
|
+
*
|
|
1820
|
+
* **Deprecated: string form**
|
|
1821
|
+
*
|
|
1822
|
+
* Passing a string (e.g. `'h:mm:ss a'`) is deprecated and works only with the `time` cell type.
|
|
1823
|
+
* Migrate to the `intl-time` cell type and pass an `Intl.DateTimeFormat` options object.
|
|
1824
|
+
*
|
|
1825
|
+
* **Migration example:**
|
|
1826
|
+
*
|
|
1827
|
+
* ```js
|
|
1828
|
+
* // Before (deprecated)
|
|
1829
|
+
* columns: [{
|
|
1830
|
+
* type: 'time',
|
|
1831
|
+
* timeFormat: 'h:mm:ss a'
|
|
1832
|
+
* }]
|
|
1833
|
+
*
|
|
1834
|
+
* // After (recommended)
|
|
1835
|
+
* columns: [{
|
|
1836
|
+
* type: 'intl-time',
|
|
1837
|
+
* locale: 'en-US',
|
|
1838
|
+
* timeFormat: {
|
|
1839
|
+
* hour: 'numeric',
|
|
1840
|
+
* minute: '2-digit',
|
|
1841
|
+
* second: '2-digit',
|
|
1842
|
+
* hour12: true
|
|
1843
|
+
* }
|
|
1844
|
+
* }]
|
|
1845
|
+
* ```
|
|
1680
1846
|
*
|
|
1681
1847
|
* @memberof Options#
|
|
1682
|
-
* @type {string}
|
|
1848
|
+
* @type {string|object}
|
|
1683
1849
|
* @default 'h:mm:ss a'
|
|
1684
1850
|
* @category Core
|
|
1685
1851
|
*
|
|
1686
1852
|
* @example
|
|
1687
1853
|
* ```js
|
|
1854
|
+
* // intl-time cell type with Intl options
|
|
1688
1855
|
* columns: [
|
|
1689
1856
|
* {
|
|
1690
|
-
*
|
|
1691
|
-
*
|
|
1692
|
-
*
|
|
1693
|
-
*
|
|
1694
|
-
*
|
|
1695
|
-
*
|
|
1857
|
+
* type: 'intl-time',
|
|
1858
|
+
* locale: 'en-US',
|
|
1859
|
+
* timeFormat: {
|
|
1860
|
+
* timeStyle: 'medium'
|
|
1861
|
+
* }
|
|
1862
|
+
* }
|
|
1863
|
+
* ]
|
|
1864
|
+
* ```
|
|
1865
|
+
*
|
|
1866
|
+
* @example
|
|
1867
|
+
* ```js
|
|
1868
|
+
* // Legacy: time cell type with string format (deprecated)
|
|
1869
|
+
* columns: [
|
|
1870
|
+
* {
|
|
1871
|
+
* type: 'time',
|
|
1872
|
+
* timeFormat: 'h:mm:ss a'
|
|
1873
|
+
* }
|
|
1874
|
+
* ]
|
|
1696
1875
|
* ```
|
|
1697
1876
|
*/
|
|
1698
1877
|
timeFormat: 'h:mm:ss a',
|
|
@@ -1719,6 +1898,7 @@ export default () => {
|
|
|
1719
1898
|
* - [Cell editor](@/guides/cell-functions/cell-editor/cell-editor.md)
|
|
1720
1899
|
* - [All Pikaday options →](https://github.com/Pikaday/Pikaday/tree/1.8.2#configuration)
|
|
1721
1900
|
*
|
|
1901
|
+
* @deprecated This option is deprecated and will be removed in the next major release.
|
|
1722
1902
|
* @memberof Options#
|
|
1723
1903
|
* @type {object}
|
|
1724
1904
|
* @default undefined
|
|
@@ -1727,9 +1907,9 @@ export default () => {
|
|
|
1727
1907
|
datePickerConfig: undefined,
|
|
1728
1908
|
/**
|
|
1729
1909
|
* The `defaultDate` option configures the date displayed
|
|
1730
|
-
* in empty [`date`](@/guides/cell-types/date-cell-type/date-cell-type.md)
|
|
1910
|
+
* in the editor for an empty [`date`](@/guides/cell-types/date-cell-type/date-cell-type.md) cell.
|
|
1731
1911
|
*
|
|
1732
|
-
*
|
|
1912
|
+
* The option accepts a string in ISO 8601 format (`YYYY-MM-DD`).
|
|
1733
1913
|
*
|
|
1734
1914
|
* Read more:
|
|
1735
1915
|
* - [Date cell type](@/guides/cell-types/date-cell-type/date-cell-type.md)
|
|
@@ -1744,9 +1924,7 @@ export default () => {
|
|
|
1744
1924
|
* ```js
|
|
1745
1925
|
* columns: [
|
|
1746
1926
|
* {
|
|
1747
|
-
* // set the `type` of each cell in this column to `date`
|
|
1748
1927
|
* type: 'date',
|
|
1749
|
-
* // in every empty `date` cell of this column, display `2015-02-02`
|
|
1750
1928
|
* defaultDate: '2015-02-02'
|
|
1751
1929
|
* }
|
|
1752
1930
|
* ],
|
|
@@ -2055,6 +2233,7 @@ export default () => {
|
|
|
2055
2233
|
* | `'base'` | `BaseEditor` |
|
|
2056
2234
|
* | `'checkbox'` | `CheckboxEditor` |
|
|
2057
2235
|
* | `'date'` | `DateEditor` |
|
|
2236
|
+
* | `'intl-date'` | `IntlDateEditor` |
|
|
2058
2237
|
* | `'dropdown'` | `DropdownEditor` |
|
|
2059
2238
|
* | `'handsontable'` | `HandsontableEditor` |
|
|
2060
2239
|
* | `'numeric'` | `NumericEditor` |
|
|
@@ -2062,6 +2241,7 @@ export default () => {
|
|
|
2062
2241
|
* | `'select'` | `SelectEditor` |
|
|
2063
2242
|
* | `'text'` | `TextEditor` |
|
|
2064
2243
|
* | `'time'` | `TimeEditor` |
|
|
2244
|
+
* | `'intl-time'` | `IntlTimeEditor` |
|
|
2065
2245
|
*
|
|
2066
2246
|
* To disable editing cells through cell editors,
|
|
2067
2247
|
* set the `editor` option to `false`.
|
|
@@ -2213,6 +2393,29 @@ export default () => {
|
|
|
2213
2393
|
* ```
|
|
2214
2394
|
*/
|
|
2215
2395
|
enterBeginsEditing: true,
|
|
2396
|
+
/**
|
|
2397
|
+
* The `enterCommits` option configures whether the <kbd>**Enter**</kbd> key closes the [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md) editor.
|
|
2398
|
+
*
|
|
2399
|
+
* @memberof Options#
|
|
2400
|
+
* @type {boolean}
|
|
2401
|
+
* @default true
|
|
2402
|
+
* @since 17.0.0
|
|
2403
|
+
* @category Core
|
|
2404
|
+
* @example
|
|
2405
|
+
* ```js
|
|
2406
|
+
* columns: [{
|
|
2407
|
+
* type: 'multiSelect',
|
|
2408
|
+
* // press Enter to close the `multiSelect` editor and Space to select an option
|
|
2409
|
+
* enterCommits: true,
|
|
2410
|
+
* }, {
|
|
2411
|
+
* type: 'multiSelect',
|
|
2412
|
+
* // press Enter to select an option
|
|
2413
|
+
* enterCommits: false,
|
|
2414
|
+
* }],
|
|
2415
|
+
* ],
|
|
2416
|
+
* ```
|
|
2417
|
+
*/
|
|
2418
|
+
enterCommits: true,
|
|
2216
2419
|
/**
|
|
2217
2420
|
* The `enterMoves` option configures the action of the <kbd>**Enter**</kbd> key.
|
|
2218
2421
|
*
|
|
@@ -2352,8 +2555,8 @@ export default () => {
|
|
|
2352
2555
|
*/
|
|
2353
2556
|
filter: true,
|
|
2354
2557
|
/**
|
|
2355
|
-
* The `filteringCaseSensitive` option configures whether [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md) cells'
|
|
2356
|
-
*
|
|
2558
|
+
* The `filteringCaseSensitive` option configures whether [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md) and [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)-typed cells'
|
|
2559
|
+
* search inputs are case-sensitive.
|
|
2357
2560
|
*
|
|
2358
2561
|
* You can set the `filteringCaseSensitive` option to one of the following:
|
|
2359
2562
|
*
|
|
@@ -2380,6 +2583,12 @@ export default () => {
|
|
|
2380
2583
|
* source: [ ... ],
|
|
2381
2584
|
* // match case while searching autocomplete options
|
|
2382
2585
|
* filteringCaseSensitive: true
|
|
2586
|
+
* },
|
|
2587
|
+
* {
|
|
2588
|
+
* type: 'multiSelect',
|
|
2589
|
+
* source: [ ... ],
|
|
2590
|
+
* // match case while searching multiSelect options
|
|
2591
|
+
* filteringCaseSensitive: true
|
|
2383
2592
|
* }
|
|
2384
2593
|
* ],
|
|
2385
2594
|
* ```
|
|
@@ -2421,6 +2630,23 @@ export default () => {
|
|
|
2421
2630
|
* ```
|
|
2422
2631
|
*/
|
|
2423
2632
|
filters: undefined,
|
|
2633
|
+
/**
|
|
2634
|
+
* The `filterSelectedItems` option configures whether the selected items are filtered out of the dropdown, when using the search input of the [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md) editor.
|
|
2635
|
+
*
|
|
2636
|
+
* @memberof Options#
|
|
2637
|
+
* @type {boolean}
|
|
2638
|
+
* @default true
|
|
2639
|
+
* @category Core
|
|
2640
|
+
*
|
|
2641
|
+
* @example
|
|
2642
|
+
* ```js
|
|
2643
|
+
* // filter out the selected items from the dropdown
|
|
2644
|
+
* filterSelectedItems: true,
|
|
2645
|
+
*
|
|
2646
|
+
* // keep the selected items in the dropdown
|
|
2647
|
+
* filterSelectedItems: false,
|
|
2648
|
+
*/
|
|
2649
|
+
filterSelectedItems: true,
|
|
2424
2650
|
/**
|
|
2425
2651
|
* `fixedColumnsLeft` is a legacy option.
|
|
2426
2652
|
*
|
|
@@ -3334,6 +3560,26 @@ export default () => {
|
|
|
3334
3560
|
* ```
|
|
3335
3561
|
*/
|
|
3336
3562
|
maxRows: Infinity,
|
|
3563
|
+
/**
|
|
3564
|
+
* The `maxSelections` option sets a maximum number of selections for the [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)-typed cells.
|
|
3565
|
+
*
|
|
3566
|
+
* @since 17.0.0
|
|
3567
|
+
* @memberof Options#
|
|
3568
|
+
* @type {number}
|
|
3569
|
+
* @default undefined
|
|
3570
|
+
* @category Core
|
|
3571
|
+
*
|
|
3572
|
+
* @example
|
|
3573
|
+
* ```js
|
|
3574
|
+
* columns: [{
|
|
3575
|
+
* // set the `type` of each cell in this column to `multiSelect`
|
|
3576
|
+
* type: 'multiSelect',
|
|
3577
|
+
* // set the maximum number of selections to 3
|
|
3578
|
+
* maxSelections: 3,
|
|
3579
|
+
* }],
|
|
3580
|
+
* ```
|
|
3581
|
+
*/
|
|
3582
|
+
maxSelections: undefined,
|
|
3337
3583
|
/**
|
|
3338
3584
|
* @description
|
|
3339
3585
|
* The `mergeCells` option configures the [`MergeCells`](@/api/mergeCells.md) plugin.
|
|
@@ -3740,25 +3986,113 @@ export default () => {
|
|
|
3740
3986
|
*/
|
|
3741
3987
|
noWordWrapClassName: 'htNoWrap',
|
|
3742
3988
|
/**
|
|
3743
|
-
*
|
|
3744
|
-
*
|
|
3745
|
-
*
|
|
3989
|
+
* Configures the number format for [`numeric`](@/guides/cell-types/numeric-cell-type/numeric-cell-type.md)
|
|
3990
|
+
* cells, including currency, units, precision, and other display options.
|
|
3991
|
+
*
|
|
3992
|
+
* ::: warning
|
|
3993
|
+
* The `numericFormat.pattern` and `numericFormat.culture` options are deprecated and will be
|
|
3994
|
+
* removed in the next major release. Pass `Intl.NumberFormat` options directly to `numericFormat`
|
|
3995
|
+
* and use the `locale` cell property instead of `culture`.
|
|
3996
|
+
* :::
|
|
3997
|
+
*
|
|
3998
|
+
* Since v17.0.0, this option accepts all properties of the
|
|
3999
|
+
* [`Intl.NumberFormatOptions`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat)
|
|
4000
|
+
* object. The locale is controlled separately via the [`locale`](@/api/options.md#locale) option.
|
|
4001
|
+
*
|
|
4002
|
+
* **Style options:**
|
|
4003
|
+
*
|
|
4004
|
+
* | Property | Possible values | Description |
|
|
4005
|
+
* | ----------------- | --------------------------------------------------------- | -------------------------------------------------------------- |
|
|
4006
|
+
* | `style` | `'decimal'` (default), `'currency'`, `'percent'`, `'unit'`| The formatting style to use |
|
|
4007
|
+
* | `currency` | ISO 4217 currency codes (e.g., `'USD'`, `'EUR'`, `'PLN'`) | Required when `style` is `'currency'` |
|
|
4008
|
+
* | `currencyDisplay` | `'symbol'` (default), `'narrowSymbol'`, `'code'`, `'name'`| How to display the currency |
|
|
4009
|
+
* | `currencySign` | `'standard'` (default), `'accounting'` | Use parentheses for negative values in accounting format |
|
|
4010
|
+
* | `unit` | Unit identifiers (e.g., `'kilometer'`, `'liter'`) | Required when `style` is `'unit'` |
|
|
4011
|
+
* | `unitDisplay` | `'short'` (default), `'narrow'`, `'long'` | How to display the unit |
|
|
4012
|
+
*
|
|
4013
|
+
* **Notation options:**
|
|
4014
|
+
*
|
|
4015
|
+
* | Property | Possible values | Description |
|
|
4016
|
+
* | ----------------- | ------------------------------------------------------------- | -------------------------------------------------------- |
|
|
4017
|
+
* | `notation` | `'standard'` (default), `'scientific'`, `'engineering'`, `'compact'` | The formatting notation |
|
|
4018
|
+
* | `compactDisplay` | `'short'` (default), `'long'` | Display style for compact notation (e.g., `1.5M` vs `1.5 million`) |
|
|
3746
4019
|
*
|
|
3747
|
-
*
|
|
4020
|
+
* **Sign and grouping options:**
|
|
3748
4021
|
*
|
|
3749
|
-
* | Property
|
|
3750
|
-
* |
|
|
3751
|
-
* | `
|
|
3752
|
-
* | `
|
|
4022
|
+
* | Property | Possible values | Description |
|
|
4023
|
+
* | ----------------- | ------------------------------------------------------------------- | -------------------------------------------------- |
|
|
4024
|
+
* | `signDisplay` | `'auto'` (default), `'never'`, `'always'`, `'exceptZero'`, `'negative'` | When to display the sign |
|
|
4025
|
+
* | `useGrouping` | `true`, `false` (default), `'always'`, `'auto'`, `'min2'` | Whether to use grouping separators (e.g., `1,000`) |
|
|
3753
4026
|
*
|
|
3754
|
-
*
|
|
4027
|
+
* **Digit options:**
|
|
3755
4028
|
*
|
|
3756
|
-
*
|
|
4029
|
+
* | Property | Possible values | Description |
|
|
4030
|
+
* | ------------------------- | --------------- | ------------------------------------------------------------- |
|
|
4031
|
+
* | `minimumIntegerDigits` | `1` to `21` | Minimum number of integer digits (pads with zeros) |
|
|
4032
|
+
* | `minimumFractionDigits` | `0` to `100` | Minimum number of fraction digits |
|
|
4033
|
+
* | `maximumFractionDigits` | `0` to `100` | Maximum number of fraction digits |
|
|
4034
|
+
* | `minimumSignificantDigits`| `1` to `21` | Minimum number of significant digits |
|
|
4035
|
+
* | `maximumSignificantDigits`| `1` to `21` | Maximum number of significant digits |
|
|
4036
|
+
*
|
|
4037
|
+
* **Rounding options:**
|
|
4038
|
+
*
|
|
4039
|
+
* | Property | Possible values | Description |
|
|
4040
|
+
* | --------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------ |
|
|
4041
|
+
* | `roundingMode` | `'halfExpand'` (default), `'ceil'`, `'floor'`, `'expand'`, `'trunc'`, `'halfCeil'`, `'halfFloor'`, `'halfTrunc'`, `'halfEven'` | Rounding algorithm |
|
|
4042
|
+
* | `roundingPriority` | `'auto'` (default), `'morePrecision'`, `'lessPrecision'` | Priority between fraction and significant digits |
|
|
4043
|
+
* | `roundingIncrement` | `1`, `2`, `5`, `10`, `20`, `25`, `50`, `100`, `200`, `250`, `500`, `1000`, `2000`, `2500`, `5000` | Increment for rounding (e.g., nickel rounding) |
|
|
4044
|
+
* | `trailingZeroDisplay` | `'auto'` (default), `'stripIfInteger'` | Whether to strip trailing zeros for integers |
|
|
4045
|
+
*
|
|
4046
|
+
* **Locale options:**
|
|
4047
|
+
*
|
|
4048
|
+
* | Property | Possible values | Description |
|
|
4049
|
+
* | ----------------- | --------------------------------------------------------- | -------------------------------------------------- |
|
|
4050
|
+
* | `localeMatcher` | `'best fit'` (default), `'lookup'` | Locale matching algorithm |
|
|
4051
|
+
* | `numberingSystem` | `'latn'`, `'arab'`, `'hans'`, `'deva'`, `'thai'`, etc. | Numbering system to use |
|
|
4052
|
+
*
|
|
4053
|
+
* For complete reference, see [MDN: Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options).
|
|
4054
|
+
*
|
|
4055
|
+
* This option affects only the displayed output in the cell renderer.
|
|
4056
|
+
* It has no effect on the numeric cell editor. In the source data, numeric values
|
|
4057
|
+
* are stored as JavaScript numbers.
|
|
3757
4058
|
*
|
|
3758
4059
|
* Read more:
|
|
4060
|
+
* - [`locale`](@/api/options.md#locale)
|
|
3759
4061
|
* - [Numeric cell type](@/guides/cell-types/numeric-cell-type/numeric-cell-type.md)
|
|
4062
|
+
* - [Cell renderer](@/guides/cell-functions/cell-renderer/cell-renderer.md)
|
|
4063
|
+
* - [Numbro cell type](@/recipes/cell-types/numbro/numbro.md)
|
|
3760
4064
|
* - [Third-party licenses](@/guides/technical-specification/third-party-licenses/third-party-licenses.md)
|
|
3761
4065
|
*
|
|
4066
|
+
* ---
|
|
4067
|
+
*
|
|
4068
|
+
* **Deprecated options:**
|
|
4069
|
+
*
|
|
4070
|
+
* The `pattern` and `culture` properties (numbro.js-based formatting) are deprecated and will be
|
|
4071
|
+
* removed in the next major release. Migrate to the `Intl.NumberFormat` API shown above.
|
|
4072
|
+
*
|
|
4073
|
+
* | Deprecated property | Possible values | Replacement |
|
|
4074
|
+
* | ------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------- |
|
|
4075
|
+
* | `pattern` | All [`numbro.js` number formats](https://numbrojs.com/format.html#numbers) | Use `Intl.NumberFormat` options (see tables above) |
|
|
4076
|
+
* | `culture` | All [`numbro.js` currency formats](https://numbrojs.com/format.html#currency) | Use the [`locale`](@/api/options.md#locale) option |
|
|
4077
|
+
*
|
|
4078
|
+
* **Migration example:**
|
|
4079
|
+
*
|
|
4080
|
+
* ```js
|
|
4081
|
+
* // Before (deprecated)
|
|
4082
|
+
* numericFormat: {
|
|
4083
|
+
* pattern: '0,0.00 $',
|
|
4084
|
+
* culture: 'en-US'
|
|
4085
|
+
* }
|
|
4086
|
+
*
|
|
4087
|
+
* // After (recommended)
|
|
4088
|
+
* locale: 'en-US',
|
|
4089
|
+
* numericFormat: {
|
|
4090
|
+
* style: 'currency',
|
|
4091
|
+
* currency: 'USD',
|
|
4092
|
+
* minimumFractionDigits: 2
|
|
4093
|
+
* }
|
|
4094
|
+
* ```
|
|
4095
|
+
*
|
|
3762
4096
|
* @memberof Options#
|
|
3763
4097
|
* @since 0.35.0
|
|
3764
4098
|
* @type {object}
|
|
@@ -3769,14 +4103,11 @@ export default () => {
|
|
|
3769
4103
|
* ```js
|
|
3770
4104
|
* columns: [
|
|
3771
4105
|
* {
|
|
3772
|
-
* // set the `type` of each cell in this column to `numeric`
|
|
3773
4106
|
* type: 'numeric',
|
|
3774
|
-
*
|
|
4107
|
+
* locale: 'en-US',
|
|
3775
4108
|
* numericFormat: {
|
|
3776
|
-
*
|
|
3777
|
-
*
|
|
3778
|
-
* // set the currency format
|
|
3779
|
-
* culture: 'en-US'
|
|
4109
|
+
* style: 'currency',
|
|
4110
|
+
* currency: 'USD',
|
|
3780
4111
|
* }
|
|
3781
4112
|
* }
|
|
3782
4113
|
* ],
|
|
@@ -3878,33 +4209,6 @@ export default () => {
|
|
|
3878
4209
|
* ```
|
|
3879
4210
|
*/
|
|
3880
4211
|
pagination: undefined,
|
|
3881
|
-
/**
|
|
3882
|
-
* @description
|
|
3883
|
-
* The `persistentState` option configures the [`PersistentState`](@/api/persistentState.md) plugin.
|
|
3884
|
-
*
|
|
3885
|
-
* You can set the `persistentState` to one of the following:
|
|
3886
|
-
*
|
|
3887
|
-
* | Setting | Description |
|
|
3888
|
-
* | ----------------- | ---------------------------------------------------------------- |
|
|
3889
|
-
* | `false` (default) | Disable the [`PersistentState`](@/api/persistentState.md) plugin |
|
|
3890
|
-
* | `true` | Enable the [`PersistentState`](@/api/persistentState.md) plugin |
|
|
3891
|
-
*
|
|
3892
|
-
* Read more:
|
|
3893
|
-
* - [Saving data: Saving data locally](@/guides/getting-started/saving-data/saving-data.md#save-data-locally)
|
|
3894
|
-
* - [Plugins: `PersistentState`](@/api/persistentState.md)
|
|
3895
|
-
*
|
|
3896
|
-
* @memberof Options#
|
|
3897
|
-
* @type {boolean}
|
|
3898
|
-
* @default false
|
|
3899
|
-
* @category PersistentState
|
|
3900
|
-
*
|
|
3901
|
-
* @example
|
|
3902
|
-
* ```js
|
|
3903
|
-
* // enable the `PersistentState` plugin
|
|
3904
|
-
* persistentState: true,
|
|
3905
|
-
* ```
|
|
3906
|
-
*/
|
|
3907
|
-
persistentState: undefined,
|
|
3908
4212
|
/**
|
|
3909
4213
|
* The `placeholder` option lets you display placeholder text in every empty cell.
|
|
3910
4214
|
*
|
|
@@ -4169,12 +4473,14 @@ export default () => {
|
|
|
4169
4473
|
* | `'base'` | `BaseRenderer` |
|
|
4170
4474
|
* | `'checkbox'` | `CheckboxRenderer` |
|
|
4171
4475
|
* | `'date'` | `DateRenderer` |
|
|
4476
|
+
* | `'intl-date'` | `IntlDateRenderer` |
|
|
4172
4477
|
* | `'dropdown'` | `DropdownRenderer` |
|
|
4173
4478
|
* | `'html'` | `HtmlRenderer` |
|
|
4174
4479
|
* | `'numeric'` | `NumericRenderer` |
|
|
4175
4480
|
* | `'password'` | `PasswordRenderer` |
|
|
4176
4481
|
* | `'text'` | `TextRenderer` |
|
|
4177
4482
|
* | `'time'` | `TimeRenderer` |
|
|
4483
|
+
* | `'intl-time'` | `IntlTimeRenderer` |
|
|
4178
4484
|
*
|
|
4179
4485
|
* To set the [`renderer`](#renderer), [`editor`](#editor), and [`validator`](#validator)
|
|
4180
4486
|
* options all at once, use the [`type`](#type) option.
|
|
@@ -4215,6 +4521,165 @@ export default () => {
|
|
|
4215
4521
|
* ```
|
|
4216
4522
|
*/
|
|
4217
4523
|
renderer: undefined,
|
|
4524
|
+
/**
|
|
4525
|
+
* @description
|
|
4526
|
+
* The `valueFormatter` option sets a custom function for formatting cell values before display.
|
|
4527
|
+
*
|
|
4528
|
+
* Unlike the [`renderer`](#renderer) option, which is responsible for the complete cell rendering process
|
|
4529
|
+
* (DOM structure, performance-optimized content insertion via `innerText`/`innerHTML`, a11y attributes, applying
|
|
4530
|
+
* styles from `className`, `readOnlyCellClassName`, `textEllipsis`, and other options), the `valueFormatter`
|
|
4531
|
+
* focuses solely on transforming the cell's value.
|
|
4532
|
+
*
|
|
4533
|
+
* The `valueFormatter` function is called by the rendering engine right before the actual renderer function is
|
|
4534
|
+
* called. Separating the value formatting from the renderer logic allows for more flexibility and reuse.
|
|
4535
|
+
* This simplifies common formatting use cases where you only need to transform
|
|
4536
|
+
* the displayed value (e.g., adding units, formatting dates, or applying custom text transformations).
|
|
4537
|
+
*
|
|
4538
|
+
* **When to use `valueFormatter` vs `renderer`:**
|
|
4539
|
+
*
|
|
4540
|
+
* | Use case | Recommended option |
|
|
4541
|
+
* | ------------------------------------------------- | -------------------- |
|
|
4542
|
+
* | Transform displayed value (add prefix, units) | `valueFormatter` |
|
|
4543
|
+
* | Custom date/number/text formatting | `valueFormatter` |
|
|
4544
|
+
* | Modify DOM structure (add icons, custom elements) | `renderer` |
|
|
4545
|
+
*
|
|
4546
|
+
* The function receives the raw value and cell properties, and should return the formatted value
|
|
4547
|
+
* to be displayed. The formatting can be applied to a single cell, column, or the entire grid.
|
|
4548
|
+
*
|
|
4549
|
+
* **Function signature:**
|
|
4550
|
+
* ```js
|
|
4551
|
+
* valueFormatter(value, cellProperties) => formattedValue
|
|
4552
|
+
* ```
|
|
4553
|
+
*
|
|
4554
|
+
* | Parameter | Type | Description |
|
|
4555
|
+
* | ---------------- | ---------- | ---------------------------------------------- |
|
|
4556
|
+
* | `value` | `*` | The raw cell value |
|
|
4557
|
+
* | `cellProperties` | `object` | The cell's meta object (see {@link Core#getCellMeta}) |
|
|
4558
|
+
* | Returns | `*` | The formatted value to display |
|
|
4559
|
+
*
|
|
4560
|
+
* Read more:
|
|
4561
|
+
* - [Cell renderer](@/guides/cell-functions/cell-renderer/cell-renderer.md)
|
|
4562
|
+
* - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration)
|
|
4563
|
+
*
|
|
4564
|
+
* @memberof Options#
|
|
4565
|
+
* @since 17.0.0
|
|
4566
|
+
* @type {Function}
|
|
4567
|
+
* @default undefined
|
|
4568
|
+
* @category Core
|
|
4569
|
+
*
|
|
4570
|
+
* @example
|
|
4571
|
+
* ```js
|
|
4572
|
+
* // add a currency symbol to numeric values
|
|
4573
|
+
* valueFormatter(value, cellProperties) {
|
|
4574
|
+
* if (value === null || value === undefined) {
|
|
4575
|
+
* return '';
|
|
4576
|
+
* }
|
|
4577
|
+
*
|
|
4578
|
+
* return `$${value}`;
|
|
4579
|
+
* }
|
|
4580
|
+
*
|
|
4581
|
+
* // format dates in a custom format
|
|
4582
|
+
* valueFormatter(value, cellProperties) {
|
|
4583
|
+
* if (!value) {
|
|
4584
|
+
* return '';
|
|
4585
|
+
* }
|
|
4586
|
+
*
|
|
4587
|
+
* const date = new Date(value);
|
|
4588
|
+
*
|
|
4589
|
+
* return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });
|
|
4590
|
+
* }
|
|
4591
|
+
*
|
|
4592
|
+
* // apply valueFormatter to individual columns
|
|
4593
|
+
* columns: [
|
|
4594
|
+
* {
|
|
4595
|
+
* // add "kg" suffix to weight values
|
|
4596
|
+
* valueFormatter(value) {
|
|
4597
|
+
* return value ? `${value} kg` : '';
|
|
4598
|
+
* }
|
|
4599
|
+
* },
|
|
4600
|
+
* {
|
|
4601
|
+
* // format percentages
|
|
4602
|
+
* valueFormatter(value) {
|
|
4603
|
+
* return value !== null ? `${(value * 100).toFixed(1)}%` : '';
|
|
4604
|
+
* }
|
|
4605
|
+
* }
|
|
4606
|
+
* ]
|
|
4607
|
+
* ```
|
|
4608
|
+
*/
|
|
4609
|
+
valueFormatter: undefined,
|
|
4610
|
+
/**
|
|
4611
|
+
* @description
|
|
4612
|
+
* The `valueParser` option sets a custom function for converting editor output into the source data format.
|
|
4613
|
+
*
|
|
4614
|
+
* Unlike [`valueFormatter`](#valueformatter), which formats values for display, `valueParser` runs only when a
|
|
4615
|
+
* value comes from the [cell editor](@/guides/cell-functions/cell-editor/cell-editor.md) - after the user finishes
|
|
4616
|
+
* editing. It maps whatever the editor returns (e.g. a localized date string, a formatted number) into the
|
|
4617
|
+
* canonical shape stored in the data source (e.g. ISO date string, raw number).
|
|
4618
|
+
*
|
|
4619
|
+
* **When to use `valueParser` vs `valueFormatter`:**
|
|
4620
|
+
*
|
|
4621
|
+
* | Use case | Option |
|
|
4622
|
+
* | -------------------------------------- | ---------------- |
|
|
4623
|
+
* | Display: raw value -> shown text | `valueFormatter` |
|
|
4624
|
+
* | Edit: editor value -> source data | `valueParser` |
|
|
4625
|
+
*
|
|
4626
|
+
* **Function signature:**
|
|
4627
|
+
* ```js
|
|
4628
|
+
* valueParser(value, cellProperties) => sourceValue
|
|
4629
|
+
* ```
|
|
4630
|
+
*
|
|
4631
|
+
* | Parameter | Type | Description |
|
|
4632
|
+
* | ---------------- | -------- | ---------------------------------------------- |
|
|
4633
|
+
* | `value` | `*` | The value produced by the editor |
|
|
4634
|
+
* | `cellProperties` | `object` | The cell's meta object (see {@link Core#getCellMeta}) |
|
|
4635
|
+
* | Returns | `*` | The value to store in the source data |
|
|
4636
|
+
*
|
|
4637
|
+
* Read more:
|
|
4638
|
+
* - [Cell editor](@/guides/cell-functions/cell-editor/cell-editor.md)
|
|
4639
|
+
* - [`editor`](#editor)
|
|
4640
|
+
* - [`renderer`](#renderer)
|
|
4641
|
+
* - [`valueFormatter`](#valueformatter)
|
|
4642
|
+
* - [`sourceDataValidator`](#sourcedatavalidator)
|
|
4643
|
+
* - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration)
|
|
4644
|
+
*
|
|
4645
|
+
* @memberof Options#
|
|
4646
|
+
* @since 17.0.0
|
|
4647
|
+
* @type {Function}
|
|
4648
|
+
* @default undefined
|
|
4649
|
+
* @category Core
|
|
4650
|
+
*
|
|
4651
|
+
* @example
|
|
4652
|
+
* ```js
|
|
4653
|
+
* // parse editor string to ISO date (e.g. intl-date: display format => source format)
|
|
4654
|
+
* valueParser(value, cellProperties) {
|
|
4655
|
+
* if (value == null || value === '') {
|
|
4656
|
+
* return null;
|
|
4657
|
+
* }
|
|
4658
|
+
*
|
|
4659
|
+
* const date = new Date(value);
|
|
4660
|
+
*
|
|
4661
|
+
* return Number.isNaN(date.getTime()) ? value : date.toISOString().slice(0, 10);
|
|
4662
|
+
* }
|
|
4663
|
+
*
|
|
4664
|
+
* // parse formatted number string to number
|
|
4665
|
+
* valueParser(value, cellProperties) {
|
|
4666
|
+
* if (value == null || value === '') {
|
|
4667
|
+
* return null;
|
|
4668
|
+
* }
|
|
4669
|
+
*
|
|
4670
|
+
* const num = Number(value.replace(/[^\d.-]/g, ''));
|
|
4671
|
+
*
|
|
4672
|
+
* return Number.isNaN(num) ? value : num;
|
|
4673
|
+
* }
|
|
4674
|
+
*
|
|
4675
|
+
* // apply valueParser per column
|
|
4676
|
+
* columns: [
|
|
4677
|
+
* { data: 'date', valueParser: (value) => value ? new Date(value).toISOString().slice(0, 10) : null },
|
|
4678
|
+
* { data: 'amount', valueParser: (value) => value != null ? Number(value) : null }
|
|
4679
|
+
* ]
|
|
4680
|
+
* ```
|
|
4681
|
+
*/
|
|
4682
|
+
valueParser: undefined,
|
|
4218
4683
|
/**
|
|
4219
4684
|
* The `rowHeaders` option configures your grid's row headers.
|
|
4220
4685
|
*
|
|
@@ -4279,7 +4744,7 @@ export default () => {
|
|
|
4279
4744
|
/**
|
|
4280
4745
|
* The `rowHeights` option sets rows' heights, in pixels.
|
|
4281
4746
|
*
|
|
4282
|
-
* In the rendering process, the default row height is `classic
|
|
4747
|
+
* In the rendering process, the default row height is `classic: 26px`, `main: 29px`, `horizon: 37px` or whatever is defined in the used theme (based on the line height, vertical padding and cell borders).
|
|
4283
4748
|
* You can change it to equal or greater than the default value, by setting the `rowHeights` option to one of the following:
|
|
4284
4749
|
*
|
|
4285
4750
|
* | Setting | Description | Example |
|
|
@@ -4373,6 +4838,24 @@ export default () => {
|
|
|
4373
4838
|
* ```
|
|
4374
4839
|
*/
|
|
4375
4840
|
search: false,
|
|
4841
|
+
/**
|
|
4842
|
+
* The `searchInput` option configures whether the [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md) editor's search input is visible.
|
|
4843
|
+
*
|
|
4844
|
+
* @since 17.0.0
|
|
4845
|
+
* @memberof Options#
|
|
4846
|
+
* @type {boolean}
|
|
4847
|
+
* @default true
|
|
4848
|
+
* @category Core
|
|
4849
|
+
* @example
|
|
4850
|
+
* ```js
|
|
4851
|
+
* columns: [{
|
|
4852
|
+
* type: 'multiSelect',
|
|
4853
|
+
* // hide the `multiSelect` editor's search input
|
|
4854
|
+
* searchInput: false,
|
|
4855
|
+
* }],
|
|
4856
|
+
* ```
|
|
4857
|
+
*/
|
|
4858
|
+
searchInput: true,
|
|
4376
4859
|
/**
|
|
4377
4860
|
* @description
|
|
4378
4861
|
* The `selectionMode` option configures how [selection](@/guides/cell-features/selection/selection.md) works.
|
|
@@ -4565,6 +5048,30 @@ export default () => {
|
|
|
4565
5048
|
* ```
|
|
4566
5049
|
*/
|
|
4567
5050
|
sortByRelevance: true,
|
|
5051
|
+
/**
|
|
5052
|
+
* The `sourceSortFunction` option sets a function to sort the options available in [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)-typed cells.
|
|
5053
|
+
*
|
|
5054
|
+
* @since 17.0.0
|
|
5055
|
+
* @memberof Options#
|
|
5056
|
+
* @type {Function}
|
|
5057
|
+
* @default undefined
|
|
5058
|
+
* @category Core
|
|
5059
|
+
*
|
|
5060
|
+
* @example
|
|
5061
|
+
* ```js
|
|
5062
|
+
* columns: [{
|
|
5063
|
+
* // set the `type` of each cell in this column to `multiSelect`
|
|
5064
|
+
* type: 'multiSelect',
|
|
5065
|
+
* // set options available in every `multiSelect` cell of this column
|
|
5066
|
+
* source: ['A', 'B', 'C', 'D'],
|
|
5067
|
+
* // sort the `multiSelect` options in this order: D, C, B, A
|
|
5068
|
+
* sourceSortFunction: (entries) => {
|
|
5069
|
+
* return entries.sort((a, b) => b.localeCompare(a));
|
|
5070
|
+
* }
|
|
5071
|
+
* }],
|
|
5072
|
+
* ```
|
|
5073
|
+
*/
|
|
5074
|
+
sourceSortFunction: undefined,
|
|
4568
5075
|
/**
|
|
4569
5076
|
* The `source` option sets options available in [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
|
|
4570
5077
|
* and [`dropdown`](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md) cells.
|
|
@@ -4802,13 +5309,11 @@ export default () => {
|
|
|
4802
5309
|
/**
|
|
4803
5310
|
* The `themeName` option allows enabling a theme by that name.
|
|
4804
5311
|
*
|
|
4805
|
-
* If no `themeName` is provided, the table will use the classic (legacy) theme (if the correct CSS files are imported).
|
|
4806
|
-
*
|
|
4807
5312
|
* Read more:
|
|
4808
5313
|
* - [Themes](@/guides/styling/themes/themes.md)
|
|
4809
5314
|
*
|
|
4810
5315
|
* @memberof Options#
|
|
4811
|
-
* @type {string|
|
|
5316
|
+
* @type {string|undefined}
|
|
4812
5317
|
* @default undefined
|
|
4813
5318
|
* @category Core
|
|
4814
5319
|
* @since 15.0.0
|
|
@@ -4819,6 +5324,102 @@ export default () => {
|
|
|
4819
5324
|
* ```
|
|
4820
5325
|
*/
|
|
4821
5326
|
themeName: undefined,
|
|
5327
|
+
/**
|
|
5328
|
+
* The `theme` option configures the visual theme for your Handsontable instance.
|
|
5329
|
+
*
|
|
5330
|
+
* You can set the `theme` option to one of the following:
|
|
5331
|
+
*
|
|
5332
|
+
* | Setting | Description |
|
|
5333
|
+
* | ------------------------------------- | ------------------------------------------------------------------------------------- |
|
|
5334
|
+
* | `undefined` (default) | Don't apply any theme and use the default main theme |
|
|
5335
|
+
* | A string (e.g., `'ht-theme-horizon'`) | Apply a registered theme by name (required to import CSS file) |
|
|
5336
|
+
* | A plain theme config object | Apply a theme with default settings (import and pass the config, e.g. `horizonTheme`) |
|
|
5337
|
+
* | A `ThemeBuilder` object | Apply a theme with runtime configuration (recommended) |
|
|
5338
|
+
*
|
|
5339
|
+
* When using a `ThemeBuilder` object, you can configure the theme at runtime using these methods:
|
|
5340
|
+
*
|
|
5341
|
+
* | Method | Description |
|
|
5342
|
+
* | -------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
5343
|
+
* | `setColorScheme(mode)` | Sets the color scheme: `'light'`, `'dark'`, or `'auto'` (default: `'auto'`) |
|
|
5344
|
+
* | `setDensityType(type)` | Sets the row density: `'compact'`, `'default'`, or `'comfortable'` (default: `'default'`) |
|
|
5345
|
+
* | `params(paramsObject)` | Sets custom theme parameters e.g. `icons`, `colors`, `tokens` |
|
|
5346
|
+
*
|
|
5347
|
+
* Read more:
|
|
5348
|
+
* - [Themes](@/guides/styling/themes/themes.md)
|
|
5349
|
+
* - [`themeName`](#themeName)
|
|
5350
|
+
*
|
|
5351
|
+
* @memberof Options#
|
|
5352
|
+
* @type {ThemeBuilder|string|undefined}
|
|
5353
|
+
* @default undefined
|
|
5354
|
+
* @category Core
|
|
5355
|
+
* @since 17.0.0
|
|
5356
|
+
*
|
|
5357
|
+
* @example
|
|
5358
|
+
* ```js
|
|
5359
|
+
* // Enable a theme by class name (requires loading the theme CSS)
|
|
5360
|
+
* theme: 'ht-theme-horizon',
|
|
5361
|
+
* ```
|
|
5362
|
+
* @example
|
|
5363
|
+
* ```js
|
|
5364
|
+
* // Pass a plain theme config object
|
|
5365
|
+
* import { horizonTheme } from 'handsontable/themes';
|
|
5366
|
+
*
|
|
5367
|
+
* const hot = new Handsontable(container, {
|
|
5368
|
+
* theme: horizonTheme,
|
|
5369
|
+
* });
|
|
5370
|
+
* ```
|
|
5371
|
+
*
|
|
5372
|
+
* @example
|
|
5373
|
+
* ```js
|
|
5374
|
+
* // Pass a ThemeBuilder object (for customization before initialization)
|
|
5375
|
+
* import { horizonTheme, registerTheme } from 'handsontable/themes';
|
|
5376
|
+
*
|
|
5377
|
+
* const theme = registerTheme(horizonTheme)
|
|
5378
|
+
* .setColorScheme('dark')
|
|
5379
|
+
* .setDensityType('compact')
|
|
5380
|
+
* .params({
|
|
5381
|
+
* tokens: {
|
|
5382
|
+
* fontSize: '14px',
|
|
5383
|
+
* iconSize: 'size_5',
|
|
5384
|
+
* borderColor: ['colors.palette.100', 'colors.palette.800'],
|
|
5385
|
+
* },
|
|
5386
|
+
* });
|
|
5387
|
+
*
|
|
5388
|
+
* const hot = new Handsontable(container, {
|
|
5389
|
+
* theme,
|
|
5390
|
+
* });
|
|
5391
|
+
* ```
|
|
5392
|
+
*/
|
|
5393
|
+
theme: undefined,
|
|
5394
|
+
/**
|
|
5395
|
+
* The `injectCoreCss` option controls whether Handsontable injects its core CSS into the document.
|
|
5396
|
+
*
|
|
5397
|
+
* You can set the `injectCoreCss` option to one of the following:
|
|
5398
|
+
*
|
|
5399
|
+
* | Setting | Description |
|
|
5400
|
+
* | ------------------ | ---------------------------------------------------------------------------------------------------------------- |
|
|
5401
|
+
* | `true` (default) | Inject core styles into the document head |
|
|
5402
|
+
* | `false` | Do not inject core styles (use when you load CSS yourself, e.g. `import 'handsontable/styles/handsontable.css'`) |
|
|
5403
|
+
*
|
|
5404
|
+
* Read more:
|
|
5405
|
+
* - [Themes](@/guides/styling/themes/themes.md)
|
|
5406
|
+
*
|
|
5407
|
+
* @memberof Options#
|
|
5408
|
+
* @type {boolean}
|
|
5409
|
+
* @default true
|
|
5410
|
+
* @category Core
|
|
5411
|
+
* @since 17.0.0
|
|
5412
|
+
*
|
|
5413
|
+
* @example
|
|
5414
|
+
* ```js
|
|
5415
|
+
* // inject core CSS (default)
|
|
5416
|
+
* injectCoreCss: true,
|
|
5417
|
+
*
|
|
5418
|
+
* // skip injection when you load Handsontable CSS yourself
|
|
5419
|
+
* injectCoreCss: false,
|
|
5420
|
+
* ```
|
|
5421
|
+
*/
|
|
5422
|
+
injectCoreCss: true,
|
|
4822
5423
|
/**
|
|
4823
5424
|
* The `tabMoves` option configures the action of the <kbd>**Tab**</kbd> key.
|
|
4824
5425
|
*
|
|
@@ -4997,12 +5598,14 @@ export default () => {
|
|
|
4997
5598
|
* | [`'autocomplete'`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md) | Renderer: `AutocompleteRenderer`<br>Editor: `AutocompleteEditor`<br>Validator: `AutocompleteValidator` |
|
|
4998
5599
|
* | [`'checkbox'`](@/guides/cell-types/checkbox-cell-type/checkbox-cell-type.md) | Renderer: `CheckboxRenderer`<br>Editor: `CheckboxEditor`<br>Validator: - |
|
|
4999
5600
|
* | [`'date'`](@/guides/cell-types/date-cell-type/date-cell-type.md) | Renderer: `DateRenderer`<br>Editor: `DateEditor`<br>Validator: `DateValidator` |
|
|
5601
|
+
* | [`'intl-date'`](@/guides/cell-types/date-cell-type/date-cell-type.md) | Renderer: `IntlDateRenderer`<br>Editor: `IntlDateEditor`<br>Validator: `IntlDateValidator` |
|
|
5000
5602
|
* | [`'dropdown'`](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md) | Renderer: `DropdownRenderer`<br>Editor: `DropdownEditor`<br>Validator: `DropdownValidator` |
|
|
5001
5603
|
* | [`'handsontable'`](@/guides/cell-types/handsontable-cell-type/handsontable-cell-type.md) | Renderer: `AutocompleteRenderer`<br>Editor: `HandsontableEditor`<br>Validator: - |
|
|
5002
5604
|
* | [`'numeric'`](@/guides/cell-types/numeric-cell-type/numeric-cell-type.md) | Renderer: `NumericRenderer`<br>Editor: `NumericEditor`<br>Validator: `NumericValidator` |
|
|
5003
5605
|
* | [`'password'`](@/guides/cell-types/password-cell-type/password-cell-type.md) | Renderer: `PasswordRenderer`<br>Editor: `PasswordEditor`<br>Validator: - |
|
|
5004
5606
|
* | `'text'` | Renderer: `TextRenderer`<br>Editor: `TextEditor`<br>Validator: - |
|
|
5005
5607
|
* | [`'time`'](@/guides/cell-types/time-cell-type/time-cell-type.md) | Renderer: `TimeRenderer`<br>Editor: `TimeEditor`<br>Validator: `TimeValidator` |
|
|
5608
|
+
* | [`'intl-time'`](@/guides/cell-types/time-cell-type/time-cell-type.md) | Renderer: `IntlTimeRenderer`<br>Editor: `IntlTimeEditor`<br>Validator: `IntlTimeValidator` |
|
|
5006
5609
|
*
|
|
5007
5610
|
* Read more:
|
|
5008
5611
|
* - [Cell type](@/guides/cell-types/cell-type/cell-type.md)
|
|
@@ -5013,6 +5616,8 @@ export default () => {
|
|
|
5013
5616
|
* - [`renderer`](#renderer)
|
|
5014
5617
|
* - [`editor`](#editor)
|
|
5015
5618
|
* - [`validator`](#validator)
|
|
5619
|
+
* - [`valueParser`](#valueparser)
|
|
5620
|
+
* - [`valueFormatter`](#valueformatter)
|
|
5016
5621
|
*
|
|
5017
5622
|
* @memberof Options#
|
|
5018
5623
|
* @type {string}
|
|
@@ -5129,9 +5734,11 @@ export default () => {
|
|
|
5129
5734
|
* | A custom alias | Your [custom cell validator](@/guides/cell-functions/cell-validator/cell-validator.md) |
|
|
5130
5735
|
* | `'autocomplete'` | `AutocompleteValidator` |
|
|
5131
5736
|
* | `'date'` | `DateValidator` |
|
|
5737
|
+
* | `'intl-date'` | `IntlDateValidator` |
|
|
5132
5738
|
* | `'dropdown'` | `DropdownValidator` |
|
|
5133
5739
|
* | `'numeric'` | `NumericValidator` |
|
|
5134
5740
|
* | `'time'` | `TimeValidator` |
|
|
5741
|
+
* | `'intl-time'` | `IntlTimeValidator` |
|
|
5135
5742
|
*
|
|
5136
5743
|
* To set the [`editor`](#editor), [`renderer`](#renderer), and [`validator`](#validator)
|
|
5137
5744
|
* options all at once, use the [`type`](#type) option.
|
|
@@ -5168,6 +5775,64 @@ export default () => {
|
|
|
5168
5775
|
* ```
|
|
5169
5776
|
*/
|
|
5170
5777
|
validator: undefined,
|
|
5778
|
+
/**
|
|
5779
|
+
* @description
|
|
5780
|
+
* The [`sourceDataValidator`](@/api/options.md#sourcedatavalidator) option sets a function that validates values
|
|
5781
|
+
* when they are written to the source data layer. Validation runs on table initialization and when calling
|
|
5782
|
+
* [`loadData`](@/api/core.md#loaddata), [`updateData`](@/api/core.md#updatedata), or
|
|
5783
|
+
* [`setSourceDataAtCell`](@/api/core.md#setsourcedataatcell). It does not run for the `setData*` family of methods.
|
|
5784
|
+
*
|
|
5785
|
+
* Return `true` from the function to mark the value as valid, or `false` to mark it invalid. When a value is
|
|
5786
|
+
* invalid and [`allowInvalid`](@/api/options.md#allowinvalid) is `false`, it is replaced with `null` in the
|
|
5787
|
+
* source (on initialization and when calling `loadData` or `updateData`). When `allowInvalid` is `true`, invalid
|
|
5788
|
+
* values are kept; a warning is still logged when the validator returns `false`. An exception:
|
|
5789
|
+
* [`setSourceDataAtCell`](@/api/core.md#setsourcedataatcell) - when the validator returns `false`, the write is
|
|
5790
|
+
* skipped and the cell is not nullified; the previous value in the source remains unchanged. Use
|
|
5791
|
+
* [`allowEmpty`](@/api/options.md#allowempty) to treat `null`, `undefined`, or `''` as valid when appropriate.
|
|
5792
|
+
*
|
|
5793
|
+
* Optionally set [`sourceDataWarningMessage`](@/api/options.md#sourcedatawarningmessage) to customize the
|
|
5794
|
+
* message logged for invalid values.
|
|
5795
|
+
*
|
|
5796
|
+
* @example
|
|
5797
|
+
* ```js
|
|
5798
|
+
* sourceDataWarningMessage: 'The source data is invalid.',
|
|
5799
|
+
* sourceDataValidator: (value, cellMeta) => {
|
|
5800
|
+
* if (cellMeta.allowEmpty && value == null) {
|
|
5801
|
+
* return true;
|
|
5802
|
+
* }
|
|
5803
|
+
*
|
|
5804
|
+
* if (typeof value === 'string') {
|
|
5805
|
+
* return true;
|
|
5806
|
+
* }
|
|
5807
|
+
*
|
|
5808
|
+
* return false;
|
|
5809
|
+
* }
|
|
5810
|
+
* ```
|
|
5811
|
+
*
|
|
5812
|
+
* @memberof Options#
|
|
5813
|
+
* @since 17.0.0
|
|
5814
|
+
* @type {function(*, CellMeta): (boolean)}
|
|
5815
|
+
* @default undefined
|
|
5816
|
+
* @category Core
|
|
5817
|
+
*/
|
|
5818
|
+
sourceDataValidator: undefined,
|
|
5819
|
+
/**
|
|
5820
|
+
* @description
|
|
5821
|
+
* The [`sourceDataWarningMessage`](@/api/options.md#sourcedatawarningmessage) option sets the message used when
|
|
5822
|
+
* a value fails [`sourceDataValidator`](@/api/options.md#sourcedatavalidator). When not set, no message is logged.
|
|
5823
|
+
*
|
|
5824
|
+
* @example
|
|
5825
|
+
* ```js
|
|
5826
|
+
* sourceDataWarningMessage: 'The source data is invalid.',
|
|
5827
|
+
* ```
|
|
5828
|
+
*
|
|
5829
|
+
* @memberof Options#
|
|
5830
|
+
* @since 17.0.0
|
|
5831
|
+
* @type {string}
|
|
5832
|
+
* @default undefined
|
|
5833
|
+
* @category Core
|
|
5834
|
+
*/
|
|
5835
|
+
sourceDataWarningMessage: undefined,
|
|
5171
5836
|
/**
|
|
5172
5837
|
* @description
|
|
5173
5838
|
* The `valueGetter` option configures a function that defines what value will be used when displaying the cell content.
|
|
@@ -5343,13 +6008,14 @@ export default () => {
|
|
|
5343
6008
|
viewportRowRenderingThreshold: 0,
|
|
5344
6009
|
/**
|
|
5345
6010
|
* The `visibleRows` option sets the height of the [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
|
|
5346
|
-
*
|
|
6011
|
+
* , [`dropdown`](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md) and [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)-typed cells' lists.
|
|
5347
6012
|
*
|
|
5348
6013
|
* When the number of list options exceeds the `visibleRows` number, a scrollbar appears.
|
|
5349
6014
|
*
|
|
5350
6015
|
* Read more:
|
|
5351
6016
|
* - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
|
|
5352
6017
|
* - [Dropdown cell type](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md)
|
|
6018
|
+
* - [MultiSelect cell type](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)
|
|
5353
6019
|
*
|
|
5354
6020
|
* @memberof Options#
|
|
5355
6021
|
* @type {number}
|
|
@@ -5370,6 +6036,12 @@ export default () => {
|
|
|
5370
6036
|
* // set the `dropdown` list's height to 5 options
|
|
5371
6037
|
* // for each cell of this column
|
|
5372
6038
|
* visibleRows: 5,
|
|
6039
|
+
* },
|
|
6040
|
+
* {
|
|
6041
|
+
* type: 'multiSelect',
|
|
6042
|
+
* // set the `multiSelect` list's height to 5 options
|
|
6043
|
+
* // for each cell of this column
|
|
6044
|
+
* visibleRows: 5,
|
|
5373
6045
|
* }
|
|
5374
6046
|
* ],
|
|
5375
6047
|
* ```
|
|
@@ -5446,7 +6118,118 @@ export default () => {
|
|
|
5446
6118
|
* ],
|
|
5447
6119
|
* ```
|
|
5448
6120
|
*/
|
|
5449
|
-
wordWrap: true
|
|
6121
|
+
wordWrap: true,
|
|
6122
|
+
/**
|
|
6123
|
+
* The `sanitizer` option configures the function used to sanitize HTML before it is written to the DOM.
|
|
6124
|
+
* Whenever Handsontable sets HTML (e.g. cell content, headers, context menu labels, dialog content,
|
|
6125
|
+
* paste from clipboard), it can pass the string through this function first. Sanitization is important
|
|
6126
|
+
* when content comes from users or external sources to prevent XSS (e.g. script injection, event handlers).
|
|
6127
|
+
* If no sanitizer is set, HTML is applied as-is. Set a sanitizer when you need to allow rich content
|
|
6128
|
+
* while stripping or neutralizing dangerous markup.
|
|
6129
|
+
*
|
|
6130
|
+
* The function receives the raw HTML string and an optional second argument (source) indicating where
|
|
6131
|
+
* the content is used (e.g. `'innerHTML'`, `'CopyPaste.paste'`), so you can apply different rules per source.
|
|
6132
|
+
* It must return a string that is safe to assign to `innerHTML`.
|
|
6133
|
+
*
|
|
6134
|
+
* This option is only respected when set in the table settings. It does not work when defined per column
|
|
6135
|
+
* or per cell (e.g. in `columns` or cell meta).
|
|
6136
|
+
*
|
|
6137
|
+
* @since 17.0.0
|
|
6138
|
+
* @memberof Options#
|
|
6139
|
+
* @type {function(string, string): string}
|
|
6140
|
+
* @default undefined
|
|
6141
|
+
* @category Core
|
|
6142
|
+
*
|
|
6143
|
+
* @example
|
|
6144
|
+
* ```js
|
|
6145
|
+
* // Allowlist-based sanitization based on the DOMPurify library
|
|
6146
|
+
* import DOMPurify from 'dompurify';
|
|
6147
|
+
*
|
|
6148
|
+
* sanitizer: (content, source) {
|
|
6149
|
+
* if (source === 'CopyPaste.paste') {
|
|
6150
|
+
* return DOMPurify.sanitize(content, {
|
|
6151
|
+
* ADD_TAGS: ['meta'],
|
|
6152
|
+
* ADD_ATTR: ['content'],
|
|
6153
|
+
* FORCE_BODY: true,
|
|
6154
|
+
* });
|
|
6155
|
+
* }
|
|
6156
|
+
*
|
|
6157
|
+
* return DOMPurify.sanitize(content);
|
|
6158
|
+
* },
|
|
6159
|
+
* ```
|
|
6160
|
+
*
|
|
6161
|
+
* @example
|
|
6162
|
+
* ```js
|
|
6163
|
+
* // Maximum safety: strip all tags and escape output (no rich HTML)
|
|
6164
|
+
* sanitizer: (content, source) => {
|
|
6165
|
+
* const tpl = document.createElement('template');
|
|
6166
|
+
*
|
|
6167
|
+
* tpl.innerHTML = content;
|
|
6168
|
+
*
|
|
6169
|
+
* const text = tpl.content.textContent ?? '';
|
|
6170
|
+
*
|
|
6171
|
+
* return text
|
|
6172
|
+
* .replace(/&/g, '&')
|
|
6173
|
+
* .replace(/</g, '<')
|
|
6174
|
+
* .replace(/>/g, '>')
|
|
6175
|
+
* .replace(/"/g, '"')
|
|
6176
|
+
* .replace(/'/g, ''');
|
|
6177
|
+
* },
|
|
6178
|
+
* ```
|
|
6179
|
+
*
|
|
6180
|
+
* @example
|
|
6181
|
+
* ```js
|
|
6182
|
+
* // Trusted Types: wrap sanitization in a policy so the sink accepts the result.
|
|
6183
|
+
* // Add the policy name to the CSP trusted-types directive (e.g. trusted-types default handsontable).
|
|
6184
|
+
* const policy = window.trustedTypes?.createPolicy('handsontable', {
|
|
6185
|
+
* createHTML: (input) => DOMPurify.sanitize(input),
|
|
6186
|
+
* });
|
|
6187
|
+
*
|
|
6188
|
+
* sanitizer: (content, source) =>
|
|
6189
|
+
* policy ? policy.createHTML(content) : DOMPurify.sanitize(content),
|
|
6190
|
+
* ```
|
|
6191
|
+
*/
|
|
6192
|
+
sanitizer: undefined,
|
|
6193
|
+
/**
|
|
6194
|
+
* The `parsePastedValue` option determines how pasted content is written to cells when the user pastes
|
|
6195
|
+
* from the clipboard into Handsontable (e.g. from another Handsontable instance or between cells in the same table).
|
|
6196
|
+
* It does not affect how other applications read or process the clipboard.
|
|
6197
|
+
*
|
|
6198
|
+
* When set to `false`, pasted content is written as plain strings. Non-scalar values (e.g. objects) are coerced
|
|
6199
|
+
* to string, so an object becomes `"[object Object]"`.
|
|
6200
|
+
*
|
|
6201
|
+
* When set to `true`, pasted text is parsed so that JSON-like (or other supported) values are converted to
|
|
6202
|
+
* JavaScript values and written to the data source. This allows copying and pasting more sophisticated JavaScript
|
|
6203
|
+
* structures (e.g. objects, arrays) between cells and between Handsontable instances. Cells then store the resulting
|
|
6204
|
+
* object (e.g. `{ id: 1, value: 'A1' }`). Schema validation is relaxed so object-based values can be pasted into
|
|
6205
|
+
* cells that would normally expect a scalar.
|
|
6206
|
+
*
|
|
6207
|
+
* You can set the `parsePastedValue` option to one of the following:
|
|
6208
|
+
*
|
|
6209
|
+
* | Setting | Description |
|
|
6210
|
+
* | ----------------- | ------------------------------------------------ |
|
|
6211
|
+
* | `false` (default) | Write pasted content as plain strings |
|
|
6212
|
+
* | `true` | Parse pasted text and write JavaScript values |
|
|
6213
|
+
*
|
|
6214
|
+
* @since 17.0.0
|
|
6215
|
+
* @memberof Options#
|
|
6216
|
+
* @type {boolean}
|
|
6217
|
+
* @default false
|
|
6218
|
+
* @category CopyPaste
|
|
6219
|
+
*
|
|
6220
|
+
* @example
|
|
6221
|
+
* ```js
|
|
6222
|
+
* // write pasted content as strings (objects become "[object Object]")
|
|
6223
|
+
* parsePastedValue: false,
|
|
6224
|
+
* ```
|
|
6225
|
+
*
|
|
6226
|
+
* @example
|
|
6227
|
+
* ```js
|
|
6228
|
+
* // parse pasted text so cells receive JavaScript objects when pasted content is object-like
|
|
6229
|
+
* parsePastedValue: true,
|
|
6230
|
+
* ```
|
|
6231
|
+
*/
|
|
6232
|
+
parsePastedValue: false
|
|
5450
6233
|
|
|
5451
6234
|
/* eslint-enable jsdoc/require-description-complete-sentence */
|
|
5452
6235
|
};
|