@constructor-io/constructorio-ui-quizzes 1.8.3 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/constructorio-ui-quizzes-bundled.js +20 -20
  2. package/lib/cjs/package.json +1 -1
  3. package/lib/cjs/src/components/CioQuiz/actions.js +1 -0
  4. package/lib/cjs/src/components/CioQuiz/index.js +2 -1
  5. package/lib/cjs/src/components/CioQuiz/quizLocalReducer.js +21 -0
  6. package/lib/cjs/src/components/ControlBar/ControlBar.js +5 -2
  7. package/lib/cjs/src/components/SkipButton/SkipButton.js +13 -0
  8. package/lib/cjs/src/constants.js +2 -0
  9. package/lib/cjs/src/hooks/usePropsGetters/index.js +4 -1
  10. package/lib/cjs/src/hooks/usePropsGetters/useSkipQuestionButtonProps.js +21 -0
  11. package/lib/cjs/src/hooks/useQuizEvents/index.js +3 -0
  12. package/lib/cjs/src/hooks/useQuizEvents/useQuizSkipClick.js +31 -0
  13. package/lib/cjs/src/stories/Quiz/tests/mocks.js +1 -0
  14. package/lib/cjs/src/utils.js +1 -0
  15. package/lib/mjs/package.json +1 -1
  16. package/lib/mjs/src/components/CioQuiz/actions.js +1 -0
  17. package/lib/mjs/src/components/CioQuiz/index.js +2 -1
  18. package/lib/mjs/src/components/CioQuiz/quizLocalReducer.js +25 -0
  19. package/lib/mjs/src/components/ControlBar/ControlBar.js +5 -2
  20. package/lib/mjs/src/components/SkipButton/SkipButton.js +10 -0
  21. package/lib/mjs/src/constants.js +2 -0
  22. package/lib/mjs/src/hooks/usePropsGetters/index.js +4 -1
  23. package/lib/mjs/src/hooks/usePropsGetters/useSkipQuestionButtonProps.js +17 -0
  24. package/lib/mjs/src/hooks/useQuizEvents/index.js +3 -0
  25. package/lib/mjs/src/hooks/useQuizEvents/useQuizSkipClick.js +31 -0
  26. package/lib/mjs/src/stories/Quiz/tests/mocks.js +4 -0
  27. package/lib/mjs/src/utils.js +1 -0
  28. package/lib/styles.css +35 -1
  29. package/lib/types/src/components/CioQuiz/actions.d.ts +2 -1
  30. package/lib/types/src/components/CioQuiz/context.d.ts +2 -1
  31. package/lib/types/src/components/SkipButton/SkipButton.d.ts +6 -0
  32. package/lib/types/src/constants.d.ts +2 -2
  33. package/lib/types/src/hooks/usePropsGetters/index.d.ts +2 -1
  34. package/lib/types/src/hooks/usePropsGetters/useSkipQuestionButtonProps.d.ts +3 -0
  35. package/lib/types/src/hooks/useQuizEvents/useQuizSkipClick.d.ts +6 -0
  36. package/lib/types/src/stories/Quiz/tests/mocks.d.ts +2 -2
  37. package/lib/types/src/types.d.ts +13 -1
  38. package/lib/types/src/utils.d.ts +1 -0
  39. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { GetResetQuizButtonProps, GetCoverQuestionProps, GetNextQuestionButtonProps, GetOpenTextInputProps, GetPreviousQuestionButtonProps, GetQuizImageProps, GetSelectInputProps, QuizEventsReturn, GetHydrateQuizButtonProps, GetAddToCartButtonProps, GetQuizResultButtonProps, GetQuizResultLinkProps, GetSelectQuestionImageProps, GetAddToFavoritesButtonProps } from '../../types';
1
+ import { GetResetQuizButtonProps, GetCoverQuestionProps, GetNextQuestionButtonProps, GetOpenTextInputProps, GetPreviousQuestionButtonProps, GetQuizImageProps, GetSelectInputProps, QuizEventsReturn, GetHydrateQuizButtonProps, GetAddToCartButtonProps, GetQuizResultButtonProps, GetQuizResultLinkProps, GetSelectQuestionImageProps, GetAddToFavoritesButtonProps, GetSkipQuestionButtonProps } from '../../types';
2
2
  import { QuizAPIReducerState } from '../../components/CioQuiz/quizApiReducer';
