@carbon/ibm-products 2.0.0-rc.17 → 2.0.0-rc.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. package/css/index-full-carbon.css +140 -21
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +413 -0
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +140 -21
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +3 -3
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +139 -21
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +2 -2
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Datagrid/Datagrid/Datagrid.js +4 -4
  18. package/es/components/Datagrid/Datagrid/DatagridContent.js +46 -16
  19. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +3 -21
  20. package/es/components/Datagrid/Datagrid/DraggableElement.js +7 -3
  21. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +7 -2
  22. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -1
  23. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +120 -60
  24. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +514 -0
  25. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +10 -2
  26. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +9 -1
  27. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +9 -0
  28. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +4 -1
  29. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useShouldDisableButtons.js +38 -0
  30. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useSubscribeToEventEmitter.js +25 -0
  31. package/es/components/Datagrid/Datagrid/addons/Filtering/index.js +3 -1
  32. package/es/components/Datagrid/Datagrid/addons/Filtering/motion/variants.js +55 -0
  33. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +53 -19
  34. package/es/components/Datagrid/Datagrid.stories/index.js +0 -1
  35. package/es/components/Datagrid/useFiltering.js +11 -4
  36. package/es/components/Datagrid/utils/DatagridActions.js +41 -13
  37. package/es/components/OptionsTile/OptionsTile.js +3 -3
  38. package/es/components/Tearsheet/Tearsheet.js +5 -0
  39. package/es/components/Tearsheet/TearsheetNarrow.js +5 -0
  40. package/es/components/Tearsheet/TearsheetShell.js +1 -1
  41. package/es/global/js/package-settings.js +2 -2
  42. package/lib/components/Datagrid/Datagrid/Datagrid.js +4 -4
  43. package/lib/components/Datagrid/Datagrid/DatagridContent.js +48 -15
  44. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +2 -23
  45. package/lib/components/Datagrid/Datagrid/DraggableElement.js +6 -2
  46. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +7 -2
  47. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -1
  48. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +113 -51
  49. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +538 -0
  50. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +9 -1
  51. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +15 -3
  52. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +31 -0
  53. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +5 -1
  54. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useShouldDisableButtons.js +50 -0
  55. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useSubscribeToEventEmitter.js +35 -0
  56. package/lib/components/Datagrid/Datagrid/addons/Filtering/index.js +23 -1
  57. package/lib/components/Datagrid/Datagrid/addons/Filtering/motion/variants.js +67 -0
  58. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +53 -18
  59. package/lib/components/Datagrid/Datagrid.stories/index.js +0 -8
  60. package/lib/components/Datagrid/useFiltering.js +11 -3
  61. package/lib/components/Datagrid/utils/DatagridActions.js +41 -11
  62. package/lib/components/OptionsTile/OptionsTile.js +2 -2
  63. package/lib/components/Tearsheet/Tearsheet.js +5 -0
  64. package/lib/components/Tearsheet/TearsheetNarrow.js +5 -0
  65. package/lib/components/Tearsheet/TearsheetShell.js +1 -1
  66. package/lib/global/js/package-settings.js +2 -2
  67. package/package.json +2 -2
  68. package/scss/components/Datagrid/styles/_datagrid.scss +16 -17
  69. package/scss/components/Datagrid/styles/_draggableElement.scss +5 -1
  70. package/scss/components/Datagrid/styles/_index.scss +1 -0
  71. package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +129 -0
  72. package/scss/components/Datagrid/styles/addons/_RowSizeDropdown.scss +3 -3
  73. package/scss/components/FilterSummary/_filter-summary.scss +1 -0
  74. package/scss/components/MultiAddSelect/_multi-add-select.scss +1 -1
  75. package/scss/components/SingleAddSelect/_single-add-select.scss +1 -1
  76. package/scss/components/_index-released-only-with-carbon.scss +2 -0
  77. package/scss/components/_index-released-only.scss +2 -0
  78. package/es/components/Datagrid/Datagrid.stories/LeftPanelStory.js +0 -6
  79. package/lib/components/Datagrid/Datagrid.stories/LeftPanelStory.js +0 -13
