{"version":3,"file":"static/js/application.async.landing~d2c28239.3a9cd239.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign-react/fonts-selector/src/assets/index.js","../../../node_modules/@bingads-webui-campaign-react/fonts-selector/src/constants/font-families.js","../../../node_modules/@bingads-webui-campaign-react/fonts-selector/src/constants/font-weights.js","../../../node_modules/@bingads-webui-campaign-react/fonts-selector/src/components/fonts-family-selector.js","../../../node_modules/@bingads-webui-campaign-react/fonts-selector/src/components/fonts-weight-selector.js","../../../node_modules/@bingads-webui-campaign-react/give-feedback/src/give-feedback.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/index.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/config/constants.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/goal-scope-selector.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/source-goal-selector.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/selector-control.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/config/status-config.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/components/multi-selected-item.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/goal-selector.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/style/styles.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector/src/view.js","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/data.ts","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/table-view-section-styles.ts","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/constants.ts","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/components/tracking-status-popover-styles.ts","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/components/navigation-popup.tsx","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/components/tracking-status-popover.tsx","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/utils.ts","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/components/empty-state-result-styles.ts","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/components/empty-state-result.tsx","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/components/header-control-styles.ts","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/components/header-control.tsx","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/table-view-section.tsx","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/goal-selector.tsx","../../../node_modules/@bingads-webui-campaign-react/goal-selector-v3/src/use-goal-selector-state.ts"],"sourcesContent":["import ArialSVGIcon from './arial-icon.svg';\r\nimport BahnschriftSVGIcon from './bahnschrift-icon.svg';\r\nimport CalibriSVGIcon from './calibri-icon.svg';\r\nimport CenturyGothicSVGIcon from './century-gothic-icon.svg';\r\nimport ComicSansMSSVGIcon from './comic-sans-ms-icon.svg';\r\nimport ConsolasSVGIcon from './consolas-icon.svg';\r\nimport GaramondSVGIcon from './garamond-icon.svg';\r\nimport GeorgiaSVGIcon from './georgia-icon.svg';\r\nimport GillSansMTSVGIcon from './gill-sans-mt-icon.svg';\r\nimport ImpactSVGIcon from './impact-icon.svg';\r\nimport LucidaSansSVGIcon from './lucida-sans-icon.svg';\r\nimport SegoeUISVGIcon from './segoe-ui-icon.svg';\r\nimport TahomaSVGIcon from './tahoma-icon.svg';\r\nimport TimesNewRomanSVGIcon from './times-new-roman-icon.svg';\r\nimport TrebuchetMSSVGIcon from './trebuchet-ms-icon.svg';\r\nimport VerdanaSVGIcon from './verdana-icon.svg';\r\n\r\nexport const SupportedFontsSVGIcons = {\r\n Arial: ArialSVGIcon,\r\n Bahnschrift: BahnschriftSVGIcon,\r\n Calibri: CalibriSVGIcon,\r\n 'Century Gothic': CenturyGothicSVGIcon,\r\n 'Comic Sans MS': ComicSansMSSVGIcon,\r\n Consolas: ConsolasSVGIcon,\r\n Garamond: GaramondSVGIcon,\r\n Georgia: GeorgiaSVGIcon,\r\n 'Gill Sans MT': GillSansMTSVGIcon,\r\n Impact: ImpactSVGIcon,\r\n 'Lucida Sans': LucidaSansSVGIcon,\r\n 'Segoe UI': SegoeUISVGIcon,\r\n Tahoma: TahomaSVGIcon,\r\n 'Times New Roman': TimesNewRomanSVGIcon,\r\n 'Trebuchet MS': TrebuchetMSSVGIcon,\r\n Verdana: VerdanaSVGIcon,\r\n};\r\n","import { SupportedFontsSVGIcons } from '../assets';\r\n\r\nexport const fontFamilies = [\r\n { key: 'Arial', text: 'Arial', svg: SupportedFontsSVGIcons.Arial },\r\n {\r\n key: 'Bahnschrift',\r\n text: 'Bahnschrift',\r\n svg: SupportedFontsSVGIcons.Bahnschrift,\r\n },\r\n { key: 'Calibri', text: 'Calibri', svg: SupportedFontsSVGIcons.Calibri },\r\n {\r\n key: 'Century Gothic',\r\n text: 'Century Gothic',\r\n svg: SupportedFontsSVGIcons['Century Gothic'],\r\n },\r\n {\r\n key: 'Comic Sans MS',\r\n text: 'Comic Sans MS',\r\n svg: SupportedFontsSVGIcons['Comic Sans MS'],\r\n },\r\n { key: 'Consolas', text: 'Consolas', svg: SupportedFontsSVGIcons.Consolas },\r\n { key: 'Garamond', text: 'Garamond', svg: SupportedFontsSVGIcons.Garamond },\r\n { key: 'Georgia', text: 'Georgia', svg: SupportedFontsSVGIcons.Georgia },\r\n {\r\n key: 'Gill Sans MT',\r\n text: 'Gill Sans MT',\r\n svg: SupportedFontsSVGIcons['Gill Sans MT'],\r\n },\r\n { key: 'Impact', text: 'Impact', svg: SupportedFontsSVGIcons.Impact },\r\n {\r\n key: 'Lucida Sans',\r\n text: 'Lucida Sans',\r\n svg: SupportedFontsSVGIcons['Lucida Sans'],\r\n },\r\n {\r\n key: 'Segoe UI',\r\n text: 'Segoe UI',\r\n svg: SupportedFontsSVGIcons['Segoe UI'],\r\n },\r\n { key: 'Tahoma', text: 'Tahoma', svg: SupportedFontsSVGIcons.Tahoma },\r\n {\r\n key: 'Times New Roman',\r\n text: 'Times New Roman',\r\n svg: SupportedFontsSVGIcons['Times New Roman'],\r\n },\r\n {\r\n key: 'Trebuchet MS',\r\n text: 'Trebuchet MS',\r\n svg: SupportedFontsSVGIcons['Trebuchet MS'],\r\n },\r\n { key: 'Verdana', text: 'Verdana', svg: SupportedFontsSVGIcons.Verdana },\r\n];\r\n","export const fontWeights = [\r\n { key: 'Thin', text: _TL_('Thin') },\r\n { key: 'ExtraLight', text: _TL_('Extra light') },\r\n { key: 'Light', text: _TL_('Light') },\r\n { key: 'Normal', text: _TL_('Normal') },\r\n { key: 'Medium', text: _TL_('Medium') },\r\n { key: 'SemiBold', text: _TL_('Semi-bold') },\r\n { key: 'Bold', text: _TL_('Bold') },\r\n { key: 'ExtraBold', text: _TL_('Extra-bold') },\r\n { key: 'Black', text: _TL_('Black') },\r\n];\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes, { func } from 'prop-types';\r\nimport {\r\n Body1Stronger,\r\n Combobox,\r\n makeStyles,\r\n mergeClasses,\r\n Option,\r\n tokens,\r\n} from '@fluentui/react-components';\r\n\r\nimport { fontFamilies } from '../constants';\r\n\r\nconst useFontsSelectorStyles = makeStyles({\r\n fontSelectWrapper: {\r\n position: 'relative',\r\n marginTop: tokens.spacingVerticalS,\r\n },\r\n fontSelect: {\r\n minWidth: '280px',\r\n width: '100%',\r\n '& > input::selection': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n fontSelectValue: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '12px',\r\n width: 'auto',\r\n height: '20px',\r\n zIndex: 1,\r\n transform: 'translateY(-50%)',\r\n pointerEvents: 'none',\r\n },\r\n fontSelectInputVisible: {\r\n '& > input': {\r\n color: 'inherit',\r\n },\r\n },\r\n fontSelectInputTransparent: {\r\n '& > input': {\r\n fontSize: '0',\r\n color: 'transparent',\r\n },\r\n },\r\n});\r\n\r\nexport const FontsFamilySelector = ({\r\n id,\r\n i18n,\r\n label,\r\n value,\r\n onChange,\r\n className,\r\n inlinePopup,\r\n placeholder,\r\n selectClassName,\r\n overrideFontFamilies,\r\n}) => {\r\n const classes = useFontsSelectorStyles();\r\n const fontSelectId = `${label}-font-select`;\r\n\r\n const fontFamilyOptions = overrideFontFamilies || fontFamilies;\r\n\r\n const selectedFontSvg = useMemo(() => {\r\n const selectedFont =\r\n fontFamilyOptions.find(family => family.key === value) || null;\r\n return selectedFont ? selectedFont.svg : null;\r\n }, [value, fontFamilyOptions]);\r\n\r\n const handleFontChange = (_ev, data) => {\r\n if (data && data.optionValue) {\r\n onChange(data.optionValue);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {label && {label}}\r\n
\r\n {selectedFontSvg ? (\r\n \r\n ) : null}\r\n \r\n {fontFamilyOptions.map(family => (\r\n \r\n {family.text}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nFontsFamilySelector.propTypes = {\r\n i18n: PropTypes.shape({ getString: func }).isRequired,\r\n id: PropTypes.string.isRequired,\r\n label: PropTypes.string,\r\n className: PropTypes.string,\r\n value: PropTypes.string.isRequired,\r\n selectClassName: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n overrideFontFamilies: PropTypes.arrayOf({\r\n key: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n svg: PropTypes.string.isRequired,\r\n }),\r\n inlinePopup: PropTypes.bool,\r\n placeholder: PropTypes.string,\r\n};\r\n\r\nFontsFamilySelector.defaultProps = {\r\n label: '',\r\n className: '',\r\n selectClassName: '',\r\n overrideFontFamilies: null,\r\n inlinePopup: false,\r\n placeholder: null,\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes, { func } from 'prop-types';\r\nimport {\r\n Body1Stronger,\r\n Combobox,\r\n makeStyles,\r\n mergeClasses,\r\n Option,\r\n tokens,\r\n} from '@fluentui/react-components';\r\n\r\nimport { fontWeights } from '../constants';\r\n\r\nconst useFontsSelectorStyles = makeStyles({\r\n fontWeightSelectWrapper: {\r\n position: 'relative',\r\n },\r\n fontWeightSelect: {\r\n minWidth: '160px',\r\n width: '100%',\r\n marginTop: tokens.spacingVerticalS,\r\n '& > input::selection': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n});\r\n\r\nexport const FontsWeightSelector = ({\r\n id,\r\n i18n,\r\n label,\r\n value,\r\n onChange,\r\n className,\r\n inlinePopup,\r\n placeholder,\r\n selectClassName,\r\n overrideFontWeights,\r\n}) => {\r\n const classes = useFontsSelectorStyles();\r\n const fontWeightSelectId = `${label}-font-weight-select`;\r\n\r\n const fontWeightOptions = overrideFontWeights || fontWeights;\r\n\r\n const selectedFontWeightText = useMemo(() => {\r\n const selectedFontWeight =\r\n fontWeightOptions.find(weight => weight.key === value) || null;\r\n return selectedFontWeight ? selectedFontWeight.text : '';\r\n }, [value, fontWeightOptions]);\r\n\r\n const handleWeightChange = (_ev, data) => {\r\n if (data && data.optionValue) {\r\n onChange(data.optionValue);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {label && {label}}\r\n
\r\n \r\n {fontWeightOptions.map(weight => (\r\n \r\n {i18n.getString(weight.text)}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nFontsWeightSelector.propTypes = {\r\n i18n: PropTypes.shape({ getString: func }).isRequired,\r\n id: PropTypes.string.isRequired,\r\n label: PropTypes.string,\r\n value: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n overrideFontWeights: PropTypes.arrayOf({\r\n key: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n }),\r\n className: PropTypes.string,\r\n selectClassName: PropTypes.string,\r\n inlinePopup: PropTypes.bool,\r\n placeholder: PropTypes.string,\r\n};\r\n\r\nFontsWeightSelector.defaultProps = {\r\n label: '',\r\n className: '',\r\n placeholder: null,\r\n selectClassName: '',\r\n inlinePopup: false,\r\n overrideFontWeights: null,\r\n};\r\n","import classnames from 'classnames';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { addTrigger } from '@bingads-webui-campaign/user-voice';\r\n\r\nexport class GiveFeedback extends React.PureComponent {\r\n componentDidMount() {\r\n addTrigger({\r\n triggerId: this.aEl,\r\n featureName: this.props.featureName,\r\n areaName: this.props.areaName,\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n {\r\n this.aEl = el;\r\n }}\r\n >\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nGiveFeedback.propTypes = {\r\n areaName: PropTypes.string.isRequired,\r\n children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\r\n featureName: PropTypes.string.isRequired,\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useCallback } from 'react';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { Goal } from '@bingads-webui/campaign-odata-schemas';\r\nimport { CampaignGoalLevelEditor } from './goal-scope-selector';\r\n\r\nconst whitelistedGoalProperties = _.keys(Goal.properties);\r\nconst cleanGoal = goal => _.pick(goal, '@odata.type', ...whitelistedGoalProperties);\r\n\r\nexport const ConversionGoalSelector = (props) => {\r\n const {\r\n isSelectorEnabled,\r\n checkSelected,\r\n pageSize,\r\n ariaLabel,\r\n searchBoxAriaLabel,\r\n isMultiMode,\r\n showTrackingStatusIcon,\r\n isHideSaveBar,\r\n i18n,\r\n // TODO need to pass this function in if it's in setting mode\r\n turnOnRemoveAlert,\r\n $dataRange,\r\n cid,\r\n aid,\r\n goalSelection,\r\n campaignConversionGoal,\r\n onChange,\r\n activityLogger,\r\n subTextOptions,\r\n } = props;\r\n\r\n const onSelectDone = useCallback((selection) => {\r\n const cleanedUpSelection = selection.map(cleanGoal);\r\n onChange({\r\n goalSelection: cleanedUpSelection,\r\n });\r\n }, [onChange]);\r\n\r\n const onScopeChange = useCallback((scope) => {\r\n onChange({\r\n goalScopeSelection: scope,\r\n });\r\n }, [onChange]);\r\n\r\n const fetch = useCallback(({ query, pageNumber }) => {\r\n const formatDate = date => i18n.formatDate(date, { raw: 'M/d/yyyy' });\r\n\r\n return $dataRange.then((dateRange) => {\r\n const select =['Id', 'Name', 'GoalCategory', 'Status'];\r\n if (showTrackingStatusIcon) {\r\n select.push('TrackingStatus', 'Type');\r\n }\r\n const dataQuery = {\r\n top: pageSize,\r\n skip: pageNumber * pageSize,\r\n startdate: formatDate(dateRange.start),\r\n enddate: formatDate(dateRange.end),\r\n filter: '(Status eq Enum.GoalStatus\\'Active\\') and ((GoalCategory eq Enum.GoalCategory\\'InStoreVisit\\') eq false)',\r\n count: true,\r\n select,\r\n };\r\n\r\n if (query || query === '') {\r\n dataQuery.filter = {\r\n where: `${dataQuery.filter} and contains(tolower(Name), tolower('${query}'))`,\r\n };\r\n }\r\n\r\n return edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Goals\r\n .get({\r\n ...dataQuery,\r\n }).toPromise().then(({\r\n value: cmps,\r\n '@odata.count': totalCount,\r\n }) => {\r\n const items = _.compact(_.map(cmps, (cmp) => {\r\n const baseItem = {\r\n Id: cmp.Id,\r\n Name: cmp.Name,\r\n GoalCategory: cmp.GoalCategory,\r\n Status: cmp.Status,\r\n };\r\n\r\n // Add TrackingStatus if the condition is met\r\n if (showTrackingStatusIcon) {\r\n baseItem.TrackingStatus = cmp.TrackingStatus;\r\n baseItem.Type = cmp.Type;\r\n }\r\n return baseItem;\r\n }));\r\n\r\n return {\r\n items,\r\n totalCount,\r\n };\r\n })\r\n .catch(() =>\r\n ({\r\n items: [],\r\n totalCount: 0,\r\n }));\r\n });\r\n }, [$dataRange, aid, cid, i18n, pageSize]);\r\n return isSelectorEnabled ?\r\n (\r\n \r\n ) : (
);\r\n};\r\n\r\nConversionGoalSelector.propTypes = {\r\n /**\r\n * item count per page\r\n */\r\n pageSize: PropTypes.number,\r\n /**\r\n * i18n for localization\r\n */\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n formatDate: PropTypes.func.isRequired,\r\n }).isRequired,\r\n /**\r\n * Used to check whether an item is selected.\r\n *\r\n * @param {Object} selectedItem - selected item\r\n * @param {Object} item - single data in the list\r\n * @return {boolean} - whether current item is selected\r\n */\r\n checkSelected: PropTypes.func,\r\n /**\r\n * judge whhether campaign selector is used as adgroup selector\r\n */\r\n campaign: PropTypes.shape({\r\n CampaignConversionGoal: PropTypes.shape({}),\r\n Id: PropTypes.number,\r\n }),\r\n /**\r\n * the campaign adgroup selector mode: multi or single\r\n */\r\n isMultiMode: PropTypes.bool,\r\n /**\r\n * should show tracking status icon\r\n */\r\n showTrackingStatusIcon: PropTypes.bool,\r\n /**\r\n * aria-label for campaign list selector\r\n */\r\n ariaLabel: PropTypes.string,\r\n /**\r\n * aria label of search box input\r\n */\r\n searchBoxAriaLabel: PropTypes.string,\r\n /**\r\n * customize OriginCampaignSelector\r\n */\r\n sourceGoalSelectorOptions: PropTypes.shape({}),\r\n /**\r\n * message bar configuration\r\n */\r\n messageConfig: PropTypes.shape({}),\r\n /**\r\n * if action bar (done & cancel) should render\r\n */\r\n isHideSaveBar: PropTypes.bool,\r\n /**\r\n * Promise to get date range\r\n */\r\n $dataRange: PropTypes.shape({\r\n then: PropTypes.func,\r\n }).isRequired,\r\n /**\r\n * View model data\r\n */\r\n goalSelection: PropTypes.arrayOf(PropTypes.shape({})),\r\n /**\r\n * Original set of goals\r\n */\r\n campaignConversionGoal: PropTypes.arrayOf(PropTypes.shape({})),\r\n /**\r\n * Method to update view model data\r\n */\r\n onChange: PropTypes.func.isRequired,\r\n classes: PropTypes.shape({}),\r\n cid: PropTypes.number.isRequired,\r\n aid: PropTypes.number.isRequired,\r\n isSelectorEnabled: PropTypes.bool.isRequired,\r\n turnOnRemoveAlert: PropTypes.func,\r\n activityLogger: PropTypes.shape({}),\r\n subTextOptions: PropTypes.shape({\r\n id: PropTypes.string,\r\n text: PropTypes.string,\r\n }),\r\n};\r\n\r\nConversionGoalSelector.defaultProps = {\r\n pageSize: 10,\r\n checkSelected: (selectedItem, item) => _.isEqual(selectedItem, item),\r\n campaign: null,\r\n isMultiMode: false,\r\n showTrackingStatusIcon: false,\r\n ariaLabel: '',\r\n searchBoxAriaLabel: '',\r\n sourceGoalSelectorOptions: {},\r\n messageConfig: {},\r\n isHideSaveBar: false,\r\n classes: {},\r\n turnOnRemoveAlert: _.noop,\r\n goalSelection: [],\r\n campaignConversionGoal: [],\r\n activityLogger: null,\r\n subTextOptions: null,\r\n};\r\n\r\n","export const TrackingStatusMapping = {\r\n InactiveDueToTagUnavailable: {\r\n i18nKey: 'GoalSelector_TrackingStatus_Value_InactiveDueToTagUnavailable',\r\n },\r\n NoRecentConversion: {\r\n i18nKey: 'GoalSelector_TrackingStatus_Value_NoRecentConversion',\r\n },\r\n RecordingConversions: {\r\n i18nKey: 'GoalSelector_TrackingStatus_Value_RecordingConversions',\r\n },\r\n TagInactive: {\r\n i18nKey: 'GoalSelector_TrackingStatus_Value_TagInactive',\r\n },\r\n Unverified: {\r\n i18nKey: 'GoalSelector_TrackingStatus_Value_Unverified',\r\n },\r\n};\r\n\r\nexport const GoalCategories = {\r\n AddToCart: {\r\n value: 'AddToCart',\r\n i18nKey: 'Segment_Goal_Category_AddToCart',\r\n },\r\n BeginCheckout: {\r\n value: 'BeginCheckout',\r\n i18nKey: 'Segment_Goal_Category_BeginCheckout',\r\n },\r\n BookAppointment: {\r\n value: 'BookAppointment',\r\n i18nKey: 'Segment_Goal_Category_BookAppointment',\r\n },\r\n Contact: {\r\n value: 'Contact',\r\n i18nKey: 'Segment_Goal_Category_Contact',\r\n },\r\n Download: {\r\n value: 'Download',\r\n i18nKey: 'Segment_Goal_Category_Download',\r\n },\r\n GetDirections: {\r\n value: 'GetDirections',\r\n i18nKey: 'Segment_Goal_Category_GetDirections',\r\n },\r\n InStoreVisit: {\r\n value: 'InStoreVisit',\r\n i18nKey: 'Segment_Goal_Category_InStoreVisit',\r\n },\r\n Other: {\r\n value: 'Other',\r\n i18nKey: 'Segment_Goal_Category_Other',\r\n },\r\n OutboundClick: {\r\n value: 'OutboundClick',\r\n i18nKey: 'Segment_Goal_Category_OutboundClick',\r\n },\r\n PageView: {\r\n value: 'PageView',\r\n i18nKey: 'Segment_Goal_Category_PageView',\r\n },\r\n Purchase: {\r\n value: 'Purchase',\r\n i18nKey: 'Segment_Goal_Category_Purchase',\r\n },\r\n RequestQuote: {\r\n value: 'RequestQuote',\r\n i18nKey: 'Segment_Goal_Category_RequestQuote',\r\n },\r\n Signup: {\r\n value: 'Signup',\r\n i18nKey: 'Segment_Goal_Category_SignUp',\r\n },\r\n SubmitLeadForm: {\r\n value: 'SubmitLeadForm',\r\n i18nKey: 'Segment_Goal_Category_SubmitLeadForm',\r\n },\r\n // Temp fix to unblock the PR\r\n // TODO: need to resolve the typo in MT\r\n Subcribe: {\r\n value: 'Subcribe',\r\n i18nKey: 'Segment_Goal_Category_Subscribe',\r\n },\r\n None: {\r\n value: 'None',\r\n i18nKey: 'Segment_Goal_Category_Unassigned',\r\n },\r\n};\r\n\r\n\r\nexport const GoalOptions = {\r\n Goals: {\r\n value: 'goals',\r\n i18nKey: 'Campaign_Goals_Option_Goals',\r\n },\r\n GoalSets: {\r\n value: 'goalsets',\r\n i18nKey: 'Campaign_Goals_Option_GoalSets',\r\n },\r\n};\r\n\r\nexport const Scopes = Object.freeze({\r\n ACCOUNT: 'account-scope',\r\n CAMPAIGN: 'campaign-scope',\r\n});\r\nexport const ScopeOptions = [\r\n { id: Scopes.ACCOUNT, text: 'Campaign_Goals_Account_Level_Label' },\r\n { id: Scopes.CAMPAIGN, text: 'Campaign_Goals_Campaign_Level_Label' },\r\n];\r\n","/* eslint-disable jsx-a11y/aria-role */\r\n/* eslint-disable react-hooks/exhaustive-deps */\r\n\r\nimport _, { forEach } from 'underscore';\r\nimport React, { useState, memo, useCallback, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { RadioGroup } from '@bingads-webui-react/radio';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\n\r\nimport { Scopes, ScopeOptions, GoalCategories, TrackingStatusMapping } from './config/constants';\r\nimport { GoalSelector } from './goal-selector';\r\nimport { getStyles } from './style/styles';\r\n\r\nfunction GoalScopeSelector(props) {\r\n const {\r\n campaignConversionGoal,\r\n i18n,\r\n classes,\r\n onScopeChange,\r\n turnOnRemoveAlert,\r\n activityLogger,\r\n subTextOptions,\r\n showTrackingStatusIcon,\r\n } = props;\r\n\r\n const renderHeaderFactory = ({ isSelected }) => function renderHeader(itemCount) {\r\n return (\r\n
\r\n
\r\n \r\n {i18n.getString(isSelected ? 'GoalSelector_Result_List_Header' :'GoalSelector_List_Header', { itemCount })}\r\n \r\n
\r\n
\r\n \r\n {i18n.getString('UnifiedEventTracking_Goal_Creation_Type_Event_Category')}\r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n const TrackingStatusIcon = ({ item, isSelected }) => {\r\n if (!item.TrackingStatus && TrackingStatusMapping[item.TrackingStatus] && item.Type) {\r\n return <>;\r\n }\r\n\r\n const iconState = !isSelected && item.isAddedToResultList;\r\n const isOfflineGoal = item.Type === 'OfflineConversionGoal';\r\n const uetTagGlyphIcon = (item.TrackingStatus !== 'RecordingConversions' && !isOfflineGoal) && !iconState ? 'ba-Warning' : '';\r\n return ();\r\n };\r\n\r\n const renderItemFactory = ({ isSelected }) => function renderItem(item, index, forwardedRef) {\r\n const { isAddedToResultList } = item;\r\n const rowItemClass = isAddedToResultList ? 'added-to-result-list' : '';\r\n const addIconClass = isAddedToResultList ? 'disabled' : 'enabled';\r\n const categoryI18nKey = GoalCategories[item.GoalCategory] ?\r\n GoalCategories[item.GoalCategory].i18nKey\r\n : GoalCategories.None.i18nKey;\r\n\r\n return (\r\n
\r\n
\r\n {item.Name}\r\n
\r\n
\r\n {i18n.getString(categoryI18nKey)}\r\n
\r\n { showTrackingStatusIcon && }\r\n {isSelected ?\r\n :\r\n \r\n }\r\n
\r\n );\r\n };\r\n\r\n const hasCampaignLevelGoals = campaignConversionGoal && campaignConversionGoal.Goals\r\n && campaignConversionGoal.Goals.length > 0;\r\n\r\n const [selectedScope, setSelectedScope] = useState(hasCampaignLevelGoals ?\r\n Scopes.CAMPAIGN : Scopes.ACCOUNT);\r\n\r\n const onRadioChange = (item) => {\r\n if (activityLogger) {\r\n activityLogger.signal(`goal scope change: ${item}`);\r\n }\r\n if (item === Scopes.ACCOUNT) {\r\n turnOnRemoveAlert(false);\r\n }\r\n setSelectedScope(item);\r\n };\r\n\r\n const onGlobalShortcut = useCallback((e) => {\r\n e.preventDefault();\r\n if (_.isElement(document.getElementsByClassName('conversions')[0]) && _.isElement(document.getElementsByClassName('conversions')[0].getElementsByClassName('content-show')[0])) {\r\n if ((e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'Tab') && document.activeElement.type === 'radio') {\r\n forEach(document.getElementsByClassName('goal-selector-with-scope')[0].getElementsByTagName('Label'), (node) => {\r\n node.setAttribute('class', node.getElementsByTagName('input')[0].checked ? 'focusStyle' : '');\r\n });\r\n }\r\n if (e.type === 'mouseup' || document.activeElement.type !== 'radio') {\r\n forEach(document.getElementsByClassName('goal-selector-with-scope')[0].getElementsByTagName('Label'), (node) => {\r\n node.setAttribute('class', '');\r\n });\r\n }\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n document.addEventListener('keyup', onGlobalShortcut);\r\n document.addEventListener('mouseup', onGlobalShortcut);\r\n return () => {\r\n document.removeEventListener('keyup', onGlobalShortcut);\r\n document.removeEventListener('mouseup', onGlobalShortcut);\r\n };\r\n }, [i18n, onGlobalShortcut]);\r\n\r\n useEffect(() => {\r\n setSelectedScope(hasCampaignLevelGoals ?\r\n Scopes.CAMPAIGN : Scopes.ACCOUNT);\r\n }, [hasCampaignLevelGoals]);\r\n\r\n useEffect(() => {\r\n // Update Scope when loading\r\n if (!_.isUndefined(onScopeChange)) onScopeChange(selectedScope);\r\n }, [selectedScope]);\r\n\r\n const renderScopeOptions = (option) => {\r\n const optionText = i18n.getString(_.result(_.findWhere(ScopeOptions, { id: option }), 'text'));\r\n const subText = subTextOptions && i18n.getString(_.result(_.findWhere(subTextOptions, { id: option }), 'text'));\r\n return (\r\n <>\r\n {optionText}\r\n {subText &&
{subText}
}\r\n \r\n );\r\n };\r\n\r\n const newProps = _.defaults({\r\n sourceGoalSelectorOptions: {\r\n renderHeader: renderHeaderFactory({ isSelected: false }),\r\n renderItem: renderItemFactory({ isSelected: false }),\r\n onSelect: () => { turnOnRemoveAlert(true); },\r\n onSelectAll: () => { turnOnRemoveAlert(true); },\r\n },\r\n resultContainerOptions: {\r\n isHideSaveBar: true,\r\n renderHeader: renderHeaderFactory({ isSelected: true }),\r\n renderItem: renderItemFactory({ isSelected: true }),\r\n onRemove: () => { turnOnRemoveAlert(true); },\r\n onRemoveAll: () => { turnOnRemoveAlert(true); },\r\n },\r\n }, props);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {\r\n selectedScope === Scopes.CAMPAIGN && (\r\n
\r\n \r\n
\r\n )\r\n }\r\n
\r\n );\r\n}\r\n\r\nGoalScopeSelector.propTypes = {\r\n classes: PropTypes.shape({\r\n goalSelectorContainer: PropTypes.string,\r\n goalSelector: PropTypes.string,\r\n rowItem: PropTypes.string,\r\n goalNameColumn: PropTypes.string,\r\n goalTypeColumn: PropTypes.string,\r\n arrowIcon: PropTypes.string,\r\n }),\r\n campaignConversionGoal: PropTypes.shape({\r\n IsConversionGoalSet: PropTypes.bool,\r\n Goals: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.number,\r\n Name: PropTypes.string,\r\n })),\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n handleErrorFunc: PropTypes.func,\r\n onScopeChange: PropTypes.func.isRequired,\r\n turnOnRemoveAlert: PropTypes.func,\r\n activityLogger: PropTypes.shape({\r\n signal: PropTypes.func,\r\n }),\r\n showTrackingStatusIcon: PropTypes.bool,\r\n subTextOptions: PropTypes.shape({\r\n id: PropTypes.string,\r\n text: PropTypes.string,\r\n }),\r\n};\r\n\r\nGoalScopeSelector.defaultProps = {\r\n showTrackingStatusIcon: false,\r\n handleErrorFunc: _.noop,\r\n turnOnRemoveAlert: _.noop,\r\n campaignConversionGoal: {\r\n IsConversionGoalSet: false,\r\n Goals: [],\r\n },\r\n classes: {},\r\n subTextOptions: null,\r\n activityLogger: null,\r\n};\r\n\r\nconst Wrapped = _.compose(\r\n memo,\r\n Comp => withDefaultStyles(Comp, getStyles)\r\n)(GoalScopeSelector);\r\n\r\nexport { Wrapped as CampaignGoalLevelEditor };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { EntitySelector } from '@bingads-webui-react/entity-selector';\r\nimport { submitEvent } from '@bingads-webui-universal/accessibility-helper';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\n\r\nexport class SourceGoalSelector extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const { i18n, i18nLegacy } = this.props;\r\n this.i18n = i18nLegacy || i18n;\r\n this.isSelectedLoaded = false;\r\n this.classes = props.classes;\r\n }\r\n\r\n state = {\r\n items: [],\r\n totalCount: 0,\r\n };\r\n\r\n componentDidMount() {\r\n this.fetch();\r\n\r\n const { isMultiMode, resultContainerOptions, selectedItemsForMultiMode } = this.props;\r\n if (isMultiMode\r\n && !_.isEmpty(selectedItemsForMultiMode)) {\r\n resultContainerOptions.updateResultList(selectedItemsForMultiMode);\r\n this.isSelectedLoaded = true;\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n const {\r\n isMultiMode,\r\n resultContainerOptions,\r\n selectedItemsForMultiMode,\r\n customizedItem,\r\n setCustomizedItem,\r\n } = this.props;\r\n if (isMultiMode\r\n && !this.isSelectedLoaded\r\n && !_.isEmpty(selectedItemsForMultiMode)) {\r\n resultContainerOptions.updateResultList(selectedItemsForMultiMode);\r\n this.isSelectedLoaded = true;\r\n }\r\n // support manually add item\r\n if (isMultiMode\r\n && !_.isEmpty(customizedItem)\r\n && _.isFunction(setCustomizedItem)\r\n && this.findItemIndex(resultContainerOptions.resultList, customizedItem) === -1) {\r\n resultContainerOptions.updateResultList([customizedItem]);\r\n setCustomizedItem(null);\r\n }\r\n }\r\n\r\n onSelect = (selectedItem) => {\r\n const { sourceGoalSelectorOptions: { onSelect } } = this.props;\r\n onSelect();\r\n if (this.props.isMultiMode) {\r\n this.props.resultContainerOptions.updateResultList([selectedItem]);\r\n } else {\r\n this.props.dropdownOptions.toggle();\r\n this.props.dropdownOptions.updatedDropdownItem(selectedItem);\r\n }\r\n };\r\n\r\n /**\r\n * will update the select result container with all items in current pageafter click\r\n * @returns {undefined} will call the props callback function\r\n */\r\n onSelectAllClick = () => {\r\n this.props.resultContainerOptions.updateResultList(this.state.items);\r\n const { sourceGoalSelectorOptions: { onSelectAll } } = this.props;\r\n onSelectAll();\r\n };\r\n\r\n getRenderers() {\r\n const { sourceGoalSelectorOptions: options } = this.props;\r\n\r\n const renderHeader = _.isFunction(options.renderHeader) ?\r\n () => options.renderHeader(this.state.totalCount) :\r\n this.renderHeader;\r\n\r\n const renderItem = _.isFunction(options.renderItem) ?\r\n (...args) => options.renderItem(...args) :\r\n this.renderItem;\r\n\r\n const renderFooter = _.isFunction(options.renderFooter) ? options.renderFooter : null;\r\n\r\n return {\r\n renderHeader,\r\n renderItem,\r\n renderFooter,\r\n };\r\n }\r\n\r\n /**\r\n * transform the item with the isAddedToResultList property\r\n * @returns {object} the transformed item\r\n */\r\n itemsAdapter() {\r\n const { resultContainerOptions, isMultiMode } = this.props;\r\n const { items } = this.state;\r\n const itemsAdapter = [];\r\n\r\n for (let i = 0; i < items.length; i += 1) {\r\n const newItem = { ...items[i] };\r\n if (isMultiMode) {\r\n newItem.isShowAddArrow = true;\r\n }\r\n if (this.findItemIndex(resultContainerOptions.resultList, items[i]) > -1) {\r\n newItem.isAddedToResultList = true;\r\n } else {\r\n newItem.isAddedToResultList = false;\r\n }\r\n itemsAdapter.push(newItem);\r\n }\r\n return itemsAdapter;\r\n }\r\n\r\n /**\r\n * util function: find if an item is in the list(same Id), if so, return the index\r\n * @param {list} list - the list to find the item\r\n * @param {Object} item - item to be found\r\n * @returns {number} index, if not found, will return -1\r\n */\r\n findItemIndex(list, item) {\r\n for (let i = 0; i < list.length; i += 1) {\r\n if (item.Id === list[i].Id) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n fetch = ({ query = '', pageNumber = 0 } = {}) => {\r\n if (this.props.perfMarker) {\r\n this.props.perfMarker.willFetchData();\r\n }\r\n Promise.resolve(this.props.fetch({ query, pageNumber, pageSize: this.props.pageSize }))\r\n .then((data) => {\r\n if (this.props.perfMarker) {\r\n this.props.perfMarker.willRender();\r\n }\r\n this.setState(_.pick(data, 'items', 'totalCount'), () => {\r\n if (this.props.perfMarker) {\r\n this.props.perfMarker.done();\r\n }\r\n });\r\n });\r\n };\r\n\r\n renderItem = (item, index, forwardedRef) => {\r\n const { isAddedToResultList } = item;\r\n const rowItemClass = isAddedToResultList ? 'added-to-result-list' : '';\r\n const addIconClass = isAddedToResultList ? 'disabled' : 'enabled';\r\n\r\n return (\r\n
\r\n
\r\n {item.name}\r\n
\r\n
\r\n {item.goalCategory}\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n renderEmptyList = () => (\r\n
\r\n {this.i18n.getString(this.props.stringKeys.emptyListContent)}\r\n
\r\n );\r\n\r\n renderHeader = () => (\r\n
\r\n
\r\n \r\n {this.i18n.getString(this.props.stringKeys.listHeader, {\r\n itemCount: this.state.totalCount,\r\n })}\r\n \r\n
\r\n \r\n {this.i18n.getString('UnifiedEventTracking_Goal_Creation_Type_Event_Category')}\r\n \r\n
\r\n
\r\n
\r\n );\r\n\r\n\r\n /**\r\n * render action bar: select all\r\n * @returns {object} return the action bar component\r\n */\r\n renderActionBar = () => (\r\n this.onSelectAllClick())}\r\n role=\"menuitem\"\r\n tabIndex={0}\r\n >\r\n {this.i18n.getString(this.props.stringKeys.actionBar)}\r\n \r\n
\r\n );\r\n\r\n render() {\r\n const { isMultiMode } = this.props;\r\n const items = isMultiMode ? this.itemsAdapter() : this.state.items;\r\n\r\n const { renderHeader, renderItem, renderFooter } = this.getRenderers();\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nSourceGoalSelector.defaultProps = {\r\n pageSize: 10,\r\n selectedItem: null,\r\n stringKeys: {\r\n emptyListContent: 'GoalSelector_EmptyList_Content',\r\n listHeader: 'GoalSelector_List_Header',\r\n selectEntity: 'GoalSelector_SelectCampaign',\r\n selectEntities: 'GoallSelector_SelectCampaigns',\r\n actionBar: 'GoalSelector_Result_Action_Bar',\r\n },\r\n checkSelected: (selectedItem, item) => _.isEqual(selectedItem, item),\r\n isMultiMode: false,\r\n resultContainerOptions: {\r\n resultList: [],\r\n updateResultList: _.noop,\r\n },\r\n dropdownOptions: {\r\n toggle: _.noop,\r\n updatedDropdownItem: _.noop,\r\n },\r\n i18nLegacy: null,\r\n selectedItemsForMultiMode: [],\r\n customizedItem: null,\r\n setCustomizedItem: _.noop,\r\n onSelect: _.noop,\r\n ariaLabel: '',\r\n searchBoxAriaLabel: '',\r\n searchBoxPlaceholder: '',\r\n sourceGoalSelectorOptions: {},\r\n messageConfig: {},\r\n perfMarker: null,\r\n classes: {},\r\n};\r\n\r\nSourceGoalSelector.propTypes = {\r\n /**\r\n * item count per page\r\n */\r\n pageSize: PropTypes.number,\r\n /**\r\n * function to fetch items\r\n */\r\n fetch: PropTypes.func.isRequired,\r\n /**\r\n * callback to pass selected item and it's index outside\r\n */\r\n onSelect: PropTypes.func,\r\n /**\r\n * selected item\r\n */\r\n selectedItem: PropTypes.shape({\r\n Id: PropTypes.string,\r\n name: PropTypes.string,\r\n }),\r\n /**\r\n * i18n for localization\r\n */\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n /**\r\n * i18n for localization\r\n */\r\n i18nLegacy: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }),\r\n /**\r\n * keys for customized strings\r\n */\r\n stringKeys: PropTypes.objectOf(PropTypes.string),\r\n /**\r\n * Used to check whether an item is selected.\r\n *\r\n * @param {Object} selectedItem - selected item\r\n * @param {Object} item - single data in the list\r\n * @return {boolean} - whether current item is selected\r\n */\r\n checkSelected: PropTypes.func,\r\n /**\r\n * judge whhether campaign selector is used as adgroup selector\r\n */\r\n isMultiMode: PropTypes.bool,\r\n /**\r\n * the initial selected item list for multi mode\r\n */\r\n selectedItemsForMultiMode: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.string,\r\n name: PropTypes.string,\r\n })),\r\n customizedItem: PropTypes.shape({}),\r\n setCustomizedItem: PropTypes.func,\r\n resultContainerOptions: PropTypes.shape({\r\n resultList: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.string,\r\n name: PropTypes.string,\r\n })),\r\n updateResultList: PropTypes.func,\r\n }),\r\n dropdownOptions: PropTypes.shape({\r\n toggle: PropTypes.func,\r\n updatedDropdownItem: PropTypes.func,\r\n }),\r\n /**\r\n * aria label of list selector\r\n */\r\n ariaLabel: PropTypes.string,\r\n /**\r\n * aria label of search box inputor\r\n */\r\n searchBoxAriaLabel: PropTypes.string,\r\n searchBoxPlaceholder: PropTypes.string,\r\n /**\r\n * customize OriginCampaignSelector\r\n */\r\n sourceGoalSelectorOptions: PropTypes.shape({\r\n renderHeader: PropTypes.func,\r\n renderItem: PropTypes.func,\r\n renderFooter: PropTypes.func,\r\n }),\r\n /**\r\n * message bar configuration\r\n */\r\n messageConfig: PropTypes.shape({}),\r\n perfMarker: perfMarkerPropTypes,\r\n classes: PropTypes.shape({}),\r\n};\r\n","import { withResultContainer } from '@bingads-webui-react/hoc-with-multi-selector-result-container';\r\nimport { withDropdownMenu } from '@bingads-webui-react/hoc-with-dropdown-menu';\r\n\r\nimport { SourceGoalSelector } from './source-goal-selector';\r\n\r\nexport const SingleGoalSelectorwWthDropdownMenu = withDropdownMenu(SourceGoalSelector);\r\nexport const MultiGoalSelectorWthDropdownMenu =\r\n withDropdownMenu(withResultContainer(SourceGoalSelector));\r\nexport const SingleGoalSelector = SourceGoalSelector;\r\nexport const MultiGoalSelector =\r\n withResultContainer(SourceGoalSelector);\r\n","/**\r\n * map for the status code and icon style name\r\n */\r\nexport const statusConfig = {\r\n 124: 'statusPaused_icon', // UserPaused\r\n 126: 'statusPaused_icon', // BudgetPaused\r\n 127: 'statusPaused_icon', // BudgetUserPaused\r\n 123: 'statusDeleted_icon', // Deleted\r\n 8: 'statusSuspended_icon', // Suspended\r\n 121: 'statusEnabled_icon', // Active\r\n UserPaused: 'statusPaused_icon',\r\n BudgetPaused: 'statusPaused_icon',\r\n BudgetUserPaused: 'statusPaused_icon',\r\n Deleted: 'statusDeleted_icon',\r\n Suspended: 'statusSuspended_icon',\r\n Active: 'statusEnabled_icon',\r\n AccountActive: 'iconba iconba-Completed',\r\n AccountError: 'iconba iconba-Error',\r\n InProgress: 'statusPaused_icon',\r\n Paused: 'statusPaused_icon',\r\n Draft: 'statusDraft_icon',\r\n Expired: 'statusPaused_icon',\r\n CampaignUserPaused: 'statusPaused_icon',\r\n CampaignBudgetPaused: 'statusPaused_icon',\r\n CampaignBudgetUserPaused: 'statusPaused_icon',\r\n PrivacyPending: 'statusPending_icon',\r\n TargetingTooNarrow: 'statusPending_icon',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport _ from 'underscore';\r\nimport { statusConfig } from '../config/status-config';\r\n\r\nexport const MultiSelectedItemComponent = (props) => {\r\n const { item, hideStatus } = props;\r\n const renderItemContent = () => (\r\n
\r\n {\r\n !hideStatus &&\r\n \r\n }\r\n \r\n {item.name}\r\n \r\n
\r\n );\r\n\r\n return (\r\n
\r\n \r\n {\r\n renderItemContent()\r\n }\r\n
\r\n );\r\n};\r\n\r\nMultiSelectedItemComponent.propTypes = {\r\n item: PropTypes.shape({\r\n status: PropTypes.string,\r\n name: PropTypes.string.isRequired,\r\n Id: PropTypes.number.isRequired,\r\n }).isRequired,\r\n hideStatus: PropTypes.bool,\r\n};\r\n\r\nMultiSelectedItemComponent.defaultProps = {\r\n hideStatus: false,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport { SingleGoalSelector, MultiGoalSelector } from './selector-control';\r\nimport { MultiSelectedItemComponent } from './components/multi-selected-item';\r\n\r\n/**\r\n * A business component of campaign selector based on entity selector\r\n * support single mode and multi mode\r\n */\r\n\r\nclass GoalSelector extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isToggled: false,\r\n selectedItem: props.selectedItem,\r\n resultList: [],\r\n };\r\n const { i18n, i18nLegacy } = this.props;\r\n this.i18n = i18nLegacy || i18n;\r\n this.resultContainerOptions = this.getResultContainerOptions();\r\n this.classes = props.classes;\r\n }\r\n\r\n /**\r\n * for the multi mode: after the Done btn clicked, should toggle the dropdown, and call back\r\n * @param {object} items - selected result adgroups\r\n * @returns {undefined} do not need return\r\n */\r\n onSelectDone = (items) => {\r\n this.toggle();\r\n this.props.onSelectDone(items);\r\n };\r\n\r\n /**\r\n * for the multi mode: after the Cancel btn clicked, should toggle the dropdown, and call back\r\n * @returns {undefined} do not need return\r\n */\r\n onSelectCancel = () => {\r\n this.toggle();\r\n this.props.onSelectCancel();\r\n };\r\n\r\n /**\r\n * for multi mode: dropdown btn will show lick this: ** items selected\r\n * @returns {selectedItem} return an item which can be used for dropdown button to show\r\n */\r\n getSelectedItemForMultiMode = () => {\r\n const resultListLen = this.state.resultList.length;\r\n const selectedText = this.i18n.getString(this.props.stringKeys.resultHeader, {\r\n itemCount: resultListLen,\r\n });\r\n return resultListLen ? { name: selectedText } : null;\r\n };\r\n\r\n /**\r\n * for multi mode: prepare the params for the withDropdownMenu hoc\r\n * @returns {undefined} do not need return\r\n */\r\n getDropdownOptions = () => {\r\n const { isMultiMode } = this.props;\r\n const renderDropdownText = (item) => {\r\n if (!isMultiMode) {\r\n return (\r\n \r\n \r\n {item.name}\r\n \r\n );\r\n }\r\n const text = this.props.getCustomDropdownText ?\r\n this.props.getCustomDropdownText() : item.name;\r\n\r\n return (\r\n \r\n {text}\r\n );\r\n };\r\n\r\n const renderEmptyDropdownText = () => {\r\n if (isMultiMode) {\r\n return this.props.getCustomDropdownText ?\r\n this.props.getCustomDropdownText() :\r\n this.i18n.getString(this.props.stringKeys.selectEntities);\r\n }\r\n return this.i18n.getString(this.props.stringKeys.selectEntity);\r\n };\r\n\r\n return {\r\n isToggled: this.state.isToggled,\r\n toggle: this.toggle,\r\n renderDropdownText,\r\n renderEmptyDropdownText,\r\n selectedItem: isMultiMode ? this.getSelectedItemForMultiMode() : this.state.selectedItem,\r\n updatedDropdownItem: this.updatedDropdownItem,\r\n ariaLabel: renderEmptyDropdownText(),\r\n };\r\n };\r\n\r\n /**\r\n * for multi mode: prepare the params for the withMultiResultContainer hoc\r\n * @returns {undefined} do not need return\r\n */\r\n getResultContainerOptions = () => {\r\n const { resultContainerOptions, stringKeys } = this.props;\r\n\r\n\r\n const renderHeader = resultContainerOptions.renderHeader? resultContainerOptions.renderHeader\r\n :itemCount => (\r\n
\r\n

\r\n {this.i18n.getString(stringKeys.resultHeader, {\r\n itemCount,\r\n })}\r\n

\r\n
);\r\n\r\n const renderEmptyList = () => (\r\n
\r\n {this.i18n.getString(this.props.stringKeys.emptyListContent)}\r\n
\r\n );\r\n\r\n const renderItem = resultContainerOptions.renderItem? resultContainerOptions.renderItem:\r\n (item, index) =>\r\n ();\r\n\r\n const onResultChanged = (resultList) => {\r\n this.setState({ resultList });\r\n };\r\n\r\n const defaultOptions = {\r\n renderHeader,\r\n renderEmptyList,\r\n renderItem,\r\n onSelectDone: this.onSelectDone,\r\n onSelectCancel: this.onSelectCancel,\r\n pageSize: this.props.pageSize,\r\n onResultChanged,\r\n isHideSaveBar: true,\r\n };\r\n\r\n const options = resultContainerOptions ?\r\n _.defaults(resultContainerOptions, defaultOptions) : defaultOptions;\r\n return options;\r\n };\r\n\r\n /**\r\n * will update the seleted item info in the dropdown btn\r\n * @param {object} selectedItem the item selected\r\n * @returns {undefined} update the Dropdown btn info\r\n */\r\n updatedDropdownItem = (selectedItem) => {\r\n this.setState({ selectedItem });\r\n };\r\n\r\n /**\r\n * control the toggle state\r\n * @returns {undefined} update the state\r\n */\r\n toggle = () => {\r\n this.setState({ isToggled: !this.state.isToggled });\r\n };\r\n\r\n renderSelector = () => {\r\n const { isMultiMode, showTrackingStatusIcon } = this.props;\r\n return (isMultiMode ?\r\n :\r\n );\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n {this.renderSelector()}\r\n
\r\n );\r\n }\r\n}\r\n\r\nGoalSelector.propTypes = {\r\n /**\r\n * item count per page\r\n */\r\n pageSize: PropTypes.number,\r\n /**\r\n * function to fetch items\r\n */\r\n fetch: PropTypes.func.isRequired,\r\n /**\r\n * callback to pass selected item and it's index outside\r\n */\r\n onSelect: PropTypes.func,\r\n /**\r\n * selected item\r\n */\r\n selectedItem: PropTypes.objectOf(PropTypes.any),\r\n /**\r\n * i18n for localization\r\n */\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }),\r\n /**\r\n * i18n for localization\r\n */\r\n i18nLegacy: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }),\r\n /**\r\n * keys for customized strings\r\n */\r\n stringKeys: PropTypes.objectOf(PropTypes.string),\r\n /**\r\n * Used to check whether an item is selected.\r\n *\r\n * @param {Object} selectedItem - selected item\r\n * @param {Object} item - single data in the list\r\n * @return {boolean} - whether current item is selected\r\n */\r\n checkSelected: PropTypes.func,\r\n /**\r\n * judge whhether campaign selector is used as adgroup selector\r\n */\r\n campaign: PropTypes.objectOf(PropTypes.any),\r\n /**\r\n * the campaign adgroup selector mode: multi or single\r\n */\r\n isMultiMode: PropTypes.bool,\r\n /**\r\n * should show tracking status icon\r\n */\r\n showTrackingStatusIcon: PropTypes.bool,\r\n /**\r\n * the initial selected item list for multi mode\r\n */\r\n selectedItemsForMultiMode: PropTypes.arrayOf(PropTypes.any),\r\n /**\r\n * callback for the Done btn clicked, with the selected items\r\n */\r\n onSelectDone: PropTypes.func,\r\n /**\r\n * callback for the Cancel btn clicked, with the selected items\r\n */\r\n onSelectCancel: PropTypes.func,\r\n /**\r\n * hide campaign status in selected container of multi mode\r\n */\r\n hideStatus: PropTypes.bool,\r\n /**\r\n * with Dropdown Menu or not\r\n */\r\n withDropdownMenu: PropTypes.bool,\r\n /**\r\n * customize the resultContainerOptions\r\n */\r\n resultContainerOptions: PropTypes.objectOf(PropTypes.any),\r\n /**\r\n * aria-label for campaign list selector\r\n */\r\n ariaLabel: PropTypes.string,\r\n /**\r\n * aria-label for result campaign list\r\n */\r\n resultListAriaLabel: PropTypes.string,\r\n /**\r\n * aria label of search box input\r\n */\r\n searchBoxAriaLabel: PropTypes.string,\r\n /**\r\n * customize OriginCampaignSelector\r\n */\r\n sourceGoalSelectorOptions: PropTypes.shape({}),\r\n /**\r\n * message bar configuration\r\n */\r\n messageConfig: PropTypes.shape({}),\r\n /**\r\n * custom render function for dropdown text\r\n */\r\n getCustomDropdownText: PropTypes.func,\r\n /**\r\n * if action bar (done & cancel) should render\r\n */\r\n isHideSaveBar: PropTypes.bool,\r\n classes: PropTypes.shape({}),\r\n};\r\n\r\nGoalSelector.defaultProps = {\r\n pageSize: 10,\r\n selectedItem: null,\r\n stringKeys: {\r\n emptyListContent: 'GoalSelector_EmptyList_Content',\r\n listHeader: 'GoalSelector_List_Header',\r\n selectEntity: 'GoalSelector_SelectCampaign',\r\n selectEntities: 'GoalSelector_SelectCampaigns',\r\n resultHeader: 'GoalSelector_Result_List_Header',\r\n actionBar: 'GoalSelector_Result_Action_Bar',\r\n },\r\n checkSelected: (selectedItem, item) => _.isEqual(selectedItem, item),\r\n campaign: null,\r\n isMultiMode: false,\r\n showTrackingStatusIcon: false,\r\n onSelectDone: _.noop,\r\n onSelectCancel: _.noop,\r\n i18n: null,\r\n i18nLegacy: null,\r\n selectedItemsForMultiMode: [],\r\n hideStatus: false,\r\n withDropdownMenu: false,\r\n resultContainerOptions: null,\r\n ariaLabel: '',\r\n resultListAriaLabel: '',\r\n searchBoxAriaLabel: '',\r\n sourceGoalSelectorOptions: {},\r\n messageConfig: {},\r\n getCustomDropdownText: undefined,\r\n isHideSaveBar: false,\r\n classes: {},\r\n onSelect: _.noop,\r\n};\r\n\r\n\r\nexport { GoalSelector };\r\n\r\n","const textOverflowStyle = {\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n};\r\n\r\nconst scrollbarStyle = {\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n '&::-webkit-scrollbar': {\r\n width: 4,\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n '&::-webkit-scrollbar-thumb': {\r\n width: 4,\r\n height: 44,\r\n backgroundColor: '#EBEAE8',\r\n },\r\n};\r\n\r\nexport const getStyles = (_, { palette = { }, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n goalSelectorContainer: {\r\n width: 465,\r\n paddingBottom: 30,\r\n '& .focusStyle': {\r\n border: '1px solid black',\r\n },\r\n '& .ba-search-box ': {\r\n borderTop: '1px solid #ccc',\r\n borderLeft: '1px solid #ccc',\r\n borderRight: '1px solid #ccc',\r\n padding: 1,\r\n position: 'relative',\r\n\r\n // #323130\r\n '& .search-box__input': {\r\n height: 48,\r\n width: 'calc(100% - 2px)',\r\n border: 0,\r\n borderBottom: '1px solid #ccc',\r\n paddingLeft: 48,\r\n marginLeft: 1,\r\n },\r\n\r\n '& .search-box__icon': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n verticalAlign: 'middle',\r\n position: 'absolute',\r\n left: 17,\r\n top: 13,\r\n },\r\n\r\n '& .search-box__icon:before': {\r\n content: '\"\\\\E721\"',\r\n color: palette.themePrimary,\r\n },\r\n },\r\n\r\n '& .list-selector-container': {\r\n width: 470,\r\n height: 329,\r\n },\r\n\r\n '& .ba-list-selector': {\r\n display: 'flex',\r\n 'flex-direction': 'column',\r\n\r\n '& .list-selector-action-bar': {\r\n '& [class*=\"-all-content\"]': {\r\n padding: '10px 12px',\r\n color: '#0078D4',\r\n cursor: 'pointer',\r\n '& span': {\r\n '&:hover': {\r\n color: '#004578',\r\n textDecorationLine: 'underline',\r\n },\r\n },\r\n },\r\n '& .select-all-content .enabled.arrow-button': {\r\n float: 'right',\r\n },\r\n '& .remove-all-content .remove.arrow-button': {\r\n float: 'right',\r\n },\r\n },\r\n\r\n '& .list-selector-header': {\r\n '& .panel-heading': {\r\n color: palette.neutralPrimary,\r\n fontSize: 14,\r\n padding: '7px 8px',\r\n\r\n '& .panel-title': {\r\n fontSize: 14,\r\n marginTop: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .list-selector-content': {\r\n height: 270,\r\n ...scrollbarStyle,\r\n '& .list-selector-item': {\r\n margin: 0,\r\n minHeight: 36,\r\n\r\n '& .added-to-result-list': {\r\n background: '#edebe9',\r\n },\r\n '& .item-content': {\r\n ...textOverflowStyle,\r\n cursor: 'pointer',\r\n '& .text': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n\r\n '& .selected': {\r\n background: '#edebe9',\r\n },\r\n },\r\n\r\n '& .list-selector-item:hover': {\r\n background: '#edebe9',\r\n },\r\n\r\n '& .list-selector-item:focus': {\r\n outline: 'none',\r\n border: '1px solid ',\r\n },\r\n },\r\n\r\n '& .list-selector-empty': {\r\n marginLeft: 10,\r\n },\r\n\r\n },\r\n\r\n goalSelector: {\r\n position: 'relative',\r\n marginBottom: 15,\r\n\r\n '& .ba-goal-selector .multi-selector-content':\r\n {\r\n height: 400,\r\n\r\n '&> .ba-entity-selector': {\r\n borderRight: '1px solid #ccc',\r\n minWidth: 'fit-content',\r\n height: 400,\r\n },\r\n },\r\n\r\n '& .ba-goal-selector': {\r\n width: 'fit-content',\r\n display: 'flex',\r\n '& .ba-list-selector': {\r\n width: 470,\r\n },\r\n },\r\n\r\n '& .multi-selector-result-container': {\r\n margin: '0 0 0 20px',\r\n borderLeft: '1px solid #ccc',\r\n height: 400,\r\n '& .list-selector-container': {\r\n height: 380,\r\n },\r\n '& .list-selector-content': {\r\n height: 320,\r\n ...scrollbarStyle,\r\n '& .list-selector-item': {\r\n margin: 0,\r\n minHeight: 36,\r\n\r\n '& .added-to-result-list': {\r\n background: '#edebe9',\r\n },\r\n '& .item-content': {\r\n ...textOverflowStyle,\r\n cursor: 'pointer',\r\n '& .text': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n\r\n '& .selected': {\r\n background: '#edebe9',\r\n },\r\n },\r\n '& .list-selector-container ': {\r\n height: 400,\r\n '.ba-list-selector': {\r\n display: 'flex',\r\n width: 470,\r\n },\r\n },\r\n '& .pagination-container': {\r\n paddingTop: 5,\r\n '& .ba-pagination': {\r\n height: 35,\r\n padding: 0,\r\n },\r\n },\r\n },\r\n\r\n\r\n '& .pagination-container': {\r\n paddingTop: 25,\r\n '& .ba-pagination': {\r\n height: 35,\r\n padding: 0,\r\n },\r\n },\r\n\r\n rowItem: {\r\n padding: '7px 8px 8px 8px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n maxWidth: 'unset !important',\r\n },\r\n goalNameColumn: {\r\n width: 300,\r\n marginRight: 10,\r\n ...textOverflowStyle,\r\n },\r\n goalTypeColumn: {\r\n width: 180,\r\n marginRight: 10,\r\n ...textOverflowStyle,\r\n },\r\n trackingStatusIcon: {\r\n width: 20,\r\n },\r\n hideIcon: {\r\n display: 'none',\r\n },\r\n arrowIcon: {\r\n width: 15,\r\n marginLeft: '0 !important',\r\n marginRight: '0 !important',\r\n },\r\n selectionCount: {\r\n position: 'absolute',\r\n top: 36,\r\n left: 9,\r\n background: '#fff',\r\n pointerEvents: 'none',\r\n },\r\n },\r\n\r\n rowItem: {\r\n padding: '7px 8px 8px 8px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n maxWidth: 'unset !important',\r\n },\r\n goalNameColumn: {\r\n width: 300,\r\n marginRight: 10,\r\n ...textOverflowStyle,\r\n },\r\n goalTypeColumn: {\r\n width: 180,\r\n marginRight: 10,\r\n ...textOverflowStyle,\r\n },\r\n trackingStatusIcon: {\r\n width: 20,\r\n },\r\n hideIcon: {\r\n display: 'none',\r\n },\r\n arrowIcon: {\r\n width: 15,\r\n marginLeft: '0 !important',\r\n marginRight: '0 !important',\r\n },\r\n selectionCount: {\r\n position: 'absolute',\r\n top: 36,\r\n left: 9,\r\n background: '#fff',\r\n pointerEvents: 'none',\r\n },\r\n manuallyAddBrand: {\r\n paddingLeft: 9,\r\n marginTop: 10,\r\n fontWeight: 600,\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport { Scopes } from './config/constants';\r\n\r\nexport const convertToMTFormat = (campaignId, goalScopeSelection, originalGoalSelection, goalSelection, isSelectorEnabled) => {\r\n if (!isSelectorEnabled) {\r\n return [];\r\n }\r\n const mtFormat = (goal, isAdd) => (\r\n {\r\n Action: isAdd ? 'Add' : 'Delete',\r\n GoalId: goal.Id,\r\n Name: goal.Name,\r\n CampaignId: campaignId,\r\n SubType: 'Goal',\r\n }\r\n );\r\n\r\n const mtFormatGoals = [];\r\n\r\n if (goalScopeSelection === Scopes.ACCOUNT) {\r\n // remove all existing goals\r\n _.forEach(originalGoalSelection, (goal) => {\r\n mtFormatGoals.push(mtFormat(goal, false));\r\n });\r\n } else {\r\n const originalIdSet = {};\r\n _.forEach(originalGoalSelection, (goal) => { originalIdSet[goal.Id] = true; });\r\n\r\n const selectionIdSet = {};\r\n _.forEach(goalSelection, (goal) => { selectionIdSet[goal.Id] = true; });\r\n\r\n _.forEach(originalGoalSelection, (goal) => {\r\n // remove\r\n if (!selectionIdSet[goal.Id]) {\r\n mtFormatGoals.push(mtFormat(goal, false));\r\n }\r\n });\r\n _.forEach(goalSelection, (goal) => {\r\n // add\r\n if (!originalIdSet[goal.Id]) {\r\n mtFormatGoals.push(mtFormat(goal, true));\r\n }\r\n });\r\n }\r\n\r\n return mtFormatGoals;\r\n};\r\n","import Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Scopes } from './config/constants';\r\nimport { CampaignGoalLevelEditor } from './goal-scope-selector';\r\nimport { convertToMTFormat } from './utils';\r\n\r\nexport class GoalSelectorView extends Backbone.View {\r\n initialize({\r\n i18n,\r\n stringKeys,\r\n checkSelected,\r\n pageSize,\r\n ariaLabel = '',\r\n searchBoxAriaLabel = '',\r\n isMultiMode,\r\n isHideSaveBar,\r\n campaign,\r\n jsdata,\r\n state,\r\n turnOnRemoveAlert = _.noop,\r\n activityLogger,\r\n }) {\r\n // SPA Campaign:\r\n const isSPA = campaign.CampaignSubType === 'ShoppingSponsoredProductAd';\r\n // Cashback CPS Campaign:\r\n const isCPS = campaign.CampaignCashback != null &&\r\n (campaign.CampaignCashback.PersonalizedOffersEnabled === true\r\n || campaign.CampaignCashback.MonthlyBudget > 0);\r\n\r\n this.isSelectorEnabled = !isSPA && !isCPS;\r\n\r\n this.goalScopeSelection = Scopes.ACCOUNT;\r\n this.campaignConversionGoal = campaign.CampaignConversionGoal;\r\n this.goalSelection = this.campaignConversionGoal ?\r\n this.campaignConversionGoal.Goals : [];\r\n this.originalGoalSelection = this.goalSelection;\r\n\r\n this.i18n = i18n;\r\n this.stringKeys = stringKeys;\r\n this.checkSelected = checkSelected;\r\n this.pageSize = pageSize;\r\n this.ariaLabel = ariaLabel;\r\n this.searchBoxAriaLabel = searchBoxAriaLabel;\r\n this.isMultiMode = isMultiMode;\r\n this.isHideSaveBar = isHideSaveBar;\r\n this.fetch = this.fetchConversionGoal(jsdata, state, i18n);\r\n this.onSelectDone = this.onSelectDone.bind(this);\r\n this.onScopeChange = this.onScopeChange.bind(this);\r\n this.turnOnRemoveAlert = turnOnRemoveAlert;\r\n this.activityLogger = activityLogger;\r\n }\r\n\r\n onSelectDone(selectedGoals) {\r\n this.goalSelection= selectedGoals;\r\n }\r\n\r\n onScopeChange(newScopeSelection) {\r\n this.goalScopeSelection = newScopeSelection;\r\n }\r\n\r\n convertToMTFormat = campaignId => convertToMTFormat(\r\n campaignId,\r\n this.goalScopeSelection,\r\n this.originalGoalSelection,\r\n this.goalSelection,\r\n this.isSelectorEnabled\r\n );\r\n\r\n fetchConversionGoal(jsdata, state, i18n) {\r\n return ({ query, pageNumber, pageSize }) => {\r\n const formatDate = date => i18n.formatDate(date, { raw: 'M/d/yyyy' });\r\n\r\n return state.getPromise('$daterange').then((dateRange) => {\r\n const dateQuery = {\r\n $top: pageSize,\r\n $skip: pageNumber * pageSize,\r\n startdate: formatDate(dateRange.start),\r\n enddate: formatDate(dateRange.end),\r\n $filter: '(Status eq Enum.GoalStatus\\'Active\\') and ((GoalCategory eq Enum.GoalCategory\\'InStoreVisit\\') eq false)',\r\n $select: 'Id, Name, GoalCategory, Status',\r\n $orderby: 'Name asc',\r\n $count: true,\r\n };\r\n\r\n if (query) {\r\n dateQuery.$filter = `${dateQuery.$filter} and contains(tolower(Name), tolower('${query}'))`;\r\n }\r\n const options = {\r\n headers: {\r\n 'x-ms-refreshcampaigncache': 'true',\r\n },\r\n };\r\n\r\n return jsdata.Goal.findAll({\r\n query: dateQuery,\r\n select: ['Id', 'Name', 'GoalCategory', 'Status'],\r\n }, options).then((cmps) => {\r\n const { totalCount } = cmps;\r\n const items = _.compact(_.map(cmps, cmp => ({\r\n Id: cmp.Id,\r\n Name: cmp.Name,\r\n GoalCategory: cmp.GoalCategory,\r\n Status: cmp.Status,\r\n })));\r\n return {\r\n items,\r\n totalCount,\r\n };\r\n })\r\n .catch(() =>\r\n ({\r\n items: [],\r\n totalCount: 0,\r\n }));\r\n });\r\n };\r\n }\r\n render() {\r\n ReactDOM.render(this.isSelectorEnabled ?\r\n (\r\n \r\n ) : (
), this.el);\r\n return this;\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n}\r\n","import Promise from 'bluebird';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { FetchDataResponseType } from '@bingads-webui-fluent-component/entity-selector';\r\n\r\nimport { FetchDataResponseTypeExtend, FetchGoalFactoryParams } from './types';\r\n\r\nexport const getPaginationData = (page: number, pageSize: number) => ({\r\n top: pageSize,\r\n skip: (page - 1) * pageSize,\r\n count: true,\r\n});\r\n\r\nexport const mapGoalsToItems = goals => goals.map(goal => ({\r\n value: String(goal.Id),\r\n content: goal.Name,\r\n data: goal,\r\n}));\r\n\r\nconst fetchConversionGoals = (cid : string, aid : string, dataQuery: any) => edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Goals['Default.GetConversionGoals']\r\n .$makeCall({\r\n query: {\r\n ...dataQuery,\r\n },\r\n })\r\n .toPromise();\r\n\r\nexport const fetchConversionGoalFactory =\r\n ({\r\n cid, aid, options = {},\r\n }: FetchGoalFactoryParams) => ({\r\n page, pageSize, search, sortState,\r\n }): Promise<(FetchDataResponseType & FetchDataResponseTypeExtend)> => {\r\n const select = ['Id', 'Name', 'GoalCategory', 'Status', 'TrackingStatus', 'Type', 'IsMainConversionGoal', 'GoalDiagnosticsInfo'];\r\n\r\n let filter = '(Status eq Enum.GoalStatus\\'Active\\') and ((GoalCategory eq Enum.GoalCategory\\'InStoreVisit\\') eq false)';\r\n\r\n if (options.filter) {\r\n filter += options.filter;\r\n }\r\n\r\n if (search && search !== '') {\r\n filter += ` and (contains(tolower(Name), '${search.toLowerCase()}'))`;\r\n }\r\n\r\n const defaultOrder = { IsMainConversionGoal: 0 };\r\n const orderby = (sortState && sortState.sortColumn) ? { [sortState.sortColumn]: sortState.sortDirection === 'ascending' ? 0 : 1 } : defaultOrder;\r\n const dataQuery = {\r\n top: pageSize,\r\n skip: (page - 1) * pageSize,\r\n filter: { where: filter },\r\n orderby,\r\n count: true,\r\n select,\r\n };\r\n\r\n return fetchConversionGoals(cid, aid, dataQuery).then(({ '@odata.count': count, value: goals }) => ({\r\n items: mapGoalsToItems(goals),\r\n currentPage: page,\r\n count,\r\n totalPages: Math.ceil(count / pageSize),\r\n }));\r\n };\r\n","import {\r\n makeStyles,\r\n shorthands,\r\n tokens,\r\n typographyStyles,\r\n} from '@fluentui/react-components';\r\n\r\nexport const useTableStyles = makeStyles({\r\n dataGridWrapper: {\r\n width: '100%',\r\n ...shorthands.padding('10px', '5px'),\r\n ...shorthands.borderRadius('5px'),\r\n ...shorthands.border('2px', 'solid', tokens.colorNeutralBackground1Pressed),\r\n '& thead th:nth-child(2)': {\r\n width: '280px',\r\n },\r\n '& thead th:nth-child(3)': {\r\n width: '130px',\r\n },\r\n },\r\n accountCheckbox: {\r\n '& thead th:nth-child(1)': {\r\n width: '40px',\r\n },\r\n '& thead th:nth-child(2)': {\r\n width: '280px',\r\n },\r\n '& thead th:nth-child(3)': {\r\n width: '130px',\r\n },\r\n },\r\n dataGridContainer: {\r\n maxHeight: '350px',\r\n overflowY: 'auto',\r\n '& .loading-goal': {\r\n height: '100px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n },\r\n dataGrid: {\r\n width: '100%',\r\n marginTop: '15px',\r\n },\r\n mainConversionCheckbox: {\r\n width: '20px',\r\n },\r\n searchbox: {\r\n minWidth: '400px',\r\n marginLeft: '20px',\r\n },\r\n headerBar: {\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n ...shorthands.borderBottom('2px', 'solid', tokens.colorNeutralBackground1Pressed),\r\n paddingTop: '10px',\r\n paddingBottom: '15px',\r\n '& .show-select-control input[type=\"checkbox\"]': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n footer: {\r\n display: 'flex',\r\n ...shorthands.padding('10px', '10px'),\r\n '& .page-selector': {\r\n marginRight: '20px',\r\n maxWidth: 'max-content',\r\n '& label': {\r\n fontWeight: tokens.fontWeightRegular,\r\n },\r\n },\r\n },\r\n clearAllBtn: {\r\n width: '100px', // ui-next\r\n '& div': {\r\n justifyContent: 'center',\r\n },\r\n },\r\n headerTitle: {\r\n ...typographyStyles.caption1Strong,\r\n fontSize: tokens.fontSizeBase200,\r\n },\r\n});\r\n","import ContactIcon from '../media/contact.svg';\r\nimport AddToCartIcon from '../media/addToCart.svg';\r\nimport BookAppointmentIcon from '../media/bookAppointment.svg';\r\nimport DownloadIcon from '../media/download.svg';\r\nimport GetDirectionIcon from '../media/getDirection.svg';\r\nimport LeadFormIcon from '../media/leadForm.svg';\r\nimport OtherIcon from '../media/other.svg';\r\nimport OutboundClickIcon from '../media/outboundClick.svg';\r\nimport PageViewIcon from '../media/pageView.svg';\r\nimport PurchaseIcon from '../media/purchase.svg';\r\nimport RequestQuoteIcon from '../media/requestQuote.svg';\r\nimport SignupIcon from '../media/signup.svg';\r\nimport SubscribeIcon from '../media/subscribe.svg';\r\nimport CheckoutIcon from '../media/checkout.svg';\r\n\r\nimport { ErrorCodeMapping } from './types';\r\n\r\nexport const Scopes = Object.freeze({\r\n ACCOUNT: 'account-scope',\r\n CAMPAIGN: 'campaign-scope',\r\n});\r\n\r\nexport const trackingStatusMapping = {\r\n Unverified: _TL_('Unverified'),\r\n NoRecentConversion: _TL_('No recent conversions'),\r\n RecordingConversions: _TL_('Recording conversions'),\r\n TagInactive: _TL_('Tag inactive'),\r\n InactiveDueToTagUnavailable: _TL_('Unavailable UET'),\r\n};\r\n\r\nexport const GoalDiagnosticsInfoErrorCode = {\r\n UETMismatch: 'UETMismatch',\r\n UrlGoalInvalidParameter: 'UrlGoalInvalidParameter',\r\n EventGoalInvalidParameter: 'EventGoalInvalidParameter',\r\n UETActiveMissingConversionEvent: 'UETActiveMissingConversionEvent',\r\n NotUploadOfflineConversion: 'NotUploadOfflineConversion',\r\n\r\n // tracking status\r\n Unverified: 'Unverified',\r\n NoRecentConversion: 'NoRecentConversion',\r\n RecordingConversions: 'RecordingConversions',\r\n TagInactive: 'TagInactive',\r\n InactiveDueToTagUnavailable: 'InactiveDueToTagUnavailable',\r\n};\r\n\r\nexport const EXTERNAL_LINK = {\r\n CONVERSION_GOAL: 'conversion-goals',\r\n UET_TAG_PAGE: 'uet-tag',\r\n OFFLINE_GOALS: 'offline-conversions',\r\n};\r\n\r\nexport const warningPopupLocalizedMessage = {\r\n title: _TL_(\"You're leaving?\"),\r\n subtitle: _TL_(\"All changes will be discarded if you leave this page. You can still modify your campaign after it's created.\"),\r\n};\r\n\r\nexport const localizedParameters = {\r\n NoExpression: _TL_('no Expression'),\r\n NoValue: _TL_('no Value'), // ValueOperatorEnum\r\n EqualsTo: _TL_('equals to'),\r\n BeginsWith: _TL_('begins with'),\r\n Contains: _TL_('contains'),\r\n RegularExpression: _TL_('regular expression'),\r\n LessThan: _TL_('less than'),\r\n GreaterThan: _TL_('greater than'),\r\n};\r\n\r\nexport const needLocalizedPropName = {\r\n CurrentDestinationUrlOperatorName: 'CurrentDestinationUrlOperatorName',\r\n SuggestedDestinationUrlOperatorName: 'SuggestedDestinationUrlOperatorName',\r\n CurrentEventActionOperator: 'CurrentEventActionOperator',\r\n CurrentEventCategoryOperator: 'CurrentEventCategoryOperator',\r\n CurrentEventValueOperator: 'CurrentEventValueOperator',\r\n SuggestedEventActionOperator: 'SuggestedEventActionOperator',\r\n SuggestedEventCategoryOperator: 'SuggestedEventCategoryOperator',\r\n SuggestedEventValueOperator: 'SuggestedEventValueOperator',\r\n};\r\n\r\nexport const errorcodeMapping: { [key: string]: ErrorCodeMapping } = {\r\n [GoalDiagnosticsInfoErrorCode.UETMismatch]: {\r\n parameterPropertyName: 'UETMismatch',\r\n actionLink: EXTERNAL_LINK.CONVERSION_GOAL,\r\n actionTitle: _TL_('Troubleshoot Conversions Goals page'),\r\n helpText: _TL_('UET tags'),\r\n helpId: 'app51207',\r\n title: _TL_('Incorrectly matched UET tags'),\r\n description: _TL_('You are recording conversion events from a different UET tag.'),\r\n description2: _TL_('The Tag used by the goal is {{ CurrentTagName }} ({{ CurrentTagId }}), actual tag is {{ SuggestedTagName }} ({{ SuggestedTagId }}).'),\r\n requiredParameters: ['CurrentTagName', 'CurrentTagId', 'SuggestedTagName', 'SuggestedTagId'],\r\n },\r\n [GoalDiagnosticsInfoErrorCode.UrlGoalInvalidParameter]: {\r\n parameterPropertyName: 'FixDestinationUrlGoal',\r\n actionLink: EXTERNAL_LINK.CONVERSION_GOAL,\r\n actionTitle: _TL_('Troubleshoot conversion goals'),\r\n helpText: _TL_('conversion goals'),\r\n helpId: 'app54813',\r\n title: _TL_('Invalid Destination URL'),\r\n description: _TL_('We identified a potential error in your conversion goal setting, which might have resulted in missed tracking of conversions.'),\r\n description2: _TL_('The current URL setting is {{CurrentDestinationUrlOperatorName}} {{CurrentDestinationUrl}}. We recommend changing this to {{SuggestedDestinationUrlOperatorName}} {{SuggestedDestinationUrl}}.'),\r\n requiredParameters: ['CurrentDestinationUrlOperatorName', 'CurrentDestinationUrl', 'SuggestedDestinationUrlOperatorName', 'SuggestedDestinationUrl'],\r\n },\r\n [GoalDiagnosticsInfoErrorCode.EventGoalInvalidParameter]: {\r\n parameterPropertyName: 'FixEventGoal',\r\n actionLink: EXTERNAL_LINK.CONVERSION_GOAL,\r\n actionTitle: _TL_('Troubleshoot conversion goals'),\r\n helpText: _TL_('conversion goals.'),\r\n helpId: 'app54813',\r\n title: _TL_('Invalid conversion events'),\r\n description: _TL_('We identified a potential error in your conversion goal setting, which might have resulted in missed tracking of conversions.'),\r\n description2: _TL_('The current setting is {{current}}. We recommend changing this setting to {{suggested}}.'),\r\n requiredParameters: ['current', 'suggested'],\r\n },\r\n [GoalDiagnosticsInfoErrorCode.UETActiveMissingConversionEvent]: {\r\n actionLink: EXTERNAL_LINK.UET_TAG_PAGE,\r\n actionTitle: _TL_('Troubleshoot UET tag'),\r\n helpText: _TL_('conversion goals.'),\r\n helpId: 'app54813',\r\n title: _TL_('No events matched the goal definition'),\r\n description: _TL_('We\\'ve detected the UET tag on your website, but there have been no conversion events matching your definition in the last seven days. Check that the goal has the correct event definition.'),\r\n },\r\n [GoalDiagnosticsInfoErrorCode.NotUploadOfflineConversion]: {\r\n actionLink: EXTERNAL_LINK.OFFLINE_GOALS,\r\n actionTitle: _TL_('Go to offline conversion page'),\r\n helpText: _TL_('offline conversions'),\r\n helpId: 'app54554',\r\n title: _TL_('No offline conversions'),\r\n description: _TL_('No offline conversions were uploaded recently. Go to your offline goals to upload conversions that may be associated to this campaign.'),\r\n },\r\n\r\n // Default tracking status\r\n [GoalDiagnosticsInfoErrorCode.Unverified]: {\r\n actionLink: EXTERNAL_LINK.UET_TAG_PAGE,\r\n actionTitle: _TL_('Troubleshoot UET tag'),\r\n helpText: _TL_('using UET tags.'),\r\n helpId: 'app54867',\r\n title: _TL_('UET Unverified'),\r\n description: _TL_('The UET tag associated with your website has no activity in the past 24 hours.'),\r\n },\r\n [GoalDiagnosticsInfoErrorCode.NoRecentConversion]: {\r\n actionLink: EXTERNAL_LINK.CONVERSION_GOAL,\r\n actionTitle: _TL_('Troubleshoot Conversions Goals'),\r\n helpText: _TL_('conversion goals'),\r\n helpId: 'app54867',\r\n title: _TL_('No Recent Conversion'),\r\n description: _TL_('We\\'ve seen your UET tag but haven\\'t recorded any conversions in the last seven days.'),\r\n },\r\n [GoalDiagnosticsInfoErrorCode.TagInactive]: {\r\n actionLink: EXTERNAL_LINK.UET_TAG_PAGE,\r\n actionTitle: _TL_('Troubleshoot UET tag'),\r\n helpText: _TL_('using UET tags.'),\r\n helpId: 'app54867',\r\n title: _TL_('Inactive UET tag'),\r\n description: _TL_('Your UET tag has not recorded any conversions in the past seven days.'),\r\n },\r\n [GoalDiagnosticsInfoErrorCode.InactiveDueToTagUnavailable]: {\r\n actionLink: EXTERNAL_LINK.UET_TAG_PAGE,\r\n actionTitle: _TL_('Go to UET tag page'),\r\n helpText: _TL_('UET tags.'),\r\n helpId: 'app54813',\r\n title: _TL_('Unavailable UET'),\r\n description: _TL_('The account no longer has access to the UET tag. Permissions to a UET tag in another manager account may have been removed, or this account was transferred and lost permission to a UET tag in a previous manager account.'),\r\n },\r\n};\r\n\r\nexport const EMPTY_STATE = {\r\n NoGoalInitial: 'NoGoalInitial',\r\n SearchEmpty: 'SearchEmpty',\r\n};\r\n\r\nexport const healthyTrackingStatus = 'RecordingConversions';\r\n\r\nexport const categoryMapping = {\r\n Purchase: { text: _TL_('Purchase'), icon: PurchaseIcon },\r\n AddToCart: { text: _TL_('Add to cart'), icon: AddToCartIcon },\r\n BeginCheckout: { text: _TL_('Begin checkout'), icon: CheckoutIcon },\r\n Subcribe: { text: _TL_('Subscribe'), icon: SubscribeIcon },\r\n SubmitLeadForm: { text: _TL_('Submit lead form'), icon: LeadFormIcon },\r\n BookAppointment: { text: _TL_('Book appointment'), icon: BookAppointmentIcon },\r\n Signup: { text: _TL_('Sign - up'), icon: SignupIcon },\r\n RequestQuote: { text: _TL_('Request quote'), icon: RequestQuoteIcon },\r\n GetDirections: { text: _TL_('Get directions'), icon: GetDirectionIcon },\r\n OutboundClick: { text: _TL_('Outbound click'), icon: OutboundClickIcon },\r\n Contact: { text: _TL_('Contact'), icon: ContactIcon },\r\n PageView: { text: _TL_('Page view'), icon: PageViewIcon },\r\n Other: { text: _TL_('Other'), icon: OtherIcon },\r\n Download: { text: _TL_('Download'), icon: DownloadIcon },\r\n};\r\n","import { makeStyles, shorthands, tokens, typographyStyles, } from '@fluentui/react-components';\r\n\r\nexport const useTrackingStatusPopoverStyles = makeStyles({\r\n root: {\r\n color: tokens.colorStatusSuccessForeground1,\r\n backgroundColor: tokens.colorStatusSuccessBackground1,\r\n ...shorthands.borderColor(tokens.colorStatusSuccessBorder1),\r\n },\r\n warningState: {\r\n color: tokens.colorStatusWarningForeground2,\r\n backgroundColor: tokens.colorStatusWarningBackground1,\r\n ...shorthands.borderColor(tokens.colorStatusWarningBorder1),\r\n },\r\n popover: {\r\n maxWidth: 'fit-content',\r\n paddingRight: '30px',\r\n '& .tracking-status-col': {\r\n paddingRight: '10px',\r\n },\r\n },\r\n popoverLearnMore: {\r\n color: tokens.colorNeutralForeground3,\r\n },\r\n popoverContent: {\r\n maxWidth: '350px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n ...shorthands.gap('10px'),\r\n alignItems: 'flex-start',\r\n },\r\n title: {\r\n ...typographyStyles.title3,\r\n },\r\n});\r\n","import React from 'react';\r\nimport { Button, ButtonProps, mergeClasses } from '@fluentui/react-components';\r\nimport { ProtectedLink } from '@bingads-webui-campaign-react/protected-link';\r\n\r\nimport { I18n } from '../types';\r\nimport { warningPopupLocalizedMessage } from '../constants';\r\n\r\ninterface NavigationPopupProps {\r\n i18n: I18n;\r\n onNavigation: () => void;\r\n enabled?: boolean;\r\n confirmButtonText: string;\r\n appearance?: ButtonProps['appearance'];\r\n className?: string;\r\n}\r\n\r\nexport const NavigationPopup: React.FC = ({\r\n i18n, onNavigation, enabled, confirmButtonText, appearance, className,\r\n}) => {\r\n const dialogContent = (\r\n
\r\n

{i18n.getString(warningPopupLocalizedMessage.subtitle)}

\r\n
);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nNavigationPopup.defaultProps = {\r\n appearance: undefined,\r\n className: undefined,\r\n enabled: false,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext, useMemo } from 'react';\r\nimport { Popover,\r\n PopoverTrigger,\r\n PopoverSurface,\r\n mergeClasses,\r\n Badge, } from '@fluentui/react-components';\r\nimport { WarningRegular } from '@fluentui/react-icons';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\n\r\nimport { getRoutePathById, allSiteMap } from '@bingads-webui-react/with-site-map';\r\n\r\nimport { ErrorCodeMapping, TrackingStatusComponentProps, I18n, GoalType } from '../types';\r\nimport { useTrackingStatusPopoverStyles } from './tracking-status-popover-styles';\r\nimport { errorcodeMapping, GoalDiagnosticsInfoErrorCode, healthyTrackingStatus, localizedParameters, needLocalizedPropName, trackingStatusMapping } from '../constants';\r\nimport { generateEventGoalFixMessage } from '../utils';\r\nimport { NavigationPopup } from './navigation-popup';\r\n\r\nconst TrackingStatusComponent = React.forwardRef<\r\nHTMLDivElement,\r\nPartial\r\n>((props, ref) => {\r\n const { name = '', i18n } = props;\r\n const classes = useTrackingStatusPopoverStyles();\r\n const warningState = name !== healthyTrackingStatus;\r\n const displayName = trackingStatusMapping[name] ? i18n.getString(trackingStatusMapping[name]) : i18n.getString('not applicable');\r\n\r\n return (\r\n \r\n \r\n {warningState && }\r\n {displayName}\r\n \r\n
\r\n );\r\n});\r\n\r\ninterface LearnMoreComponentProps {\r\n i18n: I18n;\r\n config: ErrorCodeMapping;\r\n isCreationWorkflow: boolean;\r\n activityLogger?: {\r\n trace: (data: any) => void;\r\n };\r\n goalFixType: string\r\n}\r\n\r\nconst LearnMoreComponent: React.FC = ({\r\n i18n, config, activityLogger, goalFixType, isCreationWorkflow,\r\n}) => {\r\n const { scope } = useContext(ScopeContext) as any;\r\n\r\n const onNavigation = () => {\r\n if (activityLogger && activityLogger.trace) {\r\n activityLogger.trace(`[GoalSelectorV3] navigate to: ${config.actionLink} based on ${goalFixType || config.title}`);\r\n }\r\n scope.history.push({\r\n pathname: getRoutePathById(allSiteMap, config.actionLink),\r\n search: scope.history.location.search,\r\n });\r\n };\r\n const confirmButtonText = (config && config.actionTitle) ? i18n.getString(config.actionTitle) : i18n.getString(_TL_('Confirm'));\r\n\r\n return (\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nLearnMoreComponent.defaultProps = {\r\n activityLogger: undefined,\r\n};\r\n\r\ninterface TrackingStatusPopoverProps {\r\n i18n: I18n;\r\n goal: GoalType;\r\n isCreationWorkflow: boolean;\r\n activityLogger?: {\r\n trace: (data: any) => void;\r\n };\r\n}\r\n\r\nexport const TrackingStatusPopover: React.FC = ({\r\n i18n, goal, isCreationWorkflow, activityLogger,\r\n}) => {\r\n const goalFixType = _.get(goal, ['GoalDiagnosticsInfo', 'GoalFixType'], '');\r\n const config = (goalFixType ? errorcodeMapping[goalFixType] : null) as ErrorCodeMapping;\r\n const trackingStatusConfig = (goal.TrackingStatus ? errorcodeMapping[goal.TrackingStatus] : null) as ErrorCodeMapping;\r\n const isOfflineGoal = goal.Type === 'OfflineConversionGoal';\r\n\r\n const params = useMemo(() => {\r\n const parameterPropertyName = errorcodeMapping[goalFixType] && errorcodeMapping[goalFixType].parameterPropertyName;\r\n // @ts-ignore\r\n let rawParams = _.get(goal, ['GoalDiagnosticsInfo', parameterPropertyName], {});\r\n Object.keys(rawParams).forEach((key) => {\r\n if (needLocalizedPropName[key] && localizedParameters[rawParams[key]]) {\r\n rawParams[key] = i18n.getString(localizedParameters[rawParams[key]]);\r\n }\r\n });\r\n if (goalFixType === GoalDiagnosticsInfoErrorCode.EventGoalInvalidParameter) {\r\n rawParams = generateEventGoalFixMessage(i18n, rawParams);\r\n }\r\n return rawParams;\r\n }, [goal, goalFixType, i18n]);\r\n\r\n const classes = useTrackingStatusPopoverStyles();\r\n const trackingStatusHelp =\r\n trackingStatusConfig && isOfflineGoal ? i18n.getString(_TL_('We recommend reviewing your offline goals and uploading conversions associated to this campaign.')) :\r\n trackingStatusConfig && i18n.getString(trackingStatusConfig.description);\r\n const defaultParameters = config && config.requiredParameters && config.requiredParameters.reduce((obj, param) => {\r\n const newObj = { ...obj };\r\n newObj[param] = 'N/A';\r\n return newObj;\r\n }, {});\r\n\r\n return (config || trackingStatusConfig) ? (\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n {config ? i18n.getString(config.title) : trackingStatusConfig && (i18n.getString(trackingStatusConfig.title))}\r\n \r\n\r\n
\r\n {config ? (\r\n <>\r\n

{trackingStatusHelp}

\r\n

\r\n {i18n.getString(_TL_('Recommendation: '))}\r\n {i18n.getString(config.description)}\r\n {config.description2 && {i18n.getString(config.description2, { ...defaultParameters, ...params }) }}\r\n

\r\n \r\n ) : (\r\n

{trackingStatusHelp}

\r\n )}\r\n
\r\n {(config && config.helpId) ?\r\n ()\r\n :\r\n trackingStatusConfig && ()\r\n }\r\n
\r\n
\r\n \r\n
\r\n ) : ;\r\n};\r\n\r\nTrackingStatusPopover.defaultProps = {\r\n activityLogger: undefined,\r\n};\r\n","import { getRoutePathById, allSiteMap } from '@bingads-webui-react/with-site-map';\r\nimport _ from 'underscore';\r\n\r\nexport function buildQueryString(params, scope) {\r\n return params.reduce((result, param) => {\r\n const value = _.get(scope, ['values', param]);\r\n if (value != null) {\r\n return result.concat(`${param}=${value}`);\r\n }\r\n return result;\r\n }, []).join('&');\r\n}\r\n\r\nexport function getFullProductUrl(routeName, scope, extraParams = []) {\r\n const baseParams = ['aid', 'cid', 'uid'];\r\n const params = baseParams.concat(extraParams);\r\n const pathname = getRoutePathById(allSiteMap, routeName);\r\n const search = buildQueryString(params, scope);\r\n\r\n return `${pathname}?${search}`;\r\n}\r\n\r\ninterface messageType {\r\n currentMessages: string[]\r\n suggestedMessages: string[]\r\n}\r\nexport const generateEventGoalFixMessage = (i18n, parmas) => {\r\n const outputMessage: messageType = { currentMessages: [], suggestedMessages: [] };\r\n if (parmas.CurrentEventCategory && parmas.CurrentEventCategoryOperator) {\r\n outputMessage.currentMessages.push(i18n.getString(_TL_('\"category {{CurrentEventCategoryOperator}} {{CurrentEventCategory}}\"'), parmas));\r\n }\r\n if (parmas.CurrentEventAction && parmas.CurrentEventActionOperator) {\r\n outputMessage.currentMessages.push(i18n.getString(_TL_('\"action {{CurrentEventActionOperator}} {{CurrentEventAction}}\"'), parmas));\r\n }\r\n if (parmas.CurrentEventLabel && parmas.CurrentEventLabelOperator) {\r\n outputMessage.currentMessages.push(i18n.getString(_TL_('\"label {{CurrentEventLabelOperator}} {{CurrentEventLabel}}\"'), parmas));\r\n }\r\n if (parmas.CurrentEventValue && parmas.CurrentEventValueOperator) {\r\n outputMessage.currentMessages.push(i18n.getString(_TL_('\"value {{CurrentEventValueOperator}} {{CurrentEventValue}}\"'), parmas));\r\n }\r\n\r\n // populate for suggested\r\n if (parmas.SuggestedEventCategory && parmas.SuggestedEventCategoryOperator) {\r\n outputMessage.suggestedMessages.push(i18n.getString(_TL_('\"category {{SuggestedEventCategoryOperator}} {{SuggestedEventCategory}}\"'), parmas));\r\n }\r\n if (parmas.SuggestedEventAction && parmas.SuggestedEventActionOperator) {\r\n outputMessage.suggestedMessages.push(i18n.getString(_TL_('\"action {{SuggestedEventActionOperator}} {{SuggestedEventAction}}\"'), parmas));\r\n }\r\n if (parmas.SuggestedEventLabel && parmas.SuggestedEventLabelOperator) {\r\n outputMessage.suggestedMessages.push(i18n.getString(_TL_('\"label {{SuggestedEventLabelOperator}} {{SuggestedEventLabel}}\"'), parmas));\r\n }\r\n if (parmas.SuggestedEventValue && parmas.SuggestedEventValueOperator) {\r\n outputMessage.suggestedMessages.push(i18n.getString(_TL_('\"value {{SuggestedEventValueOperator}} {{SuggestedEventValue}}\"'), parmas));\r\n }\r\n return { current: outputMessage.currentMessages.join(', '), suggested: outputMessage.suggestedMessages.join(', ') };\r\n};\r\n","import { makeStyles, } from '@fluentui/react-components';\r\n\r\nexport const useEmptyStateStyle = makeStyles({\r\n emptyStateWrap: {\r\n '& .content-subtext': {\r\n marginTop: '10px',\r\n },\r\n },\r\n emptyStateLink: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n marginTop: '10px',\r\n },\r\n});\r\n","import React, { useContext } from 'react';\r\nimport { Image, } from '@fluentui/react-components';\r\nimport { EmptyState, EmptyStateContent, EmptyStateSize, EmptyStateSurfaceIcon } from '@bingads-webui-fluent-component/empty-state';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { allSiteMap, getRoutePathById } from '@bingads-webui-react/with-site-map';\r\n\r\nimport { EMPTY_STATE, EXTERNAL_LINK } from '../constants';\r\nimport { useEmptyStateStyle } from './empty-state-result-styles';\r\nimport SearchImageIcon from '../../media/search.jpg';\r\nimport SetupImageIcon from '../../media/setup.jpg';\r\nimport { I18n } from '../types';\r\nimport { NavigationPopup } from './navigation-popup';\r\n\r\nexport const emptyStateMapping = {\r\n [EMPTY_STATE.NoGoalInitial]: {\r\n title: _TL_('No conversion goals'),\r\n subtext1: _TL_('You can create a new conversion goal for this account on the conversion goals page.'),\r\n actionButton: true,\r\n actionButtonTitle: _TL_('Create conversion goals'),\r\n siteMapId: EXTERNAL_LINK.CONVERSION_GOAL,\r\n image: SetupImageIcon,\r\n },\r\n [EMPTY_STATE.SearchEmpty]: {\r\n title: _TL_('No results found'),\r\n subtext1: _TL_('Please search again using a conversion goal name.'),\r\n actionButton: false,\r\n actionButtonTitle: '',\r\n image: SearchImageIcon,\r\n },\r\n};\r\n\r\ninterface EmptyStateResultComponentProps {\r\n i18n: I18n;\r\n isCreationWorkflow: boolean | undefined;\r\n emptyState: typeof EMPTY_STATE[keyof typeof EMPTY_STATE];\r\n activityLogger: {\r\n trace: (data: any) => void;\r\n };\r\n}\r\n\r\nexport const EmptyStateResultComponent: React.FC = ({\r\n i18n, emptyState, isCreationWorkflow, activityLogger,\r\n}) => {\r\n const classes = useEmptyStateStyle();\r\n const config = emptyStateMapping[emptyState];\r\n const { scope } = useContext(ScopeContext) as any;\r\n\r\n const defaultOnClick = (siteMapId) => {\r\n if (activityLogger && activityLogger.trace) {\r\n activityLogger.trace(`[GoalSelectorV3] navigate to: ${siteMapId} based on ${config.title}`);\r\n }\r\n scope.history.push({\r\n pathname: getRoutePathById(allSiteMap, siteMapId),\r\n search: scope.history.location.search,\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {i18n.getString(_TL_('empty\r\n \r\n\r\n \r\n {config.actionButton ?\r\n defaultOnClick(config.siteMapId)} enabled={isCreationWorkflow} confirmButtonText={i18n.getString(config.actionButtonTitle)} />\r\n : null }\r\n \r\n
\r\n );\r\n};\r\n","import { makeStyles, shorthands, tokens, typographyStyles, } from '@fluentui/react-components';\r\n\r\nexport const useHeaderControlStyles = makeStyles({\r\n title: { ...typographyStyles.body1Strong },\r\n required: {\r\n color: tokens.colorStatusDangerForeground1,\r\n },\r\n resetButton: {\r\n ...shorthands.border('none'),\r\n backgroundColor: 'transparent',\r\n },\r\n wrapper: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignContent: 'center',\r\n ...shorthands.padding('10px', 0),\r\n },\r\n header: {\r\n marginBottom: '10px',\r\n '& .helpbutton ': {\r\n paddingLeft: '5px',\r\n display: 'inline-block',\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport { Field, mergeClasses, Radio, RadioGroup } from '@fluentui/react-components';\r\nimport { MessageBar, MessageBarBody, MessageBarTitle } from '@fluentui/react-message-bar';\r\n\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { useDataSource } from '@bingads-webui-react/data-source';\r\n\r\nimport { useHeaderControlStyles } from './header-control-styles';\r\nimport { Scopes } from '../constants';\r\nimport { I18n } from '../types';\r\n\r\nconst scopeOptions = {\r\n [Scopes.ACCOUNT]: _TL_('Use the account \"Include in conversions\" setting'),\r\n [Scopes.CAMPAIGN]: _TL_('Choose conversion goals for this campaign'),\r\n};\r\n\r\ninterface HeaderControlComponentProps {\r\n i18n: I18n;\r\n scope: string | undefined;\r\n setScope: (value)=> void;\r\n showNoMainGoalWarning: boolean;\r\n}\r\n\r\nexport const HeaderControlComponent: React.FC = ({\r\n i18n, scope, setScope, showNoMainGoalWarning,\r\n}) => {\r\n const {\r\n refetch, search,\r\n } = useDataSource();\r\n\r\n const classes = useHeaderControlStyles();\r\n const onChangeInternal = (_, data) => {\r\n setScope(data.value);\r\n search('');\r\n // @ts-ignore\r\n refetch();\r\n };\r\n\r\n return (\r\n
\r\n {i18n.getString(_TL_('Select conversion goals for this campaign'))}\r\n *\r\n \r\n
\r\n }\r\n >\r\n \r\n {Object.keys(scopeOptions).map((key, idx) =>\r\n )}\r\n \r\n {showNoMainGoalWarning && (\r\n \r\n \r\n {i18n.getString(_TL_('No account level conversion goals'))}\r\n {i18n.getString(_TL_('If there is no account-level conversion goal, you need to choose a specific conversion goal for this campaign.'))}\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n TableColumnDefinition,\r\n createTableColumn,\r\n Divider,\r\n TableCellLayout,\r\n Checkbox,\r\n mergeClasses,\r\n Image,\r\n Spinner,\r\n} from '@fluentui/react-components';\r\nimport {\r\n PageSizeSelector,\r\n Paginator, SearchBox, TableGridView,\r\n useRenderingData,\r\n} from '@bingads-webui-fluent-component/entity-selector';\r\nimport { SortDefinition, useDataSource } from '@bingads-webui-react/data-source';\r\n\r\nimport { ItemGoalType } from './types';\r\nimport { useTableStyles } from './table-view-section-styles';\r\nimport { categoryMapping, EMPTY_STATE, Scopes } from './constants';\r\nimport { TrackingStatusPopover } from './components/tracking-status-popover';\r\nimport { EmptyStateResultComponent } from './components/empty-state-result';\r\nimport { HeaderControlComponent } from './components/header-control';\r\nimport OtherIcon from '../media/other.svg';\r\n\r\nexport const TableViewSection: React.FC = ({\r\n i18n, childrenProps, customFilter, scope, isCreationWorkflow, activityLogger, setScope, ...resetProps\r\n}) => {\r\n const {\r\n sort, searchTerm, isLoading, count,\r\n } = useDataSource();\r\n const showSelectedOnly = false;\r\n const classes = useTableStyles();\r\n const [showNoMainGoalWarning, setShowNoMainGoalWarning] = useState(false);\r\n const [sortState, setSortState] = useState(undefined);\r\n const isAccountLevelScope = scope === Scopes.ACCOUNT;\r\n\r\n useEffect(() => {\r\n if (count === 0 && searchTerm === '' && !isLoading && isAccountLevelScope) {\r\n setShowNoMainGoalWarning(true);\r\n } else {\r\n setShowNoMainGoalWarning(false);\r\n }\r\n }, [count, isLoading, isAccountLevelScope, searchTerm]);\r\n\r\n const columns: TableColumnDefinition[] = [\r\n createTableColumn({\r\n columnId: 'Name',\r\n renderHeaderCell: () => {i18n.getString(_TL_('Conversion goal'))},\r\n renderCell: item => (\r\n }>\r\n {`${item.data.Name} ${item.data.IsMainConversionGoal ? i18n.getString(_TL_('(Account default)')) : ''}`}\r\n \r\n ),\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n compare: (a, b) => 1, // enable sorting\r\n }),\r\n createTableColumn({\r\n columnId: 'GoalCategory',\r\n renderHeaderCell: () => {i18n.getString(_TL_('Category'))},\r\n renderCell: item => (categoryMapping[item.data.GoalCategory] ? categoryMapping[item.data.GoalCategory].text : i18n.getString(_TL_('Unassigned'))),\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n compare: (a, b) => 1, // enable sorting\r\n }),\r\n createTableColumn({\r\n columnId: 'TrackingStatus',\r\n renderHeaderCell: () => {i18n.getString(_TL_('Tracking Status'))},\r\n renderCell: item => (\r\n \r\n ),\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n compare: (a, b) => 1, // enable sorting\r\n }),\r\n ];\r\n const {\r\n items,\r\n } = useRenderingData({\r\n mode: 'page',\r\n showSelectedOnly,\r\n customFilter,\r\n });\r\n\r\n const isSearchEmptyState = items && items.length === 0 && searchTerm;\r\n const renderingColumns = isAccountLevelScope ? [createTableColumn({\r\n columnId: 'IsMainConversionGoal',\r\n renderHeaderCell: () =>
,\r\n renderCell: item => (\r\n \r\n ),\r\n }), ...columns] : columns;\r\n\r\n const onHandleSort = (_ev, val) => {\r\n setSortState(val);\r\n if (activityLogger && activityLogger.trace && val) {\r\n activityLogger.trace(`[GoalSelectorV3] sort: ${JSON.stringify(val)}`);\r\n }\r\n sort((val as SortDefinition));\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {!showNoMainGoalWarning && (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {isLoading && (\r\n
\r\n )\r\n }\r\n {!isLoading && }\r\n
\r\n { isSearchEmptyState && !isLoading &&\r\n \r\n }\r\n { isSearchEmptyState && !isLoading ? <> :\r\n <>\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n }\r\n
\r\n )}\r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { ServerEntitySelectorEmbedded } from '@bingads-webui-fluent-component/entity-selector';\r\n\r\nimport { useGoalSelectorState } from './use-goal-selector-state';\r\nimport { GoalSelectorConfigProps } from './types';\r\nimport { fetchConversionGoalFactory } from './data';\r\nimport { TableViewSection } from './table-view-section';\r\nimport { EMPTY_STATE, Scopes } from './constants';\r\nimport { EmptyStateResultComponent } from './components/empty-state-result';\r\n\r\nexport const GoalSelector: React.FC<(GoalSelectorConfigProps)> = ({\r\n i18n,\r\n cid,\r\n aid,\r\n value: valueFromProps,\r\n onChange: onChangeFromProps,\r\n goalScopeSelection,\r\n isCreationWorkflow,\r\n activityLogger,\r\n ...props\r\n}) => {\r\n const [scope, setScope] = useState(goalScopeSelection);\r\n const [emptyStateNoGoal, setEmptyStateNoGoal] = useState(false);\r\n\r\n const fetchData = fetchConversionGoalFactory({\r\n options: scope === Scopes.ACCOUNT ? { filter: ' and (IsMainConversionGoal eq true)' } : {},\r\n cid,\r\n aid,\r\n });\r\n\r\n const onSetScope = (newScope) => {\r\n if (activityLogger && activityLogger.trace) {\r\n activityLogger.trace(`[GoalSelectorV3] goal scope change: ${newScope}`);\r\n }\r\n onChangeFromProps({\r\n goalScopeSelection: newScope,\r\n });\r\n\r\n setScope(newScope);\r\n };\r\n\r\n const onChangeGoalSelector = (items) => {\r\n onChangeFromProps({\r\n goalSelection: items,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n fetchConversionGoalFactory({ cid, aid })({\r\n page: 1, pageSize: 5, search: '', sortState: null,\r\n }).then((response) => {\r\n if (response && response.count === 0) {\r\n setEmptyStateNoGoal(true);\r\n }\r\n });\r\n }, [aid, cid]);\r\n\r\n const { value, onChange } = useGoalSelectorState({ value: valueFromProps, onChange: onChangeGoalSelector });\r\n if (emptyStateNoGoal) {\r\n return
;\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import { useCallback, useEffect, useRef, useState } from 'react';\r\n\r\nexport const useGoalSelectorState = ({\r\n value: valueFromProps,\r\n onChange: onChangeFromProps,\r\n}) => {\r\n const prevValueRef = useRef(null);\r\n const [value, setValue] = useState(valueFromProps.map(cmp => ({ value: String(cmp.Id), content: cmp.Name, data: cmp })));\r\n\r\n const onChange = useCallback((newSelectedGoal) => {\r\n setValue(newSelectedGoal);\r\n\r\n onChangeFromProps(newSelectedGoal.map(({ data }) => data));\r\n }, [onChangeFromProps]);\r\n\r\n useEffect(() => {\r\n if (prevValueRef.current !== valueFromProps) {\r\n setValue(valueFromProps.map(cmp => ({ value: String(cmp.Id), content: cmp.Name, data: cmp })));\r\n\r\n prevValueRef.current = valueFromProps;\r\n }\r\n }, [valueFromProps]);\r\n\r\n return {\r\n value,\r\n onChange,\r\n };\r\n};\r\n"],"names":["SupportedFontsSVGIcons","Arial","Bahnschrift","Calibri","Consolas","Garamond","Georgia","Impact","Tahoma","Verdana","fontFamilies","key","text","svg","fontWeights","_TL_","useFontsSelectorStyles","makeStyles","fontSelectWrapper","position","marginTop","tokens","spacingVerticalS","fontSelect","minWidth","width","backgroundColor","fontSelectValue","top","left","height","zIndex","transform","pointerEvents","fontSelectInputVisible","color","fontSelectInputTransparent","fontSize","FontsFamilySelector","_ref","id","i18n","label","value","onChange","className","inlinePopup","placeholder","selectClassName","overrideFontFamilies","classes","fontSelectId","concat","fontFamilyOptions","selectedFontSvg","useMemo","selectedFont","find","family","_jsxs","mergeClasses","children","_jsx","Body1Stronger","alt","src","Combobox","freeform","selectedOptions","onOptionSelect","_ev","data","optionValue","getString","map","Option","defaultProps","fontWeightSelectWrapper","fontWeightSelect","FontsWeightSelector","overrideFontWeights","fontWeightSelectId","fontWeightOptions","selectedFontWeightText","selectedFontWeight","weight","GiveFeedback","_React$PureComponent","_classCallCheck","_callSuper","arguments","_inherits","_createClass","addTrigger","triggerId","this","aEl","featureName","props","areaName","_this","ref","el","classnames","React","whitelistedGoalProperties","_","Goal","properties","cleanGoal","goal","apply","_toConsumableArray","ConversionGoalSelector","isSelectorEnabled","checkSelected","pageSize","ariaLabel","searchBoxAriaLabel","isMultiMode","showTrackingStatusIcon","isHideSaveBar","turnOnRemoveAlert","$dataRange","cid","aid","goalSelection","campaignConversionGoal","activityLogger","subTextOptions","onSelectDone","useCallback","selection","cleanedUpSelection","onScopeChange","scope","goalScopeSelection","fetch","query","pageNumber","formatDate","date","raw","then","dateRange","select","push","dataQuery","skip","startdate","start","enddate","end","filter","count","where","edmCampaign","Customers","$withKey","Accounts","Goals","get","_objectSpread","toPromise","_ref2","cmps","totalCount","items","cmp","baseItem","Id","Name","GoalCategory","Status","TrackingStatus","Type","catch","CampaignGoalLevelEditor","selectedItem","selectedItemsForMultiMode","item","campaign","sourceGoalSelectorOptions","messageConfig","TrackingStatusMapping","InactiveDueToTagUnavailable","i18nKey","NoRecentConversion","RecordingConversions","TagInactive","Unverified","GoalCategories","AddToCart","BeginCheckout","BookAppointment","Contact","Download","GetDirections","InStoreVisit","Other","OutboundClick","PageView","Purchase","RequestQuote","Signup","SubmitLeadForm","Subcribe","None","Scopes","Object","freeze","ACCOUNT","CAMPAIGN","ScopeOptions","GoalScopeSelector","renderHeaderFactory","isSelected","itemCount","rowItem","goalNameColumn","goalTypeColumn","TrackingStatusIcon","_Fragment","iconState","isAddedToResultList","isOfflineGoal","uetTagGlyphIcon","Glyphicon","title","trackingStatusIcon","glyph","iconStyle","renderItemFactory","_ref3","index","forwardedRef","rowItemClass","addIconClass","categoryI18nKey","arrowIcon","hasCampaignLevelGoals","length","_useState","useState","_useState2","_slicedToArray","selectedScope","setSelectedScope","onGlobalShortcut","e","preventDefault","document","getElementsByClassName","activeElement","type","forEach","getElementsByTagName","node","setAttribute","checked","useEffect","addEventListener","removeEventListener","newProps","renderHeader","renderItem","onSelect","onSelectAll","resultContainerOptions","onRemove","onRemoveAll","goalSelectorContainer","role","RadioGroup","name","signal","option","optionText","subText","goalSelector","GoalSelector","handleErrorFunc","IsConversionGoalSet","Wrapped","memo","Comp","withDefaultStyles","getStyles","SourceGoalSelector","_React$Component","state","updateResultList","dropdownOptions","toggle","updatedDropdownItem","onSelectAllClick","undefined","_ref$query","_ref$pageNumber","perfMarker","willFetchData","Promise","willRender","setState","done","goalCategory","renderEmptyList","stringKeys","emptyListContent","listHeader","renderActionBar","onClick","onKeyDown","submitEvent","tabIndex","actionBar","_this$props","i18nLegacy","isSelectedLoaded","_this$props2","_this$props3","customizedItem","setCustomizedItem","findItemIndex","resultList","_this2","options","renderFooter","_this$props4","itemsAdapter","i","newItem","isShowAddArrow","list","_this$getRenderers","getRenderers","EntitySelector","onFetch","enableArrowKeysSupport","searchBoxPlaceholder","enableOverflowTooltip","selectEntity","selectEntities","withDropdownMenu","withResultContainer","SingleGoalSelector","MultiGoalSelector","statusConfig","UserPaused","BudgetPaused","BudgetUserPaused","Deleted","Suspended","Active","AccountActive","AccountError","InProgress","Paused","Draft","Expired","CampaignUserPaused","CampaignBudgetPaused","CampaignBudgetUserPaused","PrivacyPending","TargetingTooNarrow","MultiSelectedItemComponent","hideStatus","status","onSelectCancel","getSelectedItemForMultiMode","resultListLen","selectedText","resultHeader","getDropdownOptions","renderEmptyDropdownText","getCustomDropdownText","isToggled","renderDropdownText","getResultContainerOptions","defaultOptions","onResultChanged","renderSelector","resultListAriaLabel","textOverflowStyle","textOverflow","overflow","whiteSpace","scrollbarStyle","overflowX","overflowY","_ref$palette","palette","_ref$iconFontFamily","iconFontFamily","paddingBottom","border","borderTop","borderLeft","borderRight","padding","borderBottom","paddingLeft","marginLeft","fontFamily","verticalAlign","content","themePrimary","display","cursor","textDecorationLine","float","neutralPrimary","margin","minHeight","background","outline","marginBottom","paddingTop","alignItems","maxWidth","marginRight","hideIcon","selectionCount","manuallyAddBrand","fontWeight","convertToMTFormat","campaignId","originalGoalSelection","mtFormat","isAdd","Action","GoalId","CampaignId","SubType","mtFormatGoals","originalIdSet","selectionIdSet","GoalSelectorView","_Backbone$View","_len","args","Array","_key","_ref$ariaLabel","_ref$searchBoxAriaLab","jsdata","_ref$turnOnRemoveAler","isSPA","CampaignSubType","isCPS","CampaignCashback","PersonalizedOffersEnabled","MonthlyBudget","CampaignConversionGoal","fetchConversionGoal","bind","selectedGoals","newScopeSelection","getPromise","dateQuery","$top","$skip","$filter","$select","$orderby","$count","findAll","headers","ReactDOM","_superPropGet","Backbone","mapGoalsToItems","goals","String","fetchConversionGoalFactory","page","search","sortState","toLowerCase","orderby","sortColumn","sortDirection","IsMainConversionGoal","$makeCall","fetchConversionGoals","currentPage","totalPages","Math","ceil","useTableStyles","dataGridWrapper","borderRadius","colorNeutralBackground1Pressed","accountCheckbox","dataGridContainer","maxHeight","justifyContent","dataGrid","mainConversionCheckbox","searchbox","headerBar","footer","fontWeightRegular","clearAllBtn","headerTitle","typographyStyles","caption1Strong","fontSizeBase200","trackingStatusMapping","GoalDiagnosticsInfoErrorCode","EXTERNAL_LINK","warningPopupLocalizedMessage","localizedParameters","NoExpression","NoValue","EqualsTo","BeginsWith","Contains","RegularExpression","LessThan","GreaterThan","needLocalizedPropName","CurrentDestinationUrlOperatorName","SuggestedDestinationUrlOperatorName","CurrentEventActionOperator","CurrentEventCategoryOperator","CurrentEventValueOperator","SuggestedEventActionOperator","SuggestedEventCategoryOperator","SuggestedEventValueOperator","errorcodeMapping","parameterPropertyName","actionLink","actionTitle","helpText","helpId","description","description2","requiredParameters","EMPTY_STATE","categoryMapping","icon","useTrackingStatusPopoverStyles","root","colorStatusSuccessForeground1","colorStatusSuccessBackground1","borderColor","colorStatusSuccessBorder1","warningState","colorStatusWarningForeground2","colorStatusWarningBackground1","colorStatusWarningBorder1","popover","paddingRight","popoverLearnMore","colorNeutralForeground3","popoverContent","flexDirection","gap","title3","NavigationPopup","onNavigation","enabled","confirmButtonText","appearance","dialogContent","dialogProps","confirmText","Button","TrackingStatusComponent","displayName","Badge","style","LearnMoreComponent","config","goalFixType","isCreationWorkflow","useContext","ScopeContext","trace","history","pathname","getRoutePathById","allSiteMap","location","linkText","topic","isGreyBackground","isUnderlineLink","TrackingStatusPopover","trackingStatusConfig","params","rawParams","keys","parmas","outputMessage","currentMessages","suggestedMessages","CurrentEventCategory","CurrentEventAction","CurrentEventLabel","CurrentEventLabelOperator","CurrentEventValue","SuggestedEventCategory","SuggestedEventAction","SuggestedEventLabel","SuggestedEventLabelOperator","SuggestedEventValue","current","join","suggested","generateEventGoalFixMessage","trackingStatusHelp","defaultParameters","reduce","obj","param","newObj","Popover","withArrow","openOnHover","mouseLeaveDelay","positioning","PopoverTrigger","disableButtonEnhancement","PopoverSurface","useEmptyStateStyle","emptyStateWrap","emptyStateLink","emptyStateMapping","subtext1","actionButton","actionButtonTitle","siteMapId","image","EmptyStateResultComponent","emptyState","EmptyState","size","EmptyStateSize","largeSurface","EmptyStateContent","subtext","EmptyStateSurfaceIcon","Image","defaultOnClick","useHeaderControlStyles","body1Strong","required","colorStatusDangerForeground1","resetButton","wrapper","alignContent","header","scopeOptions","HeaderControlComponent","setScope","showNoMainGoalWarning","refetch","useDataSource","Field","HelpButton","idx","Radio","MessageBar","intent","layout","MessageBarBody","MessageBarTitle","TableViewSection","childrenProps","customFilter","resetProps","sort","searchTerm","isLoading","showSelectedOnly","setShowNoMainGoalWarning","setSortState","isAccountLevelScope","columns","columnId","renderHeaderCell","renderCell","TableCellLayout","media","compare","a","b","useRenderingData","mode","isSearchEmptyState","renderingColumns","Checkbox","disabled","SearchBox","Spinner","TableGridView","aggregateMode","showClearAllHeader","disabledToggleWholeRow","disableClientSort","showDefaultSelectionHeader","appearanceRow","additionalDataGridProps","onSortChange","val","JSON","stringify","selectionMode","Divider","PageSizeSelector","pageSizeOptions","Paginator","valueFromProps","onChangeFromProps","emptyStateNoGoal","setEmptyStateNoGoal","fetchData","response","prevValueRef","useRef","setValue","newSelectedGoal","useGoalSelectorState","ServerEntitySelectorEmbedded","newScope"],"sourceRoot":""}