@deephaven/iris-grid 0.49.2-beta.0 → 0.49.2-beta.5

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.
Files changed (63) hide show
  1. package/dist/AdvancedFilterCreator.css.map +1 -1
  2. package/dist/AdvancedFilterCreatorFilterItem.css.map +1 -1
  3. package/dist/AdvancedFilterCreatorSelectValue.css.map +1 -1
  4. package/dist/ColumnStatistics.css +4 -0
  5. package/dist/ColumnStatistics.css.map +1 -1
  6. package/dist/ColumnStatistics.js +1 -1
  7. package/dist/ColumnStatistics.js.map +1 -1
  8. package/dist/CrossColumnSearch.css.map +1 -1
  9. package/dist/FilterInputField.css +1 -0
  10. package/dist/FilterInputField.css.map +1 -1
  11. package/dist/GotoRow.css.map +1 -1
  12. package/dist/IrisGrid.css +1 -0
  13. package/dist/IrisGrid.css.map +1 -1
  14. package/dist/IrisGridBottomBar.css +2 -1
  15. package/dist/IrisGridBottomBar.css.map +1 -1
  16. package/dist/IrisGridCopyHandler.css.map +1 -1
  17. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  18. package/dist/IrisGridCopyHandler.js +3 -1
  19. package/dist/IrisGridCopyHandler.js.map +1 -1
  20. package/dist/IrisGridModel.d.ts +4 -2
  21. package/dist/IrisGridModel.d.ts.map +1 -1
  22. package/dist/IrisGridModel.js +3 -0
  23. package/dist/IrisGridModel.js.map +1 -1
  24. package/dist/IrisGridPartitionSelector.css.map +1 -1
  25. package/dist/IrisGridProxyModel.d.ts +2 -0
  26. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  27. package/dist/IrisGridProxyModel.js +6 -0
  28. package/dist/IrisGridProxyModel.js.map +1 -1
  29. package/dist/IrisGridTableModelTemplate.d.ts +4 -1
  30. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  31. package/dist/IrisGridTableModelTemplate.js +47 -0
  32. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  33. package/dist/IrisGridTheme.d.ts.map +1 -1
  34. package/dist/IrisGridTheme.js +2 -1
  35. package/dist/IrisGridTheme.js.map +1 -1
  36. package/dist/IrisGridTheme.module.css +1 -0
  37. package/dist/IrisGridTheme.module.css.map +1 -1
  38. package/dist/PartitionSelectorSearch.css.map +1 -1
  39. package/dist/PartitionSelectorSearch.js +3 -1
  40. package/dist/PartitionSelectorSearch.js.map +1 -1
  41. package/dist/PendingDataBottomBar.css.map +1 -1
  42. package/dist/PendingDataBottomBar.js +3 -1
  43. package/dist/PendingDataBottomBar.js.map +1 -1
  44. package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +1 -1
  45. package/dist/sidebar/ChartBuilder.css.map +1 -1
  46. package/dist/sidebar/CustomColumnBuilder.css.map +1 -1
  47. package/dist/sidebar/CustomColumnBuilder.js +3 -1
  48. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  49. package/dist/sidebar/InputEditor.css.map +1 -1
  50. package/dist/sidebar/RollupRows.css.map +1 -1
  51. package/dist/sidebar/SelectDistinctBuilder.css.map +1 -1
  52. package/dist/sidebar/TableCsvExporter.css.map +1 -1
  53. package/dist/sidebar/TableCsvExporter.js +3 -1
  54. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  55. package/dist/sidebar/aggregations/AggregationEdit.css.map +1 -1
  56. package/dist/sidebar/aggregations/Aggregations.css.map +1 -1
  57. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +1 -1
  58. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -1
  59. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -1
  60. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -1
  61. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +1 -1
  62. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -1
  63. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTheme.d.ts","sourceRoot":"","sources":["../src/IrisGridTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAG7E,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,SAAS,CAAC;IAChC,wBAAwB,EAAE,SAAS,CAAC;IACpC,2BAA2B,EAAE,SAAS,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,gBAAgB,EAAE,SAAS,CAAC;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,SAAS,CAAC;IAC/B,mBAAmB,EAAE,SAAS,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,cAAc,EAAE,SAAS,CAAC;IAC1B,yBAAyB,EAAE,SAAS,CAAC;IACrC,gCAAgC,EAAE,SAAS,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;IACtB,qBAAqB,EAAE,SAAS,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,SAAS,CAAC;IAC9B,oBAAoB,EAAE,SAAS,CAAC;IAChC,sCAAsC,EAAE,SAAS,CAAC;IAClD,gCAAgC,EAAE,SAAS,CAAC;IAC5C,uBAAuB,EAAE,SAAS,CAAC;IACnC,0CAA0C,EAAE,SAAS,CAAC;IACtD,mBAAmB,EAAE,SAAS,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,8BAA8B,EAAE,SAAS,CAAC;IAC1C,mBAAmB,EAAE,SAAS,CAAC;IAC/B,wBAAwB,EAAE,SAAS,CAAC;IACpC,oBAAoB,EAAE,iBAAiB,CAAC;CACzC,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAoGpC,CAAC;AAEH,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"IrisGridTheme.d.ts","sourceRoot":"","sources":["../src/IrisGridTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAG7E,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,SAAS,CAAC;IAChC,wBAAwB,EAAE,SAAS,CAAC;IACpC,2BAA2B,EAAE,SAAS,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,gBAAgB,EAAE,SAAS,CAAC;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,SAAS,CAAC;IAC/B,mBAAmB,EAAE,SAAS,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,cAAc,EAAE,SAAS,CAAC;IAC1B,yBAAyB,EAAE,SAAS,CAAC;IACrC,gCAAgC,EAAE,SAAS,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;IACtB,qBAAqB,EAAE,SAAS,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,SAAS,CAAC;IAC9B,oBAAoB,EAAE,SAAS,CAAC;IAChC,sCAAsC,EAAE,SAAS,CAAC;IAClD,gCAAgC,EAAE,SAAS,CAAC;IAC5C,uBAAuB,EAAE,SAAS,CAAC;IACnC,0CAA0C,EAAE,SAAS,CAAC;IACtD,mBAAmB,EAAE,SAAS,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,8BAA8B,EAAE,SAAS,CAAC;IAC1C,mBAAmB,EAAE,SAAS,CAAC;IAC/B,wBAAwB,EAAE,SAAS,CAAC;IACpC,oBAAoB,EAAE,iBAAiB,CAAC;CACzC,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAqGpC,CAAC;AAEH,eAAe,KAAK,CAAC"}
@@ -90,7 +90,8 @@ var theme = Object.freeze({
90
90
  overflowButtonHoverColor: IrisGridTheme['overflow-button-hover-color'],
91
91
  zeroLineColor: IrisGridTheme['zero-line-color'],
92
92
  positiveBarColor: IrisGridTheme['positive-bar-color'],
93
- negativeBarColor: IrisGridTheme['negative-bar-color']
93
+ negativeBarColor: IrisGridTheme['negative-bar-color'],
94
+ markerBarColor: IrisGridTheme['marker-bar-color']
94
95
  });
95
96
  export default theme;
