@rowsncolumns/spreadsheet 10.3.1 → 10.4.0
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/dist/cjs/api/banded-ranges.d.ts.map +1 -1
- package/dist/cjs/api/banded-ranges.js +40 -14
- package/dist/cjs/api/calculated-column-fill.d.ts +43 -0
- package/dist/cjs/api/calculated-column-fill.d.ts.map +1 -0
- package/dist/cjs/api/calculated-column-fill.js +16 -0
- package/dist/cjs/api/chart-sheet.d.ts +8 -0
- package/dist/cjs/api/chart-sheet.d.ts.map +1 -0
- package/dist/cjs/api/chart-sheet.js +20 -0
- package/dist/cjs/api/chart-source-ranges.d.ts +64 -0
- package/dist/cjs/api/chart-source-ranges.d.ts.map +1 -0
- package/dist/cjs/api/chart-source-ranges.js +175 -0
- package/dist/cjs/api/selections.d.ts +3 -3
- package/dist/cjs/api/selections.d.ts.map +1 -1
- package/dist/cjs/api/selections.js +28 -2
- package/dist/cjs/api/spreadsheet-api.d.ts +16 -3
- package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/cjs/api/spreadsheet-api.js +22 -2
- package/dist/cjs/api/table-auto-expansion.d.ts +37 -0
- package/dist/cjs/api/table-auto-expansion.d.ts.map +1 -0
- package/dist/cjs/api/table-auto-expansion.js +16 -0
- package/dist/cjs/api/table.d.ts +49 -1
- package/dist/cjs/api/table.d.ts.map +1 -1
- package/dist/cjs/api/table.js +145 -1
- package/dist/cjs/api/validation.d.ts +26 -1
- package/dist/cjs/api/validation.d.ts.map +1 -1
- package/dist/cjs/api/validation.js +127 -9
- package/dist/cjs/atoms/calculated-column-fill.atom.d.ts +15 -0
- package/dist/cjs/atoms/calculated-column-fill.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/calculated-column-fill.atom.js +18 -0
- package/dist/cjs/atoms/chart-actions.atom.d.ts +40 -0
- package/dist/cjs/atoms/chart-actions.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/chart-actions.atom.js +66 -0
- package/dist/cjs/atoms/index.d.ts +5 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +5 -0
- package/dist/cjs/atoms/move-chart-dialog.atom.d.ts +28 -0
- package/dist/cjs/atoms/move-chart-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/move-chart-dialog.atom.js +34 -0
- package/dist/cjs/atoms/selected-chart-embed.atom.d.ts +9 -1
- package/dist/cjs/atoms/selected-chart-embed.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/selected-chart-embed.atom.js +18 -1
- package/dist/cjs/atoms/selected-chart-series.atom.d.ts +24 -0
- package/dist/cjs/atoms/selected-chart-series.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/selected-chart-series.atom.js +11 -0
- package/dist/cjs/atoms/sheet-context.atom.d.ts +2 -0
- package/dist/cjs/atoms/sheet-context.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/sheet-context.atom.js +5 -2
- package/dist/cjs/atoms/sparkline-dialog.atom.d.ts +34 -0
- package/dist/cjs/atoms/sparkline-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/sparkline-dialog.atom.js +30 -0
- package/dist/cjs/atoms/table-auto-expansion.atom.d.ts +14 -0
- package/dist/cjs/atoms/table-auto-expansion.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/table-auto-expansion.atom.js +17 -0
- package/dist/cjs/components/calculated-column-smart-tag/index.d.ts +25 -0
- package/dist/cjs/components/calculated-column-smart-tag/index.d.ts.map +1 -0
- package/dist/cjs/components/calculated-column-smart-tag/index.js +31 -0
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +393 -72
- package/dist/cjs/components/canvas-grid/typings.d.ts +127 -14
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell/index.d.ts.map +1 -1
- package/dist/cjs/components/cell/index.js +3 -3
- package/dist/cjs/components/cell/typings.d.ts +13 -0
- package/dist/cjs/components/cell/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell-filter/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-filter/index.js +13 -2
- package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
- package/dist/cjs/components/cell-input/formula-bar-cell-input.js +4 -1
- package/dist/cjs/components/cell-structured/sparkline-math.d.ts +28 -5
- package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -1
- package/dist/cjs/components/cell-structured/sparkline-math.js +93 -5
- package/dist/cjs/components/cell-structured/sparkline.d.ts +1 -1
- package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -1
- package/dist/cjs/components/cell-structured/sparkline.js +3 -3
- package/dist/cjs/components/cell-structured/types.d.ts +1 -1
- package/dist/cjs/components/cell-structured/types.d.ts.map +1 -1
- package/dist/cjs/components/chart-sheet-view/index.d.ts +27 -0
- package/dist/cjs/components/chart-sheet-view/index.d.ts.map +1 -0
- package/dist/cjs/components/chart-sheet-view/index.js +35 -0
- package/dist/cjs/components/context-menu/embed-context-menu.d.ts +48 -0
- package/dist/cjs/components/context-menu/embed-context-menu.d.ts.map +1 -0
- package/dist/cjs/components/context-menu/embed-context-menu.js +123 -0
- package/dist/cjs/components/context-menu/index.d.ts +23 -2
- package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/index.js +217 -39
- package/dist/cjs/components/context-menu/total-row-function-menu.d.ts +33 -0
- package/dist/cjs/components/context-menu/total-row-function-menu.d.ts.map +1 -0
- package/dist/cjs/components/context-menu/total-row-function-menu.js +58 -0
- package/dist/cjs/components/context-menu/total-row-functions.d.ts +12 -12
- package/dist/cjs/components/context-menu/total-row-functions.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/total-row-functions.js +39 -39
- package/dist/cjs/components/embeds/chart-component.d.ts +17 -0
- package/dist/cjs/components/embeds/chart-component.d.ts.map +1 -1
- package/dist/cjs/components/embeds/embed-draggable.d.ts +61 -4
- package/dist/cjs/components/embeds/embed-draggable.d.ts.map +1 -1
- package/dist/cjs/components/embeds/embed-draggable.js +214 -39
- package/dist/cjs/components/filter-box/date-tree.d.ts +28 -0
- package/dist/cjs/components/filter-box/date-tree.d.ts.map +1 -0
- package/dist/cjs/components/filter-box/date-tree.js +147 -0
- package/dist/cjs/components/filter-box/filter-by-condition.d.ts +14 -2
- package/dist/cjs/components/filter-box/filter-by-condition.d.ts.map +1 -1
- package/dist/cjs/components/filter-box/filter-by-condition.js +95 -19
- package/dist/cjs/components/filter-box/filter-by-value.d.ts.map +1 -1
- package/dist/cjs/components/filter-box/filter-by-value.js +126 -40
- package/dist/cjs/components/filter-box/index.d.ts +7 -1
- package/dist/cjs/components/filter-box/index.d.ts.map +1 -1
- package/dist/cjs/components/filter-box/index.js +102 -11
- package/dist/cjs/components/move-chart-dialog/index.d.ts +34 -0
- package/dist/cjs/components/move-chart-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/move-chart-dialog/index.js +96 -0
- package/dist/cjs/components/print-preview/page-block.d.ts +9 -1
- package/dist/cjs/components/print-preview/page-block.d.ts.map +1 -1
- package/dist/cjs/components/print-preview/page-block.js +28 -2
- package/dist/cjs/components/print-preview/print-preview-dialog.d.ts +8 -1
- package/dist/cjs/components/print-preview/print-preview-dialog.d.ts.map +1 -1
- package/dist/cjs/components/print-preview/print-preview-dialog.js +144 -3
- package/dist/cjs/components/print-preview/run-print.d.ts.map +1 -1
- package/dist/cjs/components/print-preview/run-print.js +19 -7
- package/dist/cjs/components/print-preview/use-page-layout.d.ts +47 -0
- package/dist/cjs/components/print-preview/use-page-layout.d.ts.map +1 -1
- package/dist/cjs/components/print-preview/use-page-layout.js +81 -7
- package/dist/cjs/components/selection/index.d.ts +1 -1
- package/dist/cjs/components/selection/index.d.ts.map +1 -1
- package/dist/cjs/components/selection/index.js +6 -2
- package/dist/cjs/components/selection/types.d.ts +15 -0
- package/dist/cjs/components/selection/types.d.ts.map +1 -1
- package/dist/cjs/components/sheet-tabs/index.d.ts.map +1 -1
- package/dist/cjs/components/sheet-tabs/index.js +2 -2
- package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts +1 -1
- package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
- package/dist/cjs/components/sheet-tabs/sheet-tab.js +3 -1
- package/dist/cjs/components/sparkline-dialog/index.d.ts +43 -0
- package/dist/cjs/components/sparkline-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/sparkline-dialog/index.js +127 -0
- package/dist/cjs/components/subtotal-dialog/index.d.ts.map +1 -1
- package/dist/cjs/components/subtotal-dialog/index.js +10 -1
- package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
- package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
- package/dist/cjs/components/table-auto-expansion-smart-tag/index.js +31 -0
- package/dist/cjs/components/toolbar/index.d.ts +1 -0
- package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/index.js +1 -0
- package/dist/cjs/components/toolbar/insert-menu.d.ts +2 -1
- package/dist/cjs/components/toolbar/insert-menu.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/insert-menu.js +24 -1
- package/dist/cjs/components/toolbar/merge-cells-selector.d.ts +4 -1
- package/dist/cjs/components/toolbar/merge-cells-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/merge-cells-selector.js +11 -5
- package/dist/cjs/components/toolbar/sparkline-actions.d.ts +31 -0
- package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -0
- package/dist/cjs/components/toolbar/sparkline-actions.js +273 -0
- package/dist/cjs/components/toolbar/table-actions.d.ts +9 -1
- package/dist/cjs/components/toolbar/table-actions.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/table-actions.js +17 -7
- package/dist/cjs/components/toolbar/table-style-selector.d.ts +38 -2
- package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/table-style-selector.js +241 -389
- package/dist/cjs/config.d.ts +2 -0
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +31 -1
- package/dist/cjs/helpers.d.ts +1 -1
- package/dist/cjs/helpers.d.ts.map +1 -1
- package/dist/cjs/helpers.js +13 -2
- package/dist/cjs/hooks/use-cell-renderer.d.ts +16 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +20 -8
- package/dist/cjs/hooks/use-chart-clipboard.d.ts +55 -0
- package/dist/cjs/hooks/use-chart-clipboard.d.ts.map +1 -0
- package/dist/cjs/hooks/use-chart-clipboard.js +231 -0
- package/dist/cjs/hooks/use-chart-source-ranges.d.ts +27 -0
- package/dist/cjs/hooks/use-chart-source-ranges.d.ts.map +1 -0
- package/dist/cjs/hooks/use-chart-source-ranges.js +211 -0
- package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/cjs/hooks/use-context-setter.js +3 -1
- package/dist/cjs/hooks/use-editable.d.ts +9 -1
- package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editable.js +25 -1
- package/dist/cjs/hooks/use-embeds-charts.d.ts +64 -4
- package/dist/cjs/hooks/use-embeds-charts.d.ts.map +1 -1
- package/dist/cjs/hooks/use-embeds-charts.js +412 -41
- package/dist/cjs/hooks/use-grid-children.d.ts +2 -2
- package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -1
- package/dist/cjs/hooks/use-grid-children.js +12 -6
- package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts +2 -2
- package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.d.ts +2 -1
- package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.js +8 -2
- package/dist/cjs/hooks/use-reveal-chart-embed.d.ts +17 -0
- package/dist/cjs/hooks/use-reveal-chart-embed.d.ts.map +1 -0
- package/dist/cjs/hooks/use-reveal-chart-embed.js +40 -0
- package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -1
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +37 -7
- package/dist/cjs/hooks/use-selection.d.ts +9 -1
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +118 -30
- package/dist/cjs/hooks/use-structured-reference-selection.d.ts +1 -1
- package/dist/cjs/hooks/use-structured-reference-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-structured-reference-selection.js +10 -0
- package/dist/cjs/hooks/use-table-hit-zones.d.ts +61 -0
- package/dist/cjs/hooks/use-table-hit-zones.d.ts.map +1 -0
- package/dist/cjs/hooks/use-table-hit-zones.js +157 -0
- package/dist/cjs/hooks/use-table-resizer.d.ts +7 -0
- package/dist/cjs/hooks/use-table-resizer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-table-resizer.js +22 -10
- package/dist/cjs/index.d.ts +13 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +17 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +289 -4
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils/copy-as-picture.d.ts +13 -0
- package/dist/cjs/utils/copy-as-picture.d.ts.map +1 -0
- package/dist/cjs/utils/copy-as-picture.js +70 -0
- package/dist/cjs/utils/pivot-chart-field-buttons.d.ts +19 -0
- package/dist/cjs/utils/pivot-chart-field-buttons.d.ts.map +1 -0
- package/dist/cjs/utils/pivot-chart-field-buttons.js +25 -0
- package/dist/cjs/utils/z-order.d.ts +47 -0
- package/dist/cjs/utils/z-order.d.ts.map +1 -0
- package/dist/cjs/utils/z-order.js +124 -0
- package/dist/esm/api/banded-ranges.d.ts.map +1 -1
- package/dist/esm/api/banded-ranges.js +39 -12
- package/dist/esm/api/calculated-column-fill.d.ts +43 -0
- package/dist/esm/api/calculated-column-fill.d.ts.map +1 -0
- package/dist/esm/api/calculated-column-fill.js +10 -0
- package/dist/esm/api/chart-sheet.d.ts +8 -0
- package/dist/esm/api/chart-sheet.d.ts.map +1 -0
- package/dist/esm/api/chart-sheet.js +15 -0
- package/dist/esm/api/chart-source-ranges.d.ts +64 -0
- package/dist/esm/api/chart-source-ranges.d.ts.map +1 -0
- package/dist/esm/api/chart-source-ranges.js +168 -0
- package/dist/esm/api/selections.d.ts +3 -3
- package/dist/esm/api/selections.d.ts.map +1 -1
- package/dist/esm/api/selections.js +26 -2
- package/dist/esm/api/spreadsheet-api.d.ts +16 -3
- package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/esm/api/spreadsheet-api.js +18 -2
- package/dist/esm/api/table-auto-expansion.d.ts +37 -0
- package/dist/esm/api/table-auto-expansion.d.ts.map +1 -0
- package/dist/esm/api/table-auto-expansion.js +10 -0
- package/dist/esm/api/table.d.ts +49 -1
- package/dist/esm/api/table.d.ts.map +1 -1
- package/dist/esm/api/table.js +138 -1
- package/dist/esm/api/validation.d.ts +26 -1
- package/dist/esm/api/validation.d.ts.map +1 -1
- package/dist/esm/api/validation.js +119 -9
- package/dist/esm/atoms/calculated-column-fill.atom.d.ts +15 -0
- package/dist/esm/atoms/calculated-column-fill.atom.d.ts.map +1 -0
- package/dist/esm/atoms/calculated-column-fill.atom.js +12 -0
- package/dist/esm/atoms/chart-actions.atom.d.ts +40 -0
- package/dist/esm/atoms/chart-actions.atom.d.ts.map +1 -0
- package/dist/esm/atoms/chart-actions.atom.js +58 -0
- package/dist/esm/atoms/index.d.ts +5 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +5 -0
- package/dist/esm/atoms/move-chart-dialog.atom.d.ts +28 -0
- package/dist/esm/atoms/move-chart-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/move-chart-dialog.atom.js +25 -0
- package/dist/esm/atoms/selected-chart-embed.atom.d.ts +9 -1
- package/dist/esm/atoms/selected-chart-embed.atom.d.ts.map +1 -1
- package/dist/esm/atoms/selected-chart-embed.atom.js +19 -2
- package/dist/esm/atoms/selected-chart-series.atom.d.ts +24 -0
- package/dist/esm/atoms/selected-chart-series.atom.d.ts.map +1 -0
- package/dist/esm/atoms/selected-chart-series.atom.js +4 -0
- package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
- package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
- package/dist/esm/atoms/sheet-context.atom.js +2 -0
- package/dist/esm/atoms/sparkline-dialog.atom.d.ts +34 -0
- package/dist/esm/atoms/sparkline-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/sparkline-dialog.atom.js +21 -0
- package/dist/esm/atoms/table-auto-expansion.atom.d.ts +14 -0
- package/dist/esm/atoms/table-auto-expansion.atom.d.ts.map +1 -0
- package/dist/esm/atoms/table-auto-expansion.atom.js +11 -0
- package/dist/esm/components/calculated-column-smart-tag/index.d.ts +25 -0
- package/dist/esm/components/calculated-column-smart-tag/index.d.ts.map +1 -0
- package/dist/esm/components/calculated-column-smart-tag/index.js +25 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +332 -21
- package/dist/esm/components/canvas-grid/typings.d.ts +127 -14
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell/index.d.ts.map +1 -1
- package/dist/esm/components/cell/index.js +3 -3
- package/dist/esm/components/cell/typings.d.ts +13 -0
- package/dist/esm/components/cell/typings.d.ts.map +1 -1
- package/dist/esm/components/cell-filter/index.d.ts.map +1 -1
- package/dist/esm/components/cell-filter/index.js +14 -3
- package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
- package/dist/esm/components/cell-input/formula-bar-cell-input.js +4 -1
- package/dist/esm/components/cell-structured/sparkline-math.d.ts +28 -5
- package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
- package/dist/esm/components/cell-structured/sparkline-math.js +58 -4
- package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
- package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
- package/dist/esm/components/cell-structured/sparkline.js +3 -3
- package/dist/esm/components/cell-structured/types.d.ts +1 -1
- package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
- package/dist/esm/components/chart-sheet-view/index.d.ts +27 -0
- package/dist/esm/components/chart-sheet-view/index.d.ts.map +1 -0
- package/dist/esm/components/chart-sheet-view/index.js +30 -0
- package/dist/esm/components/context-menu/embed-context-menu.d.ts +48 -0
- package/dist/esm/components/context-menu/embed-context-menu.d.ts.map +1 -0
- package/dist/esm/components/context-menu/embed-context-menu.js +112 -0
- package/dist/esm/components/context-menu/index.d.ts +23 -2
- package/dist/esm/components/context-menu/index.d.ts.map +1 -1
- package/dist/esm/components/context-menu/index.js +174 -38
- package/dist/esm/components/context-menu/total-row-function-menu.d.ts +33 -0
- package/dist/esm/components/context-menu/total-row-function-menu.d.ts.map +1 -0
- package/dist/esm/components/context-menu/total-row-function-menu.js +50 -0
- package/dist/esm/components/context-menu/total-row-functions.d.ts +12 -12
- package/dist/esm/components/context-menu/total-row-functions.d.ts.map +1 -1
- package/dist/esm/components/context-menu/total-row-functions.js +29 -31
- package/dist/esm/components/embeds/chart-component.d.ts +17 -0
- package/dist/esm/components/embeds/chart-component.d.ts.map +1 -1
- package/dist/esm/components/embeds/embed-draggable.d.ts +61 -4
- package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -1
- package/dist/esm/components/embeds/embed-draggable.js +204 -45
- package/dist/esm/components/filter-box/date-tree.d.ts +28 -0
- package/dist/esm/components/filter-box/date-tree.d.ts.map +1 -0
- package/dist/esm/components/filter-box/date-tree.js +107 -0
- package/dist/esm/components/filter-box/filter-by-condition.d.ts +14 -2
- package/dist/esm/components/filter-box/filter-by-condition.d.ts.map +1 -1
- package/dist/esm/components/filter-box/filter-by-condition.js +72 -16
- package/dist/esm/components/filter-box/filter-by-value.d.ts.map +1 -1
- package/dist/esm/components/filter-box/filter-by-value.js +110 -39
- package/dist/esm/components/filter-box/index.d.ts +7 -1
- package/dist/esm/components/filter-box/index.d.ts.map +1 -1
- package/dist/esm/components/filter-box/index.js +88 -2
- package/dist/esm/components/move-chart-dialog/index.d.ts +34 -0
- package/dist/esm/components/move-chart-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/move-chart-dialog/index.js +88 -0
- package/dist/esm/components/print-preview/page-block.d.ts +9 -1
- package/dist/esm/components/print-preview/page-block.d.ts.map +1 -1
- package/dist/esm/components/print-preview/page-block.js +27 -2
- package/dist/esm/components/print-preview/print-preview-dialog.d.ts +8 -1
- package/dist/esm/components/print-preview/print-preview-dialog.d.ts.map +1 -1
- package/dist/esm/components/print-preview/print-preview-dialog.js +92 -4
- package/dist/esm/components/print-preview/run-print.d.ts.map +1 -1
- package/dist/esm/components/print-preview/run-print.js +17 -7
- package/dist/esm/components/print-preview/use-page-layout.d.ts +47 -0
- package/dist/esm/components/print-preview/use-page-layout.d.ts.map +1 -1
- package/dist/esm/components/print-preview/use-page-layout.js +55 -0
- package/dist/esm/components/selection/index.d.ts +1 -1
- package/dist/esm/components/selection/index.d.ts.map +1 -1
- package/dist/esm/components/selection/index.js +6 -2
- package/dist/esm/components/selection/types.d.ts +15 -0
- package/dist/esm/components/selection/types.d.ts.map +1 -1
- package/dist/esm/components/sheet-tabs/index.d.ts.map +1 -1
- package/dist/esm/components/sheet-tabs/index.js +2 -2
- package/dist/esm/components/sheet-tabs/sheet-tab.d.ts +1 -1
- package/dist/esm/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
- package/dist/esm/components/sheet-tabs/sheet-tab.js +4 -2
- package/dist/esm/components/sparkline-dialog/index.d.ts +43 -0
- package/dist/esm/components/sparkline-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/sparkline-dialog/index.js +123 -0
- package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -1
- package/dist/esm/components/subtotal-dialog/index.js +10 -1
- package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
- package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
- package/dist/esm/components/table-auto-expansion-smart-tag/index.js +25 -0
- package/dist/esm/components/toolbar/index.d.ts +1 -0
- package/dist/esm/components/toolbar/index.d.ts.map +1 -1
- package/dist/esm/components/toolbar/index.js +1 -0
- package/dist/esm/components/toolbar/insert-menu.d.ts +2 -1
- package/dist/esm/components/toolbar/insert-menu.d.ts.map +1 -1
- package/dist/esm/components/toolbar/insert-menu.js +24 -1
- package/dist/esm/components/toolbar/merge-cells-selector.d.ts +4 -1
- package/dist/esm/components/toolbar/merge-cells-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/merge-cells-selector.js +10 -6
- package/dist/esm/components/toolbar/sparkline-actions.d.ts +31 -0
- package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -0
- package/dist/esm/components/toolbar/sparkline-actions.js +238 -0
- package/dist/esm/components/toolbar/table-actions.d.ts +9 -1
- package/dist/esm/components/toolbar/table-actions.d.ts.map +1 -1
- package/dist/esm/components/toolbar/table-actions.js +15 -7
- package/dist/esm/components/toolbar/table-style-selector.d.ts +38 -2
- package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/table-style-selector.js +210 -399
- package/dist/esm/config.d.ts +2 -0
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +30 -0
- package/dist/esm/helpers.d.ts +1 -1
- package/dist/esm/helpers.d.ts.map +1 -1
- package/dist/esm/helpers.js +12 -1
- package/dist/esm/hooks/use-cell-renderer.d.ts +16 -1
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +14 -4
- package/dist/esm/hooks/use-chart-clipboard.d.ts +55 -0
- package/dist/esm/hooks/use-chart-clipboard.d.ts.map +1 -0
- package/dist/esm/hooks/use-chart-clipboard.js +213 -0
- package/dist/esm/hooks/use-chart-source-ranges.d.ts +27 -0
- package/dist/esm/hooks/use-chart-source-ranges.d.ts.map +1 -0
- package/dist/esm/hooks/use-chart-source-ranges.js +186 -0
- package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/esm/hooks/use-context-setter.js +3 -1
- package/dist/esm/hooks/use-editable.d.ts +9 -1
- package/dist/esm/hooks/use-editable.d.ts.map +1 -1
- package/dist/esm/hooks/use-editable.js +25 -1
- package/dist/esm/hooks/use-embeds-charts.d.ts +64 -4
- package/dist/esm/hooks/use-embeds-charts.d.ts.map +1 -1
- package/dist/esm/hooks/use-embeds-charts.js +394 -39
- package/dist/esm/hooks/use-grid-children.d.ts +2 -2
- package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
- package/dist/esm/hooks/use-grid-children.js +8 -2
- package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts +2 -2
- package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.d.ts +2 -1
- package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.js +8 -2
- package/dist/esm/hooks/use-reveal-chart-embed.d.ts +17 -0
- package/dist/esm/hooks/use-reveal-chart-embed.d.ts.map +1 -0
- package/dist/esm/hooks/use-reveal-chart-embed.js +35 -0
- package/dist/esm/hooks/use-selection-renderer.d.ts +13 -1
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +35 -6
- package/dist/esm/hooks/use-selection.d.ts +9 -1
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +122 -30
- package/dist/esm/hooks/use-structured-reference-selection.d.ts +1 -1
- package/dist/esm/hooks/use-structured-reference-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-structured-reference-selection.js +16 -0
- package/dist/esm/hooks/use-table-hit-zones.d.ts +61 -0
- package/dist/esm/hooks/use-table-hit-zones.d.ts.map +1 -0
- package/dist/esm/hooks/use-table-hit-zones.js +146 -0
- package/dist/esm/hooks/use-table-resizer.d.ts +7 -0
- package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -1
- package/dist/esm/hooks/use-table-resizer.js +21 -10
- package/dist/esm/index.d.ts +13 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +13 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +289 -4
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils/copy-as-picture.d.ts +13 -0
- package/dist/esm/utils/copy-as-picture.d.ts.map +1 -0
- package/dist/esm/utils/copy-as-picture.js +45 -0
- package/dist/esm/utils/pivot-chart-field-buttons.d.ts +19 -0
- package/dist/esm/utils/pivot-chart-field-buttons.d.ts.map +1 -0
- package/dist/esm/utils/pivot-chart-field-buttons.js +18 -0
- package/dist/esm/utils/z-order.d.ts +47 -0
- package/dist/esm/utils/z-order.d.ts.map +1 -0
- package/dist/esm/utils/z-order.js +111 -0
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +8 -6
- package/dist/cjs/components/cell-editor/helpers.spec.d.ts +0 -2
- package/dist/cjs/components/cell-editor/helpers.spec.d.ts.map +0 -1
- package/dist/cjs/components/cell-editor/helpers.spec.js +0 -32
- package/dist/esm/components/cell-editor/helpers.spec.d.ts +0 -2
- package/dist/esm/components/cell-editor/helpers.spec.d.ts.map +0 -1
- package/dist/esm/components/cell-editor/helpers.spec.js +0 -30
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Excel groups a date column's AutoFilter checklist into a Year → Month → Day
|
|
4
|
+
* tree with tri-state parents. The checklist only knows each cell's DISPLAYED
|
|
5
|
+
* text, so a value is treated as a date when it parses as one AND looks like
|
|
6
|
+
* one — digits separated by `/ - .` or a month name — which keeps plain
|
|
7
|
+
* numbers ("2026") and text out. The tree is built only when every non-blank
|
|
8
|
+
* value in the column is such a date (a mixed column stays a flat list, as a
|
|
9
|
+
* text column would). Newest first at every level, matching Excel.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.triState = exports.buildDateTree = exports.parseFilterDateValue = void 0;
|
|
13
|
+
var tslib_1 = require("tslib");
|
|
14
|
+
var MIN_YEAR = 1900;
|
|
15
|
+
var MAX_YEAR = 2199;
|
|
16
|
+
var DATE_SHAPE = /(\d[/.\-]\d)|([A-Za-z]{3,}.*\d)|(\d.*[A-Za-z]{3,})/;
|
|
17
|
+
var MONTH_NAMES = [
|
|
18
|
+
"January",
|
|
19
|
+
"February",
|
|
20
|
+
"March",
|
|
21
|
+
"April",
|
|
22
|
+
"May",
|
|
23
|
+
"June",
|
|
24
|
+
"July",
|
|
25
|
+
"August",
|
|
26
|
+
"September",
|
|
27
|
+
"October",
|
|
28
|
+
"November",
|
|
29
|
+
"December",
|
|
30
|
+
];
|
|
31
|
+
/** The calendar date a checklist value displays, or `undefined` when it is not a date. */
|
|
32
|
+
var parseFilterDateValue = function (value) {
|
|
33
|
+
var trimmed = value.trim();
|
|
34
|
+
if (!trimmed || !DATE_SHAPE.test(trimmed))
|
|
35
|
+
return undefined;
|
|
36
|
+
var parsed = new Date(trimmed);
|
|
37
|
+
var time = parsed.getTime();
|
|
38
|
+
if (Number.isNaN(time))
|
|
39
|
+
return undefined;
|
|
40
|
+
var year = parsed.getFullYear();
|
|
41
|
+
if (year < MIN_YEAR || year > MAX_YEAR)
|
|
42
|
+
return undefined;
|
|
43
|
+
return parsed;
|
|
44
|
+
};
|
|
45
|
+
exports.parseFilterDateValue = parseFilterDateValue;
|
|
46
|
+
/**
|
|
47
|
+
* Year → Month → Day nodes for `values`, or `undefined` when the column is
|
|
48
|
+
* not a date column. `blankLabel` (the "(Blanks)" entry) is skipped; callers
|
|
49
|
+
* render it beside the tree.
|
|
50
|
+
*/
|
|
51
|
+
var buildDateTree = function (values, blankLabel) {
|
|
52
|
+
var e_1, _a, e_2, _b;
|
|
53
|
+
var _c, _d, _e;
|
|
54
|
+
var dated = [];
|
|
55
|
+
try {
|
|
56
|
+
for (var values_1 = tslib_1.__values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {
|
|
57
|
+
var value = values_1_1.value;
|
|
58
|
+
if (value === blankLabel)
|
|
59
|
+
continue;
|
|
60
|
+
var date = (0, exports.parseFilterDateValue)(value);
|
|
61
|
+
if (!date)
|
|
62
|
+
return undefined;
|
|
63
|
+
dated.push({ value: value, date: date });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
67
|
+
finally {
|
|
68
|
+
try {
|
|
69
|
+
if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);
|
|
70
|
+
}
|
|
71
|
+
finally { if (e_1) throw e_1.error; }
|
|
72
|
+
}
|
|
73
|
+
if (!dated.length)
|
|
74
|
+
return undefined;
|
|
75
|
+
var years = new Map();
|
|
76
|
+
try {
|
|
77
|
+
for (var dated_1 = tslib_1.__values(dated), dated_1_1 = dated_1.next(); !dated_1_1.done; dated_1_1 = dated_1.next()) {
|
|
78
|
+
var _f = dated_1_1.value, value = _f.value, date = _f.date;
|
|
79
|
+
var y = date.getFullYear();
|
|
80
|
+
var m = date.getMonth();
|
|
81
|
+
var d = date.getDate();
|
|
82
|
+
var months = (_c = years.get(y)) !== null && _c !== void 0 ? _c : new Map();
|
|
83
|
+
years.set(y, months);
|
|
84
|
+
var days = (_d = months.get(m)) !== null && _d !== void 0 ? _d : new Map();
|
|
85
|
+
months.set(m, days);
|
|
86
|
+
var bucket = (_e = days.get(d)) !== null && _e !== void 0 ? _e : [];
|
|
87
|
+
days.set(d, bucket);
|
|
88
|
+
if (!bucket.includes(value))
|
|
89
|
+
bucket.push(value);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
93
|
+
finally {
|
|
94
|
+
try {
|
|
95
|
+
if (dated_1_1 && !dated_1_1.done && (_b = dated_1.return)) _b.call(dated_1);
|
|
96
|
+
}
|
|
97
|
+
finally { if (e_2) throw e_2.error; }
|
|
98
|
+
}
|
|
99
|
+
var desc = function (a, b) { return b - a; };
|
|
100
|
+
return tslib_1.__spreadArray([], tslib_1.__read(years.keys()), false).sort(desc).map(function (y) {
|
|
101
|
+
var months = years.get(y);
|
|
102
|
+
var monthNodes = tslib_1.__spreadArray([], tslib_1.__read(months.keys()), false).sort(desc).map(function (m) {
|
|
103
|
+
var days = months.get(m);
|
|
104
|
+
var dayNodes = tslib_1.__spreadArray([], tslib_1.__read(days.keys()), false).sort(desc).map(function (d) { return ({
|
|
105
|
+
key: "d:".concat(y, "-").concat(m + 1, "-").concat(d),
|
|
106
|
+
label: String(d),
|
|
107
|
+
values: days.get(d),
|
|
108
|
+
}); });
|
|
109
|
+
return {
|
|
110
|
+
key: "m:".concat(y, "-").concat(m + 1),
|
|
111
|
+
label: MONTH_NAMES[m],
|
|
112
|
+
values: dayNodes.flatMap(function (node) { return node.values; }),
|
|
113
|
+
children: dayNodes,
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
return {
|
|
117
|
+
key: "y:".concat(y),
|
|
118
|
+
label: String(y),
|
|
119
|
+
values: monthNodes.flatMap(function (node) { return node.values; }),
|
|
120
|
+
children: monthNodes,
|
|
121
|
+
};
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
exports.buildDateTree = buildDateTree;
|
|
125
|
+
/** `true` all checked, `false` none, `"mixed"` some — the tri-state of a node or the whole list. */
|
|
126
|
+
var triState = function (values, isVisible) {
|
|
127
|
+
var e_3, _a;
|
|
128
|
+
var checked = 0;
|
|
129
|
+
try {
|
|
130
|
+
for (var values_2 = tslib_1.__values(values), values_2_1 = values_2.next(); !values_2_1.done; values_2_1 = values_2.next()) {
|
|
131
|
+
var value = values_2_1.value;
|
|
132
|
+
if (isVisible(value))
|
|
133
|
+
checked++;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
137
|
+
finally {
|
|
138
|
+
try {
|
|
139
|
+
if (values_2_1 && !values_2_1.done && (_a = values_2.return)) _a.call(values_2);
|
|
140
|
+
}
|
|
141
|
+
finally { if (e_3) throw e_3.error; }
|
|
142
|
+
}
|
|
143
|
+
if (checked === 0)
|
|
144
|
+
return values.length === 0 ? true : false;
|
|
145
|
+
return checked === values.length ? true : "mixed";
|
|
146
|
+
};
|
|
147
|
+
exports.triState = triState;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { ConditionType } from "../../types";
|
|
2
|
+
import type { ConditionType, FilterConditionJoin } from "../../types";
|
|
3
|
+
/** Excel's "Top 10…" AutoFilter: the four `NUMBER_TOP_*` / `NUMBER_BOTTOM_*` condition types. */
|
|
4
|
+
export declare const isTop10ConditionType: (type: ConditionType | undefined) => type is "NUMBER_TOP_N" | "NUMBER_BOTTOM_N" | "NUMBER_TOP_PERCENT" | "NUMBER_BOTTOM_PERCENT";
|
|
5
|
+
export declare const top10ConditionType: (direction: "top" | "bottom", unit: "items" | "percent") => ConditionType;
|
|
3
6
|
type FilterByConditionProps = {
|
|
4
7
|
conditionType?: ConditionType;
|
|
5
8
|
fromValue: string;
|
|
@@ -7,7 +10,16 @@ type FilterByConditionProps = {
|
|
|
7
10
|
onChangeFromValue(value: string): void;
|
|
8
11
|
onChangeToValue(value: string): void;
|
|
9
12
|
onChangeConditionType?(type: ConditionType | undefined): void;
|
|
13
|
+
/** Excel's Custom AutoFilter second clause and its And / Or join. */
|
|
14
|
+
condition2Type?: ConditionType;
|
|
15
|
+
condition2From: string;
|
|
16
|
+
condition2To: string;
|
|
17
|
+
conditionJoin: FilterConditionJoin;
|
|
18
|
+
onChangeCondition2Type(type: ConditionType | undefined): void;
|
|
19
|
+
onChangeCondition2From(value: string): void;
|
|
20
|
+
onChangeCondition2To(value: string): void;
|
|
21
|
+
onChangeConditionJoin(join: FilterConditionJoin): void;
|
|
10
22
|
};
|
|
11
|
-
export declare const FilterByCondition: ({ conditionType, fromValue, toValue, onChangeToValue, onChangeFromValue, onChangeConditionType, }: FilterByConditionProps) => React.JSX.Element;
|
|
23
|
+
export declare const FilterByCondition: ({ conditionType, fromValue, toValue, onChangeToValue, onChangeFromValue, onChangeConditionType, condition2Type, condition2From, condition2To, conditionJoin, onChangeCondition2Type, onChangeCondition2From, onChangeCondition2To, onChangeConditionJoin, }: FilterByConditionProps) => React.JSX.Element;
|
|
12
24
|
export {};
|
|
13
25
|
//# sourceMappingURL=filter-by-condition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-by-condition.d.ts","sourceRoot":"","sources":["../../../../components/filter-box/filter-by-condition.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter-by-condition.d.ts","sourceRoot":"","sources":["../../../../components/filter-box/filter-by-condition.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAKxC,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEtE,iGAAiG;AACjG,eAAO,MAAM,oBAAoB,GAAI,MAAM,aAAa,GAAG,SAAS,gGAIlC,CAAC;AAEnC,eAAO,MAAM,kBAAkB,GAC7B,WAAW,KAAK,GAAG,QAAQ,EAC3B,MAAM,OAAO,GAAG,SAAS,KACxB,aAO4B,CAAC;AAchC,KAAK,sBAAsB,GAAG;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,qBAAqB,CAAC,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9D,qEAAqE;IACrE,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,mBAAmB,CAAC;IACnC,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9D,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACxD,CAAC;AAsKF,eAAO,MAAM,iBAAiB,GAAI,6PAe/B,sBAAsB,sBAuFxB,CAAC"}
|
|
@@ -1,14 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FilterByCondition = void 0;
|
|
3
|
+
exports.FilterByCondition = exports.top10ConditionType = exports.isTop10ConditionType = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var ui_1 = require("@rowsncolumns/ui");
|
|
6
6
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
7
|
var config_1 = require("../../config");
|
|
8
8
|
var helpers_1 = require("../../helpers");
|
|
9
9
|
var use_isomorphic_layout_effect_1 = require("../../hooks/use-isomorphic-layout-effect");
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
/** Excel's "Top 10…" AutoFilter: the four `NUMBER_TOP_*` / `NUMBER_BOTTOM_*` condition types. */
|
|
11
|
+
var isTop10ConditionType = function (type) {
|
|
12
|
+
return type === "NUMBER_TOP_N" ||
|
|
13
|
+
type === "NUMBER_BOTTOM_N" ||
|
|
14
|
+
type === "NUMBER_TOP_PERCENT" ||
|
|
15
|
+
type === "NUMBER_BOTTOM_PERCENT";
|
|
16
|
+
};
|
|
17
|
+
exports.isTop10ConditionType = isTop10ConditionType;
|
|
18
|
+
var top10ConditionType = function (direction, unit) {
|
|
19
|
+
return direction === "top"
|
|
20
|
+
? unit === "items"
|
|
21
|
+
? "NUMBER_TOP_N"
|
|
22
|
+
: "NUMBER_TOP_PERCENT"
|
|
23
|
+
: unit === "items"
|
|
24
|
+
? "NUMBER_BOTTOM_N"
|
|
25
|
+
: "NUMBER_BOTTOM_PERCENT";
|
|
26
|
+
};
|
|
27
|
+
exports.top10ConditionType = top10ConditionType;
|
|
28
|
+
/**
|
|
29
|
+
* Conditions Excel's Custom AutoFilter offers for its second clause: the
|
|
30
|
+
* per-cell comparisons. Column-ranked filters (Top 10, above / below
|
|
31
|
+
* average) are whole-column criteria and can't be And/Or-ed with another.
|
|
32
|
+
*/
|
|
33
|
+
var SECOND_CLAUSE_LABELS = config_1.CONDITION_LABELS.filter(function (_a) {
|
|
34
|
+
var condition = _a.condition;
|
|
35
|
+
return !(0, exports.isTop10ConditionType)(condition) &&
|
|
36
|
+
condition !== "NUMBER_ABOVE_AVERAGE" &&
|
|
37
|
+
condition !== "NUMBER_BELOW_AVERAGE";
|
|
38
|
+
});
|
|
39
|
+
var ConditionSelect = function (_a) {
|
|
40
|
+
var value = _a.value, labels = _a.labels, onChange = _a.onChange, ariaLabel = _a.ariaLabel;
|
|
41
|
+
return (react_1.default.createElement(ui_1.Select, { value: value !== null && value !== void 0 ? value : config_1.CONDITION_NONE, onValueChange: function (next) {
|
|
42
|
+
return onChange(next === config_1.CONDITION_NONE ? undefined : next);
|
|
43
|
+
} },
|
|
44
|
+
react_1.default.createElement(ui_1.SelectTrigger, { className: "mb-1", "aria-label": ariaLabel },
|
|
45
|
+
react_1.default.createElement(ui_1.SelectValue, { placeholder: "None" })),
|
|
46
|
+
react_1.default.createElement(ui_1.SelectPortal, null,
|
|
47
|
+
react_1.default.createElement(ui_1.SelectContent, null,
|
|
48
|
+
react_1.default.createElement(ui_1.SelectItem, { value: config_1.CONDITION_NONE }, "None"),
|
|
49
|
+
labels.map(function (_a) {
|
|
50
|
+
var condition = _a.condition, label = _a.label;
|
|
51
|
+
return (react_1.default.createElement(ui_1.SelectItem, { key: condition, value: condition }, label));
|
|
52
|
+
})))));
|
|
53
|
+
};
|
|
54
|
+
var ValueInputs = function (_a) {
|
|
55
|
+
var conditionType = _a.conditionType, fromValue = _a.fromValue, toValue = _a.toValue, onChangeFromValue = _a.onChangeFromValue, onChangeToValue = _a.onChangeToValue, namePrefix = _a.namePrefix;
|
|
12
56
|
var _b = tslib_1.__read((0, react_1.useState)(function () {
|
|
13
57
|
return (0, helpers_1.shouldShowToValue)(conditionType);
|
|
14
58
|
}), 2), showToValue = _b[0], setShowToValue = _b[1];
|
|
@@ -24,24 +68,56 @@ var FilterByCondition = function (_a) {
|
|
|
24
68
|
onChangeToValue("");
|
|
25
69
|
}
|
|
26
70
|
}, [conditionType, onChangeToValue, onChangeFromValue]);
|
|
27
|
-
return (react_1.default.createElement(
|
|
28
|
-
react_1.default.createElement(
|
|
29
|
-
react_1.default.createElement(ui_1.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
71
|
+
return (react_1.default.createElement(ui_1.Stack, { direction: "vertical", className: "gap-1" },
|
|
72
|
+
showFromValue ? (react_1.default.createElement(ui_1.Input, { value: fromValue, type: "text", name: "".concat(namePrefix, "fromValue"), onChange: function (e) { return onChangeFromValue === null || onChangeFromValue === void 0 ? void 0 : onChangeFromValue(e.target.value); }, className: "text-xs", placeholder: "Enter value" })) : null,
|
|
73
|
+
showToValue ? (react_1.default.createElement(ui_1.Input, { value: toValue, type: "text", name: "".concat(namePrefix, "toValue"), onChange: function (e) { return onChangeToValue === null || onChangeToValue === void 0 ? void 0 : onChangeToValue(e.target.value); }, className: "text-xs", placeholder: "" })) : null));
|
|
74
|
+
};
|
|
75
|
+
/** Excel's Top 10 AutoFilter dialog: [Top | Bottom] [N] [Items | Percent]. */
|
|
76
|
+
var Top10Fields = function (_a) {
|
|
77
|
+
var conditionType = _a.conditionType, count = _a.count, onChangeConditionType = _a.onChangeConditionType, onChangeCount = _a.onChangeCount;
|
|
78
|
+
var direction = conditionType === "NUMBER_TOP_N" || conditionType === "NUMBER_TOP_PERCENT"
|
|
79
|
+
? "top"
|
|
80
|
+
: "bottom";
|
|
81
|
+
var unit = conditionType === "NUMBER_TOP_PERCENT" ||
|
|
82
|
+
conditionType === "NUMBER_BOTTOM_PERCENT"
|
|
83
|
+
? "percent"
|
|
84
|
+
: "items";
|
|
85
|
+
return (react_1.default.createElement(ui_1.Stack, { className: "gap-1 items-center" },
|
|
86
|
+
react_1.default.createElement(ui_1.Select, { value: direction, onValueChange: function (next) {
|
|
87
|
+
return onChangeConditionType((0, exports.top10ConditionType)(next === "bottom" ? "bottom" : "top", unit));
|
|
33
88
|
} },
|
|
34
|
-
react_1.default.createElement(ui_1.SelectTrigger, { className: "
|
|
35
|
-
react_1.default.createElement(ui_1.SelectValue,
|
|
89
|
+
react_1.default.createElement(ui_1.SelectTrigger, { className: "w-24", "aria-label": "Top or bottom" },
|
|
90
|
+
react_1.default.createElement(ui_1.SelectValue, null)),
|
|
36
91
|
react_1.default.createElement(ui_1.SelectPortal, null,
|
|
37
92
|
react_1.default.createElement(ui_1.SelectContent, null,
|
|
38
|
-
react_1.default.createElement(ui_1.SelectItem, { value:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
93
|
+
react_1.default.createElement(ui_1.SelectItem, { value: "top" }, "Top"),
|
|
94
|
+
react_1.default.createElement(ui_1.SelectItem, { value: "bottom" }, "Bottom")))),
|
|
95
|
+
react_1.default.createElement(ui_1.Input, { value: count, type: "number", min: 1, name: "top10Count", "aria-label": "Top 10 count", onChange: function (e) { return onChangeCount(e.target.value); }, className: "text-xs w-16" }),
|
|
96
|
+
react_1.default.createElement(ui_1.Select, { value: unit, onValueChange: function (next) {
|
|
97
|
+
return onChangeConditionType((0, exports.top10ConditionType)(direction, next === "percent" ? "percent" : "items"));
|
|
98
|
+
} },
|
|
99
|
+
react_1.default.createElement(ui_1.SelectTrigger, { className: "w-24", "aria-label": "Items or percent" },
|
|
100
|
+
react_1.default.createElement(ui_1.SelectValue, null)),
|
|
101
|
+
react_1.default.createElement(ui_1.SelectPortal, null,
|
|
102
|
+
react_1.default.createElement(ui_1.SelectContent, null,
|
|
103
|
+
react_1.default.createElement(ui_1.SelectItem, { value: "items" }, "Items"),
|
|
104
|
+
react_1.default.createElement(ui_1.SelectItem, { value: "percent" }, "Percent"))))));
|
|
105
|
+
};
|
|
106
|
+
var FilterByCondition = function (_a) {
|
|
107
|
+
var conditionType = _a.conditionType, fromValue = _a.fromValue, toValue = _a.toValue, onChangeToValue = _a.onChangeToValue, onChangeFromValue = _a.onChangeFromValue, onChangeConditionType = _a.onChangeConditionType, condition2Type = _a.condition2Type, condition2From = _a.condition2From, condition2To = _a.condition2To, conditionJoin = _a.conditionJoin, onChangeCondition2Type = _a.onChangeCondition2Type, onChangeCondition2From = _a.onChangeCondition2From, onChangeCondition2To = _a.onChangeCondition2To, onChangeConditionJoin = _a.onChangeConditionJoin;
|
|
108
|
+
// Excel's Custom AutoFilter shows the second clause row only on request;
|
|
109
|
+
// it stays open while a second clause is stored on the column.
|
|
110
|
+
var _b = tslib_1.__read((0, react_1.useState)(function () { return condition2Type !== undefined; }), 2), showSecondClause = _b[0], setShowSecondClause = _b[1];
|
|
111
|
+
var isTop10 = (0, exports.isTop10ConditionType)(conditionType);
|
|
112
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
113
|
+
react_1.default.createElement("label", { className: "text-sm font-semibold pb-1 block" }, "Filter by condition"),
|
|
114
|
+
react_1.default.createElement(ConditionSelect, { value: conditionType, labels: config_1.CONDITION_LABELS, onChange: function (type) { return onChangeConditionType === null || onChangeConditionType === void 0 ? void 0 : onChangeConditionType(type); }, ariaLabel: "Condition" }),
|
|
115
|
+
isTop10 && conditionType ? (react_1.default.createElement(Top10Fields, { conditionType: conditionType, count: fromValue, onChangeConditionType: function (type) { return onChangeConditionType === null || onChangeConditionType === void 0 ? void 0 : onChangeConditionType(type); }, onChangeCount: onChangeFromValue })) : (react_1.default.createElement(ValueInputs, { conditionType: conditionType, fromValue: fromValue, toValue: toValue, onChangeFromValue: onChangeFromValue, onChangeToValue: onChangeToValue, namePrefix: "" })),
|
|
116
|
+
conditionType && !isTop10 ? (showSecondClause ? (react_1.default.createElement("div", { className: "mt-1 flex flex-col gap-1" },
|
|
117
|
+
react_1.default.createElement("div", { role: "radiogroup", "aria-label": "Combine conditions", className: "flex gap-3 text-xs px-1" }, ["AND", "OR"].map(function (join) { return (react_1.default.createElement("label", { key: join, className: "flex items-center gap-1 cursor-pointer" },
|
|
118
|
+
react_1.default.createElement("input", { type: "radio", name: "conditionJoin", value: join, checked: conditionJoin === join, onChange: function () { return onChangeConditionJoin(join); } }),
|
|
119
|
+
join === "AND" ? "And" : "Or")); })),
|
|
120
|
+
react_1.default.createElement(ConditionSelect, { value: condition2Type, labels: SECOND_CLAUSE_LABELS, onChange: onChangeCondition2Type, ariaLabel: "Second condition" }),
|
|
121
|
+
react_1.default.createElement(ValueInputs, { conditionType: condition2Type, fromValue: condition2From, toValue: condition2To, onChangeFromValue: onChangeCondition2From, onChangeToValue: onChangeCondition2To, namePrefix: "second" }))) : (react_1.default.createElement(ui_1.Button, { type: "button", variant: "link", className: "text-xs px-1 mt-1 self-start", onClick: function () { return setShowSecondClause(true); } }, "Custom filter (And / Or)\u2026"))) : null));
|
|
46
122
|
};
|
|
47
123
|
exports.FilterByCondition = FilterByCondition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-by-value.d.ts","sourceRoot":"","sources":["../../../../components/filter-box/filter-by-value.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter-by-value.d.ts","sourceRoot":"","sources":["../../../../components/filter-box/filter-by-value.tsx"],"names":[],"mappings":"AASA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAKtE,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5C,qBAAqB,EAAE,KAAK,CAAC,QAAQ,CACnC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,CAClD,CAAC;CACH,CAAC;AAcF,eAAO,MAAM,aAAa,GAAI,mDAI3B,kBAAkB,sBA+PpB,CAAC"}
|
|
@@ -4,73 +4,159 @@ exports.FilterByValue = void 0;
|
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var icons_1 = require("@rowsncolumns/icons");
|
|
6
6
|
var ui_1 = require("@rowsncolumns/ui");
|
|
7
|
-
var ui_2 = require("@rowsncolumns/ui");
|
|
8
7
|
var utils_1 = require("@rowsncolumns/utils");
|
|
9
8
|
var react_virtual_1 = require("@tanstack/react-virtual");
|
|
10
9
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
11
|
-
var react_2 = require("react");
|
|
12
|
-
var react_3 = require("react");
|
|
13
|
-
var react_4 = require("react");
|
|
14
10
|
var config_1 = require("../../config");
|
|
11
|
+
var date_tree_1 = require("./date-tree");
|
|
12
|
+
/** Excel's checklist glyph: checked, unchecked, or the "some children" dash. */
|
|
13
|
+
var TriStateMark = function (_a) {
|
|
14
|
+
var state = _a.state;
|
|
15
|
+
return (react_1.default.createElement("span", { className: "min-w-[15px] h-[15px] block leading-none border border-gray-400 rounded-sm text-center shrink-0", "aria-hidden": true }, state === true ? react_1.default.createElement(icons_1.CheckIcon, null) : state === "mixed" ? react_1.default.createElement(icons_1.DividerHorizontalIcon, null) : null));
|
|
16
|
+
};
|
|
17
|
+
var rowClassName = "justify-start px-2 py-0 gap-1 text-sm text-left w-full h-6";
|
|
15
18
|
var FilterByValue = function (_a) {
|
|
16
19
|
var visibleValues = _a.visibleValues, _b = _a.values, values = _b === void 0 ? config_1.DEFAULT_ARRAY : _b, onChangeVisibleValues = _a.onChangeVisibleValues;
|
|
17
|
-
var _c = tslib_1.__read((0,
|
|
18
|
-
|
|
20
|
+
var _c = tslib_1.__read((0, react_1.useState)(""), 2), query = _c[0], setQuery = _c[1];
|
|
21
|
+
// Excel's "Add current selection to filter": while searching, checking the
|
|
22
|
+
// results ADDS them to the values already shown instead of replacing them.
|
|
23
|
+
var _d = tslib_1.__read((0, react_1.useState)(false), 2), addToSelection = _d[0], setAddToSelection = _d[1];
|
|
24
|
+
var _e = tslib_1.__read((0, react_1.useState)(function () { return new Set(); }), 2), expanded = _e[0], setExpanded = _e[1];
|
|
25
|
+
var parentRef = (0, react_1.useRef)(null);
|
|
19
26
|
var filteredValues = (0, react_1.useMemo)(function () {
|
|
20
27
|
var regex = new RegExp((0, utils_1.escapeCharacters)(query), "i");
|
|
21
|
-
return values.filter(function (value) {
|
|
22
|
-
return regex.test(String(value));
|
|
23
|
-
});
|
|
28
|
+
return values.filter(function (value) { return regex.test(String(value)); });
|
|
24
29
|
}, [values, query]);
|
|
30
|
+
// A date column's checklist is a Year → Month → Day tree; a search flattens
|
|
31
|
+
// it to the matching values, as Excel does.
|
|
32
|
+
var dateTree = (0, react_1.useMemo)(function () { return (query ? undefined : (0, date_tree_1.buildDateTree)(values, config_1.BLANK_LABEL)); }, [values, query]);
|
|
33
|
+
var hasBlank = values.includes(config_1.BLANK_LABEL);
|
|
34
|
+
var visibleSet = (0, react_1.useMemo)(function () { return (visibleValues ? new Set(visibleValues) : undefined); }, [visibleValues]);
|
|
35
|
+
var isVisible = (0, react_1.useCallback)(function (value) { return !visibleSet || visibleSet.has(value); }, [visibleSet]);
|
|
36
|
+
// `undefined` visible values = everything shown; collapse back to it once
|
|
37
|
+
// every value is checked so a full checklist never becomes a whitelist.
|
|
38
|
+
var normalize = (0, react_1.useCallback)(function (next) {
|
|
39
|
+
return values.every(function (value) { return next.has(value); }) ? undefined : tslib_1.__spreadArray([], tslib_1.__read(next), false);
|
|
40
|
+
}, [values]);
|
|
41
|
+
var setChecked = (0, react_1.useCallback)(function (targets, checked) {
|
|
42
|
+
onChangeVisibleValues(function (prev) {
|
|
43
|
+
var e_1, _a;
|
|
44
|
+
var next = new Set(prev !== null && prev !== void 0 ? prev : values);
|
|
45
|
+
try {
|
|
46
|
+
for (var targets_1 = tslib_1.__values(targets), targets_1_1 = targets_1.next(); !targets_1_1.done; targets_1_1 = targets_1.next()) {
|
|
47
|
+
var value = targets_1_1.value;
|
|
48
|
+
if (checked)
|
|
49
|
+
next.add(value);
|
|
50
|
+
else
|
|
51
|
+
next.delete(value);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
55
|
+
finally {
|
|
56
|
+
try {
|
|
57
|
+
if (targets_1_1 && !targets_1_1.done && (_a = targets_1.return)) _a.call(targets_1);
|
|
58
|
+
}
|
|
59
|
+
finally { if (e_1) throw e_1.error; }
|
|
60
|
+
}
|
|
61
|
+
return normalize(next);
|
|
62
|
+
});
|
|
63
|
+
}, [onChangeVisibleValues, values, normalize]);
|
|
64
|
+
var selectAllState = (0, date_tree_1.triState)(filteredValues, isVisible);
|
|
65
|
+
var onToggleSelectAll = (0, react_1.useCallback)(function () {
|
|
66
|
+
if (selectAllState === true) {
|
|
67
|
+
setChecked(filteredValues, false);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (query && !addToSelection) {
|
|
71
|
+
// Checking the search results shows ONLY them (Excel replaces the
|
|
72
|
+
// selection unless "Add current selection to filter" is on).
|
|
73
|
+
onChangeVisibleValues(normalize(new Set(filteredValues)));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
setChecked(filteredValues, true);
|
|
77
|
+
}, [
|
|
78
|
+
selectAllState,
|
|
79
|
+
setChecked,
|
|
80
|
+
filteredValues,
|
|
81
|
+
query,
|
|
82
|
+
addToSelection,
|
|
83
|
+
onChangeVisibleValues,
|
|
84
|
+
normalize,
|
|
85
|
+
]);
|
|
25
86
|
var rowVirtualizer = (0, react_virtual_1.useVirtualizer)({
|
|
26
87
|
count: filteredValues.length,
|
|
27
88
|
getScrollElement: function () { return parentRef.current; },
|
|
28
|
-
estimateSize: (0,
|
|
89
|
+
estimateSize: (0, react_1.useCallback)(function () { return 24; }, []),
|
|
29
90
|
overscan: 5,
|
|
30
91
|
});
|
|
31
|
-
var
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return
|
|
92
|
+
var toggleExpanded = function (key) {
|
|
93
|
+
return setExpanded(function (prev) {
|
|
94
|
+
var next = new Set(prev);
|
|
95
|
+
if (next.has(key))
|
|
96
|
+
next.delete(key);
|
|
97
|
+
else
|
|
98
|
+
next.add(key);
|
|
99
|
+
return next;
|
|
39
100
|
});
|
|
40
101
|
};
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
102
|
+
var renderTreeNode = function (node, depth) {
|
|
103
|
+
var _a;
|
|
104
|
+
var state = (0, date_tree_1.triState)(node.values, isVisible);
|
|
105
|
+
var isExpanded = expanded.has(node.key);
|
|
106
|
+
return (react_1.default.createElement(react_1.default.Fragment, { key: node.key },
|
|
107
|
+
react_1.default.createElement("div", { className: "flex items-center", style: { paddingLeft: depth * 14 } },
|
|
108
|
+
node.children ? (react_1.default.createElement("button", { type: "button", "aria-expanded": isExpanded, "aria-label": "".concat(isExpanded ? "Collapse" : "Expand", " ").concat(node.label), className: "w-4 h-4 flex items-center justify-center shrink-0", onClick: function (e) {
|
|
109
|
+
e.stopPropagation();
|
|
110
|
+
toggleExpanded(node.key);
|
|
111
|
+
} }, isExpanded ? react_1.default.createElement(icons_1.ChevronDownIcon, null) : react_1.default.createElement(icons_1.ChevronRightIcon, null))) : (react_1.default.createElement("span", { className: "w-4 shrink-0" })),
|
|
112
|
+
react_1.default.createElement(ui_1.Button, { type: "button", role: "checkbox", "aria-checked": state, onMouseDown: function (e) { return e.stopPropagation(); }, onClick: function (e) {
|
|
113
|
+
e.preventDefault();
|
|
114
|
+
e.stopPropagation();
|
|
115
|
+
setChecked(node.values, state !== true);
|
|
116
|
+
}, className: rowClassName, title: node.label },
|
|
117
|
+
react_1.default.createElement(TriStateMark, { state: state }),
|
|
118
|
+
react_1.default.createElement("span", { className: "whitespace-nowrap overflow-hidden text-ellipsis" }, node.label))),
|
|
119
|
+
isExpanded
|
|
120
|
+
? (_a = node.children) === null || _a === void 0 ? void 0 : _a.map(function (child) { return renderTreeNode(child, depth + 1); })
|
|
121
|
+
: null));
|
|
46
122
|
};
|
|
47
123
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
48
124
|
react_1.default.createElement("label", { className: "text-sm font-semibold pb-1 block" }, "Filter by value"),
|
|
49
|
-
react_1.default.createElement(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
125
|
+
react_1.default.createElement(ui_1.Input, { type: "text", value: query, onChange: function (e) { return setQuery(e.target.value); }, placeholder: "Search", "aria-label": "Search values", className: "text-xs" }),
|
|
126
|
+
react_1.default.createElement(ui_1.Button, { type: "button", role: "checkbox", "aria-checked": selectAllState, onMouseDown: function (e) { return e.stopPropagation(); }, onClick: function (e) {
|
|
127
|
+
e.preventDefault();
|
|
128
|
+
e.stopPropagation();
|
|
129
|
+
onToggleSelectAll();
|
|
130
|
+
}, className: "".concat(rowClassName, " mt-1 font-medium") },
|
|
131
|
+
react_1.default.createElement(TriStateMark, { state: selectAllState }),
|
|
132
|
+
react_1.default.createElement("span", null, query ? "(Select All Search Results)" : "(Select All)")),
|
|
133
|
+
query ? (react_1.default.createElement("label", { className: "flex items-center gap-2 text-xs px-2 py-0.5 select-none cursor-pointer" },
|
|
134
|
+
react_1.default.createElement("input", { type: "checkbox", checked: addToSelection, onChange: function (e) { return setAddToSelection(e.target.checked); } }),
|
|
135
|
+
"Add current selection to filter")) : null,
|
|
136
|
+
dateTree ? (react_1.default.createElement("div", { className: "overflow-auto mt-1 flex flex-col", style: { maxHeight: 160 } },
|
|
137
|
+
dateTree.map(function (node) { return renderTreeNode(node, 0); }),
|
|
138
|
+
hasBlank ? (react_1.default.createElement("div", { className: "flex items-center" },
|
|
139
|
+
react_1.default.createElement("span", { className: "w-4 shrink-0" }),
|
|
140
|
+
react_1.default.createElement(ui_1.Button, { type: "button", role: "checkbox", "aria-checked": isVisible(config_1.BLANK_LABEL), onMouseDown: function (e) { return e.stopPropagation(); }, onClick: function (e) {
|
|
141
|
+
e.preventDefault();
|
|
142
|
+
e.stopPropagation();
|
|
143
|
+
setChecked([config_1.BLANK_LABEL], !isVisible(config_1.BLANK_LABEL));
|
|
144
|
+
}, className: rowClassName, title: config_1.BLANK_LABEL },
|
|
145
|
+
react_1.default.createElement(TriStateMark, { state: isVisible(config_1.BLANK_LABEL) }),
|
|
146
|
+
react_1.default.createElement("span", null, config_1.BLANK_LABEL)))) : null)) : (react_1.default.createElement("div", { className: "overflow-auto mt-1", style: { maxHeight: 160 }, ref: parentRef },
|
|
54
147
|
react_1.default.createElement("div", { style: {
|
|
55
148
|
height: "".concat(rowVirtualizer.getTotalSize(), "px"),
|
|
56
149
|
width: "100%",
|
|
57
150
|
position: "relative",
|
|
58
151
|
} }, rowVirtualizer.getVirtualItems().map(function (virtualItem) {
|
|
59
152
|
var value = filteredValues[virtualItem.index];
|
|
60
|
-
var
|
|
61
|
-
|
|
62
|
-
: true;
|
|
63
|
-
return (react_1.default.createElement(ui_2.Button, { key: virtualItem.key, type: "button", onMouseDown: function (e) {
|
|
153
|
+
var checked = isVisible(value);
|
|
154
|
+
return (react_1.default.createElement(ui_1.Button, { key: virtualItem.key, type: "button", role: "checkbox", "aria-checked": checked, onMouseDown: function (e) {
|
|
64
155
|
e.stopPropagation();
|
|
65
156
|
}, onClick: function (e) {
|
|
66
157
|
e.preventDefault();
|
|
67
158
|
e.stopPropagation();
|
|
68
|
-
|
|
69
|
-
onUnCheck(value);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
onCheck(value);
|
|
73
|
-
}
|
|
159
|
+
setChecked([value], !checked);
|
|
74
160
|
}, className: "justify-start px-2 py-0 gap-1 text-sm text-left", title: value, style: {
|
|
75
161
|
position: "absolute",
|
|
76
162
|
top: 0,
|
|
@@ -79,8 +165,8 @@ var FilterByValue = function (_a) {
|
|
|
79
165
|
height: "".concat(virtualItem.size, "px"),
|
|
80
166
|
transform: "translateY(".concat(virtualItem.start, "px)"),
|
|
81
167
|
} },
|
|
82
|
-
react_1.default.createElement(
|
|
168
|
+
react_1.default.createElement(TriStateMark, { state: checked }),
|
|
83
169
|
react_1.default.createElement("div", { className: "whitespace-nowrap overflow-hidden text-ellipsis" }, String(value))));
|
|
84
|
-
})))));
|
|
170
|
+
}))))));
|
|
85
171
|
};
|
|
86
172
|
exports.FilterByValue = FilterByValue;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { UseFilterProps } from "../../hooks/use-filter";
|
|
3
|
-
import type { FilterView, TableView } from "../../types";
|
|
3
|
+
import type { FilterCriteria, FilterView, TableView } from "../../types";
|
|
4
4
|
import type { AvailableIcon } from "./filter-by-color";
|
|
5
5
|
export type { AvailableIcon } from "./filter-by-color";
|
|
6
6
|
export type FilterBoxBaseProps = {
|
|
@@ -32,6 +32,12 @@ export type FilterBoxBaseProps = {
|
|
|
32
32
|
customLists?: string[][];
|
|
33
33
|
};
|
|
34
34
|
export declare const isTableView: (filter: FilterView | TableView) => filter is TableView;
|
|
35
|
+
/**
|
|
36
|
+
* Whether a column's stored criteria still filter anything — what enables
|
|
37
|
+
* Excel's "Clear Filter From <column>" item. Same test as the state layer's
|
|
38
|
+
* `isFilterCriteriaActive`.
|
|
39
|
+
*/
|
|
40
|
+
export declare const hasActiveFilterCriteria: (criteria: FilterCriteria | undefined) => boolean;
|
|
35
41
|
export declare const FilterBoxWrapper: React.MemoExoticComponent<({ dimensionIndex, onOpenChange, onSort, onFilter, onDeleteTableColumn, onInsertTableColumn, sheetId, filter, values, availableCellColors, availableFontColors, availableIcons, customLists, }: FilterBoxProps) => React.JSX.Element>;
|
|
36
42
|
export type FilterBoxProps = FilterBoxBaseProps & {
|
|
37
43
|
sheetId: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/filter-box/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/filter-box/index.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAMV,cAAc,EACd,UAAU,EAGV,SAAS,EACV,MAAM,aAAa,CAAC;AAKrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IACtC,QAAQ,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAC1C,mBAAmB,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC3D,mBAAmB,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC3D,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,sEAAsE;IACtE,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC1B,CAAC;AAGF,eAAO,MAAM,WAAW,GACtB,QAAQ,UAAU,GAAG,SAAS,KAC7B,MAAM,IAAI,SAEZ,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,cAAc,GAAG,SAAS,KACnC,OAQA,CAAC;AA0BJ,eAAO,MAAM,gBAAgB,4NAexB,cAAc,uBA4kBlB,CAAC;AAIF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS;YAAW,cAAc;;CAuC9C,CAAC"}
|