@origostudio/origo-design 0.0.47 → 0.0.49
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 +4 -2
- package/apply-fixes.js +18 -0
- package/dist/packages/angular-renderer/CHANGELOG.md +22 -0
- package/dist/packages/angular-renderer/package.json +3 -3
- package/dist/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/button/button.component.d.ts +26 -0
- package/dist/packages/angular-renderer/src/components/primitives/button/button.component.js +29 -3
- package/dist/packages/angular-renderer/src/components/primitives/button/button.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/button-group/button-group.component.d.ts +29 -0
- package/dist/packages/angular-renderer/src/components/primitives/button-group/button-group.component.js +76 -0
- package/dist/packages/angular-renderer/src/components/primitives/button-group/button-group.component.js.map +1 -0
- package/dist/packages/angular-renderer/src/components/primitives/card/card.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/card/card.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/card/card.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.d.ts +15 -0
- package/dist/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.js +9 -0
- package/dist/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/chip/chip.component.d.ts +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/chip/chip.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.d.ts +41 -0
- package/dist/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.js +87 -0
- package/dist/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.js.map +1 -0
- package/dist/packages/angular-renderer/src/components/primitives/form-field/form-field.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/form-field/form-field.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/form-field/form-field.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/hbox/hbox.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/hbox/hbox.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/hbox/hbox.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.d.ts +44 -0
- package/dist/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.js +93 -0
- package/dist/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.js.map +1 -0
- package/dist/packages/angular-renderer/src/components/primitives/input-number/input-number.component.d.ts +46 -0
- package/dist/packages/angular-renderer/src/components/primitives/input-number/input-number.component.js +120 -0
- package/dist/packages/angular-renderer/src/components/primitives/input-number/input-number.component.js.map +1 -0
- package/dist/packages/angular-renderer/src/components/primitives/label/label.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/label/label.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/label/label.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/list/list.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/list/list.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/list/list.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.d.ts +15 -0
- package/dist/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.js +9 -0
- package/dist/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/select/select.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/select/select.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/select/select.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/switch/switch.component.d.ts +9 -0
- package/dist/packages/angular-renderer/src/components/primitives/switch/switch.component.js +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/switch/switch.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/tabs/tabs.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/tabs/tabs.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/tabs/tabs.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/text-input/text-input.component.d.ts +28 -0
- package/dist/packages/angular-renderer/src/components/primitives/text-input/text-input.component.js +38 -2
- package/dist/packages/angular-renderer/src/components/primitives/text-input/text-input.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/textarea/textarea.component.d.ts +26 -0
- package/dist/packages/angular-renderer/src/components/primitives/textarea/textarea.component.js +44 -0
- package/dist/packages/angular-renderer/src/components/primitives/textarea/textarea.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/vbox/vbox.component.d.ts +6 -0
- package/dist/packages/angular-renderer/src/components/primitives/vbox/vbox.component.js +3 -0
- package/dist/packages/angular-renderer/src/components/primitives/vbox/vbox.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/index.d.ts +4 -0
- package/dist/packages/angular-renderer/src/index.js +4 -0
- package/dist/packages/angular-renderer/src/index.js.map +1 -1
- package/dist/packages/angular-renderer/src/lib/primitives.provider.js +8 -0
- package/dist/packages/angular-renderer/src/lib/primitives.provider.js.map +1 -1
- package/dist/packages/cli/CHANGELOG.md +8 -0
- package/dist/packages/cli/package.json +2 -2
- package/dist/packages/cli/package.json.bak +2 -2
- package/dist/packages/core/CHANGELOG.md +8 -0
- package/dist/packages/core/package.json +1 -1
- package/dist/packages/core/package.json.bak +1 -1
- package/dist/packages/design-tokens/CHANGELOG.md +8 -0
- package/dist/packages/design-tokens/package.json +1 -1
- package/dist/packages/playground/browser/{chunk-DOh0X2ps.js → chunk-B8mwHWgW.js} +1 -1
- package/dist/packages/playground/browser/{chunk-M-QQ6mOa.js → chunk-B_swdRuc.js} +1 -1
- package/dist/packages/playground/browser/{chunk-KjK48aB_.js → chunk-BbeNQQ9Z.js} +1 -1
- package/dist/packages/playground/browser/{chunk-D8NS9RS7.js → chunk-BlCRDoSd.js} +1 -1
- package/dist/packages/playground/browser/{chunk-CoC5zYQK.js → chunk-C8l8Pst_.js} +1 -1
- package/dist/packages/playground/browser/{chunk-hQe37O_T.js → chunk-CCE_vAje.js} +1 -1
- package/dist/packages/playground/browser/{chunk-7aXhMYht.js → chunk-Cb2ALrKC.js} +1 -1
- package/dist/packages/playground/browser/{chunk-NvAbwArG.js → chunk-CpaI4VGh.js} +1 -1
- package/dist/packages/playground/browser/{chunk-Ds2pJNq1.js → chunk-DgLZ-dIi.js} +1 -1
- package/dist/packages/playground/browser/{chunk-Bnpjwr-7.js → chunk-DkxgAarv.js} +1 -1
- package/dist/packages/playground/browser/{chunk-Vi7LKue9.js → chunk-DoYDPF2-.js} +1 -1
- package/dist/packages/playground/browser/{chunk-DQXI3hQ7.js → chunk-G1sQXMvG.js} +1 -1
- package/dist/packages/playground/browser/{chunk-D8xCSUn8.js → chunk-XTbjIUbx.js} +1 -1
- package/dist/packages/playground/browser/{chunk-pi5vOCVu.js → chunk-lFsGUZ3A.js} +1 -1
- package/dist/packages/playground/browser/{chunk-iW-WwSbU.js → chunk-r4-UbXQJ.js} +1 -1
- package/dist/packages/playground/browser/index.html +1 -1
- package/dist/packages/playground/browser/main-D2PNGI4C.js +734 -0
- package/package.json +1 -1
- package/packages/angular-renderer/CHANGELOG.md +22 -0
- package/packages/angular-renderer/package.json +3 -3
- package/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/button/button.component.html +16 -1
- package/packages/angular-renderer/src/components/primitives/button/button.component.ts +42 -3
- package/packages/angular-renderer/src/components/primitives/button-group/button-group.component.html +8 -0
- package/packages/angular-renderer/src/components/primitives/button-group/button-group.component.scss +18 -0
- package/packages/angular-renderer/src/components/primitives/button-group/button-group.component.ts +77 -0
- package/packages/angular-renderer/src/components/primitives/card/card.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.html +24 -15
- package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.scss +25 -9
- package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.ts +16 -0
- package/packages/angular-renderer/src/components/primitives/chip/chip.component.ts +3 -0
- package/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.html +18 -0
- package/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.scss +47 -0
- package/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.ts +95 -0
- package/packages/angular-renderer/src/components/primitives/form-field/form-field.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/hbox/hbox.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.html +18 -0
- package/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.scss +34 -0
- package/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.ts +103 -0
- package/packages/angular-renderer/src/components/primitives/input-number/input-number.component.html +24 -0
- package/packages/angular-renderer/src/components/primitives/input-number/input-number.component.scss +80 -0
- package/packages/angular-renderer/src/components/primitives/input-number/input-number.component.ts +146 -0
- package/packages/angular-renderer/src/components/primitives/label/label.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/list/list.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.html +11 -1
- package/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.scss +20 -9
- package/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.ts +16 -0
- package/packages/angular-renderer/src/components/primitives/select/select.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/switch/switch.component.html +24 -15
- package/packages/angular-renderer/src/components/primitives/switch/switch.component.scss +40 -22
- package/packages/angular-renderer/src/components/primitives/switch/switch.component.ts +13 -0
- package/packages/angular-renderer/src/components/primitives/tabs/tabs.component.ts +6 -0
- package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.html +21 -10
- package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.scss +44 -18
- package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.ts +48 -2
- package/packages/angular-renderer/src/components/primitives/textarea/textarea.component.html +22 -12
- package/packages/angular-renderer/src/components/primitives/textarea/textarea.component.scss +61 -23
- package/packages/angular-renderer/src/components/primitives/textarea/textarea.component.ts +58 -0
- package/packages/angular-renderer/src/components/primitives/vbox/vbox.component.ts +6 -0
- package/packages/angular-renderer/src/index.ts +4 -0
- package/packages/angular-renderer/src/lib/primitives.provider.ts +8 -0
- package/packages/cli/CHANGELOG.md +8 -0
- package/packages/cli/package.json +2 -2
- package/packages/core/CHANGELOG.md +8 -0
- package/packages/core/package.json +1 -1
- package/packages/design-tokens/CHANGELOG.md +8 -0
- package/packages/design-tokens/package.json +1 -1
- package/packages/devtools/CHANGELOG.md +8 -0
- package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/devtools/package.json +3 -3
- package/packages/playground/CHANGELOG.md +8 -0
- package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/playground/package.json +3 -3
- package/dist/packages/playground/browser/main-HYTU6AQS.js +0 -731
package/package.json
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
## 0.0.49 (2026-10-08)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- add angular renderer primitives and component implementations ([e751643](https://github.com/OrigoStudio/origo-design/commit/e751643))
|
|
6
|
+
- add primitive components and corresponding test suites for angular-renderer package ([d02c3d1](https://github.com/OrigoStudio/origo-design/commit/d02c3d1))
|
|
7
|
+
|
|
8
|
+
### ❤️ Thank You
|
|
9
|
+
|
|
10
|
+
- Hardik Patel @hardikpatelse
|
|
11
|
+
|
|
12
|
+
## 0.0.48 (2026-10-07)
|
|
13
|
+
|
|
14
|
+
### 🚀 Features
|
|
15
|
+
|
|
16
|
+
- add core primitives, buttons, and review artifacts for Angular renderer ([f0cbc46](https://github.com/OrigoStudio/origo-design/commit/f0cbc46))
|
|
17
|
+
- add core button and action primitive components to angular-renderer ([2f7d926](https://github.com/OrigoStudio/origo-design/commit/2f7d926))
|
|
18
|
+
|
|
19
|
+
### ❤️ Thank You
|
|
20
|
+
|
|
21
|
+
- Hardik Patel @hardikpatelse
|
|
22
|
+
|
|
1
23
|
## 0.0.47 (2026-10-07)
|
|
2
24
|
|
|
3
25
|
This was a version bump only for angular-renderer to align it with other projects, there were no code changes.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@origostudio/angular-renderer",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.49",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@origostudio/core": "0.0.
|
|
10
|
-
"@origostudio/design-tokens": "0.0.
|
|
9
|
+
"@origostudio/core": "0.0.49",
|
|
10
|
+
"@origostudio/design-tokens": "0.0.49",
|
|
11
11
|
"tslib": "^2.3.0",
|
|
12
12
|
"@analogjs/vite-plugin-angular": "^2.7.1",
|
|
13
13
|
"zone.js": "^0.16.3",
|
package/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.ts
CHANGED
|
@@ -17,6 +17,9 @@ export interface BreadcrumbItem {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export interface BreadcrumbsProps {
|
|
20
|
+
permissions?: Record<string, string>;
|
|
21
|
+
rules?: Record<string, unknown>;
|
|
22
|
+
metadata?: Record<string, unknown>;
|
|
20
23
|
items?: Array<BreadcrumbItem>;
|
|
21
24
|
'aria-label'?: string;
|
|
22
25
|
'aria-describedby'?: string;
|
|
@@ -39,6 +42,9 @@ export interface BreadcrumbsProps {
|
|
|
39
42
|
})
|
|
40
43
|
export class BreadcrumbsComponent implements OrigoAdapter<BreadcrumbsProps> {
|
|
41
44
|
static readonly contractSchema = {
|
|
45
|
+
permissions: 'object',
|
|
46
|
+
rules: 'object',
|
|
47
|
+
metadata: 'object',
|
|
42
48
|
items: 'array',
|
|
43
49
|
};
|
|
44
50
|
static readonly strictContract = false;
|
|
@@ -3,7 +3,22 @@
|
|
|
3
3
|
[disabled]="computedDisabled()"
|
|
4
4
|
[attr.aria-label]="computedAriaLabel()"
|
|
5
5
|
[attr.aria-describedby]="computedAriaDescribedBy()"
|
|
6
|
+
[attr.aria-busy]="computedLoading() ? 'true' : null"
|
|
6
7
|
(click)="onClick()"
|
|
7
8
|
>
|
|
8
|
-
|
|
9
|
+
@if (computedLoading()) {
|
|
10
|
+
<span class="origo-spinner"></span>
|
|
11
|
+
}
|
|
12
|
+
@if (computedIcon() && computedIconPosition() !== 'right') {
|
|
13
|
+
<span [class]="'origo-icon origo-icon-' + computedIcon()"></span>
|
|
14
|
+
}
|
|
15
|
+
<span class="origo-button-label">{{ computedLabel() }}</span>
|
|
16
|
+
@if (computedBadge()) {
|
|
17
|
+
<span [class]="'origo-badge origo-badge-' + computedBadgeSeverity()">{{
|
|
18
|
+
computedBadge()
|
|
19
|
+
}}</span>
|
|
20
|
+
}
|
|
21
|
+
@if (computedIcon() && computedIconPosition() === 'right') {
|
|
22
|
+
<span [class]="'origo-icon origo-icon-' + computedIcon()"></span>
|
|
23
|
+
}
|
|
9
24
|
</button>
|
|
@@ -12,11 +12,21 @@ import { OrigoAdapter } from '../../../adapters/web/adapter';
|
|
|
12
12
|
import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
|
|
13
13
|
|
|
14
14
|
export interface ButtonProps {
|
|
15
|
+
permissions?: Record<string, string>;
|
|
16
|
+
rules?: Record<string, unknown>;
|
|
17
|
+
metadata?: Record<string, unknown>;
|
|
15
18
|
label?: string;
|
|
16
19
|
disabled?: boolean;
|
|
17
20
|
type?: 'button' | 'submit' | 'reset';
|
|
18
21
|
'aria-label'?: string;
|
|
19
22
|
'aria-describedby'?: string;
|
|
23
|
+
loading?: boolean;
|
|
24
|
+
severity?: string;
|
|
25
|
+
variant?: string;
|
|
26
|
+
icon?: string;
|
|
27
|
+
iconPosition?: string;
|
|
28
|
+
badge?: string;
|
|
29
|
+
badgeSeverity?: string;
|
|
20
30
|
}
|
|
21
31
|
|
|
22
32
|
@Component({
|
|
@@ -27,22 +37,51 @@ export interface ButtonProps {
|
|
|
27
37
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
28
38
|
encapsulation: ViewEncapsulation.ShadowDom,
|
|
29
39
|
host: {
|
|
30
|
-
'[class
|
|
40
|
+
'[class]': 'computedHostClasses()',
|
|
31
41
|
'[attr.data-testid]': 'contract().id ?? ""',
|
|
32
42
|
},
|
|
33
43
|
})
|
|
34
44
|
export class ButtonComponent implements OrigoAdapter<ButtonProps> {
|
|
35
45
|
static readonly contractSchema = {
|
|
46
|
+
permissions: 'object',
|
|
47
|
+
rules: 'object',
|
|
48
|
+
metadata: 'object',
|
|
36
49
|
label: 'string',
|
|
37
50
|
disabled: 'boolean',
|
|
38
51
|
type: 'string',
|
|
52
|
+
loading: 'boolean',
|
|
53
|
+
severity: 'string',
|
|
54
|
+
variant: 'string',
|
|
55
|
+
icon: 'string',
|
|
56
|
+
iconPosition: 'string',
|
|
57
|
+
badge: 'string',
|
|
58
|
+
badgeSeverity: 'string',
|
|
39
59
|
};
|
|
40
60
|
static readonly strictContract = false;
|
|
41
61
|
|
|
42
62
|
contract = input.required<InteractionContract<ButtonProps>>();
|
|
43
63
|
|
|
44
64
|
computedLabel = computed(() => this.contract().props?.label ?? 'Button');
|
|
45
|
-
|
|
65
|
+
computedLoading = computed(() => !!this.contract().props?.loading);
|
|
66
|
+
computedDisabled = computed(() => {
|
|
67
|
+
const props = this.contract().props;
|
|
68
|
+
const rulesDisable =
|
|
69
|
+
props?.rules?.['disable'] === true || props?.permissions?.['allow'] === 'false';
|
|
70
|
+
return !!props?.disabled || this.computedLoading() || rulesDisable;
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
computedIcon = computed(() => this.contract().props?.icon);
|
|
74
|
+
computedIconPosition = computed(() => this.contract().props?.iconPosition ?? 'left');
|
|
75
|
+
computedBadge = computed(() => this.contract().props?.badge);
|
|
76
|
+
computedBadgeSeverity = computed(() => this.contract().props?.badgeSeverity ?? 'info');
|
|
77
|
+
|
|
78
|
+
computedHostClasses = computed(() => {
|
|
79
|
+
const s = this.contract().props?.severity;
|
|
80
|
+
const v = this.contract().props?.variant;
|
|
81
|
+
return ['origo-button', s ? `origo-severity-${s}` : '', v ? `origo-variant-${v}` : '']
|
|
82
|
+
.filter(Boolean)
|
|
83
|
+
.join(' ');
|
|
84
|
+
});
|
|
46
85
|
computedType = computed(() => {
|
|
47
86
|
const type = this.contract().props?.type;
|
|
48
87
|
return type === 'button' || type === 'submit' || type === 'reset' ? type : 'button';
|
|
@@ -65,7 +104,7 @@ export class ButtonComponent implements OrigoAdapter<ButtonProps> {
|
|
|
65
104
|
private experienceAdapter = inject(WebExperienceAdapterService);
|
|
66
105
|
|
|
67
106
|
onClick() {
|
|
68
|
-
if (this.computedDisabled()) return;
|
|
107
|
+
if (this.computedDisabled() || this.computedLoading()) return;
|
|
69
108
|
|
|
70
109
|
const id = this.contract().id;
|
|
71
110
|
if (!id) return;
|
package/packages/angular-renderer/src/components/primitives/button-group/button-group.component.scss
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: inline-flex;
|
|
3
|
+
}
|
|
4
|
+
.origo-button-group-content {
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: row;
|
|
7
|
+
gap: var(--origo-spacing-container-padding);
|
|
8
|
+
}
|
|
9
|
+
:host(.origo-orientation-column) .origo-button-group-content {
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
}
|
|
12
|
+
:host(.origo-attached) .origo-button-group-content {
|
|
13
|
+
gap: 0;
|
|
14
|
+
}
|
|
15
|
+
/* Note: attached styling across shadow DOM requires passing CSS custom properties to children, which relies on children consuming them. */
|
|
16
|
+
:host(.origo-attached) {
|
|
17
|
+
--origo-button-radius: 0;
|
|
18
|
+
}
|
package/packages/angular-renderer/src/components/primitives/button-group/button-group.component.ts
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Component,
|
|
3
|
+
input,
|
|
4
|
+
ChangeDetectionStrategy,
|
|
5
|
+
computed,
|
|
6
|
+
ViewEncapsulation,
|
|
7
|
+
} from '@angular/core';
|
|
8
|
+
import { InteractionContract } from '@origostudio/core';
|
|
9
|
+
import { OrigoAdapter } from '../../../adapters/web/adapter';
|
|
10
|
+
|
|
11
|
+
export interface ButtonGroupProps {
|
|
12
|
+
permissions?: Record<string, string>;
|
|
13
|
+
rules?: Record<string, unknown>;
|
|
14
|
+
metadata?: Record<string, unknown>;
|
|
15
|
+
orientation?: 'row' | 'column';
|
|
16
|
+
attached?: boolean;
|
|
17
|
+
size?: 'small' | 'medium' | 'large';
|
|
18
|
+
'aria-label'?: string;
|
|
19
|
+
'aria-describedby'?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@Component({
|
|
23
|
+
selector: 'origo-button-group',
|
|
24
|
+
standalone: true,
|
|
25
|
+
templateUrl: './button-group.component.html',
|
|
26
|
+
styleUrls: ['./button-group.component.scss'],
|
|
27
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
28
|
+
encapsulation: ViewEncapsulation.ShadowDom,
|
|
29
|
+
host: {
|
|
30
|
+
'[class]': 'computedHostClasses()',
|
|
31
|
+
'[attr.data-testid]': 'contract().id ?? ""',
|
|
32
|
+
},
|
|
33
|
+
})
|
|
34
|
+
export class ButtonGroupComponent implements OrigoAdapter<ButtonGroupProps> {
|
|
35
|
+
static readonly contractSchema = {
|
|
36
|
+
permissions: 'object',
|
|
37
|
+
rules: 'object',
|
|
38
|
+
metadata: 'object',
|
|
39
|
+
orientation: 'string',
|
|
40
|
+
attached: 'boolean',
|
|
41
|
+
size: 'string',
|
|
42
|
+
'aria-label': 'string',
|
|
43
|
+
'aria-describedby': 'string',
|
|
44
|
+
};
|
|
45
|
+
static readonly strictContract = false;
|
|
46
|
+
|
|
47
|
+
contract = input.required<InteractionContract<ButtonGroupProps>>();
|
|
48
|
+
|
|
49
|
+
computedHostClasses = computed(() => {
|
|
50
|
+
const rawO = this.contract().props?.orientation;
|
|
51
|
+
const o = rawO === 'column' ? 'column' : 'row';
|
|
52
|
+
const attached = this.contract().props?.attached;
|
|
53
|
+
const rawSize = this.contract().props?.size;
|
|
54
|
+
const size = ['small', 'medium', 'large'].includes(rawSize as string) ? rawSize : undefined;
|
|
55
|
+
return [
|
|
56
|
+
'origo-button-group',
|
|
57
|
+
`origo-orientation-${o}`,
|
|
58
|
+
attached ? 'origo-attached' : '',
|
|
59
|
+
size ? `origo-size-${size}` : '',
|
|
60
|
+
]
|
|
61
|
+
.filter(Boolean)
|
|
62
|
+
.join(' ');
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
computedAriaLabel = computed(() => {
|
|
66
|
+
const label = this.contract().props?.['aria-label'];
|
|
67
|
+
return label !== undefined && label !== null && String(label).trim() !== ''
|
|
68
|
+
? String(label)
|
|
69
|
+
: undefined;
|
|
70
|
+
});
|
|
71
|
+
computedAriaDescribedBy = computed(() => {
|
|
72
|
+
const desc = this.contract().props?.['aria-describedby'];
|
|
73
|
+
return desc !== undefined && desc !== null && String(desc).trim() !== ''
|
|
74
|
+
? String(desc)
|
|
75
|
+
: undefined;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
@@ -12,6 +12,9 @@ import { InteractionContract } from '@origostudio/core';
|
|
|
12
12
|
import { OrigoAdapter } from '../../../adapters/web/adapter';
|
|
13
13
|
|
|
14
14
|
export interface CardProps {
|
|
15
|
+
permissions?: Record<string, string>;
|
|
16
|
+
rules?: Record<string, unknown>;
|
|
17
|
+
metadata?: Record<string, unknown>;
|
|
15
18
|
title?: string;
|
|
16
19
|
subtitle?: string;
|
|
17
20
|
imageUrl?: string;
|
|
@@ -36,6 +39,9 @@ export interface CardProps {
|
|
|
36
39
|
})
|
|
37
40
|
export class CardComponent implements OrigoAdapter<CardProps> {
|
|
38
41
|
static readonly contractSchema = {
|
|
42
|
+
permissions: 'object',
|
|
43
|
+
rules: 'object',
|
|
44
|
+
metadata: 'object',
|
|
39
45
|
title: 'string',
|
|
40
46
|
subtitle: 'string',
|
|
41
47
|
imageUrl: 'string',
|
package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.html
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
<
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<span class="
|
|
1
|
+
<div class="origo-checkbox__wrapper">
|
|
2
|
+
<label [for]="contract().id" [class.disabled]="computedDisabled()">
|
|
3
|
+
<input
|
|
4
|
+
type="checkbox"
|
|
5
|
+
[id]="contract().id"
|
|
6
|
+
[disabled]="computedDisabled()"
|
|
7
|
+
[required]="computedRequired()"
|
|
8
|
+
[attr.aria-label]="computedAriaLabel()"
|
|
9
|
+
[attr.aria-describedby]="computedAriaDescribedBy()"
|
|
10
|
+
[attr.aria-invalid]="computedInvalid() ? 'true' : null"
|
|
11
|
+
(change)="onChange($event)"
|
|
12
|
+
[checked]="checked()"
|
|
13
|
+
/>
|
|
14
|
+
<span class="label-text">{{ computedLabel() }}</span>
|
|
15
|
+
@if (computedRequired()) {
|
|
16
|
+
<span class="required-indicator" aria-hidden="true">*</span>
|
|
17
|
+
}
|
|
18
|
+
</label>
|
|
19
|
+
@if (computedErrorText()) {
|
|
20
|
+
<div class="origo-checkbox__error">{{ computedErrorText() }}</div>
|
|
15
21
|
}
|
|
16
|
-
|
|
22
|
+
@if (computedHelpText()) {
|
|
23
|
+
<div class="origo-checkbox__help">{{ computedHelpText() }}</div>
|
|
24
|
+
}
|
|
25
|
+
</div>
|
package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.scss
CHANGED
|
@@ -2,28 +2,33 @@
|
|
|
2
2
|
display: block;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
+
.origo-checkbox__wrapper {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
}
|
|
9
|
+
|
|
5
10
|
label {
|
|
6
11
|
display: inline-flex;
|
|
7
12
|
align-items: center;
|
|
8
|
-
gap: var(--origo-spacing-container-padding
|
|
13
|
+
gap: var(--origo-spacing-container-padding);
|
|
9
14
|
cursor: pointer;
|
|
10
|
-
font-family: var(--origo-typography-input-font-family
|
|
11
|
-
font-size: var(--origo-typography-input-font-size
|
|
12
|
-
color: var(--origo-color-text-primary
|
|
15
|
+
font-family: var(--origo-typography-input-font-family);
|
|
16
|
+
font-size: var(--origo-typography-input-font-size);
|
|
17
|
+
color: var(--origo-color-text-primary);
|
|
13
18
|
|
|
14
19
|
&.disabled {
|
|
15
|
-
opacity: var(--origo-opacity-disabled
|
|
20
|
+
opacity: var(--origo-opacity-disabled);
|
|
16
21
|
cursor: not-allowed;
|
|
17
22
|
}
|
|
18
23
|
}
|
|
19
24
|
|
|
20
25
|
input[type='checkbox'] {
|
|
21
26
|
margin: 0;
|
|
22
|
-
accent-color: var(--origo-color-focus
|
|
27
|
+
accent-color: var(--origo-color-focus);
|
|
23
28
|
|
|
24
29
|
&:focus-visible {
|
|
25
|
-
outline:
|
|
26
|
-
outline-offset:
|
|
30
|
+
outline: var(--origo-border-width-thick) solid var(--origo-color-focus);
|
|
31
|
+
outline-offset: var(--origo-border-width-thick);
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
&:disabled {
|
|
@@ -32,5 +37,16 @@ input[type='checkbox'] {
|
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
.required-indicator {
|
|
35
|
-
color: var(--origo-color-error
|
|
40
|
+
color: var(--origo-color-error);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.origo-checkbox__error {
|
|
44
|
+
color: var(--origo-color-text-danger);
|
|
45
|
+
font-size: var(--origo-typography-caption-font-size);
|
|
46
|
+
margin-top: var(--origo-spacing-xs);
|
|
47
|
+
}
|
|
48
|
+
.origo-checkbox__help {
|
|
49
|
+
color: var(--origo-color-text-muted);
|
|
50
|
+
font-size: var(--origo-typography-caption-font-size);
|
|
51
|
+
margin-top: var(--origo-spacing-xs);
|
|
36
52
|
}
|
|
@@ -14,12 +14,18 @@ import { OrigoAdapter } from '../../../adapters/web/adapter';
|
|
|
14
14
|
import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
|
|
15
15
|
|
|
16
16
|
export interface CheckboxProps {
|
|
17
|
+
permissions?: Record<string, string>;
|
|
18
|
+
rules?: Record<string, unknown>;
|
|
19
|
+
metadata?: Record<string, unknown>;
|
|
17
20
|
checked?: boolean;
|
|
18
21
|
label?: string;
|
|
19
22
|
disabled?: boolean;
|
|
20
23
|
'aria-label'?: string;
|
|
21
24
|
'aria-describedby'?: string;
|
|
22
25
|
required?: boolean;
|
|
26
|
+
invalid?: boolean;
|
|
27
|
+
errorText?: string;
|
|
28
|
+
helpText?: string;
|
|
23
29
|
}
|
|
24
30
|
|
|
25
31
|
@Component({
|
|
@@ -36,10 +42,16 @@ export interface CheckboxProps {
|
|
|
36
42
|
})
|
|
37
43
|
export class CheckboxComponent implements OrigoAdapter<CheckboxProps> {
|
|
38
44
|
static readonly contractSchema = {
|
|
45
|
+
permissions: 'object',
|
|
46
|
+
rules: 'object',
|
|
47
|
+
metadata: 'object',
|
|
39
48
|
checked: 'boolean',
|
|
40
49
|
label: 'string',
|
|
41
50
|
disabled: 'boolean',
|
|
42
51
|
required: 'boolean',
|
|
52
|
+
invalid: 'boolean',
|
|
53
|
+
errorText: 'string',
|
|
54
|
+
helpText: 'string',
|
|
43
55
|
};
|
|
44
56
|
static readonly strictContract = false;
|
|
45
57
|
|
|
@@ -62,6 +74,10 @@ export class CheckboxComponent implements OrigoAdapter<CheckboxProps> {
|
|
|
62
74
|
: undefined;
|
|
63
75
|
});
|
|
64
76
|
|
|
77
|
+
computedInvalid = computed(() => !!this.contract().props?.invalid);
|
|
78
|
+
computedErrorText = computed(() => this.contract().props?.errorText ?? '');
|
|
79
|
+
computedHelpText = computed(() => this.contract().props?.helpText ?? '');
|
|
80
|
+
|
|
65
81
|
private experienceAdapter = inject(WebExperienceAdapterService);
|
|
66
82
|
|
|
67
83
|
constructor() {
|
|
@@ -14,6 +14,9 @@ import { OrigoAdapter, coerceContractProps } from '../../../adapters/web/adapter
|
|
|
14
14
|
import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
|
|
15
15
|
|
|
16
16
|
export interface ChipProps {
|
|
17
|
+
permissions?: Record<string, string>;
|
|
18
|
+
rules?: Record<string, unknown>;
|
|
19
|
+
metadata?: Record<string, unknown>;
|
|
17
20
|
selected?: boolean;
|
|
18
21
|
label?: string;
|
|
19
22
|
disabled?: boolean;
|
package/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.ts
CHANGED
|
@@ -15,6 +15,9 @@ import { OrigoAdapter } from '../../../adapters/web/adapter';
|
|
|
15
15
|
import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
|
|
16
16
|
|
|
17
17
|
export interface DataGridProps {
|
|
18
|
+
permissions?: Record<string, string>;
|
|
19
|
+
rules?: Record<string, unknown>;
|
|
20
|
+
metadata?: Record<string, unknown>;
|
|
18
21
|
columns?: Array<{ key: string; label: string; sortable?: boolean }>;
|
|
19
22
|
rows?: Array<Record<string, unknown>>;
|
|
20
23
|
pageSize?: number;
|
|
@@ -42,6 +45,9 @@ export interface DataGridProps {
|
|
|
42
45
|
})
|
|
43
46
|
export class DataGridComponent implements OrigoAdapter<DataGridProps> {
|
|
44
47
|
static readonly contractSchema = {
|
|
48
|
+
permissions: 'object',
|
|
49
|
+
rules: 'object',
|
|
50
|
+
metadata: 'object',
|
|
45
51
|
columns: 'array',
|
|
46
52
|
rows: 'array',
|
|
47
53
|
pageSize: 'number',
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<button
|
|
2
|
+
type="button"
|
|
3
|
+
[disabled]="computedDisabled()"
|
|
4
|
+
[attr.aria-label]="computedAriaLabel()"
|
|
5
|
+
[attr.aria-describedby]="computedAriaDescribedBy()"
|
|
6
|
+
(click)="onClick()"
|
|
7
|
+
>
|
|
8
|
+
@if (computedLoading()) {
|
|
9
|
+
<span class="origo-spinner"></span>
|
|
10
|
+
} @else {
|
|
11
|
+
@if (computedIcon()) {
|
|
12
|
+
<span [class]="'origo-icon origo-icon-' + computedIcon()"></span>
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
@if (computedLabel()) {
|
|
16
|
+
<span class="origo-fab-label">{{ computedLabel() }}</span>
|
|
17
|
+
}
|
|
18
|
+
</button>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: inline-flex;
|
|
3
|
+
position: fixed;
|
|
4
|
+
z-index: 1000;
|
|
5
|
+
}
|
|
6
|
+
:host(.origo-position-bottom-right) {
|
|
7
|
+
bottom: var(--origo-spacing-container-padding);
|
|
8
|
+
right: var(--origo-spacing-container-padding);
|
|
9
|
+
}
|
|
10
|
+
:host(.origo-position-bottom-left) {
|
|
11
|
+
bottom: var(--origo-spacing-container-padding);
|
|
12
|
+
left: var(--origo-spacing-container-padding);
|
|
13
|
+
}
|
|
14
|
+
button {
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
background-color: var(--origo-color-surface-primary);
|
|
17
|
+
color: var(--origo-color-text-inverse);
|
|
18
|
+
border: none;
|
|
19
|
+
border-radius: var(--origo-radius-xl);
|
|
20
|
+
box-shadow: var(--origo-shadow-md);
|
|
21
|
+
display: flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
gap: var(--origo-spacing-sm, 8px);
|
|
25
|
+
min-width: 48px;
|
|
26
|
+
min-height: 48px;
|
|
27
|
+
padding: 0 var(--origo-spacing-container-padding);
|
|
28
|
+
transition: var(--origo-transition-all);
|
|
29
|
+
}
|
|
30
|
+
button:empty {
|
|
31
|
+
padding: 0;
|
|
32
|
+
}
|
|
33
|
+
button:hover:not(:disabled) {
|
|
34
|
+
background-color: var(--origo-color-surface-primary-hover);
|
|
35
|
+
box-shadow: var(--origo-shadow-lg);
|
|
36
|
+
}
|
|
37
|
+
button:active:not(:disabled) {
|
|
38
|
+
background-color: var(--origo-color-surface-primary-active);
|
|
39
|
+
}
|
|
40
|
+
button:focus-visible {
|
|
41
|
+
outline: var(--origo-outline-width, 2px) solid var(--origo-color-focus);
|
|
42
|
+
outline-offset: var(--origo-outline-width, 2px);
|
|
43
|
+
}
|
|
44
|
+
button:disabled {
|
|
45
|
+
cursor: not-allowed;
|
|
46
|
+
opacity: var(--origo-opacity-disabled);
|
|
47
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Component,
|
|
3
|
+
input,
|
|
4
|
+
ChangeDetectionStrategy,
|
|
5
|
+
computed,
|
|
6
|
+
ViewEncapsulation,
|
|
7
|
+
inject,
|
|
8
|
+
} from '@angular/core';
|
|
9
|
+
import { InteractionContract } from '@origostudio/core';
|
|
10
|
+
import { OrigoAdapter } from '../../../adapters/web/adapter';
|
|
11
|
+
import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
|
|
12
|
+
|
|
13
|
+
export interface FabProps {
|
|
14
|
+
permissions?: Record<string, string>;
|
|
15
|
+
rules?: Record<string, unknown>;
|
|
16
|
+
metadata?: Record<string, unknown>;
|
|
17
|
+
icon?: string;
|
|
18
|
+
label?: string;
|
|
19
|
+
severity?: string;
|
|
20
|
+
loading?: boolean;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
position?: 'bottom-right' | 'bottom-left';
|
|
23
|
+
'aria-label'?: string;
|
|
24
|
+
'aria-describedby'?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@Component({
|
|
28
|
+
selector: 'origo-fab',
|
|
29
|
+
standalone: true,
|
|
30
|
+
templateUrl: './floating-action-button.component.html',
|
|
31
|
+
styleUrls: ['./floating-action-button.component.scss'],
|
|
32
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
33
|
+
encapsulation: ViewEncapsulation.ShadowDom,
|
|
34
|
+
host: {
|
|
35
|
+
'[class]': 'computedHostClasses()',
|
|
36
|
+
'[attr.data-testid]': 'contract().id ?? ""',
|
|
37
|
+
},
|
|
38
|
+
})
|
|
39
|
+
export class FloatingActionButtonComponent implements OrigoAdapter<FabProps> {
|
|
40
|
+
static readonly contractSchema = {
|
|
41
|
+
permissions: 'object',
|
|
42
|
+
rules: 'object',
|
|
43
|
+
metadata: 'object',
|
|
44
|
+
icon: 'string',
|
|
45
|
+
label: 'string',
|
|
46
|
+
severity: 'string',
|
|
47
|
+
loading: 'boolean',
|
|
48
|
+
disabled: 'boolean',
|
|
49
|
+
position: 'string',
|
|
50
|
+
'aria-label': 'string',
|
|
51
|
+
'aria-describedby': 'string',
|
|
52
|
+
};
|
|
53
|
+
static readonly strictContract = false;
|
|
54
|
+
|
|
55
|
+
contract = input.required<InteractionContract<FabProps>>();
|
|
56
|
+
|
|
57
|
+
computedIcon = computed(() => this.contract().props?.icon ?? '');
|
|
58
|
+
computedLabel = computed(() => this.contract().props?.label ?? '');
|
|
59
|
+
computedLoading = computed(() => !!this.contract().props?.loading);
|
|
60
|
+
computedDisabled = computed(() => {
|
|
61
|
+
const props = this.contract().props;
|
|
62
|
+
const rulesDisable =
|
|
63
|
+
props?.rules?.['disable'] === true || props?.permissions?.['allow'] === 'false';
|
|
64
|
+
return !!props?.disabled || this.computedLoading() || rulesDisable;
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
computedAriaLabel = computed(() => {
|
|
68
|
+
const p = this.contract().props;
|
|
69
|
+
const v = p?.['aria-label'] || p?.label;
|
|
70
|
+
return v ? String(v) : undefined;
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
computedAriaDescribedBy = computed(() => {
|
|
74
|
+
const v = this.contract().props?.['aria-describedby'];
|
|
75
|
+
return v ? String(v) : undefined;
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
computedHostClasses = computed(() => {
|
|
79
|
+
const s = this.contract().props?.severity;
|
|
80
|
+
const rawP = this.contract().props?.position;
|
|
81
|
+
const p = ['bottom-left', 'bottom-right'].includes(rawP as string) ? rawP : 'bottom-right';
|
|
82
|
+
return ['origo-fab', s ? `origo-severity-${s}` : '', `origo-position-${p}`]
|
|
83
|
+
.filter(Boolean)
|
|
84
|
+
.join(' ');
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
private experienceAdapter = inject(WebExperienceAdapterService);
|
|
88
|
+
|
|
89
|
+
onClick() {
|
|
90
|
+
if (this.computedDisabled() || this.computedLoading()) return;
|
|
91
|
+
const id = this.contract().id;
|
|
92
|
+
if (!id) return;
|
|
93
|
+
this.experienceAdapter.dispatchCapability(id, 'click');
|
|
94
|
+
}
|
|
95
|
+
}
|
package/packages/angular-renderer/src/components/primitives/form-field/form-field.component.ts
CHANGED
|
@@ -12,6 +12,9 @@ import { OrigoAdapter, ContainerComponent } from '../../../adapters/web/adapter'
|
|
|
12
12
|
import { LabelComponent, LabelProps } from '../label/label.component';
|
|
13
13
|
|
|
14
14
|
export interface FormFieldProps {
|
|
15
|
+
permissions?: Record<string, string>;
|
|
16
|
+
rules?: Record<string, unknown>;
|
|
17
|
+
metadata?: Record<string, unknown>;
|
|
15
18
|
label?: string;
|
|
16
19
|
error?: string;
|
|
17
20
|
hint?: string;
|
|
@@ -39,6 +42,9 @@ export interface FormFieldProps {
|
|
|
39
42
|
})
|
|
40
43
|
export class FormFieldComponent implements OrigoAdapter<FormFieldProps>, ContainerComponent {
|
|
41
44
|
static readonly contractSchema = {
|
|
45
|
+
permissions: 'object',
|
|
46
|
+
rules: 'object',
|
|
47
|
+
metadata: 'object',
|
|
42
48
|
label: 'string',
|
|
43
49
|
error: 'string',
|
|
44
50
|
hint: 'string',
|