@dt-dds/react-select 1.0.0-beta.68 → 1.0.0-beta.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @dt-ui/react-select
2
2
 
3
+ ## 1.0.0-beta.69
4
+
5
+ ### Minor Changes
6
+
7
+ - feat: add accessibility to Dropdown
8
+
9
+ ### Patch Changes
10
+
11
+ - refactor: fix sonar issues on Dropdown and Select
12
+ - Updated dependencies
13
+ - Updated dependencies
14
+ - Updated dependencies [223664b]
15
+ - @dt-dds/react-dropdown@1.0.0-beta.78
16
+ - @dt-dds/react-box@1.0.0-beta.57
17
+
3
18
  ## 1.0.0-beta.68
4
19
 
5
20
  ### Minor Changes
package/dist/index.js CHANGED
@@ -148,10 +148,8 @@ var SelectOption = ({
148
148
  children: isMulti ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
149
149
  SelectCheckboxStyled,
150
150
  {
151
- "aria-hidden": "true",
152
151
  isChecked: isSelected,
153
152
  isDisabled,
154
- role: "presentation",
155
153
  tabIndex: -1,
156
154
  children
157
155
  }
@@ -183,9 +181,13 @@ var TypographyValueStyled = (0, import_styled2.default)(import_react_typography.
183
181
  text-overflow: ellipsis;
184
182
  white-space: nowrap;
185
183
 
186
- ${({ theme, scale, isFloatingLabel }) => `
187
- ${isFloatingLabel ? `padding-top: ${scale === "standard" ? theme.spacing.spacing_50 : theme.spacing.spacing_40};` : `padding-block: ${scale === "standard" ? theme.spacing.spacing_30 : theme.spacing.spacing_20};`}
188
- `}
184
+ ${({ theme, scale, isFloatingLabel }) => {
185
+ const paddingTop = scale === "standard" ? theme.spacing.spacing_50 : theme.spacing.spacing_40;
186
+ const paddingBlock = scale === "standard" ? theme.spacing.spacing_30 : theme.spacing.spacing_20;
187
+ return `
188
+ ${isFloatingLabel ? `padding-top: ${paddingTop};` : `padding-block: ${paddingBlock};`}
189
+ `;
190
+ }}
189
191
  `;
190
192
  var SelectContainerStyled = import_styled2.default.div`
191
193
  transition: border 0.2s ease-in-out;
@@ -338,6 +340,41 @@ var Select = ({
338
340
  }
339
341
  return selectedItems.length > 1 ? `${selectedItems.length} options selected` : (_a2 = selectedItems[0]) == null ? void 0 : _a2.label;
340
342
  };
343
+ const selectStateReducer = (state, actionAndChanges) => {
344
+ const { changes, type } = actionAndChanges;
345
+ switch (type) {
346
+ case useSelect.stateChangeTypes.ToggleButtonBlur:
347
+ return __spreadProps(__spreadValues({}, changes), {
348
+ isOpen: false,
349
+ selectedItem: state.selectedItem,
350
+ highlightedIndex: state.highlightedIndex
351
+ });
352
+ case useSelect.stateChangeTypes.ItemClick:
353
+ case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
354
+ case useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
355
+ return isMulti ? __spreadProps(__spreadValues({}, changes), {
356
+ isOpen: true,
357
+ highlightedIndex: state.highlightedIndex
358
+ }) : changes;
359
+ default:
360
+ return changes;
361
+ }
362
+ };
363
+ const handleSelectedItemChange = ({
364
+ selectedItem
365
+ }) => {
366
+ if (!selectedItem) {
367
+ return;
368
+ }
369
+ if (isMulti) {
370
+ const currentValue = Array.isArray(value) ? value : [];
371
+ const isSelectedItem = selectedOptionsSet.has(selectedItem.value);
372
+ const nextValue = isSelectedItem ? currentValue.filter((v) => v !== selectedItem.value) : [...currentValue, selectedItem.value];
373
+ onChange == null ? void 0 : onChange(nextValue);
374
+ return;
375
+ }
376
+ onChange == null ? void 0 : onChange(selectedItem.value);
377
+ };
341
378
  const {
342
379
  isOpen,
343
380
  closeMenu,
@@ -353,41 +390,16 @@ var Select = ({
353
390
  },
354
391
  defaultHighlightedIndex: isMulti || !(selectedItems == null ? void 0 : selectedItems[0]) ? 0 : void 0,
355
392
  selectedItem: !isMulti ? (_a = selectedItems == null ? void 0 : selectedItems[0]) != null ? _a : null : null,
356
- stateReducer(state, actionAndChanges) {
357
- const { changes, type } = actionAndChanges;
358
- switch (type) {
359
- case useSelect.stateChangeTypes.ToggleButtonBlur:
360
- return __spreadProps(__spreadValues({}, changes), {
361
- isOpen: false,
362
- selectedItem: state.selectedItem,
363
- highlightedIndex: state.highlightedIndex
364
- });
365
- case useSelect.stateChangeTypes.ItemClick:
366
- case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
367
- case useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
368
- return isMulti ? __spreadProps(__spreadValues({}, changes), {
369
- isOpen: true,
370
- highlightedIndex: state.highlightedIndex
371
- }) : changes;
372
- default:
373
- return changes;
374
- }
375
- },
376
- onSelectedItemChange: ({ selectedItem }) => {
377
- if (!selectedItem) {
378
- return;
379
- }
380
- if (isMulti) {
381
- const currentValue = Array.isArray(value) ? value : [];
382
- const isSelectedItem = selectedOptionsSet.has(selectedItem.value);
383
- const nextValue = isSelectedItem ? currentValue.filter((v) => v !== selectedItem.value) : [...currentValue, selectedItem.value];
384
- onChange == null ? void 0 : onChange(nextValue);
385
- return;
386
- }
387
- onChange == null ? void 0 : onChange(selectedItem.value);
388
- }
393
+ stateReducer: selectStateReducer,
394
+ onSelectedItemChange: handleSelectedItemChange
389
395
  });
390
396
  const disabled = isDisabled || options.length === 1;
397
+ const helperTextColor = (isDisabled2, hasError2) => {
398
+ if (isDisabled2) {
399
+ return "content.light";
400
+ }
401
+ return hasError2 ? "error.default" : "content.medium";
402
+ };
391
403
  const toggleProps = getToggleButtonProps({
392
404
  disabled,
393
405
  tabIndex: disabled ? -1 : 0,
@@ -479,7 +491,7 @@ var Select = ({
479
491
  helperText ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
480
492
  TypographyHelperTextStyled,
481
493
  {
482
- color: isDisabled ? "content.light" : hasError ? "error.default" : "content.medium",
494
+ color: helperTextColor(!!isDisabled, hasError),
483
495
  dataTestId: "select-helper-text",
484
496
  element: "span",
485
497
  fontStyles: "bodySmRegular",
@@ -493,6 +505,7 @@ var Select = ({
493
505
  anchorRef,
494
506
  "aria-multiselectable": isMulti,
495
507
  as: "ul",
508
+ isFocusable: false,
496
509
  isOpen,
497
510
  onClose: closeMenu,
498
511
  children
package/dist/index.mjs CHANGED
@@ -120,10 +120,8 @@ var SelectOption = ({
120
120
  children: isMulti ? /* @__PURE__ */ jsx2(
121
121
  SelectCheckboxStyled,
122
122
  {
123
- "aria-hidden": "true",
124
123
  isChecked: isSelected,
125
124
  isDisabled,
126
- role: "presentation",
127
125
  tabIndex: -1,
128
126
  children
129
127
  }
@@ -155,9 +153,13 @@ var TypographyValueStyled = styled2(Typography, {
155
153
  text-overflow: ellipsis;
156
154
  white-space: nowrap;
157
155
 
158
- ${({ theme, scale, isFloatingLabel }) => `
159
- ${isFloatingLabel ? `padding-top: ${scale === "standard" ? theme.spacing.spacing_50 : theme.spacing.spacing_40};` : `padding-block: ${scale === "standard" ? theme.spacing.spacing_30 : theme.spacing.spacing_20};`}
160
- `}
156
+ ${({ theme, scale, isFloatingLabel }) => {
157
+ const paddingTop = scale === "standard" ? theme.spacing.spacing_50 : theme.spacing.spacing_40;
158
+ const paddingBlock = scale === "standard" ? theme.spacing.spacing_30 : theme.spacing.spacing_20;
159
+ return `
160
+ ${isFloatingLabel ? `padding-top: ${paddingTop};` : `padding-block: ${paddingBlock};`}
161
+ `;
162
+ }}
161
163
  `;
162
164
  var SelectContainerStyled = styled2.div`
163
165
  transition: border 0.2s ease-in-out;
@@ -310,6 +312,41 @@ var Select = ({
310
312
  }
311
313
  return selectedItems.length > 1 ? `${selectedItems.length} options selected` : (_a2 = selectedItems[0]) == null ? void 0 : _a2.label;
312
314
  };
315
+ const selectStateReducer = (state, actionAndChanges) => {
316
+ const { changes, type } = actionAndChanges;
317
+ switch (type) {
318
+ case useSelect.stateChangeTypes.ToggleButtonBlur:
319
+ return __spreadProps(__spreadValues({}, changes), {
320
+ isOpen: false,
321
+ selectedItem: state.selectedItem,
322
+ highlightedIndex: state.highlightedIndex
323
+ });
324
+ case useSelect.stateChangeTypes.ItemClick:
325
+ case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
326
+ case useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
327
+ return isMulti ? __spreadProps(__spreadValues({}, changes), {
328
+ isOpen: true,
329
+ highlightedIndex: state.highlightedIndex
330
+ }) : changes;
331
+ default:
332
+ return changes;
333
+ }
334
+ };
335
+ const handleSelectedItemChange = ({
336
+ selectedItem
337
+ }) => {
338
+ if (!selectedItem) {
339
+ return;
340
+ }
341
+ if (isMulti) {
342
+ const currentValue = Array.isArray(value) ? value : [];
343
+ const isSelectedItem = selectedOptionsSet.has(selectedItem.value);
344
+ const nextValue = isSelectedItem ? currentValue.filter((v) => v !== selectedItem.value) : [...currentValue, selectedItem.value];
345
+ onChange == null ? void 0 : onChange(nextValue);
346
+ return;
347
+ }
348
+ onChange == null ? void 0 : onChange(selectedItem.value);
349
+ };
313
350
  const {
314
351
  isOpen,
315
352
  closeMenu,
@@ -325,41 +362,16 @@ var Select = ({
325
362
  },
326
363
  defaultHighlightedIndex: isMulti || !(selectedItems == null ? void 0 : selectedItems[0]) ? 0 : void 0,
327
364
  selectedItem: !isMulti ? (_a = selectedItems == null ? void 0 : selectedItems[0]) != null ? _a : null : null,
328
- stateReducer(state, actionAndChanges) {
329
- const { changes, type } = actionAndChanges;
330
- switch (type) {
331
- case useSelect.stateChangeTypes.ToggleButtonBlur:
332
- return __spreadProps(__spreadValues({}, changes), {
333
- isOpen: false,
334
- selectedItem: state.selectedItem,
335
- highlightedIndex: state.highlightedIndex
336
- });
337
- case useSelect.stateChangeTypes.ItemClick:
338
- case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
339
- case useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
340
- return isMulti ? __spreadProps(__spreadValues({}, changes), {
341
- isOpen: true,
342
- highlightedIndex: state.highlightedIndex
343
- }) : changes;
344
- default:
345
- return changes;
346
- }
347
- },
348
- onSelectedItemChange: ({ selectedItem }) => {
349
- if (!selectedItem) {
350
- return;
351
- }
352
- if (isMulti) {
353
- const currentValue = Array.isArray(value) ? value : [];
354
- const isSelectedItem = selectedOptionsSet.has(selectedItem.value);
355
- const nextValue = isSelectedItem ? currentValue.filter((v) => v !== selectedItem.value) : [...currentValue, selectedItem.value];
356
- onChange == null ? void 0 : onChange(nextValue);
357
- return;
358
- }
359
- onChange == null ? void 0 : onChange(selectedItem.value);
360
- }
365
+ stateReducer: selectStateReducer,
366
+ onSelectedItemChange: handleSelectedItemChange
361
367
  });
362
368
  const disabled = isDisabled || options.length === 1;
369
+ const helperTextColor = (isDisabled2, hasError2) => {
370
+ if (isDisabled2) {
371
+ return "content.light";
372
+ }
373
+ return hasError2 ? "error.default" : "content.medium";
374
+ };
363
375
  const toggleProps = getToggleButtonProps({
364
376
  disabled,
365
377
  tabIndex: disabled ? -1 : 0,
@@ -451,7 +463,7 @@ var Select = ({
451
463
  helperText ? /* @__PURE__ */ jsx3(
452
464
  TypographyHelperTextStyled,
453
465
  {
454
- color: isDisabled ? "content.light" : hasError ? "error.default" : "content.medium",
466
+ color: helperTextColor(!!isDisabled, hasError),
455
467
  dataTestId: "select-helper-text",
456
468
  element: "span",
457
469
  fontStyles: "bodySmRegular",
@@ -465,6 +477,7 @@ var Select = ({
465
477
  anchorRef,
466
478
  "aria-multiselectable": isMulti,
467
479
  as: "ul",
480
+ isFocusable: false,
468
481
  isOpen,
469
482
  onClose: closeMenu,
470
483
  children
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dt-dds/react-select",
3
- "version": "1.0.0-beta.68",
3
+ "version": "1.0.0-beta.69",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": "./dist/index.js"
@@ -20,10 +20,10 @@
20
20
  "test:update:snapshot": "jest -u"
21
21
  },
22
22
  "dependencies": {
23
- "@dt-dds/react-box": "1.0.0-beta.56",
23
+ "@dt-dds/react-box": "1.0.0-beta.57",
24
24
  "@dt-dds/react-checkbox": "1.0.0-beta.52",
25
25
  "@dt-dds/react-core": "1.0.0-beta.51",
26
- "@dt-dds/react-dropdown": "1.0.0-beta.77",
26
+ "@dt-dds/react-dropdown": "1.0.0-beta.78",
27
27
  "@dt-dds/react-icon": "1.0.0-beta.54",
28
28
  "@dt-dds/react-icon-button": "1.0.0-beta.20",
29
29
  "@dt-dds/react-label-field": "1.0.0-beta.52",