@@ -15,6 +15,7 @@
15
15
  @use './addons/CustomizeColumnsTearsheet';
16
16
  @use './addons/RowSizeDropdown';
17
17
  @use './addons/FilterFlyout';
18
+ @use './addons/FilterPanel';
18
19
  @use './useSelectAllToggle';
19
20
  @use './useExpandedRow';
20
21
  @use './draggableElement';
@@ -0,0 +1,129 @@
1
+ /*
2
+ * Licensed Materials - Property of IBM
3
+ * 5724-Q36
4
+ * (c) Copyright IBM Corp. 2022
5
+ * US Government Users Restricted Rights - Use, duplication or disclosure
6
+ * restricted by GSA ADP Schedule Contract with IBM Corp.
7
+ */
8
+
9
+ @use '../variables' as *;
10
+ @use '@carbon/styles/scss/theme' as *;
11
+ @use '@carbon/styles/scss/spacing' as *;
12
+ @use '@carbon/styles/scss/type' as *;
13
+ @use '../../../../global/styles/project-settings' as c4p-settings;
14
+
15
+ .#{$block-class}-filter-panel__container {
16
+ position: relative;
17
+ width: rem(320px);
18
+ height: clamp(var(--filter-panel-min-height), 100%, 100vh);
19
+ border-top: 1px $layer-accent-01 solid;
20
+ background-color: $layer-01;
21
+ }
22
+
23
+ .#{$block-class}-filter-panel--open {
24
+ border-right: 1px $layer-accent-01 solid;
25
+ }
26
+
27
+ .#{$block-class}-filter-panel__container::before {
28
+ position: absolute;
29
+ top: -1px; // stylelint-disable-line
30
+ left: 0;
31
+ display: block;
32
+ width: rem(47px); // size of filter panel button
33
+ height: 1px;
34
+ background-color: $layer-01;
35
+ content: '';
36
+ }
37
+
38
+ .#{$block-class}-filter-panel__inner-container {
39
+ position: relative;
40
+ z-index: 0;
41
+ overflow: auto;
42
+ padding: 0 $spacing-05;
43
+ overscroll-behavior: contain;
44
+ }
45
+
46
+ // Adds extra space to the last category so the scroll shows everything visible when you reach the bottom
47
+ .#{$block-class}-filter-panel__inner-container
48
+ .#{$block-class}-filter-panel__category:last-of-type {
49
+ padding-bottom: $spacing-11;
50
+ }
51
+
52
+ .#{$block-class}-filter-panel {
53
+ position: sticky;
54
+ top: 0;
55
+ }
56
+
57
+ .#{$block-class}-filter-panel__heading {
58
+ display: flex;
59
+ justify-content: space-between;
60
+ padding-left: $spacing-05;
61
+ border-bottom: 1px solid transparent;
62
+ }
63
+
64
+ .#{$block-class}-filter-panel__heading--with-divider {
65
+ border-bottom: 1px solid $layer-accent-01;
66
+ }
67
+
68
+ .#{$block-class}-filter-panel__title {
69
+ padding: $spacing-05 0;
70
+ @include type-style('heading-compact-02');
71
+ }
72
+
73
+ .#{$block-class}-filter-panel__search {
74
+ padding: 0 $spacing-05 $spacing-06;
75
+ }
76
+
77
+ .#{$block-class}-filter-panel__category-title {
78
+ @include type-style('heading-compact-01');
79
+
80
+ margin-bottom: $spacing-05;
81
+ color: $text-secondary;
82
+ }
83
+
84
+ .#{$block-class}-filter-panel__category {
85
+ padding-bottom: $spacing-06;
86
+ }
87
+
88
+ // This selects all filter elements inside of categories and give them 16px margin bottom
89
+ .#{$block-class}-filter-panel__category
90
+ > *:not(.c4p--datagrid-filter-panel__category-title, .bx--accordion) {
91
+ margin-bottom: $spacing-05;
92
+ }
93
+
94
+ .#{$block-class}-filter-panel__action-set {
95
+ position: sticky;
96
+ z-index: 1; // To layer action set on top of content behind when sticky
97
+ bottom: 0;
98
+ height: rem(64px);
99
+ margin-top: auto;
100
+ }
101
+
102
+ // Overrides
103
+ .#{$block-class}-filter-panel__container
104
+ .#{c4p-settings.$carbon-prefix}--accordion__title {
105
+ margin: 0;
106
+ }
107
+
108
+ .#{$block-class}-filter-panel__container
109
+ .#{c4p-settings.$carbon-prefix}--accordion__arrow {
110
+ margin: $spacing-01 0 0;
111
+ }
112
+
113
+ .#{$block-class}-filter-panel__container
114
+ .#{c4p-settings.$carbon-prefix}--accordion__content {
115
+ padding-right: 0;
116
+ padding-left: 0;
117
+ }
118
+
119
+ // Makes sure every child (filter) inside the accordion content has space in between
120
+ .#{$block-class}-filter-panel__container
121
+ .#{c4p-settings.$carbon-prefix}--accordion__content
122
+ > *:not(:last-child) {
123
+ margin-bottom: $spacing-05;
124
+ }
125
+
126
+ .#{c4p-settings.$carbon-prefix}--btn.c4p--datagrid-filter-panel-open-button {
127
+ border-right: 1px solid $layer-accent-01;
128
+ border-bottom: none;
129
+ }
@@ -13,13 +13,13 @@
13
13
 
