@eric-emg/symphiq-components 1.2.375 → 1.2.377
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/fesm2022/symphiq-components.mjs +166 -166
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +23 -23
- package/package.json +1 -1
|
@@ -89074,172 +89074,172 @@ class ShopProfileQuestionAnswerComponent {
|
|
|
89074
89074
|
])
|
|
89075
89075
|
])
|
|
89076
89076
|
],
|
|
89077
|
-
template: `
|
|
89078
|
-
<div class="flex flex-col h-full">
|
|
89079
|
-
<!-- Scrollable Content -->
|
|
89080
|
-
<div #scrollContainer class="flex-1 overflow-y-auto">
|
|
89081
|
-
<!-- Unanswered Questions Status -->
|
|
89082
|
-
<div [ngClass]="statusHeaderClasses()" class="px-6 py-4 border-b">
|
|
89083
|
-
<h4 [ngClass]="statusTitleClasses()" class="text-sm font-semibold mb-3">
|
|
89084
|
-
Unanswered questions status
|
|
89085
|
-
</h4>
|
|
89086
|
-
<div class="flex items-center gap-3">
|
|
89087
|
-
<div class="flex-1">
|
|
89088
|
-
<div [ngClass]="progressBarContainerClasses()" class="h-2 rounded-full overflow-hidden">
|
|
89089
|
-
<div
|
|
89090
|
-
[ngClass]="progressBarFillClasses()"
|
|
89091
|
-
class="h-full transition-all duration-500 ease-out rounded-full"
|
|
89092
|
-
[style.width.%]="progressPercentage()"></div>
|
|
89093
|
-
</div>
|
|
89094
|
-
</div>
|
|
89095
|
-
<div [ngClass]="progressTextClasses()" class="text-sm font-medium whitespace-nowrap">
|
|
89096
|
-
{{ answeredCount() }} / {{ totalCount() }} answered
|
|
89097
|
-
</div>
|
|
89098
|
-
</div>
|
|
89099
|
-
</div>
|
|
89100
|
-
|
|
89101
|
-
<!-- Sentinel for intersection observer -->
|
|
89102
|
-
<div #stickySentinel class="h-0"></div>
|
|
89103
|
-
|
|
89104
|
-
<!-- Sticky Question Header -->
|
|
89105
|
-
<div #stickyHeader [ngClass]="stickyHeaderClasses()" class="sticky top-0 z-10 px-6 py-4 transition-all duration-200">
|
|
89106
|
-
<!-- Breadcrumb - hide for All Questions mode -->
|
|
89107
|
-
@if (viewType() !== 'all') {
|
|
89108
|
-
<div [ngClass]="breadcrumbClasses()" class="text-sm italic mb-2">
|
|
89109
|
-
Shop > {{ breadcrumbPath() }}
|
|
89110
|
-
</div>
|
|
89111
|
-
}
|
|
89112
|
-
|
|
89113
|
-
<!-- Question - animates from text-2xl to text-lg when sticky -->
|
|
89114
|
-
<h2 #questionTitle [ngClass]="questionTextClasses()" class="font-bold text-2xl [&.is-sticky]:text-lg transition-all duration-200">
|
|
89115
|
-
{{ question().question }}
|
|
89116
|
-
</h2>
|
|
89117
|
-
</div>
|
|
89118
|
-
|
|
89119
|
-
<!-- Context and Focus Areas - scroll under sticky header -->
|
|
89120
|
-
<div class="px-6">
|
|
89121
|
-
<!-- Context -->
|
|
89122
|
-
@if (question().context) {
|
|
89123
|
-
<p [ngClass]="contextTextClasses()" class="text-sm leading-relaxed mt-3">
|
|
89124
|
-
{{ question().context }}
|
|
89125
|
-
</p>
|
|
89126
|
-
}
|
|
89127
|
-
|
|
89128
|
-
<!-- Related Focus Areas -->
|
|
89129
|
-
@if (relatedFocusAreas().length > 0) {
|
|
89130
|
-
<div class="mt-4">
|
|
89131
|
-
<div class="flex items-center gap-2 mb-2">
|
|
89132
|
-
<span [ngClass]="relatedLabelClasses()" class="text-xs font-semibold">
|
|
89133
|
-
Related to {{ relatedFocusAreas().length }} focus area(s)
|
|
89134
|
-
</span>
|
|
89135
|
-
<svg class="w-4 h-4" [ngClass]="relatedLabelClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
89136
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
|
89137
|
-
</svg>
|
|
89138
|
-
</div>
|
|
89139
|
-
<div class="flex flex-wrap gap-2">
|
|
89140
|
-
@for (focusArea of relatedFocusAreas(); track focusArea) {
|
|
89141
|
-
<span [ngClass]="focusAreaChipClasses()" class="px-3 py-1.5 rounded-full text-xs font-medium">
|
|
89142
|
-
{{ getFocusAreaTitle(focusArea) }}
|
|
89143
|
-
</span>
|
|
89144
|
-
}
|
|
89145
|
-
</div>
|
|
89146
|
-
</div>
|
|
89147
|
-
}
|
|
89148
|
-
</div>
|
|
89149
|
-
|
|
89150
|
-
<div class="px-6 py-6">
|
|
89151
|
-
|
|
89152
|
-
<!-- Answer Options -->
|
|
89153
|
-
<div class="space-y-3 mb-4">
|
|
89154
|
-
@for (option of answerOptions(); track option.tempId) {
|
|
89155
|
-
<label
|
|
89156
|
-
[ngClass]="checkboxRowClasses()"
|
|
89157
|
-
class="flex items-start gap-3 p-4 rounded-lg cursor-pointer transition-all duration-200 hover:scale-[1.01]">
|
|
89158
|
-
<input
|
|
89159
|
-
type="checkbox"
|
|
89160
|
-
[checked]="option.isSelected"
|
|
89161
|
-
(change)="toggleAnswer(option.text)"
|
|
89162
|
-
[ngClass]="checkboxClasses()"
|
|
89163
|
-
class="mt-0.5 w-5 h-5 rounded border-2 cursor-pointer transition-all duration-200 focus:ring-2 focus:ring-offset-2" />
|
|
89164
|
-
<span [ngClass]="checkboxLabelClasses()" class="text-base flex-1">
|
|
89165
|
-
{{ option.text }}
|
|
89166
|
-
</span>
|
|
89167
|
-
</label>
|
|
89168
|
-
}
|
|
89169
|
-
</div>
|
|
89170
|
-
|
|
89171
|
-
<!-- Add Other Answers -->
|
|
89172
|
-
<div class="mb-6">
|
|
89173
|
-
<div
|
|
89174
|
-
class="grid transition-[grid-template-rows] duration-300 ease-in-out"
|
|
89175
|
-
[style.grid-template-rows]="addOtherAnswersExpanded() ? '1fr' : '0fr'">
|
|
89176
|
-
<div class="overflow-hidden min-h-0">
|
|
89177
|
-
<div class="pb-4">
|
|
89178
|
-
<textarea
|
|
89179
|
-
[(ngModel)]="customAnswerText"
|
|
89180
|
-
[ngClass]="textareaClasses()"
|
|
89181
|
-
class="w-full px-4 py-3 rounded-lg border-2 text-sm resize-y transition-colors duration-200 focus:ring-2 focus:ring-offset-2"
|
|
89182
|
-
rows="5"
|
|
89183
|
-
placeholder="Enter your answer(s) here, separated by returns."></textarea>
|
|
89184
|
-
<div class="flex items-center gap-3 mt-3">
|
|
89185
|
-
<button
|
|
89186
|
-
type="button"
|
|
89187
|
-
(click)="cancelCustomAnswers()"
|
|
89188
|
-
[ngClass]="cancelButtonClasses()"
|
|
89189
|
-
class="px-5 py-2.5 rounded-lg font-medium text-sm transition-all duration-200 hover:scale-105 active:scale-95">
|
|
89190
|
-
Cancel
|
|
89191
|
-
</button>
|
|
89192
|
-
<button
|
|
89193
|
-
type="button"
|
|
89194
|
-
(click)="addCustomAnswers()"
|
|
89195
|
-
[disabled]="!canAddCustomAnswers()"
|
|
89196
|
-
[ngClass]="addButtonClasses()"
|
|
89197
|
-
class="flex-1 px-5 py-2.5 rounded-lg font-medium text-sm transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:scale-100">
|
|
89198
|
-
Add
|
|
89199
|
-
</button>
|
|
89200
|
-
</div>
|
|
89201
|
-
</div>
|
|
89202
|
-
</div>
|
|
89203
|
-
</div>
|
|
89204
|
-
|
|
89205
|
-
@if (!addOtherAnswersExpanded()) {
|
|
89206
|
-
<button
|
|
89207
|
-
type="button"
|
|
89208
|
-
(click)="toggleAddOtherAnswers()"
|
|
89209
|
-
[ngClass]="addOtherAnswersButtonClasses()"
|
|
89210
|
-
class="w-full px-5 py-3 rounded-lg font-medium text-sm transition-all duration-200 border-2 hover:scale-[1.01] active:scale-[0.99]">
|
|
89211
|
-
Add other answers
|
|
89212
|
-
</button>
|
|
89213
|
-
}
|
|
89214
|
-
</div>
|
|
89215
|
-
</div>
|
|
89216
|
-
</div>
|
|
89217
|
-
|
|
89218
|
-
<!-- Sticky Footer -->
|
|
89219
|
-
<div [ngClass]="footerClasses()" class="px-6 py-4 border-t sticky bottom-0 z-10">
|
|
89220
|
-
<div class="flex items-center gap-4">
|
|
89221
|
-
<button
|
|
89222
|
-
type="button"
|
|
89223
|
-
(click)="onSave()"
|
|
89224
|
-
[disabled]="saveButtonsDisabled()"
|
|
89225
|
-
[ngClass]="saveButtonClasses()"
|
|
89226
|
-
class="px-5 py-2.5 rounded-lg font-medium text-sm transition-all duration-200 border disabled:opacity-50 disabled:cursor-not-allowed hover:scale-[1.02] active:scale-95 disabled:hover:scale-100">
|
|
89227
|
-
Save
|
|
89228
|
-
</button>
|
|
89229
|
-
<button
|
|
89230
|
-
type="button"
|
|
89231
|
-
(click)="onSaveAndNext()"
|
|
89232
|
-
[disabled]="saveButtonsDisabled()"
|
|
89233
|
-
[ngClass]="saveAndNextButtonClasses()"
|
|
89234
|
-
class="flex-1 px-5 py-2.5 rounded-lg font-medium text-sm transition-all duration-200 flex items-center justify-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed hover:scale-[1.01] active:scale-[0.99] disabled:hover:scale-100">
|
|
89235
|
-
<span>Save & next unanswered</span>
|
|
89236
|
-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
89237
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
|
|
89238
|
-
</svg>
|
|
89239
|
-
</button>
|
|
89240
|
-
</div>
|
|
89241
|
-
</div>
|
|
89242
|
-
</div>
|
|
89077
|
+
template: `
|
|
89078
|
+
<div class="flex flex-col h-full">
|
|
89079
|
+
<!-- Scrollable Content -->
|
|
89080
|
+
<div #scrollContainer class="flex-1 overflow-y-auto">
|
|
89081
|
+
<!-- Unanswered Questions Status -->
|
|
89082
|
+
<div [ngClass]="statusHeaderClasses()" class="px-6 py-4 border-b">
|
|
89083
|
+
<h4 [ngClass]="statusTitleClasses()" class="text-sm font-semibold mb-3">
|
|
89084
|
+
Unanswered questions status
|
|
89085
|
+
</h4>
|
|
89086
|
+
<div class="flex items-center gap-3">
|
|
89087
|
+
<div class="flex-1">
|
|
89088
|
+
<div [ngClass]="progressBarContainerClasses()" class="h-2 rounded-full overflow-hidden">
|
|
89089
|
+
<div
|
|
89090
|
+
[ngClass]="progressBarFillClasses()"
|
|
89091
|
+
class="h-full transition-all duration-500 ease-out rounded-full"
|
|
89092
|
+
[style.width.%]="progressPercentage()"></div>
|
|
89093
|
+
</div>
|
|
89094
|
+
</div>
|
|
89095
|
+
<div [ngClass]="progressTextClasses()" class="text-sm font-medium whitespace-nowrap">
|
|
89096
|
+
{{ answeredCount() }} / {{ totalCount() }} answered
|
|
89097
|
+
</div>
|
|
89098
|
+
</div>
|
|
89099
|
+
</div>
|
|
89100
|
+
|
|
89101
|
+
<!-- Sentinel for intersection observer -->
|
|
89102
|
+
<div #stickySentinel class="h-0"></div>
|
|
89103
|
+
|
|
89104
|
+
<!-- Sticky Question Header -->
|
|
89105
|
+
<div #stickyHeader [ngClass]="stickyHeaderClasses()" class="sticky top-0 z-10 px-6 py-4 transition-all duration-200">
|
|
89106
|
+
<!-- Breadcrumb - hide for All Questions mode -->
|
|
89107
|
+
@if (viewType() !== 'all') {
|
|
89108
|
+
<div [ngClass]="breadcrumbClasses()" class="text-sm italic mb-2">
|
|
89109
|
+
Shop > {{ breadcrumbPath() }}
|
|
89110
|
+
</div>
|
|
89111
|
+
}
|
|
89112
|
+
|
|
89113
|
+
<!-- Question - animates from text-2xl to text-lg when sticky -->
|
|
89114
|
+
<h2 #questionTitle [ngClass]="questionTextClasses()" class="font-bold text-2xl [&.is-sticky]:text-lg transition-all duration-200">
|
|
89115
|
+
{{ question().question }}
|
|
89116
|
+
</h2>
|
|
89117
|
+
</div>
|
|
89118
|
+
|
|
89119
|
+
<!-- Context and Focus Areas - scroll under sticky header -->
|
|
89120
|
+
<div class="px-6">
|
|
89121
|
+
<!-- Context -->
|
|
89122
|
+
@if (question().context) {
|
|
89123
|
+
<p [ngClass]="contextTextClasses()" class="text-sm leading-relaxed mt-3">
|
|
89124
|
+
{{ question().context }}
|
|
89125
|
+
</p>
|
|
89126
|
+
}
|
|
89127
|
+
|
|
89128
|
+
<!-- Related Focus Areas -->
|
|
89129
|
+
@if (relatedFocusAreas().length > 0) {
|
|
89130
|
+
<div class="mt-4">
|
|
89131
|
+
<div class="flex items-center gap-2 mb-2">
|
|
89132
|
+
<span [ngClass]="relatedLabelClasses()" class="text-xs font-semibold">
|
|
89133
|
+
Related to {{ relatedFocusAreas().length }} focus area(s)
|
|
89134
|
+
</span>
|
|
89135
|
+
<svg class="w-4 h-4" [ngClass]="relatedLabelClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
89136
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
|
89137
|
+
</svg>
|
|
89138
|
+
</div>
|
|
89139
|
+
<div class="flex flex-wrap gap-2">
|
|
89140
|
+
@for (focusArea of relatedFocusAreas(); track focusArea) {
|
|
89141
|
+
<span [ngClass]="focusAreaChipClasses()" class="px-3 py-1.5 rounded-full text-xs font-medium">
|
|
89142
|
+
{{ getFocusAreaTitle(focusArea) }}
|
|
89143
|
+
</span>
|
|
89144
|
+
}
|
|
89145
|
+
</div>
|
|
89146
|
+
</div>
|
|
89147
|
+
}
|
|
89148
|
+
</div>
|
|
89149
|
+
|
|
89150
|
+
<div class="px-6 py-6">
|
|
89151
|
+
|
|
89152
|
+
<!-- Answer Options -->
|
|
89153
|
+
<div class="space-y-3 mb-4">
|
|
89154
|
+
@for (option of answerOptions(); track option.tempId) {
|
|
89155
|
+
<label
|
|
89156
|
+
[ngClass]="checkboxRowClasses()"
|
|
89157
|
+
class="flex items-start gap-3 p-4 rounded-lg cursor-pointer transition-all duration-200 hover:scale-[1.01]">
|
|
89158
|
+
<input
|
|
89159
|
+
type="checkbox"
|
|
89160
|
+
[checked]="option.isSelected"
|
|
89161
|
+
(change)="toggleAnswer(option.text)"
|
|
89162
|
+
[ngClass]="checkboxClasses()"
|
|
89163
|
+
class="mt-0.5 w-5 h-5 rounded border-2 cursor-pointer transition-all duration-200 focus:ring-2 focus:ring-offset-2" />
|
|
89164
|
+
<span [ngClass]="checkboxLabelClasses()" class="text-base flex-1">
|
|
89165
|
+
{{ option.text }}
|
|
89166
|
+
</span>
|
|
89167
|
+
</label>
|
|
89168
|
+
}
|
|
89169
|
+
</div>
|
|
89170
|
+
|
|
89171
|
+
<!-- Add Other Answers -->
|
|
89172
|
+
<div class="mb-6">
|
|
89173
|
+
<div
|
|
89174
|
+
class="grid transition-[grid-template-rows] duration-300 ease-in-out"
|
|
89175
|
+
[style.grid-template-rows]="addOtherAnswersExpanded() ? '1fr' : '0fr'">
|
|
89176
|
+
<div class="overflow-hidden min-h-0">
|
|
89177
|
+
<div class="pb-4">
|
|
89178
|
+
<textarea
|
|
89179
|
+
[(ngModel)]="customAnswerText"
|
|
89180
|
+
[ngClass]="textareaClasses()"
|
|
89181
|
+
class="w-full px-4 py-3 rounded-lg border-2 text-sm resize-y transition-colors duration-200 focus:ring-2 focus:ring-offset-2"
|
|
89182
|
+
rows="5"
|
|
89183
|
+
placeholder="Enter your answer(s) here, separated by returns."></textarea>
|
|
89184
|
+
<div class="flex items-center gap-3 mt-3">
|
|
89185
|
+
<button
|
|
89186
|
+
type="button"
|
|
89187
|
+
(click)="cancelCustomAnswers()"
|
|
89188
|
+
[ngClass]="cancelButtonClasses()"
|
|
89189
|
+
class="px-5 py-2.5 rounded-lg font-medium text-sm transition-all duration-200 hover:scale-105 active:scale-95">
|
|
89190
|
+
Cancel
|
|
89191
|
+
</button>
|
|
89192
|
+
<button
|
|
89193
|
+
type="button"
|
|
89194
|
+
(click)="addCustomAnswers()"
|
|
89195
|
+
[disabled]="!canAddCustomAnswers()"
|
|
89196
|
+
[ngClass]="addButtonClasses()"
|
|
89197
|
+
class="flex-1 px-5 py-2.5 rounded-lg font-medium text-sm transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:scale-100">
|
|
89198
|
+
Add
|
|
89199
|
+
</button>
|
|
89200
|
+
</div>
|
|
89201
|
+
</div>
|
|
89202
|
+
</div>
|
|
89203
|
+
</div>
|
|
89204
|
+
|
|
89205
|
+
@if (!addOtherAnswersExpanded()) {
|
|
89206
|
+
<button
|
|
89207
|
+
type="button"
|
|
89208
|
+
(click)="toggleAddOtherAnswers()"
|
|
89209
|
+
[ngClass]="addOtherAnswersButtonClasses()"
|
|
89210
|
+
class="w-full px-5 py-3 rounded-lg font-medium text-sm transition-all duration-200 border-2 hover:scale-[1.01] active:scale-[0.99]">
|
|
89211
|
+
Add other answers
|
|
89212
|
+
</button>
|
|
89213
|
+
}
|
|
89214
|
+
</div>
|
|
89215
|
+
</div>
|
|
89216
|
+
</div>
|
|
89217
|
+
|
|
89218
|
+
<!-- Sticky Footer -->
|
|
89219
|
+
<div [ngClass]="footerClasses()" class="px-6 py-4 border-t sticky bottom-0 z-10">
|
|
89220
|
+
<div class="flex items-center gap-4">
|
|
89221
|
+
<button
|
|
89222
|
+
type="button"
|
|
89223
|
+
(click)="onSave()"
|
|
89224
|
+
[disabled]="saveButtonsDisabled()"
|
|
89225
|
+
[ngClass]="saveButtonClasses()"
|
|
89226
|
+
class="px-5 py-2.5 rounded-lg font-medium text-sm transition-all duration-200 border disabled:opacity-50 disabled:cursor-not-allowed hover:scale-[1.02] active:scale-95 disabled:hover:scale-100">
|
|
89227
|
+
Save
|
|
89228
|
+
</button>
|
|
89229
|
+
<button
|
|
89230
|
+
type="button"
|
|
89231
|
+
(click)="onSaveAndNext()"
|
|
89232
|
+
[disabled]="saveButtonsDisabled()"
|
|
89233
|
+
[ngClass]="saveAndNextButtonClasses()"
|
|
89234
|
+
class="flex-1 px-5 py-2.5 rounded-lg font-medium text-sm transition-all duration-200 flex items-center justify-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed hover:scale-[1.01] active:scale-[0.99] disabled:hover:scale-100">
|
|
89235
|
+
<span>Save & next unanswered</span>
|
|
89236
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
89237
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
|
|
89238
|
+
</svg>
|
|
89239
|
+
</button>
|
|
89240
|
+
</div>
|
|
89241
|
+
</div>
|
|
89242
|
+
</div>
|
|
89243
89243
|
`
|
|
89244
89244
|
}]
|
|
89245
89245
|
}], () => [], { question: [{ type: i0.Input, args: [{ isSignal: true, alias: "question", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], viewType: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewType", required: false }] }], selectedCategoryId: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedCategoryId", required: false }] }], selectedFocusAreaId: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedFocusAreaId", required: false }] }], filteredQuestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "filteredQuestions", required: false }] }], profileShopAnswers: [{ type: i0.Input, args: [{ isSignal: true, alias: "profileShopAnswers", required: false }] }], backClick: [{ type: i0.Output, args: ["backClick"] }], saveClick: [{ type: i0.Output, args: ["saveClick"] }], saveAndNextClick: [{ type: i0.Output, args: ["saveAndNextClick"] }], scrollContainer: [{
|