@preply/ds-web-core 0.48.0 → 0.50.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.
Files changed (52) hide show
  1. package/dist/accessibility/aria/types.d.ts +8 -0
  2. package/dist/accessibility/aria/types.js +2 -0
  3. package/dist/accessibility/aria/utils.d.ts +2 -2
  4. package/dist/accessibility/aria/utils.js +1 -1
  5. package/dist/field/hooks/usePasswordField.d.ts +8 -0
  6. package/dist/field/hooks/usePasswordField.js +63 -0
  7. package/dist/field/hooks/useTextField.d.ts +8 -4
  8. package/dist/field/hooks/useTextField.js +8 -5
  9. package/dist/field/index.d.ts +1 -0
  10. package/dist/field/index.js +2 -1
  11. package/dist/field/types.d.ts +37 -14
  12. package/dist/generated/breakpoints.less +1 -1
  13. package/dist/generated/options.less +3 -3
  14. package/dist/generated/tokens.less +16 -3
  15. package/dist/icon/index.d.ts +1 -0
  16. package/dist/icon/index.js +2 -0
  17. package/dist/icon/types.d.ts +10 -0
  18. package/dist/icon/types.js +2 -0
  19. package/dist/index.d.ts +2 -0
  20. package/dist/index.js +5 -2
  21. package/dist/input/index.d.ts +2 -1
  22. package/dist/input/index.js +3 -2
  23. package/dist/input/options.d.ts +1 -1
  24. package/dist/input/options.js +3 -1
  25. package/dist/input/private/types.d.ts +97 -0
  26. package/dist/input/private/types.js +2 -0
  27. package/dist/input/private/utils.d.ts +9 -0
  28. package/dist/input/private/utils.js +87 -0
  29. package/dist/input/types.d.ts +46 -99
  30. package/dist/input/utils/getInputProps.d.ts +3 -0
  31. package/dist/input/utils/getInputProps.js +14 -0
  32. package/dist/input/{util.d.ts → utils/useForcedRef.d.ts} +0 -0
  33. package/dist/input/utils/useForcedRef.js +11 -0
  34. package/dist/layout/hooks/useLayoutFlexClassNames.js +11 -3
  35. package/dist/layout/hooks/useLayoutGridClassNames.js +11 -3
  36. package/dist/layout/index.d.ts +1 -0
  37. package/dist/layout/index.js +2 -1
  38. package/dist/layout/module-layout-relative/hooks/useLayoutRelativeClassnames.d.ts +3 -0
  39. package/dist/layout/module-layout-relative/hooks/useLayoutRelativeClassnames.js +14 -0
  40. package/dist/layout/module-layout-relative/index.d.ts +1 -0
  41. package/dist/layout/module-layout-relative/index.js +2 -0
  42. package/dist/layout/module-layout-relative/style/index.module.less +5 -0
  43. package/dist/layout/module-layout-relative/style/index.module.less.js +9 -0
  44. package/dist/layout/module-layout-relative/style/mixins.less +5 -0
  45. package/dist/layout/module-layout-relative/style/mixins.less.js +8 -0
  46. package/dist/svg/index.d.ts +1 -0
  47. package/dist/svg/index.js +2 -0
  48. package/dist/svg/types.d.ts +2 -0
  49. package/dist/svg/types.js +2 -0
  50. package/dist/theme/style/declarations.mixins.less +5 -0
  51. package/package.json +6 -6
  52. package/dist/input/util.js +0 -11
