@origostudio/origo-design 0.0.37 → 0.0.39

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 (137) hide show
  1. package/CHANGELOG.md +3 -2
  2. package/dist/packages/angular-renderer/CHANGELOG.md +21 -0
  3. package/dist/packages/angular-renderer/package.json +7 -6
  4. package/dist/packages/angular-renderer/src/adapters/web/experience-adapter.service.d.ts +2 -0
  5. package/dist/packages/angular-renderer/src/adapters/web/experience-adapter.service.js +11 -0
  6. package/dist/packages/angular-renderer/src/adapters/web/experience-adapter.service.js.map +1 -1
  7. package/dist/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.js.map +1 -1
  8. package/dist/packages/angular-renderer/src/components/primitives/chip/chip.component.js.map +1 -1
  9. package/dist/packages/angular-renderer/src/components/primitives/switch/switch.component.js.map +1 -1
  10. package/dist/packages/angular-renderer/src/devtools/devtools-bridge.js +2 -0
  11. package/dist/packages/angular-renderer/src/devtools/devtools-bridge.js.map +1 -1
  12. package/dist/packages/angular-renderer/src/index.d.ts +1 -0
  13. package/dist/packages/angular-renderer/src/index.js +1 -0
  14. package/dist/packages/angular-renderer/src/index.js.map +1 -1
  15. package/dist/packages/angular-renderer/src/lib/primitives.provider.js +26 -20
  16. package/dist/packages/angular-renderer/src/lib/primitives.provider.js.map +1 -1
  17. package/dist/packages/cli/CHANGELOG.md +8 -0
  18. package/dist/packages/cli/package.json +2 -2
  19. package/dist/packages/cli/package.json.bak +2 -2
  20. package/dist/packages/core/CHANGELOG.md +14 -0
  21. package/dist/packages/core/package.json +2 -2
  22. package/dist/packages/core/package.json.bak +2 -2
  23. package/dist/packages/design-tokens/CHANGELOG.md +8 -0
  24. package/dist/packages/design-tokens/package.json +1 -1
  25. package/dist/packages/playground/browser/{chunk-iSLqhP12.js → chunk-B1z-uVFi.js} +1 -1
  26. package/dist/packages/playground/browser/{chunk-BxusNwwt.js → chunk-BGZXpmBQ.js} +1 -1
  27. package/dist/packages/playground/browser/{chunk-B0HlAWSR.js → chunk-ByrswSrM.js} +1 -1
  28. package/dist/packages/playground/browser/{chunk-rK1aqCb7.js → chunk-CFbPXTNr.js} +1 -1
  29. package/dist/packages/playground/browser/{chunk-Dd9ht4SU.js → chunk-CSecAR9q.js} +1 -1
  30. package/dist/packages/playground/browser/{chunk-BkTn1FbH.js → chunk-D-8Zr5zg.js} +1 -1
  31. package/dist/packages/playground/browser/{chunk-DbylCYBP.js → chunk-D2kcCG-o.js} +1 -1
  32. package/dist/packages/playground/browser/{chunk-zg5PqW0l.js → chunk-DQx5lQqG.js} +1 -1
  33. package/dist/packages/playground/browser/{chunk-DXxUFvGw.js → chunk-Dac2dp5T.js} +1 -1
  34. package/dist/packages/playground/browser/{chunk-CXHFI87Z.js → chunk-DiZkmwKl.js} +1 -1
  35. package/dist/packages/playground/browser/{chunk-BI1AmKI_.js → chunk-DwU-a89u.js} +1 -1
  36. package/dist/packages/playground/browser/{chunk-D2bm1B8y.js → chunk-JF8ksHJn.js} +1 -1
  37. package/dist/packages/playground/browser/{chunk-ZeGfaGFy.js → chunk-_TRKH8kG.js} +1 -1
  38. package/dist/packages/playground/browser/{chunk-DT7GQcHj.js → chunk-e5kB8V0v.js} +1 -1
  39. package/dist/packages/playground/browser/{chunk-94bHXqp1.js → chunk-zJLityDb.js} +1 -1
  40. package/dist/packages/playground/browser/index.html +1 -1
  41. package/dist/packages/playground/browser/main-33XWGVNC.js +731 -0
  42. package/eslint.config.js +2 -1
  43. package/generate_prompts.ps1 +10 -0
  44. package/package.json +3 -2
  45. package/packages/angular-renderer/CHANGELOG.md +21 -0
  46. package/packages/angular-renderer/package.json +7 -6
  47. package/packages/angular-renderer/playwright/.cache/assets/adapter-iYml3Kk6.js +121 -0
  48. package/packages/angular-renderer/playwright/.cache/assets/adapter-iYml3Kk6.js.map +1 -0
  49. package/packages/angular-renderer/playwright/.cache/assets/breadcrumbs.component-DqZwZwH1.js +200 -0
  50. package/packages/angular-renderer/playwright/.cache/assets/breadcrumbs.component-DqZwZwH1.js.map +1 -0
  51. package/packages/angular-renderer/playwright/.cache/assets/button.component-Dnc1mP3D.js +112 -0
  52. package/packages/angular-renderer/playwright/.cache/assets/button.component-Dnc1mP3D.js.map +1 -0
  53. package/packages/angular-renderer/playwright/.cache/assets/card.component-0WWaDbUV.js +180 -0
  54. package/packages/angular-renderer/playwright/.cache/assets/card.component-0WWaDbUV.js.map +1 -0
  55. package/packages/angular-renderer/playwright/.cache/assets/checkbox.component-JGpevUFG.js +150 -0
  56. package/packages/angular-renderer/playwright/.cache/assets/checkbox.component-JGpevUFG.js.map +1 -0
  57. package/packages/angular-renderer/playwright/.cache/assets/chip.component-DHGk3h8k.js +121 -0
  58. package/packages/angular-renderer/playwright/.cache/assets/chip.component-DHGk3h8k.js.map +1 -0
  59. package/packages/angular-renderer/playwright/.cache/assets/data-grid.component-DDZZ4enP.js +352 -0
  60. package/packages/angular-renderer/playwright/.cache/assets/data-grid.component-DDZZ4enP.js.map +1 -0
  61. package/packages/angular-renderer/playwright/.cache/assets/experience-adapter.service-CJxHLpWN.js +38 -0
  62. package/packages/angular-renderer/playwright/.cache/assets/experience-adapter.service-CJxHLpWN.js.map +1 -0
  63. package/packages/angular-renderer/playwright/.cache/assets/form-field.component-DZA0NfB7.js +184 -0
  64. package/packages/angular-renderer/playwright/.cache/assets/form-field.component-DZA0NfB7.js.map +1 -0
  65. package/packages/angular-renderer/playwright/.cache/assets/hbox.component-D5YHn6Vu.js +125 -0
  66. package/packages/angular-renderer/playwright/.cache/assets/hbox.component-D5YHn6Vu.js.map +1 -0
  67. package/packages/angular-renderer/playwright/.cache/assets/index-DRoHZv2r.js +92806 -0
  68. package/packages/angular-renderer/playwright/.cache/assets/index-DRoHZv2r.js.map +1 -0
  69. package/packages/angular-renderer/playwright/.cache/assets/label.component-DDKtYvrS.js +105 -0
  70. package/packages/angular-renderer/playwright/.cache/assets/label.component-DDKtYvrS.js.map +1 -0
  71. package/packages/angular-renderer/playwright/.cache/assets/list.component-DSP5wzI4.js +195 -0
  72. package/packages/angular-renderer/playwright/.cache/assets/list.component-DSP5wzI4.js.map +1 -0
  73. package/packages/angular-renderer/playwright/.cache/assets/radio-group.component-BzVciXZu.js +171 -0
  74. package/packages/angular-renderer/playwright/.cache/assets/radio-group.component-BzVciXZu.js.map +1 -0
  75. package/packages/angular-renderer/playwright/.cache/assets/select.component-BC_aoLNt.js +180 -0
  76. package/packages/angular-renderer/playwright/.cache/assets/select.component-BC_aoLNt.js.map +1 -0
  77. package/packages/angular-renderer/playwright/.cache/assets/sidebar.component-CY_vKSCu.js +217 -0
  78. package/packages/angular-renderer/playwright/.cache/assets/sidebar.component-CY_vKSCu.js.map +1 -0
  79. package/packages/angular-renderer/playwright/.cache/assets/switch.component-BtfhJxLp.js +144 -0
  80. package/packages/angular-renderer/playwright/.cache/assets/switch.component-BtfhJxLp.js.map +1 -0
  81. package/packages/angular-renderer/playwright/.cache/assets/tabs.component-DGcKkhH_.js +218 -0
  82. package/packages/angular-renderer/playwright/.cache/assets/tabs.component-DGcKkhH_.js.map +1 -0
  83. package/packages/angular-renderer/playwright/.cache/assets/text-input.component-IyHHKpW-.js +121 -0
  84. package/packages/angular-renderer/playwright/.cache/assets/text-input.component-IyHHKpW-.js.map +1 -0
  85. package/packages/angular-renderer/playwright/.cache/assets/textarea.component-Bpvh81yV.js +141 -0
  86. package/packages/angular-renderer/playwright/.cache/assets/textarea.component-Bpvh81yV.js.map +1 -0
  87. package/packages/angular-renderer/playwright/.cache/assets/vbox.component-DRe59FUF.js +127 -0
  88. package/packages/angular-renderer/playwright/.cache/assets/vbox.component-DRe59FUF.js.map +1 -0
  89. package/packages/angular-renderer/playwright/.cache/index.html +11 -0
  90. package/packages/angular-renderer/playwright/.cache/metainfo.json +5416 -0
  91. package/packages/angular-renderer/playwright/index.html +11 -0
  92. package/packages/angular-renderer/playwright/index.ts +1 -0
  93. package/packages/angular-renderer/playwright-ct.config.ts +13 -3
  94. package/packages/angular-renderer/src/adapters/web/experience-adapter.service.ts +15 -1
  95. package/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.pw.ts +37 -0
  96. package/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.ts +0 -1
  97. package/packages/angular-renderer/src/components/primitives/button/button.component.pw.ts +17 -4
  98. package/packages/angular-renderer/src/components/primitives/card/card.component.pw.ts +32 -0
  99. package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.pw.ts +38 -0
  100. package/packages/angular-renderer/src/components/primitives/chip/chip.component.pw.ts +56 -0
  101. package/packages/angular-renderer/src/components/primitives/chip/chip.component.ts +1 -1
  102. package/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.pw.ts +37 -0
  103. package/packages/angular-renderer/src/components/primitives/form-field/form-field.component.pw.ts +38 -0
  104. package/packages/angular-renderer/src/components/primitives/hbox/hbox.component.pw.ts +32 -0
  105. package/packages/angular-renderer/src/components/primitives/label/label.component.pw.ts +32 -0
  106. package/packages/angular-renderer/src/components/primitives/list/list.component.pw.ts +37 -0
  107. package/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.pw.ts +38 -0
  108. package/packages/angular-renderer/src/components/primitives/select/select.component.pw.ts +32 -0
  109. package/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.pw.ts +37 -0
  110. package/packages/angular-renderer/src/components/primitives/switch/switch.component.pw.ts +62 -0
  111. package/packages/angular-renderer/src/components/primitives/switch/switch.component.ts +1 -1
  112. package/packages/angular-renderer/src/components/primitives/tabs/tabs.component.pw.ts +37 -0
  113. package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.pw.ts +16 -7
  114. package/packages/angular-renderer/src/components/primitives/textarea/textarea.component.pw.ts +38 -0
  115. package/packages/angular-renderer/src/components/primitives/vbox/vbox.component.pw.ts +17 -4
  116. package/packages/angular-renderer/src/devtools/devtools-bridge.ts +2 -0
  117. package/packages/angular-renderer/src/index.ts +1 -0
  118. package/packages/angular-renderer/src/lib/primitives.provider.ts +29 -21
  119. package/packages/cli/CHANGELOG.md +8 -0
  120. package/packages/cli/package.json +2 -2
  121. package/packages/core/CHANGELOG.md +14 -0
  122. package/packages/core/package.json +2 -2
  123. package/packages/design-tokens/CHANGELOG.md +8 -0
  124. package/packages/design-tokens/package.json +1 -1
  125. package/packages/devtools/CHANGELOG.md +8 -0
  126. package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/deps___vitest_vm__/_metadata.json +3 -3
  127. package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  128. package/packages/devtools/package.json +1 -1
  129. package/packages/playground/CHANGELOG.md +14 -0
  130. package/packages/playground/netlify.toml +6 -0
  131. package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/deps___vitest_vm__/_metadata.json +3 -3
  132. package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  133. package/packages/playground/package.json +3 -3
  134. package/packages/playground/src/app/app.config.ts +6 -1
  135. package/packages/playground/src/preview/preview-root.component.ts +173 -12
  136. package/dist/packages/playground/browser/main-BBGOLU74.js +0 -711
  137. package/packages/angular-renderer/src/components/primitives/primitives.a11y.pw.ts +0 -382
