@porsche-design-system/components-react 3.29.0-rc.3 → 3.29.0-rc.4
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 +25 -0
- package/cjs/lib/components/fieldset.wrapper.cjs +3 -3
- package/cjs/lib/components/flag.wrapper.cjs +26 -0
- package/cjs/lib/components/input-date.wrapper.cjs +29 -0
- package/cjs/lib/components/input-tel.wrapper.cjs +29 -0
- package/cjs/lib/components/input-time.wrapper.cjs +29 -0
- package/cjs/lib/components/input-url.wrapper.cjs +29 -0
- package/cjs/lib/components/multi-select.wrapper.cjs +3 -3
- package/cjs/lib/components/scroller.wrapper.cjs +1 -1
- package/cjs/lib/components/tabs-bar.wrapper.cjs +1 -1
- package/cjs/lib/components/tabs.wrapper.cjs +1 -1
- package/cjs/public-api.cjs +10 -0
- package/esm/lib/components/fieldset.wrapper.d.ts +9 -1
- package/esm/lib/components/fieldset.wrapper.mjs +3 -3
- package/esm/lib/components/flag.wrapper.d.ts +30 -0
- package/esm/lib/components/flag.wrapper.mjs +24 -0
- package/esm/lib/components/index.d.ts +5 -0
- package/esm/lib/components/input-date.wrapper.d.ts +176 -0
- package/esm/lib/components/input-date.wrapper.mjs +27 -0
- package/esm/lib/components/input-email.wrapper.d.ts +2 -2
- package/esm/lib/components/input-number.wrapper.d.ts +2 -2
- package/esm/lib/components/input-password.wrapper.d.ts +2 -2
- package/esm/lib/components/input-tel.wrapper.d.ts +192 -0
- package/esm/lib/components/input-tel.wrapper.mjs +27 -0
- package/esm/lib/components/input-time.wrapper.d.ts +176 -0
- package/esm/lib/components/input-time.wrapper.mjs +27 -0
- package/esm/lib/components/input-url.wrapper.d.ts +192 -0
- package/esm/lib/components/input-url.wrapper.mjs +27 -0
- package/esm/lib/components/multi-select.wrapper.d.ts +8 -0
- package/esm/lib/components/multi-select.wrapper.mjs +3 -3
- package/esm/lib/components/scroller.wrapper.d.ts +4 -4
- package/esm/lib/components/scroller.wrapper.mjs +1 -1
- package/esm/lib/components/tabs-bar.wrapper.d.ts +4 -4
- package/esm/lib/components/tabs-bar.wrapper.mjs +1 -1
- package/esm/lib/components/tabs.wrapper.d.ts +2 -2
- package/esm/lib/components/tabs.wrapper.mjs +1 -1
- package/esm/lib/types.d.ts +149 -14
- package/esm/public-api.mjs +5 -0
- package/package.json +2 -2
- package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +532 -515
- package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +46 -35
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/fieldset.wrapper.cjs +4 -4
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/flag.wrapper.cjs +36 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-date.wrapper.cjs +40 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-tel.wrapper.cjs +40 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-time.wrapper.cjs +40 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-url.wrapper.cjs +40 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/multi-select.wrapper.cjs +4 -4
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/scroller.wrapper.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/tabs-bar.wrapper.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/tabs.wrapper.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.cjs +3 -2
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flag.cjs +17 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.cjs +44 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.cjs +43 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.cjs +44 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.cjs +43 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +15 -6
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/no-results-option.cjs +9 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.cjs +1 -5
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +8 -5
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/public-api.cjs +10 -0
- package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +492 -481
- package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +42 -34
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/fieldset.wrapper.mjs +4 -4
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/flag.wrapper.mjs +34 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-date.wrapper.mjs +38 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-tel.wrapper.mjs +38 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-time.wrapper.mjs +38 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-url.wrapper.mjs +38 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/multi-select.wrapper.mjs +4 -4
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/scroller.wrapper.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/tabs-bar.wrapper.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/tabs.wrapper.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.mjs +2 -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 +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox-wrapper.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.mjs +2 -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/drilldown-item.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-link.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown.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 +5 -4
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flag.mjs +15 -0
- 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 +2 -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 +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.mjs +42 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.mjs +41 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.mjs +42 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.mjs +41 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +18 -9
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/no-results-option.mjs +7 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/optgroup.mjs +2 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.mjs +1 -5
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +9 -6
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/public-api.mjs +5 -0
- package/ssr/esm/lib/components/fieldset.wrapper.d.ts +9 -1
- package/ssr/esm/lib/components/flag.wrapper.d.ts +30 -0
- package/ssr/esm/lib/components/index.d.ts +5 -0
- package/ssr/esm/lib/components/input-date.wrapper.d.ts +176 -0
- package/ssr/esm/lib/components/input-email.wrapper.d.ts +2 -2
- package/ssr/esm/lib/components/input-number.wrapper.d.ts +2 -2
- package/ssr/esm/lib/components/input-password.wrapper.d.ts +2 -2
- package/ssr/esm/lib/components/input-tel.wrapper.d.ts +192 -0
- package/ssr/esm/lib/components/input-time.wrapper.d.ts +176 -0
- package/ssr/esm/lib/components/input-url.wrapper.d.ts +192 -0
- package/ssr/esm/lib/components/multi-select.wrapper.d.ts +8 -0
- package/ssr/esm/lib/components/scroller.wrapper.d.ts +4 -4
- package/ssr/esm/lib/components/tabs-bar.wrapper.d.ts +4 -4
- package/ssr/esm/lib/components/tabs.wrapper.d.ts +2 -2
- package/ssr/esm/lib/dsr-components/flag.d.ts +5 -0
- package/ssr/esm/lib/dsr-components/input-base.d.ts +2 -2
- package/ssr/esm/lib/dsr-components/input-date.d.ts +19 -0
- package/ssr/esm/lib/dsr-components/input-tel.d.ts +19 -0
- package/ssr/esm/lib/dsr-components/input-time.d.ts +19 -0
- package/ssr/esm/lib/dsr-components/input-url.d.ts +19 -0
- package/ssr/esm/lib/dsr-components/multi-select.d.ts +5 -1
- package/ssr/esm/lib/dsr-components/no-results-option.d.ts +2 -0
- package/ssr/esm/lib/dsr-components/select.d.ts +4 -1
- package/ssr/esm/lib/types.d.ts +149 -14
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
|
|
|
14
14
|
|
|
15
15
|
## [Unreleased]
|
|
16
16
|
|
|
17
|
+
## [3.29.0-rc.4] - 2025-08-15
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- `Flag`: ([#3964](https://github.com/porsche-design-system/porsche-design-system/pull/3964))
|
|
22
|
+
- `Input Url`: ([#3949](https://github.com/porsche-design-system/porsche-design-system/pull/3949))
|
|
23
|
+
- `Multi Select`: `compact` prop to enable a smaller, space-saving version for compact layouts
|
|
24
|
+
([#3953](https://github.com/porsche-design-system/porsche-design-system/pull/3953))
|
|
25
|
+
- `Fieldset`: ARIA role `radiogroup` is now supported via `aria` prop. Internal ARIA attributes for `aria-invalid` and
|
|
26
|
+
`aria-required`. ([#3957](https://github.com/porsche-design-system/porsche-design-system/pull/3957))
|
|
27
|
+
- `Input Date`, `Input Time`: ([#3954](https://github.com/porsche-design-system/porsche-design-system/pull/3954))
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- `Multi Select`, `Select`: `background` is now transparent to be aligned with other form fields
|
|
32
|
+
([#3953](https://github.com/porsche-design-system/porsche-design-system/pull/3953))
|
|
33
|
+
- `Multi Select`, `Select`: improved a11y and highlight of options
|
|
34
|
+
([#3953](https://github.com/porsche-design-system/porsche-design-system/pull/3953))
|
|
35
|
+
- `Multi Select`: aligned filter and keyboard behavior with `Select`
|
|
36
|
+
([#3943](https://github.com/porsche-design-system/porsche-design-system/pull/3943))
|
|
37
|
+
- `Scroller`: Deprecation of prop `gradientColor` because gradient is now managed internally and adapts to all themes
|
|
38
|
+
and background colors automatically.
|
|
39
|
+
([#3962](https://github.com/porsche-design-system/porsche-design-system/pull/3962))
|
|
40
|
+
|
|
17
41
|
## [3.29.0-rc.3] - 2025-07-29
|
|
18
42
|
|
|
19
43
|
### Fixed
|
|
@@ -38,6 +62,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
|
|
|
38
62
|
- `Input Text`: `counter` prop functions independently of `max-length`, allowing character count display even when no
|
|
39
63
|
limit is set ([#3901](https://github.com/porsche-design-system/porsche-design-system/pull/3901))
|
|
40
64
|
- `Input Email`: ([#3927](https://github.com/porsche-design-system/porsche-design-system/pull/3927))
|
|
65
|
+
- `Input Tel`: ([#3928](https://github.com/porsche-design-system/porsche-design-system/pull/3928))
|
|
41
66
|
|
|
42
67
|
### Changed
|
|
43
68
|
|
|
@@ -6,13 +6,13 @@ var react = require('react');
|
|
|
6
6
|
var hooks = require('../../hooks.cjs');
|
|
7
7
|
var utils = require('../../utils.cjs');
|
|
8
8
|
|
|
9
|
-
const PFieldset = /*#__PURE__*/ react.forwardRef(({ label = '', labelSize = 'medium', message = '', required = false, state = 'none', theme, className, ...rest }, ref) => {
|
|
9
|
+
const PFieldset = /*#__PURE__*/ react.forwardRef(({ aria, label = '', labelSize = 'medium', message = '', required = false, state = 'none', theme, className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
const WebComponentTag = hooks.usePrefix('p-fieldset');
|
|
12
|
-
const propsToSync = [label, labelSize, message, required, state, theme || hooks.useTheme()];
|
|
12
|
+
const propsToSync = [aria, label, labelSize, message, required, state, theme || hooks.useTheme()];
|
|
13
13
|
hooks.useBrowserLayoutEffect(() => {
|
|
14
14
|
const { current } = elementRef;
|
|
15
|
-
['label', 'labelSize', 'message', 'required', 'state', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
15
|
+
['aria', 'label', 'labelSize', 'message', 'required', 'state', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
16
16
|
}, propsToSync);
|
|
17
17
|
const props = {
|
|
18
18
|
...rest,
|
|
@@ -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 PFlag = /*#__PURE__*/ react.forwardRef(({ aria, name = 'de', size = 'small', className, ...rest }, ref) => {
|
|
10
|
+
const elementRef = react.useRef(undefined);
|
|
11
|
+
const WebComponentTag = hooks.usePrefix('p-flag');
|
|
12
|
+
const propsToSync = [aria, name, size];
|
|
13
|
+
hooks.useBrowserLayoutEffect(() => {
|
|
14
|
+
const { current } = elementRef;
|
|
15
|
+
['aria', 'name', 'size'].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
|
+
// @ts-ignore
|
|
23
|
+
return jsxRuntime.jsx(WebComponentTag, { ...props });
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
exports.PFlag = PFlag;
|
|
@@ -0,0 +1,29 @@
|
|
|
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 PInputDate = /*#__PURE__*/ react.forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, label = '', loading = false, max, message = '', min, name, onBlur, onChange, onInput, readOnly = false, required = false, state = 'none', step = 1, theme, value = '', className, ...rest }, ref) => {
|
|
10
|
+
const elementRef = react.useRef(undefined);
|
|
11
|
+
hooks.useEventCallback(elementRef, 'blur', onBlur);
|
|
12
|
+
hooks.useEventCallback(elementRef, 'change', onChange);
|
|
13
|
+
hooks.useEventCallback(elementRef, 'input', onInput);
|
|
14
|
+
const WebComponentTag = hooks.usePrefix('p-input-date');
|
|
15
|
+
const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, label, loading, max, message, min, name, readOnly, required, state, step, theme || hooks.useTheme(), value];
|
|
16
|
+
hooks.useBrowserLayoutEffect(() => {
|
|
17
|
+
const { current } = elementRef;
|
|
18
|
+
['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'label', 'loading', 'max', 'message', 'min', 'name', 'readOnly', 'required', 'state', 'step', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
19
|
+
}, propsToSync);
|
|
20
|
+
const props = {
|
|
21
|
+
...rest,
|
|
22
|
+
class: hooks.useMergedClass(elementRef, className),
|
|
23
|
+
ref: utils.syncRef(elementRef, ref)
|
|
24
|
+
};
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
return jsxRuntime.jsx(WebComponentTag, { ...props });
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
exports.PInputDate = PInputDate;
|
|
@@ -0,0 +1,29 @@
|
|
|
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 PInputTel = /*#__PURE__*/ react.forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, indicator = false, label = '', loading = false, maxLength, message = '', minLength, name, onBlur, onChange, onInput, pattern, placeholder = '', readOnly = false, required = false, state = 'none', theme, value = '', className, ...rest }, ref) => {
|
|
10
|
+
const elementRef = react.useRef(undefined);
|
|
11
|
+
hooks.useEventCallback(elementRef, 'blur', onBlur);
|
|
12
|
+
hooks.useEventCallback(elementRef, 'change', onChange);
|
|
13
|
+
hooks.useEventCallback(elementRef, 'input', onInput);
|
|
14
|
+
const WebComponentTag = hooks.usePrefix('p-input-tel');
|
|
15
|
+
const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, indicator, label, loading, maxLength, message, minLength, name, pattern, placeholder, readOnly, required, state, theme || hooks.useTheme(), value];
|
|
16
|
+
hooks.useBrowserLayoutEffect(() => {
|
|
17
|
+
const { current } = elementRef;
|
|
18
|
+
['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'indicator', 'label', 'loading', 'maxLength', 'message', 'minLength', 'name', 'pattern', 'placeholder', 'readOnly', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
19
|
+
}, propsToSync);
|
|
20
|
+
const props = {
|
|
21
|
+
...rest,
|
|
22
|
+
class: hooks.useMergedClass(elementRef, className),
|
|
23
|
+
ref: utils.syncRef(elementRef, ref)
|
|
24
|
+
};
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
return jsxRuntime.jsx(WebComponentTag, { ...props });
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
exports.PInputTel = PInputTel;
|
|
@@ -0,0 +1,29 @@
|
|
|
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 PInputTime = /*#__PURE__*/ react.forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, label = '', loading = false, max, message = '', min, name, onBlur, onChange, onInput, readOnly = false, required = false, state = 'none', step = 60, theme, value = '', className, ...rest }, ref) => {
|
|
10
|
+
const elementRef = react.useRef(undefined);
|
|
11
|
+
hooks.useEventCallback(elementRef, 'blur', onBlur);
|
|
12
|
+
hooks.useEventCallback(elementRef, 'change', onChange);
|
|
13
|
+
hooks.useEventCallback(elementRef, 'input', onInput);
|
|
14
|
+
const WebComponentTag = hooks.usePrefix('p-input-time');
|
|
15
|
+
const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, label, loading, max, message, min, name, readOnly, required, state, step, theme || hooks.useTheme(), value];
|
|
16
|
+
hooks.useBrowserLayoutEffect(() => {
|
|
17
|
+
const { current } = elementRef;
|
|
18
|
+
['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'label', 'loading', 'max', 'message', 'min', 'name', 'readOnly', 'required', 'state', 'step', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
19
|
+
}, propsToSync);
|
|
20
|
+
const props = {
|
|
21
|
+
...rest,
|
|
22
|
+
class: hooks.useMergedClass(elementRef, className),
|
|
23
|
+
ref: utils.syncRef(elementRef, ref)
|
|
24
|
+
};
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
return jsxRuntime.jsx(WebComponentTag, { ...props });
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
exports.PInputTime = PInputTime;
|
|
@@ -0,0 +1,29 @@
|
|
|
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 PInputUrl = /*#__PURE__*/ react.forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, indicator = false, label = '', loading = false, maxLength, message = '', minLength, name, onBlur, onChange, onInput, pattern, placeholder = '', readOnly = false, required = false, state = 'none', theme, value = '', className, ...rest }, ref) => {
|
|
10
|
+
const elementRef = react.useRef(undefined);
|
|
11
|
+
hooks.useEventCallback(elementRef, 'blur', onBlur);
|
|
12
|
+
hooks.useEventCallback(elementRef, 'change', onChange);
|
|
13
|
+
hooks.useEventCallback(elementRef, 'input', onInput);
|
|
14
|
+
const WebComponentTag = hooks.usePrefix('p-input-url');
|
|
15
|
+
const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, indicator, label, loading, maxLength, message, minLength, name, pattern, placeholder, readOnly, required, state, theme || hooks.useTheme(), value];
|
|
16
|
+
hooks.useBrowserLayoutEffect(() => {
|
|
17
|
+
const { current } = elementRef;
|
|
18
|
+
['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'indicator', 'label', 'loading', 'maxLength', 'message', 'minLength', 'name', 'pattern', 'placeholder', 'readOnly', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
19
|
+
}, propsToSync);
|
|
20
|
+
const props = {
|
|
21
|
+
...rest,
|
|
22
|
+
class: hooks.useMergedClass(elementRef, className),
|
|
23
|
+
ref: utils.syncRef(elementRef, ref)
|
|
24
|
+
};
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
return jsxRuntime.jsx(WebComponentTag, { ...props });
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
exports.PInputUrl = PInputUrl;
|
|
@@ -6,14 +6,14 @@ var react = require('react');
|
|
|
6
6
|
var hooks = require('../../hooks.cjs');
|
|
7
7
|
var utils = require('../../utils.cjs');
|
|
8
8
|
|
|
9
|
-
const PMultiSelect = /*#__PURE__*/ react.forwardRef(({ description = '', disabled = false, dropdownDirection = 'auto', form, hideLabel = false, label = '', message = '', name, onUpdate, required = false, state = 'none', theme, value = [], className, ...rest }, ref) => {
|
|
9
|
+
const PMultiSelect = /*#__PURE__*/ react.forwardRef(({ compact = false, description = '', disabled = false, dropdownDirection = 'auto', form, hideLabel = false, label = '', message = '', name, onUpdate, required = false, state = 'none', theme, value = [], className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
hooks.useEventCallback(elementRef, 'update', onUpdate);
|
|
12
12
|
const WebComponentTag = hooks.usePrefix('p-multi-select');
|
|
13
|
-
const propsToSync = [description, disabled, dropdownDirection, form, hideLabel, label, message, name, required, state, theme || hooks.useTheme(), value];
|
|
13
|
+
const propsToSync = [compact, description, disabled, dropdownDirection, form, hideLabel, label, message, name, required, state, theme || hooks.useTheme(), value];
|
|
14
14
|
hooks.useBrowserLayoutEffect(() => {
|
|
15
15
|
const { current } = elementRef;
|
|
16
|
-
['description', 'disabled', 'dropdownDirection', 'form', 'hideLabel', 'label', 'message', 'name', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
16
|
+
['compact', 'description', 'disabled', 'dropdownDirection', 'form', 'hideLabel', 'label', 'message', 'name', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
17
17
|
}, propsToSync);
|
|
18
18
|
const props = {
|
|
19
19
|
...rest,
|
|
@@ -6,7 +6,7 @@ var react = require('react');
|
|
|
6
6
|
var hooks = require('../../hooks.cjs');
|
|
7
7
|
var utils = require('../../utils.cjs');
|
|
8
8
|
|
|
9
|
-
const PScroller = /*#__PURE__*/ react.forwardRef(({ alignScrollIndicator = 'center', aria, gradientColor
|
|
9
|
+
const PScroller = /*#__PURE__*/ react.forwardRef(({ alignScrollIndicator = 'center', aria, gradientColor, gradientColorScheme, scrollIndicatorPosition, scrollToPosition, scrollbar = false, theme, className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
const WebComponentTag = hooks.usePrefix('p-scroller');
|
|
12
12
|
const propsToSync = [alignScrollIndicator, aria, gradientColor, gradientColorScheme, scrollIndicatorPosition, scrollToPosition, scrollbar, theme || hooks.useTheme()];
|
|
@@ -6,7 +6,7 @@ var react = require('react');
|
|
|
6
6
|
var hooks = require('../../hooks.cjs');
|
|
7
7
|
var utils = require('../../utils.cjs');
|
|
8
8
|
|
|
9
|
-
const PTabsBar = /*#__PURE__*/ react.forwardRef(({ activeTabIndex, gradientColor
|
|
9
|
+
const PTabsBar = /*#__PURE__*/ react.forwardRef(({ activeTabIndex, gradientColor, gradientColorScheme, onTabChange, onUpdate, size = 'small', theme, weight = 'regular', className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
hooks.useEventCallback(elementRef, 'tabChange', onTabChange);
|
|
12
12
|
hooks.useEventCallback(elementRef, 'update', onUpdate);
|
|
@@ -6,7 +6,7 @@ var react = require('react');
|
|
|
6
6
|
var hooks = require('../../hooks.cjs');
|
|
7
7
|
var utils = require('../../utils.cjs');
|
|
8
8
|
|
|
9
|
-
const PTabs = /*#__PURE__*/ react.forwardRef(({ activeTabIndex = 0, gradientColor
|
|
9
|
+
const PTabs = /*#__PURE__*/ react.forwardRef(({ activeTabIndex = 0, gradientColor, gradientColorScheme, onTabChange, onUpdate, size = 'small', theme, weight = 'regular', className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
hooks.useEventCallback(elementRef, 'tabChange', onTabChange);
|
|
12
12
|
hooks.useEventCallback(elementRef, 'update', onUpdate);
|
package/cjs/public-api.cjs
CHANGED
|
@@ -20,6 +20,7 @@ var drilldownItem_wrapper = require('./lib/components/drilldown-item.wrapper.cjs
|
|
|
20
20
|
var drilldownLink_wrapper = require('./lib/components/drilldown-link.wrapper.cjs');
|
|
21
21
|
var fieldset_wrapper = require('./lib/components/fieldset.wrapper.cjs');
|
|
22
22
|
var fieldsetWrapper_wrapper = require('./lib/components/fieldset-wrapper.wrapper.cjs');
|
|
23
|
+
var flag_wrapper = require('./lib/components/flag.wrapper.cjs');
|
|
23
24
|
var flex_wrapper = require('./lib/components/flex.wrapper.cjs');
|
|
24
25
|
var flexItem_wrapper = require('./lib/components/flex-item.wrapper.cjs');
|
|
25
26
|
var flyout_wrapper = require('./lib/components/flyout.wrapper.cjs');
|
|
@@ -29,11 +30,15 @@ var heading_wrapper = require('./lib/components/heading.wrapper.cjs');
|
|
|
29
30
|
var headline_wrapper = require('./lib/components/headline.wrapper.cjs');
|
|
30
31
|
var icon_wrapper = require('./lib/components/icon.wrapper.cjs');
|
|
31
32
|
var inlineNotification_wrapper = require('./lib/components/inline-notification.wrapper.cjs');
|
|
33
|
+
var inputDate_wrapper = require('./lib/components/input-date.wrapper.cjs');
|
|
32
34
|
var inputEmail_wrapper = require('./lib/components/input-email.wrapper.cjs');
|
|
33
35
|
var inputNumber_wrapper = require('./lib/components/input-number.wrapper.cjs');
|
|
34
36
|
var inputPassword_wrapper = require('./lib/components/input-password.wrapper.cjs');
|
|
35
37
|
var inputSearch_wrapper = require('./lib/components/input-search.wrapper.cjs');
|
|
38
|
+
var inputTel_wrapper = require('./lib/components/input-tel.wrapper.cjs');
|
|
36
39
|
var inputText_wrapper = require('./lib/components/input-text.wrapper.cjs');
|
|
40
|
+
var inputTime_wrapper = require('./lib/components/input-time.wrapper.cjs');
|
|
41
|
+
var inputUrl_wrapper = require('./lib/components/input-url.wrapper.cjs');
|
|
37
42
|
var link_wrapper = require('./lib/components/link.wrapper.cjs');
|
|
38
43
|
var linkPure_wrapper = require('./lib/components/link-pure.wrapper.cjs');
|
|
39
44
|
var linkSocial_wrapper = require('./lib/components/link-social.wrapper.cjs');
|
|
@@ -110,6 +115,7 @@ exports.PDrilldownItem = drilldownItem_wrapper.PDrilldownItem;
|
|
|
110
115
|
exports.PDrilldownLink = drilldownLink_wrapper.PDrilldownLink;
|
|
111
116
|
exports.PFieldset = fieldset_wrapper.PFieldset;
|
|
112
117
|
exports.PFieldsetWrapper = fieldsetWrapper_wrapper.PFieldsetWrapper;
|
|
118
|
+
exports.PFlag = flag_wrapper.PFlag;
|
|
113
119
|
exports.PFlex = flex_wrapper.PFlex;
|
|
114
120
|
exports.PFlexItem = flexItem_wrapper.PFlexItem;
|
|
115
121
|
exports.PFlyout = flyout_wrapper.PFlyout;
|
|
@@ -119,11 +125,15 @@ exports.PHeading = heading_wrapper.PHeading;
|
|
|
119
125
|
exports.PHeadline = headline_wrapper.PHeadline;
|
|
120
126
|
exports.PIcon = icon_wrapper.PIcon;
|
|
121
127
|
exports.PInlineNotification = inlineNotification_wrapper.PInlineNotification;
|
|
128
|
+
exports.PInputDate = inputDate_wrapper.PInputDate;
|
|
122
129
|
exports.PInputEmail = inputEmail_wrapper.PInputEmail;
|
|
123
130
|
exports.PInputNumber = inputNumber_wrapper.PInputNumber;
|
|
124
131
|
exports.PInputPassword = inputPassword_wrapper.PInputPassword;
|
|
125
132
|
exports.PInputSearch = inputSearch_wrapper.PInputSearch;
|
|
133
|
+
exports.PInputTel = inputTel_wrapper.PInputTel;
|
|
126
134
|
exports.PInputText = inputText_wrapper.PInputText;
|
|
135
|
+
exports.PInputTime = inputTime_wrapper.PInputTime;
|
|
136
|
+
exports.PInputUrl = inputUrl_wrapper.PInputUrl;
|
|
127
137
|
exports.PLink = link_wrapper.PLink;
|
|
128
138
|
exports.PLinkPure = linkPure_wrapper.PLinkPure;
|
|
129
139
|
exports.PLinkSocial = linkSocial_wrapper.PLinkSocial;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { BaseProps } from '../../BaseProps';
|
|
2
|
-
import type { FieldsetLabelSize, FieldsetState, Theme } from '../types';
|
|
2
|
+
import type { SelectedAriaRole, FieldsetLabelSize, FieldsetState, Theme } from '../types';
|
|
3
3
|
export type PFieldsetProps = BaseProps & {
|
|
4
|
+
/**
|
|
5
|
+
* Add ARIA attributes.
|
|
6
|
+
*/
|
|
7
|
+
aria?: SelectedAriaRole<"radiogroup">;
|
|
4
8
|
/**
|
|
5
9
|
* The label text.
|
|
6
10
|
*/
|
|
@@ -27,6 +31,10 @@ export type PFieldsetProps = BaseProps & {
|
|
|
27
31
|
theme?: Theme;
|
|
28
32
|
};
|
|
29
33
|
export declare const PFieldset: import("react").ForwardRefExoticComponent<import("react").DOMAttributes<{}> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
|
|
34
|
+
/**
|
|
35
|
+
* Add ARIA attributes.
|
|
36
|
+
*/
|
|
37
|
+
aria?: SelectedAriaRole<"radiogroup">;
|
|
30
38
|
/**
|
|
31
39
|
* The label text.
|
|
32
40
|
*/
|
|
@@ -4,13 +4,13 @@ import { forwardRef, useRef } from 'react';
|
|
|
4
4
|
import { usePrefix, useTheme, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
|
|
5
5
|
import { syncRef } from '../../utils.mjs';
|
|
6
6
|
|
|
7
|
-
const PFieldset = /*#__PURE__*/ forwardRef(({ label = '', labelSize = 'medium', message = '', required = false, state = 'none', theme, className, ...rest }, ref) => {
|
|
7
|
+
const PFieldset = /*#__PURE__*/ forwardRef(({ aria, label = '', labelSize = 'medium', message = '', required = false, state = 'none', theme, className, ...rest }, ref) => {
|
|
8
8
|
const elementRef = useRef(undefined);
|
|
9
9
|
const WebComponentTag = usePrefix('p-fieldset');
|
|
10
|
-
const propsToSync = [label, labelSize, message, required, state, theme || useTheme()];
|
|
10
|
+
const propsToSync = [aria, label, labelSize, message, required, state, theme || useTheme()];
|
|
11
11
|
useBrowserLayoutEffect(() => {
|
|
12
12
|
const { current } = elementRef;
|
|
13
|
-
['label', 'labelSize', 'message', 'required', 'state', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
13
|
+
['aria', 'label', 'labelSize', 'message', 'required', 'state', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
14
14
|
}, propsToSync);
|
|
15
15
|
const props = {
|
|
16
16
|
...rest,
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { BaseProps } from '../../BaseProps';
|
|
2
|
+
import type { SelectedAriaAttributes, FlagAriaAttribute, FlagName, FlagSize } from '../types';
|
|
3
|
+
export type PFlagProps = BaseProps & {
|
|
4
|
+
/**
|
|
5
|
+
* A map of ARIA attributes to enhance the flag's accessibility. For example, use `{ 'aria-label': 'German flag' }` to provide a descriptive label for screen readers.
|
|
6
|
+
*/
|
|
7
|
+
aria?: SelectedAriaAttributes<FlagAriaAttribute>;
|
|
8
|
+
/**
|
|
9
|
+
* Specifies the country flag to display. Use the two-letter ISO 3166-1 alpha-2 country code. For example, use `us` for the United States, `de` for Germany, `gb` for Great Britain.
|
|
10
|
+
*/
|
|
11
|
+
name?: FlagName;
|
|
12
|
+
/**
|
|
13
|
+
* The size of the flag. Pre-defined sizes are aligned with the Porsche Next typescale. Available values are `small`, `medium`, `large`, etc.
|
|
14
|
+
*/
|
|
15
|
+
size?: FlagSize;
|
|
16
|
+
};
|
|
17
|
+
export declare const PFlag: import("react").ForwardRefExoticComponent<import("react").DOMAttributes<{}> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
|
|
18
|
+
/**
|
|
19
|
+
* A map of ARIA attributes to enhance the flag's accessibility. For example, use `{ 'aria-label': 'German flag' }` to provide a descriptive label for screen readers.
|
|
20
|
+
*/
|
|
21
|
+
aria?: SelectedAriaAttributes<FlagAriaAttribute>;
|
|
22
|
+
/**
|
|
23
|
+
* Specifies the country flag to display. Use the two-letter ISO 3166-1 alpha-2 country code. For example, use `us` for the United States, `de` for Germany, `gb` for Great Britain.
|
|
24
|
+
*/
|
|
25
|
+
name?: FlagName;
|
|
26
|
+
/**
|
|
27
|
+
* The size of the flag. Pre-defined sizes are aligned with the Porsche Next typescale. Available values are `small`, `medium`, `large`, etc.
|
|
28
|
+
*/
|
|
29
|
+
size?: FlagSize;
|
|
30
|
+
} & 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 { usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
|
|
5
|
+
import { syncRef } from '../../utils.mjs';
|
|
6
|
+
|
|
7
|
+
const PFlag = /*#__PURE__*/ forwardRef(({ aria, name = 'de', size = 'small', className, ...rest }, ref) => {
|
|
8
|
+
const elementRef = useRef(undefined);
|
|
9
|
+
const WebComponentTag = usePrefix('p-flag');
|
|
10
|
+
const propsToSync = [aria, name, size];
|
|
11
|
+
useBrowserLayoutEffect(() => {
|
|
12
|
+
const { current } = elementRef;
|
|
13
|
+
['aria', 'name', 'size'].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
|
+
// @ts-ignore
|
|
21
|
+
return jsx(WebComponentTag, { ...props });
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export { PFlag };
|
|
@@ -17,6 +17,7 @@ export * from './drilldown-item.wrapper';
|
|
|
17
17
|
export * from './drilldown-link.wrapper';
|
|
18
18
|
export * from './fieldset.wrapper';
|
|
19
19
|
export * from './fieldset-wrapper.wrapper';
|
|
20
|
+
export * from './flag.wrapper';
|
|
20
21
|
export * from './flex.wrapper';
|
|
21
22
|
export * from './flex-item.wrapper';
|
|
22
23
|
export * from './flyout.wrapper';
|
|
@@ -26,11 +27,15 @@ export * from './heading.wrapper';
|
|
|
26
27
|
export * from './headline.wrapper';
|
|
27
28
|
export * from './icon.wrapper';
|
|
28
29
|
export * from './inline-notification.wrapper';
|
|
30
|
+
export * from './input-date.wrapper';
|
|
29
31
|
export * from './input-email.wrapper';
|
|
30
32
|
export * from './input-number.wrapper';
|
|
31
33
|
export * from './input-password.wrapper';
|
|
32
34
|
export * from './input-search.wrapper';
|
|
35
|
+
export * from './input-tel.wrapper';
|
|
33
36
|
export * from './input-text.wrapper';
|
|
37
|
+
export * from './input-time.wrapper';
|
|
38
|
+
export * from './input-url.wrapper';
|
|
34
39
|
export * from './link.wrapper';
|
|
35
40
|
export * from './link-pure.wrapper';
|
|
36
41
|
export * from './link-social.wrapper';
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import type { BaseProps } from '../../BaseProps';
|
|
2
|
+
import type { BreakpointCustomizable, InputDateBlurEventDetail, InputDateChangeEventDetail, InputDateInputEventDetail, InputDateState, Theme } from '../types';
|
|
3
|
+
export type PInputDateProps = BaseProps & {
|
|
4
|
+
/**
|
|
5
|
+
* Provides a hint to the browser about what type of data the field expects, which can assist with autofill features (e.g., auto-complete='bday' for a birthday).
|
|
6
|
+
*/
|
|
7
|
+
autoComplete?: string;
|
|
8
|
+
/**
|
|
9
|
+
* A boolean value that, if present, renders the input field as a compact version.
|
|
10
|
+
*/
|
|
11
|
+
compact?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Supplementary text providing more context or explanation for the input.
|
|
14
|
+
*/
|
|
15
|
+
description?: string;
|
|
16
|
+
/**
|
|
17
|
+
* A boolean value that, if present, makes the input field unusable and unclickable. The value will not be submitted with the form.
|
|
18
|
+
*/
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Specifies the id of the <form> element that the input belongs to (useful if the input is not a direct descendant of the form).
|
|
22
|
+
*/
|
|
23
|
+
form?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Controls the visibility of the label.
|
|
26
|
+
*/
|
|
27
|
+
hideLabel?: BreakpointCustomizable<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* Text content for a user-facing label.
|
|
30
|
+
*/
|
|
31
|
+
label?: string;
|
|
32
|
+
/**
|
|
33
|
+
* @experimental Shows a loading indicator.
|
|
34
|
+
*/
|
|
35
|
+
loading?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Specifies the latest date that can be selected. The value must be a date string in YYYY-MM-DD format (e.g., max='2024-12-31').
|
|
38
|
+
*/
|
|
39
|
+
max?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Dynamic feedback text for validation or status.
|
|
42
|
+
*/
|
|
43
|
+
message?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Specifies the earliest date that can be selected. The value must be a date string in YYYY-MM-DD format (e.g., min='2023-01-01').
|
|
46
|
+
*/
|
|
47
|
+
min?: string;
|
|
48
|
+
/**
|
|
49
|
+
* The name of the input field, used when submitting the form data.
|
|
50
|
+
*/
|
|
51
|
+
name: string;
|
|
52
|
+
/**
|
|
53
|
+
* Emitted when the number input has lost focus.
|
|
54
|
+
*/
|
|
55
|
+
onBlur?: (event: CustomEvent<InputDateBlurEventDetail>) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Emitted when the number input loses focus after its value was changed.
|
|
58
|
+
*/
|
|
59
|
+
onChange?: (event: CustomEvent<InputDateChangeEventDetail>) => void;
|
|
60
|
+
/**
|
|
61
|
+
* Emitted when the value has been changed as a direct result of a user action.
|
|
62
|
+
*/
|
|
63
|
+
onInput?: (event: CustomEvent<InputDateInputEventDetail>) => void;
|
|
64
|
+
/**
|
|
65
|
+
* A boolean value that, if present, makes the input field uneditable by the user, but its value will still be submitted with the form.
|
|
66
|
+
*/
|
|
67
|
+
readOnly?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* A boolean value that, if present, indicates that the input field must be filled out before the form can be submitted.
|
|
70
|
+
*/
|
|
71
|
+
required?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Indicates the validation or overall status of the input component.
|
|
74
|
+
*/
|
|
75
|
+
state?: InputDateState;
|
|
76
|
+
/**
|
|
77
|
+
* Defines the granularity of the date input. This value is given in days. The default is 1 (one day).
|
|
78
|
+
*/
|
|
79
|
+
step?: number;
|
|
80
|
+
/**
|
|
81
|
+
* Controls the visual appearance of the component.
|
|
82
|
+
*/
|
|
83
|
+
theme?: Theme;
|
|
84
|
+
/**
|
|
85
|
+
* The default date value for the input, in YYYY-MM-DD format (e.g., value='2025-07-02').
|
|
86
|
+
*/
|
|
87
|
+
value?: string;
|
|
88
|
+
};
|
|
89
|
+
export declare const PInputDate: import("react").ForwardRefExoticComponent<import("react").DOMAttributes<{}> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
|
|
90
|
+
/**
|
|
91
|
+
* Provides a hint to the browser about what type of data the field expects, which can assist with autofill features (e.g., auto-complete='bday' for a birthday).
|
|
92
|
+
*/
|
|
93
|
+
autoComplete?: string;
|
|
94
|
+
/**
|
|
95
|
+
* A boolean value that, if present, renders the input field as a compact version.
|
|
96
|
+
*/
|
|
97
|
+
compact?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Supplementary text providing more context or explanation for the input.
|
|
100
|
+
*/
|
|
101
|
+
description?: string;
|
|
102
|
+
/**
|
|
103
|
+
* A boolean value that, if present, makes the input field unusable and unclickable. The value will not be submitted with the form.
|
|
104
|
+
*/
|
|
105
|
+
disabled?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Specifies the id of the <form> element that the input belongs to (useful if the input is not a direct descendant of the form).
|
|
108
|
+
*/
|
|
109
|
+
form?: string;
|
|
110
|
+
/**
|
|
111
|
+
* Controls the visibility of the label.
|
|
112
|
+
*/
|
|
113
|
+
hideLabel?: BreakpointCustomizable<boolean>;
|
|
114
|
+
/**
|
|
115
|
+
* Text content for a user-facing label.
|
|
116
|
+
*/
|
|
117
|
+
label?: string;
|
|
118
|
+
/**
|
|
119
|
+
* @experimental Shows a loading indicator.
|
|
120
|
+
*/
|
|
121
|
+
loading?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Specifies the latest date that can be selected. The value must be a date string in YYYY-MM-DD format (e.g., max='2024-12-31').
|
|
124
|
+
*/
|
|
125
|
+
max?: string;
|
|
126
|
+
/**
|
|
127
|
+
* Dynamic feedback text for validation or status.
|
|
128
|
+
*/
|
|
129
|
+
message?: string;
|
|
130
|
+
/**
|
|
131
|
+
* Specifies the earliest date that can be selected. The value must be a date string in YYYY-MM-DD format (e.g., min='2023-01-01').
|
|
132
|
+
*/
|
|
133
|
+
min?: string;
|
|
134
|
+
/**
|
|
135
|
+
* The name of the input field, used when submitting the form data.
|
|
136
|
+
*/
|
|
137
|
+
name: string;
|
|
138
|
+
/**
|
|
139
|
+
* Emitted when the number input has lost focus.
|
|
140
|
+
*/
|
|
141
|
+
onBlur?: (event: CustomEvent<InputDateBlurEventDetail>) => void;
|
|
142
|
+
/**
|
|
143
|
+
* Emitted when the number input loses focus after its value was changed.
|
|
144
|
+
*/
|
|
145
|
+
onChange?: (event: CustomEvent<InputDateChangeEventDetail>) => void;
|
|
146
|
+
/**
|
|
147
|
+
* Emitted when the value has been changed as a direct result of a user action.
|
|
148
|
+
*/
|
|
149
|
+
onInput?: (event: CustomEvent<InputDateInputEventDetail>) => void;
|
|
150
|
+
/**
|
|
151
|
+
* A boolean value that, if present, makes the input field uneditable by the user, but its value will still be submitted with the form.
|
|
152
|
+
*/
|
|
153
|
+
readOnly?: boolean;
|
|
154
|
+
/**
|
|
155
|
+
* A boolean value that, if present, indicates that the input field must be filled out before the form can be submitted.
|
|
156
|
+
*/
|
|
157
|
+
required?: boolean;
|
|
158
|
+
/**
|
|
159
|
+
* Indicates the validation or overall status of the input component.
|
|
160
|
+
*/
|
|
161
|
+
state?: InputDateState;
|
|
162
|
+
/**
|
|
163
|
+
* Defines the granularity of the date input. This value is given in days. The default is 1 (one day).
|
|
164
|
+
*/
|
|
165
|
+
step?: number;
|
|
166
|
+
/**
|
|
167
|
+
* Controls the visual appearance of the component.
|
|
168
|
+
*/
|
|
169
|
+
theme?: Theme;
|
|
170
|
+
/**
|
|
171
|
+
* The default date value for the input, in YYYY-MM-DD format (e.g., value='2025-07-02').
|
|
172
|
+
*/
|
|
173
|
+
value?: string;
|
|
174
|
+
} & {
|
|
175
|
+
children?: import("react").ReactNode | undefined;
|
|
176
|
+
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useRef } from 'react';
|
|
4
|
+
import { useEventCallback, usePrefix, useTheme, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
|
|
5
|
+
import { syncRef } from '../../utils.mjs';
|
|
6
|
+
|
|
7
|
+
const PInputDate = /*#__PURE__*/ forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, label = '', loading = false, max, message = '', min, name, onBlur, onChange, onInput, readOnly = false, required = false, state = 'none', step = 1, theme, value = '', className, ...rest }, ref) => {
|
|
8
|
+
const elementRef = useRef(undefined);
|
|
9
|
+
useEventCallback(elementRef, 'blur', onBlur);
|
|
10
|
+
useEventCallback(elementRef, 'change', onChange);
|
|
11
|
+
useEventCallback(elementRef, 'input', onInput);
|
|
12
|
+
const WebComponentTag = usePrefix('p-input-date');
|
|
13
|
+
const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, label, loading, max, message, min, name, readOnly, required, state, step, theme || useTheme(), value];
|
|
14
|
+
useBrowserLayoutEffect(() => {
|
|
15
|
+
const { current } = elementRef;
|
|
16
|
+
['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'label', 'loading', 'max', 'message', 'min', 'name', 'readOnly', 'required', 'state', 'step', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
17
|
+
}, propsToSync);
|
|
18
|
+
const props = {
|
|
19
|
+
...rest,
|
|
20
|
+
class: useMergedClass(elementRef, className),
|
|
21
|
+
ref: syncRef(elementRef, ref)
|
|
22
|
+
};
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
return jsx(WebComponentTag, { ...props });
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
export { PInputDate };
|