96
97
  //# sourceMappingURL=IrisGridTheme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTheme.js","names":["IrisGridTheme","theme","Object","freeze","backgroundColor","white","black","font","headerBackgroundColor","headerColor","headerSeparatorColor","headerSeparatorHoverColor","headerHiddenSeparatorHoverColor","headerSortBarColor","headerReverseBarColor","headerBarCasingColor","headerFont","rowBackgroundColors","rowHoverBackgroundColor","selectionColor","selectionOutlineColor","selectionOutlineCasingColor","selectedRowHoverBackgroundColor","scrollBarBackgroundColor","scrollBarHoverBackgroundColor","scrollBarCasingColor","scrollBarCornerColor","scrollBarColor","scrollBarHoverColor","scrollBarActiveColor","scrollBarSelectionTickColor","scrollBarActiveSelectionTickColor","textColor","hyperlinkColor","positiveNumberColor","negativeNumberColor","zeroNumberColor","dateColor","pendingTextColor","errorTextColor","nullStringColor","filterBarActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarExpandedActiveBackgroundColor","filterBarExpandedActiveCellBackgroundColor","filterBarSeparatorColor","filterBarActiveColor","filterBarErrorColor","filterIconColor","scrimColor","contextMenuSortIconColor","contextMenuReverseIconColor","allowRowResize","autoSelectRow","gridColumnColor","gridRowColor","groupedColumnDividerColor","columnHoverBackgroundColor","headerHorizontalPadding","scrollBarSize","scrollBarHoverSize","minScrollHandleSize","rowHeight","parseInt","columnWidth","rowHeaderWidth","rowFooterWidth","columnHeaderHeight","filterBarHeight","filterBarCollapsedHeight","sortHeaderBarHeight","reverseHeaderBarHeight","filterBarHorizontalPadding","scrimBlurSize","minScrimTransitionTime","maxScrimTransitionTime","scrollSnapToRow","linkerColumnHoverBackgroundColor","treeLineColor","treeMarkerColor","treeMarkerHoverColor","floatingGridColumnColor","floatingGridRowColor","floatingRowBackgroundColors","floatingDividerInnerColor","floatingDividerOuterColor","overflowButtonColor","overflowButtonHoverColor","zeroLineColor","positiveBarColor","negativeBarColor"],"sources":["../src/IrisGridTheme.ts"],"sourcesContent":["import type { GridThemeType } from '@deephaven/grid';\nimport { GridColor, NullableGridColor } from '@deephaven/grid/src/GridTheme';\nimport IrisGridTheme from './IrisGridTheme.module.scss';\n\nexport type IrisGridThemeType = GridThemeType & {\n filterBarCollapsedHeight: number;\n filterBarHeight: number;\n reverseHeaderBarHeight: number;\n filterIconColor: string;\n filterBarActiveColor: GridColor;\n contextMenuSortIconColor: GridColor;\n contextMenuReverseIconColor: GridColor;\n minScrimTransitionTime: number;\n maxScrimTransitionTime: number;\n nullStringColor: GridColor;\n pendingTextColor: GridColor;\n dateColor: GridColor;\n positiveNumberColor: GridColor;\n negativeNumberColor: GridColor;\n zeroNumberColor: GridColor;\n errorTextColor: GridColor;\n groupedColumnDividerColor: GridColor;\n linkerColumnHoverBackgroundColor: GridColor;\n scrimBlurSize: number;\n scrimColor: GridColor;\n headerReverseBarColor: GridColor;\n sortHeaderBarHeight: number;\n headerSortBarColor: GridColor;\n headerBarCasingColor: GridColor;\n filterBarExpandedActiveBackgroundColor: GridColor;\n filterBarExpandedBackgroundColor: GridColor;\n filterBarSeparatorColor: GridColor;\n filterBarExpandedActiveCellBackgroundColor: GridColor;\n filterBarErrorColor: GridColor;\n filterBarHorizontalPadding: number;\n filterBarActiveBackgroundColor: GridColor;\n overflowButtonColor: GridColor;\n overflowButtonHoverColor: GridColor;\n floatingGridRowColor: NullableGridColor;\n};\n\nconst theme: Partial<IrisGridThemeType> = Object.freeze({\n backgroundColor: IrisGridTheme['grid-bg'],\n white: IrisGridTheme.white,\n black: IrisGridTheme.black,\n font: IrisGridTheme.font,\n headerBackgroundColor: IrisGridTheme['header-bg'],\n headerColor: IrisGridTheme['header-color'],\n headerSeparatorColor: IrisGridTheme['header-separator-color'],\n headerSeparatorHoverColor: IrisGridTheme['header-separator-hover-color'],\n headerHiddenSeparatorHoverColor:\n IrisGridTheme['header-hidden-separator-hover-color'],\n headerSortBarColor: IrisGridTheme['header-sort-bar-color'],\n headerReverseBarColor: IrisGridTheme['header-reverse-bar-color'],\n headerBarCasingColor: IrisGridTheme['header-bar-casing-color'],\n headerFont: IrisGridTheme['header-font'],\n rowBackgroundColors: IrisGridTheme['row-background-colors'],\n rowHoverBackgroundColor: IrisGridTheme['row-hover-bg'],\n selectionColor: IrisGridTheme['selection-color'],\n selectionOutlineColor: IrisGridTheme['selection-outline-color'],\n selectionOutlineCasingColor: IrisGridTheme['selection-outline-casing-color'],\n selectedRowHoverBackgroundColor: IrisGridTheme['selected-row-hover-bg'],\n scrollBarBackgroundColor: IrisGridTheme['scroll-bar-bg'],\n scrollBarHoverBackgroundColor: IrisGridTheme['scroll-bar-hover-bg'],\n scrollBarCasingColor: IrisGridTheme['scroll-bar-casing-color'],\n scrollBarCornerColor: IrisGridTheme['scroll-bar-corner-color'],\n scrollBarColor: IrisGridTheme['scroll-bar-color'],\n scrollBarHoverColor: IrisGridTheme['scroll-bar-hover-color'],\n scrollBarActiveColor: IrisGridTheme['scroll-bar-active-color'],\n scrollBarSelectionTickColor: IrisGridTheme['selected-row-hover-bg'],\n scrollBarActiveSelectionTickColor:\n IrisGridTheme['scroll-bar-active-selection-tick-color'],\n textColor: IrisGridTheme['text-color'],\n hyperlinkColor: IrisGridTheme['hyperlink-color'],\n positiveNumberColor: IrisGridTheme['positive-number-color'],\n negativeNumberColor: IrisGridTheme['negative-number-color'],\n zeroNumberColor: IrisGridTheme['zero-number-color'],\n dateColor: IrisGridTheme['date-color'],\n pendingTextColor: IrisGridTheme['pending-text-color'],\n errorTextColor: IrisGridTheme['error-text-color'],\n nullStringColor: IrisGridTheme['null-string-color'],\n filterBarActiveBackgroundColor: IrisGridTheme['filter-bar-active-bg'],\n filterBarExpandedBackgroundColor: IrisGridTheme['filter-bar-expanded-bg'],\n filterBarExpandedActiveBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-bg'],\n filterBarExpandedActiveCellBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-cell-bg'],\n filterBarSeparatorColor: IrisGridTheme['filter-bar-separator-color'],\n filterBarActiveColor: IrisGridTheme['filter-bar-active-color'],\n filterBarErrorColor: IrisGridTheme['filter-bar-error-color'],\n filterIconColor: IrisGridTheme['filter-icon-color'],\n scrimColor: IrisGridTheme['scrim-color'],\n contextMenuSortIconColor: IrisGridTheme['context-menu-sort-icon-color'],\n contextMenuReverseIconColor: IrisGridTheme['context-menu-reverse-icon-color'],\n\n allowRowResize: false,\n autoSelectRow: true,\n gridColumnColor: null,\n gridRowColor: null,\n groupedColumnDividerColor: IrisGridTheme['grouped-column-divider-color'],\n columnHoverBackgroundColor: null,\n headerHorizontalPadding: 12,\n scrollBarSize: 13,\n scrollBarHoverSize: 16, // system default scrollbar width is 17\n minScrollHandleSize: 24,\n rowHeight: parseInt(IrisGridTheme['row-height'], 10) || 19, // IrisGrid test breaks without the fallback value\n columnWidth: 100,\n rowHeaderWidth: 0,\n rowFooterWidth: 60,\n columnHeaderHeight: parseInt(IrisGridTheme['header-height'], 10) || 30,\n filterBarHeight: 30, // includes 1px casing at bottom\n filterBarCollapsedHeight: 5, // includes 1px casing at bottom\n sortHeaderBarHeight: 2,\n reverseHeaderBarHeight: 4,\n filterBarHorizontalPadding: 4,\n\n // Amount of blur to apply to the bottom of the scrim while animating in\n scrimBlurSize: 25,\n minScrimTransitionTime: 150,\n maxScrimTransitionTime: 350,\n\n scrollSnapToRow: true,\n\n linkerColumnHoverBackgroundColor: IrisGridTheme['linker-column-hover-bg'],\n\n treeLineColor: IrisGridTheme['tree-line-color'],\n treeMarkerColor: IrisGridTheme['tree-marker-color'],\n treeMarkerHoverColor: IrisGridTheme['tree-marker-hover-color'],\n\n floatingGridColumnColor: null,\n floatingGridRowColor: IrisGridTheme['floating-grid-row-color'],\n floatingRowBackgroundColors: IrisGridTheme['floating-row-background-colors'],\n floatingDividerInnerColor: IrisGridTheme['floating-divider-inner-color'],\n floatingDividerOuterColor: IrisGridTheme['floating-divider-outer-color'],\n\n overflowButtonColor: IrisGridTheme['overflow-button-color'],\n overflowButtonHoverColor: IrisGridTheme['overflow-button-hover-color'],\n\n zeroLineColor: IrisGridTheme['zero-line-color'],\n positiveBarColor: IrisGridTheme['positive-bar-color'],\n negativeBarColor: IrisGridTheme['negative-bar-color'],\n});\n\nexport default theme;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridTheme.js","names":["IrisGridTheme","theme","Object","freeze","backgroundColor","white","black","font","headerBackgroundColor","headerColor","headerSeparatorColor","headerSeparatorHoverColor","headerHiddenSeparatorHoverColor","headerSortBarColor","headerReverseBarColor","headerBarCasingColor","headerFont","rowBackgroundColors","rowHoverBackgroundColor","selectionColor","selectionOutlineColor","selectionOutlineCasingColor","selectedRowHoverBackgroundColor","scrollBarBackgroundColor","scrollBarHoverBackgroundColor","scrollBarCasingColor","scrollBarCornerColor","scrollBarColor","scrollBarHoverColor","scrollBarActiveColor","scrollBarSelectionTickColor","scrollBarActiveSelectionTickColor","textColor","hyperlinkColor","positiveNumberColor","negativeNumberColor","zeroNumberColor","dateColor","pendingTextColor","errorTextColor","nullStringColor","filterBarActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarExpandedActiveBackgroundColor","filterBarExpandedActiveCellBackgroundColor","filterBarSeparatorColor","filterBarActiveColor","filterBarErrorColor","filterIconColor","scrimColor","contextMenuSortIconColor","contextMenuReverseIconColor","allowRowResize","autoSelectRow","gridColumnColor","gridRowColor","groupedColumnDividerColor","columnHoverBackgroundColor","headerHorizontalPadding","scrollBarSize","scrollBarHoverSize","minScrollHandleSize","rowHeight","parseInt","columnWidth","rowHeaderWidth","rowFooterWidth","columnHeaderHeight","filterBarHeight","filterBarCollapsedHeight","sortHeaderBarHeight","reverseHeaderBarHeight","filterBarHorizontalPadding","scrimBlurSize","minScrimTransitionTime","maxScrimTransitionTime","scrollSnapToRow","linkerColumnHoverBackgroundColor","treeLineColor","treeMarkerColor","treeMarkerHoverColor","floatingGridColumnColor","floatingGridRowColor","floatingRowBackgroundColors","floatingDividerInnerColor","floatingDividerOuterColor","overflowButtonColor","overflowButtonHoverColor","zeroLineColor","positiveBarColor","negativeBarColor","markerBarColor"],"sources":["../src/IrisGridTheme.ts"],"sourcesContent":["import type { GridThemeType } from '@deephaven/grid';\nimport { GridColor, NullableGridColor } from '@deephaven/grid/src/GridTheme';\nimport IrisGridTheme from './IrisGridTheme.module.scss';\n\nexport type IrisGridThemeType = GridThemeType & {\n filterBarCollapsedHeight: number;\n filterBarHeight: number;\n reverseHeaderBarHeight: number;\n filterIconColor: string;\n filterBarActiveColor: GridColor;\n contextMenuSortIconColor: GridColor;\n contextMenuReverseIconColor: GridColor;\n minScrimTransitionTime: number;\n maxScrimTransitionTime: number;\n nullStringColor: GridColor;\n pendingTextColor: GridColor;\n dateColor: GridColor;\n positiveNumberColor: GridColor;\n negativeNumberColor: GridColor;\n zeroNumberColor: GridColor;\n errorTextColor: GridColor;\n groupedColumnDividerColor: GridColor;\n linkerColumnHoverBackgroundColor: GridColor;\n scrimBlurSize: number;\n scrimColor: GridColor;\n headerReverseBarColor: GridColor;\n sortHeaderBarHeight: number;\n headerSortBarColor: GridColor;\n headerBarCasingColor: GridColor;\n filterBarExpandedActiveBackgroundColor: GridColor;\n filterBarExpandedBackgroundColor: GridColor;\n filterBarSeparatorColor: GridColor;\n filterBarExpandedActiveCellBackgroundColor: GridColor;\n filterBarErrorColor: GridColor;\n filterBarHorizontalPadding: number;\n filterBarActiveBackgroundColor: GridColor;\n overflowButtonColor: GridColor;\n overflowButtonHoverColor: GridColor;\n floatingGridRowColor: NullableGridColor;\n};\n\nconst theme: Partial<IrisGridThemeType> = Object.freeze({\n backgroundColor: IrisGridTheme['grid-bg'],\n white: IrisGridTheme.white,\n black: IrisGridTheme.black,\n font: IrisGridTheme.font,\n headerBackgroundColor: IrisGridTheme['header-bg'],\n headerColor: IrisGridTheme['header-color'],\n headerSeparatorColor: IrisGridTheme['header-separator-color'],\n headerSeparatorHoverColor: IrisGridTheme['header-separator-hover-color'],\n headerHiddenSeparatorHoverColor:\n IrisGridTheme['header-hidden-separator-hover-color'],\n headerSortBarColor: IrisGridTheme['header-sort-bar-color'],\n headerReverseBarColor: IrisGridTheme['header-reverse-bar-color'],\n headerBarCasingColor: IrisGridTheme['header-bar-casing-color'],\n headerFont: IrisGridTheme['header-font'],\n rowBackgroundColors: IrisGridTheme['row-background-colors'],\n rowHoverBackgroundColor: IrisGridTheme['row-hover-bg'],\n selectionColor: IrisGridTheme['selection-color'],\n selectionOutlineColor: IrisGridTheme['selection-outline-color'],\n selectionOutlineCasingColor: IrisGridTheme['selection-outline-casing-color'],\n selectedRowHoverBackgroundColor: IrisGridTheme['selected-row-hover-bg'],\n scrollBarBackgroundColor: IrisGridTheme['scroll-bar-bg'],\n scrollBarHoverBackgroundColor: IrisGridTheme['scroll-bar-hover-bg'],\n scrollBarCasingColor: IrisGridTheme['scroll-bar-casing-color'],\n scrollBarCornerColor: IrisGridTheme['scroll-bar-corner-color'],\n scrollBarColor: IrisGridTheme['scroll-bar-color'],\n scrollBarHoverColor: IrisGridTheme['scroll-bar-hover-color'],\n scrollBarActiveColor: IrisGridTheme['scroll-bar-active-color'],\n scrollBarSelectionTickColor: IrisGridTheme['selected-row-hover-bg'],\n scrollBarActiveSelectionTickColor:\n IrisGridTheme['scroll-bar-active-selection-tick-color'],\n textColor: IrisGridTheme['text-color'],\n hyperlinkColor: IrisGridTheme['hyperlink-color'],\n positiveNumberColor: IrisGridTheme['positive-number-color'],\n negativeNumberColor: IrisGridTheme['negative-number-color'],\n zeroNumberColor: IrisGridTheme['zero-number-color'],\n dateColor: IrisGridTheme['date-color'],\n pendingTextColor: IrisGridTheme['pending-text-color'],\n errorTextColor: IrisGridTheme['error-text-color'],\n nullStringColor: IrisGridTheme['null-string-color'],\n filterBarActiveBackgroundColor: IrisGridTheme['filter-bar-active-bg'],\n filterBarExpandedBackgroundColor: IrisGridTheme['filter-bar-expanded-bg'],\n filterBarExpandedActiveBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-bg'],\n filterBarExpandedActiveCellBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-cell-bg'],\n filterBarSeparatorColor: IrisGridTheme['filter-bar-separator-color'],\n filterBarActiveColor: IrisGridTheme['filter-bar-active-color'],\n filterBarErrorColor: IrisGridTheme['filter-bar-error-color'],\n filterIconColor: IrisGridTheme['filter-icon-color'],\n scrimColor: IrisGridTheme['scrim-color'],\n contextMenuSortIconColor: IrisGridTheme['context-menu-sort-icon-color'],\n contextMenuReverseIconColor: IrisGridTheme['context-menu-reverse-icon-color'],\n\n allowRowResize: false,\n autoSelectRow: true,\n gridColumnColor: null,\n gridRowColor: null,\n groupedColumnDividerColor: IrisGridTheme['grouped-column-divider-color'],\n columnHoverBackgroundColor: null,\n headerHorizontalPadding: 12,\n scrollBarSize: 13,\n scrollBarHoverSize: 16, // system default scrollbar width is 17\n minScrollHandleSize: 24,\n rowHeight: parseInt(IrisGridTheme['row-height'], 10) || 19, // IrisGrid test breaks without the fallback value\n columnWidth: 100,\n rowHeaderWidth: 0,\n rowFooterWidth: 60,\n columnHeaderHeight: parseInt(IrisGridTheme['header-height'], 10) || 30,\n filterBarHeight: 30, // includes 1px casing at bottom\n filterBarCollapsedHeight: 5, // includes 1px casing at bottom\n sortHeaderBarHeight: 2,\n reverseHeaderBarHeight: 4,\n filterBarHorizontalPadding: 4,\n\n // Amount of blur to apply to the bottom of the scrim while animating in\n scrimBlurSize: 25,\n minScrimTransitionTime: 150,\n maxScrimTransitionTime: 350,\n\n scrollSnapToRow: true,\n\n linkerColumnHoverBackgroundColor: IrisGridTheme['linker-column-hover-bg'],\n\n treeLineColor: IrisGridTheme['tree-line-color'],\n treeMarkerColor: IrisGridTheme['tree-marker-color'],\n treeMarkerHoverColor: IrisGridTheme['tree-marker-hover-color'],\n\n floatingGridColumnColor: null,\n floatingGridRowColor: IrisGridTheme['floating-grid-row-color'],\n floatingRowBackgroundColors: IrisGridTheme['floating-row-background-colors'],\n floatingDividerInnerColor: IrisGridTheme['floating-divider-inner-color'],\n floatingDividerOuterColor: IrisGridTheme['floating-divider-outer-color'],\n\n overflowButtonColor: IrisGridTheme['overflow-button-color'],\n overflowButtonHoverColor: IrisGridTheme['overflow-button-hover-color'],\n\n zeroLineColor: IrisGridTheme['zero-line-color'],\n positiveBarColor: IrisGridTheme['positive-bar-color'],\n negativeBarColor: IrisGridTheme['negative-bar-color'],\n markerBarColor: IrisGridTheme['marker-bar-color'],\n});\n\nexport default theme;\n"],"mappings":"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"}