@@ -0,0 +1,105 @@
1
+ import {
2
+ a as __domElementStart,
3
+ f as __text,
4
+ g as __domElementEnd,
5
+ n as input,
6
+ p as computed,
7
+ q as __defineComponent,
8
+ l as __conditionalCreate,
9
+ k as __attribute,
10
+ h as __advance,
11
+ w as __textInterpolate1,
12
+ m as __conditional,
13
+ j as __classProp,
14
+ } from './index-DRoHZv2r.js';
15
+
16
+ function LabelComponent_Conditional_2_Template(rf, ctx) {
17
+ if (rf & 1) {
18
+ __domElementStart(0, 'span', 0);
19
+ __text(1, '*');
20
+ __domElementEnd();
21
+ }
22
+ }
23
+ class LabelComponent {
24
+ static contractSchema = {
25
+ text: 'string',
26
+ for: 'string',
27
+ required: 'boolean',
28
+ };
29
+ static strictContract = false;
30
+ contract = input.required(
31
+ ...(false ? [{ debugName: 'contract' }] : /* istanbul ignore next */ [])
32
+ );
33
+ computedText = computed(
34
+ () => this.contract().props?.text ?? '',
35
+ ...(false ? [{ debugName: 'computedText' }] : /* istanbul ignore next */ [])
36
+ );
37
+ computedFor = computed(
38
+ () => {
39
+ const f = this.contract().props?.for;
40
+ return f !== void 0 && f !== null ? String(f) : void 0;
41
+ },
42
+ ...(false ? [{ debugName: 'computedFor' }] : /* istanbul ignore next */ [])
43
+ );
44
+ computedRequired = computed(
45
+ () => !!this.contract().props?.required,
46
+ ...(false ? [{ debugName: 'computedRequired' }] : /* istanbul ignore next */ [])
47
+ );
48
+ computedAriaLabel = computed(
49
+ () => {
50
+ const label = this.contract().props?.['aria-label'];
51
+ return label !== void 0 && label !== null && String(label).trim() !== ''
52
+ ? String(label)
53
+ : void 0;
54
+ },
55
+ ...(false ? [{ debugName: 'computedAriaLabel' }] : /* istanbul ignore next */ [])
56
+ );
57
+ computedAriaDescribedBy = computed(
58
+ () => {
59
+ const desc = this.contract().props?.['aria-describedby'];
60
+ return desc !== void 0 && desc !== null && String(desc).trim() !== '' ? String(desc) : void 0;
61
+ },
62
+ ...(false ? [{ debugName: 'computedAriaDescribedBy' }] : /* istanbul ignore next */ [])
63
+ );
64
+ static ɵfac = function LabelComponent_Factory(__ngFactoryType__) {
65
+ return new (__ngFactoryType__ || LabelComponent)();
66
+ };
67
+ static ɵcmp = /* @__PURE__ */ __defineComponent({
68
+ type: LabelComponent,
69
+ selectors: [['origo-label']],
70
+ hostVars: 3,
71
+ hostBindings: function LabelComponent_HostBindings(rf, ctx) {
72
+ if (rf & 2) {
73
+ __attribute('data-testid', ctx.contract().id ?? '');
74
+ __classProp('origo-label', true);
75
+ }
76
+ },
77
+ inputs: { contract: [1, 'contract'] },
78
+ decls: 3,
79
+ vars: 5,
80
+ consts: [['aria-hidden', 'true', 1, 'required-indicator']],
81
+ template: function LabelComponent_Template(rf, ctx) {
82
+ if (rf & 1) {
83
+ __domElementStart(0, 'label');
84
+ __text(1);
85
+ __conditionalCreate(2, LabelComponent_Conditional_2_Template, 2, 0, 'span', 0);
86
+ __domElementEnd();
87
+ }
88
+ if (rf & 2) {
89
+ __attribute('for', ctx.computedFor())('aria-label', ctx.computedAriaLabel())(
90
+ 'aria-describedby',
91
+ ctx.computedAriaDescribedBy()
92
+ );
93
+ __advance();
94
+ __textInterpolate1(' ', ctx.computedText(), ' ');
95
+ __advance();
96
+ __conditional(ctx.computedRequired() ? 2 : -1);
97
+ }
98
+ },
99
+ encapsulation: 3,
100
+ });
101
+ }
102
+ /* @__PURE__ */ (() => {})();
103
+
104
+ export { LabelComponent };
105
+ //# sourceMappingURL=label.component-DDKtYvrS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.component-DDKtYvrS.js","sources":["../../../src/components/primitives/label/label.component.ts"],"sourcesContent":["import {\n Component,\n input,\n ChangeDetectionStrategy,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport { InteractionContract } from '@origo/core';\nimport { OrigoAdapter } from '../../../adapters/web/adapter';\n\nexport interface LabelProps {\n text?: string;\n for?: string;\n required?: boolean;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n}\n\n@Component({\n selector: 'origo-label',\n standalone: true,\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.origo-label]': 'true',\n '[attr.data-testid]': 'contract().id ?? \"\"',\n },\n})\nexport class LabelComponent implements OrigoAdapter<LabelProps> {\n static readonly contractSchema = {\n text: 'string',\n for: 'string',\n required: 'boolean',\n };\n static readonly strictContract = false;\n\n contract = input.required<InteractionContract<LabelProps>>();\n\n computedText = computed(() => this.contract().props?.text ?? '');\n computedFor = computed(() => {\n const f = this.contract().props?.for;\n return f !== undefined && f !== null ? String(f) : undefined;\n });\n computedRequired = computed(() => !!this.contract().props?.required);\n computedAriaLabel = computed(() => {\n const label = this.contract().props?.['aria-label'];\n return label !== undefined && label !== null && String(label).trim() !== ''\n ? String(label)\n : undefined;\n });\n computedAriaDescribedBy = computed(() => {\n const desc = this.contract().props?.['aria-describedby'];\n return desc !== undefined && desc !== null && String(desc).trim() !== ''\n ? String(desc)\n : undefined;\n });\n}\n"],"names":["i0.ɵɵdomElementStart","i0.ɵɵtext","i0.ɵɵdomElementEnd","i0.ɵɵdefineComponent","i0.ɵɵattribute"],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ import {
2
+ a as __domElementStart,
3
+ f as __text,
4
+ g as __domElementEnd,
5
+ d as __nextContext,
6
+ h as __advance,
7
+ i as __textInterpolate,
8
+ ɵ as __getCurrentView,
9
+ b as __domListener,
10
+ c as __restoreView,
11
+ e as __resetView,
12
+ l as __conditionalCreate,
13
+ m as __conditional,
14
+ n as input,
15
+ o as inject,
16
+ D as DomSanitizer,
17
+ p as computed,
18
+ S as SecurityContext,
19
+ q as __defineComponent,
20
+ r as __repeaterCreate,
21
+ j as __classProp,
22
+ t as __repeater,
23
+ k as __attribute,
24
+ } from './index-DRoHZv2r.js';
25
+ import { W as WebExperienceAdapterService } from './experience-adapter.service-CJxHLpWN.js';
26
+
27
+ const _forTrack0 = ($index, $item) => $item['id'] ?? $item['key'] ?? $item['_id'] ?? $index;
28
+ function ListComponent_For_2_Conditional_2_Template(rf, ctx) {
29
+ if (rf & 1) {
30
+ __domElementStart(0, 'div', 4);
31
+ __text(1);
32
+ __domElementEnd();
33
+ }
34
+ if (rf & 2) {
35
+ const item_r2 = __nextContext().$implicit;
36
+ __advance();
37
+ __textInterpolate(item_r2['title']);
38
+ }
39
+ }
40
+ function ListComponent_For_2_Conditional_3_Template(rf, ctx) {
41
+ if (rf & 1) {
42
+ __domElementStart(0, 'div', 5);
43
+ __text(1);
44
+ __domElementEnd();
45
+ }
46
+ if (rf & 2) {
47
+ const item_r2 = __nextContext().$implicit;
48
+ __advance();
49
+ __textInterpolate(item_r2['subtitle']);
50
+ }
51
+ }
52
+ function ListComponent_For_2_Template(rf, ctx) {
53
+ if (rf & 1) {
54
+ const _r1 = __getCurrentView();
55
+ __domElementStart(0, 'div', 2);
56
+ __domListener('click', function ListComponent_For_2_Template_div_click_0_listener() {
57
+ const item_r2 = __restoreView(_r1).$implicit;
58
+ const ctx_r2 = __nextContext();
59
+ return __resetView(ctx_r2.onItemSelect(item_r2['id'] ?? item_r2['key'] ?? item_r2['_id']));
60
+ })('keydown.enter', function ListComponent_For_2_Template_div_keydown_enter_0_listener() {
61
+ const item_r2 = __restoreView(_r1).$implicit;
62
+ const ctx_r2 = __nextContext();
63
+ return __resetView(ctx_r2.onItemSelect(item_r2['id'] ?? item_r2['key'] ?? item_r2['_id']));
64
+ })('keydown.space', function ListComponent_For_2_Template_div_keydown_space_0_listener() {
65
+ const item_r2 = __restoreView(_r1).$implicit;
66
+ const ctx_r2 = __nextContext();
67
+ return __resetView(ctx_r2.onItemSelect(item_r2['id'] ?? item_r2['key'] ?? item_r2['_id']));
68
+ });
69
+ __domElementStart(1, 'div', 3);
70
+ __conditionalCreate(2, ListComponent_For_2_Conditional_2_Template, 2, 1, 'div', 4);
71
+ __conditionalCreate(3, ListComponent_For_2_Conditional_3_Template, 2, 1, 'div', 5);
72
+ __domElementEnd()();
73
+ }
74
+ if (rf & 2) {
75
+ const item_r2 = ctx.$implicit;
76
+ __advance(2);
77
+ __conditional(
78
+ item_r2['title'] !== void 0 && item_r2['title'] !== null && item_r2['title'] !== '' ? 2 : -1
79
+ );
80
+ __advance();
81
+ __conditional(
82
+ item_r2['subtitle'] !== void 0 && item_r2['subtitle'] !== null && item_r2['subtitle'] !== ''
83
+ ? 3
84
+ : -1
85
+ );
86
+ }
87
+ }
88
+ class ListComponent {
89
+ static contractSchema = {
90
+ items: 'array',
91
+ maxItems: 'number',
92
+ disabled: 'boolean',
93
+ };
94
+ static strictContract = false;
95
+ contract = input.required(
96
+ ...(false ? [{ debugName: 'contract' }] : /* istanbul ignore next */ [])
97
+ );
98
+ experienceAdapter = inject(WebExperienceAdapterService);
99
+ sanitizer = inject(DomSanitizer);
100
+ computedItems = computed(
101
+ () => {
102
+ const items = this.contract().props?.items;
103
+ if (!Array.isArray(items)) return [];
104
+ const validItems = items.filter(i => i != null);
105
+ let max = this.contract().props?.maxItems;
106
+ if (typeof max !== 'number' || isNaN(max) || max <= 0) {
107
+ max = 100;
108
+ }
109
+ return validItems.slice(0, max);
110
+ },
111
+ ...(false ? [{ debugName: 'computedItems' }] : /* istanbul ignore next */ [])
112
+ );
113
+ computedDisabled = computed(
114
+ () => !!this.contract().props?.disabled,
115
+ ...(false ? [{ debugName: 'computedDisabled' }] : /* istanbul ignore next */ [])
116
+ );
117
+ computedAriaLabel = computed(
118
+ () => {
119
+ const label = this.contract().props?.['aria-label'];
120
+ return label !== void 0 && label !== null ? String(label) : void 0;
121
+ },
122
+ ...(false ? [{ debugName: 'computedAriaLabel' }] : /* istanbul ignore next */ [])
123
+ );
124
+ computedAriaDescribedBy = computed(
125
+ () => {
126
+ const desc = this.contract().props?.['aria-describedby'];
127
+ return desc !== void 0 && desc !== null ? String(desc) : void 0;
128
+ },
129
+ ...(false ? [{ debugName: 'computedAriaDescribedBy' }] : /* istanbul ignore next */ [])
130
+ );
131
+ onItemSelect(itemId) {
132
+ if (this.computedDisabled() || itemId == null) return;
133
+ const rawValue = String(itemId);
134
+ const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, rawValue);
135
+ const sanitizedValue =
136
+ sanitized != null && sanitized !== '' ? sanitized : rawValue.replace(/[<>]/g, '');
137
+ this.experienceAdapter.updateState(this.contract().id, 'selectedItem', sanitizedValue);
138
+ }
139
+ static ɵfac = function ListComponent_Factory(__ngFactoryType__) {
140
+ return new (__ngFactoryType__ || ListComponent)();
141
+ };
142
+ static ɵcmp = /* @__PURE__ */ __defineComponent({
143
+ type: ListComponent,
144
+ selectors: [['origo-list']],
145
+ hostVars: 6,
146
+ hostBindings: function ListComponent_HostBindings(rf, ctx) {
147
+ if (rf & 2) {
148
+ __attribute('data-testid', ctx.contract().id)('role', 'list')(
149
+ 'aria-label',
150
+ ctx.computedAriaLabel()
151
+ )('aria-describedby', ctx.computedAriaDescribedBy());
152
+ __classProp('origo-list', true);
153
+ }
154
+ },
155
+ inputs: { contract: [1, 'contract'] },
156
+ decls: 3,
157
+ vars: 2,
158
+ consts: [
159
+ [1, 'origo-list-container'],
160
+ ['role', 'listitem', 'tabindex', '0', 1, 'origo-list-item'],
161
+ [
162
+ 'role',
163
+ 'listitem',
164
+ 'tabindex',
165
+ '0',
166
+ 1,
167
+ 'origo-list-item',
168
+ 3,
169
+ 'click',
170
+ 'keydown.enter',
171
+ 'keydown.space',
172
+ ],
173
+ [1, 'origo-list-item-content'],
174
+ [1, 'title'],
175
+ [1, 'subtitle'],
176
+ ],
177
+ template: function ListComponent_Template(rf, ctx) {
178
+ if (rf & 1) {
179
+ __domElementStart(0, 'div', 0);
180
+ __repeaterCreate(1, ListComponent_For_2_Template, 4, 2, 'div', 1, _forTrack0);
181
+ __domElementEnd();
182
+ }
183
+ if (rf & 2) {
184
+ __classProp('disabled', ctx.computedDisabled());
185
+ __advance();
186
+ __repeater(ctx.computedItems());
187
+ }
188
+ },
189
+ encapsulation: 3,
190
+ });
191
+ }
192
+ /* @__PURE__ */ (() => {})();
193
+
194
+ export { ListComponent };
195
+ //# sourceMappingURL=list.component-DSP5wzI4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.component-DSP5wzI4.js","sources":["../../../src/components/primitives/list/list.component.ts"],"sourcesContent":["import {\n Component,\n input,\n ChangeDetectionStrategy,\n computed,\n ViewEncapsulation,\n inject,\n SecurityContext,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { InteractionContract } from '@origo/core';\nimport { OrigoAdapter } from '../../../adapters/web/adapter';\nimport { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';\n\nexport interface ListProps {\n items?: Array<Record<string, unknown>>;\n maxItems?: number;\n disabled?: boolean;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n}\n\n@Component({\n selector: 'origo-list',\n standalone: true,\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.origo-list]': 'true',\n '[attr.data-testid]': 'contract().id',\n '[attr.role]': '\"list\"',\n '[attr.aria-label]': 'computedAriaLabel()',\n '[attr.aria-describedby]': 'computedAriaDescribedBy()',\n },\n})\nexport class ListComponent implements OrigoAdapter<ListProps> {\n static readonly contractSchema = {\n items: 'array',\n maxItems: 'number',\n disabled: 'boolean',\n };\n static readonly strictContract = false;\n\n contract = input.required<InteractionContract<ListProps>>();\n\n private experienceAdapter = inject(WebExperienceAdapterService);\n private sanitizer = inject(DomSanitizer);\n\n computedItems = computed(() => {\n const items = this.contract().props?.items;\n if (!Array.isArray(items)) return [];\n\n const validItems = items.filter(i => i != null);\n\n let max = this.contract().props?.maxItems;\n if (typeof max !== 'number' || isNaN(max) || max <= 0) {\n max = 100;\n }\n\n return validItems.slice(0, max);\n });\n\n computedDisabled = computed(() => !!this.contract().props?.disabled);\n\n computedAriaLabel = computed(() => {\n const label = this.contract().props?.['aria-label'];\n return label !== undefined && label !== null ? String(label) : undefined;\n });\n\n computedAriaDescribedBy = computed(() => {\n const desc = this.contract().props?.['aria-describedby'];\n return desc !== undefined && desc !== null ? String(desc) : undefined;\n });\n\n onItemSelect(itemId: unknown) {\n if (this.computedDisabled() || itemId == null) return;\n\n const rawValue = String(itemId);\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, rawValue);\n const sanitizedValue =\n sanitized != null && sanitized !== '' ? sanitized : rawValue.replace(/[<>]/g, '');\n\n this.experienceAdapter.updateState(this.contract().id, 'selectedItem', sanitizedValue);\n }\n}\n"],"names":["i0.ɵɵdomElementStart","i0.ɵɵtext","i0.ɵɵdomElementEnd","i0.ɵɵnextContext","i0.ɵɵadvance","i0.ɵɵtextInterpolate","i0.ɵɵgetCurrentView","i0.ɵɵdomListener","i0.ɵɵrestoreView","i0.ɵɵresetView","i0.ɵɵconditionalCreate","i0.ɵɵconditional"],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ import {
2
+ ɵ as __getCurrentView,
3
+ a as __domElementStart,
4
+ b as __domListener,
5
+ c as __restoreView,
6
+ d as __nextContext,
7
+ e as __resetView,
8
+ g as __domElementEnd,
9
+ f as __text,
10
+ h as __advance,
11
+ v as __domProperty,
12
+ i as __textInterpolate,
13
+ n as input,
14
+ z as model,
15
+ p as computed,
16
+ o as inject,
17
+ A as effect,
18
+ B as untracked,
19
+ q as __defineComponent,
20
+ r as __repeaterCreate,
21
+ k as __attribute,
22
+ t as __repeater,
23
+ j as __classProp,
24
+ } from './index-DRoHZv2r.js';
25
+ import { W as WebExperienceAdapterService } from './experience-adapter.service-CJxHLpWN.js';
26
+
27
+ const _forTrack0 = ($index, $item) => $item.value;
28
+ function RadioGroupComponent_For_5_Template(rf, ctx) {
29
+ if (rf & 1) {
30
+ const _r1 = __getCurrentView();
31
+ __domElementStart(0, 'label', 3)(1, 'input', 4);
32
+ __domListener(
33
+ 'change',
34
+ function RadioGroupComponent_For_5_Template_input_change_1_listener($event) {
35
+ __restoreView(_r1);
36
+ const ctx_r1 = __nextContext();
37
+ return __resetView(ctx_r1.onChange($event));
38
+ }
39
+ );
40
+ __domElementEnd();
41
+ __domElementStart(2, 'span');
42
+ __text(3);
43
+ __domElementEnd()();
44
+ }
45
+ if (rf & 2) {
46
+ const option_r3 = ctx.$implicit;
47
+ const ɵ$index_8_r4 = ctx.$index;
48
+ const ctx_r1 = __nextContext();
49
+ __advance();
50
+ __domProperty('id', ctx_r1.contract().id + '-' + ɵ$index_8_r4)(
51
+ 'name',
52
+ 'rg-' + ctx_r1.contract().id
53
+ )('value', option_r3.value)('checked', ctx_r1.value() === option_r3.value)(
54
+ 'required',
55
+ ctx_r1.computedRequired()
56
+ );
57
+ __advance(2);
58
+ __textInterpolate(option_r3.label);
59
+ }
60
+ }
61
+ class RadioGroupComponent {
62
+ static contractSchema = {
63
+ options: 'array',
64
+ value: 'string',
65
+ disabled: 'boolean',
66
+ required: 'boolean',
67
+ };
68
+ static strictContract = false;
69
+ contract = input.required(
70
+ ...(false ? [{ debugName: 'contract' }] : /* istanbul ignore next */ [])
71
+ );
72
+ value = model('', ...(false ? [{ debugName: 'value' }] : /* istanbul ignore next */ []));
73
+ computedOptions = computed(
74
+ () => {
75
+ const opts = this.contract().props?.options;
76
+ return Array.isArray(opts) ? opts : [];
77
+ },
78
+ ...(false ? [{ debugName: 'computedOptions' }] : /* istanbul ignore next */ [])
79
+ );
80
+ computedDisabled = computed(
81
+ () => !!this.contract().props?.disabled,
82
+ ...(false ? [{ debugName: 'computedDisabled' }] : /* istanbul ignore next */ [])
83
+ );
84
+ computedRequired = computed(
85
+ () => !!this.contract().props?.required,
86
+ ...(false ? [{ debugName: 'computedRequired' }] : /* istanbul ignore next */ [])
87
+ );
88
+ computedAriaLabel = computed(
89
+ () => {
90
+ const label = this.contract().props?.['aria-label'];
91
+ return label !== void 0 && label !== null && String(label).trim() !== ''
92
+ ? String(label)
93
+ : void 0;
94
+ },
95
+ ...(false ? [{ debugName: 'computedAriaLabel' }] : /* istanbul ignore next */ [])
96
+ );
97
+ computedAriaDescribedBy = computed(
98
+ () => {
99
+ const desc = this.contract().props?.['aria-describedby'];
100
+ return desc !== void 0 && desc !== null && String(desc).trim() !== '' ? String(desc) : void 0;
101
+ },
102
+ ...(false ? [{ debugName: 'computedAriaDescribedBy' }] : /* istanbul ignore next */ [])
103
+ );
104
+ experienceAdapter = inject(WebExperienceAdapterService);
105
+ constructor() {
106
+ effect(() => {
107
+ const contractVal = this.contract().props?.value;
108
+ const parsedVal = contractVal !== void 0 && contractVal !== null ? String(contractVal) : '';
109
+ untracked(() => {
110
+ if (parsedVal === this.value()) return;
111
+ this.value.set(parsedVal);
112
+ });
113
+ });
114
+ }
115
+ onChange(event) {
116
+ const target = event.target;
117
+ if (!target || !target.checked || this.computedDisabled()) return;
118
+ const rawValue = target.value;
119
+ const sanitizedValue = String(rawValue);
120
+ this.value.set(sanitizedValue);
121
+ this.experienceAdapter.updateState(this.contract().id, 'value', sanitizedValue);
122
+ }
123
+ static ɵfac = function RadioGroupComponent_Factory(__ngFactoryType__) {
124
+ return new (__ngFactoryType__ || RadioGroupComponent)();
125
+ };
126
+ static ɵcmp = /* @__PURE__ */ __defineComponent({
127
+ type: RadioGroupComponent,
128
+ selectors: [['origo-radio-group']],
129
+ hostVars: 3,
130
+ hostBindings: function RadioGroupComponent_HostBindings(rf, ctx) {
131
+ if (rf & 2) {
132
+ __attribute('data-testid', ctx.contract().id ?? '');
133
+ __classProp('origo-radio-group', true);
134
+ }
135
+ },
136
+ inputs: { contract: [1, 'contract'], value: [1, 'value'] },
137
+ outputs: { value: 'valueChange' },
138
+ decls: 6,
139
+ vars: 3,
140
+ consts: [
141
+ [3, 'disabled'],
142
+ [1, 'visually-hidden'],
143
+ [1, 'radio-options'],
144
+ [1, 'radio-label'],
145
+ ['type', 'radio', 3, 'change', 'id', 'name', 'value', 'checked', 'required'],
146
+ ],
147
+ template: function RadioGroupComponent_Template(rf, ctx) {
148
+ if (rf & 1) {
149
+ __domElementStart(0, 'fieldset', 0)(1, 'legend', 1);
150
+ __text(2);
151
+ __domElementEnd();
152
+ __domElementStart(3, 'div', 2);
153
+ __repeaterCreate(4, RadioGroupComponent_For_5_Template, 4, 6, 'label', 3, _forTrack0);
154
+ __domElementEnd()();
155
+ }
156
+ if (rf & 2) {
157
+ __domProperty('disabled', ctx.computedDisabled());
158
+ __attribute('aria-describedby', ctx.computedAriaDescribedBy());
159
+ __advance(2);
160
+ __textInterpolate(ctx.computedAriaLabel() ?? 'Radio Group');
161
+ __advance(2);
162
+ __repeater(ctx.computedOptions());
163
+ }
164
+ },
165
+ encapsulation: 3,
166
+ });
167
+ }
168
+ /* @__PURE__ */ (() => {})();
169
+
170
+ export { RadioGroupComponent };
171
+ //# sourceMappingURL=radio-group.component-BzVciXZu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.component-BzVciXZu.js","sources":["../../../src/components/primitives/radio-group/radio-group.component.ts"],"sourcesContent":["import {\n Component,\n input,\n model,\n ChangeDetectionStrategy,\n computed,\n ViewEncapsulation,\n inject,\n effect,\n untracked,\n} from '@angular/core';\nimport { InteractionContract } from '@origo/core';\nimport { OrigoAdapter } from '../../../adapters/web/adapter';\nimport { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';\n\nexport interface RadioGroupProps {\n options: Array<{ value: string; label: string }>;\n value?: string;\n disabled?: boolean;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n required?: boolean;\n}\n\n@Component({\n selector: 'origo-radio-group',\n standalone: true,\n templateUrl: './radio-group.component.html',\n styleUrls: ['./radio-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.origo-radio-group]': 'true',\n '[attr.data-testid]': 'contract().id ?? \"\"',\n },\n})\nexport class RadioGroupComponent implements OrigoAdapter<RadioGroupProps> {\n static readonly contractSchema = {\n options: 'array',\n value: 'string',\n disabled: 'boolean',\n required: 'boolean',\n };\n static readonly strictContract = false;\n\n contract = input.required<InteractionContract<RadioGroupProps>>();\n value = model<string>('');\n\n computedOptions = computed(() => {\n const opts = this.contract().props?.options;\n return Array.isArray(opts) ? opts : [];\n });\n computedDisabled = computed(() => !!this.contract().props?.disabled);\n computedRequired = computed(() => !!this.contract().props?.required);\n computedAriaLabel = computed(() => {\n const label = this.contract().props?.['aria-label'];\n return label !== undefined && label !== null && String(label).trim() !== ''\n ? String(label)\n : undefined;\n });\n computedAriaDescribedBy = computed(() => {\n const desc = this.contract().props?.['aria-describedby'];\n return desc !== undefined && desc !== null && String(desc).trim() !== ''\n ? String(desc)\n : undefined;\n });\n\n private experienceAdapter = inject(WebExperienceAdapterService);\n\n constructor() {\n effect(() => {\n const contractVal = this.contract().props?.value;\n const parsedVal =\n contractVal !== undefined && contractVal !== null ? String(contractVal) : '';\n untracked(() => {\n if (parsedVal === this.value()) return;\n this.value.set(parsedVal);\n });\n });\n }\n\n onChange(event: Event) {\n const target = event.target as HTMLInputElement | null;\n if (!target || !target.checked || this.computedDisabled()) return;\n\n const rawValue = target.value;\n const sanitizedValue = String(rawValue);\n\n this.value.set(sanitizedValue);\n this.experienceAdapter.updateState(this.contract().id, 'value', sanitizedValue);\n }\n}\n"],"names":["i0.ɵɵgetCurrentView","i0.ɵɵdomElementStart","i0.ɵɵdomListener","i0.ɵɵrestoreView","i0.ɵɵnextContext","i0.ɵɵresetView","i0.ɵɵdomElementEnd","i0.ɵɵtext","i0.ɵɵadvance","i0.ɵɵtextInterpolate"],"mappings":"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"}