@porsche-design-system/components-react 3.6.1 → 3.7.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/cjs/lib/components/multi-select-option.wrapper.cjs +25 -0
- package/cjs/lib/components/multi-select.wrapper.cjs +26 -0
- package/cjs/public-api.cjs +4 -0
- package/esm/lib/components/index.d.ts +2 -0
- package/esm/lib/components/multi-select-option.wrapper.d.ts +23 -0
- package/esm/lib/components/multi-select-option.wrapper.mjs +23 -0
- package/esm/lib/components/multi-select.wrapper.d.ts +104 -0
- package/esm/lib/components/multi-select.wrapper.mjs +24 -0
- package/esm/lib/types.d.ts +12 -0
- package/esm/public-api.mjs +2 -0
- package/package.json +2 -2
- package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +445 -239
- package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +6 -26
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/multi-select-option.wrapper.cjs +39 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/multi-select.wrapper.cjs +40 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox-wrapper.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-pure.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-social.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile-model-signature.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +83 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +99 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper-dropdown.cjs +5 -5
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/state-message.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal-item.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/switch.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-cell.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag-dismissible.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-field-wrapper.cjs +2 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/public-api.cjs +4 -0
- package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +411 -207
- package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +5 -24
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/multi-select-option.wrapper.mjs +37 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/multi-select.wrapper.mjs +38 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-group.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox-wrapper.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/content-wrapper.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/crest.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/display.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/divider.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset-wrapper.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flex-item.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flex.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/grid-item.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/grid.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/heading.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/headline.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/icon.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-pure.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-social.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile-model-signature.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/marque.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/model-signature.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +81 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +97 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper-dropdown.mjs +8 -8
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper.mjs +4 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/state-message.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal-item.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/switch.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-cell.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag-dismissible.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-field-wrapper.mjs +2 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/public-api.mjs +2 -0
- package/ssr/esm/lib/components/index.d.ts +2 -0
- package/ssr/esm/lib/components/multi-select-option.wrapper.d.ts +23 -0
- package/ssr/esm/lib/components/multi-select.wrapper.d.ts +104 -0
- package/ssr/esm/lib/dsr-components/multi-select-option.d.ts +6 -0
- package/ssr/esm/lib/dsr-components/multi-select.d.ts +17 -0
- package/ssr/esm/lib/types.d.ts +12 -0
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
14
14
|
|
|
15
15
|
### [Unreleased]
|
|
16
16
|
|
|
17
|
+
### [3.7.0-rc.0] - 2023-09-05
|
|
18
|
+
|
|
19
|
+
#### Added
|
|
20
|
+
|
|
21
|
+
- `Multi Select` ([#2658](https://github.com/porsche-design-system/porsche-design-system/pull/2658))
|
|
22
|
+
|
|
23
|
+
#### Changed
|
|
24
|
+
|
|
25
|
+
- Partials: `Cdn` and `Format` types are exposed
|
|
26
|
+
([#2760](https://github.com/porsche-design-system/porsche-design-system/pull/2760))
|
|
27
|
+
|
|
17
28
|
### [3.6.1] - 2023-08-29
|
|
18
29
|
|
|
19
30
|
### [3.6.1-rc.0] - 2023-08-29
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var hooks = require('../../hooks.cjs');
|
|
7
|
+
var utils = require('../../utils.cjs');
|
|
8
|
+
|
|
9
|
+
const PMultiSelectOption = react.forwardRef(({ disabled = false, value, className, ...rest }, ref) => {
|
|
10
|
+
const elementRef = react.useRef();
|
|
11
|
+
const WebComponentTag = hooks.usePrefix('p-multi-select-option');
|
|
12
|
+
const propsToSync = [disabled, value];
|
|
13
|
+
hooks.useBrowserLayoutEffect(() => {
|
|
14
|
+
const { current } = elementRef;
|
|
15
|
+
['disabled', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
16
|
+
}, propsToSync);
|
|
17
|
+
const props = {
|
|
18
|
+
...rest,
|
|
19
|
+
class: hooks.useMergedClass(elementRef, className),
|
|
20
|
+
ref: utils.syncRef(elementRef, ref)
|
|
21
|
+
};
|
|
22
|
+
return jsxRuntime.jsx(WebComponentTag, { ...props });
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
exports.PMultiSelectOption = PMultiSelectOption;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var hooks = require('../../hooks.cjs');
|
|
7
|
+
var utils = require('../../utils.cjs');
|
|
8
|
+
|
|
9
|
+
const PMultiSelect = react.forwardRef(({ description = '', disabled = false, dropdownDirection = 'auto', hideLabel = false, label = '', message = '', name, onUpdate, required = false, state = 'none', theme = 'light', value = [], className, ...rest }, ref) => {
|
|
10
|
+
const elementRef = react.useRef();
|
|
11
|
+
hooks.useEventCallback(elementRef, 'update', onUpdate);
|
|
12
|
+
const WebComponentTag = hooks.usePrefix('p-multi-select');
|
|
13
|
+
const propsToSync = [description, disabled, dropdownDirection, hideLabel, label, message, name, required, state, theme, value];
|
|
14
|
+
hooks.useBrowserLayoutEffect(() => {
|
|
15
|
+
const { current } = elementRef;
|
|
16
|
+
['description', 'disabled', 'dropdownDirection', 'hideLabel', 'label', 'message', 'name', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
17
|
+
}, propsToSync);
|
|
18
|
+
const props = {
|
|
19
|
+
...rest,
|
|
20
|
+
class: hooks.useMergedClass(elementRef, className),
|
|
21
|
+
ref: utils.syncRef(elementRef, ref)
|
|
22
|
+
};
|
|
23
|
+
return jsxRuntime.jsx(WebComponentTag, { ...props });
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
exports.PMultiSelect = PMultiSelect;
|
package/cjs/public-api.cjs
CHANGED
|
@@ -32,6 +32,8 @@ var linkTileModelSignature_wrapper = require('./lib/components/link-tile-model-s
|
|
|
32
32
|
var marque_wrapper = require('./lib/components/marque.wrapper.cjs');
|
|
33
33
|
var modal_wrapper = require('./lib/components/modal.wrapper.cjs');
|
|
34
34
|
var modelSignature_wrapper = require('./lib/components/model-signature.wrapper.cjs');
|
|
35
|
+
var multiSelect_wrapper = require('./lib/components/multi-select.wrapper.cjs');
|
|
36
|
+
var multiSelectOption_wrapper = require('./lib/components/multi-select-option.wrapper.cjs');
|
|
35
37
|
var pagination_wrapper = require('./lib/components/pagination.wrapper.cjs');
|
|
36
38
|
var popover_wrapper = require('./lib/components/popover.wrapper.cjs');
|
|
37
39
|
var radioButtonWrapper_wrapper = require('./lib/components/radio-button-wrapper.wrapper.cjs');
|
|
@@ -103,6 +105,8 @@ exports.PLinkTileModelSignature = linkTileModelSignature_wrapper.PLinkTileModelS
|
|
|
103
105
|
exports.PMarque = marque_wrapper.PMarque;
|
|
104
106
|
exports.PModal = modal_wrapper.PModal;
|
|
105
107
|
exports.PModelSignature = modelSignature_wrapper.PModelSignature;
|
|
108
|
+
exports.PMultiSelect = multiSelect_wrapper.PMultiSelect;
|
|
109
|
+
exports.PMultiSelectOption = multiSelectOption_wrapper.PMultiSelectOption;
|
|
106
110
|
exports.PPagination = pagination_wrapper.PPagination;
|
|
107
111
|
exports.PPopover = popover_wrapper.PPopover;
|
|
108
112
|
exports.PRadioButtonWrapper = radioButtonWrapper_wrapper.PRadioButtonWrapper;
|
|
@@ -29,6 +29,8 @@ export * from './link-tile-model-signature.wrapper';
|
|
|
29
29
|
export * from './marque.wrapper';
|
|
30
30
|
export * from './modal.wrapper';
|
|
31
31
|
export * from './model-signature.wrapper';
|
|
32
|
+
export * from './multi-select.wrapper';
|
|
33
|
+
export * from './multi-select-option.wrapper';
|
|
32
34
|
export * from './pagination.wrapper';
|
|
33
35
|
export * from './popover.wrapper';
|
|
34
36
|
export * from './radio-button-wrapper.wrapper';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
export type PMultiSelectOptionProps = Omit<HTMLAttributes<{}>, 'color'> & {
|
|
3
|
+
/**
|
|
4
|
+
* Disables the option.
|
|
5
|
+
*/
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* The option value.
|
|
9
|
+
*/
|
|
10
|
+
value: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const PMultiSelectOption: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<{}>, "color"> & {
|
|
13
|
+
/**
|
|
14
|
+
* Disables the option.
|
|
15
|
+
*/
|
|
16
|
+
disabled?: boolean | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* The option value.
|
|
19
|
+
*/
|
|
20
|
+
value: string;
|
|
21
|
+
} & {
|
|
22
|
+
children?: import("react").ReactNode;
|
|
23
|
+
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useRef } from 'react';
|
|
4
|
+
import { usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
|
|
5
|
+
import { syncRef } from '../../utils.mjs';
|
|
6
|
+
|
|
7
|
+
const PMultiSelectOption = forwardRef(({ disabled = false, value, className, ...rest }, ref) => {
|
|
8
|
+
const elementRef = useRef();
|
|
9
|
+
const WebComponentTag = usePrefix('p-multi-select-option');
|
|
10
|
+
const propsToSync = [disabled, value];
|
|
11
|
+
useBrowserLayoutEffect(() => {
|
|
12
|
+
const { current } = elementRef;
|
|
13
|
+
['disabled', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
14
|
+
}, propsToSync);
|
|
15
|
+
const props = {
|
|
16
|
+
...rest,
|
|
17
|
+
class: useMergedClass(elementRef, className),
|
|
18
|
+
ref: syncRef(elementRef, ref)
|
|
19
|
+
};
|
|
20
|
+
return jsx(WebComponentTag, { ...props });
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export { PMultiSelectOption };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
import type { MultiSelectDropdownDirection, BreakpointCustomizable, MultiSelectUpdateEvent, MultiSelectState, Theme } from '../types';
|
|
3
|
+
export type PMultiSelectProps = Omit<HTMLAttributes<{}>, 'color'> & {
|
|
4
|
+
/**
|
|
5
|
+
* The description text.
|
|
6
|
+
*/
|
|
7
|
+
description?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Disables the multi-select
|
|
10
|
+
*/
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Changes the direction to which the dropdown list appears.
|
|
14
|
+
*/
|
|
15
|
+
dropdownDirection?: MultiSelectDropdownDirection;
|
|
16
|
+
/**
|
|
17
|
+
* Show or hide label. For better accessibility it is recommended to show the label.
|
|
18
|
+
*/
|
|
19
|
+
hideLabel?: BreakpointCustomizable<boolean>;
|
|
20
|
+
/**
|
|
21
|
+
* The label text.
|
|
22
|
+
*/
|
|
23
|
+
label?: string;
|
|
24
|
+
/**
|
|
25
|
+
* The message styled depending on validation state.
|
|
26
|
+
*/
|
|
27
|
+
message?: string;
|
|
28
|
+
/**
|
|
29
|
+
* The name of the control.
|
|
30
|
+
*/
|
|
31
|
+
name: string;
|
|
32
|
+
/**
|
|
33
|
+
* Emitted when the selection is changed.
|
|
34
|
+
*/
|
|
35
|
+
onUpdate?: (event: CustomEvent<MultiSelectUpdateEvent>) => void;
|
|
36
|
+
/**
|
|
37
|
+
* A Boolean attribute indicating that an option with a non-empty string value must be selected.
|
|
38
|
+
*/
|
|
39
|
+
required?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* The validation state.
|
|
42
|
+
*/
|
|
43
|
+
state?: MultiSelectState;
|
|
44
|
+
/**
|
|
45
|
+
* Adapts the select color depending on the theme.
|
|
46
|
+
*/
|
|
47
|
+
theme?: Theme;
|
|
48
|
+
/**
|
|
49
|
+
* The selected values.
|
|
50
|
+
*/
|
|
51
|
+
value?: string[];
|
|
52
|
+
};
|
|
53
|
+
export declare const PMultiSelect: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<{}>, "color"> & {
|
|
54
|
+
/**
|
|
55
|
+
* The description text.
|
|
56
|
+
*/
|
|
57
|
+
description?: string | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Disables the multi-select
|
|
60
|
+
*/
|
|
61
|
+
disabled?: boolean | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Changes the direction to which the dropdown list appears.
|
|
64
|
+
*/
|
|
65
|
+
dropdownDirection?: "auto" | "down" | "up" | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Show or hide label. For better accessibility it is recommended to show the label.
|
|
68
|
+
*/
|
|
69
|
+
hideLabel?: BreakpointCustomizable<boolean> | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* The label text.
|
|
72
|
+
*/
|
|
73
|
+
label?: string | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* The message styled depending on validation state.
|
|
76
|
+
*/
|
|
77
|
+
message?: string | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* The name of the control.
|
|
80
|
+
*/
|
|
81
|
+
name: string;
|
|
82
|
+
/**
|
|
83
|
+
* Emitted when the selection is changed.
|
|
84
|
+
*/
|
|
85
|
+
onUpdate?: ((event: CustomEvent<MultiSelectUpdateEvent>) => void) | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* A Boolean attribute indicating that an option with a non-empty string value must be selected.
|
|
88
|
+
*/
|
|
89
|
+
required?: boolean | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* The validation state.
|
|
92
|
+
*/
|
|
93
|
+
state?: "none" | "success" | "error" | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* Adapts the select color depending on the theme.
|
|
96
|
+
*/
|
|
97
|
+
theme?: "light" | "dark" | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* The selected values.
|
|
100
|
+
*/
|
|
101
|
+
value?: string[] | undefined;
|
|
102
|
+
} & {
|
|
103
|
+
children?: import("react").ReactNode;
|
|
104
|
+
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useRef } from 'react';
|
|
4
|
+
import { useEventCallback, usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
|
|
5
|
+
import { syncRef } from '../../utils.mjs';
|
|
6
|
+
|
|
7
|
+
const PMultiSelect = forwardRef(({ description = '', disabled = false, dropdownDirection = 'auto', hideLabel = false, label = '', message = '', name, onUpdate, required = false, state = 'none', theme = 'light', value = [], className, ...rest }, ref) => {
|
|
8
|
+
const elementRef = useRef();
|
|
9
|
+
useEventCallback(elementRef, 'update', onUpdate);
|
|
10
|
+
const WebComponentTag = usePrefix('p-multi-select');
|
|
11
|
+
const propsToSync = [description, disabled, dropdownDirection, hideLabel, label, message, name, required, state, theme, value];
|
|
12
|
+
useBrowserLayoutEffect(() => {
|
|
13
|
+
const { current } = elementRef;
|
|
14
|
+
['description', 'disabled', 'dropdownDirection', 'hideLabel', 'label', 'message', 'name', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
15
|
+
}, propsToSync);
|
|
16
|
+
const props = {
|
|
17
|
+
...rest,
|
|
18
|
+
class: useMergedClass(elementRef, className),
|
|
19
|
+
ref: syncRef(elementRef, ref)
|
|
20
|
+
};
|
|
21
|
+
return jsx(WebComponentTag, { ...props });
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export { PMultiSelect };
|
package/esm/lib/types.d.ts
CHANGED
|
@@ -501,6 +501,12 @@ declare const SCROLL_INDICATOR_POSITIONS: readonly [
|
|
|
501
501
|
/** @deprecated */
|
|
502
502
|
export type ScrollerScrollIndicatorPosition = (typeof SCROLL_INDICATOR_POSITIONS)[number];
|
|
503
503
|
export type ScrollerAlignScrollIndicator = ScrollerScrollIndicatorPosition;
|
|
504
|
+
declare const SELECT_DROPDOWN_DIRECTIONS: readonly [
|
|
505
|
+
"down",
|
|
506
|
+
"up",
|
|
507
|
+
"auto"
|
|
508
|
+
];
|
|
509
|
+
export type SelectDropdownDirection = (typeof SELECT_DROPDOWN_DIRECTIONS)[number];
|
|
504
510
|
declare const ALIGN_LABELS: readonly [
|
|
505
511
|
"left",
|
|
506
512
|
"right"
|
|
@@ -1006,6 +1012,12 @@ declare const MODEL_SIGNATURE_COLORS: readonly [
|
|
|
1006
1012
|
"inherit"
|
|
1007
1013
|
];
|
|
1008
1014
|
export type ModelSignatureColor = (typeof MODEL_SIGNATURE_COLORS)[number];
|
|
1015
|
+
export type MultiSelectState = FormState;
|
|
1016
|
+
export type MultiSelectDropdownDirection = SelectDropdownDirection;
|
|
1017
|
+
export type MultiSelectUpdateEvent = {
|
|
1018
|
+
value: string[];
|
|
1019
|
+
name: string;
|
|
1020
|
+
};
|
|
1009
1021
|
declare const PAGINATION_NUMBER_OF_PAGE_LINKS: readonly [
|
|
1010
1022
|
5,
|
|
1011
1023
|
7
|
package/esm/public-api.mjs
CHANGED
|
@@ -30,6 +30,8 @@ export { PLinkTileModelSignature } from './lib/components/link-tile-model-signat
|
|
|
30
30
|
export { PMarque } from './lib/components/marque.wrapper.mjs';
|
|
31
31
|
export { PModal } from './lib/components/modal.wrapper.mjs';
|
|
32
32
|
export { PModelSignature } from './lib/components/model-signature.wrapper.mjs';
|
|
33
|
+
export { PMultiSelect } from './lib/components/multi-select.wrapper.mjs';
|
|
34
|
+
export { PMultiSelectOption } from './lib/components/multi-select-option.wrapper.mjs';
|
|
33
35
|
export { PPagination } from './lib/components/pagination.wrapper.mjs';
|
|
34
36
|
export { PPopover } from './lib/components/popover.wrapper.mjs';
|
|
35
37
|
export { PRadioButtonWrapper } from './lib/components/radio-button-wrapper.wrapper.mjs';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@porsche-design-system/components-react",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0-rc.0",
|
|
4
4
|
"description": "Porsche Design System is a component library designed to help developers create the best experience for software or services distributed by Dr. Ing. h.c. F. Porsche AG.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"porsche",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"license": "SEE LICENSE IN LICENSE",
|
|
18
18
|
"homepage": "https://designsystem.porsche.com",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@porsche-design-system/components-js": "3.
|
|
20
|
+
"@porsche-design-system/components-js": "3.7.0-rc.0"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
23
|
"react": ">=17.0.0 <19.0.0",
|