diff --git a/src/plugins/prime/stories/Form/InputGroup/InputGroup.mdx b/src/plugins/prime/stories/Form/InputGroup/InputGroup.mdx
index d4f39915..53a1fe25 100644
--- a/src/plugins/prime/stories/Form/InputGroup/InputGroup.mdx
+++ b/src/plugins/prime/stories/Form/InputGroup/InputGroup.mdx
@@ -1,51 +1,29 @@
-import { Meta, Story } from '@storybook/addon-docs/blocks';
+import { Meta, Canvas, Controls, Title, Description } from '@storybook/addon-docs/blocks';
import * as InputGroupStories from './InputGroup.stories';
-import { Template } from './InputGroup.template';
-
-# InputGroup
-
-[PrimeVue InputGroup](https://primevue.org/inputgroup), [Макет](https://www.figma.com/design/4TYeki0MDLhfPGJstbIicf/UI-kit-PrimeFace-\(DS\)?node-id=484-5932\&node-type=section\&t=2PSg63p2UfJ4cUzB-0)
+
+
-### Положение иконки
+## Импорт
-```html dark
-
-
-
-
-
-
-
+```js
+import InputGroup from 'primevue/inputgroup';
+import InputGroupAddon from 'primevue/inputgroupaddon';
```
-
+## Варианты использования
-```html dark
-
-
-
-
-
-
-
-```
+### Default
+Основной пример компонента. Используйте контролы в таблице (**Addons**, **InputProps**, **Custom**), чтобы изменять содержимое аддонов, размеры и состояния поля.
-
-
-```html dark
-
-
-
-
-
-
-
-
-
-
-```
+
+
+#### Список параметров
+
+
+### С текстом
+В качестве наполнения `InputGroupAddon` можно использовать обычный текст.
-
+
diff --git a/src/plugins/prime/stories/Form/InputGroup/InputGroup.stories.js b/src/plugins/prime/stories/Form/InputGroup/InputGroup.stories.js
index 91653b6c..5ce5764b 100644
--- a/src/plugins/prime/stories/Form/InputGroup/InputGroup.stories.js
+++ b/src/plugins/prime/stories/Form/InputGroup/InputGroup.stories.js
@@ -1,32 +1,85 @@
+import InputGroup from 'primevue/inputgroup';
import { Template } from './InputGroup.template';
-export default {
+/**
+ * Группа полей ввода для объединения с аддонами (иконками или текстом).
+ */
+const meta = {
title: 'Prime/Form/InputGroup',
-};
-
-export const LeftIcon = {
- render: Template.bind({}),
- name: 'LeftIcon',
-
+ component: InputGroup,
+ tags: ['autodocs'],
+ argTypes: {
+ size: {
+ control: 'select',
+ options: ['small', 'medium', 'large', 'xlarge'],
+ description: 'Размер группы полей ввода (влияет на паддинги и шрифты)',
+ table: { category: 'Custom', defaultValue: { summary: 'medium' } },
+ },
+ placeholder: {
+ control: 'text',
+ description: 'Текст подсказки для InputText',
+ table: { category: 'InputProps' },
+ },
+ leftIcon: {
+ control: 'text',
+ description: 'Класс иконки для левого аддона (например, "ti ti-user")',
+ table: { category: 'Addons' },
+ },
+ leftText: {
+ control: 'text',
+ description: 'Текст для левого аддона (например, "@")',
+ table: { category: 'Addons' },
+ },
+ rightIcon: {
+ control: 'text',
+ description: 'Класс иконки для правого аддона',
+ table: { category: 'Addons' },
+ },
+ rightText: {
+ control: 'text',
+ description: 'Текст для правого аддона (например, "$")',
+ table: { category: 'Addons' },
+ },
+ invalid: {
+ control: 'boolean',
+ description: 'Флаг ошибки',
+ table: { category: 'Props' },
+ },
+ disabled: {
+ control: 'boolean',
+ description: 'Отключает возможность ввода',
+ table: { category: 'Props' },
+ },
+ readonly: {
+ control: 'boolean',
+ description: 'Поле только для чтения',
+ table: { category: 'Props' },
+ },
+ },
args: {
- icon: 'left',
+ size: 'medium',
+ placeholder: 'Введите данные...',
+ leftIcon: 'ti ti-user',
+ leftText: '',
+ rightIcon: '',
+ rightText: '',
+ invalid: false,
+ disabled: false,
+ readonly: false,
},
};
-export const RightIcon = {
- render: Template.bind({}),
- name: 'RightIcon',
+export default meta;
- args: {
- icon: 'right',
- },
+export const Default = {
+ render: Template,
};
-export const BothIcons = {
- render: Template.bind({}),
- name: 'BothIcons',
-
+export const WithText = {
args: {
- icon: 'both',
+ leftIcon: '',
+ leftText: '@',
+ placeholder: 'Username',
},
+ render: Template,
};
diff --git a/src/plugins/prime/stories/Form/InputGroup/InputGroup.template.js b/src/plugins/prime/stories/Form/InputGroup/InputGroup.template.js
index 64fc5a36..bbc30017 100644
--- a/src/plugins/prime/stories/Form/InputGroup/InputGroup.template.js
+++ b/src/plugins/prime/stories/Form/InputGroup/InputGroup.template.js
@@ -1,37 +1,29 @@
+import InputText from 'primevue/inputtext';
import InputGroup from 'primevue/inputgroup';
import InputGroupAddon from 'primevue/inputgroupaddon';
-import InputText from 'primevue/inputtext';
export const Template = (args) => ({
- components: { InputGroup, InputGroupAddon, InputText },
+ components: { InputText, InputGroup, InputGroupAddon },
setup() {
return { args };
},
template: `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`,
+
+
+
+ {{ args.leftText }}
+
+
+
+
+
+
+ {{ args.rightText }}
+
+
+ `,
});
diff --git a/src/plugins/prime/theme3.0/components/css/inputgroup.ts b/src/plugins/prime/theme3.0/components/css/inputgroup.ts
new file mode 100644
index 00000000..6e9ac1b9
--- /dev/null
+++ b/src/plugins/prime/theme3.0/components/css/inputgroup.ts
@@ -0,0 +1,29 @@
+const css = ({ dt }: { dt: (token: string) => string }) => `
+/* Addon в disabled состоянии */
+.p-inputgroup:has(input[disabled]) .p-inputgroupaddon,
+.p-inputgroup:has(.p-inputtext[disabled]) .p-inputgroupaddon,
+.p-inputgroup:has(.p-component[disabled]) .p-inputgroupaddon {
+ background: ${dt('inputtext.root.disabledBackground')};
+ color: ${dt('inputtext.root.disabledColor')};
+}
+
+/* Иконка внутри addon */
+.p-inputgroup.p-inputgroup .p-inputgroupaddon i {
+ font-size: ${dt('inputgroup.extend.iconSize')};
+}
+
+/* Размер XLarge для InputGroup */
+.p-inputgroup.p-inputgroup-xlg .p-inputgroupaddon {
+ font-size: ${dt('inputtext.extend.extXlg.fontSize')};
+ padding: ${dt('inputtext.extend.extXlg.paddingY')} ${dt(
+ 'inputtext.extend.extXlg.paddingX'
+)};
+}
+
+/* Корректировка иконки в XLarge */
+.p-inputgroup.p-inputgroup-xlg .p-inputgroupaddon i {
+ font-size: ${dt('inputtext.extend.extXlg.fontSize')};
+}
+`;
+
+export default css;
diff --git a/src/plugins/prime/theme3.0/css.ts b/src/plugins/prime/theme3.0/css.ts
index c68e950f..cda14fe5 100644
--- a/src/plugins/prime/theme3.0/css.ts
+++ b/src/plugins/prime/theme3.0/css.ts
@@ -12,6 +12,7 @@ import menuCss from './components/css/menu';
import dividerCss from './components/css/divider';
import drawerCss from './components/css/drawer';
import messageCss from './components/css/message';
+import inputgroupCss from './components/css/inputgroup';
import inputtextCss from './components/css/inputtext';
import popoverCss from './components/css/popover';
import progressbarCss from './components/css/progressbar';
@@ -39,6 +40,7 @@ const css = ({ dt }: { dt: (token: string) => string }) => `
${dividerCss({ dt })}
${drawerCss({ dt })}
${messageCss({ dt })}
+ ${inputgroupCss({ dt })}
${inputtextCss({ dt })}
${popoverCss({ dt })}
${progressbarCss({ dt })}