14
14
  .#{variables.$block-class}__row-size-dropdown {
15
15
  padding: $spacing-05;
16
- background-color: $background;
16
+ background-color: $layer-02;
17
17
 
18
18
  box-shadow: 1px 4px 8px -3px $overlay, -1px 6px 8px -5px $overlay;
19
19
  }
20
20
 
21
- .#{variables.$block-class}__row-size-button--open {
22
- background-color: $background;
21
+ .#{c4p-settings.$carbon-prefix}--btn--ghost.#{variables.$block-class}__row-size-button--open {
22
+ background-color: $layer-02;
23
23
 
24
24
  box-shadow: 1px 4px 8px -3px $overlay, -1px 6px 8px -5px $overlay;
25
25
  }
@@ -13,6 +13,7 @@ $block-class: #{$pkg-prefix}--filter-summary;
13
13
  .#{$block-class} {
14
14
  display: flex;
15
15
  width: 100%;
16
+ height: rem(48px);
16
17
  align-items: center;
17
18
  padding: $spacing-03;
18
19
  border-top: 1px solid $border-subtle-01;
@@ -5,4 +5,4 @@
5
5
  // LICENSE file in the root directory of this source tree.
6
6
  //
7
7
 
8
- @use '../AddSelect/add-select';
8
+ @use '../AddSelect/add-select' as *;
@@ -5,4 +5,4 @@
5
5
  // LICENSE file in the root directory of this source tree.
6
6
  //
7
7
 
8
- @use '../AddSelect/add-select';
8
+ @use '../AddSelect/add-select' as *;
@@ -23,12 +23,14 @@
23
23
  @use './HTTPErrors/index-with-carbon' as *;
24
24
  @use './InlineEditV1/index-with-carbon' as *;
25
25
  @use './ImportModal/index-with-carbon' as *;
26
+ @use './MultiAddSelect/index-with-carbon' as *;
26
27
  @use './NotificationsPanel/index-with-carbon' as *;
27
28
  @use './PageHeader/index-with-carbon' as *;
28
29
  @use './ProductiveCard/index-with-carbon' as *;
29
30
  @use './RemoveModal/index-with-carbon' as *;
30
31
  @use './Saving/index-with-carbon' as *;
31
32
  @use './SidePanel/index-with-carbon' as *;
33
+ @use './SingleAddSelect/index-with-carbon' as *;
32
34
  @use './StatusIcon/index-with-carbon' as *;
33
35
  @use './TagSet/index-with-carbon' as *;
34
36
  @use './Tearsheet/index-with-carbon' as *;
