sprof 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -13
- package/dist/core/components/FiltersButtonsSelect.vue.d.ts +9 -0
- package/dist/core/components/SortSelect.vue.d.ts +9 -0
- package/dist/core/components/atoms/index.d.ts +1 -3
- package/dist/core/ftsp/FTSP.d.ts +8 -0
- package/dist/global-components.d.ts +0 -2
- package/dist/modules/forms/components/Fields/DateField.vue.d.ts +1 -1
- package/dist/modules/forms/components/Fields/FieldsComponentsMap.d.ts +1 -1
- package/dist/modules/schedule/components/ScheduleGridEditor.vue.d.ts +16 -0
- package/dist/sprof.js +4025 -4084
- package/dist/sprof.umd.cjs +13 -13
- package/dist/style.css +1 -1
- package/package.json +2 -1
- package/dist/core/components/atoms/PDatePicker/PDatePicker.stories.d.ts +0 -469
- package/dist/core/components/atoms/PDatePicker/PDatePicker.test.d.ts +0 -1
- package/dist/core/components/atoms/PDatePicker/PDatePicker.vue.d.ts +0 -84
- package/dist/core/components/atoms/PInputDate/PInputDate.stories.d.ts +0 -155
- package/dist/core/components/atoms/PInputDate/PInputDate.test.d.ts +0 -1
- package/dist/core/components/atoms/PInputDate/PInputDate.vue.d.ts +0 -63
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# sprof — UI Kit & Platform Library (PF)
|
|
2
2
|
|
|
3
3
|
Библиотека UI-компонентов и платформенного ядра для проектов на **Vue 3 + Quasar 2**.
|
|
4
|
-
Используется
|
|
4
|
+
Используется во всех 8 клиентах: rdkb (hr/map/food/leiter/incident), portal, pros, ferma.
|
|
5
5
|
|
|
6
6
|
- **P-компоненты** — обёртки над Quasar (полный проброс props/slots/events)
|
|
7
7
|
- **PF / PFM** — платформенное ядро: helpers, store (BaseStore), FTSP, UI (Notify/Dialog), auth,
|
|
8
|
-
модули (
|
|
8
|
+
модули (Tabs, Contacts, Schedule, Table, Menus, Forms)
|
|
9
9
|
- **installSprof** — регистрация всех P-компонентов + Quasar-плагинов одной строкой
|
|
10
10
|
|
|
11
11
|
---
|
|
@@ -61,7 +61,7 @@ import type {} from 'sprof';
|
|
|
61
61
|
export {};
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
Ничего вручную дописывать не нужно — все
|
|
64
|
+
Ничего вручную дописывать не нужно — все 96 P-компонентов (атомы, молекулы, организмы)
|
|
65
65
|
типизируются в шаблонах автоматически.
|
|
66
66
|
|
|
67
67
|
---
|
|
@@ -85,8 +85,8 @@ export {};
|
|
|
85
85
|
| `PBadge` | QBadge | label/color/outline/rounded/floating/multiLine |
|
|
86
86
|
| `PRadio` | QRadio | v-model, label, size |
|
|
87
87
|
| `PInputNumber` | QInput + QBtn | step/min/max, кнопки +/− |
|
|
88
|
-
| `
|
|
89
|
-
| `PInputDate` |
|
|
88
|
+
| `PDateInput` | QInput + QDate | универсальное поле даты: mask ДД.ММ.ГГГГ + popup, модель `Date \| string` |
|
|
89
|
+
| `PDatePicker` / `PInputDate` | — | legacy-алиасы PDateInput (удаление — TECH_DEBT Т2) |
|
|
90
90
|
| `PTextarea` | QInput | resize, mask |
|
|
91
91
|
| `PTooltip` | QTooltip | timeout, позиционирование, typeStyle |
|
|
92
92
|
| `PString` | QItemLabel | текст с цветом/размером, isHtml |
|
|
@@ -95,14 +95,14 @@ export {};
|
|
|
95
95
|
| `PList` / `PListItem` | QList / QItem | списки |
|
|
96
96
|
| `PLeftSlider` / `PRightSlider` / `PTopSlider` | QBtn | выдвижные панели |
|
|
97
97
|
| `PSticky` | div | sticky-обёртка |
|
|
98
|
-
| `
|
|
98
|
+
| `PTableToggle` | QBtn | переключатель режима таблицы (используется в PTable модуля Table) |
|
|
99
99
|
|
|
100
100
|
### Молекулы/организмы (основные)
|
|
101
101
|
|
|
102
102
|
`PAdd`, `PDel`, `PModal`, `PContainer`, `PContainerStickyHead`, `PTabs`, `PUploaderFile`,
|
|
103
|
-
`PUploaderImage`, `PAuthForm`, `PAuthModal`, `
|
|
104
|
-
`
|
|
105
|
-
|
|
103
|
+
`PUploaderImage`, `PAuthForm`, `PAuthModal`, `PPagination`, `PAutocomplete`,
|
|
104
|
+
`PContactForm*`, `PTable*`, `PCrudList`, `POptionsListMany` и др. — полный список
|
|
105
|
+
в реестрах `src/core/components/*/index.ts`.
|
|
106
106
|
|
|
107
107
|
---
|
|
108
108
|
|
|
@@ -111,7 +111,7 @@ export {};
|
|
|
111
111
|
| Объект | Описание |
|
|
112
112
|
| --- | --- |
|
|
113
113
|
| `PF` | helpers, store (BaseStore), FTSP, UI (Notify/Dialog), auth, types |
|
|
114
|
-
| `PFM` | модули:
|
|
114
|
+
| `PFM` | модули: Tabs, Contacts, Schedule, Table, Menus, Forms |
|
|
115
115
|
|
|
116
116
|
```ts
|
|
117
117
|
import { PF, PFM } from 'sprof';
|
|
@@ -146,11 +146,13 @@ import { PF, PFM } from 'sprof';
|
|
|
146
146
|
## 🧪 Разработка
|
|
147
147
|
|
|
148
148
|
```bash
|
|
149
|
-
npm run test # vitest (
|
|
149
|
+
npm run test # vitest (64 файла, 448 тестов)
|
|
150
150
|
npm run lint # eslint src --fix
|
|
151
151
|
npm run lint:check # eslint src (без мутаций, для CI)
|
|
152
152
|
npm run build # сборка dist (ESM + UMD + d.ts)
|
|
153
153
|
npm run check:dist # проверка бандла: нет resolveComponent("Q…")
|
|
154
|
+
npm run check:size # size-limit (бюджеты бандла)
|
|
155
|
+
npm run test:e2e # Playwright-смоук (e2e/app)
|
|
154
156
|
npm run storybook # Storybook (документация компонентов)
|
|
155
157
|
```
|
|
156
158
|
|
|
@@ -163,8 +165,9 @@ npm run storybook # Storybook (документация компонентов
|
|
|
163
165
|
|
|
164
166
|
Либо GitHub Actions `publish.yml` (workflow_dispatch, OTP-инпут).
|
|
165
167
|
|
|
166
|
-
После публикации обновить клиентов: `npm
|
|
167
|
-
(
|
|
168
|
+
После публикации обновить клиентов: `npm run update:clients` —
|
|
169
|
+
`scripts/update-clients-sprof.sh` (npm ×8 + пересборка dev-контейнеров; rdkb ×5,
|
|
170
|
+
portal, pros, ferma).
|
|
168
171
|
|
|
169
172
|
### Генерация типов GlobalComponents
|
|
170
173
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { default as FilterModel } from '../ftsp/FilterModel';
|
|
2
|
+
import { default as FTSP } from '../ftsp/FTSP';
|
|
2
3
|
declare const _default: import('vue').DefineComponent<globalThis.ExtractPropTypes<{
|
|
3
4
|
models: {
|
|
4
5
|
type: {
|
|
@@ -26,6 +27,10 @@ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropType
|
|
|
26
27
|
required: false;
|
|
27
28
|
default: boolean;
|
|
28
29
|
};
|
|
30
|
+
ftsp: {
|
|
31
|
+
type: globalThis.PropType<FTSP>;
|
|
32
|
+
required: false;
|
|
33
|
+
};
|
|
29
34
|
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
30
35
|
load: (...args: any[]) => void;
|
|
31
36
|
}, string, import('vue').PublicProps, Readonly<globalThis.ExtractPropTypes<{
|
|
@@ -55,6 +60,10 @@ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropType
|
|
|
55
60
|
required: false;
|
|
56
61
|
default: boolean;
|
|
57
62
|
};
|
|
63
|
+
ftsp: {
|
|
64
|
+
type: globalThis.PropType<FTSP>;
|
|
65
|
+
required: false;
|
|
66
|
+
};
|
|
58
67
|
}>> & Readonly<{
|
|
59
68
|
onLoad?: ((...args: any[]) => any) | undefined;
|
|
60
69
|
}>, {
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { default as FTSP } from '../ftsp/FTSP';
|
|
1
2
|
declare const _default: import('vue').DefineComponent<globalThis.ExtractPropTypes<{
|
|
2
3
|
maxWidth: {
|
|
3
4
|
type: (StringConstructor | NumberConstructor)[];
|
|
4
5
|
default: number;
|
|
5
6
|
};
|
|
7
|
+
ftsp: {
|
|
8
|
+
type: globalThis.PropType<FTSP>;
|
|
9
|
+
required: false;
|
|
10
|
+
};
|
|
6
11
|
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
7
12
|
load: (...args: any[]) => void;
|
|
8
13
|
}, string, import('vue').PublicProps, Readonly<globalThis.ExtractPropTypes<{
|
|
@@ -10,6 +15,10 @@ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropType
|
|
|
10
15
|
type: (StringConstructor | NumberConstructor)[];
|
|
11
16
|
default: number;
|
|
12
17
|
};
|
|
18
|
+
ftsp: {
|
|
19
|
+
type: globalThis.PropType<FTSP>;
|
|
20
|
+
required: false;
|
|
21
|
+
};
|
|
13
22
|
}>> & Readonly<{
|
|
14
23
|
onLoad?: ((...args: any[]) => any) | undefined;
|
|
15
24
|
}>, {
|
|
@@ -3,14 +3,12 @@ import { default as PButton } from './PButton/PButton.vue';
|
|
|
3
3
|
import { default as PCheckBox } from './PCheckbox/PCheckBox.vue';
|
|
4
4
|
import { default as PChip } from './PChip/PChip.vue';
|
|
5
5
|
import { default as PDateInput } from './PDateInput/PDateInput.vue';
|
|
6
|
-
import { default as PDatePicker } from './PDatePicker/PDatePicker.vue';
|
|
7
6
|
import { default as PDateTimeInput } from './PDateTimeInput/PDateTimeInput.vue';
|
|
8
7
|
import { default as PDialog } from './PDialog/PDialog.vue';
|
|
9
8
|
import { default as PFlex } from './PFlex/PFlex.vue';
|
|
10
9
|
import { default as PForm } from './PForm/PForm.vue';
|
|
11
10
|
import { default as PHint } from './PHint/PHint.vue';
|
|
12
11
|
import { default as PInput } from './PInput/PInput.vue';
|
|
13
|
-
import { default as PInputDate } from './PInputDate/PInputDate.vue';
|
|
14
12
|
import { default as PInputNumber } from './PInputNumber/PInputNumber.vue';
|
|
15
13
|
import { default as PLeftSlider } from './PLeftSlider/PLeftSlider.vue';
|
|
16
14
|
import { default as PList } from './PList/PList.vue';
|
|
@@ -30,4 +28,4 @@ import { default as PTopSlider } from './PTopSlider/PTopSlider.vue';
|
|
|
30
28
|
export default function install(app: {
|
|
31
29
|
component: (a: string, b: unknown) => void;
|
|
32
30
|
}): void;
|
|
33
|
-
export { PBadge, PButton, PCheckBox, PChip, PDateInput,
|
|
31
|
+
export { PBadge, PButton, PCheckBox, PChip, PDateInput, PDateTimeInput, PDialog, PFlex, PForm, PHint, PInput, PInputNumber, PLeftSlider, PList, PListItem, POptionsListSingle, POpts, PRadio, PRightSlider, PSelect, PSticky, PString, PTableToggle, PTextarea, PToggle, PTooltip, PTopSlider, };
|
package/dist/core/ftsp/FTSP.d.ts
CHANGED
|
@@ -13,6 +13,14 @@ export default class FTSP {
|
|
|
13
13
|
t: TreeModel;
|
|
14
14
|
constructor(i?: FTSP);
|
|
15
15
|
static Get(): FTSP;
|
|
16
|
+
/**
|
|
17
|
+
* Фабрика (Т1 TECH_DEBT): реактивный экземпляр на страницу/компонент.
|
|
18
|
+
*
|
|
19
|
+
* Синглтон Get() оставлен для совместимости; новый код — create() + передача
|
|
20
|
+
* экземпляра в useCrud/useFilters/usePagination и в компоненты с prop `ftsp`,
|
|
21
|
+
* чтобы фильтры/пагинация не «перетекали» между разделами.
|
|
22
|
+
*/
|
|
23
|
+
static create(): FTSP;
|
|
16
24
|
createFrom(ftsp: string): void;
|
|
17
25
|
clearForHTTP(): FTSP;
|
|
18
26
|
private static EmptyEntiries;
|
|
@@ -12,14 +12,12 @@ declare module 'vue' {
|
|
|
12
12
|
PCheckBox: typeof Atoms.PCheckBox;
|
|
13
13
|
PChip: typeof Atoms.PChip;
|
|
14
14
|
PDateInput: typeof Atoms.PDateInput;
|
|
15
|
-
PDatePicker: typeof Atoms.PDatePicker;
|
|
16
15
|
PDateTimeInput: typeof Atoms.PDateTimeInput;
|
|
17
16
|
PDialog: typeof Atoms.PDialog;
|
|
18
17
|
PFlex: typeof Atoms.PFlex;
|
|
19
18
|
PForm: typeof Atoms.PForm;
|
|
20
19
|
PHint: typeof Atoms.PHint;
|
|
21
20
|
PInput: typeof Atoms.PInput;
|
|
22
|
-
PInputDate: typeof Atoms.PInputDate;
|
|
23
21
|
PInputNumber: typeof Atoms.PInputNumber;
|
|
24
22
|
PLeftSlider: typeof Atoms.PLeftSlider;
|
|
25
23
|
PList: typeof Atoms.PList;
|
|
@@ -12,5 +12,5 @@ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropType
|
|
|
12
12
|
};
|
|
13
13
|
}>> & Readonly<{
|
|
14
14
|
onFill?: ((...args: any[]) => any) | undefined;
|
|
15
|
-
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {},
|
|
15
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
16
16
|
export default _default;
|
|
@@ -58,7 +58,7 @@ declare const FiedlsComponents: {
|
|
|
58
58
|
};
|
|
59
59
|
}>> & Readonly<{
|
|
60
60
|
onFill?: ((...args: any[]) => any) | undefined;
|
|
61
|
-
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {},
|
|
61
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
62
62
|
radio: import('vue').DefineComponent<globalThis.ExtractPropTypes<{
|
|
63
63
|
fieldFill: {
|
|
64
64
|
type: typeof import('../../classes').FieldFill;
|
|
@@ -25,6 +25,20 @@ type __VLS_Props = {
|
|
|
25
25
|
* и селект «Секция» у слотов.
|
|
26
26
|
*/
|
|
27
27
|
sessionsEnabled?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Управление днями (по умолчанию — true): вкладки дней, поле даты,
|
|
30
|
+
* кнопки «добавить/удалить день». Для бесдатовых однодневных расписаний
|
|
31
|
+
* («распорядок дня» отделения) — false: редактор работает с days[0],
|
|
32
|
+
* день создаётся и удаляется страницей-владельцем.
|
|
33
|
+
*/
|
|
34
|
+
daysEnabled?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Управление местами/залами (по умолчанию — true): «добавить зал»,
|
|
37
|
+
* выбор/создание места, удаление расписания-места. Для одноколоночных
|
|
38
|
+
* расписаний — false: место привязывается адаптером проекта,
|
|
39
|
+
* кнопки управления местами скрыты.
|
|
40
|
+
*/
|
|
41
|
+
placesEnabled?: boolean;
|
|
28
42
|
};
|
|
29
43
|
declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
30
44
|
labels: Partial<ScheduleLabels>;
|
|
@@ -37,6 +51,8 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<__
|
|
|
37
51
|
slotListOf: (schedule: any) => any[];
|
|
38
52
|
nestedSlotListOf: (session: any) => any[];
|
|
39
53
|
sessionsEnabled: boolean;
|
|
54
|
+
daysEnabled: boolean;
|
|
55
|
+
placesEnabled: boolean;
|
|
40
56
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
41
57
|
gridScrollRef: HTMLDivElement;
|
|
42
58
|
}, HTMLDivElement>, {
|