@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.
- package/CHANGELOG.md +3 -2
- package/dist/packages/angular-renderer/CHANGELOG.md +21 -0
- package/dist/packages/angular-renderer/package.json +7 -6
- package/dist/packages/angular-renderer/src/adapters/web/experience-adapter.service.d.ts +2 -0
- package/dist/packages/angular-renderer/src/adapters/web/experience-adapter.service.js +11 -0
- package/dist/packages/angular-renderer/src/adapters/web/experience-adapter.service.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/chip/chip.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/components/primitives/switch/switch.component.js.map +1 -1
- package/dist/packages/angular-renderer/src/devtools/devtools-bridge.js +2 -0
- package/dist/packages/angular-renderer/src/devtools/devtools-bridge.js.map +1 -1
- package/dist/packages/angular-renderer/src/index.d.ts +1 -0
- package/dist/packages/angular-renderer/src/index.js +1 -0
- package/dist/packages/angular-renderer/src/index.js.map +1 -1
- package/dist/packages/angular-renderer/src/lib/primitives.provider.js +26 -20
- 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 +14 -0
- package/dist/packages/core/package.json +2 -2
- package/dist/packages/core/package.json.bak +2 -2
- package/dist/packages/design-tokens/CHANGELOG.md +8 -0
- package/dist/packages/design-tokens/package.json +1 -1
- package/dist/packages/playground/browser/{chunk-iSLqhP12.js → chunk-B1z-uVFi.js} +1 -1
- package/dist/packages/playground/browser/{chunk-BxusNwwt.js → chunk-BGZXpmBQ.js} +1 -1
- package/dist/packages/playground/browser/{chunk-B0HlAWSR.js → chunk-ByrswSrM.js} +1 -1
- package/dist/packages/playground/browser/{chunk-rK1aqCb7.js → chunk-CFbPXTNr.js} +1 -1
- package/dist/packages/playground/browser/{chunk-Dd9ht4SU.js → chunk-CSecAR9q.js} +1 -1
- package/dist/packages/playground/browser/{chunk-BkTn1FbH.js → chunk-D-8Zr5zg.js} +1 -1
- package/dist/packages/playground/browser/{chunk-DbylCYBP.js → chunk-D2kcCG-o.js} +1 -1
- package/dist/packages/playground/browser/{chunk-zg5PqW0l.js → chunk-DQx5lQqG.js} +1 -1
- package/dist/packages/playground/browser/{chunk-DXxUFvGw.js → chunk-Dac2dp5T.js} +1 -1
- package/dist/packages/playground/browser/{chunk-CXHFI87Z.js → chunk-DiZkmwKl.js} +1 -1
- package/dist/packages/playground/browser/{chunk-BI1AmKI_.js → chunk-DwU-a89u.js} +1 -1
- package/dist/packages/playground/browser/{chunk-D2bm1B8y.js → chunk-JF8ksHJn.js} +1 -1
- package/dist/packages/playground/browser/{chunk-ZeGfaGFy.js → chunk-_TRKH8kG.js} +1 -1
- package/dist/packages/playground/browser/{chunk-DT7GQcHj.js → chunk-e5kB8V0v.js} +1 -1
- package/dist/packages/playground/browser/{chunk-94bHXqp1.js → chunk-zJLityDb.js} +1 -1
- package/dist/packages/playground/browser/index.html +1 -1
- package/dist/packages/playground/browser/main-33XWGVNC.js +731 -0
- package/eslint.config.js +2 -1
- package/generate_prompts.ps1 +10 -0
- package/package.json +3 -2
- package/packages/angular-renderer/CHANGELOG.md +21 -0
- package/packages/angular-renderer/package.json +7 -6
- package/packages/angular-renderer/playwright/.cache/assets/adapter-iYml3Kk6.js +121 -0
- package/packages/angular-renderer/playwright/.cache/assets/adapter-iYml3Kk6.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/breadcrumbs.component-DqZwZwH1.js +200 -0
- package/packages/angular-renderer/playwright/.cache/assets/breadcrumbs.component-DqZwZwH1.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/button.component-Dnc1mP3D.js +112 -0
- package/packages/angular-renderer/playwright/.cache/assets/button.component-Dnc1mP3D.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/card.component-0WWaDbUV.js +180 -0
- package/packages/angular-renderer/playwright/.cache/assets/card.component-0WWaDbUV.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/checkbox.component-JGpevUFG.js +150 -0
- package/packages/angular-renderer/playwright/.cache/assets/checkbox.component-JGpevUFG.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/chip.component-DHGk3h8k.js +121 -0
- package/packages/angular-renderer/playwright/.cache/assets/chip.component-DHGk3h8k.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/data-grid.component-DDZZ4enP.js +352 -0
- package/packages/angular-renderer/playwright/.cache/assets/data-grid.component-DDZZ4enP.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/experience-adapter.service-CJxHLpWN.js +38 -0
- package/packages/angular-renderer/playwright/.cache/assets/experience-adapter.service-CJxHLpWN.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/form-field.component-DZA0NfB7.js +184 -0
- package/packages/angular-renderer/playwright/.cache/assets/form-field.component-DZA0NfB7.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/hbox.component-D5YHn6Vu.js +125 -0
- package/packages/angular-renderer/playwright/.cache/assets/hbox.component-D5YHn6Vu.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/index-DRoHZv2r.js +92806 -0
- package/packages/angular-renderer/playwright/.cache/assets/index-DRoHZv2r.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/label.component-DDKtYvrS.js +105 -0
- package/packages/angular-renderer/playwright/.cache/assets/label.component-DDKtYvrS.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/list.component-DSP5wzI4.js +195 -0
- package/packages/angular-renderer/playwright/.cache/assets/list.component-DSP5wzI4.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/radio-group.component-BzVciXZu.js +171 -0
- package/packages/angular-renderer/playwright/.cache/assets/radio-group.component-BzVciXZu.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/select.component-BC_aoLNt.js +180 -0
- package/packages/angular-renderer/playwright/.cache/assets/select.component-BC_aoLNt.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/sidebar.component-CY_vKSCu.js +217 -0
- package/packages/angular-renderer/playwright/.cache/assets/sidebar.component-CY_vKSCu.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/switch.component-BtfhJxLp.js +144 -0
- package/packages/angular-renderer/playwright/.cache/assets/switch.component-BtfhJxLp.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/tabs.component-DGcKkhH_.js +218 -0
- package/packages/angular-renderer/playwright/.cache/assets/tabs.component-DGcKkhH_.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/text-input.component-IyHHKpW-.js +121 -0
- package/packages/angular-renderer/playwright/.cache/assets/text-input.component-IyHHKpW-.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/textarea.component-Bpvh81yV.js +141 -0
- package/packages/angular-renderer/playwright/.cache/assets/textarea.component-Bpvh81yV.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/assets/vbox.component-DRe59FUF.js +127 -0
- package/packages/angular-renderer/playwright/.cache/assets/vbox.component-DRe59FUF.js.map +1 -0
- package/packages/angular-renderer/playwright/.cache/index.html +11 -0
- package/packages/angular-renderer/playwright/.cache/metainfo.json +5416 -0
- package/packages/angular-renderer/playwright/index.html +11 -0
- package/packages/angular-renderer/playwright/index.ts +1 -0
- package/packages/angular-renderer/playwright-ct.config.ts +13 -3
- package/packages/angular-renderer/src/adapters/web/experience-adapter.service.ts +15 -1
- package/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.pw.ts +37 -0
- package/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.ts +0 -1
- package/packages/angular-renderer/src/components/primitives/button/button.component.pw.ts +17 -4
- package/packages/angular-renderer/src/components/primitives/card/card.component.pw.ts +32 -0
- package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.pw.ts +38 -0
- package/packages/angular-renderer/src/components/primitives/chip/chip.component.pw.ts +56 -0
- package/packages/angular-renderer/src/components/primitives/chip/chip.component.ts +1 -1
- package/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.pw.ts +37 -0
- package/packages/angular-renderer/src/components/primitives/form-field/form-field.component.pw.ts +38 -0
- package/packages/angular-renderer/src/components/primitives/hbox/hbox.component.pw.ts +32 -0
- package/packages/angular-renderer/src/components/primitives/label/label.component.pw.ts +32 -0
- package/packages/angular-renderer/src/components/primitives/list/list.component.pw.ts +37 -0
- package/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.pw.ts +38 -0
- package/packages/angular-renderer/src/components/primitives/select/select.component.pw.ts +32 -0
- package/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.pw.ts +37 -0
- package/packages/angular-renderer/src/components/primitives/switch/switch.component.pw.ts +62 -0
- package/packages/angular-renderer/src/components/primitives/switch/switch.component.ts +1 -1
- package/packages/angular-renderer/src/components/primitives/tabs/tabs.component.pw.ts +37 -0
- package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.pw.ts +16 -7
- package/packages/angular-renderer/src/components/primitives/textarea/textarea.component.pw.ts +38 -0
- package/packages/angular-renderer/src/components/primitives/vbox/vbox.component.pw.ts +17 -4
- package/packages/angular-renderer/src/devtools/devtools-bridge.ts +2 -0
- package/packages/angular-renderer/src/index.ts +1 -0
- package/packages/angular-renderer/src/lib/primitives.provider.ts +29 -21
- package/packages/cli/CHANGELOG.md +8 -0
- package/packages/cli/package.json +2 -2
- package/packages/core/CHANGELOG.md +14 -0
- package/packages/core/package.json +2 -2
- 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/deps___vitest_vm__/_metadata.json +3 -3
- package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/devtools/package.json +1 -1
- package/packages/playground/CHANGELOG.md +14 -0
- package/packages/playground/netlify.toml +6 -0
- package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/deps___vitest_vm__/_metadata.json +3 -3
- package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/playground/package.json +3 -3
- package/packages/playground/src/app/app.config.ts +6 -1
- package/packages/playground/src/preview/preview-root.component.ts +173 -12
- package/dist/packages/playground/browser/main-BBGOLU74.js +0 -711
- package/packages/angular-renderer/src/components/primitives/primitives.a11y.pw.ts +0 -382
|
@@ -0,0 +1,218 @@
|
|
|
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
|
+
x as __domElement,
|
|
9
|
+
g as __domElementEnd,
|
|
10
|
+
j as __classProp,
|
|
11
|
+
v as __domProperty,
|
|
12
|
+
k as __attribute,
|
|
13
|
+
h as __advance,
|
|
14
|
+
T as __sanitizeHtml,
|
|
15
|
+
n as input,
|
|
16
|
+
o as inject,
|
|
17
|
+
D as DomSanitizer,
|
|
18
|
+
p as computed,
|
|
19
|
+
S as SecurityContext,
|
|
20
|
+
q as __defineComponent,
|
|
21
|
+
r as __repeaterCreate,
|
|
22
|
+
t as __repeater,
|
|
23
|
+
W as __viewQuery,
|
|
24
|
+
X as __queryRefresh,
|
|
25
|
+
Y as __loadQuery,
|
|
26
|
+
} from './index-DRoHZv2r.js';
|
|
27
|
+
import { W as WebExperienceAdapterService } from './experience-adapter.service-CJxHLpWN.js';
|
|
28
|
+
|
|
29
|
+
const _c0 = ['tabButton'];
|
|
30
|
+
const _forTrack0 = ($index, $item) => $item.key;
|
|
31
|
+
function TabsComponent_For_2_Template(rf, ctx) {
|
|
32
|
+
if (rf & 1) {
|
|
33
|
+
const _r1 = __getCurrentView();
|
|
34
|
+
__domElementStart(0, 'button', 3, 0);
|
|
35
|
+
__domListener('click', function TabsComponent_For_2_Template_button_click_0_listener() {
|
|
36
|
+
const tab_r2 = __restoreView(_r1).$implicit;
|
|
37
|
+
const ctx_r2 = __nextContext();
|
|
38
|
+
return __resetView(ctx_r2.onTabClick(tab_r2));
|
|
39
|
+
})('keydown', function TabsComponent_For_2_Template_button_keydown_0_listener($event) {
|
|
40
|
+
const ɵ$index_3_r4 = __restoreView(_r1).$index;
|
|
41
|
+
const ctx_r2 = __nextContext();
|
|
42
|
+
return __resetView(ctx_r2.onKeyDown($event, ɵ$index_3_r4));
|
|
43
|
+
});
|
|
44
|
+
__domElement(2, 'span', 4);
|
|
45
|
+
__domElementEnd();
|
|
46
|
+
}
|
|
47
|
+
if (rf & 2) {
|
|
48
|
+
const tab_r2 = ctx.$implicit;
|
|
49
|
+
const ɵ$index_3_r4 = ctx.$index;
|
|
50
|
+
const ctx_r2 = __nextContext();
|
|
51
|
+
__classProp('origo-tabs__tab--active', ctx_r2.computedActiveTab() === tab_r2.key);
|
|
52
|
+
__domProperty('disabled', tab_r2.disabled);
|
|
53
|
+
__attribute('aria-selected', ctx_r2.computedActiveTab() === tab_r2.key)(
|
|
54
|
+
'aria-controls',
|
|
55
|
+
'tabpanel-' + tab_r2.key
|
|
56
|
+
)('id', 'tab-' + tab_r2.key)(
|
|
57
|
+
'tabindex',
|
|
58
|
+
ctx_r2.computedActiveTab() === tab_r2.key ||
|
|
59
|
+
(ctx_r2.computedActiveTab() == null && ɵ$index_3_r4 === 0)
|
|
60
|
+
? 0
|
|
61
|
+
: -1
|
|
62
|
+
);
|
|
63
|
+
__advance(2);
|
|
64
|
+
__domProperty('innerHTML', tab_r2.label, __sanitizeHtml);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
class TabsComponent {
|
|
68
|
+
static contractSchema = {
|
|
69
|
+
tabs: 'array',
|
|
70
|
+
};
|
|
71
|
+
static strictContract = false;
|
|
72
|
+
contract = input.required(
|
|
73
|
+
...(false ? [{ debugName: 'contract' }] : /* istanbul ignore next */ [])
|
|
74
|
+
);
|
|
75
|
+
experienceAdapter = inject(WebExperienceAdapterService);
|
|
76
|
+
sanitizer = inject(DomSanitizer);
|
|
77
|
+
tabButtons;
|
|
78
|
+
computedAriaLabel = computed(
|
|
79
|
+
() => {
|
|
80
|
+
const label = this.contract().props?.['aria-label'];
|
|
81
|
+
return label !== void 0 && label !== null ? String(label) : void 0;
|
|
82
|
+
},
|
|
83
|
+
...(false ? [{ debugName: 'computedAriaLabel' }] : /* istanbul ignore next */ [])
|
|
84
|
+
);
|
|
85
|
+
computedAriaDescribedBy = computed(
|
|
86
|
+
() => {
|
|
87
|
+
const desc = this.contract().props?.['aria-describedby'];
|
|
88
|
+
return desc !== void 0 && desc !== null ? String(desc) : void 0;
|
|
89
|
+
},
|
|
90
|
+
...(false ? [{ debugName: 'computedAriaDescribedBy' }] : /* istanbul ignore next */ [])
|
|
91
|
+
);
|
|
92
|
+
computedTabs = computed(
|
|
93
|
+
() => {
|
|
94
|
+
const tabs = this.contract().props?.tabs;
|
|
95
|
+
if (!Array.isArray(tabs)) return [];
|
|
96
|
+
return tabs
|
|
97
|
+
.filter(tab => tab != null && tab.key != null && tab.label != null)
|
|
98
|
+
.map(tab => {
|
|
99
|
+
return {
|
|
100
|
+
key: String(tab.key),
|
|
101
|
+
label:
|
|
102
|
+
this.sanitizer.sanitize(SecurityContext.HTML, String(tab.label)) ||
|
|
103
|
+
String(tab.label).replace(/[<>]/g, ''),
|
|
104
|
+
disabled: !!tab.disabled,
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
...(false ? [{ debugName: 'computedTabs' }] : /* istanbul ignore next */ [])
|
|
109
|
+
);
|
|
110
|
+
computedActiveTab = computed(
|
|
111
|
+
() => {
|
|
112
|
+
const active = this.contract().props?.activeTab;
|
|
113
|
+
if (active) return active;
|
|
114
|
+
const tabs = this.computedTabs();
|
|
115
|
+
return tabs.length > 0 ? tabs[0].key : void 0;
|
|
116
|
+
},
|
|
117
|
+
...(false ? [{ debugName: 'computedActiveTab' }] : /* istanbul ignore next */ [])
|
|
118
|
+
);
|
|
119
|
+
onTabClick(tab) {
|
|
120
|
+
if (tab.disabled || !tab.key) return;
|
|
121
|
+
this.experienceAdapter.updateState(this.contract().id, 'activeTab', tab.key);
|
|
122
|
+
}
|
|
123
|
+
onKeyDown(event, index) {
|
|
124
|
+
const tabs = this.computedTabs();
|
|
125
|
+
if (tabs.length === 0) return;
|
|
126
|
+
let nextIndex = index;
|
|
127
|
+
const isRtl =
|
|
128
|
+
typeof window !== 'undefined' && event.target instanceof Element
|
|
129
|
+
? window.getComputedStyle(event.target).direction === 'rtl'
|
|
130
|
+
: false;
|
|
131
|
+
if (event.key === 'ArrowRight') {
|
|
132
|
+
nextIndex = isRtl ? index - 1 : index + 1;
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
} else if (event.key === 'ArrowLeft') {
|
|
135
|
+
nextIndex = isRtl ? index + 1 : index - 1;
|
|
136
|
+
event.preventDefault();
|
|
137
|
+
} else if (event.key === 'Home') {
|
|
138
|
+
nextIndex = 0;
|
|
139
|
+
event.preventDefault();
|
|
140
|
+
} else if (event.key === 'End') {
|
|
141
|
+
nextIndex = tabs.length - 1;
|
|
142
|
+
event.preventDefault();
|
|
143
|
+
}
|
|
144
|
+
if (nextIndex < 0) nextIndex = tabs.length - 1;
|
|
145
|
+
if (nextIndex >= tabs.length) nextIndex = 0;
|
|
146
|
+
if (nextIndex !== index) {
|
|
147
|
+
setTimeout(() => {
|
|
148
|
+
const buttons = this.tabButtons?.toArray();
|
|
149
|
+
if (buttons && buttons[nextIndex]) {
|
|
150
|
+
buttons[nextIndex].nativeElement.focus();
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
static ɵfac = function TabsComponent_Factory(__ngFactoryType__) {
|
|
156
|
+
return new (__ngFactoryType__ || TabsComponent)();
|
|
157
|
+
};
|
|
158
|
+
static ɵcmp = /* @__PURE__ */ __defineComponent({
|
|
159
|
+
type: TabsComponent,
|
|
160
|
+
selectors: [['origo-tabs']],
|
|
161
|
+
viewQuery: function TabsComponent_Query(rf, ctx) {
|
|
162
|
+
if (rf & 1) {
|
|
163
|
+
__viewQuery(_c0, 5);
|
|
164
|
+
}
|
|
165
|
+
if (rf & 2) {
|
|
166
|
+
let _t;
|
|
167
|
+
__queryRefresh((_t = __loadQuery())) && (ctx.tabButtons = _t);
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
hostVars: 3,
|
|
171
|
+
hostBindings: function TabsComponent_HostBindings(rf, ctx) {
|
|
172
|
+
if (rf & 2) {
|
|
173
|
+
__attribute('data-testid', ctx.contract().id);
|
|
174
|
+
__classProp('origo-tabs', true);
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
inputs: { contract: [1, 'contract'] },
|
|
178
|
+
decls: 3,
|
|
179
|
+
vars: 2,
|
|
180
|
+
consts: [
|
|
181
|
+
['tabButton', ''],
|
|
182
|
+
['role', 'tablist', 1, 'origo-tabs__list'],
|
|
183
|
+
[
|
|
184
|
+
'type',
|
|
185
|
+
'button',
|
|
186
|
+
'role',
|
|
187
|
+
'tab',
|
|
188
|
+
1,
|
|
189
|
+
'origo-tabs__tab',
|
|
190
|
+
3,
|
|
191
|
+
'origo-tabs__tab--active',
|
|
192
|
+
'disabled',
|
|
193
|
+
],
|
|
194
|
+
['type', 'button', 'role', 'tab', 1, 'origo-tabs__tab', 3, 'click', 'keydown', 'disabled'],
|
|
195
|
+
[1, 'origo-tabs__label', 3, 'innerHTML'],
|
|
196
|
+
],
|
|
197
|
+
template: function TabsComponent_Template(rf, ctx) {
|
|
198
|
+
if (rf & 1) {
|
|
199
|
+
__domElementStart(0, 'div', 1);
|
|
200
|
+
__repeaterCreate(1, TabsComponent_For_2_Template, 3, 8, 'button', 2, _forTrack0);
|
|
201
|
+
__domElementEnd();
|
|
202
|
+
}
|
|
203
|
+
if (rf & 2) {
|
|
204
|
+
__attribute('aria-label', ctx.computedAriaLabel())(
|
|
205
|
+
'aria-describedby',
|
|
206
|
+
ctx.computedAriaDescribedBy()
|
|
207
|
+
);
|
|
208
|
+
__advance();
|
|
209
|
+
__repeater(ctx.computedTabs());
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
encapsulation: 3,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/* @__PURE__ */ (() => {})();
|
|
216
|
+
|
|
217
|
+
export { TabsComponent };
|
|
218
|
+
//# sourceMappingURL=tabs.component-DGcKkhH_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.component-DGcKkhH_.js","sources":["../../../src/components/primitives/tabs/tabs.component.ts"],"sourcesContent":["import {\n Component,\n input,\n ChangeDetectionStrategy,\n computed,\n ViewEncapsulation,\n inject,\n SecurityContext,\n ElementRef,\n ViewChildren,\n QueryList,\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 TabItem {\n key: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TabsProps {\n tabs?: Array<TabItem>;\n activeTab?: string;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n}\n\n@Component({\n selector: 'origo-tabs',\n standalone: true,\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.origo-tabs]': 'true',\n '[attr.data-testid]': 'contract().id',\n },\n})\nexport class TabsComponent implements OrigoAdapter<TabsProps> {\n static readonly contractSchema = {\n tabs: 'array',\n };\n static readonly strictContract = false;\n\n contract = input.required<InteractionContract<TabsProps>>();\n\n private experienceAdapter = inject(WebExperienceAdapterService);\n private sanitizer = inject(DomSanitizer);\n\n @ViewChildren('tabButton') tabButtons!: QueryList<ElementRef<HTMLButtonElement>>;\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 computedTabs = computed(() => {\n const tabs = this.contract().props?.tabs;\n if (!Array.isArray(tabs)) return [];\n\n return tabs\n .filter(tab => tab != null && tab.key != null && tab.label != null)\n .map(tab => {\n return {\n key: String(tab.key),\n label:\n this.sanitizer.sanitize(SecurityContext.HTML, String(tab.label)) ||\n String(tab.label).replace(/[<>]/g, ''),\n disabled: !!tab.disabled,\n };\n });\n });\n\n computedActiveTab = computed(() => {\n const active = this.contract().props?.activeTab;\n if (active) return active;\n const tabs = this.computedTabs();\n return tabs.length > 0 ? tabs[0].key : undefined;\n });\n\n onTabClick(tab: TabItem) {\n if (tab.disabled || !tab.key) return;\n this.experienceAdapter.updateState(this.contract().id, 'activeTab', tab.key);\n }\n\n onKeyDown(event: KeyboardEvent, index: number) {\n const tabs = this.computedTabs();\n if (tabs.length === 0) return;\n\n let nextIndex = index;\n const isRtl =\n typeof window !== 'undefined' && event.target instanceof Element\n ? window.getComputedStyle(event.target).direction === 'rtl'\n : false;\n\n if (event.key === 'ArrowRight') {\n nextIndex = isRtl ? index - 1 : index + 1;\n event.preventDefault();\n } else if (event.key === 'ArrowLeft') {\n nextIndex = isRtl ? index + 1 : index - 1;\n event.preventDefault();\n } else if (event.key === 'Home') {\n nextIndex = 0;\n event.preventDefault();\n } else if (event.key === 'End') {\n nextIndex = tabs.length - 1;\n event.preventDefault();\n }\n\n if (nextIndex < 0) nextIndex = tabs.length - 1;\n if (nextIndex >= tabs.length) nextIndex = 0;\n\n if (nextIndex !== index) {\n setTimeout(() => {\n const buttons = this.tabButtons?.toArray();\n if (buttons && buttons[nextIndex]) {\n buttons[nextIndex].nativeElement.focus();\n }\n });\n }\n }\n}\n"],"names":["i0.ɵɵgetCurrentView","i0.ɵɵdomElementStart","i0.ɵɵdomListener","i0.ɵɵrestoreView","i0.ɵɵnextContext","i0.ɵɵresetView","i0.ɵɵdomElement","i0.ɵɵdomElementEnd","i0.ɵɵclassProp","i0.ɵɵadvance","i0.ɵɵdomProperty","i0.ɵɵsanitizeHtml"],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import {
|
|
2
|
+
n as input,
|
|
3
|
+
z as model,
|
|
4
|
+
p as computed,
|
|
5
|
+
o as inject,
|
|
6
|
+
A as effect,
|
|
7
|
+
B as untracked,
|
|
8
|
+
q as __defineComponent,
|
|
9
|
+
a as __domElementStart,
|
|
10
|
+
b as __domListener,
|
|
11
|
+
g as __domElementEnd,
|
|
12
|
+
v as __domProperty,
|
|
13
|
+
k as __attribute,
|
|
14
|
+
j as __classProp,
|
|
15
|
+
} from './index-DRoHZv2r.js';
|
|
16
|
+
import { W as WebExperienceAdapterService } from './experience-adapter.service-CJxHLpWN.js';
|
|
17
|
+
|
|
18
|
+
class TextInputComponent {
|
|
19
|
+
static contractSchema = {
|
|
20
|
+
value: 'string',
|
|
21
|
+
placeholder: 'string',
|
|
22
|
+
disabled: 'boolean',
|
|
23
|
+
readonly: 'boolean',
|
|
24
|
+
};
|
|
25
|
+
static strictContract = false;
|
|
26
|
+
contract = input.required(
|
|
27
|
+
...(false ? [{ debugName: 'contract' }] : /* istanbul ignore next */ [])
|
|
28
|
+
);
|
|
29
|
+
value = model('', ...(false ? [{ debugName: 'value' }] : /* istanbul ignore next */ []));
|
|
30
|
+
computedPlaceholder = computed(
|
|
31
|
+
() => this.contract().props?.placeholder ?? '',
|
|
32
|
+
...(false ? [{ debugName: 'computedPlaceholder' }] : /* istanbul ignore next */ [])
|
|
33
|
+
);
|
|
34
|
+
computedDisabled = computed(
|
|
35
|
+
() => !!this.contract().props?.disabled,
|
|
36
|
+
...(false ? [{ debugName: 'computedDisabled' }] : /* istanbul ignore next */ [])
|
|
37
|
+
);
|
|
38
|
+
computedReadonly = computed(
|
|
39
|
+
() => !!this.contract().props?.readonly,
|
|
40
|
+
...(false ? [{ debugName: 'computedReadonly' }] : /* istanbul ignore next */ [])
|
|
41
|
+
);
|
|
42
|
+
computedAriaLabel = computed(
|
|
43
|
+
() => {
|
|
44
|
+
const label = this.contract().props?.['aria-label'];
|
|
45
|
+
return label !== void 0 && label !== null && String(label).trim() !== ''
|
|
46
|
+
? String(label)
|
|
47
|
+
: void 0;
|
|
48
|
+
},
|
|
49
|
+
...(false ? [{ debugName: 'computedAriaLabel' }] : /* istanbul ignore next */ [])
|
|
50
|
+
);
|
|
51
|
+
computedAriaDescribedBy = computed(
|
|
52
|
+
() => {
|
|
53
|
+
const desc = this.contract().props?.['aria-describedby'];
|
|
54
|
+
return desc !== void 0 && desc !== null && String(desc).trim() !== '' ? String(desc) : void 0;
|
|
55
|
+
},
|
|
56
|
+
...(false ? [{ debugName: 'computedAriaDescribedBy' }] : /* istanbul ignore next */ [])
|
|
57
|
+
);
|
|
58
|
+
experienceAdapter = inject(WebExperienceAdapterService);
|
|
59
|
+
constructor() {
|
|
60
|
+
effect(() => {
|
|
61
|
+
const contractVal = this.contract().props?.value;
|
|
62
|
+
untracked(() =>
|
|
63
|
+
this.value.set(contractVal !== void 0 && contractVal !== null ? String(contractVal) : '')
|
|
64
|
+
);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
onInput(event) {
|
|
68
|
+
const target = event.target;
|
|
69
|
+
if (!target) return;
|
|
70
|
+
const rawValue = target.value;
|
|
71
|
+
const sanitizedValue = String(rawValue);
|
|
72
|
+
if (target.value !== sanitizedValue) {
|
|
73
|
+
target.value = sanitizedValue;
|
|
74
|
+
}
|
|
75
|
+
this.value.set(sanitizedValue);
|
|
76
|
+
this.experienceAdapter.updateState(this.contract().id, 'value', sanitizedValue);
|
|
77
|
+
}
|
|
78
|
+
static ɵfac = function TextInputComponent_Factory(__ngFactoryType__) {
|
|
79
|
+
return new (__ngFactoryType__ || TextInputComponent)();
|
|
80
|
+
};
|
|
81
|
+
static ɵcmp = /* @__PURE__ */ __defineComponent({
|
|
82
|
+
type: TextInputComponent,
|
|
83
|
+
selectors: [['origo-text-input']],
|
|
84
|
+
hostVars: 3,
|
|
85
|
+
hostBindings: function TextInputComponent_HostBindings(rf, ctx) {
|
|
86
|
+
if (rf & 2) {
|
|
87
|
+
__attribute('data-testid', ctx.contract().id ?? '');
|
|
88
|
+
__classProp('origo-text-input', true);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
inputs: { contract: [1, 'contract'], value: [1, 'value'] },
|
|
92
|
+
outputs: { value: 'valueChange' },
|
|
93
|
+
decls: 1,
|
|
94
|
+
vars: 6,
|
|
95
|
+
consts: [['type', 'text', 3, 'input', 'value', 'placeholder', 'disabled', 'readonly']],
|
|
96
|
+
template: function TextInputComponent_Template(rf, ctx) {
|
|
97
|
+
if (rf & 1) {
|
|
98
|
+
__domElementStart(0, 'input', 0);
|
|
99
|
+
__domListener('input', function TextInputComponent_Template_input_input_0_listener($event) {
|
|
100
|
+
return ctx.onInput($event);
|
|
101
|
+
});
|
|
102
|
+
__domElementEnd();
|
|
103
|
+
}
|
|
104
|
+
if (rf & 2) {
|
|
105
|
+
__domProperty('value', ctx.value())('placeholder', ctx.computedPlaceholder())(
|
|
106
|
+
'disabled',
|
|
107
|
+
ctx.computedDisabled()
|
|
108
|
+
)('readOnly', ctx.computedReadonly());
|
|
109
|
+
__attribute('aria-label', ctx.computedAriaLabel())(
|
|
110
|
+
'aria-describedby',
|
|
111
|
+
ctx.computedAriaDescribedBy()
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
encapsulation: 3,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/* @__PURE__ */ (() => {})();
|
|
119
|
+
|
|
120
|
+
export { TextInputComponent };
|
|
121
|
+
//# sourceMappingURL=text-input.component-IyHHKpW-.js.map
|
package/packages/angular-renderer/playwright/.cache/assets/text-input.component-IyHHKpW-.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-input.component-IyHHKpW-.js","sources":["../../../src/components/primitives/text-input/text-input.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 TextInputProps {\n value?: string;\n placeholder?: string;\n disabled?: boolean;\n readonly?: boolean;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n}\n\n@Component({\n selector: 'origo-text-input',\n standalone: true,\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.origo-text-input]': 'true',\n '[attr.data-testid]': 'contract().id ?? \"\"',\n },\n})\nexport class TextInputComponent implements OrigoAdapter<TextInputProps> {\n static readonly contractSchema = {\n value: 'string',\n placeholder: 'string',\n disabled: 'boolean',\n readonly: 'boolean',\n };\n static readonly strictContract = false;\n\n contract = input.required<InteractionContract<TextInputProps>>();\n value = model<string>('');\n\n computedPlaceholder = computed(() => this.contract().props?.placeholder ?? '');\n computedDisabled = computed(() => !!this.contract().props?.disabled);\n computedReadonly = computed(() => !!this.contract().props?.readonly);\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 untracked(() =>\n this.value.set(contractVal !== undefined && contractVal !== null ? String(contractVal) : '')\n );\n });\n }\n\n onInput(event: Event) {\n const target = event.target as HTMLInputElement | null;\n if (!target) return;\n\n const rawValue = target.value;\n const sanitizedValue = String(rawValue);\n\n if (target.value !== sanitizedValue) {\n target.value = sanitizedValue;\n }\n\n this.value.set(sanitizedValue);\n this.experienceAdapter.updateState(this.contract().id, 'value', sanitizedValue);\n }\n}\n"],"names":["i0.ɵɵdefineComponent","i0.ɵɵattribute","i0.ɵɵdomElementStart","i0.ɵɵdomListener","i0.ɵɵdomElementEnd"],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import {
|
|
2
|
+
n as input,
|
|
3
|
+
z as model,
|
|
4
|
+
p as computed,
|
|
5
|
+
o as inject,
|
|
6
|
+
D as DomSanitizer,
|
|
7
|
+
A as effect,
|
|
8
|
+
B as untracked,
|
|
9
|
+
S as SecurityContext,
|
|
10
|
+
q as __defineComponent,
|
|
11
|
+
a as __domElementStart,
|
|
12
|
+
b as __domListener,
|
|
13
|
+
g as __domElementEnd,
|
|
14
|
+
v as __domProperty,
|
|
15
|
+
k as __attribute,
|
|
16
|
+
j as __classProp,
|
|
17
|
+
} from './index-DRoHZv2r.js';
|
|
18
|
+
import { W as WebExperienceAdapterService } from './experience-adapter.service-CJxHLpWN.js';
|
|
19
|
+
|
|
20
|
+
class TextareaComponent {
|
|
21
|
+
static contractSchema = {
|
|
22
|
+
value: 'string',
|
|
23
|
+
placeholder: 'string',
|
|
24
|
+
rows: 'number',
|
|
25
|
+
disabled: 'boolean',
|
|
26
|
+
readonly: 'boolean',
|
|
27
|
+
required: 'boolean',
|
|
28
|
+
};
|
|
29
|
+
static strictContract = false;
|
|
30
|
+
contract = input.required(
|
|
31
|
+
...(false ? [{ debugName: 'contract' }] : /* istanbul ignore next */ [])
|
|
32
|
+
);
|
|
33
|
+
value = model('', ...(false ? [{ debugName: 'value' }] : /* istanbul ignore next */ []));
|
|
34
|
+
computedPlaceholder = computed(
|
|
35
|
+
() => this.contract().props?.placeholder ?? '',
|
|
36
|
+
...(false ? [{ debugName: 'computedPlaceholder' }] : /* istanbul ignore next */ [])
|
|
37
|
+
);
|
|
38
|
+
computedRows = computed(
|
|
39
|
+
() => {
|
|
40
|
+
const rows = this.contract().props?.rows;
|
|
41
|
+
return typeof rows === 'number' && rows > 0 ? Math.max(1, Math.round(rows)) : 3;
|
|
42
|
+
},
|
|
43
|
+
...(false ? [{ debugName: 'computedRows' }] : /* istanbul ignore next */ [])
|
|
44
|
+
);
|
|
45
|
+
computedDisabled = computed(
|
|
46
|
+
() => !!this.contract().props?.disabled,
|
|
47
|
+
...(false ? [{ debugName: 'computedDisabled' }] : /* istanbul ignore next */ [])
|
|
48
|
+
);
|
|
49
|
+
computedReadonly = computed(
|
|
50
|
+
() => !!this.contract().props?.readonly,
|
|
51
|
+
...(false ? [{ debugName: 'computedReadonly' }] : /* istanbul ignore next */ [])
|
|
52
|
+
);
|
|
53
|
+
computedRequired = computed(
|
|
54
|
+
() => !!this.contract().props?.required,
|
|
55
|
+
...(false ? [{ debugName: 'computedRequired' }] : /* istanbul ignore next */ [])
|
|
56
|
+
);
|
|
57
|
+
computedAriaLabel = computed(
|
|
58
|
+
() => {
|
|
59
|
+
const label = this.contract().props?.['aria-label'];
|
|
60
|
+
return label !== void 0 && label !== null ? String(label) : void 0;
|
|
61
|
+
},
|
|
62
|
+
...(false ? [{ debugName: 'computedAriaLabel' }] : /* istanbul ignore next */ [])
|
|
63
|
+
);
|
|
64
|
+
computedAriaDescribedBy = computed(
|
|
65
|
+
() => {
|
|
66
|
+
const desc = this.contract().props?.['aria-describedby'];
|
|
67
|
+
return desc !== void 0 && desc !== null ? String(desc) : void 0;
|
|
68
|
+
},
|
|
69
|
+
...(false ? [{ debugName: 'computedAriaDescribedBy' }] : /* istanbul ignore next */ [])
|
|
70
|
+
);
|
|
71
|
+
experienceAdapter = inject(WebExperienceAdapterService);
|
|
72
|
+
sanitizer = inject(DomSanitizer);
|
|
73
|
+
constructor() {
|
|
74
|
+
effect(() => {
|
|
75
|
+
const contractVal = this.contract().props?.value;
|
|
76
|
+
const parsedVal = contractVal !== void 0 && contractVal !== null ? String(contractVal) : '';
|
|
77
|
+
untracked(() => {
|
|
78
|
+
if (parsedVal === this.value()) return;
|
|
79
|
+
this.value.set(parsedVal);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
onInput(event) {
|
|
84
|
+
const target = event.target;
|
|
85
|
+
if (!target || this.computedDisabled() || this.computedReadonly()) return;
|
|
86
|
+
const rawValue = target.value;
|
|
87
|
+
const sanitizedValue =
|
|
88
|
+
this.sanitizer.sanitize(SecurityContext.HTML, rawValue) || rawValue || '';
|
|
89
|
+
if (target.value !== sanitizedValue) {
|
|
90
|
+
target.value = sanitizedValue;
|
|
91
|
+
}
|
|
92
|
+
this.value.set(sanitizedValue);
|
|
93
|
+
this.experienceAdapter.updateState(this.contract().id, 'value', sanitizedValue);
|
|
94
|
+
}
|
|
95
|
+
static ɵfac = function TextareaComponent_Factory(__ngFactoryType__) {
|
|
96
|
+
return new (__ngFactoryType__ || TextareaComponent)();
|
|
97
|
+
};
|
|
98
|
+
static ɵcmp = /* @__PURE__ */ __defineComponent({
|
|
99
|
+
type: TextareaComponent,
|
|
100
|
+
selectors: [['origo-textarea']],
|
|
101
|
+
hostVars: 3,
|
|
102
|
+
hostBindings: function TextareaComponent_HostBindings(rf, ctx) {
|
|
103
|
+
if (rf & 2) {
|
|
104
|
+
__attribute('data-testid', ctx.contract().id);
|
|
105
|
+
__classProp('origo-textarea', true);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
inputs: { contract: [1, 'contract'], value: [1, 'value'] },
|
|
109
|
+
outputs: { value: 'valueChange' },
|
|
110
|
+
decls: 1,
|
|
111
|
+
vars: 9,
|
|
112
|
+
consts: [[3, 'input', 'id', 'disabled', 'readonly', 'required', 'value']],
|
|
113
|
+
template: function TextareaComponent_Template(rf, ctx) {
|
|
114
|
+
if (rf & 1) {
|
|
115
|
+
__domElementStart(0, 'textarea', 0);
|
|
116
|
+
__domListener(
|
|
117
|
+
'input',
|
|
118
|
+
function TextareaComponent_Template_textarea_input_0_listener($event) {
|
|
119
|
+
return ctx.onInput($event);
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
__domElementEnd();
|
|
123
|
+
}
|
|
124
|
+
if (rf & 2) {
|
|
125
|
+
__domProperty('id', ctx.contract().id)('disabled', ctx.computedDisabled())(
|
|
126
|
+
'readOnly',
|
|
127
|
+
ctx.computedReadonly()
|
|
128
|
+
)('required', ctx.computedRequired())('value', ctx.value());
|
|
129
|
+
__attribute('placeholder', ctx.computedPlaceholder())('rows', ctx.computedRows())(
|
|
130
|
+
'aria-label',
|
|
131
|
+
ctx.computedAriaLabel()
|
|
132
|
+
)('aria-describedby', ctx.computedAriaDescribedBy());
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
encapsulation: 3,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/* @__PURE__ */ (() => {})();
|
|
139
|
+
|
|
140
|
+
export { TextareaComponent };
|
|
141
|
+
//# sourceMappingURL=textarea.component-Bpvh81yV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.component-Bpvh81yV.js","sources":["../../../src/components/primitives/textarea/textarea.component.ts"],"sourcesContent":["import {\n Component,\n input,\n model,\n ChangeDetectionStrategy,\n computed,\n ViewEncapsulation,\n inject,\n effect,\n untracked,\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 TextareaProps {\n value?: string;\n placeholder?: string;\n rows?: number;\n disabled?: boolean;\n readonly?: boolean;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n required?: boolean;\n}\n\n@Component({\n selector: 'origo-textarea',\n standalone: true,\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.origo-textarea]': 'true',\n '[attr.data-testid]': 'contract().id',\n },\n})\nexport class TextareaComponent implements OrigoAdapter<TextareaProps> {\n static readonly contractSchema = {\n value: 'string',\n placeholder: 'string',\n rows: 'number',\n disabled: 'boolean',\n readonly: 'boolean',\n required: 'boolean',\n };\n static readonly strictContract = false;\n\n contract = input.required<InteractionContract<TextareaProps>>();\n value = model<string>('');\n\n computedPlaceholder = computed(() => this.contract().props?.placeholder ?? '');\n computedRows = computed(() => {\n const rows = this.contract().props?.rows;\n return typeof rows === 'number' && rows > 0 ? Math.max(1, Math.round(rows)) : 3;\n });\n computedDisabled = computed(() => !!this.contract().props?.disabled);\n computedReadonly = computed(() => !!this.contract().props?.readonly);\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) : undefined;\n });\n computedAriaDescribedBy = computed(() => {\n const desc = this.contract().props?.['aria-describedby'];\n return desc !== undefined && desc !== null ? String(desc) : undefined;\n });\n\n private experienceAdapter = inject(WebExperienceAdapterService);\n private sanitizer = inject(DomSanitizer);\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 onInput(event: Event) {\n const target = event.target as HTMLTextAreaElement | null;\n if (!target || this.computedDisabled() || this.computedReadonly()) return;\n\n const rawValue = target.value;\n const sanitizedValue =\n this.sanitizer.sanitize(SecurityContext.HTML, rawValue) || rawValue || '';\n\n if (target.value !== sanitizedValue) {\n target.value = sanitizedValue;\n }\n\n this.value.set(sanitizedValue);\n this.experienceAdapter.updateState(this.contract().id, 'value', sanitizedValue);\n }\n}\n"],"names":["i0.ɵɵdefineComponent","i0.ɵɵattribute","i0.ɵɵdomElementStart","i0.ɵɵdomListener","i0.ɵɵdomElementEnd"],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import {
|
|
2
|
+
n as input,
|
|
3
|
+
M as viewChild,
|
|
4
|
+
V as ViewContainerRef,
|
|
5
|
+
p as computed,
|
|
6
|
+
q as __defineComponent,
|
|
7
|
+
Q as __domElementContainer,
|
|
8
|
+
x as __domElement,
|
|
9
|
+
k as __attribute,
|
|
10
|
+
R as __styleProp,
|
|
11
|
+
j as __classProp,
|
|
12
|
+
O as __viewQuerySignal,
|
|
13
|
+
P as __queryAdvance,
|
|
14
|
+
} from './index-DRoHZv2r.js';
|
|
15
|
+
|
|
16
|
+
const _c0 = ['vc'];
|
|
17
|
+
class VBoxComponent {
|
|
18
|
+
static contractSchema = {
|
|
19
|
+
gap: 'string',
|
|
20
|
+
alignment: 'string',
|
|
21
|
+
padding: 'string',
|
|
22
|
+
};
|
|
23
|
+
static strictContract = false;
|
|
24
|
+
contract = input.required(
|
|
25
|
+
...(false ? [{ debugName: 'contract' }] : /* istanbul ignore next */ [])
|
|
26
|
+
);
|
|
27
|
+
vc = viewChild.required('vc', {
|
|
28
|
+
...(false ? { debugName: 'vc' } : /* istanbul ignore next */ {}),
|
|
29
|
+
read: ViewContainerRef,
|
|
30
|
+
});
|
|
31
|
+
computedGap = computed(
|
|
32
|
+
() => {
|
|
33
|
+
const gap = this.contract().props?.gap;
|
|
34
|
+
if (gap === void 0 || gap === null || gap === '') return void 0;
|
|
35
|
+
const num = Number(gap);
|
|
36
|
+
return !isNaN(num) ? `${num}px` : String(gap);
|
|
37
|
+
},
|
|
38
|
+
...(false ? [{ debugName: 'computedGap' }] : /* istanbul ignore next */ [])
|
|
39
|
+
);
|
|
40
|
+
computedAlignment = computed(
|
|
41
|
+
() => {
|
|
42
|
+
const align = this.contract().props?.alignment;
|
|
43
|
+
switch (align) {
|
|
44
|
+
case 'start':
|
|
45
|
+
return 'flex-start';
|
|
46
|
+
case 'end':
|
|
47
|
+
return 'flex-end';
|
|
48
|
+
case 'center':
|
|
49
|
+
return 'center';
|
|
50
|
+
case 'stretch':
|
|
51
|
+
return 'stretch';
|
|
52
|
+
default:
|
|
53
|
+
return 'stretch';
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
...(false ? [{ debugName: 'computedAlignment' }] : /* istanbul ignore next */ [])
|
|
57
|
+
);
|
|
58
|
+
computedPadding = computed(
|
|
59
|
+
() => {
|
|
60
|
+
const padding = this.contract().props?.padding;
|
|
61
|
+
if (padding === void 0 || padding === null || padding === '') return void 0;
|
|
62
|
+
const num = Number(padding);
|
|
63
|
+
return !isNaN(num) ? `${num}px` : String(padding);
|
|
64
|
+
},
|
|
65
|
+
...(false ? [{ debugName: 'computedPadding' }] : /* istanbul ignore next */ [])
|
|
66
|
+
);
|
|
67
|
+
computedAriaLabel = computed(
|
|
68
|
+
() => {
|
|
69
|
+
const label = this.contract().props?.['aria-label'];
|
|
70
|
+
return label !== void 0 && label !== null && String(label).trim() !== ''
|
|
71
|
+
? String(label)
|
|
72
|
+
: void 0;
|
|
73
|
+
},
|
|
74
|
+
...(false ? [{ debugName: 'computedAriaLabel' }] : /* istanbul ignore next */ [])
|
|
75
|
+
);
|
|
76
|
+
computedAriaDescribedBy = computed(
|
|
77
|
+
() => {
|
|
78
|
+
const desc = this.contract().props?.['aria-describedby'];
|
|
79
|
+
return desc !== void 0 && desc !== null && String(desc).trim() !== '' ? String(desc) : void 0;
|
|
80
|
+
},
|
|
81
|
+
...(false ? [{ debugName: 'computedAriaDescribedBy' }] : /* istanbul ignore next */ [])
|
|
82
|
+
);
|
|
83
|
+
static ɵfac = function VBoxComponent_Factory(__ngFactoryType__) {
|
|
84
|
+
return new (__ngFactoryType__ || VBoxComponent)();
|
|
85
|
+
};
|
|
86
|
+
static ɵcmp = /* @__PURE__ */ __defineComponent({
|
|
87
|
+
type: VBoxComponent,
|
|
88
|
+
selectors: [['origo-vbox']],
|
|
89
|
+
viewQuery: function VBoxComponent_Query(rf, ctx) {
|
|
90
|
+
if (rf & 1) {
|
|
91
|
+
__viewQuerySignal(ctx.vc, _c0, 5, ViewContainerRef);
|
|
92
|
+
}
|
|
93
|
+
if (rf & 2) {
|
|
94
|
+
__queryAdvance();
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
hostVars: 13,
|
|
98
|
+
hostBindings: function VBoxComponent_HostBindings(rf, ctx) {
|
|
99
|
+
if (rf & 2) {
|
|
100
|
+
__attribute('data-testid', ctx.contract().id ?? '')('aria-label', ctx.computedAriaLabel())(
|
|
101
|
+
'aria-describedby',
|
|
102
|
+
ctx.computedAriaDescribedBy()
|
|
103
|
+
);
|
|
104
|
+
__styleProp('gap', ctx.computedGap())('align-items', ctx.computedAlignment())(
|
|
105
|
+
'padding-inline',
|
|
106
|
+
ctx.computedPadding()
|
|
107
|
+
)('padding-block', ctx.computedPadding());
|
|
108
|
+
__classProp('origo-vbox', true);
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
inputs: { contract: [1, 'contract'] },
|
|
112
|
+
decls: 3,
|
|
113
|
+
vars: 0,
|
|
114
|
+
consts: [['vc', '']],
|
|
115
|
+
template: function VBoxComponent_Template(rf, ctx) {
|
|
116
|
+
if (rf & 1) {
|
|
117
|
+
__domElementContainer(0, null, 0);
|
|
118
|
+
__domElement(2, 'slot');
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
encapsulation: 3,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/* @__PURE__ */ (() => {})();
|
|
125
|
+
|
|
126
|
+
export { VBoxComponent };
|
|
127
|
+
//# sourceMappingURL=vbox.component-DRe59FUF.js.map
|