@openedx/paragon 22.0.0-alpha.17 → 22.0.0-alpha.19

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.
@@ -1,11 +1,5 @@
1
1
  {
2
2
  "themeUrls": {
3
- "core": {
4
- "paths": {
5
- "default": "./core.css",
6
- "minified": "./core.min.css"
7
- }
8
- },
9
3
  "defaults": {
10
4
  "light": "light"
11
5
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openedx/paragon",
3
- "version": "22.0.0-alpha.17",
3
+ "version": "22.0.0-alpha.19",
4
4
  "description": "Accessible, responsive UI component library based on Bootstrap.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -5,7 +5,6 @@ components:
5
5
  - Avatar
6
6
  categories:
7
7
  - Imagery & Iconography
8
- - Content
9
8
  status: 'New'
10
9
  designStatus: 'Done'
11
10
  devStatus: 'Done'
@@ -4,10 +4,16 @@ import { FormattedMessage } from 'react-intl';
4
4
  import DataTableContext from './DataTableContext';
5
5
 
6
6
  function RowStatus({ className, statusText }) {
7
- const { page, rows, itemCount } = useContext(DataTableContext);
8
- const pageSize = page?.length || rows?.length;
7
+ const {
8
+ page, rows, itemCount, state,
9
+ } = useContext(DataTableContext);
10
+ const rowCount = page?.length || rows?.length;
11
+ const pageSize = state?.pageSize || 0;
12
+ const pageIndex = state?.pageIndex || 0;
13
+ const firstRow = pageSize * pageIndex + 1;
14
+ const lastRow = firstRow + rowCount - 1;
9
15
 
10
- if (!pageSize) {
16
+ if (!rowCount) {
11
17
  return null;
12
18
  }
13
19
  return (
@@ -15,9 +21,9 @@ function RowStatus({ className, statusText }) {
15
21
  {statusText || (
16
22
  <FormattedMessage
17
23
  id="pgn.DataTable.RowStatus.statusText"
18
- defaultMessage="Showing {pageSize} of {itemCount}."
24
+ defaultMessage="Showing {firstRow} - {lastRow} of {itemCount}."
19
25
  description="A text describing how many rows is shown in the table"
20
- values={{ itemCount, pageSize }}
26
+ values={{ itemCount, firstRow, lastRow }}
21
27
  />
22
28
  )}
23
29
  </div>
@@ -135,7 +135,7 @@ describe('<DataTable />', () => {
135
135
  it('displays a control bar', () => {
136
136
  render(<DataTableWrapper {...props} />);
137
137
  expect(screen.getByTestId('table-control-bar')).toBeInTheDocument();
138
- expect(screen.getAllByText('Showing 7 of 7.')[0]).toBeInTheDocument();
138
+ expect(screen.getAllByText('Showing 1 - 7 of 7.')[0]).toBeInTheDocument();
139
139
  });
140
140
 
141
141
  it('displays a table', () => {
@@ -32,13 +32,13 @@ describe('<RowStatus />', () => {
32
32
  it('displays the row status with pagination', () => {
33
33
  const pageSize = 10;
34
34
  const { getByText } = render(<RowStatusWrapper value={{ ...instance, page: Array(pageSize) }} />);
35
- const statusText = getByText(`Showing ${pageSize} of ${instance.itemCount}.`);
35
+ const statusText = getByText(`Showing 1 - ${pageSize} of ${instance.itemCount}.`);
36
36
  expect(statusText).toBeInTheDocument();
37
37
  });
38
38
  it('displays the row status without pagination', () => {
39
39
  const pageSize = 10;
40
40
  const { getByText } = render(<RowStatusWrapper value={{ ...instance, rows: Array(pageSize) }} />);
41
- const statusText = getByText(`Showing ${pageSize} of ${instance.itemCount}.`);
41
+ const statusText = getByText(`Showing 1 - ${pageSize} of ${instance.itemCount}.`);
42
42
  expect(statusText).toBeInTheDocument();
43
43
  });
44
44
  it('sets class names on the parent', () => {
@@ -67,13 +67,13 @@ describe('<SmartStatus />', () => {
67
67
  const { getByText } = render(
68
68
  <SmartStatusWrapper value={instance} />,
69
69
  );
70
- expect(getByText(`Showing ${instance.page.length} of ${itemCount}.`)).toBeInTheDocument();
70
+ expect(getByText(`Showing 1 - ${instance.page.length} of ${itemCount}.`)).toBeInTheDocument();
71
71
  });
72
72
  it('Shows the number of items on the page if selection is off and there are no filters', () => {
73
73
  const { getByText } = render(
74
74
  <SmartStatusWrapper value={instance} />,
75
75
  );
76
- expect(getByText(`Showing ${instance.page.length} of ${itemCount}.`)).toBeInTheDocument();
76
+ expect(getByText(`Showing 1 - ${instance.page.length} of ${itemCount}.`)).toBeInTheDocument();
77
77
  });
78
78
  it('shows an alternate selection status', () => {
79
79
  const altStatusText = 'horses R cool';
@@ -8,20 +8,27 @@
8
8
  box-sizing: border-box;
9
9
  cursor: pointer;
10
10
 
11
+ &:hover,
12
+ &:focus,
13
+ &.pgn__dropzone-validation-error,
14
+ &.pgn__dropzone-active {
15
+ border-color: transparent;
16
+ }
17
+
11
18
  &:hover {
12
- border: var(--pgn-spacing-dropzone-border-hover) solid var(--pgn-color-dropzone-border-hover);
19
+ box-shadow: var(--pgn-elevation-dropzone-hover);
13
20
  }
14
21
 
15
22
  &:focus {
16
- border: var(--pgn-spacing-dropzone-border-focus) solid var(--pgn-color-dropzone-border-focus);
23
+ box-shadow: var(--pgn-elevation-dropzone-focus);
17
24
  }
18
25
 
19
26
  &.pgn__dropzone-validation-error {
20
- border: var(--pgn-spacing-dropzone-border-error) solid var(--pgn-color-dropzone-border-error);
27
+ box-shadow: var(--pgn-elevation-dropzone-error);
21
28
  }
22
29
 
23
30
  &.pgn__dropzone-active {
24
- border: var(--pgn-spacing-dropzone-border-active) solid var(--pgn-color-dropzone-border-active);
31
+ box-shadow: var(--pgn-elevation-dropzone-active);
25
32
  }
26
33
  }
27
34
 
@@ -42,6 +42,20 @@
42
42
  flex-grow: 1;
43
43
  align-items: flex-start;
44
44
 
45
+ textarea {
46
+ &.form-control {
47
+ min-height: var(--pgn-size-form-input-height-base);
48
+ }
49
+
50
+ &.form-control-lg {
51
+ min-height: var(--pgn-size-form-input-height-lg);
52
+ }
53
+
54
+ &.form-control-sm {
55
+ min-height: var(--pgn-size-form-input-height-sm);
56
+ }
57
+ }
58
+
45
59
  @media (--pgn-size-breakpoint-min-width-sm) {
46
60
  margin-inline-end: var(--pgn-spacing-form-control-gutter);
47
61
  }
@@ -3,7 +3,6 @@ title: 'Image'
3
3
  type: 'component'
4
4
  categories:
5
5
  - Imagery & Iconography
6
- - Content
7
6
  components:
8
7
  - Image
9
8
  status: 'Stable'
@@ -10,7 +10,6 @@ components:
10
10
  - SearchFieldSubmitButton
11
11
  categories:
12
12
  - Forms
13
- - Navigation
14
13
  status: 'Stable'
15
14
  designStatus: 'Needs Review'
16
15
  devStatus: 'Done'
@@ -6,7 +6,6 @@ components:
6
6
  - SelectableBoxSet
7
7
  categories:
8
8
  - Forms
9
- - Content
10
9
  status: 'New'
11
10
  designStatus: 'Done'
12
11
  devStatus: 'In progress'
@@ -6,7 +6,6 @@ components:
6
6
  - Spinner
7
7
  categories:
8
8
  - Status & metadata
9
- - Choreography
10
9
  designStatus: 'Done'
11
10
  devStatus: 'Done'
12
11
  notes: |
@@ -10,7 +10,6 @@ components:
10
10
  - StepperHeaderStep
11
11
  categories:
12
12
  - Navigation
13
- - Content
14
13
  designStatus: 'Done'
15
14
  devStatus: 'Done'
16
15
  notes: |
@@ -3,6 +3,8 @@ title: 'Truncate'
3
3
  type: 'component'
4
4
  components:
5
5
  - Truncate
6
+ categories:
7
+ - Content
6
8
  status: 'New'
7
9
  designStatus: 'Done'
8
10
  devStatus: 'Done'
@@ -3,7 +3,6 @@ title: 'useIndexOfLastVisibleChild'
3
3
  type: 'hook'
4
4
  categories:
5
5
  - Hooks
6
- - Layout
7
6
  components:
8
7
  - useIndexOfLastVisibleChild
9
8
  status: 'New'
@@ -3,7 +3,6 @@ title: 'useIsVisible'
3
3
  type: 'hook'
4
4
  categories:
5
5
  - Hooks
6
- - Layout
7
6
  components:
8
7
  - useIsVisible
9
8
  status: 'Stable'
@@ -3,7 +3,6 @@ title: 'useWindowSize'
3
3
  type: 'hook'
4
4
  categories:
5
5
  - Hooks
6
- - Layout
7
6
  components:
8
7
  - useWindowSize
9
8
  status: 'New'
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * IMPORTANT: This file is the result of assembling design tokens
3
3
  * Do not edit directly
4
- * Generated on Thu, 16 Nov 2023 10:44:11 GMT
4
+ * Generated on Wed, 06 Dec 2023 09:28:09 GMT
5
5
  */
6
6
 
7
7
  :root {
@@ -195,10 +195,6 @@
195
195
  --pgn-spacing-form-input-check-margin-x-inline: .3125rem;
196
196
  --pgn-spacing-form-input-check-margin-x-base: .25rem;
197
197
  --pgn-spacing-form-input-check-gutter: 1.25rem;
198
- --pgn-spacing-dropzone-border-error: 2px;
199
- --pgn-spacing-dropzone-border-active: 2px;
200
- --pgn-spacing-dropzone-border-focus: 2px;
201
- --pgn-spacing-dropzone-border-hover: 2px;
202
198
  --pgn-spacing-dropzone-border-base: 1px;
203
199
  --pgn-spacing-dropzone-padding: 1.5rem;
204
200
  --pgn-spacing-dropdown-close-container-top: .625rem;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * IMPORTANT: This file is the result of assembling design tokens
3
3
  * Do not edit directly
4
- * Generated on Wed, 15 Nov 2023 20:38:34 GMT
4
+ * Generated on Wed, 06 Dec 2023 09:28:09 GMT
5
5
  */
6
6
 
7
7
  :root {
@@ -922,7 +922,6 @@
922
922
  --pgn-color-form-input-border: var(--pgn-color-gray-500);
923
923
  --pgn-color-form-input-plaintext: var(--pgn-color-body-base);
924
924
  --pgn-color-form-input-placeholder: var(--pgn-color-gray-500);
925
- --pgn-color-dropzone-border-active: var(--pgn-color-primary-500);
926
925
  --pgn-color-dropzone-border-base: var(--pgn-color-gray-500);
927
926
  --pgn-color-dropzone-restriction-msg: var(--pgn-color-gray-500);
928
927
  --pgn-color-dropdown-link-active-base: var(--pgn-color-active);
@@ -1131,6 +1130,7 @@
1131
1130
  --pgn-color-bg-active: var(--pgn-color-primary-500);
1132
1131
  --pgn-elevation-pagination-focus-box-shadow: var(--pgn-elevation-input-btn-focus-box-shadow);
1133
1132
  --pgn-elevation-form-control-select-border-focus: var(--pgn-elevation-input-btn-focus-box-shadow);
1133
+ --pgn-elevation-dropzone-active: inset 0 0 0 2px var(--pgn-color-primary-500);
1134
1134
  --pgn-border-color-nav-tabs-link-border-focus: var(--pgn-color-nav-tabs-base-link-active-text);
1135
1135
  --pgn-border-color-nav-tabs-link-border-hover: transparent transparent var(--pgn-color-nav-tabs-base-border-base);
1136
1136
  --pgn-color-action-default-danger-900: #60161DFF;
@@ -1264,9 +1264,6 @@
1264
1264
  --pgn-color-form-input-focus-bg: var(--pgn-color-form-input-bg-base);
1265
1265
  --pgn-color-form-input-focus-border: var(--pgn-color-input-focus);
1266
1266
  --pgn-color-form-input-group-addon-border: var(--pgn-color-form-input-border);
1267
- --pgn-color-dropzone-border-error: var(--pgn-color-danger-300);
1268
- --pgn-color-dropzone-border-focus: var(--pgn-color-info-300);
1269
- --pgn-color-dropzone-border-hover: var(--pgn-color-info-300);
1270
1267
  --pgn-color-dropzone-error-wrapper: var(--pgn-color-danger-500);
1271
1268
  --pgn-color-dropdown-link-disabled: var(--pgn-color-disabled);
1272
1269
  --pgn-color-dropdown-link-active-bg: var(--pgn-color-bg-active);
@@ -1471,6 +1468,9 @@
1471
1468
  --pgn-other-content-form-control-checkbox-indicator-icon-checked-invalid: url("data:image/svg+xml,<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M21 3H3V21H21V3ZM10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z' fill='%23C32D3AFF'/></svg>");
1472
1469
  --pgn-other-content-form-control-checkbox-indicator-icon-checked-valid: url("data:image/svg+xml,<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M21 3H3V21H21V3ZM10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z' fill='%23178253FF'/></svg>");
1473
1470
  --pgn-elevation-form-control-range-thumb-focus: 0 0 0 1px var(--pgn-color-body-bg), var(--pgn-size-form-input-width-focus);
1471
+ --pgn-elevation-dropzone-error: inset 0 0 0 2px var(--pgn-color-danger-300);
1472
+ --pgn-elevation-dropzone-focus: inset 0 0 0 2px var(--pgn-color-info-300);
1473
+ --pgn-elevation-dropzone-hover: inset 0 0 0 2px var(--pgn-color-info-300);
1474
1474
  --pgn-color-pagination-border-active: var(--pgn-color-pagination-bg-active);
1475
1475
  --pgn-color-pagination-text-base: var(--pgn-color-link-base);
1476
1476
  --pgn-color-nav-tabs-inverse-link-bg-active: var(--pgn-color-nav-tabs-inverse-link-bg-hover);
@@ -6,6 +6,7 @@
6
6
  @import "~bootstrap/scss/reboot";
7
7
  @import "typography";
8
8
  @import "grid";
9
+ @import "~react-loading-skeleton/dist/skeleton.css";
9
10
  @import "~bootstrap/scss/transitions";
10
11
  @import "utilities";
11
12
  @import "~bootstrap/scss/media";
@@ -14,11 +14,7 @@
14
14
  "dropzone": {
15
15
  "padding": { "value": "1.5rem", "type": "dimension", "source": "$dropzone-padding" },
16
16
  "border": {
17
- "base": { "value": "1px", "type": "dimension", "source": "$dropzone-border-default" },
18
- "hover": { "value": "2px", "type": "dimension", "source": "$dropzone-border-hover" },
19
- "focus": { "value": "2px", "type": "dimension", "source": "$dropzone-border-focus" },
20
- "active": { "value": "2px", "type": "dimension", "source": "$dropzone-border-active" },
21
- "error": { "value": "2px", "type": "dimension", "source": "$dropzone-border-error" }
17
+ "base": { "value": "1px", "type": "dimension", "source": "$dropzone-border-default" }
22
18
  }
23
19
  }
24
20
  }
@@ -8,12 +8,16 @@
8
8
  "value": "{color.gray.500}", "type": "color", "source": "$dropzone-restriction-msg-color"
9
9
  },
10
10
  "border": {
11
- "base": { "value": "{color.gray.500}", "type": "color", "source": "$dropzone-border-color-default" },
12
- "hover": { "value": "{color.info.300}", "type": "color", "source": "$dropzone-border-color-hover" },
13
- "focus": { "value": "{color.info.300}", "type": "color", "source": "$dropzone-border-color-focus" },
14
- "active": { "value": "{color.primary.500}", "type": "color", "source": "$dropzone-border-color-active" },
15
- "error": { "value": "{color.danger.300}", "type": "color", "source": "$dropzone-border-color-error" }
11
+ "base": { "value": "{color.gray.500}", "type": "color", "source": "$dropzone-border-color-default" }
16
12
  }
17
13
  }
14
+ },
15
+ "elevation": {
16
+ "dropzone": {
17
+ "hover": { "value": "inset 0 0 0 2px {color.info.300}", "type": "shadow", "source": "$dropzone-box-shadow-hover" },
18
+ "focus": { "value": "inset 0 0 0 2px {color.info.300}", "type": "shadow", "source": "$dropzone-box-shadow-focus" },
19
+ "active": { "value": "inset 0 0 0 2px {color.primary.500}", "type": "shadow", "source": "$dropzone-box-shadow-active" },
20
+ "error": { "value": "inset 0 0 0 2px {color.danger.300}", "type": "shadow", "source": "$dropzone-box-shadow-error" }
21
+ }
18
22
  }
19
23
  }