@washingtonpost/subs-de-inputs 0.4.1 → 0.4.2-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,7 +13,7 @@ export declare type Attribute = {
13
13
  name: string;
14
14
  approved_for_use?: boolean;
15
15
  collection_behavior?: (typeof CollectionBehaviors)[keyof typeof CollectionBehaviors];
16
- datatype: 'string';
16
+ datatype: string;
17
17
  explicit: boolean;
18
18
  multiple_value: boolean;
19
19
  last_modified_date: Number;
@@ -390,7 +390,7 @@ const DESelect = _ref => {
390
390
  disabled: true
391
391
  } : {};
392
392
  // sort and filter out archived values
393
- const values = config ? config.values.sort((a, b) => a.order - b.order).filter(value => value.archived !== true).filter(valuesFilter) : [];
393
+ const values = config ? [...config.values].sort((a, b) => a.order - b.order).filter(value => value.archived !== true).filter(valuesFilter) : [];
394
394
  return React__default.createElement(SelectWrapper, null, children && React__default.createElement(wpdsUiKit.Select.Root, {
395
395
  onValueChange: e => {
396
396
  setSelected(e);
@@ -1 +1 @@
1
- {"version":3,"file":"subs-de-inputs.cjs.development.js","sources":["../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/getAttributes.ts","../src/services/sendToGA.ts","../src/services/ingest.ts","../src/utils/push.ts","../src/components/DESelect/Dropdown.tsx","../src/components/DESelect/index.tsx"],"sourcesContent":["export type AttributeValue = {\n name: string;\n date_created: Number;\n last_modified_date: Number;\n archived: boolean;\n order: number;\n};\n\nexport const CollectionBehaviors = {\n COLLECT: 'COLLECT',\n DO_NOT_COLLECT: 'DO_NOT_COLLECT',\n} as const;\n\nexport type Attribute = {\n name: string;\n approved_for_use?: boolean;\n collection_behavior?: (typeof CollectionBehaviors)[keyof typeof CollectionBehaviors];\n datatype: 'string';\n explicit: boolean;\n multiple_value: boolean;\n last_modified_date: Number;\n date_created: Number;\n values: Array<AttributeValue>;\n};\n\nexport const AttributesState = {\n SUCCESS: '100',\n} as const;\n\nexport const IngestType = {\n EXPLICIT: 'explicit',\n IMPLICIT: 'implicit',\n} as const;\n\nexport const IngestResponseState = {\n SUCCESS: '100',\n SYSTEM_ERROR: '101',\n INVALID_TYPE: '102',\n INVALID_IDENTIFIER: '103',\n INVALID_DATA: '104',\n INVALID_ATTRIBUTE_DEFINITION: '105',\n INVALID_META_DEFINITION: '106',\n UNAUTHENTICATED: '107',\n MISMATCHED_IDENTIFIER: '108',\n DISABLED_ATTRIBUTE_DEFINITION: '109',\n DO_NOT_COLLECT: '110',\n} as const;\n","import { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\nimport { Attribute } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst attributesCache: Record<string, any> = {};\nexport const getAttributes: GetAttributesType = async ({\n fieldName,\n}: {\n fieldName: string;\n}) => {\n if (attributesCache[fieldName]) {\n return attributesCache[fieldName];\n }\n\n const fieldNames = [fieldName];\n\n try {\n const url = new URL(`${base}/attributes`);\n url.searchParams.set('attributes', fieldNames.join(','));\n\n const data = await fetch(url.toString(), {\n credentials: 'include',\n headers: JSON_HEADERS,\n });\n const json = await data.json();\n\n if (data.ok && json.status === ResponseStatus.SUCCESS) {\n const attributes = json.attributes || [];\n attributesCache[fieldName] = attributes;\n return attributes;\n } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n\ntype GetAttributesType = ({\n fieldName,\n}: {\n fieldName: string;\n}) => Promise<Attribute[]>;\n","const sendGAEvent = (props: {\n event: string;\n category: string;\n action: string;\n label: string;\n 'de-label': string;\n [key: string]: undefined | string | string[];\n}): void => {\n if (typeof window === 'undefined') {\n if (__DEV__) console.warn('NO WINDOW');\n return;\n }\n // Initialize dataLayer if needed\n window.dataLayer = window.dataLayer || [];\n\n const eventData: Record<string, any> = {\n ...props,\n };\n window.dataLayer.push(eventData);\n};\n\nexport const sendToGA: SendToGaType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n sendGAEvent({\n event: 'site-onpage-click',\n action: 'site-onpage-click',\n category: 'profile',\n\n label: fieldName,\n 'de-label': fieldName,\n [fieldName]: value,\n\n section: 'profile',\n subsection: source,\n });\n\n return true;\n};\n\ntype SendToGaType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<true>;\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n getCookie,\n} from '@washingtonpost/subs-sdk';\nimport { IngestResponseState, IngestType } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nexport const ingest: IngestType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n const url = `${base}/ingest`;\n\n const wapo_login_id = getCookie('wapo_login_id');\n\n const jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload = {\n jucid,\n ga,\n type: IngestType.EXPLICIT,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: {\n [fieldName]: [value],\n },\n metadata: { source },\n };\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: JSON_HEADERS,\n body: JSON.stringify(payload),\n });\n\n const json = await response.json();\n\n return json;\n } catch (e) {\n console.debug(e);\n return null;\n }\n};\n\ntype IngestType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<{\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\n","import {\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { getAttributes } from '../services/getAttributes';\nimport { sendToGA } from '../services/sendToGA';\nimport { hasRequiredPrivacyCookies } from './hasRequiredPrivacyCookies';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { ingest } from '../services/ingest';\n\nexport const push: PushType = async ({ submitData, source }) => {\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n const { fieldName } = submitData;\n\n const attributeInfo = await getAttributes({\n fieldName,\n });\n\n if (\n attributeInfo[0] &&\n attributeInfo[0].name === fieldName &&\n attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT\n ) {\n throw new Error('do not collect');\n }\n\n const type =\n attributeInfo[0] && attributeInfo[0].explicit === true\n ? IngestType.EXPLICIT\n : IngestType.IMPLICIT;\n\n if (!attributeInfo[0] && __DEV__) {\n console.warn(`no attribute info found for ${fieldName}, assuming implicit`);\n }\n\n if (type === IngestType.EXPLICIT) {\n return ingest({ submitData, source });\n } else {\n return sendToGA({ submitData, source });\n }\n};\n\ntype PushType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<\n | {\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n }\n | null\n | true\n>;\n","import React, { useEffect, useState } from 'react';\nimport { Icon, Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { useWindowSize } from '@washingtonpost/subs-hooks';\nimport { ChevronDown } from '@washingtonpost/wpds-assets';\n\ninterface IDropdownProps {\n id: string;\n label: string;\n values: Array<string>;\n required?: boolean;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n}\n\nconst StyledMobileSelect = styled('select', {\n padding: '12px 16px 12px 6px',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n backgroundColor: '$secondary',\n color: '$primary',\n fontFamily: '$meta',\n fontSize: '$100',\n fontWeight: '$light',\n lineHeight: '$125',\n paddingBlockRight: '$125',\n textOverflow: 'ellipsis',\n position: 'relative',\n borderColor: 'transparent',\n borderRightWidth: '10px',\n borderRightColor: 'transparent',\n appearance: 'none',\n '-webkit-appearance': 'none',\n '&:disabled': {\n backgroundColor: theme.colors.disabled,\n borderColor: theme.colors.disabled,\n color: theme.colors.onDisabled,\n cursor: 'not-allowed',\n },\n});\n\nconst StyledSelectWrapper = styled('div', {\n width: '100%',\n maxWidth: '380px',\n borderRadius: '$012',\n borderColor: '$subtle',\n borderStyle: 'solid',\n borderWidth: '1px',\n backgroundColor: '$secondary',\n position: 'relative',\n});\n\nconst StyledMobileOption = styled('option', {\n fontFamily: 'inherit',\n fontSize: 'inherit',\n color: 'inherit',\n});\n\n/**\n * Dropdown component. Uses wpds-ui-kit on desktop and native select on mobile.\n * @param {IDropdownProps} props The props.\n * @returns {React.ReactElement} The dropdown.\n */\nexport const Dropdown = ({\n id,\n label,\n values,\n required = false,\n defaultValue,\n onChange = () => {},\n disabled = false,\n}: IDropdownProps) => {\n const [answer, setAnswer] = useState<string>();\n const { isMobileSize } = useWindowSize();\n\n useEffect(() => {\n if (answer) onChange(answer);\n }, [answer]);\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n // helps maintain state between WPDS and native dropdowns\n const defaultValueProp = answer\n ? { defaultValue: answer }\n : defaultValue\n ? { defaultValue }\n : {};\n\n const defaultValuePropMobile = (value: string) => {\n if (answer) {\n return value === answer ? { selected: true } : {};\n }\n return value === defaultValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n placeholder={label}\n {...disabledProp}\n >\n <label>{label}</label>\n <StyledMobileOption\n value=\"\"\n disabled\n selected\n style={{ color: '#666666' }}\n >\n {label}\n </StyledMobileOption>\n {values.map((value) => (\n <StyledMobileOption\n value={value}\n key={value}\n {...defaultValuePropMobile(value)}\n >\n {value}\n </StyledMobileOption>\n ))}\n </StyledMobileSelect>\n <Icon\n label=\"\"\n size=\"100\"\n fill={theme.colors['gray80']}\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n right: '10px',\n top: '50%',\n transform: 'translateY(-50%)',\n }}\n >\n <ChevronDown style={{ position: 'absolute', right: '10px' }} />\n </Icon>\n </StyledSelectWrapper>\n ) : (\n <Select.Root\n onValueChange={(e) => setAnswer(e)}\n required={required}\n {...defaultValueProp}\n {...disabledProp}\n >\n <Select.Trigger data-test-id={`${id}-select-trigger`}>\n <Select.Label>{label}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content\n css={{ zIndex: theme.zIndices.page }}\n data-test-id={`${id}-select-content`}\n >\n {values.map((value) => (\n <Select.Item value={value} key={value}>\n {value}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled } from '@washingtonpost/wpds-ui-kit';\nimport { Attribute, AttributeValue } from '../../interfaces';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\nimport { Dropdown } from './Dropdown';\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute;\n defaultValue?: string;\n disabled?: boolean;\n submit: boolean;\n onChange?: ({ value }: { value: string }) => void;\n onFinished?: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n valuesFilter?: (value: AttributeValue) => boolean;\n selectProps?: {\n root?: any;\n trigger?: any;\n label?: any;\n value?: any;\n content?: any;\n item?: any;\n };\n children?: React.ReactNode;\n}\n\nconst scriptSrc = `${\n ENDPOINTS.staticAssets === 'https://subscribe.washingtonpost.com/static'\n ? 'https://www.washingtonpost.com/subscribe/static/'\n : ENDPOINTS.staticAssets\n}/de-utils/twpdeu.min.js`;\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n const scriptStatus = useScript(scriptSrc);\n\n useEffect(() => {\n const fetchConfig = async () => {\n try {\n const config = await window?.__twpdeu?.getFieldConfigs({ fieldName });\n if (config) {\n setConfig(config[0]);\n } else {\n console.error('unable to get config', fieldName);\n }\n } catch (e) {\n console.warn('unable to get config', fieldName, e);\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && !(children || config)) {\n fetchConfig();\n }\n }, [scriptStatus]);\n\n useEffect(() => {\n const submitSelected = async () => {\n try {\n const result = await window?.__twpdeu?.push({\n submitData: { fieldName, value: selected },\n source,\n });\n\n const isError =\n result === true\n ? false\n : result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n } catch (e) {\n onFinished({\n isFinished: false,\n isError: true,\n });\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && submit && selected) {\n submitSelected();\n }\n }, [scriptStatus, submit]);\n\n const defaultValueProp = defaultValue && config ? { defaultValue } : {};\n\n const isLoading = !(children || config);\n\n const disabledProp = disabled || isLoading ? { disabled: true } : {};\n\n // sort and filter out archived values\n const values = config\n ? config.values\n .sort((a, b) => a.order - b.order)\n .filter((value) => value.archived !== true)\n .filter(valuesFilter)\n : [];\n\n return (\n <SelectWrapper>\n {children && (\n <Select.Root\n onValueChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n {...defaultValueProp}\n {...disabledProp}\n >\n {children}\n </Select.Root>\n )}\n {!children && !config && (\n <Dropdown\n id={'loading'}\n label={'Loading...'}\n values={[]}\n disabled={true}\n />\n )}\n {!children && config && (\n <Dropdown\n id={config.name}\n label={label || config.name}\n onChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n values={values.map((value) => value.name)}\n defaultValue={defaultValue}\n disabled={disabled}\n />\n )}\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled('div', {\n boxSizing: 'border-box',\n display: 'flex',\n marginBottom: '$100',\n flexDirection: 'column',\n '& button': {\n padding: '1px 6px',\n },\n '& *': { boxSizing: 'border-box' },\n});\n"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","AttributesState","SUCCESS","IngestType","EXPLICIT","IMPLICIT","IngestResponseState","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code","base","ENDPOINTS","attributesCache","getAttributes","_ref","fieldName","fieldNames","url","URL","searchParams","set","join","data","fetch","toString","credentials","headers","JSON_HEADERS","json","ok","status","ResponseStatus","attributes","e","console","debug","sendGAEvent","props","process","env","NODE_ENV","warn","dataLayer","eventData","push","sendToGA","submitData","value","source","event","action","category","label","section","subsection","ingest","wapo_login_id","jucid","localStorage","getItem","ga","payload","type","metadata","response","method","body","JSON","stringify","Error","attributeInfo","name","collection_behavior","explicit","StyledMobileSelect","styled","padding","display","justifyContent","width","backgroundColor","color","fontFamily","fontSize","fontWeight","lineHeight","paddingBlockRight","textOverflow","position","borderColor","borderRightWidth","borderRightColor","appearance","theme","colors","disabled","onDisabled","cursor","StyledSelectWrapper","maxWidth","borderRadius","borderStyle","borderWidth","StyledMobileOption","Dropdown","id","values","required","defaultValue","onChange","answer","setAnswer","useState","isMobileSize","useWindowSize","useEffect","disabledProp","defaultValueProp","defaultValuePropMobile","selected","React","target","placeholder","style","map","key","Icon","size","fill","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","zIndices","page","Item","scriptSrc","staticAssets","DESelect","dataDictionaryConfig","submit","onFinished","valuesFilter","children","config","setConfig","setSelected","scriptStatus","useScript","fetchConfig","_window","__twpdeu","getFieldConfigs","error","ScriptStatus","READY","submitSelected","_window2","result","isError","isFinished","isLoading","sort","a","b","order","filter","archived","SelectWrapper","boxSizing","marginBottom","flexDirection"],"mappings":"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"}
1
+ {"version":3,"file":"subs-de-inputs.cjs.development.js","sources":["../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/getAttributes.ts","../src/services/sendToGA.ts","../src/services/ingest.ts","../src/utils/push.ts","../src/components/DESelect/Dropdown.tsx","../src/components/DESelect/index.tsx"],"sourcesContent":["export type AttributeValue = {\n name: string;\n date_created: Number;\n last_modified_date: Number;\n archived: boolean;\n order: number;\n};\n\nexport const CollectionBehaviors = {\n COLLECT: 'COLLECT',\n DO_NOT_COLLECT: 'DO_NOT_COLLECT',\n} as const;\n\nexport type Attribute = {\n name: string;\n approved_for_use?: boolean;\n collection_behavior?: (typeof CollectionBehaviors)[keyof typeof CollectionBehaviors];\n datatype: string;\n explicit: boolean;\n multiple_value: boolean;\n last_modified_date: Number;\n date_created: Number;\n values: Array<AttributeValue>;\n};\n\nexport const AttributesState = {\n SUCCESS: '100',\n} as const;\n\nexport const IngestType = {\n EXPLICIT: 'explicit',\n IMPLICIT: 'implicit',\n} as const;\n\nexport const IngestResponseState = {\n SUCCESS: '100',\n SYSTEM_ERROR: '101',\n INVALID_TYPE: '102',\n INVALID_IDENTIFIER: '103',\n INVALID_DATA: '104',\n INVALID_ATTRIBUTE_DEFINITION: '105',\n INVALID_META_DEFINITION: '106',\n UNAUTHENTICATED: '107',\n MISMATCHED_IDENTIFIER: '108',\n DISABLED_ATTRIBUTE_DEFINITION: '109',\n DO_NOT_COLLECT: '110',\n} as const;\n","import { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\nimport { Attribute } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst attributesCache: Record<string, any> = {};\nexport const getAttributes: GetAttributesType = async ({\n fieldName,\n}: {\n fieldName: string;\n}) => {\n if (attributesCache[fieldName]) {\n return attributesCache[fieldName];\n }\n\n const fieldNames = [fieldName];\n\n try {\n const url = new URL(`${base}/attributes`);\n url.searchParams.set('attributes', fieldNames.join(','));\n\n const data = await fetch(url.toString(), {\n credentials: 'include',\n headers: JSON_HEADERS,\n });\n const json = await data.json();\n\n if (data.ok && json.status === ResponseStatus.SUCCESS) {\n const attributes = json.attributes || [];\n attributesCache[fieldName] = attributes;\n return attributes;\n } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n\ntype GetAttributesType = ({\n fieldName,\n}: {\n fieldName: string;\n}) => Promise<Attribute[]>;\n","const sendGAEvent = (props: {\n event: string;\n category: string;\n action: string;\n label: string;\n 'de-label': string;\n [key: string]: undefined | string | string[];\n}): void => {\n if (typeof window === 'undefined') {\n if (__DEV__) console.warn('NO WINDOW');\n return;\n }\n // Initialize dataLayer if needed\n window.dataLayer = window.dataLayer || [];\n\n const eventData: Record<string, any> = {\n ...props,\n };\n window.dataLayer.push(eventData);\n};\n\nexport const sendToGA: SendToGaType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n sendGAEvent({\n event: 'site-onpage-click',\n action: 'site-onpage-click',\n category: 'profile',\n\n label: fieldName,\n 'de-label': fieldName,\n [fieldName]: value,\n\n section: 'profile',\n subsection: source,\n });\n\n return true;\n};\n\ntype SendToGaType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<true>;\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n getCookie,\n} from '@washingtonpost/subs-sdk';\nimport { IngestResponseState, IngestType } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nexport const ingest: IngestType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n const url = `${base}/ingest`;\n\n const wapo_login_id = getCookie('wapo_login_id');\n\n const jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload = {\n jucid,\n ga,\n type: IngestType.EXPLICIT,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: {\n [fieldName]: [value],\n },\n metadata: { source },\n };\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: JSON_HEADERS,\n body: JSON.stringify(payload),\n });\n\n const json = await response.json();\n\n return json;\n } catch (e) {\n console.debug(e);\n return null;\n }\n};\n\ntype IngestType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<{\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\n","import {\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { getAttributes } from '../services/getAttributes';\nimport { sendToGA } from '../services/sendToGA';\nimport { hasRequiredPrivacyCookies } from './hasRequiredPrivacyCookies';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { ingest } from '../services/ingest';\n\nexport const push: PushType = async ({ submitData, source }) => {\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n const { fieldName } = submitData;\n\n const attributeInfo = await getAttributes({\n fieldName,\n });\n\n if (\n attributeInfo[0] &&\n attributeInfo[0].name === fieldName &&\n attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT\n ) {\n throw new Error('do not collect');\n }\n\n const type =\n attributeInfo[0] && attributeInfo[0].explicit === true\n ? IngestType.EXPLICIT\n : IngestType.IMPLICIT;\n\n if (!attributeInfo[0] && __DEV__) {\n console.warn(`no attribute info found for ${fieldName}, assuming implicit`);\n }\n\n if (type === IngestType.EXPLICIT) {\n return ingest({ submitData, source });\n } else {\n return sendToGA({ submitData, source });\n }\n};\n\ntype PushType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<\n | {\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n }\n | null\n | true\n>;\n","import React, { useEffect, useState } from 'react';\nimport { Icon, Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { useWindowSize } from '@washingtonpost/subs-hooks';\nimport { ChevronDown } from '@washingtonpost/wpds-assets';\n\ninterface IDropdownProps {\n id: string;\n label: string;\n values: Array<string>;\n required?: boolean;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n}\n\nconst StyledMobileSelect = styled('select', {\n padding: '12px 16px 12px 6px',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n backgroundColor: '$secondary',\n color: '$primary',\n fontFamily: '$meta',\n fontSize: '$100',\n fontWeight: '$light',\n lineHeight: '$125',\n paddingBlockRight: '$125',\n textOverflow: 'ellipsis',\n position: 'relative',\n borderColor: 'transparent',\n borderRightWidth: '10px',\n borderRightColor: 'transparent',\n appearance: 'none',\n '-webkit-appearance': 'none',\n '&:disabled': {\n backgroundColor: theme.colors.disabled,\n borderColor: theme.colors.disabled,\n color: theme.colors.onDisabled,\n cursor: 'not-allowed',\n },\n});\n\nconst StyledSelectWrapper = styled('div', {\n width: '100%',\n maxWidth: '380px',\n borderRadius: '$012',\n borderColor: '$subtle',\n borderStyle: 'solid',\n borderWidth: '1px',\n backgroundColor: '$secondary',\n position: 'relative',\n});\n\nconst StyledMobileOption = styled('option', {\n fontFamily: 'inherit',\n fontSize: 'inherit',\n color: 'inherit',\n});\n\n/**\n * Dropdown component. Uses wpds-ui-kit on desktop and native select on mobile.\n * @param {IDropdownProps} props The props.\n * @returns {React.ReactElement} The dropdown.\n */\nexport const Dropdown = ({\n id,\n label,\n values,\n required = false,\n defaultValue,\n onChange = () => {},\n disabled = false,\n}: IDropdownProps) => {\n const [answer, setAnswer] = useState<string>();\n const { isMobileSize } = useWindowSize();\n\n useEffect(() => {\n if (answer) onChange(answer);\n }, [answer]);\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n // helps maintain state between WPDS and native dropdowns\n const defaultValueProp = answer\n ? { defaultValue: answer }\n : defaultValue\n ? { defaultValue }\n : {};\n\n const defaultValuePropMobile = (value: string) => {\n if (answer) {\n return value === answer ? { selected: true } : {};\n }\n return value === defaultValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n placeholder={label}\n {...disabledProp}\n >\n <label>{label}</label>\n <StyledMobileOption\n value=\"\"\n disabled\n selected\n style={{ color: '#666666' }}\n >\n {label}\n </StyledMobileOption>\n {values.map((value) => (\n <StyledMobileOption\n value={value}\n key={value}\n {...defaultValuePropMobile(value)}\n >\n {value}\n </StyledMobileOption>\n ))}\n </StyledMobileSelect>\n <Icon\n label=\"\"\n size=\"100\"\n fill={theme.colors['gray80']}\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n right: '10px',\n top: '50%',\n transform: 'translateY(-50%)',\n }}\n >\n <ChevronDown style={{ position: 'absolute', right: '10px' }} />\n </Icon>\n </StyledSelectWrapper>\n ) : (\n <Select.Root\n onValueChange={(e) => setAnswer(e)}\n required={required}\n {...defaultValueProp}\n {...disabledProp}\n >\n <Select.Trigger data-test-id={`${id}-select-trigger`}>\n <Select.Label>{label}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content\n css={{ zIndex: theme.zIndices.page }}\n data-test-id={`${id}-select-content`}\n >\n {values.map((value) => (\n <Select.Item value={value} key={value}>\n {value}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled } from '@washingtonpost/wpds-ui-kit';\nimport { Attribute, AttributeValue } from '../../interfaces';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\nimport { Dropdown } from './Dropdown';\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute;\n defaultValue?: string;\n disabled?: boolean;\n submit: boolean;\n onChange?: ({ value }: { value: string }) => void;\n onFinished?: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n valuesFilter?: (value: AttributeValue) => boolean;\n selectProps?: {\n root?: any;\n trigger?: any;\n label?: any;\n value?: any;\n content?: any;\n item?: any;\n };\n children?: React.ReactNode;\n}\n\nconst scriptSrc = `${\n ENDPOINTS.staticAssets === 'https://subscribe.washingtonpost.com/static'\n ? 'https://www.washingtonpost.com/subscribe/static/'\n : ENDPOINTS.staticAssets\n}/de-utils/twpdeu.min.js`;\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n const scriptStatus = useScript(scriptSrc);\n\n useEffect(() => {\n const fetchConfig = async () => {\n try {\n const config = await window?.__twpdeu?.getFieldConfigs({ fieldName });\n if (config) {\n setConfig(config[0]);\n } else {\n console.error('unable to get config', fieldName);\n }\n } catch (e) {\n console.warn('unable to get config', fieldName, e);\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && !(children || config)) {\n fetchConfig();\n }\n }, [scriptStatus]);\n\n useEffect(() => {\n const submitSelected = async () => {\n try {\n const result = await window?.__twpdeu?.push({\n submitData: { fieldName, value: selected },\n source,\n });\n\n const isError =\n result === true\n ? false\n : result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n } catch (e) {\n onFinished({\n isFinished: false,\n isError: true,\n });\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && submit && selected) {\n submitSelected();\n }\n }, [scriptStatus, submit]);\n\n const defaultValueProp = defaultValue && config ? { defaultValue } : {};\n\n const isLoading = !(children || config);\n\n const disabledProp = disabled || isLoading ? { disabled: true } : {};\n\n // sort and filter out archived values\n const values = config\n ? [...config.values]\n .sort((a, b) => a.order - b.order)\n .filter((value) => value.archived !== true)\n .filter(valuesFilter)\n : [];\n\n return (\n <SelectWrapper>\n {children && (\n <Select.Root\n onValueChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n {...defaultValueProp}\n {...disabledProp}\n >\n {children}\n </Select.Root>\n )}\n {!children && !config && (\n <Dropdown\n id={'loading'}\n label={'Loading...'}\n values={[]}\n disabled={true}\n />\n )}\n {!children && config && (\n <Dropdown\n id={config.name}\n label={label || config.name}\n onChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n values={values.map((value) => value.name)}\n defaultValue={defaultValue}\n disabled={disabled}\n />\n )}\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled('div', {\n boxSizing: 'border-box',\n display: 'flex',\n marginBottom: '$100',\n flexDirection: 'column',\n '& button': {\n padding: '1px 6px',\n },\n '& *': { boxSizing: 'border-box' },\n});\n"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","AttributesState","SUCCESS","IngestType","EXPLICIT","IMPLICIT","IngestResponseState","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code","base","ENDPOINTS","attributesCache","getAttributes","_ref","fieldName","fieldNames","url","URL","searchParams","set","join","data","fetch","toString","credentials","headers","JSON_HEADERS","json","ok","status","ResponseStatus","attributes","e","console","debug","sendGAEvent","props","process","env","NODE_ENV","warn","dataLayer","eventData","push","sendToGA","submitData","value","source","event","action","category","label","section","subsection","ingest","wapo_login_id","jucid","localStorage","getItem","ga","payload","type","metadata","response","method","body","JSON","stringify","Error","attributeInfo","name","collection_behavior","explicit","StyledMobileSelect","styled","padding","display","justifyContent","width","backgroundColor","color","fontFamily","fontSize","fontWeight","lineHeight","paddingBlockRight","textOverflow","position","borderColor","borderRightWidth","borderRightColor","appearance","theme","colors","disabled","onDisabled","cursor","StyledSelectWrapper","maxWidth","borderRadius","borderStyle","borderWidth","StyledMobileOption","Dropdown","id","values","required","defaultValue","onChange","answer","setAnswer","useState","isMobileSize","useWindowSize","useEffect","disabledProp","defaultValueProp","defaultValuePropMobile","selected","React","target","placeholder","style","map","key","Icon","size","fill","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","zIndices","page","Item","scriptSrc","staticAssets","DESelect","dataDictionaryConfig","submit","onFinished","valuesFilter","children","config","setConfig","setSelected","scriptStatus","useScript","fetchConfig","_window","__twpdeu","getFieldConfigs","error","ScriptStatus","READY","submitSelected","_window2","result","isError","isFinished","isLoading","sort","a","b","order","filter","archived","SelectWrapper","boxSizing","marginBottom","flexDirection"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("@washingtonpost/subs-sdk"),o=require("react"),a=(e=o)&&"object"==typeof e&&"default"in e?e.default:e,i=require("@washingtonpost/wpds-ui-kit"),s=require("@washingtonpost/subs-hooks"),n=require("@washingtonpost/wpds-assets");const r={COLLECT:"COLLECT",DO_NOT_COLLECT:"DO_NOT_COLLECT"},l={EXPLICIT:"explicit",IMPLICIT:"implicit"},d=()=>{var e;if("undefined"==typeof window)return!1;const o=t.getCookie("wp_usp"),a=null===(e=t.WPGeo())||void 0===e?void 0:e.country_code;return!(!o||"US"!==a)},c=t.ENDPOINTS.base+"/de/v1",u={},p=async e=>{let{fieldName:o}=e;if(u[o])return u[o];const a=[o];try{const e=new URL(c+"/attributes");e.searchParams.set("attributes",a.join(","));const i=await fetch(e.toString(),{credentials:"include",headers:t.JSON_HEADERS}),s=await i.json();if(i.ok&&s.status===t.ResponseStatus.SUCCESS){const e=s.attributes||[];return u[o]=e,e}return[]}catch(e){return console.debug(e),[]}},b=t.ENDPOINTS.base+"/de/v1",E=i.styled("select",{padding:"12px 16px 12px 6px",display:"flex",justifyContent:"space-between",width:"100%",backgroundColor:"$secondary",color:"$primary",fontFamily:"$meta",fontSize:"$100",fontWeight:"$light",lineHeight:"$125",paddingBlockRight:"$125",textOverflow:"ellipsis",position:"relative",borderColor:"transparent",borderRightWidth:"10px",borderRightColor:"transparent",appearance:"none","-webkit-appearance":"none","&:disabled":{backgroundColor:i.theme.colors.disabled,borderColor:i.theme.colors.disabled,color:i.theme.colors.onDisabled,cursor:"not-allowed"}}),g=i.styled("div",{width:"100%",maxWidth:"380px",borderRadius:"$012",borderColor:"$subtle",borderStyle:"solid",borderWidth:"1px",backgroundColor:"$secondary",position:"relative"}),m=i.styled("option",{fontFamily:"inherit",fontSize:"inherit",color:"inherit"}),h=e=>{let{id:t,label:r,values:l,required:d=!1,defaultValue:c,onChange:u=(()=>{}),disabled:p=!1}=e;const[b,h]=o.useState(),{isMobileSize:f}=s.useWindowSize();o.useEffect(()=>{b&&u(b)},[b]);const I=p?{disabled:!0}:{},S=b?{defaultValue:b}:c?{defaultValue:c}:{},w=e=>b?e===b?{selected:!0}:{}:e===c?{selected:!0}:{};return f?a.createElement(g,null,a.createElement(E,{id:"",required:d,onChange:e=>h(e.target.value),placeholder:r,...I},a.createElement("label",null,r),a.createElement(m,{value:"",disabled:!0,selected:!0,style:{color:"#666666"}},r),l.map(e=>a.createElement(m,{value:e,key:e,...w(e)},e))),a.createElement(i.Icon,{label:"",size:"100",fill:i.theme.colors.gray80,style:{pointerEvents:"none",position:"absolute",right:"10px",top:"50%",transform:"translateY(-50%)"}},a.createElement(n.ChevronDown,{style:{position:"absolute",right:"10px"}}))):a.createElement(i.Select.Root,{onValueChange:e=>h(e),required:d,...S,...I},a.createElement(i.Select.Trigger,{"data-test-id":t+"-select-trigger"},a.createElement(i.Select.Label,null,r),a.createElement(i.Select.Value,null)),a.createElement(i.Select.Content,{css:{zIndex:i.theme.zIndices.page},"data-test-id":t+"-select-content"},l.map(e=>a.createElement(i.Select.Item,{value:e,key:e},e))))},f=("https://subscribe.washingtonpost.com/static"===t.ENDPOINTS.staticAssets?"https://www.washingtonpost.com/subscribe/static/":t.ENDPOINTS.staticAssets)+"/de-utils/twpdeu.min.js",I=i.styled("div",{boxSizing:"border-box",display:"flex",marginBottom:"$100",flexDirection:"column","& button":{padding:"1px 6px"},"& *":{boxSizing:"border-box"}});exports.AttributesState={SUCCESS:"100"},exports.CollectionBehaviors=r,exports.DESelect=e=>{let{source:n,fieldName:r,label:l,dataDictionaryConfig:d,defaultValue:c,disabled:u,submit:p,onChange:b=(()=>{}),onFinished:E=(()=>{}),valuesFilter:g=(()=>!0),children:m}=e;const[S,w]=o.useState(d),[C,y]=o.useState(""),v=s.useScript(f);o.useEffect(()=>{v!==s.ScriptStatus.READY||m||S||(async()=>{try{var e;const t=await(null===(e=window)||void 0===e||null===(e=e.__twpdeu)||void 0===e?void 0:e.getFieldConfigs({fieldName:r}));t?w(t[0]):console.error("unable to get config",r)}catch(e){console.warn("unable to get config",r,e)}})()},[v]),o.useEffect(()=>{v===s.ScriptStatus.READY&&p&&C&&(async()=>{try{var e;const o=await(null===(e=window)||void 0===e||null===(e=e.__twpdeu)||void 0===e?void 0:e.push({submitData:{fieldName:r,value:C},source:n}));E({isFinished:!0,isError:!0!==o&&(!o||o.status!==t.ResponseStatus.SUCCESS)})}catch(e){E({isFinished:!1,isError:!0})}})()},[v,p]);const N=c&&S?{defaultValue:c}:{},T=u||!m&&!S?{disabled:!0}:{},D=S?S.values.sort((e,t)=>e.order-t.order).filter(e=>!0!==e.archived).filter(g):[];return a.createElement(I,null,m&&a.createElement(i.Select.Root,{onValueChange:e=>{y(e),b({value:e})},...N,...T},m),!m&&!S&&a.createElement(h,{id:"loading",label:"Loading...",values:[],disabled:!0}),!m&&S&&a.createElement(h,{id:S.name,label:l||S.name,onChange:e=>{y(e),b({value:e})},values:D.map(e=>e.name),defaultValue:c,disabled:u}))},exports.IngestResponseState={SUCCESS:"100",SYSTEM_ERROR:"101",INVALID_TYPE:"102",INVALID_IDENTIFIER:"103",INVALID_DATA:"104",INVALID_ATTRIBUTE_DEFINITION:"105",INVALID_META_DEFINITION:"106",UNAUTHENTICATED:"107",MISMATCHED_IDENTIFIER:"108",DISABLED_ATTRIBUTE_DEFINITION:"109",DO_NOT_COLLECT:"110"},exports.IngestType=l,exports.getAttributes=p,exports.hasRequiredPrivacyCookies=d,exports.push=async e=>{let{submitData:o,source:a}=e;if(!d())throw new Error("does not satisfy cookie check");const{fieldName:i}=o,s=await p({fieldName:i});if(s[0]&&s[0].name===i&&s[0].collection_behavior===r.DO_NOT_COLLECT)throw new Error("do not collect");const n=s[0]&&!0===s[0].explicit?l.EXPLICIT:l.IMPLICIT;return s[0]||"production"===process.env.NODE_ENV||console.warn(`no attribute info found for ${i}, assuming implicit`),n===l.EXPLICIT?(async e=>{let{submitData:{fieldName:o,value:a},source:i}=e;const s=b+"/ingest",n=t.getCookie("wapo_login_id"),r={jucid:localStorage.getItem("uuid"),ga:t.getCookie("_ga"),type:l.EXPLICIT,wapo_login_id:n,data:{[o]:[a]},metadata:{source:i}};try{const e=await fetch(s,{method:"POST",credentials:"include",headers:t.JSON_HEADERS,body:JSON.stringify(r)});return await e.json()}catch(e){return console.debug(e),null}})({submitData:o,source:a}):(async e=>{let{submitData:{fieldName:t,value:o},source:a}=e;return(e=>{if("undefined"==typeof window)return void("production"!==process.env.NODE_ENV&&console.warn("NO WINDOW"));window.dataLayer=window.dataLayer||[];const t={...e};window.dataLayer.push(t)})({event:"site-onpage-click",action:"site-onpage-click",category:"profile",label:t,"de-label":t,[t]:o,section:"profile",subsection:a}),!0})({submitData:o,source:a})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("@washingtonpost/subs-sdk"),o=require("react"),a=(e=o)&&"object"==typeof e&&"default"in e?e.default:e,i=require("@washingtonpost/wpds-ui-kit"),s=require("@washingtonpost/subs-hooks"),n=require("@washingtonpost/wpds-assets");const r={COLLECT:"COLLECT",DO_NOT_COLLECT:"DO_NOT_COLLECT"},l={EXPLICIT:"explicit",IMPLICIT:"implicit"},d=()=>{var e;if("undefined"==typeof window)return!1;const o=t.getCookie("wp_usp"),a=null===(e=t.WPGeo())||void 0===e?void 0:e.country_code;return!(!o||"US"!==a)},c=t.ENDPOINTS.base+"/de/v1",u={},p=async e=>{let{fieldName:o}=e;if(u[o])return u[o];const a=[o];try{const e=new URL(c+"/attributes");e.searchParams.set("attributes",a.join(","));const i=await fetch(e.toString(),{credentials:"include",headers:t.JSON_HEADERS}),s=await i.json();if(i.ok&&s.status===t.ResponseStatus.SUCCESS){const e=s.attributes||[];return u[o]=e,e}return[]}catch(e){return console.debug(e),[]}},b=t.ENDPOINTS.base+"/de/v1",E=i.styled("select",{padding:"12px 16px 12px 6px",display:"flex",justifyContent:"space-between",width:"100%",backgroundColor:"$secondary",color:"$primary",fontFamily:"$meta",fontSize:"$100",fontWeight:"$light",lineHeight:"$125",paddingBlockRight:"$125",textOverflow:"ellipsis",position:"relative",borderColor:"transparent",borderRightWidth:"10px",borderRightColor:"transparent",appearance:"none","-webkit-appearance":"none","&:disabled":{backgroundColor:i.theme.colors.disabled,borderColor:i.theme.colors.disabled,color:i.theme.colors.onDisabled,cursor:"not-allowed"}}),g=i.styled("div",{width:"100%",maxWidth:"380px",borderRadius:"$012",borderColor:"$subtle",borderStyle:"solid",borderWidth:"1px",backgroundColor:"$secondary",position:"relative"}),m=i.styled("option",{fontFamily:"inherit",fontSize:"inherit",color:"inherit"}),h=e=>{let{id:t,label:r,values:l,required:d=!1,defaultValue:c,onChange:u=(()=>{}),disabled:p=!1}=e;const[b,h]=o.useState(),{isMobileSize:f}=s.useWindowSize();o.useEffect(()=>{b&&u(b)},[b]);const I=p?{disabled:!0}:{},S=b?{defaultValue:b}:c?{defaultValue:c}:{},w=e=>b?e===b?{selected:!0}:{}:e===c?{selected:!0}:{};return f?a.createElement(g,null,a.createElement(E,{id:"",required:d,onChange:e=>h(e.target.value),placeholder:r,...I},a.createElement("label",null,r),a.createElement(m,{value:"",disabled:!0,selected:!0,style:{color:"#666666"}},r),l.map(e=>a.createElement(m,{value:e,key:e,...w(e)},e))),a.createElement(i.Icon,{label:"",size:"100",fill:i.theme.colors.gray80,style:{pointerEvents:"none",position:"absolute",right:"10px",top:"50%",transform:"translateY(-50%)"}},a.createElement(n.ChevronDown,{style:{position:"absolute",right:"10px"}}))):a.createElement(i.Select.Root,{onValueChange:e=>h(e),required:d,...S,...I},a.createElement(i.Select.Trigger,{"data-test-id":t+"-select-trigger"},a.createElement(i.Select.Label,null,r),a.createElement(i.Select.Value,null)),a.createElement(i.Select.Content,{css:{zIndex:i.theme.zIndices.page},"data-test-id":t+"-select-content"},l.map(e=>a.createElement(i.Select.Item,{value:e,key:e},e))))},f=("https://subscribe.washingtonpost.com/static"===t.ENDPOINTS.staticAssets?"https://www.washingtonpost.com/subscribe/static/":t.ENDPOINTS.staticAssets)+"/de-utils/twpdeu.min.js",I=i.styled("div",{boxSizing:"border-box",display:"flex",marginBottom:"$100",flexDirection:"column","& button":{padding:"1px 6px"},"& *":{boxSizing:"border-box"}});exports.AttributesState={SUCCESS:"100"},exports.CollectionBehaviors=r,exports.DESelect=e=>{let{source:n,fieldName:r,label:l,dataDictionaryConfig:d,defaultValue:c,disabled:u,submit:p,onChange:b=(()=>{}),onFinished:E=(()=>{}),valuesFilter:g=(()=>!0),children:m}=e;const[S,w]=o.useState(d),[C,y]=o.useState(""),v=s.useScript(f);o.useEffect(()=>{v!==s.ScriptStatus.READY||m||S||(async()=>{try{var e;const t=await(null===(e=window)||void 0===e||null===(e=e.__twpdeu)||void 0===e?void 0:e.getFieldConfigs({fieldName:r}));t?w(t[0]):console.error("unable to get config",r)}catch(e){console.warn("unable to get config",r,e)}})()},[v]),o.useEffect(()=>{v===s.ScriptStatus.READY&&p&&C&&(async()=>{try{var e;const o=await(null===(e=window)||void 0===e||null===(e=e.__twpdeu)||void 0===e?void 0:e.push({submitData:{fieldName:r,value:C},source:n}));E({isFinished:!0,isError:!0!==o&&(!o||o.status!==t.ResponseStatus.SUCCESS)})}catch(e){E({isFinished:!1,isError:!0})}})()},[v,p]);const N=c&&S?{defaultValue:c}:{},T=u||!m&&!S?{disabled:!0}:{},D=S?[...S.values].sort((e,t)=>e.order-t.order).filter(e=>!0!==e.archived).filter(g):[];return a.createElement(I,null,m&&a.createElement(i.Select.Root,{onValueChange:e=>{y(e),b({value:e})},...N,...T},m),!m&&!S&&a.createElement(h,{id:"loading",label:"Loading...",values:[],disabled:!0}),!m&&S&&a.createElement(h,{id:S.name,label:l||S.name,onChange:e=>{y(e),b({value:e})},values:D.map(e=>e.name),defaultValue:c,disabled:u}))},exports.IngestResponseState={SUCCESS:"100",SYSTEM_ERROR:"101",INVALID_TYPE:"102",INVALID_IDENTIFIER:"103",INVALID_DATA:"104",INVALID_ATTRIBUTE_DEFINITION:"105",INVALID_META_DEFINITION:"106",UNAUTHENTICATED:"107",MISMATCHED_IDENTIFIER:"108",DISABLED_ATTRIBUTE_DEFINITION:"109",DO_NOT_COLLECT:"110"},exports.IngestType=l,exports.getAttributes=p,exports.hasRequiredPrivacyCookies=d,exports.push=async e=>{let{submitData:o,source:a}=e;if(!d())throw new Error("does not satisfy cookie check");const{fieldName:i}=o,s=await p({fieldName:i});if(s[0]&&s[0].name===i&&s[0].collection_behavior===r.DO_NOT_COLLECT)throw new Error("do not collect");const n=s[0]&&!0===s[0].explicit?l.EXPLICIT:l.IMPLICIT;return s[0]||"production"===process.env.NODE_ENV||console.warn(`no attribute info found for ${i}, assuming implicit`),n===l.EXPLICIT?(async e=>{let{submitData:{fieldName:o,value:a},source:i}=e;const s=b+"/ingest",n=t.getCookie("wapo_login_id"),r={jucid:localStorage.getItem("uuid"),ga:t.getCookie("_ga"),type:l.EXPLICIT,wapo_login_id:n,data:{[o]:[a]},metadata:{source:i}};try{const e=await fetch(s,{method:"POST",credentials:"include",headers:t.JSON_HEADERS,body:JSON.stringify(r)});return await e.json()}catch(e){return console.debug(e),null}})({submitData:o,source:a}):(async e=>{let{submitData:{fieldName:t,value:o},source:a}=e;return(e=>{if("undefined"==typeof window)return void("production"!==process.env.NODE_ENV&&console.warn("NO WINDOW"));window.dataLayer=window.dataLayer||[];const t={...e};window.dataLayer.push(t)})({event:"site-onpage-click",action:"site-onpage-click",category:"profile",label:t,"de-label":t,[t]:o,section:"profile",subsection:a}),!0})({submitData:o,source:a})};
2
2
  //# sourceMappingURL=subs-de-inputs.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subs-de-inputs.cjs.production.min.js","sources":["../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/getAttributes.ts","../src/services/ingest.ts","../src/components/DESelect/Dropdown.tsx","../src/components/DESelect/index.tsx","../src/utils/push.ts","../src/services/sendToGA.ts"],"sourcesContent":["export type AttributeValue = {\n name: string;\n date_created: Number;\n last_modified_date: Number;\n archived: boolean;\n order: number;\n};\n\nexport const CollectionBehaviors = {\n COLLECT: 'COLLECT',\n DO_NOT_COLLECT: 'DO_NOT_COLLECT',\n} as const;\n\nexport type Attribute = {\n name: string;\n approved_for_use?: boolean;\n collection_behavior?: (typeof CollectionBehaviors)[keyof typeof CollectionBehaviors];\n datatype: 'string';\n explicit: boolean;\n multiple_value: boolean;\n last_modified_date: Number;\n date_created: Number;\n values: Array<AttributeValue>;\n};\n\nexport const AttributesState = {\n SUCCESS: '100',\n} as const;\n\nexport const IngestType = {\n EXPLICIT: 'explicit',\n IMPLICIT: 'implicit',\n} as const;\n\nexport const IngestResponseState = {\n SUCCESS: '100',\n SYSTEM_ERROR: '101',\n INVALID_TYPE: '102',\n INVALID_IDENTIFIER: '103',\n INVALID_DATA: '104',\n INVALID_ATTRIBUTE_DEFINITION: '105',\n INVALID_META_DEFINITION: '106',\n UNAUTHENTICATED: '107',\n MISMATCHED_IDENTIFIER: '108',\n DISABLED_ATTRIBUTE_DEFINITION: '109',\n DO_NOT_COLLECT: '110',\n} as const;\n","import { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\nimport { Attribute } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst attributesCache: Record<string, any> = {};\nexport const getAttributes: GetAttributesType = async ({\n fieldName,\n}: {\n fieldName: string;\n}) => {\n if (attributesCache[fieldName]) {\n return attributesCache[fieldName];\n }\n\n const fieldNames = [fieldName];\n\n try {\n const url = new URL(`${base}/attributes`);\n url.searchParams.set('attributes', fieldNames.join(','));\n\n const data = await fetch(url.toString(), {\n credentials: 'include',\n headers: JSON_HEADERS,\n });\n const json = await data.json();\n\n if (data.ok && json.status === ResponseStatus.SUCCESS) {\n const attributes = json.attributes || [];\n attributesCache[fieldName] = attributes;\n return attributes;\n } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n\ntype GetAttributesType = ({\n fieldName,\n}: {\n fieldName: string;\n}) => Promise<Attribute[]>;\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n getCookie,\n} from '@washingtonpost/subs-sdk';\nimport { IngestResponseState, IngestType } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nexport const ingest: IngestType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n const url = `${base}/ingest`;\n\n const wapo_login_id = getCookie('wapo_login_id');\n\n const jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload = {\n jucid,\n ga,\n type: IngestType.EXPLICIT,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: {\n [fieldName]: [value],\n },\n metadata: { source },\n };\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: JSON_HEADERS,\n body: JSON.stringify(payload),\n });\n\n const json = await response.json();\n\n return json;\n } catch (e) {\n console.debug(e);\n return null;\n }\n};\n\ntype IngestType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<{\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\n","import React, { useEffect, useState } from 'react';\nimport { Icon, Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { useWindowSize } from '@washingtonpost/subs-hooks';\nimport { ChevronDown } from '@washingtonpost/wpds-assets';\n\ninterface IDropdownProps {\n id: string;\n label: string;\n values: Array<string>;\n required?: boolean;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n}\n\nconst StyledMobileSelect = styled('select', {\n padding: '12px 16px 12px 6px',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n backgroundColor: '$secondary',\n color: '$primary',\n fontFamily: '$meta',\n fontSize: '$100',\n fontWeight: '$light',\n lineHeight: '$125',\n paddingBlockRight: '$125',\n textOverflow: 'ellipsis',\n position: 'relative',\n borderColor: 'transparent',\n borderRightWidth: '10px',\n borderRightColor: 'transparent',\n appearance: 'none',\n '-webkit-appearance': 'none',\n '&:disabled': {\n backgroundColor: theme.colors.disabled,\n borderColor: theme.colors.disabled,\n color: theme.colors.onDisabled,\n cursor: 'not-allowed',\n },\n});\n\nconst StyledSelectWrapper = styled('div', {\n width: '100%',\n maxWidth: '380px',\n borderRadius: '$012',\n borderColor: '$subtle',\n borderStyle: 'solid',\n borderWidth: '1px',\n backgroundColor: '$secondary',\n position: 'relative',\n});\n\nconst StyledMobileOption = styled('option', {\n fontFamily: 'inherit',\n fontSize: 'inherit',\n color: 'inherit',\n});\n\n/**\n * Dropdown component. Uses wpds-ui-kit on desktop and native select on mobile.\n * @param {IDropdownProps} props The props.\n * @returns {React.ReactElement} The dropdown.\n */\nexport const Dropdown = ({\n id,\n label,\n values,\n required = false,\n defaultValue,\n onChange = () => {},\n disabled = false,\n}: IDropdownProps) => {\n const [answer, setAnswer] = useState<string>();\n const { isMobileSize } = useWindowSize();\n\n useEffect(() => {\n if (answer) onChange(answer);\n }, [answer]);\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n // helps maintain state between WPDS and native dropdowns\n const defaultValueProp = answer\n ? { defaultValue: answer }\n : defaultValue\n ? { defaultValue }\n : {};\n\n const defaultValuePropMobile = (value: string) => {\n if (answer) {\n return value === answer ? { selected: true } : {};\n }\n return value === defaultValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n placeholder={label}\n {...disabledProp}\n >\n <label>{label}</label>\n <StyledMobileOption\n value=\"\"\n disabled\n selected\n style={{ color: '#666666' }}\n >\n {label}\n </StyledMobileOption>\n {values.map((value) => (\n <StyledMobileOption\n value={value}\n key={value}\n {...defaultValuePropMobile(value)}\n >\n {value}\n </StyledMobileOption>\n ))}\n </StyledMobileSelect>\n <Icon\n label=\"\"\n size=\"100\"\n fill={theme.colors['gray80']}\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n right: '10px',\n top: '50%',\n transform: 'translateY(-50%)',\n }}\n >\n <ChevronDown style={{ position: 'absolute', right: '10px' }} />\n </Icon>\n </StyledSelectWrapper>\n ) : (\n <Select.Root\n onValueChange={(e) => setAnswer(e)}\n required={required}\n {...defaultValueProp}\n {...disabledProp}\n >\n <Select.Trigger data-test-id={`${id}-select-trigger`}>\n <Select.Label>{label}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content\n css={{ zIndex: theme.zIndices.page }}\n data-test-id={`${id}-select-content`}\n >\n {values.map((value) => (\n <Select.Item value={value} key={value}>\n {value}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled } from '@washingtonpost/wpds-ui-kit';\nimport { Attribute, AttributeValue } from '../../interfaces';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\nimport { Dropdown } from './Dropdown';\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute;\n defaultValue?: string;\n disabled?: boolean;\n submit: boolean;\n onChange?: ({ value }: { value: string }) => void;\n onFinished?: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n valuesFilter?: (value: AttributeValue) => boolean;\n selectProps?: {\n root?: any;\n trigger?: any;\n label?: any;\n value?: any;\n content?: any;\n item?: any;\n };\n children?: React.ReactNode;\n}\n\nconst scriptSrc = `${\n ENDPOINTS.staticAssets === 'https://subscribe.washingtonpost.com/static'\n ? 'https://www.washingtonpost.com/subscribe/static/'\n : ENDPOINTS.staticAssets\n}/de-utils/twpdeu.min.js`;\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n const scriptStatus = useScript(scriptSrc);\n\n useEffect(() => {\n const fetchConfig = async () => {\n try {\n const config = await window?.__twpdeu?.getFieldConfigs({ fieldName });\n if (config) {\n setConfig(config[0]);\n } else {\n console.error('unable to get config', fieldName);\n }\n } catch (e) {\n console.warn('unable to get config', fieldName, e);\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && !(children || config)) {\n fetchConfig();\n }\n }, [scriptStatus]);\n\n useEffect(() => {\n const submitSelected = async () => {\n try {\n const result = await window?.__twpdeu?.push({\n submitData: { fieldName, value: selected },\n source,\n });\n\n const isError =\n result === true\n ? false\n : result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n } catch (e) {\n onFinished({\n isFinished: false,\n isError: true,\n });\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && submit && selected) {\n submitSelected();\n }\n }, [scriptStatus, submit]);\n\n const defaultValueProp = defaultValue && config ? { defaultValue } : {};\n\n const isLoading = !(children || config);\n\n const disabledProp = disabled || isLoading ? { disabled: true } : {};\n\n // sort and filter out archived values\n const values = config\n ? config.values\n .sort((a, b) => a.order - b.order)\n .filter((value) => value.archived !== true)\n .filter(valuesFilter)\n : [];\n\n return (\n <SelectWrapper>\n {children && (\n <Select.Root\n onValueChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n {...defaultValueProp}\n {...disabledProp}\n >\n {children}\n </Select.Root>\n )}\n {!children && !config && (\n <Dropdown\n id={'loading'}\n label={'Loading...'}\n values={[]}\n disabled={true}\n />\n )}\n {!children && config && (\n <Dropdown\n id={config.name}\n label={label || config.name}\n onChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n values={values.map((value) => value.name)}\n defaultValue={defaultValue}\n disabled={disabled}\n />\n )}\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled('div', {\n boxSizing: 'border-box',\n display: 'flex',\n marginBottom: '$100',\n flexDirection: 'column',\n '& button': {\n padding: '1px 6px',\n },\n '& *': { boxSizing: 'border-box' },\n});\n","import {\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { getAttributes } from '../services/getAttributes';\nimport { sendToGA } from '../services/sendToGA';\nimport { hasRequiredPrivacyCookies } from './hasRequiredPrivacyCookies';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { ingest } from '../services/ingest';\n\nexport const push: PushType = async ({ submitData, source }) => {\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n const { fieldName } = submitData;\n\n const attributeInfo = await getAttributes({\n fieldName,\n });\n\n if (\n attributeInfo[0] &&\n attributeInfo[0].name === fieldName &&\n attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT\n ) {\n throw new Error('do not collect');\n }\n\n const type =\n attributeInfo[0] && attributeInfo[0].explicit === true\n ? IngestType.EXPLICIT\n : IngestType.IMPLICIT;\n\n if (!attributeInfo[0] && __DEV__) {\n console.warn(`no attribute info found for ${fieldName}, assuming implicit`);\n }\n\n if (type === IngestType.EXPLICIT) {\n return ingest({ submitData, source });\n } else {\n return sendToGA({ submitData, source });\n }\n};\n\ntype PushType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<\n | {\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n }\n | null\n | true\n>;\n","const sendGAEvent = (props: {\n event: string;\n category: string;\n action: string;\n label: string;\n 'de-label': string;\n [key: string]: undefined | string | string[];\n}): void => {\n if (typeof window === 'undefined') {\n if (__DEV__) console.warn('NO WINDOW');\n return;\n }\n // Initialize dataLayer if needed\n window.dataLayer = window.dataLayer || [];\n\n const eventData: Record<string, any> = {\n ...props,\n };\n window.dataLayer.push(eventData);\n};\n\nexport const sendToGA: SendToGaType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n sendGAEvent({\n event: 'site-onpage-click',\n action: 'site-onpage-click',\n category: 'profile',\n\n label: fieldName,\n 'de-label': fieldName,\n [fieldName]: value,\n\n section: 'profile',\n subsection: source,\n });\n\n return true;\n};\n\ntype SendToGaType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<true>;\n"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","IngestType","EXPLICIT","IMPLICIT","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code","base","ENDPOINTS","attributesCache","getAttributes","async","fieldName","_ref","fieldNames","url","URL","searchParams","set","join","data","fetch","toString","credentials","headers","JSON_HEADERS","json","ok","status","ResponseStatus","SUCCESS","attributes","e","console","debug","StyledMobileSelect","styled","padding","display","justifyContent","width","backgroundColor","color","fontFamily","fontSize","fontWeight","lineHeight","paddingBlockRight","textOverflow","position","borderColor","borderRightWidth","borderRightColor","appearance","-webkit-appearance","&:disabled","theme","colors","disabled","onDisabled","cursor","StyledSelectWrapper","maxWidth","borderRadius","borderStyle","borderWidth","StyledMobileOption","Dropdown","id","label","values","required","defaultValue","onChange","answer","setAnswer","useState","isMobileSize","useWindowSize","useEffect","disabledProp","defaultValueProp","defaultValuePropMobile","value","selected","React","target","placeholder","style","map","key","Icon","size","fill","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","zIndices","page","Item","scriptSrc","staticAssets","SelectWrapper","boxSizing","marginBottom","flexDirection","& button","& *","source","dataDictionaryConfig","submit","onFinished","valuesFilter","children","config","setConfig","setSelected","scriptStatus","useScript","ScriptStatus","READY","_window","__twpdeu","getFieldConfigs","error","warn","fetchConfig","_window2","result","push","submitData","isFinished","isError","submitSelected","sort","a","b","order","filter","archived","name","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION","Error","attributeInfo","collection_behavior","type","explicit","process","env","NODE_ENV","wapo_login_id","payload","jucid","localStorage","getItem","ga","[object Object]","metadata","response","method","body","JSON","stringify","ingest","props","dataLayer","eventData","sendGAEvent","event","action","category","de-label","section","subsection","sendToGA"],"mappings":"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"}
1
+ {"version":3,"file":"subs-de-inputs.cjs.production.min.js","sources":["../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/getAttributes.ts","../src/services/ingest.ts","../src/components/DESelect/Dropdown.tsx","../src/components/DESelect/index.tsx","../src/utils/push.ts","../src/services/sendToGA.ts"],"sourcesContent":["export type AttributeValue = {\n name: string;\n date_created: Number;\n last_modified_date: Number;\n archived: boolean;\n order: number;\n};\n\nexport const CollectionBehaviors = {\n COLLECT: 'COLLECT',\n DO_NOT_COLLECT: 'DO_NOT_COLLECT',\n} as const;\n\nexport type Attribute = {\n name: string;\n approved_for_use?: boolean;\n collection_behavior?: (typeof CollectionBehaviors)[keyof typeof CollectionBehaviors];\n datatype: string;\n explicit: boolean;\n multiple_value: boolean;\n last_modified_date: Number;\n date_created: Number;\n values: Array<AttributeValue>;\n};\n\nexport const AttributesState = {\n SUCCESS: '100',\n} as const;\n\nexport const IngestType = {\n EXPLICIT: 'explicit',\n IMPLICIT: 'implicit',\n} as const;\n\nexport const IngestResponseState = {\n SUCCESS: '100',\n SYSTEM_ERROR: '101',\n INVALID_TYPE: '102',\n INVALID_IDENTIFIER: '103',\n INVALID_DATA: '104',\n INVALID_ATTRIBUTE_DEFINITION: '105',\n INVALID_META_DEFINITION: '106',\n UNAUTHENTICATED: '107',\n MISMATCHED_IDENTIFIER: '108',\n DISABLED_ATTRIBUTE_DEFINITION: '109',\n DO_NOT_COLLECT: '110',\n} as const;\n","import { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\nimport { Attribute } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst attributesCache: Record<string, any> = {};\nexport const getAttributes: GetAttributesType = async ({\n fieldName,\n}: {\n fieldName: string;\n}) => {\n if (attributesCache[fieldName]) {\n return attributesCache[fieldName];\n }\n\n const fieldNames = [fieldName];\n\n try {\n const url = new URL(`${base}/attributes`);\n url.searchParams.set('attributes', fieldNames.join(','));\n\n const data = await fetch(url.toString(), {\n credentials: 'include',\n headers: JSON_HEADERS,\n });\n const json = await data.json();\n\n if (data.ok && json.status === ResponseStatus.SUCCESS) {\n const attributes = json.attributes || [];\n attributesCache[fieldName] = attributes;\n return attributes;\n } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n\ntype GetAttributesType = ({\n fieldName,\n}: {\n fieldName: string;\n}) => Promise<Attribute[]>;\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n getCookie,\n} from '@washingtonpost/subs-sdk';\nimport { IngestResponseState, IngestType } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nexport const ingest: IngestType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n const url = `${base}/ingest`;\n\n const wapo_login_id = getCookie('wapo_login_id');\n\n const jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload = {\n jucid,\n ga,\n type: IngestType.EXPLICIT,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: {\n [fieldName]: [value],\n },\n metadata: { source },\n };\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: JSON_HEADERS,\n body: JSON.stringify(payload),\n });\n\n const json = await response.json();\n\n return json;\n } catch (e) {\n console.debug(e);\n return null;\n }\n};\n\ntype IngestType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<{\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\n","import React, { useEffect, useState } from 'react';\nimport { Icon, Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { useWindowSize } from '@washingtonpost/subs-hooks';\nimport { ChevronDown } from '@washingtonpost/wpds-assets';\n\ninterface IDropdownProps {\n id: string;\n label: string;\n values: Array<string>;\n required?: boolean;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n}\n\nconst StyledMobileSelect = styled('select', {\n padding: '12px 16px 12px 6px',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n backgroundColor: '$secondary',\n color: '$primary',\n fontFamily: '$meta',\n fontSize: '$100',\n fontWeight: '$light',\n lineHeight: '$125',\n paddingBlockRight: '$125',\n textOverflow: 'ellipsis',\n position: 'relative',\n borderColor: 'transparent',\n borderRightWidth: '10px',\n borderRightColor: 'transparent',\n appearance: 'none',\n '-webkit-appearance': 'none',\n '&:disabled': {\n backgroundColor: theme.colors.disabled,\n borderColor: theme.colors.disabled,\n color: theme.colors.onDisabled,\n cursor: 'not-allowed',\n },\n});\n\nconst StyledSelectWrapper = styled('div', {\n width: '100%',\n maxWidth: '380px',\n borderRadius: '$012',\n borderColor: '$subtle',\n borderStyle: 'solid',\n borderWidth: '1px',\n backgroundColor: '$secondary',\n position: 'relative',\n});\n\nconst StyledMobileOption = styled('option', {\n fontFamily: 'inherit',\n fontSize: 'inherit',\n color: 'inherit',\n});\n\n/**\n * Dropdown component. Uses wpds-ui-kit on desktop and native select on mobile.\n * @param {IDropdownProps} props The props.\n * @returns {React.ReactElement} The dropdown.\n */\nexport const Dropdown = ({\n id,\n label,\n values,\n required = false,\n defaultValue,\n onChange = () => {},\n disabled = false,\n}: IDropdownProps) => {\n const [answer, setAnswer] = useState<string>();\n const { isMobileSize } = useWindowSize();\n\n useEffect(() => {\n if (answer) onChange(answer);\n }, [answer]);\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n // helps maintain state between WPDS and native dropdowns\n const defaultValueProp = answer\n ? { defaultValue: answer }\n : defaultValue\n ? { defaultValue }\n : {};\n\n const defaultValuePropMobile = (value: string) => {\n if (answer) {\n return value === answer ? { selected: true } : {};\n }\n return value === defaultValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n placeholder={label}\n {...disabledProp}\n >\n <label>{label}</label>\n <StyledMobileOption\n value=\"\"\n disabled\n selected\n style={{ color: '#666666' }}\n >\n {label}\n </StyledMobileOption>\n {values.map((value) => (\n <StyledMobileOption\n value={value}\n key={value}\n {...defaultValuePropMobile(value)}\n >\n {value}\n </StyledMobileOption>\n ))}\n </StyledMobileSelect>\n <Icon\n label=\"\"\n size=\"100\"\n fill={theme.colors['gray80']}\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n right: '10px',\n top: '50%',\n transform: 'translateY(-50%)',\n }}\n >\n <ChevronDown style={{ position: 'absolute', right: '10px' }} />\n </Icon>\n </StyledSelectWrapper>\n ) : (\n <Select.Root\n onValueChange={(e) => setAnswer(e)}\n required={required}\n {...defaultValueProp}\n {...disabledProp}\n >\n <Select.Trigger data-test-id={`${id}-select-trigger`}>\n <Select.Label>{label}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content\n css={{ zIndex: theme.zIndices.page }}\n data-test-id={`${id}-select-content`}\n >\n {values.map((value) => (\n <Select.Item value={value} key={value}>\n {value}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled } from '@washingtonpost/wpds-ui-kit';\nimport { Attribute, AttributeValue } from '../../interfaces';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\nimport { Dropdown } from './Dropdown';\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute;\n defaultValue?: string;\n disabled?: boolean;\n submit: boolean;\n onChange?: ({ value }: { value: string }) => void;\n onFinished?: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n valuesFilter?: (value: AttributeValue) => boolean;\n selectProps?: {\n root?: any;\n trigger?: any;\n label?: any;\n value?: any;\n content?: any;\n item?: any;\n };\n children?: React.ReactNode;\n}\n\nconst scriptSrc = `${\n ENDPOINTS.staticAssets === 'https://subscribe.washingtonpost.com/static'\n ? 'https://www.washingtonpost.com/subscribe/static/'\n : ENDPOINTS.staticAssets\n}/de-utils/twpdeu.min.js`;\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n const scriptStatus = useScript(scriptSrc);\n\n useEffect(() => {\n const fetchConfig = async () => {\n try {\n const config = await window?.__twpdeu?.getFieldConfigs({ fieldName });\n if (config) {\n setConfig(config[0]);\n } else {\n console.error('unable to get config', fieldName);\n }\n } catch (e) {\n console.warn('unable to get config', fieldName, e);\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && !(children || config)) {\n fetchConfig();\n }\n }, [scriptStatus]);\n\n useEffect(() => {\n const submitSelected = async () => {\n try {\n const result = await window?.__twpdeu?.push({\n submitData: { fieldName, value: selected },\n source,\n });\n\n const isError =\n result === true\n ? false\n : result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n } catch (e) {\n onFinished({\n isFinished: false,\n isError: true,\n });\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && submit && selected) {\n submitSelected();\n }\n }, [scriptStatus, submit]);\n\n const defaultValueProp = defaultValue && config ? { defaultValue } : {};\n\n const isLoading = !(children || config);\n\n const disabledProp = disabled || isLoading ? { disabled: true } : {};\n\n // sort and filter out archived values\n const values = config\n ? [...config.values]\n .sort((a, b) => a.order - b.order)\n .filter((value) => value.archived !== true)\n .filter(valuesFilter)\n : [];\n\n return (\n <SelectWrapper>\n {children && (\n <Select.Root\n onValueChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n {...defaultValueProp}\n {...disabledProp}\n >\n {children}\n </Select.Root>\n )}\n {!children && !config && (\n <Dropdown\n id={'loading'}\n label={'Loading...'}\n values={[]}\n disabled={true}\n />\n )}\n {!children && config && (\n <Dropdown\n id={config.name}\n label={label || config.name}\n onChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n values={values.map((value) => value.name)}\n defaultValue={defaultValue}\n disabled={disabled}\n />\n )}\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled('div', {\n boxSizing: 'border-box',\n display: 'flex',\n marginBottom: '$100',\n flexDirection: 'column',\n '& button': {\n padding: '1px 6px',\n },\n '& *': { boxSizing: 'border-box' },\n});\n","import {\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { getAttributes } from '../services/getAttributes';\nimport { sendToGA } from '../services/sendToGA';\nimport { hasRequiredPrivacyCookies } from './hasRequiredPrivacyCookies';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { ingest } from '../services/ingest';\n\nexport const push: PushType = async ({ submitData, source }) => {\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n const { fieldName } = submitData;\n\n const attributeInfo = await getAttributes({\n fieldName,\n });\n\n if (\n attributeInfo[0] &&\n attributeInfo[0].name === fieldName &&\n attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT\n ) {\n throw new Error('do not collect');\n }\n\n const type =\n attributeInfo[0] && attributeInfo[0].explicit === true\n ? IngestType.EXPLICIT\n : IngestType.IMPLICIT;\n\n if (!attributeInfo[0] && __DEV__) {\n console.warn(`no attribute info found for ${fieldName}, assuming implicit`);\n }\n\n if (type === IngestType.EXPLICIT) {\n return ingest({ submitData, source });\n } else {\n return sendToGA({ submitData, source });\n }\n};\n\ntype PushType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<\n | {\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n }\n | null\n | true\n>;\n","const sendGAEvent = (props: {\n event: string;\n category: string;\n action: string;\n label: string;\n 'de-label': string;\n [key: string]: undefined | string | string[];\n}): void => {\n if (typeof window === 'undefined') {\n if (__DEV__) console.warn('NO WINDOW');\n return;\n }\n // Initialize dataLayer if needed\n window.dataLayer = window.dataLayer || [];\n\n const eventData: Record<string, any> = {\n ...props,\n };\n window.dataLayer.push(eventData);\n};\n\nexport const sendToGA: SendToGaType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n sendGAEvent({\n event: 'site-onpage-click',\n action: 'site-onpage-click',\n category: 'profile',\n\n label: fieldName,\n 'de-label': fieldName,\n [fieldName]: value,\n\n section: 'profile',\n subsection: source,\n });\n\n return true;\n};\n\ntype SendToGaType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<true>;\n"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","IngestType","EXPLICIT","IMPLICIT","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code","base","ENDPOINTS","attributesCache","getAttributes","async","fieldName","_ref","fieldNames","url","URL","searchParams","set","join","data","fetch","toString","credentials","headers","JSON_HEADERS","json","ok","status","ResponseStatus","SUCCESS","attributes","e","console","debug","StyledMobileSelect","styled","padding","display","justifyContent","width","backgroundColor","color","fontFamily","fontSize","fontWeight","lineHeight","paddingBlockRight","textOverflow","position","borderColor","borderRightWidth","borderRightColor","appearance","-webkit-appearance","&:disabled","theme","colors","disabled","onDisabled","cursor","StyledSelectWrapper","maxWidth","borderRadius","borderStyle","borderWidth","StyledMobileOption","Dropdown","id","label","values","required","defaultValue","onChange","answer","setAnswer","useState","isMobileSize","useWindowSize","useEffect","disabledProp","defaultValueProp","defaultValuePropMobile","value","selected","React","target","placeholder","style","map","key","Icon","size","fill","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","zIndices","page","Item","scriptSrc","staticAssets","SelectWrapper","boxSizing","marginBottom","flexDirection","& button","& *","source","dataDictionaryConfig","submit","onFinished","valuesFilter","children","config","setConfig","setSelected","scriptStatus","useScript","ScriptStatus","READY","_window","__twpdeu","getFieldConfigs","error","warn","fetchConfig","_window2","result","push","submitData","isFinished","isError","submitSelected","sort","a","b","order","filter","archived","name","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION","Error","attributeInfo","collection_behavior","type","explicit","process","env","NODE_ENV","wapo_login_id","payload","jucid","localStorage","getItem","ga","[object Object]","metadata","response","method","body","JSON","stringify","ingest","props","dataLayer","eventData","sendGAEvent","event","action","category","de-label","section","subsection","sendToGA"],"mappings":"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"}
@@ -383,7 +383,7 @@ const DESelect = _ref => {
383
383
  disabled: true
384
384
  } : {};
385
385
  // sort and filter out archived values
386
- const values = config ? config.values.sort((a, b) => a.order - b.order).filter(value => value.archived !== true).filter(valuesFilter) : [];
386
+ const values = config ? [...config.values].sort((a, b) => a.order - b.order).filter(value => value.archived !== true).filter(valuesFilter) : [];
387
387
  return React.createElement(SelectWrapper, null, children && React.createElement(Select.Root, {
388
388
  onValueChange: e => {
389
389
  setSelected(e);
@@ -1 +1 @@
1
- {"version":3,"file":"subs-de-inputs.esm.js","sources":["../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/getAttributes.ts","../src/services/sendToGA.ts","../src/services/ingest.ts","../src/utils/push.ts","../src/components/DESelect/Dropdown.tsx","../src/components/DESelect/index.tsx"],"sourcesContent":["export type AttributeValue = {\n name: string;\n date_created: Number;\n last_modified_date: Number;\n archived: boolean;\n order: number;\n};\n\nexport const CollectionBehaviors = {\n COLLECT: 'COLLECT',\n DO_NOT_COLLECT: 'DO_NOT_COLLECT',\n} as const;\n\nexport type Attribute = {\n name: string;\n approved_for_use?: boolean;\n collection_behavior?: (typeof CollectionBehaviors)[keyof typeof CollectionBehaviors];\n datatype: 'string';\n explicit: boolean;\n multiple_value: boolean;\n last_modified_date: Number;\n date_created: Number;\n values: Array<AttributeValue>;\n};\n\nexport const AttributesState = {\n SUCCESS: '100',\n} as const;\n\nexport const IngestType = {\n EXPLICIT: 'explicit',\n IMPLICIT: 'implicit',\n} as const;\n\nexport const IngestResponseState = {\n SUCCESS: '100',\n SYSTEM_ERROR: '101',\n INVALID_TYPE: '102',\n INVALID_IDENTIFIER: '103',\n INVALID_DATA: '104',\n INVALID_ATTRIBUTE_DEFINITION: '105',\n INVALID_META_DEFINITION: '106',\n UNAUTHENTICATED: '107',\n MISMATCHED_IDENTIFIER: '108',\n DISABLED_ATTRIBUTE_DEFINITION: '109',\n DO_NOT_COLLECT: '110',\n} as const;\n","import { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\nimport { Attribute } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst attributesCache: Record<string, any> = {};\nexport const getAttributes: GetAttributesType = async ({\n fieldName,\n}: {\n fieldName: string;\n}) => {\n if (attributesCache[fieldName]) {\n return attributesCache[fieldName];\n }\n\n const fieldNames = [fieldName];\n\n try {\n const url = new URL(`${base}/attributes`);\n url.searchParams.set('attributes', fieldNames.join(','));\n\n const data = await fetch(url.toString(), {\n credentials: 'include',\n headers: JSON_HEADERS,\n });\n const json = await data.json();\n\n if (data.ok && json.status === ResponseStatus.SUCCESS) {\n const attributes = json.attributes || [];\n attributesCache[fieldName] = attributes;\n return attributes;\n } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n\ntype GetAttributesType = ({\n fieldName,\n}: {\n fieldName: string;\n}) => Promise<Attribute[]>;\n","const sendGAEvent = (props: {\n event: string;\n category: string;\n action: string;\n label: string;\n 'de-label': string;\n [key: string]: undefined | string | string[];\n}): void => {\n if (typeof window === 'undefined') {\n if (__DEV__) console.warn('NO WINDOW');\n return;\n }\n // Initialize dataLayer if needed\n window.dataLayer = window.dataLayer || [];\n\n const eventData: Record<string, any> = {\n ...props,\n };\n window.dataLayer.push(eventData);\n};\n\nexport const sendToGA: SendToGaType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n sendGAEvent({\n event: 'site-onpage-click',\n action: 'site-onpage-click',\n category: 'profile',\n\n label: fieldName,\n 'de-label': fieldName,\n [fieldName]: value,\n\n section: 'profile',\n subsection: source,\n });\n\n return true;\n};\n\ntype SendToGaType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<true>;\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n getCookie,\n} from '@washingtonpost/subs-sdk';\nimport { IngestResponseState, IngestType } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nexport const ingest: IngestType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n const url = `${base}/ingest`;\n\n const wapo_login_id = getCookie('wapo_login_id');\n\n const jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload = {\n jucid,\n ga,\n type: IngestType.EXPLICIT,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: {\n [fieldName]: [value],\n },\n metadata: { source },\n };\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: JSON_HEADERS,\n body: JSON.stringify(payload),\n });\n\n const json = await response.json();\n\n return json;\n } catch (e) {\n console.debug(e);\n return null;\n }\n};\n\ntype IngestType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<{\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\n","import {\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { getAttributes } from '../services/getAttributes';\nimport { sendToGA } from '../services/sendToGA';\nimport { hasRequiredPrivacyCookies } from './hasRequiredPrivacyCookies';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { ingest } from '../services/ingest';\n\nexport const push: PushType = async ({ submitData, source }) => {\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n const { fieldName } = submitData;\n\n const attributeInfo = await getAttributes({\n fieldName,\n });\n\n if (\n attributeInfo[0] &&\n attributeInfo[0].name === fieldName &&\n attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT\n ) {\n throw new Error('do not collect');\n }\n\n const type =\n attributeInfo[0] && attributeInfo[0].explicit === true\n ? IngestType.EXPLICIT\n : IngestType.IMPLICIT;\n\n if (!attributeInfo[0] && __DEV__) {\n console.warn(`no attribute info found for ${fieldName}, assuming implicit`);\n }\n\n if (type === IngestType.EXPLICIT) {\n return ingest({ submitData, source });\n } else {\n return sendToGA({ submitData, source });\n }\n};\n\ntype PushType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<\n | {\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n }\n | null\n | true\n>;\n","import React, { useEffect, useState } from 'react';\nimport { Icon, Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { useWindowSize } from '@washingtonpost/subs-hooks';\nimport { ChevronDown } from '@washingtonpost/wpds-assets';\n\ninterface IDropdownProps {\n id: string;\n label: string;\n values: Array<string>;\n required?: boolean;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n}\n\nconst StyledMobileSelect = styled('select', {\n padding: '12px 16px 12px 6px',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n backgroundColor: '$secondary',\n color: '$primary',\n fontFamily: '$meta',\n fontSize: '$100',\n fontWeight: '$light',\n lineHeight: '$125',\n paddingBlockRight: '$125',\n textOverflow: 'ellipsis',\n position: 'relative',\n borderColor: 'transparent',\n borderRightWidth: '10px',\n borderRightColor: 'transparent',\n appearance: 'none',\n '-webkit-appearance': 'none',\n '&:disabled': {\n backgroundColor: theme.colors.disabled,\n borderColor: theme.colors.disabled,\n color: theme.colors.onDisabled,\n cursor: 'not-allowed',\n },\n});\n\nconst StyledSelectWrapper = styled('div', {\n width: '100%',\n maxWidth: '380px',\n borderRadius: '$012',\n borderColor: '$subtle',\n borderStyle: 'solid',\n borderWidth: '1px',\n backgroundColor: '$secondary',\n position: 'relative',\n});\n\nconst StyledMobileOption = styled('option', {\n fontFamily: 'inherit',\n fontSize: 'inherit',\n color: 'inherit',\n});\n\n/**\n * Dropdown component. Uses wpds-ui-kit on desktop and native select on mobile.\n * @param {IDropdownProps} props The props.\n * @returns {React.ReactElement} The dropdown.\n */\nexport const Dropdown = ({\n id,\n label,\n values,\n required = false,\n defaultValue,\n onChange = () => {},\n disabled = false,\n}: IDropdownProps) => {\n const [answer, setAnswer] = useState<string>();\n const { isMobileSize } = useWindowSize();\n\n useEffect(() => {\n if (answer) onChange(answer);\n }, [answer]);\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n // helps maintain state between WPDS and native dropdowns\n const defaultValueProp = answer\n ? { defaultValue: answer }\n : defaultValue\n ? { defaultValue }\n : {};\n\n const defaultValuePropMobile = (value: string) => {\n if (answer) {\n return value === answer ? { selected: true } : {};\n }\n return value === defaultValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n placeholder={label}\n {...disabledProp}\n >\n <label>{label}</label>\n <StyledMobileOption\n value=\"\"\n disabled\n selected\n style={{ color: '#666666' }}\n >\n {label}\n </StyledMobileOption>\n {values.map((value) => (\n <StyledMobileOption\n value={value}\n key={value}\n {...defaultValuePropMobile(value)}\n >\n {value}\n </StyledMobileOption>\n ))}\n </StyledMobileSelect>\n <Icon\n label=\"\"\n size=\"100\"\n fill={theme.colors['gray80']}\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n right: '10px',\n top: '50%',\n transform: 'translateY(-50%)',\n }}\n >\n <ChevronDown style={{ position: 'absolute', right: '10px' }} />\n </Icon>\n </StyledSelectWrapper>\n ) : (\n <Select.Root\n onValueChange={(e) => setAnswer(e)}\n required={required}\n {...defaultValueProp}\n {...disabledProp}\n >\n <Select.Trigger data-test-id={`${id}-select-trigger`}>\n <Select.Label>{label}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content\n css={{ zIndex: theme.zIndices.page }}\n data-test-id={`${id}-select-content`}\n >\n {values.map((value) => (\n <Select.Item value={value} key={value}>\n {value}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled } from '@washingtonpost/wpds-ui-kit';\nimport { Attribute, AttributeValue } from '../../interfaces';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\nimport { Dropdown } from './Dropdown';\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute;\n defaultValue?: string;\n disabled?: boolean;\n submit: boolean;\n onChange?: ({ value }: { value: string }) => void;\n onFinished?: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n valuesFilter?: (value: AttributeValue) => boolean;\n selectProps?: {\n root?: any;\n trigger?: any;\n label?: any;\n value?: any;\n content?: any;\n item?: any;\n };\n children?: React.ReactNode;\n}\n\nconst scriptSrc = `${\n ENDPOINTS.staticAssets === 'https://subscribe.washingtonpost.com/static'\n ? 'https://www.washingtonpost.com/subscribe/static/'\n : ENDPOINTS.staticAssets\n}/de-utils/twpdeu.min.js`;\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n const scriptStatus = useScript(scriptSrc);\n\n useEffect(() => {\n const fetchConfig = async () => {\n try {\n const config = await window?.__twpdeu?.getFieldConfigs({ fieldName });\n if (config) {\n setConfig(config[0]);\n } else {\n console.error('unable to get config', fieldName);\n }\n } catch (e) {\n console.warn('unable to get config', fieldName, e);\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && !(children || config)) {\n fetchConfig();\n }\n }, [scriptStatus]);\n\n useEffect(() => {\n const submitSelected = async () => {\n try {\n const result = await window?.__twpdeu?.push({\n submitData: { fieldName, value: selected },\n source,\n });\n\n const isError =\n result === true\n ? false\n : result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n } catch (e) {\n onFinished({\n isFinished: false,\n isError: true,\n });\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && submit && selected) {\n submitSelected();\n }\n }, [scriptStatus, submit]);\n\n const defaultValueProp = defaultValue && config ? { defaultValue } : {};\n\n const isLoading = !(children || config);\n\n const disabledProp = disabled || isLoading ? { disabled: true } : {};\n\n // sort and filter out archived values\n const values = config\n ? config.values\n .sort((a, b) => a.order - b.order)\n .filter((value) => value.archived !== true)\n .filter(valuesFilter)\n : [];\n\n return (\n <SelectWrapper>\n {children && (\n <Select.Root\n onValueChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n {...defaultValueProp}\n {...disabledProp}\n >\n {children}\n </Select.Root>\n )}\n {!children && !config && (\n <Dropdown\n id={'loading'}\n label={'Loading...'}\n values={[]}\n disabled={true}\n />\n )}\n {!children && config && (\n <Dropdown\n id={config.name}\n label={label || config.name}\n onChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n values={values.map((value) => value.name)}\n defaultValue={defaultValue}\n disabled={disabled}\n />\n )}\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled('div', {\n boxSizing: 'border-box',\n display: 'flex',\n marginBottom: '$100',\n flexDirection: 'column',\n '& button': {\n padding: '1px 6px',\n },\n '& *': { boxSizing: 'border-box' },\n});\n"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","AttributesState","SUCCESS","IngestType","EXPLICIT","IMPLICIT","IngestResponseState","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code","base","ENDPOINTS","attributesCache","getAttributes","_ref","fieldName","fieldNames","url","URL","searchParams","set","join","data","fetch","toString","credentials","headers","JSON_HEADERS","json","ok","status","ResponseStatus","attributes","e","console","debug","sendGAEvent","props","process","env","NODE_ENV","warn","dataLayer","eventData","push","sendToGA","submitData","value","source","event","action","category","label","section","subsection","ingest","wapo_login_id","jucid","localStorage","getItem","ga","payload","type","metadata","response","method","body","JSON","stringify","Error","attributeInfo","name","collection_behavior","explicit","StyledMobileSelect","styled","padding","display","justifyContent","width","backgroundColor","color","fontFamily","fontSize","fontWeight","lineHeight","paddingBlockRight","textOverflow","position","borderColor","borderRightWidth","borderRightColor","appearance","theme","colors","disabled","onDisabled","cursor","StyledSelectWrapper","maxWidth","borderRadius","borderStyle","borderWidth","StyledMobileOption","Dropdown","id","values","required","defaultValue","onChange","answer","setAnswer","useState","isMobileSize","useWindowSize","useEffect","disabledProp","defaultValueProp","defaultValuePropMobile","selected","React","target","placeholder","style","map","key","Icon","size","fill","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","zIndices","page","Item","scriptSrc","staticAssets","DESelect","dataDictionaryConfig","submit","onFinished","valuesFilter","children","config","setConfig","setSelected","scriptStatus","useScript","fetchConfig","_window","__twpdeu","getFieldConfigs","error","ScriptStatus","READY","submitSelected","_window2","result","isError","isFinished","isLoading","sort","a","b","order","filter","archived","SelectWrapper","boxSizing","marginBottom","flexDirection"],"mappings":"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"}
1
+ {"version":3,"file":"subs-de-inputs.esm.js","sources":["../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/getAttributes.ts","../src/services/sendToGA.ts","../src/services/ingest.ts","../src/utils/push.ts","../src/components/DESelect/Dropdown.tsx","../src/components/DESelect/index.tsx"],"sourcesContent":["export type AttributeValue = {\n name: string;\n date_created: Number;\n last_modified_date: Number;\n archived: boolean;\n order: number;\n};\n\nexport const CollectionBehaviors = {\n COLLECT: 'COLLECT',\n DO_NOT_COLLECT: 'DO_NOT_COLLECT',\n} as const;\n\nexport type Attribute = {\n name: string;\n approved_for_use?: boolean;\n collection_behavior?: (typeof CollectionBehaviors)[keyof typeof CollectionBehaviors];\n datatype: string;\n explicit: boolean;\n multiple_value: boolean;\n last_modified_date: Number;\n date_created: Number;\n values: Array<AttributeValue>;\n};\n\nexport const AttributesState = {\n SUCCESS: '100',\n} as const;\n\nexport const IngestType = {\n EXPLICIT: 'explicit',\n IMPLICIT: 'implicit',\n} as const;\n\nexport const IngestResponseState = {\n SUCCESS: '100',\n SYSTEM_ERROR: '101',\n INVALID_TYPE: '102',\n INVALID_IDENTIFIER: '103',\n INVALID_DATA: '104',\n INVALID_ATTRIBUTE_DEFINITION: '105',\n INVALID_META_DEFINITION: '106',\n UNAUTHENTICATED: '107',\n MISMATCHED_IDENTIFIER: '108',\n DISABLED_ATTRIBUTE_DEFINITION: '109',\n DO_NOT_COLLECT: '110',\n} as const;\n","import { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\nimport { Attribute } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst attributesCache: Record<string, any> = {};\nexport const getAttributes: GetAttributesType = async ({\n fieldName,\n}: {\n fieldName: string;\n}) => {\n if (attributesCache[fieldName]) {\n return attributesCache[fieldName];\n }\n\n const fieldNames = [fieldName];\n\n try {\n const url = new URL(`${base}/attributes`);\n url.searchParams.set('attributes', fieldNames.join(','));\n\n const data = await fetch(url.toString(), {\n credentials: 'include',\n headers: JSON_HEADERS,\n });\n const json = await data.json();\n\n if (data.ok && json.status === ResponseStatus.SUCCESS) {\n const attributes = json.attributes || [];\n attributesCache[fieldName] = attributes;\n return attributes;\n } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n\ntype GetAttributesType = ({\n fieldName,\n}: {\n fieldName: string;\n}) => Promise<Attribute[]>;\n","const sendGAEvent = (props: {\n event: string;\n category: string;\n action: string;\n label: string;\n 'de-label': string;\n [key: string]: undefined | string | string[];\n}): void => {\n if (typeof window === 'undefined') {\n if (__DEV__) console.warn('NO WINDOW');\n return;\n }\n // Initialize dataLayer if needed\n window.dataLayer = window.dataLayer || [];\n\n const eventData: Record<string, any> = {\n ...props,\n };\n window.dataLayer.push(eventData);\n};\n\nexport const sendToGA: SendToGaType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n sendGAEvent({\n event: 'site-onpage-click',\n action: 'site-onpage-click',\n category: 'profile',\n\n label: fieldName,\n 'de-label': fieldName,\n [fieldName]: value,\n\n section: 'profile',\n subsection: source,\n });\n\n return true;\n};\n\ntype SendToGaType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<true>;\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n getCookie,\n} from '@washingtonpost/subs-sdk';\nimport { IngestResponseState, IngestType } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nexport const ingest: IngestType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n const url = `${base}/ingest`;\n\n const wapo_login_id = getCookie('wapo_login_id');\n\n const jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload = {\n jucid,\n ga,\n type: IngestType.EXPLICIT,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: {\n [fieldName]: [value],\n },\n metadata: { source },\n };\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: JSON_HEADERS,\n body: JSON.stringify(payload),\n });\n\n const json = await response.json();\n\n return json;\n } catch (e) {\n console.debug(e);\n return null;\n }\n};\n\ntype IngestType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<{\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\n","import {\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { getAttributes } from '../services/getAttributes';\nimport { sendToGA } from '../services/sendToGA';\nimport { hasRequiredPrivacyCookies } from './hasRequiredPrivacyCookies';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { ingest } from '../services/ingest';\n\nexport const push: PushType = async ({ submitData, source }) => {\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n const { fieldName } = submitData;\n\n const attributeInfo = await getAttributes({\n fieldName,\n });\n\n if (\n attributeInfo[0] &&\n attributeInfo[0].name === fieldName &&\n attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT\n ) {\n throw new Error('do not collect');\n }\n\n const type =\n attributeInfo[0] && attributeInfo[0].explicit === true\n ? IngestType.EXPLICIT\n : IngestType.IMPLICIT;\n\n if (!attributeInfo[0] && __DEV__) {\n console.warn(`no attribute info found for ${fieldName}, assuming implicit`);\n }\n\n if (type === IngestType.EXPLICIT) {\n return ingest({ submitData, source });\n } else {\n return sendToGA({ submitData, source });\n }\n};\n\ntype PushType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<\n | {\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n }\n | null\n | true\n>;\n","import React, { useEffect, useState } from 'react';\nimport { Icon, Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { useWindowSize } from '@washingtonpost/subs-hooks';\nimport { ChevronDown } from '@washingtonpost/wpds-assets';\n\ninterface IDropdownProps {\n id: string;\n label: string;\n values: Array<string>;\n required?: boolean;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n}\n\nconst StyledMobileSelect = styled('select', {\n padding: '12px 16px 12px 6px',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n backgroundColor: '$secondary',\n color: '$primary',\n fontFamily: '$meta',\n fontSize: '$100',\n fontWeight: '$light',\n lineHeight: '$125',\n paddingBlockRight: '$125',\n textOverflow: 'ellipsis',\n position: 'relative',\n borderColor: 'transparent',\n borderRightWidth: '10px',\n borderRightColor: 'transparent',\n appearance: 'none',\n '-webkit-appearance': 'none',\n '&:disabled': {\n backgroundColor: theme.colors.disabled,\n borderColor: theme.colors.disabled,\n color: theme.colors.onDisabled,\n cursor: 'not-allowed',\n },\n});\n\nconst StyledSelectWrapper = styled('div', {\n width: '100%',\n maxWidth: '380px',\n borderRadius: '$012',\n borderColor: '$subtle',\n borderStyle: 'solid',\n borderWidth: '1px',\n backgroundColor: '$secondary',\n position: 'relative',\n});\n\nconst StyledMobileOption = styled('option', {\n fontFamily: 'inherit',\n fontSize: 'inherit',\n color: 'inherit',\n});\n\n/**\n * Dropdown component. Uses wpds-ui-kit on desktop and native select on mobile.\n * @param {IDropdownProps} props The props.\n * @returns {React.ReactElement} The dropdown.\n */\nexport const Dropdown = ({\n id,\n label,\n values,\n required = false,\n defaultValue,\n onChange = () => {},\n disabled = false,\n}: IDropdownProps) => {\n const [answer, setAnswer] = useState<string>();\n const { isMobileSize } = useWindowSize();\n\n useEffect(() => {\n if (answer) onChange(answer);\n }, [answer]);\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n // helps maintain state between WPDS and native dropdowns\n const defaultValueProp = answer\n ? { defaultValue: answer }\n : defaultValue\n ? { defaultValue }\n : {};\n\n const defaultValuePropMobile = (value: string) => {\n if (answer) {\n return value === answer ? { selected: true } : {};\n }\n return value === defaultValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n placeholder={label}\n {...disabledProp}\n >\n <label>{label}</label>\n <StyledMobileOption\n value=\"\"\n disabled\n selected\n style={{ color: '#666666' }}\n >\n {label}\n </StyledMobileOption>\n {values.map((value) => (\n <StyledMobileOption\n value={value}\n key={value}\n {...defaultValuePropMobile(value)}\n >\n {value}\n </StyledMobileOption>\n ))}\n </StyledMobileSelect>\n <Icon\n label=\"\"\n size=\"100\"\n fill={theme.colors['gray80']}\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n right: '10px',\n top: '50%',\n transform: 'translateY(-50%)',\n }}\n >\n <ChevronDown style={{ position: 'absolute', right: '10px' }} />\n </Icon>\n </StyledSelectWrapper>\n ) : (\n <Select.Root\n onValueChange={(e) => setAnswer(e)}\n required={required}\n {...defaultValueProp}\n {...disabledProp}\n >\n <Select.Trigger data-test-id={`${id}-select-trigger`}>\n <Select.Label>{label}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content\n css={{ zIndex: theme.zIndices.page }}\n data-test-id={`${id}-select-content`}\n >\n {values.map((value) => (\n <Select.Item value={value} key={value}>\n {value}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled } from '@washingtonpost/wpds-ui-kit';\nimport { Attribute, AttributeValue } from '../../interfaces';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\nimport { Dropdown } from './Dropdown';\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute;\n defaultValue?: string;\n disabled?: boolean;\n submit: boolean;\n onChange?: ({ value }: { value: string }) => void;\n onFinished?: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n valuesFilter?: (value: AttributeValue) => boolean;\n selectProps?: {\n root?: any;\n trigger?: any;\n label?: any;\n value?: any;\n content?: any;\n item?: any;\n };\n children?: React.ReactNode;\n}\n\nconst scriptSrc = `${\n ENDPOINTS.staticAssets === 'https://subscribe.washingtonpost.com/static'\n ? 'https://www.washingtonpost.com/subscribe/static/'\n : ENDPOINTS.staticAssets\n}/de-utils/twpdeu.min.js`;\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n const scriptStatus = useScript(scriptSrc);\n\n useEffect(() => {\n const fetchConfig = async () => {\n try {\n const config = await window?.__twpdeu?.getFieldConfigs({ fieldName });\n if (config) {\n setConfig(config[0]);\n } else {\n console.error('unable to get config', fieldName);\n }\n } catch (e) {\n console.warn('unable to get config', fieldName, e);\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && !(children || config)) {\n fetchConfig();\n }\n }, [scriptStatus]);\n\n useEffect(() => {\n const submitSelected = async () => {\n try {\n const result = await window?.__twpdeu?.push({\n submitData: { fieldName, value: selected },\n source,\n });\n\n const isError =\n result === true\n ? false\n : result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n } catch (e) {\n onFinished({\n isFinished: false,\n isError: true,\n });\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && submit && selected) {\n submitSelected();\n }\n }, [scriptStatus, submit]);\n\n const defaultValueProp = defaultValue && config ? { defaultValue } : {};\n\n const isLoading = !(children || config);\n\n const disabledProp = disabled || isLoading ? { disabled: true } : {};\n\n // sort and filter out archived values\n const values = config\n ? [...config.values]\n .sort((a, b) => a.order - b.order)\n .filter((value) => value.archived !== true)\n .filter(valuesFilter)\n : [];\n\n return (\n <SelectWrapper>\n {children && (\n <Select.Root\n onValueChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n {...defaultValueProp}\n {...disabledProp}\n >\n {children}\n </Select.Root>\n )}\n {!children && !config && (\n <Dropdown\n id={'loading'}\n label={'Loading...'}\n values={[]}\n disabled={true}\n />\n )}\n {!children && config && (\n <Dropdown\n id={config.name}\n label={label || config.name}\n onChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n values={values.map((value) => value.name)}\n defaultValue={defaultValue}\n disabled={disabled}\n />\n )}\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled('div', {\n boxSizing: 'border-box',\n display: 'flex',\n marginBottom: '$100',\n flexDirection: 'column',\n '& button': {\n padding: '1px 6px',\n },\n '& *': { boxSizing: 'border-box' },\n});\n"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","AttributesState","SUCCESS","IngestType","EXPLICIT","IMPLICIT","IngestResponseState","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code","base","ENDPOINTS","attributesCache","getAttributes","_ref","fieldName","fieldNames","url","URL","searchParams","set","join","data","fetch","toString","credentials","headers","JSON_HEADERS","json","ok","status","ResponseStatus","attributes","e","console","debug","sendGAEvent","props","process","env","NODE_ENV","warn","dataLayer","eventData","push","sendToGA","submitData","value","source","event","action","category","label","section","subsection","ingest","wapo_login_id","jucid","localStorage","getItem","ga","payload","type","metadata","response","method","body","JSON","stringify","Error","attributeInfo","name","collection_behavior","explicit","StyledMobileSelect","styled","padding","display","justifyContent","width","backgroundColor","color","fontFamily","fontSize","fontWeight","lineHeight","paddingBlockRight","textOverflow","position","borderColor","borderRightWidth","borderRightColor","appearance","theme","colors","disabled","onDisabled","cursor","StyledSelectWrapper","maxWidth","borderRadius","borderStyle","borderWidth","StyledMobileOption","Dropdown","id","values","required","defaultValue","onChange","answer","setAnswer","useState","isMobileSize","useWindowSize","useEffect","disabledProp","defaultValueProp","defaultValuePropMobile","selected","React","target","placeholder","style","map","key","Icon","size","fill","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","zIndices","page","Item","scriptSrc","staticAssets","DESelect","dataDictionaryConfig","submit","onFinished","valuesFilter","children","config","setConfig","setSelected","scriptStatus","useScript","fetchConfig","_window","__twpdeu","getFieldConfigs","error","ScriptStatus","READY","submitSelected","_window2","result","isError","isFinished","isLoading","sort","a","b","order","filter","archived","SelectWrapper","boxSizing","marginBottom","flexDirection"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.4.1",
2
+ "version": "0.4.2-canary.0",
3
3
  "license": "UNLICENSED",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
package/CHANGELOG.md DELETED
@@ -1,40 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file. See
4
- [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- **[0.4.1 - 2024-05-07]**:
7
- * Set the correct `type` for ingest() API
8
-
9
- **[0.4.0 - 2024-05-07]**:
10
- * Support for `implicit` collection via GA
11
-
12
- **[0.3.0 - 2024-05-06]**:
13
- * Uses the native `<select />` element in smaller viewport sizes for better UX
14
-
15
- **[0.2.2 - 2024-05-03]**:
16
- * use `window.__twpdeu.push()` for submitting
17
- * Better loading state when fetching config over the wire
18
- * Prevent extra calls to `ingest` API if user changes value after clicking submit
19
- * Fix `ingest()` function to send the right format (again)
20
-
21
- **[0.2.1 - 2024-05-02]**:
22
- * Revert "ESM build only"
23
- * `ingest()` function throws error if `submitData.value` is not an array (required by BE)
24
-
25
- **[0.2.0 - 2024-05-01]**:
26
- * Adds `ingest()` function
27
- * ESM build only
28
- * Babel config to target recent browsers only
29
-
30
- **[0.1.1 - 2024-04-30]**:
31
- * Fix build by removing unused file
32
-
33
- **[0.1.0 - 2024-04-25]**:
34
- * Add initial `<DESelect />` component
35
-
36
- **[0.0.2 - 2024-04-24]**:
37
- * Fix build error
38
-
39
- **[0.0.1 - 2024-04-09]**:
40
- * Initial setup