@@ -23,12 +23,14 @@
23
23
  @use './HTTPErrors';
24
24
  @use './InlineEditV1';
25
25
  @use './ImportModal';
26
+ @use './MultiAddSelect';
26
27
  @use './NotificationsPanel';
27
28
  @use './PageHeader';
28
29
  @use './ProductiveCard';
29
30
  @use './RemoveModal';
30
31
  @use './Saving';
31
32
  @use './SidePanel';
33
+ @use './SingleAddSelect';
32
34
  @use './StatusIcon';
33
35
  @use './TagSet';
34
36
  @use './Tearsheet';
@@ -1,6 +0,0 @@
1
- var notes = "\n# Access left side panel in data grid\nAllow users to access left panel in datagrid.\n\n## Documentation:\n\n- (required) Implement `options.leftPanel` which has the following props\n - `options.leftPanel.isOpen` value is toggled by the Button onClick from DatagridActions\n - render `options.leftPanel.panelContent` inside the panel container of data grid when isOpen is true\n\ncode snippet:\n\n```js\nconst columns = React.useMemo(() => defaultHeader, []);\n const [data] = useState(makeData(10));\n const [isPanelOpen, setIsPanelOpen] = useState(false);\n const DatagridActions = (datagridState) => (\n <TableToolbarContent>\n <Button onClick={() => { setIsPanelOpen(!isPanelOpen); }}>Click to toggle left panel</Button>\n <TableToolbarSearch ... />\n <Button ... />\n <datagridState.CustomizeColumnsButton />\n </TableToolbarContent>\n )\n const datagridState = useDatagrid(\n {\n columns,\n data,\n leftPanel: {\n isOpen: isPanelOpen,\n panelContent: <div>Panel content will go here along with any button interactions</div>,\n },\n initialState: {\n hiddenColumns: ['age'],\n columnOrder: [],\n },\n customizeColumnsProps: {\n onSaveColumnPrefs: (newColDefs) => {\n console.log(newColDefs);\n },\n },\n DatagridActions,\n },\n );\n\nreturn (\n <Wrapper>\n <IntlProvider locale=\"en\">\n <Datagrid {...datagridState} />\n </IntlProvider>\n </Wrapper>\n);\n```\n";
2
- export var story = {
3
- parameters: {
4
- notes: notes
5
- }
6
- };
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.story = void 0;
7
- var notes = "\n# Access left side panel in data grid\nAllow users to access left panel in datagrid.\n\n## Documentation:\n\n- (required) Implement `options.leftPanel` which has the following props\n - `options.leftPanel.isOpen` value is toggled by the Button onClick from DatagridActions\n - render `options.leftPanel.panelContent` inside the panel container of data grid when isOpen is true\n\ncode snippet:\n\n```js\nconst columns = React.useMemo(() => defaultHeader, []);\n const [data] = useState(makeData(10));\n const [isPanelOpen, setIsPanelOpen] = useState(false);\n const DatagridActions = (datagridState) => (\n <TableToolbarContent>\n <Button onClick={() => { setIsPanelOpen(!isPanelOpen); }}>Click to toggle left panel</Button>\n <TableToolbarSearch ... />\n <Button ... />\n <datagridState.CustomizeColumnsButton />\n </TableToolbarContent>\n )\n const datagridState = useDatagrid(\n {\n columns,\n data,\n leftPanel: {\n isOpen: isPanelOpen,\n panelContent: <div>Panel content will go here along with any button interactions</div>,\n },\n initialState: {\n hiddenColumns: ['age'],\n columnOrder: [],\n },\n customizeColumnsProps: {\n onSaveColumnPrefs: (newColDefs) => {\n console.log(newColDefs);\n },\n },\n DatagridActions,\n },\n );\n\nreturn (\n <Wrapper>\n <IntlProvider locale=\"en\">\n <Datagrid {...datagridState} />\n </IntlProvider>\n </Wrapper>\n);\n```\n";
8
- var story = {
9
- parameters: {
10
- notes: notes
11
- }
12
- };
13
- exports.story = story;