3
3
  import { QuizLocalReducerState } from '../../components/CioQuiz/quizLocalReducer';
4
4
  declare const usePropsGetters: (quizEvents: QuizEventsReturn, quizApiState: QuizAPIReducerState, quizLocalState: QuizLocalReducerState) => {
@@ -15,5 +15,6 @@ declare const usePropsGetters: (quizEvents: QuizEventsReturn, quizApiState: Quiz
15
15
  getAddToFavoritesButtonProps: GetAddToFavoritesButtonProps;
16
16
  getQuizResultButtonProps: GetQuizResultButtonProps;
17
17
  getQuizResultLinkProps: GetQuizResultLinkProps;
18
+ getSkipQuestionButtonProps: GetSkipQuestionButtonProps;
18
19
  };
19
20
  export default usePropsGetters;
@@ -0,0 +1,3 @@
1
+ import { QuizAPIReducerState } from '../../components/CioQuiz/quizApiReducer';
2
+ import { GetSkipQuestionButtonProps, QuizEventsReturn } from '../../types';
3
+ export default function useSkipQuestionButtonProps(skipQuestion: QuizEventsReturn.SkipQuestion, quizApiState: QuizAPIReducerState): GetSkipQuestionButtonProps;
@@ -0,0 +1,6 @@
1
+ import { ActionAnswerQuestion } from '../../components/CioQuiz/actions';
2
+ import { QuizAPIReducerState } from '../../components/CioQuiz/quizApiReducer';
3
+ import { QuizLocalReducerState } from '../../components/CioQuiz/quizLocalReducer';
4
+ import { QuizEventsReturn, OnQuizSkipQuestion } from '../../types';
5
+ declare const useQuizSkipClick: (quizApiState: QuizAPIReducerState, quizLocalState: QuizLocalReducerState, dispatchLocalState: React.Dispatch<ActionAnswerQuestion>, onQuizSkipQuestion?: OnQuizSkipQuestion) => QuizEventsReturn.NextQuestion;
6
+ export default useQuizSkipClick;
@@ -7,7 +7,7 @@ export declare const getMockQuestion: (type: `${QuestionTypes}`) => {
7
7
  title: string;
8
8
  description: string;
9
9
  cta_text: string;
10
- type: "reset" | "open" | "cover" | "single" | "multiple" | "next" | "back" | "hydrate" | "complete";
10
+ type: "reset" | "open" | "cover" | "single" | "multiple" | "next" | "skip" | "back" | "hydrate" | "complete";
11
11
  input_placeholder: string;
12
12
  };
13
13
  export declare const getMockQuestionWithImage: (type: QuestionTypes) => {
@@ -18,7 +18,7 @@ export declare const getMockQuestionWithImage: (type: QuestionTypes) => {
18
18
  title: string;
19
19
  description: string;
20
20
  cta_text: string;
21
- type: "reset" | "open" | "cover" | "single" | "multiple" | "next" | "back" | "hydrate" | "complete";
21
+ type: "reset" | "open" | "cover" | "single" | "multiple" | "next" | "skip" | "back" | "hydrate" | "complete";
22
22
  input_placeholder: string;
23
23
  };
24
24
  export declare const questionOptionsWithImages: {
@@ -34,8 +34,10 @@ export type QuestionWithAnswer = Question & {
34
34
  answer: AnswerInput;
35
35
  };
36
36
  export type OnQuizNextQuestion = (question: QuestionWithAnswer) => void;
37
+ export type OnQuizSkipQuestion = (question: QuestionWithAnswer) => void;
37
38
  export interface Callbacks {
38
39
  onQuizNextQuestion?: OnQuizNextQuestion;
40
+ onQuizSkipQuestion?: OnQuizSkipQuestion;
39
41
  }
40
42
  export interface IQuizProps {
41
43
  apiKey?: string;
@@ -65,7 +67,7 @@ export interface QuizReturnState {
65
67
  }
66
68
  export type AnswerInput = {
67
69
  type: InputQuestionsTypes;
68
- value: string | string[];
70
+ value: string | string[] | null;
69
71
  };
70
72
  export type AnswerInputState = {
71
73
  [key: string]: AnswerInput;
@@ -87,6 +89,7 @@ export type CurrentQuestion = NextQuestionResponse & {
87
89
  export declare namespace QuizEventsReturn {
88
90
  type QuizAnswerChanged = (payload?: string | string[]) => void;
89
91
  type NextQuestion = () => void;
92
+ type SkipQuestion = () => void;
90
93
  type PreviousQuestion = () => void;
91
94
  type ResetQuiz = () => void;
92
95
  type ResultClick = (result: QuizResultDataPartial, position: number) => void;
@@ -97,6 +100,7 @@ export declare namespace QuizEventsReturn {
97
100
  }
98
101
  export interface QuizEventsReturn {
99
102
  nextQuestion: QuizEventsReturn.NextQuestion;
103
+ skipQuestion: QuizEventsReturn.SkipQuestion;
100
104
  quizAnswerChanged: QuizEventsReturn.QuizAnswerChanged;
101
105
  previousQuestion: QuizEventsReturn.PreviousQuestion;
102
106
  resetQuiz: QuizEventsReturn.ResetQuiz;
@@ -121,6 +125,12 @@ export interface NextQuestionButtonProps {
121
125
  disabled?: boolean;
122
126
  onClick: React.MouseEventHandler<HTMLElement>;
123
127
  }
128
+ export interface SkipQuestionButtonProps {
129
+ className: string;
130
+ type: 'submit' | 'reset' | 'button' | undefined;
131
+ disabled?: boolean;
132
+ onClick: React.MouseEventHandler<HTMLElement>;
133
+ }
124
134
  export interface PreviousQuestionButtonProps {
125
135
  className: string;
126
136
  type: 'submit' | 'reset' | 'button' | undefined;
@@ -175,6 +185,7 @@ export type GetOpenTextInputProps = () => OpenTextInputProps;
175
185
  export type GetCoverQuestionProps = () => CoverQuestionProps;
176
186
  export type GetSelectInputProps = (option: QuestionOption) => SelectInputProps;
177
187
  export type GetNextQuestionButtonProps = () => NextQuestionButtonProps;
188
+ export type GetSkipQuestionButtonProps = () => SkipQuestionButtonProps;
178
189
  export type GetPreviousQuestionButtonProps = () => PreviousQuestionButtonProps;
179
190
  export type GetResetQuizButtonProps = (stylesType?: 'primary' | 'secondary') => ResetQuizButtonProps;
180
191
  export type GetHydrateQuizButtonProps = () => HydrateQuizButtonProps;
@@ -200,6 +211,7 @@ export interface UseQuizReturn {
200
211
  events: QuizEventsReturn;
201
212
  getOpenTextInputProps: GetOpenTextInputProps;
202
213
  getNextQuestionButtonProps: GetNextQuestionButtonProps;
214
+ getSkipQuestionButtonProps: GetSkipQuestionButtonProps;
203
215
  getPreviousQuestionButtonProps: GetPreviousQuestionButtonProps;
204
216
  getQuizImageProps: GetQuizImageProps;
205
217
  getSelectQuestionImageProps: GetSelectQuestionImageProps;
@@ -18,6 +18,7 @@ export declare const functionStrings: {
18
18
  onAddToFavoritesClick: string;
19
19
  onQuizResultsLoaded: string;
20
20
  onQuizNextQuestion: string;
21
+ onQuizSkipQuestion: string;
21
22
  cioJsClient: string;
22
23
  };
23
24
  export declare const stringifyWithDefaults: (obj: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-ui-quizzes",
3
- "version": "1.8.3",
3
+ "version": "1.9.0",
4
4
  "description": "Constructor.io Quizzes UI library for web applications",
5
5
  "author": "constructor.io",
6
6
  "license": "MIT",