@@ -64,6 +64,7 @@
64
64
  zero-line-color: #5b5a5c;
65
65
  positive-bar-color: #9edc6f;
66
66
  negative-bar-color: #f95d84;
67
+ marker-bar-color: #f0f0ee;
67
68
  }
68
69
 
69
70
  /*# sourceMappingURL=IrisGridTheme.module.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/IrisGridTheme.module.scss","../../../node_modules/@deephaven/components/scss/custom.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACAA;ADaA;EACE,SEaS;EFZT,MACE;EAEF,OELe;EFMf,OELe;EFMf,WETc;EFUd,cERe;EFSf,eAXc;EAYd,wBEIS;EFHT,8BEHS;EFIT,qCEbc;EFcd,uBElBO;EFmBP,0BEyCW;EFxCX,yBEDS;EFET,aACE;EAEF,YAzBW;EA0BX;EACA,iBA/BgB;EAgChB,yBE5BK;EF6BL,gCETS;EFUT,cA7Ba;EA8Bb;EACA;EAEA,eEfS;EFgBT,qBEjBS;EFkBT,yBEpBS;EFqBT,yBElBS;EFmBT,kBEvBS;EFwBT,wBEzBS;EF0BT,yBE3BS;EF6BT,YEpCe;EFqCf,iBEtCc;EFuCd,uBE7CM;EF8CN,uBEjDI;EFkDJ,mBEhDO;EFiDP,YEjDO;EFkDP;EACA,kBErDI;EFsDJ,mBEpCS;EFuCT;EAKA,yBErDc;EFsDd,wBEzCS;EF0CT;EAKA;EAKA,4BExDS;EFyDT,wBE3EI;EF4EJ,mBEnEc;EFqEd,aEtDS;EFuDT,8BE1EO;EF2EP,iCEfW;EFgBX;EACA,iBE/DS;EFgET,mBElES;EFmET,yBErES;EFsET,8BE1Ee;EF4Ef,yBEnES;EFoET,gCEnES;EFoET,8BEpES;EFqET,8BElES;EFoET,uBE3ES;EF4ET,6BE9ES;EFgFT,iBE5ES;EF6ET,oBE7FM;EF8FN,oBEjGI","file":"IrisGridTheme.module.css","sourcesContent":["/* stylelint-disable */\n@import '@deephaven/components/scss/custom.scss';\n\n$selection-color: rgba($blue, 0.09);\n$selection-outline-color: $blue;\n$selection-outline-casing-color: $gray-900;\n$font-size: 12px;\n$row-height: 19px;\n$row-hover-bg: mix($gray-600, $gray-700, 50%);\n$header-bg: $content-bg;\n$header-separator-color: $gray-900;\n$header-height: 30px;\n\n:export {\n grid-bg: $gray-900;\n font:\n $font-size Fira Sans,\n sans-serif; // must be preloaded\n white: $white;\n black: $black;\n header-bg: $header-bg;\n header-color: $foreground;\n header-height: $header-height;\n header-separator-color: $header-separator-color;\n header-separator-hover-color: $gray-400;\n header-hidden-separator-hover-color: $primary;\n header-sort-bar-color: $purple;\n header-reverse-bar-color: $green-dark;\n header-bar-casing-color: $gray-900;\n header-font:\n 600 $font-size Fira Sans,\n sans-serif; // must be preloaded\n row-height: $row-height;\n row-background-colors: $gray-800 $content-bg;\n selection-color: $selection-color;\n selection-outline-color: $selection-outline-color;\n selection-outline-casing-color: $selection-outline-casing-color;\n row-hover-bg: $row-hover-bg;\n selected-row-hover-bg: rgba($blue, 0.25);\n scroll-bar-active-selection-tick-color: rgba($blue, 0.5);\n\n scroll-bar-bg: $gray-850;\n scroll-bar-hover-bg: $gray-800;\n scroll-bar-casing-color: $gray-600;\n scroll-bar-corner-color: $gray-850;\n scroll-bar-color: $gray-500;\n scroll-bar-hover-color: $gray-400;\n scroll-bar-active-color: $gray-300;\n\n text-color: $white;\n hyperlink-color: $primary;\n positive-number-color: $green;\n negative-number-color: $red;\n zero-number-color: $yellow;\n date-color: $yellow;\n pending-text-color: lighten($yellow, 10%);\n error-text-color: $danger;\n null-string-color: $gray-400;\n\n $filter-color: $primary; // local to just the following\n filter-bar-active-bg: scale-color(\n $filter-color,\n $saturation: -65%,\n $lightness: -40%\n );\n filter-bar-active-color: $filter-color;\n filter-bar-expanded-bg: $gray-800;\n filter-bar-expanded-active-bg: scale-color(\n $filter-color,\n $saturation: -75%,\n $lightness: -60%\n );\n filter-bar-expanded-active-cell-bg: scale-color(\n $filter-color,\n $saturation: -50%,\n $lightness: -40%\n );\n filter-bar-separator-color: $gray-400;\n filter-bar-error-color: $danger;\n filter-icon-color: $filter-color;\n\n scrim-color: $gray-900;\n context-menu-sort-icon-color: $purple;\n context-menu-reverse-icon-color: $green-dark;\n linker-column-hover-bg: rgba($blue, 0.09);\n tree-line-color: $gray-500;\n tree-marker-color: $gray-300;\n tree-marker-hover-color: $gray-100;\n grouped-column-divider-color: $black;\n\n floating-grid-row-color: $gray-600;\n floating-row-background-colors: $gray-700;\n floating-divider-inner-color: $gray-700;\n floating-divider-outer-color: $gray-900;\n\n overflow-button-color: $gray-300;\n overflow-button-hover-color: $gray-100;\n\n zero-line-color: $gray-500;\n positive-bar-color: $green;\n negative-bar-color: $red;\n}\n","/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../src/IrisGridTheme.module.scss","../../../node_modules/@deephaven/components/scss/custom.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACAA;ADaA;EACE,SEaS;EFZT,MACE;EAEF,OELe;EFMf,OELe;EFMf,WETc;EFUd,cERe;EFSf,eAXc;EAYd,wBEIS;EFHT,8BEHS;EFIT,qCEbc;EFcd,uBElBO;EFmBP,0BEyCW;EFxCX,yBEDS;EFET,aACE;EAEF,YAzBW;EA0BX;EACA,iBA/BgB;EAgChB,yBE5BK;EF6BL,gCETS;EFUT,cA7Ba;EA8Bb;EACA;EAEA,eEfS;EFgBT,qBEjBS;EFkBT,yBEpBS;EFqBT,yBElBS;EFmBT,kBEvBS;EFwBT,wBEzBS;EF0BT,yBE3BS;EF6BT,YEpCe;EFqCf,iBEtCc;EFuCd,uBE7CM;EF8CN,uBEjDI;EFkDJ,mBEhDO;EFiDP,YEjDO;EFkDP;EACA,kBErDI;EFsDJ,mBEpCS;EFuCT;EAKA,yBErDc;EFsDd,wBEzCS;EF0CT;EAKA;EAKA,4BExDS;EFyDT,wBE3EI;EF4EJ,mBEnEc;EFqEd,aEtDS;EFuDT,8BE1EO;EF2EP,iCEfW;EFgBX;EACA,iBE/DS;EFgET,mBElES;EFmET,yBErES;EFsET,8BE1Ee;EF4Ef,yBEnES;EFoET,gCEnES;EFoET,8BEpES;EFqET,8BElES;EFoET,uBE3ES;EF4ET,6BE9ES;EFgFT,iBE5ES;EF6ET,oBE7FM;EF8FN,oBEjGI;EFkGJ,kBExFe","file":"IrisGridTheme.module.css","sourcesContent":["/* stylelint-disable */\n@import '@deephaven/components/scss/custom.scss';\n\n$selection-color: rgba($blue, 0.09);\n$selection-outline-color: $blue;\n$selection-outline-casing-color: $gray-900;\n$font-size: 12px;\n$row-height: 19px;\n$row-hover-bg: mix($gray-600, $gray-700, 50%);\n$header-bg: $content-bg;\n$header-separator-color: $gray-900;\n$header-height: 30px;\n\n:export {\n grid-bg: $gray-900;\n font:\n $font-size Fira Sans,\n sans-serif; // must be preloaded\n white: $white;\n black: $black;\n header-bg: $header-bg;\n header-color: $foreground;\n header-height: $header-height;\n header-separator-color: $header-separator-color;\n header-separator-hover-color: $gray-400;\n header-hidden-separator-hover-color: $primary;\n header-sort-bar-color: $purple;\n header-reverse-bar-color: $green-dark;\n header-bar-casing-color: $gray-900;\n header-font:\n 600 $font-size Fira Sans,\n sans-serif; // must be preloaded\n row-height: $row-height;\n row-background-colors: $gray-800 $content-bg;\n selection-color: $selection-color;\n selection-outline-color: $selection-outline-color;\n selection-outline-casing-color: $selection-outline-casing-color;\n row-hover-bg: $row-hover-bg;\n selected-row-hover-bg: rgba($blue, 0.25);\n scroll-bar-active-selection-tick-color: rgba($blue, 0.5);\n\n scroll-bar-bg: $gray-850;\n scroll-bar-hover-bg: $gray-800;\n scroll-bar-casing-color: $gray-600;\n scroll-bar-corner-color: $gray-850;\n scroll-bar-color: $gray-500;\n scroll-bar-hover-color: $gray-400;\n scroll-bar-active-color: $gray-300;\n\n text-color: $white;\n hyperlink-color: $primary;\n positive-number-color: $green;\n negative-number-color: $red;\n zero-number-color: $yellow;\n date-color: $yellow;\n pending-text-color: lighten($yellow, 10%);\n error-text-color: $danger;\n null-string-color: $gray-400;\n\n $filter-color: $primary; // local to just the following\n filter-bar-active-bg: scale-color(\n $filter-color,\n $saturation: -65%,\n $lightness: -40%\n );\n filter-bar-active-color: $filter-color;\n filter-bar-expanded-bg: $gray-800;\n filter-bar-expanded-active-bg: scale-color(\n $filter-color,\n $saturation: -75%,\n $lightness: -60%\n );\n filter-bar-expanded-active-cell-bg: scale-color(\n $filter-color,\n $saturation: -50%,\n $lightness: -40%\n );\n filter-bar-separator-color: $gray-400;\n filter-bar-error-color: $danger;\n filter-icon-color: $filter-color;\n\n scrim-color: $gray-900;\n context-menu-sort-icon-color: $purple;\n context-menu-reverse-icon-color: $green-dark;\n linker-column-hover-bg: rgba($blue, 0.09);\n tree-line-color: $gray-500;\n tree-marker-color: $gray-300;\n tree-marker-hover-color: $gray-100;\n grouped-column-divider-color: $black;\n\n floating-grid-row-color: $gray-600;\n floating-row-background-colors: $gray-700;\n floating-divider-inner-color: $gray-700;\n floating-divider-outer-color: $gray-900;\n\n overflow-button-color: $gray-300;\n overflow-button-hover-color: $gray-100;\n\n zero-line-color: $gray-500;\n positive-bar-color: $green;\n negative-bar-color: $red;\n marker-bar-color: $white;\n}\n","/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/PartitionSelectorSearch.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACII;EACE;;AAGJ;EACE,OCYO;EDXP;EACA;;AAEF;EACE,OCOO;EDNP;EACA;;AAEF;EACE;;AACA;EACE,kBCCK","file":"PartitionSelectorSearch.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n$partition-selector-search-input-bg: $gray-500;\n.iris-grid-partition-selector-search {\n .iris-grid-partition-selector-search-list {\n .item-list-scroll-pane {\n border: none;\n }\n }\n .iris-grid-partition-selector-search-empty {\n color: $text-muted;\n padding: $input-padding-y $input-btn-padding-x;\n text-align: center;\n }\n .iris-grid-partition-selector-loading {\n color: $text-muted;\n padding: $input-padding-y $input-btn-padding-x;\n text-align: center;\n }\n .search-container {\n padding: $tooltip-padding-y $tooltip-padding-x;\n .form-control {\n background-color: $partition-selector-search-input-bg;\n }\n }\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/PartitionSelectorSearch.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACII;EACE;;AAGJ;EACE,OCYO;EDXP;EACA;;AAEF;EACE,OCOO;EDNP;EACA;;AAEF;EACE;;AACA;EACE,kBCCK","file":"PartitionSelectorSearch.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n$partition-selector-search-input-bg: $gray-500;\n.iris-grid-partition-selector-search {\n .iris-grid-partition-selector-search-list {\n .item-list-scroll-pane {\n border: none;\n }\n }\n .iris-grid-partition-selector-search-empty {\n color: $text-muted;\n padding: $input-padding-y $input-btn-padding-x;\n text-align: center;\n }\n .iris-grid-partition-selector-loading {\n color: $text-muted;\n padding: $input-padding-y $input-btn-padding-x;\n text-align: center;\n }\n .search-container {\n padding: $tooltip-padding-y $tooltip-padding-x;\n .form-control {\n background-color: $partition-selector-search-input-bg;\n }\n }\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -305,7 +305,9 @@ class PartitionSelectorSearch extends Component {
305
305
  children: "No results"
306
306
  }), isLoading && /*#__PURE__*/_jsxs("div", {
307
307
  className: "iris-grid-partition-selector-loading",
308
- children: [/*#__PURE__*/_jsx(LoadingSpinner, {}), "\xA0Loading..."]
308
+ children: [/*#__PURE__*/_jsx(LoadingSpinner, {
309
+ className: "loading-spinner-vertical-align"
310
+ }), "\xA0Loading..."]
309
311
  })]
