@constructor-io/constructorio-ui-quizzes 1.10.4 → 1.11.1

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.
@@ -24,4 +24,6 @@ var QuizAPIActionTypes;
24
24
  QuizAPIActionTypes[QuizAPIActionTypes["SET_CURRENT_QUESTION"] = 3] = "SET_CURRENT_QUESTION";
25
25
  QuizAPIActionTypes[QuizAPIActionTypes["RESET_QUIZ"] = 4] = "RESET_QUIZ";
26
26
  QuizAPIActionTypes[QuizAPIActionTypes["SET_QUIZ_SHARED_RESULTS"] = 5] = "SET_QUIZ_SHARED_RESULTS";
27
+ QuizAPIActionTypes[QuizAPIActionTypes["SET_QUIZ_RESULTS_CONFIG"] = 6] = "SET_QUIZ_RESULTS_CONFIG";
28
+ QuizAPIActionTypes[QuizAPIActionTypes["SET_QUIZ_RESULTS_CONFIG_ERROR"] = 7] = "SET_QUIZ_RESULTS_CONFIG_ERROR";
27
29
  })(QuizAPIActionTypes = exports.QuizAPIActionTypes || (exports.QuizAPIActionTypes = {}));
@@ -8,7 +8,7 @@ exports.initialState = {
8
8
  quizRequestState: constants_1.RequestStates.Stale,
9
9
  };