@@ -0,0 +1,97 @@
1
+ import type { Dataset } from '@preply/ds-core';
2
+ import { ChangeEventHandler, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, ReactNode } from 'react';
3
+ import type { ARIAInputProps } from '../../accessibility/aria/types';
4
+ export declare type SimpleTextInputType = 'text' | 'search' | 'email' | 'tel' | 'url';
5
+ export declare type SingleLineInputType = SimpleTextInputType | 'password' | 'number' | 'date' | 'time';
6
+ export declare type HTMLInputType = SingleLineInputType | 'checkbox' | 'radio';
7
+ export declare type InputType = HTMLInputType | 'textarea' | 'select';
8
+ export declare type AutoCompleteDateOptions = 'off' | 'on';
9
+ export declare type AutoCompletePasswordOptions = 'off' | 'new-password' | 'current-password';
10
+ export declare type AutoCompleteTextOptions = 'off' | 'on' | 'name' | 'email' | 'username' | 'language' | 'tel' | 'url' | AutoCompletePasswordOptions;
11
+ /**
12
+ * native <input> props
13
+ */
14
+ export interface InputCommonProps extends ARIAInputProps {
15
+ type: InputType;
16
+ id: string;
17
+ name?: string;
18
+ value?: string;
19
+ defaultValue?: string;
20
+ onChange?: ChangeEventHandler;
21
+ onFocus?: FocusEventHandler;
22
+ onBlur?: FocusEventHandler;
23
+ onClick?: MouseEventHandler;
24
+ onKeyDown?: KeyboardEventHandler;
25
+ onKeyUp?: KeyboardEventHandler;
26
+ required?: boolean;
27
+ disabled?: boolean;
28
+ hasError?: boolean;
29
+ dataset?: Dataset;
30
+ }
31
+ export interface InputStringProps extends InputCommonProps {
32
+ type: SingleLineInputType | 'textarea';
33
+ placeholder?: string;
34
+ maxLength?: number;
35
+ }
36
+ export interface InputSingleLineProps extends InputStringProps {
37
+ type: SingleLineInputType;
38
+ }
39
+ export interface SimpleTextInputTypeProps extends InputSingleLineProps {
40
+ type: SimpleTextInputType;
41
+ autoComplete?: AutoCompleteTextOptions;
42
+ }
43
+ export interface InputTypeTextProps extends SimpleTextInputTypeProps {
44
+ type: 'text';
45
+ }
46
+ export interface InputTypeSearchProps extends SimpleTextInputTypeProps {
47
+ type: 'search';
48
+ }
49
+ export interface InputTypeEmailProps extends SimpleTextInputTypeProps {
50
+ type: 'email';
51
+ }
52
+ export interface InputTypeTelProps extends SimpleTextInputTypeProps {
53
+ type: 'tel';
54
+ }
55
+ export interface InputTypeUrlProps extends SimpleTextInputTypeProps {
56
+ type: 'url';
57
+ }
58
+ export interface InputTypePasswordProps extends InputSingleLineProps {
59
+ type: 'password';
60
+ autoComplete?: AutoCompletePasswordOptions;
61
+ }
62
+ export interface InputBoundedProps extends InputSingleLineProps {
63
+ type: 'number' | 'date' | 'time';
64
+ min?: string;
65
+ max?: string;
66
+ }
67
+ export interface InputTypeNumberProps extends InputBoundedProps {
68
+ type: 'number';
69
+ }
70
+ export interface InputTypeDateProps extends InputBoundedProps {
71
+ type: 'date';
72
+ autoComplete?: AutoCompleteDateOptions;
73
+ }
74
+ export interface InputTypeTimeProps extends InputBoundedProps {
75
+ type: 'time';
76
+ }
77
+ export interface InputCheckableProps extends InputCommonProps {
78
+ type: 'checkbox' | 'radio';
79
+ checked?: boolean;
80
+ }
81
+ export interface InputTypeCheckboxProps extends InputCheckableProps {
82
+ type: 'checkbox';
83
+ }
84
+ export interface InputTypeRadioProps extends InputCommonProps, InputCheckableProps {
85
+ type: 'radio';
86
+ name: string;
87
+ }
88
+ export interface InputTypeTextareaProps extends InputStringProps {
89
+ type: 'textarea';
90
+ rows?: number;
91
+ }
92
+ export interface InputTypeSelectProps extends InputCommonProps {
93
+ type: 'select';
94
+ children?: ReactNode;
95
+ }
96
+ export declare type InputGenericTextProps = InputTypeTextProps | InputTypeSearchProps | InputTypeEmailProps | InputTypeTelProps | InputTypeUrlProps;
97
+ export declare type UnknownInputProps = InputTypeTextProps | InputTypeSearchProps | InputTypeEmailProps | InputTypeTelProps | InputTypeUrlProps | InputTypePasswordProps | InputTypeNumberProps | InputTypeDateProps | InputTypeTimeProps | InputTypeCheckboxProps | InputTypeRadioProps | InputTypeTextareaProps | InputTypeSelectProps;
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,9 @@
1
+ import { InputHTMLAttributes, SelectHTMLAttributes, TextareaHTMLAttributes } from 'react';
2
+ import type { InputBaseProps } from '../types';
3
+ export declare const getTextProps: (props: InputBaseProps) => InputHTMLAttributes<HTMLInputElement>;
4
+ export declare const getDateTimeProps: (props: InputBaseProps) => InputHTMLAttributes<HTMLInputElement>;
5
+ export declare const getBoundedProps: (props: InputBaseProps) => InputHTMLAttributes<HTMLInputElement>;
6
+ export declare const getTextareaProps: (props: InputBaseProps) => TextareaHTMLAttributes<HTMLTextAreaElement>;
7
+ export declare const getCheckableProps: (props: InputBaseProps) => InputHTMLAttributes<HTMLInputElement>;
8
+ export declare const getRadioProps: (props: InputBaseProps) => InputHTMLAttributes<HTMLInputElement>;
9
+ export declare const getSelectProps: (props: InputBaseProps) => SelectHTMLAttributes<HTMLSelectElement>;
@@ -0,0 +1,87 @@
1
+ const isText = (props) => {
2
+ const { type } = props;
3
+ return (type === 'text' ||
4
+ type === 'search' ||
5
+ type === 'password' ||
6
+ type === 'email' ||
7
+ type === 'tel' ||
8
+ type === 'url' ||
9
+ type === 'number' ||
10
+ type === 'textarea');
11
+ };
12
+ const isDateTime = (props) => {
13
+ const { type } = props;
14
+ return type === 'date' || type === 'time';
15
+ };
16
+ const isBounded = (props) => {
17
+ const { type } = props;
18
+ return type === 'number' || type === 'date' || type === 'time';
19
+ };
20
+ const isCheckable = (props) => {
21
+ const { type } = props;
22
+ return type === 'checkbox';
23
+ };
24
+ const isRadio = (props) => {
25
+ const { type } = props;
26
+ return type === 'radio';
27
+ };
28
+ const isTextarea = (props) => {
29
+ const { type } = props;
30
+ return type === 'number' || type === 'date' || type === 'time';
31
+ };
32
+ const isSelect = (props) => {
33
+ const { type } = props;
34
+ return type === 'select';
35
+ };
36
+ const getTextProps = (props) => {
37
+ if (isText(props)) {
38
+ const { value, placeholder, maxLength, autoComplete } = props;
39
+ return { value, placeholder, maxLength, autoComplete };
40
+ }
41
+ return {};
42
+ };
43
+ const getDateTimeProps = (props) => {
44
+ if (isDateTime(props)) {
45
+ const { defaultValue, placeholder, maxLength, autoComplete } = props;
46
+ return { defaultValue, placeholder, maxLength, autoComplete };
47
+ }
48
+ return {};
49
+ };
50
+ const getBoundedProps = (props) => {
51
+ if (isBounded(props)) {
52
+ const { min, max } = props;
53
+ return { min, max };
54
+ }
55
+ return {};
56
+ };
57
+ const getTextareaProps = (props) => {
58
+ if (isTextarea(props)) {
59
+ const { rows } = props;
60
+ return { rows };
61
+ }
62
+ return {};
63
+ };
64
+ const getCheckableProps = (props) => {
65
+ if (isCheckable(props)) {
66
+ const { checked } = props;
67
+ return { checked };
68
+ }
69
+ return {};
70
+ };
71
+ const getRadioProps = (props) => {
72
+ if (isRadio(props)) {
73
+ const { checked, name } = props;
74
+ return { defaultChecked: checked, name };
75
+ }
76
+ return {};
77
+ };
78
+ const getSelectProps = (props) => {
79
+ if (isSelect(props)) {
80
+ const { value, children } = props;
81
+ return { value, children };
82
+ }
83
+ return {};
84
+ };
85
+
86
+ export { getBoundedProps, getCheckableProps, getDateTimeProps, getRadioProps, getSelectProps, getTextProps, getTextareaProps };
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnB1dC9wcml2YXRlL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0SFRNTEF0dHJpYnV0ZXMsIFNlbGVjdEhUTUxBdHRyaWJ1dGVzLCBUZXh0YXJlYUhUTUxBdHRyaWJ1dGVzIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0QmFzZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gICAgSW5wdXRCb3VuZGVkUHJvcHMsXG4gICAgSW5wdXRDaGVja2FibGVQcm9wcyxcbiAgICBJbnB1dENvbW1vblByb3BzLFxuICAgIElucHV0VHlwZVNlbGVjdFByb3BzLFxuICAgIElucHV0VHlwZVRleHRQcm9wcyxcbiAgICBJbnB1dFR5cGVUZXh0YXJlYVByb3BzLFxufSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgaXNUZXh0ID0gKHByb3BzOiBJbnB1dENvbW1vblByb3BzKTogcHJvcHMgaXMgSW5wdXRUeXBlVGV4dFByb3BzID0+IHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IHByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICAgIHR5cGUgPT09ICd0ZXh0JyB8fFxuICAgICAgICB0eXBlID09PSAnc2VhcmNoJyB8fFxuICAgICAgICB0eXBlID09PSAncGFzc3dvcmQnIHx8XG4gICAgICAgIHR5cGUgPT09ICdlbWFpbCcgfHxcbiAgICAgICAgdHlwZSA9PT0gJ3RlbCcgfHxcbiAgICAgICAgdHlwZSA9PT0gJ3VybCcgfHxcbiAgICAgICAgdHlwZSA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgdHlwZSA9PT0gJ3RleHRhcmVhJ1xuICAgICk7XG59O1xuXG5jb25zdCBpc0RhdGVUaW1lID0gKHByb3BzOiBJbnB1dENvbW1vblByb3BzKTogcHJvcHMgaXMgSW5wdXRUeXBlVGV4dFByb3BzID0+IHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IHByb3BzO1xuICAgIHJldHVybiB0eXBlID09PSAnZGF0ZScgfHwgdHlwZSA9PT0gJ3RpbWUnO1xufTtcblxuY29uc3QgaXNCb3VuZGVkID0gKHByb3BzOiBJbnB1dENvbW1vblByb3BzKTogcHJvcHMgaXMgSW5wdXRCb3VuZGVkUHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIHR5cGUgPT09ICdudW1iZXInIHx8IHR5cGUgPT09ICdkYXRlJyB8fCB0eXBlID09PSAndGltZSc7XG59O1xuXG5jb25zdCBpc0NoZWNrYWJsZSA9IChwcm9wczogSW5wdXRDb21tb25Qcm9wcyk6IHByb3BzIGlzIElucHV0Q2hlY2thYmxlUHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIHR5cGUgPT09ICdjaGVja2JveCc7XG59O1xuXG5jb25zdCBpc1JhZGlvID0gKHByb3BzOiBJbnB1dENvbW1vblByb3BzKTogcHJvcHMgaXMgSW5wdXRDaGVja2FibGVQcm9wcyA9PiB7XG4gICAgY29uc3QgeyB0eXBlIH0gPSBwcm9wcztcbiAgICByZXR1cm4gdHlwZSA9PT0gJ3JhZGlvJztcbn07XG5cbmNvbnN0IGlzVGV4dGFyZWEgPSAocHJvcHM6IElucHV0Q29tbW9uUHJvcHMpOiBwcm9wcyBpcyBJbnB1dFR5cGVUZXh0YXJlYVByb3BzID0+IHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IHByb3BzO1xuICAgIHJldHVybiB0eXBlID09PSAnbnVtYmVyJyB8fCB0eXBlID09PSAnZGF0ZScgfHwgdHlwZSA9PT0gJ3RpbWUnO1xufTtcblxuY29uc3QgaXNTZWxlY3QgPSAocHJvcHM6IElucHV0Q29tbW9uUHJvcHMpOiBwcm9wcyBpcyBJbnB1dFR5cGVTZWxlY3RQcm9wcyA9PiB7XG4gICAgY29uc3QgeyB0eXBlIH0gPSBwcm9wcztcbiAgICByZXR1cm4gdHlwZSA9PT0gJ3NlbGVjdCc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dFByb3BzID0gKHByb3BzOiBJbnB1dEJhc2VQcm9wcyk6IElucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4gPT4ge1xuICAgIGlmIChpc1RleHQocHJvcHMpKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHBsYWNlaG9sZGVyLCBtYXhMZW5ndGgsIGF1dG9Db21wbGV0ZSB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7IHZhbHVlLCBwbGFjZWhvbGRlciwgbWF4TGVuZ3RoLCBhdXRvQ29tcGxldGUgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERhdGVUaW1lUHJvcHMgPSAocHJvcHM6IElucHV0QmFzZVByb3BzKTogSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiA9PiB7XG4gICAgaWYgKGlzRGF0ZVRpbWUocHJvcHMpKSB7XG4gICAgICAgIGNvbnN0IHsgZGVmYXVsdFZhbHVlLCBwbGFjZWhvbGRlciwgbWF4TGVuZ3RoLCBhdXRvQ29tcGxldGUgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4geyBkZWZhdWx0VmFsdWUsIHBsYWNlaG9sZGVyLCBtYXhMZW5ndGgsIGF1dG9Db21wbGV0ZSB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Qm91bmRlZFByb3BzID0gKHByb3BzOiBJbnB1dEJhc2VQcm9wcyk6IElucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4gPT4ge1xuICAgIGlmIChpc0JvdW5kZWQocHJvcHMpKSB7XG4gICAgICAgIGNvbnN0IHsgbWluLCBtYXggfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4geyBtaW4sIG1heCB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dGFyZWFQcm9wcyA9IChcbiAgICBwcm9wczogSW5wdXRCYXNlUHJvcHMsXG4pOiBUZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+ID0+IHtcbiAgICBpZiAoaXNUZXh0YXJlYShwcm9wcykpIHtcbiAgICAgICAgY29uc3QgeyByb3dzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHsgcm93cyB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2hlY2thYmxlUHJvcHMgPSAocHJvcHM6IElucHV0QmFzZVByb3BzKTogSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiA9PiB7XG4gICAgaWYgKGlzQ2hlY2thYmxlKHByb3BzKSkge1xuICAgICAgICBjb25zdCB7IGNoZWNrZWQgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4geyBjaGVja2VkIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSYWRpb1Byb3BzID0gKHByb3BzOiBJbnB1dEJhc2VQcm9wcyk6IElucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4gPT4ge1xuICAgIGlmIChpc1JhZGlvKHByb3BzKSkge1xuICAgICAgICBjb25zdCB7IGNoZWNrZWQsIG5hbWUgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4geyBkZWZhdWx0Q2hlY2tlZDogY2hlY2tlZCwgbmFtZSB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0UHJvcHMgPSAocHJvcHM6IElucHV0QmFzZVByb3BzKTogU2VsZWN0SFRNTEF0dHJpYnV0ZXM8SFRNTFNlbGVjdEVsZW1lbnQ+ID0+IHtcbiAgICBpZiAoaXNTZWxlY3QocHJvcHMpKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIGNoaWxkcmVuIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGNoaWxkcmVuIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUF1QjtJ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
@@ -1,106 +1,53 @@
1
- import type { Dataset } from '@preply/ds-core';
2
- import { ChangeEventHandler, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, ReactNode } from 'react';
3
- declare type ARIAAttributeNames = 'aria-describedby' | 'aria-disabled' | 'aria-invalid' | 'aria-required';
4
- declare type WithRequired<T, K extends keyof T> = T & {
5
- [P in K]-?: T[P];
1
+ import { ARIAAttributeNames } from '../accessibility/aria/types';
2
+ import type { ValueChangeEventHandler } from '../events';
3
+ import type { InputTypeCheckboxProps, InputTypeDateProps, InputTypeNumberProps, InputTypePasswordProps, InputTypeRadioProps, InputTypeSelectProps, InputTypeTextProps, InputTypeTextareaProps, InputTypeTimeProps, SimpleTextInputType, UnknownInputProps } from './private/types';
4
+ /**
5
+ * private <Input*> components
6
+ */
7
+ export declare type InputBaseProps = UnknownInputProps & {
8
+ className?: string;
6
9
  };
7
- export declare type ARIAInputPropsMap = WithRequired<ARIAInputProps, ARIAAttributeNames>;
8
- export declare type ARIAInputProps = Pick<React.HTMLAttributes<HTMLInputElement>, ARIAAttributeNames>;
9
- export declare type SimpleTextInputType = 'text' | 'search' | 'email' | 'tel' | 'url';
10
- export declare type SingleLineInputType = SimpleTextInputType | 'password' | 'number' | 'date' | 'time';
11
- export declare type HTMLInputType = SingleLineInputType | 'checkbox' | 'radio';
12
- export declare type InputType = HTMLInputType | 'textarea' | 'select';
13
- export declare type AutoCompleteTextOptions = 'off' | 'on' | 'name' | 'email' | 'username' | 'language' | 'tel' | 'url';
14
- export declare type AutoCompleteDateOptions = 'off' | 'on';
15
- export declare type AutoCompletePasswordOptions = 'off' | 'new-password' | 'current-password';
16
- export interface InputCommonProps extends ARIAInputProps {
17
- type: InputType;
18
- id: string;
19
- name?: string;
20
- value?: string;
21
- defaultValue?: string;
22
- onChange?: ChangeEventHandler;
23
- onFocus?: FocusEventHandler;
24
- onBlur?: FocusEventHandler;
25
- onClick?: MouseEventHandler;
26
- onKeyDown?: KeyboardEventHandler;
27
- onKeyUp?: KeyboardEventHandler;
28
- required?: boolean;
29
- disabled?: boolean;
30
- hasError?: boolean;
31
- dataset?: Dataset;
32
- }
33
- export interface InputStringProps extends InputCommonProps {
34
- type: SingleLineInputType | 'textarea';
35
- placeholder?: string;
36
- maxLength?: number;
37
- }
38
- export interface InputSingleLineProps extends InputStringProps {
39
- type: SingleLineInputType;
40
- }
41
- export interface SimpleTextInputTypeProps extends InputSingleLineProps {
10
+ export declare type InputTextProps = Omit<InputTypeTextProps, 'type'> & {
42
11
  type: SimpleTextInputType;
43
- autoComplete?: AutoCompleteTextOptions;
44
- }
45
- export interface InputTypeTextProps extends SimpleTextInputTypeProps {
46
- type: 'text';
47
- }
48
- export interface InputTypeSearchProps extends SimpleTextInputTypeProps {
49
- type: 'search';
50
- }
51
- export interface InputTypeEmailProps extends SimpleTextInputTypeProps {
52
- type: 'email';
53
- }
54
- export interface InputTypeTelProps extends SimpleTextInputTypeProps {
55
- type: 'tel';
56
- }
57
- export interface InputTypeUrlProps extends SimpleTextInputTypeProps {
58
- type: 'url';
59
- }
60
- export interface InputTypePasswordProps extends InputSingleLineProps {
61
- type: 'password';
62
- autoComplete?: AutoCompletePasswordOptions;
63
- }
64
- export interface InputBoundedProps extends InputSingleLineProps {
65
- type: 'number' | 'date' | 'time';
66
- min?: string;
67
- max?: string;
68
- }
69
- export interface InputTypeNumberProps extends InputBoundedProps {
70
- type: 'number';
71
- }
72
- export interface InputTypeDateProps extends InputBoundedProps {
73
- type: 'date';
74
- autoComplete?: AutoCompleteDateOptions;
75
- }
76
- export interface InputTypeTimeProps extends InputBoundedProps {
77
- type: 'time';
78
- }
79
- export interface InputCheckableProps extends InputCommonProps {
80
- type: 'checkbox' | 'radio';
12
+ onValueChange?: ValueChangeEventHandler<string>;
13
+ };
14
+ export declare type InputTimeProps = Omit<InputTypeTimeProps, 'type' | 'value'> & {
15
+ defaultValue?: string;
16
+ onValueChange?: ValueChangeEventHandler<string>;
17
+ };
18
+ export declare type RadioProps = Omit<InputTypeRadioProps, 'type' | 'value'> & {
81
19
  checked?: boolean;
82
- }
83
- export interface InputTypeCheckboxProps extends InputCheckableProps {
84
- type: 'checkbox';
85
- }
86
- export interface InputTypeRadioProps extends InputCommonProps, InputCheckableProps {
87
- type: 'radio';
88
20
  name: string;
89
- }
90
- export interface InputTypeTextareaProps extends InputStringProps {
91
- type: 'textarea';
92
- rows?: number;
93
- }
94
- export interface InputTypeSelectProps extends InputCommonProps {
95
- type: 'select';
96
- children?: ReactNode;
97
- }
98
- export declare type InputGenericTextProps = InputTypeTextProps | InputTypeSearchProps | InputTypeEmailProps | InputTypeTelProps | InputTypeUrlProps;
99
- declare type UnknownInputProps = InputTypeTextProps | InputTypeSearchProps | InputTypeEmailProps | InputTypeTelProps | InputTypeUrlProps | InputTypePasswordProps | InputTypeNumberProps | InputTypeDateProps | InputTypeTimeProps | InputTypeCheckboxProps | InputTypeRadioProps | InputTypeTextareaProps | InputTypeSelectProps;
100
- export declare type InputProps = UnknownInputProps & {
101
- className?: string;
21
+ onValueChange?: ValueChangeEventHandler<boolean>;
22
+ };
23
+ export declare type SelectProps = Omit<InputTypeSelectProps, 'type'> & {
24
+ onValueChange?: ValueChangeEventHandler<string>;
25
+ };
26
+ export declare type TextareaProps = Omit<InputTypeTextareaProps, 'type'> & {
27
+ onValueChange?: ValueChangeEventHandler<string>;
28
+ };
29
+ export declare type CheckboxProps = Omit<InputTypeCheckboxProps, 'type' | 'value'> & {
30
+ checked?: boolean;
31
+ onValueChange?: ValueChangeEventHandler<boolean>;
32
+ };
33
+ export declare type InputDateProps = Omit<InputTypeDateProps, 'type' | 'value' | 'defaultValue'> & {
34
+ defaultValue?: Date;
35
+ onValueChange?: ValueChangeEventHandler<Date>;
36
+ };
37
+ export declare type InputNumberProps = Omit<InputTypeNumberProps, 'type' | 'value' | 'min' | 'max'> & {
38
+ value?: number;
39
+ min?: number;
40
+ max?: number;
41
+ onValueChange?: ValueChangeEventHandler<number>;
42
+ };
43
+ export declare type InputPasswordProps = Omit<InputTypePasswordProps, 'type'> & {
44
+ onValueChange?: ValueChangeEventHandler<string>;
102
45
  };
103
- export declare type CombinableInputProps<T extends InputCommonProps> = Omit<T, 'id' | 'type'> & {
46
+ /**
47
+ * allows merging <Input*> props onto <Field*> props
48
+ * - exposes all input props, except: id, type, aria-*
49
+ * - makes id optional
50
+ */
51
+ export declare type CombinableInputProps<T> = Omit<T, 'id' | 'type' | ARIAAttributeNames> & {
104
52
  id?: string;
105
53
  };
106
- export {};
@@ -0,0 +1,3 @@
1
+ import { HTMLAttributes } from 'react';
2
+ import type { InputBaseProps } from '../types';
3
+ export declare const getInputProps: (props: InputBaseProps) => HTMLAttributes<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>;
@@ -0,0 +1,14 @@
1
+ import { getTextProps, getDateTimeProps, getBoundedProps, getTextareaProps, getCheckableProps, getRadioProps, getSelectProps } from '../private/utils.js';
2
+
3
+ const getInputProps = (props) => ({
4
+ ...getTextProps(props),
5
+ ...getDateTimeProps(props),
6
+ ...getBoundedProps(props),
7
+ ...getTextareaProps(props),
8
+ ...getCheckableProps(props),
9
+ ...getRadioProps(props),
10
+ ...getSelectProps(props),
11
+ });
12
+
13
+ export { getInputProps };
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0SW5wdXRQcm9wcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lucHV0L3V0aWxzL2dldElucHV0UHJvcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRNTEF0dHJpYnV0ZXMgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7XG4gICAgZ2V0Qm91bmRlZFByb3BzLFxuICAgIGdldENoZWNrYWJsZVByb3BzLFxuICAgIGdldERhdGVUaW1lUHJvcHMsXG4gICAgZ2V0UmFkaW9Qcm9wcyxcbiAgICBnZXRTZWxlY3RQcm9wcyxcbiAgICBnZXRUZXh0UHJvcHMsXG4gICAgZ2V0VGV4dGFyZWFQcm9wcyxcbn0gZnJvbSAnLi4vcHJpdmF0ZS91dGlscyc7XG5pbXBvcnQgdHlwZSB7IElucHV0QmFzZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0SW5wdXRQcm9wcyA9IChcbiAgICBwcm9wczogSW5wdXRCYXNlUHJvcHMsXG4pOiBIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50PiA9PiAoe1xuICAgIC4uLmdldFRleHRQcm9wcyhwcm9wcyksXG4gICAgLi4uZ2V0RGF0ZVRpbWVQcm9wcyhwcm9wcyksXG4gICAgLi4uZ2V0Qm91bmRlZFByb3BzKHByb3BzKSxcbiAgICAuLi5nZXRUZXh0YXJlYVByb3BzKHByb3BzKSxcbiAgICAuLi5nZXRDaGVja2FibGVQcm9wcyhwcm9wcyksXG4gICAgLi4uZ2V0UmFkaW9Qcm9wcyhwcm9wcyksXG4gICAgLi4uZ2V0U2VsZWN0UHJvcHMocHJvcHMpLFxufSk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7TUFhYSxhQUFhLEdBQUcsQ0FDekIsS0FBcUIsTUFDeUQ7SUFDOUUsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ3RCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQzFCLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUN6QixHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUMxQixHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQztJQUMzQixHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDdkIsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDO0NBQzNCOzs7OyJ9
@@ -0,0 +1,11 @@
1
+ import { useState, useEffect, useRef } from 'react';
2
+
3
+ function useForcedRef() {
4
+ const [init] = useState(true);
5
+ const [, setFauxState] = useState(false);
6
+ useEffect(() => setFauxState(init), [init]);
7
+ return useRef(null);
8
+ }
9
+
10
+ export { useForcedRef };
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRm9yY2VkUmVmLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5wdXQvdXRpbHMvdXNlRm9yY2VkUmVmLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRm9yY2VkUmVmPFQ+KCk6IFJlZk9iamVjdDxUPiB7XG4gICAgY29uc3QgW2luaXRdID0gdXNlU3RhdGU8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgY29uc3QgWywgc2V0RmF1eFN0YXRlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiBzZXRGYXV4U3RhdGUoaW5pdCksIFtpbml0XSk7XG5cbiAgICByZXR1cm4gdXNlUmVmPFQ+KG51bGwpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O1NBRWdCLFlBQVk7SUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUN2QyxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRWxELFNBQVMsQ0FBQyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFNUMsT0FBTyxNQUFNLENBQUksSUFBSSxDQUFDLENBQUM7QUFDM0I7Ozs7In0=
@@ -5,11 +5,12 @@ import styles from '../style/index.module.less.js';
5
5
  import { moduleClassNames, booleanClassNames, stringClassNames } from '../../css-module/classNames.js';
6
6
  import { useLayoutPaddingClassnames } from '../module-layout-padding/hooks/useLayoutPaddingClassnames.js';
7
7
  import { useLayoutHideClassnames } from '../module-layout-hide/hooks/useLayoutHideClassnames.js';
8
+ import { useLayoutRelativeClassnames } from '../module-layout-relative/hooks/useLayoutRelativeClassnames.js';
8
9
 
9
10
  const LAYOUT_FLEX = 'LayoutFlex';
10
11
  const useLayoutFlexClassNames = (layout, props) => {
11
12
  useStyleExtract(styles);
12
- const { gap = LAYOUT_GAP_DEFAULT, padding = LAYOUT_PADDING_DEFAULT, nowrap, column, reverse, direction, justifyContent, alignItems, hide, inline, } = props || {};
13
+ const { gap = LAYOUT_GAP_DEFAULT, padding = LAYOUT_PADDING_DEFAULT, nowrap, column, reverse, direction, justifyContent, alignItems, hide, relative, inline, } = props || {};
13
14
  if (layout !== 'flex') {
14
15
  return [];
15
16
  }
@@ -28,8 +29,15 @@ const useLayoutFlexClassNames = (layout, props) => {
28
29
  const paddingClassNames = useLayoutPaddingClassnames(padding);
29
30
  const showClassName = inline ? 'inline-flex' : 'flex';
30
31
  const hideClassNames = useLayoutHideClassnames(hide, showClassName);
31
- return [...classNames, ...gapClassNames, ...paddingClassNames, ...hideClassNames];
32
+ const relativeClassNames = useLayoutRelativeClassnames(relative);
33
+ return [
34
+ ...classNames,
35
+ ...gapClassNames,
36
+ ...paddingClassNames,
37
+ ...hideClassNames,
38
+ ...relativeClassNames,
39
+ ];
32
40
  };
33
41
 
34
42
  export { useLayoutFlexClassNames };
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTGF5b3V0RmxleENsYXNzTmFtZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXlvdXQvaG9va3MvdXNlTGF5b3V0RmxleENsYXNzTmFtZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMYXlvdXRGbGV4UHJvcHMsIExheW91dFR5cGUgfSBmcm9tICdAcHJlcGx5L2RzLWNvcmUnO1xuaW1wb3J0IHtcbiAgICBMQVlPVVRfRkxFWF9ESVJFQ1RJT05fREVGQVVMVCxcbiAgICBMQVlPVVRfR0FQX0RFRkFVTFQsXG4gICAgTEFZT1VUX1BBRERJTkdfREVGQVVMVCxcbn0gZnJvbSAnQHByZXBseS9kcy1jb3JlJztcblxuaW1wb3J0IHsgYm9vbGVhbkNsYXNzTmFtZXMsIG1vZHVsZUNsYXNzTmFtZXMsIHN0cmluZ0NsYXNzTmFtZXMgfSBmcm9tICcuLi8uLi9jc3MtbW9kdWxlJztcbmltcG9ydCB7IHVzZVN0eWxlRXh0cmFjdCB9IGZyb20gJy4uLy4uL3Nzci9ob29rcy91c2VTdHlsZUV4dHJhY3QnO1xuaW1wb3J0IHsgdXNlTGF5b3V0R2FwQ2xhc3NuYW1lcyB9IGZyb20gJy4uL21vZHVsZS1sYXlvdXQtZ2FwL2hvb2tzL3VzZUxheW91dEdhcENsYXNzbmFtZXMnO1xuaW1wb3J0IHsgdXNlTGF5b3V0SGlkZUNsYXNzbmFtZXMgfSBmcm9tICcuLi9tb2R1bGUtbGF5b3V0LWhpZGUnO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFkZGluZ0NsYXNzbmFtZXMgfSBmcm9tICcuLi9tb2R1bGUtbGF5b3V0LXBhZGRpbmcnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuLi9zdHlsZS9pbmRleC5tb2R1bGUubGVzcyc7XG5cbmNvbnN0IExBWU9VVF9GTEVYID0gJ0xheW91dEZsZXgnO1xuXG50eXBlIEhvb2sgPSAobGF5b3V0PzogTGF5b3V0VHlwZSwgcHJvcHM/OiBMYXlvdXRGbGV4UHJvcHMpID0+IHN0cmluZ1tdO1xuXG5leHBvcnQgY29uc3QgdXNlTGF5b3V0RmxleENsYXNzTmFtZXM6IEhvb2sgPSAobGF5b3V0LCBwcm9wcykgPT4ge1xuICAgIHVzZVN0eWxlRXh0cmFjdChzdHlsZXMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgICBnYXAgPSBMQVlPVVRfR0FQX0RFRkFVTFQsXG4gICAgICAgIHBhZGRpbmcgPSBMQVlPVVRfUEFERElOR19ERUZBVUxULFxuICAgICAgICBub3dyYXAsXG4gICAgICAgIGNvbHVtbixcbiAgICAgICAgcmV2ZXJzZSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBqdXN0aWZ5Q29udGVudCxcbiAgICAgICAgYWxpZ25JdGVtcyxcbiAgICAgICAgaGlkZSxcbiAgICAgICAgaW5saW5lLFxuICAgIH0gPSBwcm9wcyB8fCB7fTtcblxuICAgIGlmIChsYXlvdXQgIT09ICdmbGV4Jykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsRGlyZWN0aW9uID1cbiAgICAgICAgZGlyZWN0aW9uIHx8ICghcmV2ZXJzZSAmJiAhY29sdW1uID8gTEFZT1VUX0ZMRVhfRElSRUNUSU9OX0RFRkFVTFQgOiB1bmRlZmluZWQpO1xuXG4gICAgY29uc3QgY29sdW1uQ2xhc3NOYW1lID0gY29sdW1uID8gJ2NvbHVtbicgOiAncm93JztcbiAgICBjb25zdCByZXZlcnNlQ2xhc3NOYW1lID0gcmV2ZXJzZSA/ICdyZXYnIDogJ2Z3ZCc7XG4gICAgY29uc3QgY29sdW1uUmV2ZXJzZUNsYXNzTmFtZSA9IGAke2NvbHVtbkNsYXNzTmFtZX0tJHtyZXZlcnNlQ2xhc3NOYW1lfWA7XG5cbiAgICBjb25zdCBjbGFzc05hbWVzID0gbW9kdWxlQ2xhc3NOYW1lcyhzdHlsZXMsIExBWU9VVF9GTEVYLCBbXG4gICAgICAgIGJvb2xlYW5DbGFzc05hbWVzKCdub3dyYXAnLCB1bmRlZmluZWQsIG5vd3JhcCksXG4gICAgICAgIGNvbHVtblJldmVyc2VDbGFzc05hbWUsXG4gICAgICAgIHN0cmluZ0NsYXNzTmFtZXMoJ2RpcmVjdGlvbicsIGFjdHVhbERpcmVjdGlvbiksXG4gICAgICAgIHN0cmluZ0NsYXNzTmFtZXMoJ2p1c3RpZnktY29udGVudCcsIGp1c3RpZnlDb250ZW50KSxcbiAgICAgICAgc3RyaW5nQ2xhc3NOYW1lcygnYWxpZ24taXRlbXMnLCBhbGlnbkl0ZW1zKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IGdhcENsYXNzTmFtZXMgPSB1c2VMYXlvdXRHYXBDbGFzc25hbWVzKGdhcCk7XG4gICAgY29uc3QgcGFkZGluZ0NsYXNzTmFtZXMgPSB1c2VMYXlvdXRQYWRkaW5nQ2xhc3NuYW1lcyhwYWRkaW5nKTtcbiAgICBjb25zdCBzaG93Q2xhc3NOYW1lID0gaW5saW5lID8gJ2lubGluZS1mbGV4JyA6ICdmbGV4JztcbiAgICBjb25zdCBoaWRlQ2xhc3NOYW1lcyA9IHVzZUxheW91dEhpZGVDbGFzc25hbWVzKGhpZGUsIHNob3dDbGFzc05hbWUpO1xuXG4gICAgcmV0dXJuIFsuLi5jbGFzc05hbWVzLCAuLi5nYXBDbGFzc05hbWVzLCAuLi5wYWRkaW5nQ2xhc3NOYW1lcywgLi4uaGlkZUNsYXNzTmFtZXNdO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWNBLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQztNQUlwQix1QkFBdUIsR0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLO0lBQ3ZELGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV4QixNQUFNLEVBQ0YsR0FBRyxHQUFHLGtCQUFrQixFQUN4QixPQUFPLEdBQUcsc0JBQXNCLEVBQ2hDLE1BQU0sRUFDTixNQUFNLEVBQ04sT0FBTyxFQUNQLFNBQVMsRUFDVCxjQUFjLEVBQ2QsVUFBVSxFQUNWLElBQUksRUFDSixNQUFNLEdBQ1QsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO0lBRWhCLElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRTtRQUNuQixPQUFPLEVBQUUsQ0FBQztLQUNiO0lBRUQsTUFBTSxlQUFlLEdBQ2pCLFNBQVMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyw2QkFBNkIsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUVuRixNQUFNLGVBQWUsR0FBRyxNQUFNLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNsRCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2pELE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxlQUFlLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUV4RSxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1FBQ3JELGlCQUFpQixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDO1FBQzlDLHNCQUFzQjtRQUN0QixnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDO1FBQzlDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLGNBQWMsQ0FBQztRQUNuRCxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO0tBQzlDLENBQUMsQ0FBQztJQUVILE1BQU0sYUFBYSxHQUFHLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELE1BQU0saUJBQWlCLEdBQUcsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxHQUFHLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDdEQsTUFBTSxjQUFjLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXBFLE9BQU8sQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLGFBQWEsRUFBRSxHQUFHLGlCQUFpQixFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUM7QUFDdEY7Ozs7In0=
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTGF5b3V0RmxleENsYXNzTmFtZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXlvdXQvaG9va3MvdXNlTGF5b3V0RmxleENsYXNzTmFtZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMYXlvdXRGbGV4UHJvcHMsIExheW91dFR5cGUgfSBmcm9tICdAcHJlcGx5L2RzLWNvcmUnO1xuaW1wb3J0IHtcbiAgICBMQVlPVVRfRkxFWF9ESVJFQ1RJT05fREVGQVVMVCxcbiAgICBMQVlPVVRfR0FQX0RFRkFVTFQsXG4gICAgTEFZT1VUX1BBRERJTkdfREVGQVVMVCxcbn0gZnJvbSAnQHByZXBseS9kcy1jb3JlJztcblxuaW1wb3J0IHsgYm9vbGVhbkNsYXNzTmFtZXMsIG1vZHVsZUNsYXNzTmFtZXMsIHN0cmluZ0NsYXNzTmFtZXMgfSBmcm9tICcuLi8uLi9jc3MtbW9kdWxlJztcbmltcG9ydCB7IHVzZVN0eWxlRXh0cmFjdCB9IGZyb20gJy4uLy4uL3Nzci9ob29rcy91c2VTdHlsZUV4dHJhY3QnO1xuaW1wb3J0IHsgdXNlTGF5b3V0R2FwQ2xhc3NuYW1lcyB9IGZyb20gJy4uL21vZHVsZS1sYXlvdXQtZ2FwL2hvb2tzL3VzZUxheW91dEdhcENsYXNzbmFtZXMnO1xuaW1wb3J0IHsgdXNlTGF5b3V0SGlkZUNsYXNzbmFtZXMgfSBmcm9tICcuLi9tb2R1bGUtbGF5b3V0LWhpZGUnO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFkZGluZ0NsYXNzbmFtZXMgfSBmcm9tICcuLi9tb2R1bGUtbGF5b3V0LXBhZGRpbmcnO1xuaW1wb3J0IHsgdXNlTGF5b3V0UmVsYXRpdmVDbGFzc25hbWVzIH0gZnJvbSAnLi4vbW9kdWxlLWxheW91dC1yZWxhdGl2ZSc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4uL3N0eWxlL2luZGV4Lm1vZHVsZS5sZXNzJztcblxuY29uc3QgTEFZT1VUX0ZMRVggPSAnTGF5b3V0RmxleCc7XG5cbnR5cGUgSG9vayA9IChsYXlvdXQ/OiBMYXlvdXRUeXBlLCBwcm9wcz86IExheW91dEZsZXhQcm9wcykgPT4gc3RyaW5nW107XG5cbmV4cG9ydCBjb25zdCB1c2VMYXlvdXRGbGV4Q2xhc3NOYW1lczogSG9vayA9IChsYXlvdXQsIHByb3BzKSA9PiB7XG4gICAgdXNlU3R5bGVFeHRyYWN0KHN0eWxlcyk7XG5cbiAgICBjb25zdCB7XG4gICAgICAgIGdhcCA9IExBWU9VVF9HQVBfREVGQVVMVCxcbiAgICAgICAgcGFkZGluZyA9IExBWU9VVF9QQURESU5HX0RFRkFVTFQsXG4gICAgICAgIG5vd3JhcCxcbiAgICAgICAgY29sdW1uLFxuICAgICAgICByZXZlcnNlLFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIGp1c3RpZnlDb250ZW50LFxuICAgICAgICBhbGlnbkl0ZW1zLFxuICAgICAgICBoaWRlLFxuICAgICAgICByZWxhdGl2ZSxcbiAgICAgICAgaW5saW5lLFxuICAgIH0gPSBwcm9wcyB8fCB7fTtcblxuICAgIGlmIChsYXlvdXQgIT09ICdmbGV4Jykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsRGlyZWN0aW9uID1cbiAgICAgICAgZGlyZWN0aW9uIHx8ICghcmV2ZXJzZSAmJiAhY29sdW1uID8gTEFZT1VUX0ZMRVhfRElSRUNUSU9OX0RFRkFVTFQgOiB1bmRlZmluZWQpO1xuXG4gICAgY29uc3QgY29sdW1uQ2xhc3NOYW1lID0gY29sdW1uID8gJ2NvbHVtbicgOiAncm93JztcbiAgICBjb25zdCByZXZlcnNlQ2xhc3NOYW1lID0gcmV2ZXJzZSA/ICdyZXYnIDogJ2Z3ZCc7XG4gICAgY29uc3QgY29sdW1uUmV2ZXJzZUNsYXNzTmFtZSA9IGAke2NvbHVtbkNsYXNzTmFtZX0tJHtyZXZlcnNlQ2xhc3NOYW1lfWA7XG5cbiAgICBjb25zdCBjbGFzc05hbWVzID0gbW9kdWxlQ2xhc3NOYW1lcyhzdHlsZXMsIExBWU9VVF9GTEVYLCBbXG4gICAgICAgIGJvb2xlYW5DbGFzc05hbWVzKCdub3dyYXAnLCB1bmRlZmluZWQsIG5vd3JhcCksXG4gICAgICAgIGNvbHVtblJldmVyc2VDbGFzc05hbWUsXG4gICAgICAgIHN0cmluZ0NsYXNzTmFtZXMoJ2RpcmVjdGlvbicsIGFjdHVhbERpcmVjdGlvbiksXG4gICAgICAgIHN0cmluZ0NsYXNzTmFtZXMoJ2p1c3RpZnktY29udGVudCcsIGp1c3RpZnlDb250ZW50KSxcbiAgICAgICAgc3RyaW5nQ2xhc3NOYW1lcygnYWxpZ24taXRlbXMnLCBhbGlnbkl0ZW1zKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IGdhcENsYXNzTmFtZXMgPSB1c2VMYXlvdXRHYXBDbGFzc25hbWVzKGdhcCk7XG4gICAgY29uc3QgcGFkZGluZ0NsYXNzTmFtZXMgPSB1c2VMYXlvdXRQYWRkaW5nQ2xhc3NuYW1lcyhwYWRkaW5nKTtcbiAgICBjb25zdCBzaG93Q2xhc3NOYW1lID0gaW5saW5lID8gJ2lubGluZS1mbGV4JyA6ICdmbGV4JztcbiAgICBjb25zdCBoaWRlQ2xhc3NOYW1lcyA9IHVzZUxheW91dEhpZGVDbGFzc25hbWVzKGhpZGUsIHNob3dDbGFzc05hbWUpO1xuICAgIGNvbnN0IHJlbGF0aXZlQ2xhc3NOYW1lcyA9IHVzZUxheW91dFJlbGF0aXZlQ2xhc3NuYW1lcyhyZWxhdGl2ZSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgICAuLi5jbGFzc05hbWVzLFxuICAgICAgICAuLi5nYXBDbGFzc05hbWVzLFxuICAgICAgICAuLi5wYWRkaW5nQ2xhc3NOYW1lcyxcbiAgICAgICAgLi4uaGlkZUNsYXNzTmFtZXMsXG4gICAgICAgIC4uLnJlbGF0aXZlQ2xhc3NOYW1lcyxcbiAgICBdO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFlQSxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7TUFJcEIsdUJBQXVCLEdBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSztJQUN2RCxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFeEIsTUFBTSxFQUNGLEdBQUcsR0FBRyxrQkFBa0IsRUFDeEIsT0FBTyxHQUFHLHNCQUFzQixFQUNoQyxNQUFNLEVBQ04sTUFBTSxFQUNOLE9BQU8sRUFDUCxTQUFTLEVBQ1QsY0FBYyxFQUNkLFVBQVUsRUFDVixJQUFJLEVBQ0osUUFBUSxFQUNSLE1BQU0sR0FDVCxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFFaEIsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO1FBQ25CLE9BQU8sRUFBRSxDQUFDO0tBQ2I7SUFFRCxNQUFNLGVBQWUsR0FDakIsU0FBUyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLDZCQUE2QixHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRW5GLE1BQU0sZUFBZSxHQUFHLE1BQU0sR0FBRyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDakQsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBRXhFLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7UUFDckQsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFDOUMsc0JBQXNCO1FBQ3RCLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7UUFDOUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxDQUFDO1FBQ25ELGdCQUFnQixDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUM7S0FDOUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsTUFBTSxpQkFBaUIsR0FBRywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RCxNQUFNLGFBQWEsR0FBRyxNQUFNLEdBQUcsYUFBYSxHQUFHLE1BQU0sQ0FBQztJQUN0RCxNQUFNLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDcEUsTUFBTSxrQkFBa0IsR0FBRywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVqRSxPQUFPO1FBQ0gsR0FBRyxVQUFVO1FBQ2IsR0FBRyxhQUFhO1FBQ2hCLEdBQUcsaUJBQWlCO1FBQ3BCLEdBQUcsY0FBYztRQUNqQixHQUFHLGtCQUFrQjtLQUN4QixDQUFDO0FBQ047Ozs7In0=
@@ -4,12 +4,13 @@ import { useLayoutGapClassnames } from '../module-layout-gap/hooks/useLayoutGapC
4
4
  import styles from '../style/index.module.less.js';
5
5
  import { useLayoutPaddingClassnames } from '../module-layout-padding/hooks/useLayoutPaddingClassnames.js';
6
6
  import { useLayoutHideClassnames } from '../module-layout-hide/hooks/useLayoutHideClassnames.js';
7
+ import { useLayoutRelativeClassnames } from '../module-layout-relative/hooks/useLayoutRelativeClassnames.js';
7
8
  import { moduleClassNames, stringClassNames } from '../../css-module/classNames.js';
8
9
 
9
10
  const LAYOUT_GRID = 'LayoutGrid';
10
11
  const useLayoutGridClassNames = (layout, props) => {
11
12
  useStyleExtract(styles);
12
- const { gap = LAYOUT_GAP_DEFAULT, padding = LAYOUT_PADDING_DEFAULT, justifyContent, alignItems, justifyItems, hide, } = props || {};
13
+ const { gap = LAYOUT_GAP_DEFAULT, padding = LAYOUT_PADDING_DEFAULT, justifyContent, alignItems, justifyItems, hide, relative, } = props || {};
13
14
  if (layout !== 'grid') {
14
15
  return [];
15
16
  }
@@ -21,8 +22,15 @@ const useLayoutGridClassNames = (layout, props) => {
21
22
  const gapClassNames = useLayoutGapClassnames(gap);
22
23
  const paddingClassNames = useLayoutPaddingClassnames(padding);
23
24
  const hideClassNames = useLayoutHideClassnames(hide, 'grid');
24
- return [...classNames, ...gapClassNames, ...paddingClassNames, ...hideClassNames];
25
+ const relativeClassNames = useLayoutRelativeClassnames(relative);
26
+ return [
27
+ ...classNames,
28
+ ...gapClassNames,
29
+ ...paddingClassNames,
30
+ ...hideClassNames,
31
+ ...relativeClassNames,
32
+ ];
25
33
  };
26
34
 
27
35
  export { useLayoutGridClassNames };
28
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTGF5b3V0R3JpZENsYXNzTmFtZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXlvdXQvaG9va3MvdXNlTGF5b3V0R3JpZENsYXNzTmFtZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMYXlvdXRHcmlkUHJvcHMsIExheW91dFR5cGUgfSBmcm9tICdAcHJlcGx5L2RzLWNvcmUnO1xuaW1wb3J0IHsgTEFZT1VUX0dBUF9ERUZBVUxULCBMQVlPVVRfUEFERElOR19ERUZBVUxUIH0gZnJvbSAnQHByZXBseS9kcy1jb3JlJztcblxuaW1wb3J0IHsgbW9kdWxlQ2xhc3NOYW1lcywgc3RyaW5nQ2xhc3NOYW1lcyB9IGZyb20gJy4uLy4uL2Nzcy1tb2R1bGUnO1xuaW1wb3J0IHsgdXNlU3R5bGVFeHRyYWN0IH0gZnJvbSAnLi4vLi4vc3NyL2hvb2tzL3VzZVN0eWxlRXh0cmFjdCc7XG5pbXBvcnQgeyB1c2VMYXlvdXRHYXBDbGFzc25hbWVzIH0gZnJvbSAnLi4vbW9kdWxlLWxheW91dC1nYXAvaG9va3MvdXNlTGF5b3V0R2FwQ2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB1c2VMYXlvdXRIaWRlQ2xhc3NuYW1lcyB9IGZyb20gJy4uL21vZHVsZS1sYXlvdXQtaGlkZSc7XG5pbXBvcnQgeyB1c2VMYXlvdXRQYWRkaW5nQ2xhc3NuYW1lcyB9IGZyb20gJy4uL21vZHVsZS1sYXlvdXQtcGFkZGluZyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4uL3N0eWxlL2luZGV4Lm1vZHVsZS5sZXNzJztcblxuY29uc3QgTEFZT1VUX0dSSUQgPSAnTGF5b3V0R3JpZCc7XG5cbnR5cGUgSG9vayA9IChsYXlvdXQ/OiBMYXlvdXRUeXBlLCBwcm9wcz86IExheW91dEdyaWRQcm9wcykgPT4gc3RyaW5nW107XG5cbmV4cG9ydCBjb25zdCB1c2VMYXlvdXRHcmlkQ2xhc3NOYW1lczogSG9vayA9IChsYXlvdXQsIHByb3BzKSA9PiB7XG4gICAgdXNlU3R5bGVFeHRyYWN0KHN0eWxlcyk7XG5cbiAgICBjb25zdCB7XG4gICAgICAgIGdhcCA9IExBWU9VVF9HQVBfREVGQVVMVCxcbiAgICAgICAgcGFkZGluZyA9IExBWU9VVF9QQURESU5HX0RFRkFVTFQsXG4gICAgICAgIGp1c3RpZnlDb250ZW50LFxuICAgICAgICBhbGlnbkl0ZW1zLFxuICAgICAgICBqdXN0aWZ5SXRlbXMsXG4gICAgICAgIGhpZGUsXG4gICAgfSA9IHByb3BzIHx8IHt9O1xuXG4gICAgaWYgKGxheW91dCAhPT0gJ2dyaWQnKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc05hbWVzID0gbW9kdWxlQ2xhc3NOYW1lcyhzdHlsZXMsIExBWU9VVF9HUklELCBbXG4gICAgICAgIHN0cmluZ0NsYXNzTmFtZXMoJ2p1c3RpZnktY29udGVudCcsIGp1c3RpZnlDb250ZW50KSxcbiAgICAgICAgc3RyaW5nQ2xhc3NOYW1lcygnYWxpZ24taXRlbXMnLCBhbGlnbkl0ZW1zKSxcbiAgICAgICAgc3RyaW5nQ2xhc3NOYW1lcygnanVzdGlmeS1pdGVtcycsIGp1c3RpZnlJdGVtcyksXG4gICAgXSk7XG5cbiAgICBjb25zdCBnYXBDbGFzc05hbWVzID0gdXNlTGF5b3V0R2FwQ2xhc3NuYW1lcyhnYXApO1xuICAgIGNvbnN0IHBhZGRpbmdDbGFzc05hbWVzID0gdXNlTGF5b3V0UGFkZGluZ0NsYXNzbmFtZXMocGFkZGluZyk7XG4gICAgY29uc3QgaGlkZUNsYXNzTmFtZXMgPSB1c2VMYXlvdXRIaWRlQ2xhc3NuYW1lcyhoaWRlLCAnZ3JpZCcpO1xuXG4gICAgcmV0dXJuIFsuLi5jbGFzc05hbWVzLCAuLi5nYXBDbGFzc05hbWVzLCAuLi5wYWRkaW5nQ2xhc3NOYW1lcywgLi4uaGlkZUNsYXNzTmFtZXNdO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVVBLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQztNQUlwQix1QkFBdUIsR0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLO0lBQ3ZELGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV4QixNQUFNLEVBQ0YsR0FBRyxHQUFHLGtCQUFrQixFQUN4QixPQUFPLEdBQUcsc0JBQXNCLEVBQ2hDLGNBQWMsRUFDZCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksR0FDUCxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFFaEIsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO1FBQ25CLE9BQU8sRUFBRSxDQUFDO0tBQ2I7SUFFRCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1FBQ3JELGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLGNBQWMsQ0FBQztRQUNuRCxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO1FBQzNDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7S0FDbEQsQ0FBQyxDQUFDO0lBRUgsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsTUFBTSxpQkFBaUIsR0FBRywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RCxNQUFNLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFN0QsT0FBTyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQztBQUN0Rjs7OzsifQ==
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTGF5b3V0R3JpZENsYXNzTmFtZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXlvdXQvaG9va3MvdXNlTGF5b3V0R3JpZENsYXNzTmFtZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMYXlvdXRHcmlkUHJvcHMsIExheW91dFR5cGUgfSBmcm9tICdAcHJlcGx5L2RzLWNvcmUnO1xuaW1wb3J0IHsgTEFZT1VUX0dBUF9ERUZBVUxULCBMQVlPVVRfUEFERElOR19ERUZBVUxUIH0gZnJvbSAnQHByZXBseS9kcy1jb3JlJztcblxuaW1wb3J0IHsgbW9kdWxlQ2xhc3NOYW1lcywgc3RyaW5nQ2xhc3NOYW1lcyB9IGZyb20gJy4uLy4uL2Nzcy1tb2R1bGUnO1xuaW1wb3J0IHsgdXNlU3R5bGVFeHRyYWN0IH0gZnJvbSAnLi4vLi4vc3NyL2hvb2tzL3VzZVN0eWxlRXh0cmFjdCc7XG5pbXBvcnQgeyB1c2VMYXlvdXRHYXBDbGFzc25hbWVzIH0gZnJvbSAnLi4vbW9kdWxlLWxheW91dC1nYXAvaG9va3MvdXNlTGF5b3V0R2FwQ2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB1c2VMYXlvdXRIaWRlQ2xhc3NuYW1lcyB9IGZyb20gJy4uL21vZHVsZS1sYXlvdXQtaGlkZSc7XG5pbXBvcnQgeyB1c2VMYXlvdXRQYWRkaW5nQ2xhc3NuYW1lcyB9IGZyb20gJy4uL21vZHVsZS1sYXlvdXQtcGFkZGluZyc7XG5pbXBvcnQgeyB1c2VMYXlvdXRSZWxhdGl2ZUNsYXNzbmFtZXMgfSBmcm9tICcuLi9tb2R1bGUtbGF5b3V0LXJlbGF0aXZlJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vc3R5bGUvaW5kZXgubW9kdWxlLmxlc3MnO1xuXG5jb25zdCBMQVlPVVRfR1JJRCA9ICdMYXlvdXRHcmlkJztcblxudHlwZSBIb29rID0gKGxheW91dD86IExheW91dFR5cGUsIHByb3BzPzogTGF5b3V0R3JpZFByb3BzKSA9PiBzdHJpbmdbXTtcblxuZXhwb3J0IGNvbnN0IHVzZUxheW91dEdyaWRDbGFzc05hbWVzOiBIb29rID0gKGxheW91dCwgcHJvcHMpID0+IHtcbiAgICB1c2VTdHlsZUV4dHJhY3Qoc3R5bGVzKTtcblxuICAgIGNvbnN0IHtcbiAgICAgICAgZ2FwID0gTEFZT1VUX0dBUF9ERUZBVUxULFxuICAgICAgICBwYWRkaW5nID0gTEFZT1VUX1BBRERJTkdfREVGQVVMVCxcbiAgICAgICAganVzdGlmeUNvbnRlbnQsXG4gICAgICAgIGFsaWduSXRlbXMsXG4gICAgICAgIGp1c3RpZnlJdGVtcyxcbiAgICAgICAgaGlkZSxcbiAgICAgICAgcmVsYXRpdmUsXG4gICAgfSA9IHByb3BzIHx8IHt9O1xuXG4gICAgaWYgKGxheW91dCAhPT0gJ2dyaWQnKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc05hbWVzID0gbW9kdWxlQ2xhc3NOYW1lcyhzdHlsZXMsIExBWU9VVF9HUklELCBbXG4gICAgICAgIHN0cmluZ0NsYXNzTmFtZXMoJ2p1c3RpZnktY29udGVudCcsIGp1c3RpZnlDb250ZW50KSxcbiAgICAgICAgc3RyaW5nQ2xhc3NOYW1lcygnYWxpZ24taXRlbXMnLCBhbGlnbkl0ZW1zKSxcbiAgICAgICAgc3RyaW5nQ2xhc3NOYW1lcygnanVzdGlmeS1pdGVtcycsIGp1c3RpZnlJdGVtcyksXG4gICAgXSk7XG5cbiAgICBjb25zdCBnYXBDbGFzc05hbWVzID0gdXNlTGF5b3V0R2FwQ2xhc3NuYW1lcyhnYXApO1xuICAgIGNvbnN0IHBhZGRpbmdDbGFzc05hbWVzID0gdXNlTGF5b3V0UGFkZGluZ0NsYXNzbmFtZXMocGFkZGluZyk7XG4gICAgY29uc3QgaGlkZUNsYXNzTmFtZXMgPSB1c2VMYXlvdXRIaWRlQ2xhc3NuYW1lcyhoaWRlLCAnZ3JpZCcpO1xuICAgIGNvbnN0IHJlbGF0aXZlQ2xhc3NOYW1lcyA9IHVzZUxheW91dFJlbGF0aXZlQ2xhc3NuYW1lcyhyZWxhdGl2ZSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgICAuLi5jbGFzc05hbWVzLFxuICAgICAgICAuLi5nYXBDbGFzc05hbWVzLFxuICAgICAgICAuLi5wYWRkaW5nQ2xhc3NOYW1lcyxcbiAgICAgICAgLi4uaGlkZUNsYXNzTmFtZXMsXG4gICAgICAgIC4uLnJlbGF0aXZlQ2xhc3NOYW1lcyxcbiAgICBdO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFXQSxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7TUFJcEIsdUJBQXVCLEdBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSztJQUN2RCxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFeEIsTUFBTSxFQUNGLEdBQUcsR0FBRyxrQkFBa0IsRUFDeEIsT0FBTyxHQUFHLHNCQUFzQixFQUNoQyxjQUFjLEVBQ2QsVUFBVSxFQUNWLFlBQVksRUFDWixJQUFJLEVBQ0osUUFBUSxHQUNYLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUVoQixJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUU7UUFDbkIsT0FBTyxFQUFFLENBQUM7S0FDYjtJQUVELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7UUFDckQsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxDQUFDO1FBQ25ELGdCQUFnQixDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUM7UUFDM0MsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQztLQUNsRCxDQUFDLENBQUM7SUFFSCxNQUFNLGFBQWEsR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxNQUFNLGlCQUFpQixHQUFHLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlELE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3RCxNQUFNLGtCQUFrQixHQUFHLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWpFLE9BQU87UUFDSCxHQUFHLFVBQVU7UUFDYixHQUFHLGFBQWE7UUFDaEIsR0FBRyxpQkFBaUI7UUFDcEIsR0FBRyxjQUFjO1FBQ2pCLEdBQUcsa0JBQWtCO0tBQ3hCLENBQUM7QUFDTjs7OzsifQ==
@@ -5,4 +5,5 @@ export { useLayoutGridResponsiveColumns } from './hooks/useLayoutGridResponsiveC
5
5
  export { useLayoutHideClassnames } from './module-layout-hide';
6
6
  export { useAlignSelfClassNames } from './module-align-self';
7
7
  export { useLayoutPaddingClassnames } from './module-layout-padding';
8
+ export { useLayoutRelativeClassnames } from './module-layout-relative';
8
9
  export * from './module-layout-gap';
@@ -5,5 +5,6 @@ export { useLayoutGridResponsiveColumns } from './hooks/useLayoutGridResponsiveC
5
5
  export { useLayoutHideClassnames } from './module-layout-hide/hooks/useLayoutHideClassnames.js';
6
6
  export { useAlignSelfClassNames } from './module-align-self/hooks/useAlignSelfClassNames.js';
7
7
  export { useLayoutPaddingClassnames } from './module-layout-padding/hooks/useLayoutPaddingClassnames.js';
8
+ export { useLayoutRelativeClassnames } from './module-layout-relative/hooks/useLayoutRelativeClassnames.js';
8
9
  export { useLayoutGapClassnames } from './module-layout-gap/hooks/useLayoutGapClassnames.js';
9
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OyJ9
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OzsifQ==
@@ -0,0 +1,3 @@
1
+ export declare const useLayoutRelativeClassnames: (relative?: boolean | ({
2
+ _: boolean;
3
+ } & Partial<Record<import("@preply/ds-core").Breakpoint, boolean>>) | undefined) => string[];
@@ -0,0 +1,14 @@
1
+ import { useStyleExtract } from '../../../ssr/hooks/useStyleExtract.js';
2
+ import styles from '../style/index.module.less.js';
3
+ import { moduleLocals, booleanClassNames } from '../../../css-module/classNames.js';
4
+
5
+ const LAYOUT_RELATIVE = 'LayoutRelative';
6
+ const useLayoutRelativeClassnames = (relative) => {
7
+ useStyleExtract(styles);
8
+ return moduleLocals(styles, LAYOUT_RELATIVE, [
9
+ booleanClassNames('relative', undefined, relative),
10
+ ]);
11
+ };
12
+
13
+ export { useLayoutRelativeClassnames };
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTGF5b3V0UmVsYXRpdmVDbGFzc25hbWVzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGF5b3V0L21vZHVsZS1sYXlvdXQtcmVsYXRpdmUvaG9va3MvdXNlTGF5b3V0UmVsYXRpdmVDbGFzc25hbWVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVzcG9uc2l2ZSB9IGZyb20gJ0BwcmVwbHkvZHMtY29yZSc7XG5cbmltcG9ydCB7IGJvb2xlYW5DbGFzc05hbWVzLCBtb2R1bGVMb2NhbHMgfSBmcm9tICcuLi8uLi8uLi9jc3MtbW9kdWxlJztcbmltcG9ydCB7IHVzZVN0eWxlRXh0cmFjdCB9IGZyb20gJy4uLy4uLy4uL3Nzci9ob29rcy91c2VTdHlsZUV4dHJhY3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuLi9zdHlsZS9pbmRleC5tb2R1bGUubGVzcyc7XG5cbmNvbnN0IExBWU9VVF9SRUxBVElWRSA9ICdMYXlvdXRSZWxhdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCB1c2VMYXlvdXRSZWxhdGl2ZUNsYXNzbmFtZXMgPSAocmVsYXRpdmU/OiBSZXNwb25zaXZlPGJvb2xlYW4+KTogc3RyaW5nW10gPT4ge1xuICAgIHVzZVN0eWxlRXh0cmFjdChzdHlsZXMpO1xuXG4gICAgcmV0dXJuIG1vZHVsZUxvY2FscyhzdHlsZXMsIExBWU9VVF9SRUxBVElWRSwgW1xuICAgICAgICBib29sZWFuQ2xhc3NOYW1lcygncmVsYXRpdmUnLCB1bmRlZmluZWQsIHJlbGF0aXZlKSxcbiAgICBdKTtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQU1BLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDO01BRTVCLDJCQUEyQixHQUFHLENBQUMsUUFBOEI7SUFDdEUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhCLE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUU7UUFDekMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUM7S0FDckQsQ0FBQyxDQUFDO0FBQ1A7Ozs7In0=
@@ -0,0 +1 @@
1
+ export { useLayoutRelativeClassnames } from './hooks/useLayoutRelativeClassnames';
@@ -0,0 +1,2 @@
1
+ export { useLayoutRelativeClassnames } from './hooks/useLayoutRelativeClassnames.js';
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,5 @@
1
+ @import './mixins.less';
2
+
3
+ .LayoutRelative {
4
+ .layout-relative();
5
+ }
@@ -0,0 +1,9 @@
1
+ import styleInject from '../../../external/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = "._3xRBBL{position:relative}";
4
+ var styles = {__id:"/home/jenkins/workspace/design-system_main/packages/web-core/src/layout/module-layout-relative/style/index.module.less",__css:css_248z,"LayoutRelative--relative":"_3xRBBL"};
5
+ var stylesheet=css_248z;
6
+ styleInject(css_248z);
7
+
8
+ export { styles as default, stylesheet };
9
+
@@ -0,0 +1,5 @@
1
+ .layout-relative() {
2
+ &--relative {
3
+ position: relative;
4
+ }
5
+ }
@@ -0,0 +1,8 @@
1
+ import styleInject from '../../../external/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = "";
4
+ var stylesheet="";
5
+ styleInject(css_248z);
6
+
7
+ export { css_248z as default, stylesheet };
8
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbbnVsbF0sInNvdXJjZXNDb250ZW50IjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdCQUF3Qix3REFBNEQ7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyJ9
@@ -0,0 +1 @@
1
+ export * from './types';
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,2 @@
1
+ import { SVGAttributes } from 'react';
2
+ export declare type ReactSVGComponentType = React.ComponentType<SVGAttributes<SVGElement>>;
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -96,6 +96,11 @@
96
96
  background-color: @@token;
97
97
  }
98
98
 
99
+ .border-width(@namespace, @key) {
100
+ @token: '@{namespace}-@{key}-borderWidth';
101
+ border-width: @@token;
102
+ }
103
+
99
104
  .border-color(@namespace, @key) {
100
105
  @token: '@{namespace}-@{key}-borderColor';
101
106
  border-color: @@token;