310
312
  });
311
313
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PartitionSelectorSearch.js","names":["React","Component","PropTypes","debounce","TableUtils","ItemList","LoadingSpinner","Log","CanceledPromiseError","log","module","DEBOUNCE_UPDATE_FILTER","PartitionSelectorSearch","handleError","error","constructor","props","updateFilter","handleFilterChange","bind","handleKeyDown","handleListKeydown","handleSelect","handleTableUpdate","handleTextChange","handleViewportChange","itemList","searchInput","timer","dh","tableUtils","state","offset","itemCount","items","text","isLoading","componentDidMount","startListening","componentDidUpdate","prevProps","prevState","onListResized","componentWillUnmount","debounceUpdateFilter","cancel","stopListening","event","key","selectedValue","length","value","trim","onSelect","stopPropagation","preventDefault","focusItem","focus","debug2","table","size","setState","itemIndex","offsetIndex","data","detail","getFormattedString","column","columns","r","rows","row","get","displayValue","type","name","push","target","isIntegerType","parseInt","toString","topRow","bottomRow","delta","Math","max","top","bottom","setViewport","initialPageSize","addEventListener","Table","EVENT_UPDATED","EVENT_FILTERCHANGED","removeEventListener","filterText","filters","filter","makeQuickFilterFromComponent","isStringType","Error","applyFilter","render","listHeight","min","MAX_VISIBLE_ITEMS","DEFAULT_ROW_HEIGHT","inputType","isNumberType","height","undefined","func","isRequired","shape","arrayOf","string","number"],"sources":["../src/PartitionSelectorSearch.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType, Table } from '@deephaven/jsapi-types';\nimport { ItemList, LoadingSpinner } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError } from '@deephaven/utils';\nimport './PartitionSelectorSearch.scss';\nimport { ModelIndex } from '@deephaven/grid';\n\nconst log = Log.module('PartitionSelectorSearch');\nconst DEBOUNCE_UPDATE_FILTER = 150;\n\ninterface Item {\n value: string;\n displayValue: string;\n}\n\ninterface PartitionSelectorSearchProps<T> {\n dh: DhType;\n getFormattedString: (value: T, type: string, name: string) => string;\n table: Table;\n initialPageSize: number;\n onSelect: (value: string) => void;\n onListResized: () => void;\n}\ninterface PartitionSelectorSearchState {\n offset: number;\n itemCount: number;\n items: Item[];\n text: string;\n isLoading: boolean;\n}\nclass PartitionSelectorSearch<T> extends Component<\n PartitionSelectorSearchProps<T>,\n PartitionSelectorSearchState\n> {\n static MAX_VISIBLE_ITEMS = 12;\n\n static defaultProps = {\n initialPageSize: 100,\n onSelect: (): void => undefined,\n onListResized: (): void => undefined,\n };\n\n static propTypes = {\n getFormattedString: PropTypes.func.isRequired,\n table: PropTypes.shape({\n addEventListener: PropTypes.func.isRequired,\n removeEventListener: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n filter: PropTypes.func.isRequired,\n })\n ),\n size: PropTypes.number.isRequired,\n applyFilter: PropTypes.func.isRequired,\n setViewport: PropTypes.func.isRequired,\n }).isRequired,\n initialPageSize: PropTypes.number,\n onSelect: PropTypes.func,\n onListResized: PropTypes.func,\n };\n\n static handleError(error: unknown): void {\n if (!(error instanceof CanceledPromiseError)) {\n log.error(error);\n }\n }\n\n constructor(props: PartitionSelectorSearchProps<T>) {\n super(props);\n\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleListKeydown = this.handleListKeydown.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTextChange = this.handleTextChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.itemList = null;\n this.searchInput = null;\n this.timer = null;\n\n const { dh } = props;\n this.tableUtils = new TableUtils(dh);\n\n this.state = {\n offset: 0,\n itemCount: 0,\n items: [],\n text: '',\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n }\n\n componentDidUpdate(\n prevProps: PartitionSelectorSearchProps<T>,\n prevState: PartitionSelectorSearchState\n ): void {\n const { isLoading, itemCount } = this.state;\n const { onListResized } = this.props;\n if (\n itemCount !== prevState.itemCount ||\n isLoading !== prevState.isLoading\n ) {\n onListResized();\n }\n }\n\n componentWillUnmount(): void {\n this.debounceUpdateFilter.cancel();\n\n this.stopListening();\n }\n\n itemList: ItemList<Item> | null;\n\n searchInput: HTMLInputElement | null;\n\n timer: null;\n\n tableUtils: TableUtils;\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n if (this.itemList == null) {\n return false;\n }\n\n const { items, itemCount } = this.state;\n switch (event.key) {\n case 'Enter': {\n let selectedValue = null;\n if (items.length > 0) {\n selectedValue = items[0].value;\n } else {\n const { text } = this.state;\n selectedValue = text.trim();\n }\n\n if (selectedValue.length > 0) {\n const { onSelect } = this.props;\n onSelect(selectedValue);\n }\n\n event.stopPropagation();\n event.preventDefault();\n return true;\n }\n case 'ArrowDown':\n if (itemCount > 0) {\n this.itemList.focusItem(1);\n }\n event.stopPropagation();\n event.preventDefault();\n return true;\n default:\n return false;\n }\n }\n\n handleListKeydown(event: React.KeyboardEvent<HTMLDivElement>): void {\n switch (event.key) {\n case 'Escape':\n // Do nothing\n break;\n default:\n this.focus();\n break;\n }\n }\n\n handleFilterChange(): void {\n log.debug2('handleFilterChange');\n\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ itemCount, isLoading: true });\n }\n\n handleSelect(itemIndex: ModelIndex): void {\n log.debug2('handleSelect', itemIndex);\n\n const { onSelect } = this.props;\n const { offset, items } = this.state;\n const offsetIndex = itemIndex - offset;\n if (offsetIndex < 0 || items.length <= offsetIndex) {\n log.error('No data for item', itemIndex);\n return;\n }\n\n const { value } = items[offsetIndex];\n onSelect(value);\n }\n\n handleTableUpdate(event: CustomEvent): void {\n const data = event.detail;\n const { offset } = data;\n\n const items = [] as Item[];\n const { getFormattedString, table } = this.props;\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n const displayValue = getFormattedString(value, column.type, column.name);\n items.push({\n displayValue,\n value,\n });\n }\n\n const itemCount = table.size;\n log.debug2('handleTableUpdate', itemCount, offset, items.length);\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n handleTextChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('handleTextChange');\n\n const { table } = this.props;\n const { value: text } = event.target;\n\n if (text !== '' && TableUtils.isIntegerType(table.columns[0].type)) {\n this.setState({ text: parseInt(text, 10).toString() });\n } else {\n this.setState({ text });\n }\n\n this.debounceUpdateFilter();\n }\n\n handleViewportChange(topRow: number, bottomRow: number): void {\n log.debug2('handleViewportChange', topRow, bottomRow);\n\n const delta = Math.max(1, bottomRow - topRow);\n const top = Math.max(0, topRow - delta);\n const bottom = bottomRow + delta;\n\n const { table } = this.props;\n table.setViewport(top, bottom);\n }\n\n debounceUpdateFilter = debounce((): void => {\n this.updateFilter();\n }, DEBOUNCE_UPDATE_FILTER);\n\n focus(): void {\n if (this.searchInput) {\n this.searchInput.focus();\n }\n }\n\n startListening(): void {\n const { dh, initialPageSize, table } = this.props;\n table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n table.setViewport(0, initialPageSize);\n }\n\n stopListening(): void {\n const { dh, table } = this.props;\n table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n }\n\n updateFilter(): void {\n const { initialPageSize, table } = this.props;\n const { text } = this.state;\n const filterText = text.trim();\n const filters = [];\n if (filterText.length > 0) {\n const column = table.columns[0];\n const filter = this.tableUtils.makeQuickFilterFromComponent(\n column,\n TableUtils.isStringType(column.type) ? `~${filterText}` : filterText\n );\n if (!filter) {\n throw new Error(\n 'Unable to create column filter for partition selector'\n );\n }\n filters.push(filter);\n }\n\n log.debug2('updateFilter', filters);\n\n table.applyFilter(filters);\n table.setViewport(0, initialPageSize);\n }\n\n render(): JSX.Element {\n const { table } = this.props;\n const { isLoading, itemCount, items, offset, text } = this.state;\n\n const listHeight =\n Math.min(itemCount, PartitionSelectorSearch.MAX_VISIBLE_ITEMS) *\n ItemList.DEFAULT_ROW_HEIGHT +\n // Adjust for ListItem vertical padding - .375rem ~ 5.25px\n 11;\n const inputType = TableUtils.isNumberType(table.columns[0].type)\n ? 'number'\n : 'text';\n return (\n <div className=\"iris-grid-partition-selector-search\">\n <div className=\"search-container\">\n <input\n type={inputType}\n ref={searchInput => {\n this.searchInput = searchInput;\n }}\n value={text}\n placeholder=\"Available Partitions\"\n onChange={this.handleTextChange}\n onKeyDown={this.handleKeyDown}\n className=\"form-control input-partition\"\n />\n </div>\n {!isLoading && itemCount > 0 && (\n <div\n className=\"iris-grid-partition-selector-search-list\"\n onKeyDown={this.handleListKeydown}\n role=\"presentation\"\n style={{ height: listHeight }}\n >\n <ItemList\n ref={itemList => {\n this.itemList = itemList;\n }}\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n </div>\n )}\n {!isLoading && itemCount === 0 && (\n <div className=\"iris-grid-partition-selector-search-empty\">\n No results\n </div>\n )}\n {isLoading && (\n <div className=\"iris-grid-partition-selector-loading\">\n <LoadingSpinner />\n &nbsp;Loading...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default PartitionSelectorSearch;\n"],"mappings":"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"}
1
+ {"version":3,"file":"PartitionSelectorSearch.js","names":["React","Component","PropTypes","debounce","TableUtils","ItemList","LoadingSpinner","Log","CanceledPromiseError","log","module","DEBOUNCE_UPDATE_FILTER","PartitionSelectorSearch","handleError","error","constructor","props","updateFilter","handleFilterChange","bind","handleKeyDown","handleListKeydown","handleSelect","handleTableUpdate","handleTextChange","handleViewportChange","itemList","searchInput","timer","dh","tableUtils","state","offset","itemCount","items","text","isLoading","componentDidMount","startListening","componentDidUpdate","prevProps","prevState","onListResized","componentWillUnmount","debounceUpdateFilter","cancel","stopListening","event","key","selectedValue","length","value","trim","onSelect","stopPropagation","preventDefault","focusItem","focus","debug2","table","size","setState","itemIndex","offsetIndex","data","detail","getFormattedString","column","columns","r","rows","row","get","displayValue","type","name","push","target","isIntegerType","parseInt","toString","topRow","bottomRow","delta","Math","max","top","bottom","setViewport","initialPageSize","addEventListener","Table","EVENT_UPDATED","EVENT_FILTERCHANGED","removeEventListener","filterText","filters","filter","makeQuickFilterFromComponent","isStringType","Error","applyFilter","render","listHeight","min","MAX_VISIBLE_ITEMS","DEFAULT_ROW_HEIGHT","inputType","isNumberType","height","undefined","func","isRequired","shape","arrayOf","string","number"],"sources":["../src/PartitionSelectorSearch.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType, Table } from '@deephaven/jsapi-types';\nimport { ItemList, LoadingSpinner } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError } from '@deephaven/utils';\nimport './PartitionSelectorSearch.scss';\nimport { ModelIndex } from '@deephaven/grid';\n\nconst log = Log.module('PartitionSelectorSearch');\nconst DEBOUNCE_UPDATE_FILTER = 150;\n\ninterface Item {\n value: string;\n displayValue: string;\n}\n\ninterface PartitionSelectorSearchProps<T> {\n dh: DhType;\n getFormattedString: (value: T, type: string, name: string) => string;\n table: Table;\n initialPageSize: number;\n onSelect: (value: string) => void;\n onListResized: () => void;\n}\ninterface PartitionSelectorSearchState {\n offset: number;\n itemCount: number;\n items: Item[];\n text: string;\n isLoading: boolean;\n}\nclass PartitionSelectorSearch<T> extends Component<\n PartitionSelectorSearchProps<T>,\n PartitionSelectorSearchState\n> {\n static MAX_VISIBLE_ITEMS = 12;\n\n static defaultProps = {\n initialPageSize: 100,\n onSelect: (): void => undefined,\n onListResized: (): void => undefined,\n };\n\n static propTypes = {\n getFormattedString: PropTypes.func.isRequired,\n table: PropTypes.shape({\n addEventListener: PropTypes.func.isRequired,\n removeEventListener: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n filter: PropTypes.func.isRequired,\n })\n ),\n size: PropTypes.number.isRequired,\n applyFilter: PropTypes.func.isRequired,\n setViewport: PropTypes.func.isRequired,\n }).isRequired,\n initialPageSize: PropTypes.number,\n onSelect: PropTypes.func,\n onListResized: PropTypes.func,\n };\n\n static handleError(error: unknown): void {\n if (!(error instanceof CanceledPromiseError)) {\n log.error(error);\n }\n }\n\n constructor(props: PartitionSelectorSearchProps<T>) {\n super(props);\n\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleListKeydown = this.handleListKeydown.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTextChange = this.handleTextChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.itemList = null;\n this.searchInput = null;\n this.timer = null;\n\n const { dh } = props;\n this.tableUtils = new TableUtils(dh);\n\n this.state = {\n offset: 0,\n itemCount: 0,\n items: [],\n text: '',\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n }\n\n componentDidUpdate(\n prevProps: PartitionSelectorSearchProps<T>,\n prevState: PartitionSelectorSearchState\n ): void {\n const { isLoading, itemCount } = this.state;\n const { onListResized } = this.props;\n if (\n itemCount !== prevState.itemCount ||\n isLoading !== prevState.isLoading\n ) {\n onListResized();\n }\n }\n\n componentWillUnmount(): void {\n this.debounceUpdateFilter.cancel();\n\n this.stopListening();\n }\n\n itemList: ItemList<Item> | null;\n\n searchInput: HTMLInputElement | null;\n\n timer: null;\n\n tableUtils: TableUtils;\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n if (this.itemList == null) {\n return false;\n }\n\n const { items, itemCount } = this.state;\n switch (event.key) {\n case 'Enter': {\n let selectedValue = null;\n if (items.length > 0) {\n selectedValue = items[0].value;\n } else {\n const { text } = this.state;\n selectedValue = text.trim();\n }\n\n if (selectedValue.length > 0) {\n const { onSelect } = this.props;\n onSelect(selectedValue);\n }\n\n event.stopPropagation();\n event.preventDefault();\n return true;\n }\n case 'ArrowDown':\n if (itemCount > 0) {\n this.itemList.focusItem(1);\n }\n event.stopPropagation();\n event.preventDefault();\n return true;\n default:\n return false;\n }\n }\n\n handleListKeydown(event: React.KeyboardEvent<HTMLDivElement>): void {\n switch (event.key) {\n case 'Escape':\n // Do nothing\n break;\n default:\n this.focus();\n break;\n }\n }\n\n handleFilterChange(): void {\n log.debug2('handleFilterChange');\n\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ itemCount, isLoading: true });\n }\n\n handleSelect(itemIndex: ModelIndex): void {\n log.debug2('handleSelect', itemIndex);\n\n const { onSelect } = this.props;\n const { offset, items } = this.state;\n const offsetIndex = itemIndex - offset;\n if (offsetIndex < 0 || items.length <= offsetIndex) {\n log.error('No data for item', itemIndex);\n return;\n }\n\n const { value } = items[offsetIndex];\n onSelect(value);\n }\n\n handleTableUpdate(event: CustomEvent): void {\n const data = event.detail;\n const { offset } = data;\n\n const items = [] as Item[];\n const { getFormattedString, table } = this.props;\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n const displayValue = getFormattedString(value, column.type, column.name);\n items.push({\n displayValue,\n value,\n });\n }\n\n const itemCount = table.size;\n log.debug2('handleTableUpdate', itemCount, offset, items.length);\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n handleTextChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('handleTextChange');\n\n const { table } = this.props;\n const { value: text } = event.target;\n\n if (text !== '' && TableUtils.isIntegerType(table.columns[0].type)) {\n this.setState({ text: parseInt(text, 10).toString() });\n } else {\n this.setState({ text });\n }\n\n this.debounceUpdateFilter();\n }\n\n handleViewportChange(topRow: number, bottomRow: number): void {\n log.debug2('handleViewportChange', topRow, bottomRow);\n\n const delta = Math.max(1, bottomRow - topRow);\n const top = Math.max(0, topRow - delta);\n const bottom = bottomRow + delta;\n\n const { table } = this.props;\n table.setViewport(top, bottom);\n }\n\n debounceUpdateFilter = debounce((): void => {\n this.updateFilter();\n }, DEBOUNCE_UPDATE_FILTER);\n\n focus(): void {\n if (this.searchInput) {\n this.searchInput.focus();\n }\n }\n\n startListening(): void {\n const { dh, initialPageSize, table } = this.props;\n table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n table.setViewport(0, initialPageSize);\n }\n\n stopListening(): void {\n const { dh, table } = this.props;\n table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n }\n\n updateFilter(): void {\n const { initialPageSize, table } = this.props;\n const { text } = this.state;\n const filterText = text.trim();\n const filters = [];\n if (filterText.length > 0) {\n const column = table.columns[0];\n const filter = this.tableUtils.makeQuickFilterFromComponent(\n column,\n TableUtils.isStringType(column.type) ? `~${filterText}` : filterText\n );\n if (!filter) {\n throw new Error(\n 'Unable to create column filter for partition selector'\n );\n }\n filters.push(filter);\n }\n\n log.debug2('updateFilter', filters);\n\n table.applyFilter(filters);\n table.setViewport(0, initialPageSize);\n }\n\n render(): JSX.Element {\n const { table } = this.props;\n const { isLoading, itemCount, items, offset, text } = this.state;\n\n const listHeight =\n Math.min(itemCount, PartitionSelectorSearch.MAX_VISIBLE_ITEMS) *\n ItemList.DEFAULT_ROW_HEIGHT +\n // Adjust for ListItem vertical padding - .375rem ~ 5.25px\n 11;\n const inputType = TableUtils.isNumberType(table.columns[0].type)\n ? 'number'\n : 'text';\n return (\n <div className=\"iris-grid-partition-selector-search\">\n <div className=\"search-container\">\n <input\n type={inputType}\n ref={searchInput => {\n this.searchInput = searchInput;\n }}\n value={text}\n placeholder=\"Available Partitions\"\n onChange={this.handleTextChange}\n onKeyDown={this.handleKeyDown}\n className=\"form-control input-partition\"\n />\n </div>\n {!isLoading && itemCount > 0 && (\n <div\n className=\"iris-grid-partition-selector-search-list\"\n onKeyDown={this.handleListKeydown}\n role=\"presentation\"\n style={{ height: listHeight }}\n >\n <ItemList\n ref={itemList => {\n this.itemList = itemList;\n }}\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n </div>\n )}\n {!isLoading && itemCount === 0 && (\n <div className=\"iris-grid-partition-selector-search-empty\">\n No results\n </div>\n )}\n {isLoading && (\n <div className=\"iris-grid-partition-selector-loading\">\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n &nbsp;Loading...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default PartitionSelectorSearch;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/PendingDataBottomBar.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACEA;EACE,kBCQc;;ADNZ;EACE,OCYK;EDXL,cCWK;;ADVL;EACE,kBCuDO","file":"PendingDataBottomBar.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n.pending-data-bottom-bar {\n background-color: $content-bg;\n .buttons-container {\n .btn-outline-primary {\n color: $gray-100;\n border-color: $gray-100;\n &:hover {\n background-color: $danger-hover;\n }\n }\n }\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/PendingDataBottomBar.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACEA;EACE,kBCQc;;ADNZ;EACE,OCYK;EDXL,cCWK;;ADVL;EACE,kBCuDO","file":"PendingDataBottomBar.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n.pending-data-bottom-bar {\n background-color: $content-bg;\n .buttons-container {\n .btn-outline-primary {\n color: $gray-100;\n border-color: $gray-100;\n &:hover {\n background-color: $danger-hover;\n }\n }\n }\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -60,7 +60,9 @@ export function PendingDataBottomBar(_ref) {
60
60
  var pendingRowCount = pendingDataMap.size;
61
61
  var commitIcon;
62
62
  if (isSaving) {
63
- commitIcon = /*#__PURE__*/_jsx(LoadingSpinner, {});
63
+ commitIcon = /*#__PURE__*/_jsx(LoadingSpinner, {
64
+ className: "loading-spinner-vertical-align"
65
+ });
64
66
  } else if (wasSuccessShown) {
65
67
  commitIcon = vsPass;
66
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { PendingDataErrorMap, PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: PendingDataErrorMap;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function PendingDataBottomBar({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n}\n\nexport default PendingDataBottomBar;\n"],"mappings":"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"}
1
+ {"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { PendingDataErrorMap, PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: PendingDataErrorMap;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function PendingDataBottomBar({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner className=\"loading-spinner-vertical-align\" />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n}\n\nexport default PendingDataBottomBar;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/mousehandlers/IrisGridContextMenuHandler.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACIA;EACE;EACA,YCKc;EDJd;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE","file":"IrisGridContextMenuHandler.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$padding-x: 2rem;\n\n.iris-grid-filter-menu-item-value {\n user-select: none;\n background: $content-bg;\n border-radius: $border-radius $border-radius 0 0;\n padding: $input-btn-padding-y $padding-x;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.advanced-filter-button-container {\n transition: $transition opacity;\n}\n\n.advanced-filter-button-container.hidden {\n opacity: 0;\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/mousehandlers/IrisGridContextMenuHandler.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACIA;EACE;EACA,YCKc;EDJd;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE","file":"IrisGridContextMenuHandler.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$padding-x: 2rem;\n\n.iris-grid-filter-menu-item-value {\n user-select: none;\n background: $content-bg;\n border-radius: $border-radius $border-radius 0 0;\n padding: $input-btn-padding-y $padding-x;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.advanced-filter-button-container {\n transition: $transition opacity;\n}\n\n.advanced-filter-button-container.hidden {\n opacity: 0;\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}