10
10
  function apiReducer(state, action) {
11
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
11
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
12
12
  switch (action.type) {
13
13
  case actions_1.QuizAPIActionTypes.SET_IS_LOADING:
14
14
  return Object.assign(Object.assign({}, state), { quizRequestState: constants_1.RequestStates.Loading, quizCurrentQuestion: undefined, quizResults: undefined });
@@ -31,8 +31,14 @@ function apiReducer(state, action) {
31
31
  case actions_1.QuizAPIActionTypes.SET_QUIZ_SHARED_RESULTS: {
32
32
  return Object.assign(Object.assign({}, state), { quizRequestState: constants_1.RequestStates.Success, quizResults: (_m = action.payload) === null || _m === void 0 ? void 0 : _m.quizResults, quizCurrentQuestion: undefined, selectedOptionsWithAttributes: (_o = action.payload) === null || _o === void 0 ? void 0 : _o.quizResults.attributes });
33
33
  }
34
+ case actions_1.QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG: {
35
+ return Object.assign(Object.assign({}, state), { resultsConfig: (_p = action.payload) === null || _p === void 0 ? void 0 : _p.quizResultsConfig.results_config });
36
+ }
37
+ case actions_1.QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG_ERROR: {
38
+ return Object.assign(Object.assign({}, state), { resultsConfig: null });
39
+ }
34
40
  case actions_1.QuizAPIActionTypes.RESET_QUIZ:
35
- return exports.initialState;
41
+ return Object.assign({}, exports.initialState);
36
42
  default:
37
43
  return state;
38
44
  }
@@ -10,16 +10,44 @@ const ZeroResults_1 = tslib_1.__importDefault(require("../ZeroResults/ZeroResult
10
10
  const Results_1 = tslib_1.__importDefault(require("../Results/Results"));
11
11
  const Spinner_1 = tslib_1.__importDefault(require("../Spinner/Spinner"));
12
12
  function ResultContainer(props) {
13
- var _a, _b, _c;
13
+ var _a, _b, _c, _d, _e, _f, _g;
14
14
  const { resultCardOptions, onShare, resultsPageOptions } = props;
15
15
  const { state } = (0, react_1.useContext)(context_1.default);
16
16
  const { resultCardSalePriceKey, resultCardRegularPriceKey, resultCardRatingCountKey, resultCardRatingScoreKey, renderResultCardPriceDetails, } = resultCardOptions || {};
17
17
  const numberOfResults = (_c = (_b = (_a = state === null || state === void 0 ? void 0 : state.quiz.results) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.results) === null || _c === void 0 ? void 0 : _c.length;
18
+ const resultsConfig = state === null || state === void 0 ? void 0 : state.quiz.resultsConfig;
18
19
  const zeroResults = !numberOfResults;
19
- const resultsTitle = zeroResults ? '' : 'Here are your results';
20
+ let resultsTitle;
21
+ if (zeroResults) {
22
+ resultsTitle = '';
23
+ }
24
+ else if (resultsConfig === null) {
25
+ resultsTitle = 'Here are your results';
26
+ }
27
+ else if ((_d = resultsConfig === null || resultsConfig === void 0 ? void 0 : resultsConfig.desktop.title) === null || _d === void 0 ? void 0 : _d.is_active) {
28
+ resultsTitle = (_e = resultsConfig.desktop.title.text) !== null && _e !== void 0 ? _e : '';
29
+ }
30
+ else {
31
+ resultsTitle = '';
32
+ }
33
+ let resultsDescription;
34
+ if (zeroResults) {
35
+ resultsDescription = '';
36
+ }
37
+ else if (resultsConfig === null) {
38
+ resultsDescription = '';
39
+ }
40
+ else if ((_f = resultsConfig === null || resultsConfig === void 0 ? void 0 : resultsConfig.desktop.description) === null || _f === void 0 ? void 0 : _f.is_active) {
41
+ resultsDescription = (_g = resultsConfig.desktop.description.text) !== null && _g !== void 0 ? _g : '';
42
+ }
43
+ else {
44
+ resultsDescription = '';
45
+ }
20
46
  if (state === null || state === void 0 ? void 0 : state.quiz.results) {
21
47
  return (react_1.default.createElement("div", { className: 'cio-results-container' },
22
- react_1.default.createElement("h1", { className: 'cio-results-title' }, resultsTitle),
48
+ react_1.default.createElement("div", { className: 'cio-results-title-container' },
49
+ react_1.default.createElement("h1", { className: 'cio-results-title' }, resultsTitle),
50
+ react_1.default.createElement("p", { className: 'cio-results-description' }, resultsDescription)),
23
51
  react_1.default.createElement("div", { className: 'cio-results-filter-and-redo-container cio-results-button-group' },
24
52
  react_1.default.createElement(ResultFilters_1.default, { hasNoResults: zeroResults }),
25
53
  react_1.default.createElement("div", { className: 'cio-results-redo-and-share-button-group' },
@@ -9,6 +9,7 @@ const usePrimaryColorStyles_1 = tslib_1.__importDefault(require("./usePrimaryCol
9
9
  const useQuizEvents_1 = tslib_1.__importDefault(require("./useQuizEvents"));
10
10
  const useQuizState_1 = tslib_1.__importDefault(require("./useQuizState"));
11
11
  const useQuiz = (quizOptions) => {
12
+ var _a;
12
13
  const { apiKey, cioJsClient, primaryColor, resultsPageOptions } = quizOptions;
13
14
  // Log console errors for required parameters quizId
14
15
  (0, useConsoleErrors_1.default)(quizOptions);
@@ -39,6 +40,7 @@ const useQuiz = (quizOptions) => {
39
40
  currentQuestion: quizApiState.quizCurrentQuestion,
40
41
  results: quizApiState.quizResults,
41
42
  selectedOptionsWithAttributes: quizApiState.selectedOptionsWithAttributes,
43
+ resultsConfig: (_a = quizApiState.resultsConfig) !== null && _a !== void 0 ? _a : null,
42
44
  },
43
45
  quizSessionStorageState,
44
46
  }, events: Object.assign({}, quizEvents) }, propGetters), { primaryColorStyles });
@@ -38,6 +38,23 @@ const useQuizApiState = (quizOptions, cioClient, quizLocalState, skipToResults,
38
38
  });
39
39
  }
40
40
  });
41
+ const dispatchQuizResultsConfig = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
42
+ try {
43
+ const quizResultsConfig = yield (0, services_1.getQuizResultsConfig)(cioClient, quizId, {
44
+ quizVersionId: quizLocalState.quizVersionId,
45
+ });
46
+ dispatchApiState({
47
+ type: actions_1.QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG,
48
+ payload: { quizResultsConfig },
49
+ });
50
+ }
51
+ catch (error) {
52
+ dispatchApiState({
53
+ type: actions_1.QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG_ERROR,
54
+ payload: { quizResultsConfigError: null },
55
+ });
56
+ }
57
+ });
41
58
  const dispatchSharedQuizResults = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
42
59
  try {
43
60
  const quizResults = yield (0, services_1.getBrowseResultsForItemIds)(cioClient, queryItems);
@@ -52,6 +69,11 @@ const useQuizApiState = (quizOptions, cioClient, quizLocalState, skipToResults,
52
69
  });
53
70
  }
54
71
  });
72
+ (0, react_1.useEffect)(() => {
73
+ if (typeof quizApiState.resultsConfig === 'undefined')
74
+ dispatchQuizResultsConfig();
75
+ // eslint-disable-next-line react-hooks/exhaustive-deps
76
+ }, [quizApiState.resultsConfig]);
55
77
  (0, react_1.useEffect)(() => {
56
78
  (() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
57
79
  dispatchApiState({
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.trackQuizConversion = exports.trackQuizResultClick = exports.trackQuizResultsLoaded = exports.getBrowseResultsForItemIds = exports.getQuizResults = exports.getNextQuestion = exports.getCioClient = void 0;
3
+ exports.trackQuizConversion = exports.trackQuizResultClick = exports.trackQuizResultsLoaded = exports.getBrowseResultsForItemIds = exports.getQuizResultsConfig = exports.getQuizResults = exports.getNextQuestion = exports.getCioClient = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  /* eslint-disable @typescript-eslint/naming-convention */
6
6
  const constructorio_client_javascript_1 = tslib_1.__importDefault(require("@constructor-io/constructorio-client-javascript"));
@@ -20,6 +20,8 @@ const getNextQuestion = (cioClient, quizId, parameters) => cioClient === null ||
20
20
  exports.getNextQuestion = getNextQuestion;
21
21
  const getQuizResults = (cioClient, quizId, parameters) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return cioClient === null || cioClient === void 0 ? void 0 : cioClient.quizzes.getQuizResults(quizId, parameters); });
22
22
  exports.getQuizResults = getQuizResults;
23
+ const getQuizResultsConfig = (cioClient, quizId, parameters) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return cioClient === null || cioClient === void 0 ? void 0 : cioClient.quizzes.getQuizResultsConfig(quizId, parameters); });
24
+ exports.getQuizResultsConfig = getQuizResultsConfig;
23
25
  const getBrowseResultsForItemIds = (cioClient, itemIds) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return cioClient === null || cioClient === void 0 ? void 0 : cioClient.browse.getBrowseResultsForItemIds(itemIds); });
