@spartan-ng/cli 1.3.4 → 1.4.0-beta.2
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/package.json +1 -1
- package/src/generators/ui/libs/questionnaire/files/index.ts.template +49 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-actions.ts.template +17 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-choice-description.ts.template +15 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-choice.ts.template +74 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-choices.ts.template +17 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-description.ts.template +22 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-error.ts.template +32 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-input.ts.template +25 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-item.ts.template +23 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-next.ts.template +31 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-previous.ts.template +31 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-progress.ts.template +42 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-skip.ts.template +31 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-submit.ts.template +31 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-title.ts.template +17 -0
- package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire.ts.template +23 -0
- package/src/generators/ui/libs/questionnaire/generator.d.ts +3 -0
- package/src/generators/ui/libs/questionnaire/generator.js +9 -0
- package/src/generators/ui/libs/questionnaire/generator.js.map +1 -0
- package/src/generators/ui/primitive-deps.js +1 -0
- package/src/generators/ui/primitive-deps.js.map +1 -1
- package/src/generators/ui/primitives.d.ts +1 -1
- package/src/generators/ui/style-luma.css +65 -0
- package/src/generators/ui/style-lyra.css +65 -0
- package/src/generators/ui/style-maia.css +65 -0
- package/src/generators/ui/style-mira.css +65 -0
- package/src/generators/ui/style-nova.css +65 -0
- package/src/generators/ui/style-vega.css +65 -0
- package/src/generators/ui/supported-ui-libraries.json +50 -41
package/package.json
CHANGED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { HlmQuestionnaire } from './lib/hlm-questionnaire';
|
|
2
|
+
import { HlmQuestionnaireActions } from './lib/hlm-questionnaire-actions';
|
|
3
|
+
import { HlmQuestionnaireChoice } from './lib/hlm-questionnaire-choice';
|
|
4
|
+
import { HlmQuestionnaireChoiceDescription } from './lib/hlm-questionnaire-choice-description';
|
|
5
|
+
import { HlmQuestionnaireChoices } from './lib/hlm-questionnaire-choices';
|
|
6
|
+
import { HlmQuestionnaireDescription } from './lib/hlm-questionnaire-description';
|
|
7
|
+
import { HlmQuestionnaireError } from './lib/hlm-questionnaire-error';
|
|
8
|
+
import { HlmQuestionnaireInput } from './lib/hlm-questionnaire-input';
|
|
9
|
+
import { HlmQuestionnaireItem } from './lib/hlm-questionnaire-item';
|
|
10
|
+
import { HlmQuestionnaireNext } from './lib/hlm-questionnaire-next';
|
|
11
|
+
import { HlmQuestionnairePrevious } from './lib/hlm-questionnaire-previous';
|
|
12
|
+
import { HlmQuestionnaireProgress } from './lib/hlm-questionnaire-progress';
|
|
13
|
+
import { HlmQuestionnaireSkip } from './lib/hlm-questionnaire-skip';
|
|
14
|
+
import { HlmQuestionnaireSubmit } from './lib/hlm-questionnaire-submit';
|
|
15
|
+
import { HlmQuestionnaireTitle } from './lib/hlm-questionnaire-title';
|
|
16
|
+
|
|
17
|
+
export * from './lib/hlm-questionnaire';
|
|
18
|
+
export * from './lib/hlm-questionnaire-actions';
|
|
19
|
+
export * from './lib/hlm-questionnaire-choice';
|
|
20
|
+
export * from './lib/hlm-questionnaire-choice-description';
|
|
21
|
+
export * from './lib/hlm-questionnaire-choices';
|
|
22
|
+
export * from './lib/hlm-questionnaire-description';
|
|
23
|
+
export * from './lib/hlm-questionnaire-error';
|
|
24
|
+
export * from './lib/hlm-questionnaire-input';
|
|
25
|
+
export * from './lib/hlm-questionnaire-item';
|
|
26
|
+
export * from './lib/hlm-questionnaire-next';
|
|
27
|
+
export * from './lib/hlm-questionnaire-previous';
|
|
28
|
+
export * from './lib/hlm-questionnaire-progress';
|
|
29
|
+
export * from './lib/hlm-questionnaire-skip';
|
|
30
|
+
export * from './lib/hlm-questionnaire-submit';
|
|
31
|
+
export * from './lib/hlm-questionnaire-title';
|
|
32
|
+
|
|
33
|
+
export const HlmQuestionnaireImports = [
|
|
34
|
+
HlmQuestionnaire,
|
|
35
|
+
HlmQuestionnaireProgress,
|
|
36
|
+
HlmQuestionnaireItem,
|
|
37
|
+
HlmQuestionnaireTitle,
|
|
38
|
+
HlmQuestionnaireDescription,
|
|
39
|
+
HlmQuestionnaireChoices,
|
|
40
|
+
HlmQuestionnaireChoice,
|
|
41
|
+
HlmQuestionnaireChoiceDescription,
|
|
42
|
+
HlmQuestionnaireInput,
|
|
43
|
+
HlmQuestionnaireError,
|
|
44
|
+
HlmQuestionnaireActions,
|
|
45
|
+
HlmQuestionnairePrevious,
|
|
46
|
+
HlmQuestionnaireSkip,
|
|
47
|
+
HlmQuestionnaireNext,
|
|
48
|
+
HlmQuestionnaireSubmit,
|
|
49
|
+
] as const;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
3
|
+
|
|
4
|
+
@Directive({
|
|
5
|
+
selector: '[hlmQuestionnaireActions],hlm-questionnaire-actions',
|
|
6
|
+
exportAs: 'hlmQuestionnaireActions',
|
|
7
|
+
host: {
|
|
8
|
+
'data-slot': 'questionnaire-actions',
|
|
9
|
+
},
|
|
10
|
+
})
|
|
11
|
+
export class HlmQuestionnaireActions {
|
|
12
|
+
constructor() {
|
|
13
|
+
classes(
|
|
14
|
+
() => 'spartan-questionnaire-actions grid min-h-11 w-full grid-cols-[minmax(0,1fr)_auto_auto] items-center',
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
3
|
+
|
|
4
|
+
@Directive({
|
|
5
|
+
selector: '[hlmQuestionnaireChoiceDescription]',
|
|
6
|
+
exportAs: 'hlmQuestionnaireChoiceDescription',
|
|
7
|
+
host: {
|
|
8
|
+
'data-slot': 'questionnaire-choice-description',
|
|
9
|
+
},
|
|
10
|
+
})
|
|
11
|
+
export class HlmQuestionnaireChoiceDescription {
|
|
12
|
+
constructor() {
|
|
13
|
+
classes(() => 'spartan-questionnaire-choice-description');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
|
+
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
3
|
+
import { lucideCheck } from '@ng-icons/lucide';
|
|
4
|
+
import {
|
|
5
|
+
BrnQuestionnaireChoice,
|
|
6
|
+
BrnQuestionnaireChoiceInput,
|
|
7
|
+
BrnQuestionnaireChoiceLabel,
|
|
8
|
+
BrnQuestionnaireChoiceShortcut,
|
|
9
|
+
} from '@spartan-ng/brain/questionnaire';
|
|
10
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
11
|
+
|
|
12
|
+
@Component({
|
|
13
|
+
// eslint-disable-next-line @angular-eslint/component-selector -- attribute selector on native label
|
|
14
|
+
selector: 'label[hlmQuestionnaireChoice]',
|
|
15
|
+
exportAs: 'hlmQuestionnaireChoice',
|
|
16
|
+
imports: [BrnQuestionnaireChoiceInput, BrnQuestionnaireChoiceLabel, BrnQuestionnaireChoiceShortcut, NgIcon],
|
|
17
|
+
viewProviders: [provideIcons({ lucideCheck })],
|
|
18
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
19
|
+
hostDirectives: [
|
|
20
|
+
{
|
|
21
|
+
directive: BrnQuestionnaireChoice,
|
|
22
|
+
inputs: ['value', 'disabled', 'defaultChecked', 'checked'],
|
|
23
|
+
outputs: ['checkedChange'],
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
host: {
|
|
27
|
+
'data-slot': 'questionnaire-choice',
|
|
28
|
+
},
|
|
29
|
+
template: `
|
|
30
|
+
<input
|
|
31
|
+
brnQuestionnaireChoiceInput
|
|
32
|
+
data-slot="questionnaire-choice-input"
|
|
33
|
+
class="spartan-questionnaire-choice-input absolute inset-0 z-10 size-full cursor-pointer opacity-0"
|
|
34
|
+
/>
|
|
35
|
+
<span aria-hidden="true" data-slot="questionnaire-choice-indicator" class="spartan-questionnaire-choice-indicator">
|
|
36
|
+
@if (_choice.checked() && _choice.type() === 'radio') {
|
|
37
|
+
<span data-slot="questionnaire-choice-indicator-dot" class="spartan-questionnaire-choice-indicator-dot"></span>
|
|
38
|
+
}
|
|
39
|
+
@if (_choice.checked() && _choice.type() === 'checkbox') {
|
|
40
|
+
<ng-icon
|
|
41
|
+
name="lucideCheck"
|
|
42
|
+
data-slot="questionnaire-choice-indicator-check"
|
|
43
|
+
class="spartan-questionnaire-choice-indicator-check"
|
|
44
|
+
/>
|
|
45
|
+
}
|
|
46
|
+
</span>
|
|
47
|
+
<span
|
|
48
|
+
brnQuestionnaireChoiceLabel
|
|
49
|
+
data-slot="questionnaire-choice-label"
|
|
50
|
+
class="spartan-questionnaire-choice-content flex min-w-0 flex-1 flex-col leading-snug"
|
|
51
|
+
>
|
|
52
|
+
<ng-content />
|
|
53
|
+
</span>
|
|
54
|
+
@if (_choice.shortcut(); as shortcut) {
|
|
55
|
+
<span
|
|
56
|
+
brnQuestionnaireChoiceShortcut
|
|
57
|
+
data-slot="questionnaire-choice-shortcut"
|
|
58
|
+
class="spartan-questionnaire-shortcut"
|
|
59
|
+
>
|
|
60
|
+
{{ shortcut }}
|
|
61
|
+
</span>
|
|
62
|
+
}
|
|
63
|
+
`,
|
|
64
|
+
})
|
|
65
|
+
export class HlmQuestionnaireChoice {
|
|
66
|
+
protected readonly _choice = inject(BrnQuestionnaireChoice);
|
|
67
|
+
|
|
68
|
+
constructor() {
|
|
69
|
+
classes(
|
|
70
|
+
() =>
|
|
71
|
+
'spartan-questionnaire-choice group/questionnaire-choice relative flex min-h-11 cursor-pointer items-start text-start outline-none select-none',
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireChoices } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
4
|
+
|
|
5
|
+
@Directive({
|
|
6
|
+
selector: '[hlmQuestionnaireChoices]',
|
|
7
|
+
exportAs: 'hlmQuestionnaireChoices',
|
|
8
|
+
hostDirectives: [{ directive: BrnQuestionnaireChoices }],
|
|
9
|
+
host: {
|
|
10
|
+
'data-slot': 'questionnaire-choices',
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
export class HlmQuestionnaireChoices {
|
|
14
|
+
constructor() {
|
|
15
|
+
classes(() => 'spartan-questionnaire-choices group/questionnaire-choices grid min-w-0');
|
|
16
|
+
}
|
|
17
|
+
}
|
package/src/generators/ui/libs/questionnaire/files/lib/hlm-questionnaire-description.ts.template
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireDescription } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
4
|
+
|
|
5
|
+
@Directive({
|
|
6
|
+
selector: '[hlmQuestionnaireDescription]',
|
|
7
|
+
exportAs: 'hlmQuestionnaireDescription',
|
|
8
|
+
hostDirectives: [
|
|
9
|
+
{
|
|
10
|
+
directive: BrnQuestionnaireDescription,
|
|
11
|
+
inputs: ['id'],
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
host: {
|
|
15
|
+
'data-slot': 'questionnaire-description',
|
|
16
|
+
},
|
|
17
|
+
})
|
|
18
|
+
export class HlmQuestionnaireDescription {
|
|
19
|
+
constructor() {
|
|
20
|
+
classes(() => 'spartan-questionnaire-description text-muted-foreground text-pretty');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireError } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
// eslint-disable-next-line @angular-eslint/component-selector -- attribute selector matching brain API
|
|
7
|
+
selector: '[hlmQuestionnaireError]',
|
|
8
|
+
exportAs: 'hlmQuestionnaireError',
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
hostDirectives: [
|
|
11
|
+
{
|
|
12
|
+
directive: BrnQuestionnaireError,
|
|
13
|
+
inputs: ['id', 'requiredMessage', 'optionalMessage'],
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
host: {
|
|
17
|
+
'data-slot': 'questionnaire-error',
|
|
18
|
+
},
|
|
19
|
+
template: `
|
|
20
|
+
{{ message() ?? _error.defaultMessage() }}
|
|
21
|
+
`,
|
|
22
|
+
})
|
|
23
|
+
export class HlmQuestionnaireError {
|
|
24
|
+
protected readonly _error = inject(BrnQuestionnaireError);
|
|
25
|
+
|
|
26
|
+
/** Custom error copy; falls back to the built-in required/optional message when unset. */
|
|
27
|
+
public readonly message = input<string | undefined>(undefined);
|
|
28
|
+
|
|
29
|
+
constructor() {
|
|
30
|
+
classes(() => 'spartan-questionnaire-error text-destructive');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireInput } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
4
|
+
|
|
5
|
+
@Directive({
|
|
6
|
+
selector: 'input[hlmQuestionnaireInput]',
|
|
7
|
+
exportAs: 'hlmQuestionnaireInput',
|
|
8
|
+
hostDirectives: [
|
|
9
|
+
{
|
|
10
|
+
directive: BrnQuestionnaireInput,
|
|
11
|
+
inputs: ['type', 'disabled', 'value', 'defaultValue'],
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
host: {
|
|
15
|
+
'data-slot': 'questionnaire-input',
|
|
16
|
+
},
|
|
17
|
+
})
|
|
18
|
+
export class HlmQuestionnaireInput {
|
|
19
|
+
constructor() {
|
|
20
|
+
classes(() => [
|
|
21
|
+
'spartan-questionnaire-input min-h-11 w-full min-w-0 transition-[color,box-shadow,background-color] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 sm:min-h-0',
|
|
22
|
+
'selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground',
|
|
23
|
+
]);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireItem } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
4
|
+
|
|
5
|
+
@Directive({
|
|
6
|
+
selector: 'fieldset[hlmQuestionnaireItem]',
|
|
7
|
+
exportAs: 'hlmQuestionnaireItem',
|
|
8
|
+
hostDirectives: [
|
|
9
|
+
{
|
|
10
|
+
directive: BrnQuestionnaireItem,
|
|
11
|
+
inputs: ['name', 'multiple', 'required', 'disabled', 'itemInvalid', 'aria-describedby', 'aria-keyshortcuts'],
|
|
12
|
+
outputs: ['statusChange'],
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
host: {
|
|
16
|
+
'data-slot': 'questionnaire-item',
|
|
17
|
+
},
|
|
18
|
+
})
|
|
19
|
+
export class HlmQuestionnaireItem {
|
|
20
|
+
constructor() {
|
|
21
|
+
classes(() => 'spartan-questionnaire-item flex min-w-0 flex-col border-0 p-0 outline-none');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Directive, input } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireNext } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { type ButtonVariants, buttonVariants } from '<%- importAlias %>/button';
|
|
4
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
5
|
+
|
|
6
|
+
@Directive({
|
|
7
|
+
selector: 'button[hlmQuestionnaireNext]',
|
|
8
|
+
exportAs: 'hlmQuestionnaireNext',
|
|
9
|
+
hostDirectives: [
|
|
10
|
+
{
|
|
11
|
+
directive: BrnQuestionnaireNext,
|
|
12
|
+
inputs: ['disabled'],
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
host: {
|
|
16
|
+
'data-slot': 'questionnaire-next',
|
|
17
|
+
'[attr.data-size]': 'size()',
|
|
18
|
+
'[attr.data-variant]': 'variant()',
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
export class HlmQuestionnaireNext {
|
|
22
|
+
public readonly variant = input<ButtonVariants['variant']>('default');
|
|
23
|
+
public readonly size = input<ButtonVariants['size']>('default');
|
|
24
|
+
|
|
25
|
+
constructor() {
|
|
26
|
+
classes(() => [
|
|
27
|
+
buttonVariants({ variant: this.variant(), size: this.size() }),
|
|
28
|
+
'col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0',
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Directive, input } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnairePrevious } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { type ButtonVariants, buttonVariants } from '<%- importAlias %>/button';
|
|
4
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
5
|
+
|
|
6
|
+
@Directive({
|
|
7
|
+
selector: 'button[hlmQuestionnairePrevious]',
|
|
8
|
+
exportAs: 'hlmQuestionnairePrevious',
|
|
9
|
+
hostDirectives: [
|
|
10
|
+
{
|
|
11
|
+
directive: BrnQuestionnairePrevious,
|
|
12
|
+
inputs: ['disabled'],
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
host: {
|
|
16
|
+
'data-slot': 'questionnaire-previous',
|
|
17
|
+
'[attr.data-size]': 'size()',
|
|
18
|
+
'[attr.data-variant]': 'variant()',
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
export class HlmQuestionnairePrevious {
|
|
22
|
+
public readonly variant = input<ButtonVariants['variant']>('outline');
|
|
23
|
+
public readonly size = input<ButtonVariants['size']>('default');
|
|
24
|
+
|
|
25
|
+
constructor() {
|
|
26
|
+
classes(() => [
|
|
27
|
+
buttonVariants({ variant: this.variant(), size: this.size() }),
|
|
28
|
+
'col-start-1 row-start-1 min-h-11 justify-self-start sm:min-h-0',
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireProgress } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
// eslint-disable-next-line @angular-eslint/component-selector -- attribute selector matching brain API
|
|
7
|
+
selector: '[hlmQuestionnaireProgress]',
|
|
8
|
+
exportAs: 'hlmQuestionnaireProgress',
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
hostDirectives: [{ directive: BrnQuestionnaireProgress, inputs: ['aria-label', 'valueText'] }],
|
|
11
|
+
host: {
|
|
12
|
+
'data-slot': 'questionnaire-progress',
|
|
13
|
+
},
|
|
14
|
+
template: `
|
|
15
|
+
<ng-content>
|
|
16
|
+
{{ _progress.label() }}
|
|
17
|
+
</ng-content>
|
|
18
|
+
`,
|
|
19
|
+
})
|
|
20
|
+
export class HlmQuestionnaireProgress {
|
|
21
|
+
protected readonly _progress = inject(BrnQuestionnaireProgress);
|
|
22
|
+
|
|
23
|
+
/** The current step index (1-based within the active collection). */
|
|
24
|
+
public readonly current = this._progress.current;
|
|
25
|
+
/** The total number of enabled steps. */
|
|
26
|
+
public readonly total = this._progress.total;
|
|
27
|
+
/** Whether the current step is the first one. */
|
|
28
|
+
public readonly first = this._progress.first;
|
|
29
|
+
/** Whether the current step is the last one. */
|
|
30
|
+
public readonly last = this._progress.last;
|
|
31
|
+
/** The computed progression label, e.g. "Question 2 of 5". */
|
|
32
|
+
public readonly label = this._progress.label;
|
|
33
|
+
|
|
34
|
+
/** Boolean flags marking which segments of the progress bar are filled. */
|
|
35
|
+
public readonly segments = this._progress.segments;
|
|
36
|
+
|
|
37
|
+
constructor() {
|
|
38
|
+
classes(
|
|
39
|
+
() => 'spartan-questionnaire-progress text-muted-foreground min-h-lh w-fit min-w-[14ch] font-medium tabular-nums',
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Directive, input } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireSkip } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { type ButtonVariants, buttonVariants } from '<%- importAlias %>/button';
|
|
4
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
5
|
+
|
|
6
|
+
@Directive({
|
|
7
|
+
selector: 'button[hlmQuestionnaireSkip]',
|
|
8
|
+
exportAs: 'hlmQuestionnaireSkip',
|
|
9
|
+
hostDirectives: [
|
|
10
|
+
{
|
|
11
|
+
directive: BrnQuestionnaireSkip,
|
|
12
|
+
inputs: ['disabled'],
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
host: {
|
|
16
|
+
'data-slot': 'questionnaire-skip',
|
|
17
|
+
'[attr.data-size]': 'size()',
|
|
18
|
+
'[attr.data-variant]': 'variant()',
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
export class HlmQuestionnaireSkip {
|
|
22
|
+
public readonly variant = input<ButtonVariants['variant']>('outline');
|
|
23
|
+
public readonly size = input<ButtonVariants['size']>('default');
|
|
24
|
+
|
|
25
|
+
constructor() {
|
|
26
|
+
classes(() => [
|
|
27
|
+
buttonVariants({ variant: this.variant(), size: this.size() }),
|
|
28
|
+
'col-start-2 row-start-1 min-h-11 justify-self-end sm:min-h-0',
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Directive, input } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireSubmit } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { type ButtonVariants, buttonVariants } from '<%- importAlias %>/button';
|
|
4
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
5
|
+
|
|
6
|
+
@Directive({
|
|
7
|
+
selector: 'button[hlmQuestionnaireSubmit]',
|
|
8
|
+
exportAs: 'hlmQuestionnaireSubmit',
|
|
9
|
+
hostDirectives: [
|
|
10
|
+
{
|
|
11
|
+
directive: BrnQuestionnaireSubmit,
|
|
12
|
+
inputs: ['disabled'],
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
host: {
|
|
16
|
+
'data-slot': 'questionnaire-submit',
|
|
17
|
+
'[attr.data-size]': 'size()',
|
|
18
|
+
'[attr.data-variant]': 'variant()',
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
export class HlmQuestionnaireSubmit {
|
|
22
|
+
public readonly variant = input<ButtonVariants['variant']>('default');
|
|
23
|
+
public readonly size = input<ButtonVariants['size']>('default');
|
|
24
|
+
|
|
25
|
+
constructor() {
|
|
26
|
+
classes(() => [
|
|
27
|
+
buttonVariants({ variant: this.variant(), size: this.size() }),
|
|
28
|
+
'col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0',
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaireTitle } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
4
|
+
|
|
5
|
+
@Directive({
|
|
6
|
+
selector: 'legend[hlmQuestionnaireTitle]',
|
|
7
|
+
exportAs: 'hlmQuestionnaireTitle',
|
|
8
|
+
hostDirectives: [{ directive: BrnQuestionnaireTitle }],
|
|
9
|
+
host: {
|
|
10
|
+
'data-slot': 'questionnaire-title',
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
export class HlmQuestionnaireTitle {
|
|
14
|
+
constructor() {
|
|
15
|
+
classes(() => 'spartan-questionnaire-title text-pretty');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { BrnQuestionnaire } from '@spartan-ng/brain/questionnaire';
|
|
3
|
+
import { classes } from '<%- importAlias %>/utils';
|
|
4
|
+
|
|
5
|
+
@Directive({
|
|
6
|
+
selector: 'form[hlmQuestionnaire]',
|
|
7
|
+
exportAs: 'hlmQuestionnaire',
|
|
8
|
+
hostDirectives: [
|
|
9
|
+
{
|
|
10
|
+
directive: BrnQuestionnaire,
|
|
11
|
+
inputs: ['items', 'defaultItem', 'item', 'shortcuts', 'noValidate'],
|
|
12
|
+
outputs: ['itemChange'],
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
host: {
|
|
16
|
+
'data-slot': 'questionnaire',
|
|
17
|
+
},
|
|
18
|
+
})
|
|
19
|
+
export class HlmQuestionnaire {
|
|
20
|
+
constructor() {
|
|
21
|
+
classes(() => 'spartan-questionnaire flex w-full min-w-0 flex-col');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generator = generator;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
|
|
6
|
+
async function generator(tree, options) {
|
|
7
|
+
return await (0, generator_1.default)(tree, { ...options, name: 'questionnaire' });
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/questionnaire/generator.ts"],"names":[],"mappings":";;AAIA,8BAEC;;AALD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitive-deps.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/ui/primitive-deps.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"primitive-deps.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/ui/primitive-deps.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAmC;IACpE,SAAS,EAAE,CAAC,OAAO,CAAC;IACpB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,cAAc,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnC,cAAc,EAAE,CAAC,OAAO,CAAC;IACzB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC/B,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC;IACjD,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,cAAc,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACvC,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC7B,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,WAAW,EAAE,CAAC,OAAO,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC;IAC5C,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC;IACrD,cAAc,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;IAC1C,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC;IAC9D,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,CAAC;IAC1B,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC;IACtC,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC;IACvD,WAAW,EAAE,CAAC,OAAO,CAAC;IACtB,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;IAC5B,GAAG,EAAE,CAAC,OAAO,CAAC;IACd,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;IACnC,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,CAAC,OAAO,CAAC;IAC1B,iBAAiB,EAAE,CAAC,OAAO,CAAC;IAC5B,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACzC,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IAClC,aAAa,EAAE,CAAC,OAAO,CAAC;IACxB,SAAS,EAAE,CAAC,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,OAAO,CAAC;IACxB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,SAAS,EAAE,CAAC,OAAO,CAAC;IACpB,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC1B,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;IAClF,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACzB,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,cAAc,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnC,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,KAAK,EAAE,EAAE;CACT,CAAC;AAEK,MAAM,sBAAsB,GAAG,CAAC,UAAuB,EAAe,EAAE;IAC9E,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAa,CAAC;IAEjD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,6BAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,2FAA2F;gBAC3F,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAA,8BAAsB,EAAC,CAAC,GAAG,CAAC,CAAC;qBAC3B,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;qBAC7F,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACxC,CAAC,CAAC;AAjBW,QAAA,sBAAsB,0BAiBjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type Primitive = 'accordion' | 'alert' | 'alert-dialog' | 'aspect-ratio' | 'attachment' | 'autocomplete' | 'avatar' | 'badge' | 'breadcrumb' | 'bubble' | 'button' | 'button-group' | 'calendar' | 'card' | 'carousel' | 'checkbox' | 'collapsible' | 'combobox' | 'command' | 'context-menu' | 'date-picker' | 'dialog' | 'drawer' | 'dropdown-menu' | 'empty' | 'field' | 'hover-card' | 'input' | 'input-group' | 'input-otp' | 'item' | 'kbd' | 'label' | 'marker' | 'menubar' | 'message' | 'native-select' | 'navigation-menu' | 'pagination' | 'popover' | 'progress' | 'radio-group' | 'resizable' | 'scroll-area' | 'select' | 'separator' | 'sheet' | 'sidebar' | 'skeleton' | 'slider' | 'sonner' | 'spinner' | 'switch' | 'table' | 'tabs' | 'textarea' | 'toggle' | 'toggle-group' | 'tooltip' | 'typography' | 'utils';
|
|
1
|
+
export type Primitive = 'accordion' | 'alert' | 'alert-dialog' | 'aspect-ratio' | 'attachment' | 'autocomplete' | 'avatar' | 'badge' | 'breadcrumb' | 'bubble' | 'button' | 'button-group' | 'calendar' | 'card' | 'carousel' | 'checkbox' | 'collapsible' | 'combobox' | 'command' | 'context-menu' | 'date-picker' | 'dialog' | 'drawer' | 'dropdown-menu' | 'empty' | 'field' | 'hover-card' | 'input' | 'input-group' | 'input-otp' | 'item' | 'kbd' | 'label' | 'marker' | 'menubar' | 'message' | 'native-select' | 'navigation-menu' | 'pagination' | 'popover' | 'progress' | 'questionnaire' | 'radio-group' | 'resizable' | 'scroll-area' | 'select' | 'separator' | 'sheet' | 'sidebar' | 'skeleton' | 'slider' | 'sonner' | 'spinner' | 'switch' | 'table' | 'tabs' | 'textarea' | 'toggle' | 'toggle-group' | 'tooltip' | 'typography' | 'utils';
|
|
@@ -1048,6 +1048,71 @@
|
|
|
1048
1048
|
@apply text-muted-foreground ms-auto text-sm tabular-nums;
|
|
1049
1049
|
}
|
|
1050
1050
|
|
|
1051
|
+
/* MARK: Questionnaire */
|
|
1052
|
+
.spartan-questionnaire {
|
|
1053
|
+
@apply gap-6;
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
.spartan-questionnaire-progress {
|
|
1057
|
+
@apply text-xs;
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
.spartan-questionnaire-item {
|
|
1061
|
+
@apply gap-5;
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
.spartan-questionnaire-title {
|
|
1065
|
+
@apply text-base font-semibold [&:not(:has(~[data-slot=questionnaire-description]))]:mb-5;
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
.spartan-questionnaire-description {
|
|
1069
|
+
@apply text-sm;
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
.spartan-questionnaire-choices {
|
|
1073
|
+
@apply gap-3;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
.spartan-questionnaire-choice {
|
|
1077
|
+
@apply border-input bg-input/20 hover:bg-input/40 has-[>input:focus-visible]:border-ring has-[>input:focus-visible]:ring-ring/50 data-invalid:border-destructive data-checked:border-primary/40 data-checked:bg-primary/10 gap-2.5 rounded-3xl border px-4 py-3 text-sm transition-colors has-[>input:focus-visible]:ring-3 data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
.spartan-questionnaire-choice-indicator {
|
|
1081
|
+
@apply bg-input/90 group-data-checked/questionnaire-choice:border-primary group-data-checked/questionnaire-choice:bg-primary group-data-checked/questionnaire-choice:text-primary-foreground dark:group-data-checked/questionnaire-choice:bg-primary pointer-events-none relative flex size-4 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-[5px] border border-transparent group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[type=radio]/questionnaire-choice:rounded-full;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
.spartan-questionnaire-choice-indicator-dot {
|
|
1085
|
+
@apply bg-primary-foreground size-2 rounded-full dark:size-2.5;
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
.spartan-questionnaire-choice-indicator-check {
|
|
1089
|
+
@apply text-[length:--spacing(3.5)];
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
.spartan-questionnaire-choice-content {
|
|
1093
|
+
@apply gap-1;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
.spartan-questionnaire-choice-description {
|
|
1097
|
+
@apply text-muted-foreground;
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
.spartan-questionnaire-shortcut {
|
|
1101
|
+
@apply border-primary/10 bg-background/80 text-muted-foreground pointer-events-none ms-auto inline-flex size-5 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-full border font-mono text-[0.625rem] leading-none font-medium group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
.spartan-questionnaire-input {
|
|
1105
|
+
@apply bg-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-3xl border border-transparent px-3 py-1 text-base focus-visible:ring-3 aria-invalid:ring-3 md:text-sm;
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
.spartan-questionnaire-error {
|
|
1109
|
+
@apply mt-2 text-sm;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
.spartan-questionnaire-actions {
|
|
1113
|
+
@apply gap-2 sm:min-h-9;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1051
1116
|
/* MARK: Resizable */
|
|
1052
1117
|
.spartan-resizable-handle-icon {
|
|
1053
1118
|
@apply bg-border h-6 w-1 rounded-lg;
|