@deephaven/iris-grid 1.7.2-react-18-alpha.3 → 1.8.1-beta.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/ColumnHeaderGroup.d.ts +6 -0
- package/dist/ColumnHeaderGroup.d.ts.map +1 -1
- package/dist/ColumnHeaderGroup.js +9 -0
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/IrisGrid.d.ts +8 -0
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +30 -2
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +4 -1
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +1 -1
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +1 -1
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +1 -1
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +2 -2
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +30 -12
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +283 -48
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +2 -2
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +4 -11
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +2 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +10 -6
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +17 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Aggregations.js","names":["React","useCallback","useEffect","useMemo","useState","DragDropContext","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","vsEdit","dhWarningFilled","Log","DraggableItemList","DragUtils","Option","Select","Radio","RadioGroup","Button","AggregationOperation","AggregationUtils","SELECTABLE_OPTIONS","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","Aggregations","_ref","isRollup","settings","availablePlacements","onChange","onEdit","dh","aggregations","showOnTop","options","filter","option","some","aggregation","operation","MEDIAN","undefined","selectedOperation","setSelectedOperation","selectedRanges","setSelectedRanges","changeSettings","changedSettings","added","arguments","length","removed","_objectSpread","changeAggregations","newAggregations","changeShowOnTop","newShowOnTop","handleDragStart","debug","startDragging","handleDragEnd","_ref2","destination","source","stopDragging","destinationIndex","index","draggedItems","reorder","insertIndex","adjustDestinationIndex","newSelectedRanges","handleOperationChange","handleAdd","selected","invert","handleDeleteClicked","itemIndex","keep","remove","reduce","_ref3","keepSoFar","removeSoFar","push","handleAggregationSelectionChange","handleAggregationSelect","isRollupOperation","handleShowOnTopChange","value","setDefaultOperation","includes","renderAggregation","_ref4","item","isClone","selectedCount","text","badgeText","concat","className","isRollupProhibited","isEditable","children","icon","renderBadge","renderHandle","kind","tooltip","onClick","disabled","isOptionsShown","isAggregationsShown","map","type","id","marginStart","orientation","isDisabled","onDragStart","onDragEnd","itemCount","items","renderItem","offset","onSelectionChange","onSelect","isMultiSelect"],"sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { DragDropContext, type DropResult } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhNewCircleLargeFilled,\n vsTrash,\n vsEdit,\n dhWarningFilled,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n DraggableItemList,\n DragUtils,\n Option,\n Select,\n Radio,\n RadioGroup,\n Button,\n} from '@deephaven/components';\nimport type { DraggableRenderItemProps, Range } from '@deephaven/components';\nimport { type ModelIndex } from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport AggregationOperation from './AggregationOperation';\nimport AggregationUtils, { SELECTABLE_OPTIONS } from './AggregationUtils';\nimport './Aggregations.scss';\n\nconst log = Log.module('Aggregations');\n\nexport type Aggregation = {\n operation: AggregationOperation;\n selected: readonly string[];\n invert: boolean;\n};\n\nexport type AggregationSettings = {\n aggregations: readonly Aggregation[];\n showOnTop: boolean;\n};\n\nexport type AggregationsProps = {\n isRollup: boolean;\n availablePlacements?: ('top' | 'bottom')[];\n settings: AggregationSettings;\n onChange: (\n settings: AggregationSettings,\n added: AggregationOperation[],\n removed: AggregationOperation[]\n ) => void;\n onEdit: (aggregation: Aggregation) => void;\n dh: typeof DhType;\n};\n\nfunction Aggregations({\n isRollup,\n settings,\n availablePlacements = ['top', 'bottom'],\n onChange,\n onEdit,\n dh,\n}: AggregationsProps): JSX.Element {\n const { aggregations, showOnTop } = settings;\n const options = useMemo(\n () =>\n SELECTABLE_OPTIONS.filter(\n option =>\n !aggregations.some(aggregation => aggregation.operation === option) &&\n !(\n option === AggregationOperation.MEDIAN &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - MEDIAN is not defined in older version of Core\n dh.AggregationOperation.MEDIAN === undefined\n )\n ),\n [aggregations, dh]\n );\n const [selectedOperation, setSelectedOperation] = useState(options[0]);\n const [selectedRanges, setSelectedRanges] = useState<readonly Range[]>([]);\n const changeSettings = useCallback(\n (\n changedSettings: Partial<AggregationSettings>,\n added: AggregationOperation[] = [],\n removed: AggregationOperation[] = []\n ) => {\n onChange({ ...settings, ...changedSettings }, added, removed);\n },\n [onChange, settings]\n );\n const changeAggregations = useCallback(\n (\n newAggregations: readonly Aggregation[],\n added: AggregationOperation[] = [],\n removed: AggregationOperation[] = []\n ) => {\n changeSettings({ aggregations: newAggregations }, added, removed);\n },\n [changeSettings]\n );\n\n const changeShowOnTop = useCallback(\n (newShowOnTop: boolean) => {\n changeSettings({ showOnTop: newShowOnTop });\n },\n [changeSettings]\n );\n\n const handleDragStart = useCallback(() => {\n log.debug('handleDragStart');\n\n DragUtils.startDragging();\n }, []);\n\n const handleDragEnd = useCallback(\n ({ destination, source }: DropResult) => {\n log.debug('handleDragEnd', destination, source);\n\n DragUtils.stopDragging();\n\n if (destination == null) {\n return;\n }\n\n let destinationIndex = destination.index;\n if (source.index < destination.index) {\n destinationIndex += 1;\n }\n\n const newAggregations = [...aggregations];\n const draggedItems = DragUtils.reorder(\n newAggregations,\n selectedRanges,\n newAggregations,\n destinationIndex\n );\n const insertIndex = DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges\n );\n const newSelectedRanges: Range[] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n changeAggregations(newAggregations);\n setSelectedRanges(newSelectedRanges);\n },\n [changeAggregations, aggregations, selectedRanges, setSelectedRanges]\n );\n\n const handleOperationChange = useCallback(\n (operation: string) => {\n setSelectedOperation(operation as AggregationOperation);\n },\n [setSelectedOperation]\n );\n\n const handleAdd = useCallback(() => {\n changeAggregations(\n [\n ...aggregations,\n { operation: selectedOperation, selected: [], invert: true },\n ],\n [selectedOperation]\n );\n }, [aggregations, selectedOperation, changeAggregations]);\n\n const handleDeleteClicked = useCallback(\n (itemIndex: ModelIndex) => {\n const [keep, remove] = aggregations.reduce(\n ([keepSoFar, removeSoFar], aggregation, index) => {\n if (index === itemIndex) {\n removeSoFar.push(aggregation.operation);\n } else {\n keepSoFar.push(aggregation);\n }\n return [keepSoFar, removeSoFar];\n },\n [[], []] as [Aggregation[], AggregationOperation[]]\n );\n changeAggregations(keep, [], remove);\n },\n [aggregations, changeAggregations]\n );\n\n const handleAggregationSelectionChange = useCallback(\n (newSelectedRanges: readonly Range[]) => {\n setSelectedRanges(newSelectedRanges);\n },\n [setSelectedRanges]\n );\n\n const handleAggregationSelect = useCallback(\n (itemIndex: number) => {\n const aggregation = aggregations[itemIndex];\n if (!AggregationUtils.isRollupOperation(aggregation.operation)) {\n onEdit(aggregation);\n }\n },\n [aggregations, onEdit]\n );\n\n const handleShowOnTopChange = useCallback(\n (value: string) => {\n changeShowOnTop(value === 'true');\n },\n [changeShowOnTop]\n );\n\n useEffect(\n function setDefaultOperation() {\n if (options.length > 0 && !options.includes(selectedOperation)) {\n setSelectedOperation(options[0]);\n }\n },\n [options, selectedOperation]\n );\n\n const renderAggregation = useCallback(\n ({\n item,\n itemIndex,\n isClone = false,\n selectedCount,\n }: DraggableRenderItemProps<Aggregation>) => {\n const text = item.operation;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : undefined;\n const isRollupOperation = AggregationUtils.isRollupOperation(\n item.operation\n );\n const isRollupProhibited = AggregationUtils.isRollupProhibited(\n item.operation\n );\n const isEditable = !isClone && !isRollupOperation;\n return (\n <>\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">\n {text}\n {!isRollup && isRollupOperation && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Requires rollup\n </span>\n )}\n {isRollup && isRollupProhibited && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Not available on\n rollups\n </span>\n )}\n </span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n {!isClone && (\n <>\n <Button\n kind=\"ghost\"\n className=\"btn-edit\"\n icon={vsEdit}\n tooltip=\"Edit Columns\"\n onClick={() => onEdit(item)}\n disabled={!isEditable}\n />\n <Button\n kind=\"ghost\"\n className=\"btn-delete\"\n icon={vsTrash}\n tooltip=\"Delete Aggregation\"\n onClick={() => handleDeleteClicked(itemIndex)}\n />\n </>\n )}\n </>\n );\n },\n [handleDeleteClicked, onEdit, isRollup]\n );\n\n const isOptionsShown = options.length > 0;\n const isAggregationsShown = aggregations.length > 0;\n\n return (\n <div className=\"aggregations\">\n {isOptionsShown && (\n <div className=\"form-inline\">\n <Select onChange={handleOperationChange} value={selectedOperation}>\n {options.map(option => (\n <Option value={option} key={option}>\n {option}\n </Option>\n ))}\n </Select>\n <button\n type=\"button\"\n className=\"btn btn-link btn-add\"\n onClick={handleAdd}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Aggregation\n </button>\n </div>\n )}\n {isOptionsShown && isAggregationsShown && <hr />}\n {isAggregationsShown && (\n <>\n {!isRollup && (\n <div>\n <label id=\"placement-options-label\">Placement: </label>\n <RadioGroup\n aria-labelledby=\"placement-options-label\"\n marginStart=\"size-125\"\n orientation=\"horizontal\"\n onChange={handleShowOnTopChange}\n value={`${showOnTop}`}\n >\n <Radio\n value=\"true\"\n isDisabled={!availablePlacements.includes('top')}\n >\n Top\n </Radio>\n <Radio\n value=\"false\"\n isDisabled={!availablePlacements.includes('bottom')}\n >\n Bottom\n </Radio>\n </RadioGroup>\n </div>\n )}\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <DraggableItemList<Aggregation>\n className=\"selected-aggregations\"\n itemCount={aggregations.length}\n items={aggregations}\n renderItem={renderAggregation}\n offset={0}\n onSelectionChange={handleAggregationSelectionChange}\n onSelect={handleAggregationSelect}\n selectedRanges={selectedRanges}\n isMultiSelect\n />\n </DragDropContext>\n </>\n )}\n </div>\n );\n}\n\nexport default Aggregations;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Aggregations.js","names":["React","useCallback","useEffect","useMemo","useState","DragDropContext","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","vsEdit","dhWarningFilled","Log","DraggableItemList","DragUtils","Option","Select","Radio","RadioGroup","Button","AggregationOperation","AggregationUtils","SELECTABLE_OPTIONS","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","Aggregations","_ref","isRollup","settings","availablePlacements","onChange","onEdit","dh","aggregations","showOnTop","options","filter","option","some","aggregation","operation","MEDIAN","undefined","selectedOperation","setSelectedOperation","selectedRanges","setSelectedRanges","changeSettings","changedSettings","added","arguments","length","removed","_objectSpread","changeAggregations","newAggregations","changeShowOnTop","newShowOnTop","handleDragStart","debug","startDragging","handleDragEnd","_ref2","destination","source","stopDragging","destinationIndex","index","draggedItems","reorder","insertIndex","adjustDestinationIndex","newSelectedRanges","handleOperationChange","handleAdd","selected","invert","handleDeleteClicked","itemIndex","keep","remove","reduce","_ref3","keepSoFar","removeSoFar","push","handleAggregationSelectionChange","handleAggregationSelect","isRollupOperation","handleShowOnTopChange","value","setDefaultOperation","includes","renderAggregation","_ref4","item","isClone","selectedCount","text","badgeText","concat","className","isRollupProhibited","isEditable","children","icon","renderBadge","renderHandle","kind","tooltip","onClick","disabled","isOptionsShown","isAggregationsShown","map","type","id","marginStart","orientation","isDisabled","onDragStart","onDragEnd","itemCount","items","renderItem","offset","onSelectionChange","onSelect","isMultiSelect"],"sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { DragDropContext, type DropResult } from '@hello-pangea/dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhNewCircleLargeFilled,\n vsTrash,\n vsEdit,\n dhWarningFilled,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n DraggableItemList,\n DragUtils,\n Option,\n Select,\n Radio,\n RadioGroup,\n Button,\n} from '@deephaven/components';\nimport type { DraggableRenderItemProps, Range } from '@deephaven/components';\nimport { type ModelIndex } from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport AggregationOperation from './AggregationOperation';\nimport AggregationUtils, { SELECTABLE_OPTIONS } from './AggregationUtils';\nimport './Aggregations.scss';\n\nconst log = Log.module('Aggregations');\n\nexport type Aggregation = {\n operation: AggregationOperation;\n selected: readonly string[];\n invert: boolean;\n};\n\nexport type AggregationSettings = {\n aggregations: readonly Aggregation[];\n showOnTop: boolean;\n};\n\nexport type AggregationsProps = {\n isRollup: boolean;\n availablePlacements?: ('top' | 'bottom')[];\n settings: AggregationSettings;\n onChange: (\n settings: AggregationSettings,\n added: AggregationOperation[],\n removed: AggregationOperation[]\n ) => void;\n onEdit: (aggregation: Aggregation) => void;\n dh: typeof DhType;\n};\n\nfunction Aggregations({\n isRollup,\n settings,\n availablePlacements = ['top', 'bottom'],\n onChange,\n onEdit,\n dh,\n}: AggregationsProps): JSX.Element {\n const { aggregations, showOnTop } = settings;\n const options = useMemo(\n () =>\n SELECTABLE_OPTIONS.filter(\n option =>\n !aggregations.some(aggregation => aggregation.operation === option) &&\n !(\n option === AggregationOperation.MEDIAN &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - MEDIAN is not defined in older version of Core\n dh.AggregationOperation.MEDIAN === undefined\n )\n ),\n [aggregations, dh]\n );\n const [selectedOperation, setSelectedOperation] = useState(options[0]);\n const [selectedRanges, setSelectedRanges] = useState<readonly Range[]>([]);\n const changeSettings = useCallback(\n (\n changedSettings: Partial<AggregationSettings>,\n added: AggregationOperation[] = [],\n removed: AggregationOperation[] = []\n ) => {\n onChange({ ...settings, ...changedSettings }, added, removed);\n },\n [onChange, settings]\n );\n const changeAggregations = useCallback(\n (\n newAggregations: readonly Aggregation[],\n added: AggregationOperation[] = [],\n removed: AggregationOperation[] = []\n ) => {\n changeSettings({ aggregations: newAggregations }, added, removed);\n },\n [changeSettings]\n );\n\n const changeShowOnTop = useCallback(\n (newShowOnTop: boolean) => {\n changeSettings({ showOnTop: newShowOnTop });\n },\n [changeSettings]\n );\n\n const handleDragStart = useCallback(() => {\n log.debug('handleDragStart');\n\n DragUtils.startDragging();\n }, []);\n\n const handleDragEnd = useCallback(\n ({ destination, source }: DropResult) => {\n log.debug('handleDragEnd', destination, source);\n\n DragUtils.stopDragging();\n\n if (destination == null) {\n return;\n }\n\n let destinationIndex = destination.index;\n if (source.index < destination.index) {\n destinationIndex += 1;\n }\n\n const newAggregations = [...aggregations];\n const draggedItems = DragUtils.reorder(\n newAggregations,\n selectedRanges,\n newAggregations,\n destinationIndex\n );\n const insertIndex = DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges\n );\n const newSelectedRanges: Range[] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n changeAggregations(newAggregations);\n setSelectedRanges(newSelectedRanges);\n },\n [changeAggregations, aggregations, selectedRanges, setSelectedRanges]\n );\n\n const handleOperationChange = useCallback(\n (operation: string) => {\n setSelectedOperation(operation as AggregationOperation);\n },\n [setSelectedOperation]\n );\n\n const handleAdd = useCallback(() => {\n changeAggregations(\n [\n ...aggregations,\n { operation: selectedOperation, selected: [], invert: true },\n ],\n [selectedOperation]\n );\n }, [aggregations, selectedOperation, changeAggregations]);\n\n const handleDeleteClicked = useCallback(\n (itemIndex: ModelIndex) => {\n const [keep, remove] = aggregations.reduce(\n ([keepSoFar, removeSoFar], aggregation, index) => {\n if (index === itemIndex) {\n removeSoFar.push(aggregation.operation);\n } else {\n keepSoFar.push(aggregation);\n }\n return [keepSoFar, removeSoFar];\n },\n [[], []] as [Aggregation[], AggregationOperation[]]\n );\n changeAggregations(keep, [], remove);\n },\n [aggregations, changeAggregations]\n );\n\n const handleAggregationSelectionChange = useCallback(\n (newSelectedRanges: readonly Range[]) => {\n setSelectedRanges(newSelectedRanges);\n },\n [setSelectedRanges]\n );\n\n const handleAggregationSelect = useCallback(\n (itemIndex: number) => {\n const aggregation = aggregations[itemIndex];\n if (!AggregationUtils.isRollupOperation(aggregation.operation)) {\n onEdit(aggregation);\n }\n },\n [aggregations, onEdit]\n );\n\n const handleShowOnTopChange = useCallback(\n (value: string) => {\n changeShowOnTop(value === 'true');\n },\n [changeShowOnTop]\n );\n\n useEffect(\n function setDefaultOperation() {\n if (options.length > 0 && !options.includes(selectedOperation)) {\n setSelectedOperation(options[0]);\n }\n },\n [options, selectedOperation]\n );\n\n const renderAggregation = useCallback(\n ({\n item,\n itemIndex,\n isClone = false,\n selectedCount,\n }: DraggableRenderItemProps<Aggregation>) => {\n const text = item.operation;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : undefined;\n const isRollupOperation = AggregationUtils.isRollupOperation(\n item.operation\n );\n const isRollupProhibited = AggregationUtils.isRollupProhibited(\n item.operation\n );\n const isEditable = !isClone && !isRollupOperation;\n return (\n <>\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">\n {text}\n {!isRollup && isRollupOperation && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Requires rollup\n </span>\n )}\n {isRollup && isRollupProhibited && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Not available on\n rollups\n </span>\n )}\n </span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n {!isClone && (\n <>\n <Button\n kind=\"ghost\"\n className=\"btn-edit\"\n icon={vsEdit}\n tooltip=\"Edit Columns\"\n onClick={() => onEdit(item)}\n disabled={!isEditable}\n />\n <Button\n kind=\"ghost\"\n className=\"btn-delete\"\n icon={vsTrash}\n tooltip=\"Delete Aggregation\"\n onClick={() => handleDeleteClicked(itemIndex)}\n />\n </>\n )}\n </>\n );\n },\n [handleDeleteClicked, onEdit, isRollup]\n );\n\n const isOptionsShown = options.length > 0;\n const isAggregationsShown = aggregations.length > 0;\n\n return (\n <div className=\"aggregations\">\n {isOptionsShown && (\n <div className=\"form-inline\">\n <Select onChange={handleOperationChange} value={selectedOperation}>\n {options.map(option => (\n <Option value={option} key={option}>\n {option}\n </Option>\n ))}\n </Select>\n <button\n type=\"button\"\n className=\"btn btn-link btn-add\"\n onClick={handleAdd}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Aggregation\n </button>\n </div>\n )}\n {isOptionsShown && isAggregationsShown && <hr />}\n {isAggregationsShown && (\n <>\n {!isRollup && (\n <div>\n <label id=\"placement-options-label\">Placement: </label>\n <RadioGroup\n aria-labelledby=\"placement-options-label\"\n marginStart=\"size-125\"\n orientation=\"horizontal\"\n onChange={handleShowOnTopChange}\n value={`${showOnTop}`}\n >\n <Radio\n value=\"true\"\n isDisabled={!availablePlacements.includes('top')}\n >\n Top\n </Radio>\n <Radio\n value=\"false\"\n isDisabled={!availablePlacements.includes('bottom')}\n >\n Bottom\n </Radio>\n </RadioGroup>\n </div>\n )}\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <DraggableItemList<Aggregation>\n className=\"selected-aggregations\"\n itemCount={aggregations.length}\n items={aggregations}\n renderItem={renderAggregation}\n offset={0}\n onSelectionChange={handleAggregationSelectionChange}\n onSelect={handleAggregationSelect}\n selectedRanges={selectedRanges}\n isMultiSelect\n />\n </DragDropContext>\n </>\n )}\n </div>\n );\n}\n\nexport default Aggregations;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AACxE,SAASC,eAAe,QAAyB,mBAAmB;AACpE,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SACEC,sBAAsB,EACtBC,OAAO,EACPC,MAAM,EACNC,eAAe,QACV,kBAAkB;AACzB,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SACEC,iBAAiB,EACjBC,SAAS,EACTC,MAAM,EACNC,MAAM,EACNC,KAAK,EACLC,UAAU,EACVC,MAAM,QACD,uBAAuB;AAAC,OAIxBC,oBAAoB;AAAA,OACpBC,gBAAgB,IAAIC,kBAAkB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAG7C,IAAMC,GAAG,GAAGjB,GAAG,CAACkB,MAAM,CAAC,cAAc,CAAC;AA0BtC,SAASC,YAAYA,CAAAC,IAAA,EAOc;EAAA,IAPb;IACpBC,QAAQ;IACRC,QAAQ;IACRC,mBAAmB,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;IACvCC,QAAQ;IACRC,MAAM;IACNC;EACiB,CAAC,GAAAN,IAAA;EAClB,IAAM;IAAEO,YAAY;IAAEC;EAAU,CAAC,GAAGN,QAAQ;EAC5C,IAAMO,OAAO,GAAGtC,OAAO,CACrB,MACEmB,kBAAkB,CAACoB,MAAM,CACvBC,MAAM,IACJ,CAACJ,YAAY,CAACK,IAAI,CAACC,WAAW,IAAIA,WAAW,CAACC,SAAS,KAAKH,MAAM,CAAC,IACnE,EACEA,MAAM,KAAKvB,oBAAoB,CAAC2B,MAAM;EACtC;EACA;EACAT,EAAE,CAAClB,oBAAoB,CAAC2B,MAAM,KAAKC,SAAS,CAElD,CAAC,EACH,CAACT,YAAY,EAAED,EAAE,CACnB,CAAC;EACD,IAAM,CAACW,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG9C,QAAQ,CAACqC,OAAO,CAAC,CAAC,CAAC,CAAC;EACtE,IAAM,CAACU,cAAc,EAAEC,iBAAiB,CAAC,GAAGhD,QAAQ,CAAmB,EAAE,CAAC;EAC1E,IAAMiD,cAAc,GAAGpD,WAAW,CAChC,UACEqD,eAA6C,EAG1C;IAAA,IAFHC,KAA6B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAR,SAAA,GAAAQ,SAAA,MAAG,EAAE;IAAA,IAClCE,OAA+B,GAAAF,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAR,SAAA,GAAAQ,SAAA,MAAG,EAAE;IAEpCpB,QAAQ,CAAAuB,aAAA,CAAAA,aAAA,KAAMzB,QAAQ,GAAKoB,eAAe,GAAIC,KAAK,EAAEG,OAAO,CAAC;EAC/D,CAAC,EACD,CAACtB,QAAQ,EAAEF,QAAQ,CACrB,CAAC;EACD,IAAM0B,kBAAkB,GAAG3D,WAAW,CACpC,UACE4D,eAAuC,EAGpC;IAAA,IAFHN,KAA6B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAR,SAAA,GAAAQ,SAAA,MAAG,EAAE;IAAA,IAClCE,OAA+B,GAAAF,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAR,SAAA,GAAAQ,SAAA,MAAG,EAAE;IAEpCH,cAAc,CAAC;MAAEd,YAAY,EAAEsB;IAAgB,CAAC,EAAEN,KAAK,EAAEG,OAAO,CAAC;EACnE,CAAC,EACD,CAACL,cAAc,CACjB,CAAC;EAED,IAAMS,eAAe,GAAG7D,WAAW,CAChC8D,YAAqB,IAAK;IACzBV,cAAc,CAAC;MAAEb,SAAS,EAAEuB;IAAa,CAAC,CAAC;EAC7C,CAAC,EACD,CAACV,cAAc,CACjB,CAAC;EAED,IAAMW,eAAe,GAAG/D,WAAW,CAAC,MAAM;IACxC4B,GAAG,CAACoC,KAAK,CAAC,iBAAiB,CAAC;IAE5BnD,SAAS,CAACoD,aAAa,CAAC,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,aAAa,GAAGlE,WAAW,CAC/BmE,KAAA,IAAyC;IAAA,IAAxC;MAAEC,WAAW;MAAEC;IAAmB,CAAC,GAAAF,KAAA;IAClCvC,GAAG,CAACoC,KAAK,CAAC,eAAe,EAAEI,WAAW,EAAEC,MAAM,CAAC;IAE/CxD,SAAS,CAACyD,YAAY,CAAC,CAAC;IAExB,IAAIF,WAAW,IAAI,IAAI,EAAE;MACvB;IACF;IAEA,IAAIG,gBAAgB,GAAGH,WAAW,CAACI,KAAK;IACxC,IAAIH,MAAM,CAACG,KAAK,GAAGJ,WAAW,CAACI,KAAK,EAAE;MACpCD,gBAAgB,IAAI,CAAC;IACvB;IAEA,IAAMX,eAAe,GAAG,CAAC,GAAGtB,YAAY,CAAC;IACzC,IAAMmC,YAAY,GAAG5D,SAAS,CAAC6D,OAAO,CACpCd,eAAe,EACfV,cAAc,EACdU,eAAe,EACfW,gBACF,CAAC;IACD,IAAMI,WAAW,GAAG9D,SAAS,CAAC+D,sBAAsB,CAClDL,gBAAgB,EAChBrB,cACF,CAAC;IACD,IAAM2B,iBAA0B,GAAG,CACjC,CAACF,WAAW,EAAEA,WAAW,GAAGF,YAAY,CAACjB,MAAM,GAAG,CAAC,CAAC,CACrD;IACDG,kBAAkB,CAACC,eAAe,CAAC;IACnCT,iBAAiB,CAAC0B,iBAAiB,CAAC;EACtC,CAAC,EACD,CAAClB,kBAAkB,EAAErB,YAAY,EAAEY,cAAc,EAAEC,iBAAiB,CACtE,CAAC;EAED,IAAM2B,qBAAqB,GAAG9E,WAAW,CACtC6C,SAAiB,IAAK;IACrBI,oBAAoB,CAACJ,SAAiC,CAAC;EACzD,CAAC,EACD,CAACI,oBAAoB,CACvB,CAAC;EAED,IAAM8B,SAAS,GAAG/E,WAAW,CAAC,MAAM;IAClC2D,kBAAkB,CAChB,CACE,GAAGrB,YAAY,EACf;MAAEO,SAAS,EAAEG,iBAAiB;MAAEgC,QAAQ,EAAE,EAAE;MAAEC,MAAM,EAAE;IAAK,CAAC,CAC7D,EACD,CAACjC,iBAAiB,CACpB,CAAC;EACH,CAAC,EAAE,CAACV,YAAY,EAAEU,iBAAiB,EAAEW,kBAAkB,CAAC,CAAC;EAEzD,IAAMuB,mBAAmB,GAAGlF,WAAW,CACpCmF,SAAqB,IAAK;IACzB,IAAM,CAACC,IAAI,EAAEC,MAAM,CAAC,GAAG/C,YAAY,CAACgD,MAAM,CACxC,CAAAC,KAAA,EAA2B3C,WAAW,EAAE4B,KAAK,KAAK;MAAA,IAAjD,CAACgB,SAAS,EAAEC,WAAW,CAAC,GAAAF,KAAA;MACvB,IAAIf,KAAK,KAAKW,SAAS,EAAE;QACvBM,WAAW,CAACC,IAAI,CAAC9C,WAAW,CAACC,SAAS,CAAC;MACzC,CAAC,MAAM;QACL2C,SAAS,CAACE,IAAI,CAAC9C,WAAW,CAAC;MAC7B;MACA,OAAO,CAAC4C,SAAS,EAAEC,WAAW,CAAC;IACjC,CAAC,EACD,CAAC,EAAE,EAAE,EAAE,CACT,CAAC;IACD9B,kBAAkB,CAACyB,IAAI,EAAE,EAAE,EAAEC,MAAM,CAAC;EACtC,CAAC,EACD,CAAC/C,YAAY,EAAEqB,kBAAkB,CACnC,CAAC;EAED,IAAMgC,gCAAgC,GAAG3F,WAAW,CACjD6E,iBAAmC,IAAK;IACvC1B,iBAAiB,CAAC0B,iBAAiB,CAAC;EACtC,CAAC,EACD,CAAC1B,iBAAiB,CACpB,CAAC;EAED,IAAMyC,uBAAuB,GAAG5F,WAAW,CACxCmF,SAAiB,IAAK;IACrB,IAAMvC,WAAW,GAAGN,YAAY,CAAC6C,SAAS,CAAC;IAC3C,IAAI,CAAC/D,gBAAgB,CAACyE,iBAAiB,CAACjD,WAAW,CAACC,SAAS,CAAC,EAAE;MAC9DT,MAAM,CAACQ,WAAW,CAAC;IACrB;EACF,CAAC,EACD,CAACN,YAAY,EAAEF,MAAM,CACvB,CAAC;EAED,IAAM0D,qBAAqB,GAAG9F,WAAW,CACtC+F,KAAa,IAAK;IACjBlC,eAAe,CAACkC,KAAK,KAAK,MAAM,CAAC;EACnC,CAAC,EACD,CAAClC,eAAe,CAClB,CAAC;EAED5D,SAAS,CACP,SAAS+F,mBAAmBA,CAAA,EAAG;IAC7B,IAAIxD,OAAO,CAACgB,MAAM,GAAG,CAAC,IAAI,CAAChB,OAAO,CAACyD,QAAQ,CAACjD,iBAAiB,CAAC,EAAE;MAC9DC,oBAAoB,CAACT,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC;EACF,CAAC,EACD,CAACA,OAAO,EAAEQ,iBAAiB,CAC7B,CAAC;EAED,IAAMkD,iBAAiB,GAAGlG,WAAW,CACnCmG,KAAA,IAK6C;IAAA,IAL5C;MACCC,IAAI;MACJjB,SAAS;MACTkB,OAAO,GAAG,KAAK;MACfC;IACqC,CAAC,GAAAH,KAAA;IACtC,IAAMI,IAAI,GAAGH,IAAI,CAACvD,SAAS;IAC3B,IAAM2D,SAAS,GAAGH,OAAO,MAAAI,MAAA,CAAMH,aAAa,IAAKvD,SAAS;IAC1D,IAAM2D,SAAS,GAAGL,OAAO,GAAG,sBAAsB,GAAGtD,SAAS;IAC9D,IAAM8C,iBAAiB,GAAGzE,gBAAgB,CAACyE,iBAAiB,CAC1DO,IAAI,CAACvD,SACP,CAAC;IACD,IAAM8D,kBAAkB,GAAGvF,gBAAgB,CAACuF,kBAAkB,CAC5DP,IAAI,CAACvD,SACP,CAAC;IACD,IAAM+D,UAAU,GAAG,CAACP,OAAO,IAAI,CAACR,iBAAiB;IACjD,oBACEpE,KAAA,CAAAE,SAAA;MAAAkF,QAAA,gBACEpF,KAAA;QACEiF,SAAS,EAAErG,UAAU,CACnB,wBAAwB,EACxB,kCAAkC,EAClCqG,SACF,CAAE;QAAAG,QAAA,gBAEFpF,KAAA;UAAMiF,SAAS,EAAC,OAAO;UAAAG,QAAA,GACpBN,IAAI,EACJ,CAACvE,QAAQ,IAAI6D,iBAAiB,iBAC7BpE,KAAA;YAAMiF,SAAS,EAAC,oBAAoB;YAAAG,QAAA,gBAClCtF,IAAA,CAACjB,eAAe;cAACwG,IAAI,EAAEpG;YAAgB,CAAE,CAAC,oBAC5C;UAAA,CAAM,CACP,EACAsB,QAAQ,IAAI2E,kBAAkB,iBAC7BlF,KAAA;YAAMiF,SAAS,EAAC,oBAAoB;YAAAG,QAAA,gBAClCtF,IAAA,CAACjB,eAAe;cAACwG,IAAI,EAAEpG;YAAgB,CAAE,CAAC,6BAE5C;UAAA,CAAM,CACP;QAAA,CACG,CAAC,EACNE,iBAAiB,CAACmG,WAAW,CAAC;UAAER,IAAI,EAAEC;QAAU,CAAC,CAAC,EAClD5F,iBAAiB,CAACoG,YAAY,CAAC,CAAC;MAAA,CAC9B,CAAC,EACL,CAACX,OAAO,iBACP5E,KAAA,CAAAE,SAAA;QAAAkF,QAAA,gBACEtF,IAAA,CAACL,MAAM;UACL+F,IAAI,EAAC,OAAO;UACZP,SAAS,EAAC,UAAU;UACpBI,IAAI,EAAErG,MAAO;UACbyG,OAAO,EAAC,cAAc;UACtBC,OAAO,EAAEA,CAAA,KAAM/E,MAAM,CAACgE,IAAI,CAAE;UAC5BgB,QAAQ,EAAE,CAACR;QAAW,CACvB,CAAC,eACFrF,IAAA,CAACL,MAAM;UACL+F,IAAI,EAAC,OAAO;UACZP,SAAS,EAAC,YAAY;UACtBI,IAAI,EAAEtG,OAAQ;UACd0G,OAAO,EAAC,oBAAoB;UAC5BC,OAAO,EAAEA,CAAA,KAAMjC,mBAAmB,CAACC,SAAS;QAAE,CAC/C,CAAC;MAAA,CACF,CACH;IAAA,CACD,CAAC;EAEP,CAAC,EACD,CAACD,mBAAmB,EAAE9C,MAAM,EAAEJ,QAAQ,CACxC,CAAC;EAED,IAAMqF,cAAc,GAAG7E,OAAO,CAACgB,MAAM,GAAG,CAAC;EACzC,IAAM8D,mBAAmB,GAAGhF,YAAY,CAACkB,MAAM,GAAG,CAAC;EAEnD,oBACE/B,KAAA;IAAKiF,SAAS,EAAC,cAAc;IAAAG,QAAA,GAC1BQ,cAAc,iBACb5F,KAAA;MAAKiF,SAAS,EAAC,aAAa;MAAAG,QAAA,gBAC1BtF,IAAA,CAACR,MAAM;QAACoB,QAAQ,EAAE2C,qBAAsB;QAACiB,KAAK,EAAE/C,iBAAkB;QAAA6D,QAAA,EAC/DrE,OAAO,CAAC+E,GAAG,CAAC7E,MAAM,iBACjBnB,IAAA,CAACT,MAAM;UAACiF,KAAK,EAAErD,MAAO;UAAAmE,QAAA,EACnBnE;QAAM,GADmBA,MAEpB,CACT;MAAC,CACI,CAAC,eACTjB,KAAA;QACE+F,IAAI,EAAC,QAAQ;QACbd,SAAS,EAAC,sBAAsB;QAChCS,OAAO,EAAEpC,SAAU;QAAA8B,QAAA,gBAEnBtF,IAAA,CAACjB,eAAe;UAACwG,IAAI,EAAEvG;QAAuB,CAAE,CAAC,mBAEnD;MAAA,CAAQ,CAAC;IAAA,CACN,CACN,EACA8G,cAAc,IAAIC,mBAAmB,iBAAI/F,IAAA,SAAK,CAAC,EAC/C+F,mBAAmB,iBAClB7F,KAAA,CAAAE,SAAA;MAAAkF,QAAA,GACG,CAAC7E,QAAQ,iBACRP,KAAA;QAAAoF,QAAA,gBACEtF,IAAA;UAAOkG,EAAE,EAAC,yBAAyB;UAAAZ,QAAA,EAAC;QAAgB,CAAO,CAAC,eAC5DpF,KAAA,CAACR,UAAU;UACT,mBAAgB,yBAAyB;UACzCyG,WAAW,EAAC,UAAU;UACtBC,WAAW,EAAC,YAAY;UACxBxF,QAAQ,EAAE2D,qBAAsB;UAChCC,KAAK,KAAAU,MAAA,CAAKlE,SAAS,CAAG;UAAAsE,QAAA,gBAEtBtF,IAAA,CAACP,KAAK;YACJ+E,KAAK,EAAC,MAAM;YACZ6B,UAAU,EAAE,CAAC1F,mBAAmB,CAAC+D,QAAQ,CAAC,KAAK,CAAE;YAAAY,QAAA,EAClD;UAED,CAAO,CAAC,eACRtF,IAAA,CAACP,KAAK;YACJ+E,KAAK,EAAC,OAAO;YACb6B,UAAU,EAAE,CAAC1F,mBAAmB,CAAC+D,QAAQ,CAAC,QAAQ,CAAE;YAAAY,QAAA,EACrD;UAED,CAAO,CAAC;QAAA,CACE,CAAC;MAAA,CACV,CACN,eACDtF,IAAA,CAACnB,eAAe;QACdyH,WAAW,EAAE9D,eAAgB;QAC7B+D,SAAS,EAAE5D,aAAc;QAAA2C,QAAA,eAEzBtF,IAAA,CAACX,iBAAiB;UAChB8F,SAAS,EAAC,uBAAuB;UACjCqB,SAAS,EAAEzF,YAAY,CAACkB,MAAO;UAC/BwE,KAAK,EAAE1F,YAAa;UACpB2F,UAAU,EAAE/B,iBAAkB;UAC9BgC,MAAM,EAAE,CAAE;UACVC,iBAAiB,EAAExC,gCAAiC;UACpDyC,QAAQ,EAAExC,uBAAwB;UAClC1C,cAAc,EAAEA,cAAe;UAC/BmF,aAAa;QAAA,CACd;MAAC,CACa,CAAC;IAAA,CAClB,CACH;EAAA,CACE,CAAC;AAEV;AAEA,eAAevG,YAAY","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
4
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
6
|
import React, { useCallback } from 'react';
|
|
7
|
-
import { DragDropContext, Draggable, Droppable } from '
|
|
7
|
+
import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd';
|
|
8
8
|
import classNames from 'classnames';
|
|
9
9
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
10
10
|
import { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormattingMenu.js","names":["React","useCallback","DragDropContext","Draggable","Droppable","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsGripper","vsTrash","Button","DragUtils","Tooltip","TableUtils","Log","FormatterType","getBackgroundForStyleConfig","getColorForStyleConfig","getShortLabelForConditionType","NumberCondition","StringCondition","DateCondition","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_CALLBACK","undefined","getRuleValue","config","column","type","isNumberType","condition","IS_NULL","IS_NOT_NULL","concat","value","isCharType","isStringType","isDateType","isBooleanType","Error","getRuleTitle","IS_BETWEEN","start","name","end","ConditionalFormattingMenu","props","rules","onChange","onCreate","onSelect","handleRuleClick","e","rule","index","stopPropagation","debug","handleDeleteClick","updatedRules","splice","handleDragHandlerClick","handleDragEnd","result","stopDragging","destination","sourceIndex","source","destinationIndex","sourceInput","className","children","onDragStart","startDragging","onDragEnd","droppableId","provided","snapshot","_objectSpread","ref","innerRef","droppableProps","dragging","draggingFromThisWith","length","map","draggableId","disableInteractiveElementBlocking","role","tabIndex","onClick","isDragging","draggableProps","style","backgroundColor","color","ROWS","kind","icon","tooltip","dragHandleProps","placeholder"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n type DropResult,\n} from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport './ConditionalFormattingMenu.scss';\nimport {\n type BaseFormatConfig,\n type FormattingRule,\n FormatterType,\n getBackgroundForStyleConfig,\n getColorForStyleConfig,\n getShortLabelForConditionType,\n NumberCondition,\n StringCondition,\n DateCondition,\n} from './ConditionalFormattingUtils';\nimport { type ColumnName } from '../../CommonTypes';\n\nconst log = Log.module('ConditionalFormattingMenu');\n\nexport type ChangeCallback = (rules: readonly FormattingRule[]) => void;\n\nexport type SelectCallback = (index: number) => void;\n\nexport type CreateCallback = () => void;\n\nexport type ConditionalFormattingMenuProps = {\n rules: readonly FormattingRule[];\n selectedColumn?: ColumnName;\n onChange?: ChangeCallback;\n onCreate?: CreateCallback;\n onSelect?: SelectCallback;\n};\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nfunction getRuleValue(config: BaseFormatConfig): string {\n const {\n column: { type },\n } = config;\n if (TableUtils.isNumberType(type)) {\n return config.condition === NumberCondition.IS_NULL ||\n config.condition === NumberCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isCharType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isStringType(type)) {\n return config.condition === StringCondition.IS_NULL ||\n config.condition === StringCondition.IS_NOT_NULL\n ? ''\n : `\"${config.value}\"`;\n }\n if (TableUtils.isDateType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isBooleanType(type)) {\n return '';\n }\n throw new Error(`Invalid column type ${type} in getRuleValue`);\n}\n\nfunction getRuleTitle(config: BaseFormatConfig): string {\n if (\n TableUtils.isNumberType(config.column.type) &&\n config.condition === NumberCondition.IS_BETWEEN\n ) {\n return `${config.start} < ${config.column.name} < ${config.end}`;\n }\n return `${config.column.name} ${getShortLabelForConditionType(\n (config as BaseFormatConfig).column.type,\n (config as BaseFormatConfig).condition\n )} \n ${getRuleValue(config as BaseFormatConfig)}`;\n}\n\nfunction ConditionalFormattingMenu(\n props: ConditionalFormattingMenuProps\n): JSX.Element {\n const {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK,\n } = props;\n\n const handleRuleClick = useCallback(\n (e: React.MouseEvent, rule: FormattingRule, index: number) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n },\n [onSelect]\n );\n\n const handleDeleteClick = useCallback(\n (e: React.MouseEvent, rule: FormattingRule, index: number) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n const updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n const handleDragHandlerClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleDragEnd = useCallback(\n (result: DropResult) => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const updatedRules = [...rules];\n const sourceInput = rules[sourceIndex];\n\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n // Display list of rules\n return (\n <div className=\"conditional-formatting-rules\">\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {rules.length === 0 && (\n <div className=\"text-muted pl-2\">No formats defined</div>\n )}\n {rules.map((rule, index) => (\n <Draggable\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}-${rule.type}`}\n draggableId={`${index}-${rule.type}`}\n index={index}\n disableInteractiveElementBlocking\n >\n {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => (\n <div\n role=\"menuitem\"\n tabIndex={0}\n onClick={e => handleRuleClick(e, rule, index)}\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"conditional-formatting-list-item\">\n <div className=\"formatting-item\">\n <div className=\"rule-icon\">\n <span\n className=\"rule-icon-bg\"\n style={{\n backgroundColor: getBackgroundForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n color: getColorForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n }}\n >\n {rule.type === FormatterType.ROWS\n ? 'row'\n : 'col'}\n </span>\n </div>\n <div className=\"rule-title\">\n {getRuleTitle(rule.config as BaseFormatConfig)}\n </div>\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={e => handleDeleteClick(e, rule, index)}\n icon={vsTrash}\n tooltip=\"Delete rule\"\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n onClick={handleDragHandlerClick}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n </div>\n </div>\n )\n }\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n <hr />\n <Button kind=\"ghost\" onClick={onCreate} icon={dhNewCircleLargeFilled}>\n Add New Rule\n </Button>\n </div>\n );\n}\n\nexport default ConditionalFormattingMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ConditionalFormattingMenu.js","names":["React","useCallback","DragDropContext","Draggable","Droppable","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsGripper","vsTrash","Button","DragUtils","Tooltip","TableUtils","Log","FormatterType","getBackgroundForStyleConfig","getColorForStyleConfig","getShortLabelForConditionType","NumberCondition","StringCondition","DateCondition","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_CALLBACK","undefined","getRuleValue","config","column","type","isNumberType","condition","IS_NULL","IS_NOT_NULL","concat","value","isCharType","isStringType","isDateType","isBooleanType","Error","getRuleTitle","IS_BETWEEN","start","name","end","ConditionalFormattingMenu","props","rules","onChange","onCreate","onSelect","handleRuleClick","e","rule","index","stopPropagation","debug","handleDeleteClick","updatedRules","splice","handleDragHandlerClick","handleDragEnd","result","stopDragging","destination","sourceIndex","source","destinationIndex","sourceInput","className","children","onDragStart","startDragging","onDragEnd","droppableId","provided","snapshot","_objectSpread","ref","innerRef","droppableProps","dragging","draggingFromThisWith","length","map","draggableId","disableInteractiveElementBlocking","role","tabIndex","onClick","isDragging","draggableProps","style","backgroundColor","color","ROWS","kind","icon","tooltip","dragHandleProps","placeholder"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n type DropResult,\n} from '@hello-pangea/dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport './ConditionalFormattingMenu.scss';\nimport {\n type BaseFormatConfig,\n type FormattingRule,\n FormatterType,\n getBackgroundForStyleConfig,\n getColorForStyleConfig,\n getShortLabelForConditionType,\n NumberCondition,\n StringCondition,\n DateCondition,\n} from './ConditionalFormattingUtils';\nimport { type ColumnName } from '../../CommonTypes';\n\nconst log = Log.module('ConditionalFormattingMenu');\n\nexport type ChangeCallback = (rules: readonly FormattingRule[]) => void;\n\nexport type SelectCallback = (index: number) => void;\n\nexport type CreateCallback = () => void;\n\nexport type ConditionalFormattingMenuProps = {\n rules: readonly FormattingRule[];\n selectedColumn?: ColumnName;\n onChange?: ChangeCallback;\n onCreate?: CreateCallback;\n onSelect?: SelectCallback;\n};\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nfunction getRuleValue(config: BaseFormatConfig): string {\n const {\n column: { type },\n } = config;\n if (TableUtils.isNumberType(type)) {\n return config.condition === NumberCondition.IS_NULL ||\n config.condition === NumberCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isCharType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isStringType(type)) {\n return config.condition === StringCondition.IS_NULL ||\n config.condition === StringCondition.IS_NOT_NULL\n ? ''\n : `\"${config.value}\"`;\n }\n if (TableUtils.isDateType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isBooleanType(type)) {\n return '';\n }\n throw new Error(`Invalid column type ${type} in getRuleValue`);\n}\n\nfunction getRuleTitle(config: BaseFormatConfig): string {\n if (\n TableUtils.isNumberType(config.column.type) &&\n config.condition === NumberCondition.IS_BETWEEN\n ) {\n return `${config.start} < ${config.column.name} < ${config.end}`;\n }\n return `${config.column.name} ${getShortLabelForConditionType(\n (config as BaseFormatConfig).column.type,\n (config as BaseFormatConfig).condition\n )} \n ${getRuleValue(config as BaseFormatConfig)}`;\n}\n\nfunction ConditionalFormattingMenu(\n props: ConditionalFormattingMenuProps\n): JSX.Element {\n const {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK,\n } = props;\n\n const handleRuleClick = useCallback(\n (e: React.MouseEvent, rule: FormattingRule, index: number) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n },\n [onSelect]\n );\n\n const handleDeleteClick = useCallback(\n (e: React.MouseEvent, rule: FormattingRule, index: number) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n const updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n const handleDragHandlerClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleDragEnd = useCallback(\n (result: DropResult) => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const updatedRules = [...rules];\n const sourceInput = rules[sourceIndex];\n\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n // Display list of rules\n return (\n <div className=\"conditional-formatting-rules\">\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {rules.length === 0 && (\n <div className=\"text-muted pl-2\">No formats defined</div>\n )}\n {rules.map((rule, index) => (\n <Draggable\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}-${rule.type}`}\n draggableId={`${index}-${rule.type}`}\n index={index}\n disableInteractiveElementBlocking\n >\n {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => (\n <div\n role=\"menuitem\"\n tabIndex={0}\n onClick={e => handleRuleClick(e, rule, index)}\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"conditional-formatting-list-item\">\n <div className=\"formatting-item\">\n <div className=\"rule-icon\">\n <span\n className=\"rule-icon-bg\"\n style={{\n backgroundColor: getBackgroundForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n color: getColorForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n }}\n >\n {rule.type === FormatterType.ROWS\n ? 'row'\n : 'col'}\n </span>\n </div>\n <div className=\"rule-title\">\n {getRuleTitle(rule.config as BaseFormatConfig)}\n </div>\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={e => handleDeleteClick(e, rule, index)}\n icon={vsTrash}\n tooltip=\"Delete rule\"\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n onClick={handleDragHandlerClick}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n </div>\n </div>\n )\n }\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n <hr />\n <Button kind=\"ghost\" onClick={onCreate} icon={dhNewCircleLargeFilled}>\n Add New Rule\n </Button>\n </div>\n );\n}\n\nexport default ConditionalFormattingMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@ import React, { type ChangeEvent, PureComponent, type ReactElement } from 'react
|
|
|
2
2
|
import { type ModelIndex, type MoveOperation, type VisibleIndex } from '@deephaven/grid';
|
|
3
3
|
import type { dh } from '@deephaven/jsapi-types';
|
|
4
4
|
import memoize from 'memoizee';
|
|
5
|
+
import type { Key } from '@react-types/shared';
|
|
5
6
|
import './VisibilityOrderingBuilder.scss';
|
|
6
7
|
import { type DisplayColumn } from '../../IrisGridModel';
|
|
7
8
|
import type IrisGridModel from '../../IrisGridModel';
|
|
@@ -13,7 +14,7 @@ interface IndexRange {
|
|
|
13
14
|
prevIndex: number;
|
|
14
15
|
nextIndex: number;
|
|
15
16
|
}
|
|
16
|
-
interface VisibilityOrderingBuilderProps {
|
|
17
|
+
export interface VisibilityOrderingBuilderProps {
|
|
17
18
|
model: IrisGridModel;
|
|
18
19
|
movedColumns: readonly MoveOperation[];
|
|
19
20
|
hiddenColumns: readonly ModelIndex[];
|
|
@@ -21,17 +22,28 @@ interface VisibilityOrderingBuilderProps {
|
|
|
21
22
|
onColumnVisibilityChanged: (columns: readonly VisibleIndex[], isVisible: boolean) => void;
|
|
22
23
|
onReset: () => void;
|
|
23
24
|
onMovedColumnsChanged: (operations: readonly MoveOperation[], cb?: () => void) => void;
|
|
24
|
-
onColumnHeaderGroupChanged: (groups: readonly
|
|
25
|
+
onColumnHeaderGroupChanged: (groups: readonly ColumnHeaderGroup[]) => void;
|
|
26
|
+
onFrozenColumnsChanged: (columns: readonly ColumnName[]) => void;
|
|
27
|
+
__testRef?: React.Ref<VisibilityOrderingBuilderInner>;
|
|
25
28
|
}
|
|
26
|
-
interface
|
|
29
|
+
interface VisibilityOrderingBuilderInnerProps extends Omit<VisibilityOrderingBuilderProps, 'onFrozenColumnsChanged' | '__testRef'> {
|
|
30
|
+
undo: () => void;
|
|
31
|
+
redo: () => void;
|
|
32
|
+
canUndo: boolean;
|
|
33
|
+
canRedo: boolean;
|
|
34
|
+
startUndoGroup: () => void;
|
|
35
|
+
endUndoGroup: () => void;
|
|
36
|
+
}
|
|
37
|
+
interface VisibilityOrderingBuilderInnerState {
|
|
27
38
|
selectedColumns: Set<string>;
|
|
28
39
|
queriedColumnIndex: number | undefined;
|
|
29
40
|
queriedColumnRange: IndexRange | undefined;
|
|
30
41
|
prevQueriedColumns: Record<number, string> | undefined;
|
|
31
42
|
lastSelectedColumn: string;
|
|
32
43
|
searchFilter: string;
|
|
44
|
+
showHiddenColumns: boolean;
|
|
33
45
|
}
|
|
34
|
-
declare class
|
|
46
|
+
declare class VisibilityOrderingBuilderInner extends PureComponent<VisibilityOrderingBuilderInnerProps, VisibilityOrderingBuilderInnerState> {
|
|
35
47
|
static SORTING_OPTIONS: {
|
|
36
48
|
readonly DSC: "DSC";
|
|
37
49
|
readonly ASC: "ASC";
|
|
@@ -43,9 +55,12 @@ declare class VisibilityOrderingBuilder extends PureComponent<VisibilityOrdering
|
|
|
43
55
|
readonly DOWN: "DOWN";
|
|
44
56
|
};
|
|
45
57
|
static shouldRenderColumn(column: DisplayColumn): boolean;
|
|
46
|
-
constructor(props:
|
|
47
|
-
|
|
58
|
+
constructor(props: VisibilityOrderingBuilderInnerProps);
|
|
59
|
+
componentDidMount(): void;
|
|
60
|
+
componentDidUpdate(prevProps: VisibilityOrderingBuilderInnerProps): void;
|
|
48
61
|
componentWillUnmount(): void;
|
|
62
|
+
wrapperRef: React.RefObject<HTMLDivElement>;
|
|
63
|
+
lastFocusedItemIndex: number | null;
|
|
49
64
|
list: HTMLDivElement | null;
|
|
50
65
|
debouncedSearchColumns: import("lodash").DebouncedFunc<(searchFilter: string, updateQuery?: boolean) => void>;
|
|
51
66
|
resetVisibilityOrdering(): void;
|
|
@@ -99,7 +114,7 @@ declare class VisibilityOrderingBuilder extends PureComponent<VisibilityOrdering
|
|
|
99
114
|
* @returns A new copy of the movedColumns including moves required to perform the operation.
|
|
100
115
|
*
|
|
101
116
|
*/
|
|
102
|
-
moveSelectedColumns(option: keyof typeof
|
|
117
|
+
moveSelectedColumns(option: keyof typeof VisibilityOrderingBuilderInner.MOVE_OPTIONS): {
|
|
103
118
|
newMoves: MoveOperation[];
|
|
104
119
|
groups: readonly ColumnHeaderGroup[];
|
|
105
120
|
};
|
|
@@ -109,7 +124,7 @@ declare class VisibilityOrderingBuilder extends PureComponent<VisibilityOrdering
|
|
|
109
124
|
*
|
|
110
125
|
* @param option The move operation
|
|
111
126
|
*/
|
|
112
|
-
handleMoveColumns(option: keyof typeof
|
|
127
|
+
handleMoveColumns(option: keyof typeof VisibilityOrderingBuilderInner.MOVE_OPTIONS): void;
|
|
113
128
|
/**
|
|
114
129
|
* Get the move operations required to recursively sort the grid
|
|
115
130
|
* Column header groups are sorted using their name
|
|
@@ -122,8 +137,8 @@ declare class VisibilityOrderingBuilder extends PureComponent<VisibilityOrdering
|
|
|
122
137
|
* Also used to recursively sort header groups
|
|
123
138
|
* @returns The moves required to sort the grid. Includes the starting movedColumns in the array
|
|
124
139
|
*/
|
|
125
|
-
getSortMoves(itemsParam: readonly IrisGridTreeItem[], option: keyof typeof
|
|
126
|
-
handleSortColumns(option: keyof typeof
|
|
140
|
+
getSortMoves(itemsParam: readonly IrisGridTreeItem[], option: keyof typeof VisibilityOrderingBuilderInner.SORTING_OPTIONS, movedColumns: readonly MoveOperation[]): MoveOperation[];
|
|
141
|
+
handleSortColumns(option: keyof typeof VisibilityOrderingBuilderInner.SORTING_OPTIONS): void;
|
|
127
142
|
handleItemClick(name: string, event: React.MouseEvent<HTMLElement, MouseEvent>): void;
|
|
128
143
|
/**
|
|
129
144
|
* Adds columns or groups to the selected column set
|
|
@@ -167,7 +182,7 @@ declare class VisibilityOrderingBuilder extends PureComponent<VisibilityOrdering
|
|
|
167
182
|
* Gets the last movable visible index
|
|
168
183
|
*/
|
|
169
184
|
getLastMovableIndex(): number | null;
|
|
170
|
-
memoizedGetTreeItems: ((columns: readonly dh.Column[], movedColumns: readonly MoveOperation[], columnHeaderGroups: readonly ColumnHeaderGroup[], hiddenColumns: readonly ModelIndex[], selectedColumns: ReadonlySet<string
|
|
185
|
+
memoizedGetTreeItems: ((columns: readonly dh.Column[], movedColumns: readonly MoveOperation[], columnHeaderGroups: readonly ColumnHeaderGroup[], hiddenColumns: readonly ModelIndex[], selectedColumns: ReadonlySet<string>, showHiddenColumns: boolean) => readonly IrisGridTreeItem[]) & memoize.Memoized<(columns: readonly dh.Column[], movedColumns: readonly MoveOperation[], columnHeaderGroups: readonly ColumnHeaderGroup[], hiddenColumns: readonly ModelIndex[], selectedColumns: ReadonlySet<string>, showHiddenColumns: boolean) => readonly IrisGridTreeItem[]>;
|
|
171
186
|
/**
|
|
172
187
|
* Gets the tree of movable items in order. Memoized for efficiency
|
|
173
188
|
* Use flattenItems(this.getTreeItems()) if a flat list is needed
|
|
@@ -181,9 +196,12 @@ declare class VisibilityOrderingBuilder extends PureComponent<VisibilityOrdering
|
|
|
181
196
|
* @returns The array of items whose parents are not selected
|
|
182
197
|
*/
|
|
183
198
|
getSelectedParentItems(): FlattenedIrisGridTreeItem[];
|
|
184
|
-
makeVisibilityOrderingList: ((columns: readonly DisplayColumn[], treeItems: readonly IrisGridTreeItem[]) => import("react/jsx-runtime").JSX.Element[]) & memoize.Memoized<(columns: readonly DisplayColumn[], treeItems: readonly IrisGridTreeItem[]) => import("react/jsx-runtime").JSX.Element[]>;
|
|
199
|
+
makeVisibilityOrderingList: ((columns: readonly DisplayColumn[], treeItems: readonly IrisGridTreeItem[], showHiddenColumns: boolean) => import("react/jsx-runtime").JSX.Element[]) & memoize.Memoized<(columns: readonly DisplayColumn[], treeItems: readonly IrisGridTreeItem[], showHiddenColumns: boolean) => import("react/jsx-runtime").JSX.Element[]>;
|
|
185
200
|
renderImmovableItem: ((columnName: ColumnName) => ReactElement) & memoize.Memoized<(columnName: ColumnName) => ReactElement>;
|
|
201
|
+
handleOverflowAction(key: Key): void;
|
|
202
|
+
handleKeyboardShortcut(event: React.KeyboardEvent): void;
|
|
186
203
|
render(): ReactElement;
|
|
187
204
|
}
|
|
205
|
+
declare const VisibilityOrderingBuilder: React.MemoExoticComponent<(props: VisibilityOrderingBuilderProps) => import("react/jsx-runtime").JSX.Element>;
|
|
188
206
|
export default VisibilityOrderingBuilder;
|
|
189
207
|
//# sourceMappingURL=VisibilityOrderingBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibilityOrderingBuilder.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"VisibilityOrderingBuilder.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.tsx"],"names":[],"mappings":"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"}
|