24
26
  exports.getBrowseResultsForItemIds = getBrowseResultsForItemIds;
25
27
  // Tracking requests
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '1.10.4';
3
+ exports.default = '1.11.1';
@@ -21,4 +21,6 @@ export var QuizAPIActionTypes;
21
21
  QuizAPIActionTypes[QuizAPIActionTypes["SET_CURRENT_QUESTION"] = 3] = "SET_CURRENT_QUESTION";
22
22
  QuizAPIActionTypes[QuizAPIActionTypes["RESET_QUIZ"] = 4] = "RESET_QUIZ";
23
23
  QuizAPIActionTypes[QuizAPIActionTypes["SET_QUIZ_SHARED_RESULTS"] = 5] = "SET_QUIZ_SHARED_RESULTS";
24
+ QuizAPIActionTypes[QuizAPIActionTypes["SET_QUIZ_RESULTS_CONFIG"] = 6] = "SET_QUIZ_RESULTS_CONFIG";
25
+ QuizAPIActionTypes[QuizAPIActionTypes["SET_QUIZ_RESULTS_CONFIG_ERROR"] = 7] = "SET_QUIZ_RESULTS_CONFIG_ERROR";
24
26
  })(QuizAPIActionTypes || (QuizAPIActionTypes = {}));
@@ -63,8 +63,20 @@ export default function apiReducer(state, action) {
63
63
  selectedOptionsWithAttributes: action.payload?.quizResults.attributes,
64
64
  };
65
65
  }
66
+ case QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG: {
67
+ return {
68
+ ...state,
69
+ resultsConfig: action.payload?.quizResultsConfig.results_config,
70
+ };
71
+ }
72
+ case QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG_ERROR: {
73
+ return {
74
+ ...state,
75
+ resultsConfig: null,
76
+ };
77
+ }
66
78
  case QuizAPIActionTypes.RESET_QUIZ:
67
- return initialState;
79
+ return { ...initialState };
68
80
  default:
69
81
  return state;
70
82
  }
@@ -11,11 +11,39 @@ export default function ResultContainer(props) {
11
11
  const { state } = useContext(QuizContext);
12
12
  const { resultCardSalePriceKey, resultCardRegularPriceKey, resultCardRatingCountKey, resultCardRatingScoreKey, renderResultCardPriceDetails, } = resultCardOptions || {};
13
13
  const numberOfResults = state?.quiz.results?.response?.results?.length;
14
+ const resultsConfig = state?.quiz.resultsConfig;
14
15
  const zeroResults = !numberOfResults;
15
- const resultsTitle = zeroResults ? '' : 'Here are your results';
16
+ let resultsTitle;
17
+ if (zeroResults) {
18
+ resultsTitle = '';
19
+ }
20
+ else if (resultsConfig === null) {
21
+ resultsTitle = 'Here are your results';
22
+ }
23
+ else if (resultsConfig?.desktop.title?.is_active) {
24
+ resultsTitle = resultsConfig.desktop.title.text ?? '';
25
+ }
26
+ else {
27
+ resultsTitle = '';
28
+ }
29
+ let resultsDescription;
30
+ if (zeroResults) {
31
+ resultsDescription = '';
32
+ }
33
+ else if (resultsConfig === null) {
34
+ resultsDescription = '';
35
+ }
36
+ else if (resultsConfig?.desktop.description?.is_active) {
37
+ resultsDescription = resultsConfig.desktop.description.text ?? '';
38
+ }
39
+ else {
40
+ resultsDescription = '';
41
+ }
16
42
  if (state?.quiz.results) {
17
43
  return (React.createElement("div", { className: 'cio-results-container' },
18
- React.createElement("h1", { className: 'cio-results-title' }, resultsTitle),
44
+ React.createElement("div", { className: 'cio-results-title-container' },
45
+ React.createElement("h1", { className: 'cio-results-title' }, resultsTitle),
46
+ React.createElement("p", { className: 'cio-results-description' }, resultsDescription)),
19
47
  React.createElement("div", { className: 'cio-results-filter-and-redo-container cio-results-button-group' },
20
48
  React.createElement(ResultFilters, { hasNoResults: zeroResults }),
21
49
  React.createElement("div", { className: 'cio-results-redo-and-share-button-group' },
@@ -38,6 +38,7 @@ const useQuiz = (quizOptions) => {
38
38
  currentQuestion: quizApiState.quizCurrentQuestion,
39
39
  results: quizApiState.quizResults,
40
40
  selectedOptionsWithAttributes: quizApiState.selectedOptionsWithAttributes,
41
+ resultsConfig: quizApiState.resultsConfig ?? null,
41
42
  },
42
43
  quizSessionStorageState,
43
44
  },
@@ -1,7 +1,7 @@
1
1
  import { useEffect, useReducer } from 'react';
2
2
  import { QuestionTypes, QuizAPIActionTypes, } from '../../components/CioQuiz/actions';
3
3
  import apiReducer, { initialState, } from '../../components/CioQuiz/quizApiReducer';
4
- import { getNextQuestion, getQuizResults, getBrowseResultsForItemIds } from '../../services';
4
+ import { getNextQuestion, getQuizResults, getBrowseResultsForItemIds, getQuizResultsConfig, } from '../../services';
5
5
  import useQueryParams from '../useQueryParams';
6
6
  const useQuizApiState = (quizOptions, cioClient, quizLocalState, skipToResults, dispatchLocalState
7
7
  // eslint-disable-next-line max-params
@@ -35,6 +35,23 @@ const useQuizApiState = (quizOptions, cioClient, quizLocalState, skipToResults,
35
35
  });
36
36
  }
37
37
  };
38
+ const dispatchQuizResultsConfig = async () => {
39
+ try {
40
+ const quizResultsConfig = await getQuizResultsConfig(cioClient, quizId, {
41
+ quizVersionId: quizLocalState.quizVersionId,
42
+ });
43
+ dispatchApiState({
44
+ type: QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG,
45
+ payload: { quizResultsConfig },
46
+ });
47
+ }
48
+ catch (error) {
49
+ dispatchApiState({
50
+ type: QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG_ERROR,
51
+ payload: { quizResultsConfigError: null },
52
+ });
53
+ }
54
+ };
38
55
  const dispatchSharedQuizResults = async () => {
39
56
  try {
40
57
  const quizResults = await getBrowseResultsForItemIds(cioClient, queryItems);
@@ -49,6 +66,11 @@ const useQuizApiState = (quizOptions, cioClient, quizLocalState, skipToResults,
49
66
  });
50
67
  }
51
68
  };
69
+ useEffect(() => {
70
+ if (typeof quizApiState.resultsConfig === 'undefined')
71
+ dispatchQuizResultsConfig();
72
+ // eslint-disable-next-line react-hooks/exhaustive-deps
73
+ }, [quizApiState.resultsConfig]);
52
74
  useEffect(() => {
53
75
  (async () => {
54
76
  dispatchApiState({
@@ -13,6 +13,7 @@ export const getCioClient = (apiKey) => {
13
13
  };
14
14
  export const getNextQuestion = (cioClient, quizId, parameters) => cioClient?.quizzes.getQuizNextQuestion(quizId, parameters);
15
15
  export const getQuizResults = async (cioClient, quizId, parameters) => cioClient?.quizzes.getQuizResults(quizId, parameters);
16
+ export const getQuizResultsConfig = async (cioClient, quizId, parameters) => cioClient?.quizzes.getQuizResultsConfig(quizId, parameters);
16
17
  export const getBrowseResultsForItemIds = async (cioClient, itemIds) => cioClient?.browse.getBrowseResultsForItemIds(itemIds);
17
18
  // Tracking requests
18
19
  export const trackQuizResultsLoaded = (cioClient, quizResults) => {
@@ -1 +1 @@
1
- export default '1.10.4';
1
+ export default '1.11.1';
package/lib/styles.css CHANGED
@@ -471,8 +471,7 @@
471
471
  margin-left: auto;
472
472
  }
473
473
  .cio-quiz .cio-results-title {
474
- margin-top: 0;
475
- margin-bottom: 1rem;
474
+ margin: 0;
476
475
  color: var(--gray-dust-500);
477
476
  }
478
477
  .cio-quiz .cio-results-filter-container {
@@ -1086,3 +1085,16 @@
1086
1085
  max-width: 138px;
1087
1086
  }
1088
1087
  }
1088
+
1089
+ .cio-quiz .cio-results-description {
1090
+ margin: 0;
1091
+ color: var(--gray-dust-500);
1092
+ font-weight: bold;
1093
+ }
1094
+
1095
+ .cio-quiz .cio-results-title-container {
1096
+ margin-bottom: 1rem;
1097
+ display: flex;
1098
+ flex-direction: column;
1099
+ gap: 0.25rem;
1100
+ }
@@ -1,4 +1,4 @@
1
- import { CurrentQuestion, NextQuestionResponse, QuestionOption, QuizResultsResponse, QuizSharedResultsData } from '../../types';
1
+ import { CurrentQuestion, NextQuestionResponse, QuestionOption, QuizResultsResponse, QuizSharedResultsData, QuizResultsConfigResponse } from '../../types';
2
2
  import type { QuizLocalReducerState } from './quizLocalReducer';
3
3
  export declare enum QuestionTypes {
4
4
  OpenText = "open",
@@ -31,7 +31,9 @@ export declare enum QuizAPIActionTypes {
31
31
  SET_QUIZ_RESULTS = 2,
32
32
  SET_CURRENT_QUESTION = 3,
33
33
  RESET_QUIZ = 4,
34
- SET_QUIZ_SHARED_RESULTS = 5
34
+ SET_QUIZ_SHARED_RESULTS = 5,
35
+ SET_QUIZ_RESULTS_CONFIG = 6,
36
+ SET_QUIZ_RESULTS_CONFIG_ERROR = 7
35
37
  }
36
38
  export type ActionSetIsLoading = Action<QuizAPIActionTypes.SET_IS_LOADING>;
37
39
  export type ActionSetIsError = Action<QuizAPIActionTypes.SET_IS_ERROR>;
@@ -47,5 +49,8 @@ export type ActionSetCurrentQuestion = Action<QuizAPIActionTypes.SET_CURRENT_QUE
47
49
  quizVersionId?: string;
48
50
  }>;
49
51
  export type ActionResetQuiz = Action<QuizAPIActionTypes.RESET_QUIZ>;
50
- export type ActionQuizAPI = ActionSetIsLoading | ActionSetIsError | ActionSetQuizResults | ActionSetCurrentQuestion | ActionResetQuiz | ActionSetQuizSharedResults;
52
+ export type ActionSetQuizResultsConfig = Action<QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG, {
53
+ quizResultsConfig: QuizResultsConfigResponse;
54
+ }> | Action<QuizAPIActionTypes.SET_QUIZ_RESULTS_CONFIG_ERROR>;
55
+ export type ActionQuizAPI = ActionSetIsLoading | ActionSetIsError | ActionSetQuizResults | ActionSetCurrentQuestion | ActionResetQuiz | ActionSetQuizSharedResults | ActionSetQuizResultsConfig;
51
56
  export {};
@@ -1,5 +1,5 @@
1
1
  import { RequestStates } from '../../constants';
2
- import { CurrentQuestion, NextQuestionResponse, QuizResultsResponse, QuizSharedResultsData } from '../../types';
2
+ import { CurrentQuestion, NextQuestionResponse, QuizResultsResponse, QuizSharedResultsData, QuizResultsConfig } from '../../types';
3
3
  import { ActionQuizAPI } from './actions';
4
4
  export type QuizAPIReducerState = {
5
5
  quizRequestState: RequestStates;
@@ -7,6 +7,7 @@ export type QuizAPIReducerState = {
7
7
  quizFirstQuestion?: NextQuestionResponse;
8
8
  quizResults?: QuizResultsResponse | QuizSharedResultsData;
9
9
  selectedOptionsWithAttributes?: string[];
10
+ resultsConfig?: QuizResultsConfig | null;
10
11
  };
11
12
  export declare const initialState: QuizAPIReducerState;
12
13
  export default function apiReducer(state: QuizAPIReducerState, action: ActionQuizAPI): QuizAPIReducerState;
@@ -1,8 +1,9 @@
1
1
  import ConstructorIOClient, { type GetBrowseResultsForItemIdsResponse } from '@constructor-io/constructorio-client-javascript';
2
- import { QuizzesParameters, QuizzesResultsParameters, NextQuestionResponse, QuizResultsResponse, QuizResultDataPartial, QuizSharedResultsData } from '../types';
2
+ import { QuizzesParameters, QuizzesResultsParameters, NextQuestionResponse, QuizResultsResponse, QuizResultDataPartial, QuizSharedResultsData, QuizResultsConfigResponse } from '../types';
3
3
  export declare const getCioClient: (apiKey?: string) => ConstructorIOClient | undefined;
4
4
  export declare const getNextQuestion: (cioClient: ConstructorIOClient, quizId: string, parameters: QuizzesParameters) => Promise<NextQuestionResponse>;
5
5
  export declare const getQuizResults: (cioClient: ConstructorIOClient, quizId: string, parameters: QuizzesResultsParameters) => Promise<QuizResultsResponse>;
6
+ export declare const getQuizResultsConfig: (cioClient: ConstructorIOClient, quizId: string, parameters: Pick<QuizzesParameters, 'quizVersionId'>) => Promise<QuizResultsConfigResponse>;
6
7
  export declare const getBrowseResultsForItemIds: (cioClient: ConstructorIOClient, itemIds: string[]) => Promise<GetBrowseResultsForItemIdsResponse>;
7
8
  export declare const trackQuizResultsLoaded: (cioClient: ConstructorIOClient, quizResults: QuizResultsResponse | QuizSharedResultsData) => void;
8
9
  export declare const trackQuizResultClick: (cioClient: ConstructorIOClient, quizResults: QuizResultsResponse | QuizSharedResultsData, result: QuizResultDataPartial, position: number) => void;
@@ -1,9 +1,9 @@
1
1
  import { CSSProperties } from 'react';
2
- import { QuizResultData, NextQuestionResponse, QuizResultsResponse, QuestionOption, Question } from '@constructor-io/constructorio-client-javascript/lib/types';
2
+ import { QuizResultData, NextQuestionResponse, QuizResultsResponse, QuestionOption, Question, QuizResultsConfig } from '@constructor-io/constructorio-client-javascript/lib/types';
3
3
  import ConstructorIOClient, { GetBrowseResultsForItemIdsResponse } from '@constructor-io/constructorio-client-javascript';
4
4
  import { RequestStates } from './constants';
5
5
  import { QuestionTypes } from './components/CioQuiz/actions';
6
- export type { QuestionOption, QuestionImages, Question, NextQuestionResponse, QuizResultsResponse, BrowseResultData, BrowseRequestType, QuizzesParameters, QuizzesResultsParameters, } from '@constructor-io/constructorio-client-javascript/lib/types';
6
+ export type { QuestionOption, QuestionImages, Question, NextQuestionResponse, QuizResultsResponse, QuizResultsConfigResponse, QuizResultsConfig, BrowseResultData, BrowseRequestType, QuizzesParameters, QuizzesResultsParameters, } from '@constructor-io/constructorio-client-javascript/lib/types';
7
7
  export type QuizResultDataPartial = Partial<QuizResultData>;
8
8
  export type QuizEmailResults = {
9
9
  email: string;
@@ -74,6 +74,7 @@ export interface QuizReturnState {
74
74
  currentQuestion?: CurrentQuestion | undefined;
75
75
  results?: QuizResultsResponse | QuizSharedResultsData | undefined;
76
76
  selectedOptionsWithAttributes?: string[];
77
+ resultsConfig: QuizResultsConfig | null;
77
78
  };
78
79
  quizSessionStorageState: QuizSessionStorageState;
79
80
  }
@@ -1,2 +1,2 @@
1
- declare const _default: "1.10.4";
1
+ declare const _default: "1.11.1";
2
2
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-ui-quizzes",
3
- "version": "1.10.4",
3
+ "version": "1.11.1",
4
4
  "description": "Constructor.io Quizzes UI library for web applications",
5
5
  "author": "constructor.io",
6
6
  "license": "MIT",
@@ -42,7 +42,6 @@
42
42
  "types": "lib/types/index.d.ts",
43
43
  "scripts": {
44
44
  "storybook-docs-dev": "storybook dev --docs -p 6007",
45
- "build-storybook-docs": "storybook build --docs",
46
45
  "lint": "eslint src --ext js,ts,jsx,tsx",
47
46
  "check-types": "npx tsc --noEmit",
48
47
  "copy-styles": "cp src/styles.css lib/styles.css",
@@ -52,16 +51,17 @@
52
51
  "test-storybook": "test-storybook",
53
52
  "test-storybook:watch": "test-storybook --watch",
54
53
  "test-storybook:ci": "start-server-and-test storybook:ci http://localhost:6006 test-storybook",
55
- "build-storybook": "storybook build -o 'docs'",
54
+ "build-storybook": "storybook build",
55
+ "build-storybook-docs": "storybook build --docs -o 'docs'",
56
56
  "serve-built-storybook": "npx http-server docs",
57
57
  "verify-node-version": "chmod +x ./scripts/verify-node-version.sh && ./scripts/verify-node-version.sh",
58
58
  "preversion": "node ./src/generateVersion.js",
59
- "version": "npm run preversion && npm run verify-node-version && npm run build-storybook && git add -u ./docs && git add ./docs/* && git add ./src/version.ts && npm run compile",
59
+ "version": "npm run preversion && npm run verify-node-version && npm run build-storybook-docs && git add -u ./docs && git add ./docs/* && git add ./src/version.ts && npm run compile",
60
60
  "compile": "node ./src/generateVersion.js && rm -rf lib && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json && npm run copy-styles && vite build",
61
61
  "check-license": "license-checker --production --onlyAllow 'Apache-2.0;BSD-3-Clause;MIT;0BSD;BSD-2-Clause' --excludePackages 'picocolors@1.0.0'"
62
62
  },
63
63
  "peerDependencies": {
64
- "@constructor-io/constructorio-client-javascript": "^2.36.4",
64
+ "@constructor-io/constructorio-client-javascript": "^2.39.0",
65
65
  "react": ">=16.12.0",
66
66
  "react-dom": ">=16.12.0",
67
67
  "tslib": "^2.4.0"