Skip to content

Commit

Permalink
Merge branch 'develop' into enhance/#8795-rrm-findMatchedPublication-…
Browse files Browse the repository at this point in the history
…action.
  • Loading branch information
hussain-t committed Jul 16, 2024
2 parents 328a114 + 4bf3875 commit 46a8673
Show file tree
Hide file tree
Showing 47 changed files with 1,600 additions and 152 deletions.
64 changes: 64 additions & 0 deletions assets/js/components/LeanCTABanner.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/**
* LeanCTABanner component.
*
* Site Kit by Google, Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* External dependencies
*/
import classnames from 'classnames';
import PropTypes from 'prop-types';

export default function LeanCTABanner( {
className,
children,
Icon,
SVGGraphic,
} ) {
return (
<div
className={ classnames(
'googlesitekit-lean-cta-banner',
className
) }
>
<div className="googlesitekit-lean-cta-banner__body">
{ Icon && (
<div className="googlesitekit-lean-cta-banner__body-icon">
<Icon width="32" height="32" />
</div>
) }
{
<div className="googlesitekit-lean-cta-banner__body-content">
{ children }
</div>
}
</div>
{ SVGGraphic && (
<div className="googlesitekit-lean-cta-banner__graphic">
<SVGGraphic />
</div>
) }
</div>
);
}

LeanCTABanner.propTypes = {
className: PropTypes.string,
children: PropTypes.node.isRequired,
Icon: PropTypes.elementType,
SVGGraphic: PropTypes.elementType,
};
2 changes: 1 addition & 1 deletion assets/js/hooks/useInViewSelect.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ function notInViewCallback() {
* @param {Array} deps Deps passed to `useInViewSelect`'s `deps` argument.
* @return {*} The result of the selector if in-view; `undefined` if not in-view.
*/
export const useInViewSelect = ( mapSelect, deps = [] ) => {
export const useInViewSelect = ( mapSelect, deps ) => {
const isInView = useInView( { sticky: true } );
const latestSelectorResult = useRef();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import {
import AudienceSegmentationErrorSVG from '../../../../../../svg/graphics/audience-segmentation-error-full-width.svg';
import { isInsufficientPermissionsError } from '../../../../../util/errors';
import ReportErrorActions from '../../../../../components/ReportErrorActions';
import GetHelpLink from './AudienceTile/GetHelpLink';
import GetHelpLink from './GetHelpLink';

function AudienceSegmentationErrorWidget( { Widget, errors } ) {
const breakpoint = useBreakpoint();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import PropTypes from 'prop-types';
/**
* Internal dependencies
*/
import { numFmt } from '../../../../../../util';
import { numFmt } from '../../../../../../../util';
import AudienceTileNoData from './AudienceTileNoData';

export default function AudienceTileCitiesMetric( {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { __ } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import AudienceTileCollectingDataImage from '../../../../../../../svg/graphics/audience-segmentation-collecting-data.svg';
import AudienceTileCollectingDataImage from '../../../../../../../../svg/graphics/audience-segmentation-collecting-data.svg';

export default function AudienceTileCollectingData() {
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ import { __ } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import Link from '../../../../../../components/Link';
import VisibilityIcon from '../../../../../../../svg/icons/visibility.svg';
import Link from '../../../../../../../components/Link';
import VisibilityIcon from '../../../../../../../../svg/icons/visibility.svg';

export default function AudienceTileCollectingDataHideable( { onHideTile } ) {
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ import { __ } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import { isInsufficientPermissionsError } from '../../../../../../util/errors';
import AudienceTileErrorImage from '../../../../../../../svg/graphics/analytics-audience-segmentation-tile-error.svg';
import ReportErrorActions from '../../../../../../components/ReportErrorActions';
import GetHelpLink from './GetHelpLink';
import { isInsufficientPermissionsError } from '../../../../../../../util/errors';
import AudienceTileErrorImage from '../../../../../../../../svg/graphics/analytics-audience-segmentation-tile-error.svg';
import ReportErrorActions from '../../../../../../../components/ReportErrorActions';
import GetHelpLink from '../../GetHelpLink';

export default function AudienceTileError( { errors } ) {
const hasInsufficientPermissionsError = errors.some( ( err ) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@
*/
import { useSelect } from 'googlesitekit-data';
import AudienceTileError from './AudienceTileError';
import { MODULES_ANALYTICS_4 } from '../../../../datastore/constants';
import { MODULES_ANALYTICS_4 } from '../../../../../datastore/constants';
import {
WithTestRegistry,
createTestRegistry,
provideModuleRegistrations,
provideModules,
} from '../../../../../../../../tests/js/utils';
import WithRegistrySetup from '../../../../../../../../tests/js/WithRegistrySetup';
import { ERROR_REASON_INSUFFICIENT_PERMISSIONS } from '../../../../../../util/errors';
} from '../../../../../../../../../tests/js/utils';
import WithRegistrySetup from '../../../../../../../../../tests/js/WithRegistrySetup';
import { ERROR_REASON_INSUFFICIENT_PERMISSIONS } from '../../../../../../../util/errors';

function AudienceTileErrorWrapper( { ...args } ) {
const errors = useSelect( ( select ) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import PropTypes from 'prop-types';
/**
* Internal dependencies
*/
import { numFmt } from '../../../../../../util';
import { numFmt } from '../../../../../../../util';

export default function AudienceTileMetric( {
TileIcon,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,18 @@ import {
BREAKPOINT_SMALL,
BREAKPOINT_TABLET,
useBreakpoint,
} from '../../../../../../hooks/useBreakpoint';
import { CORE_USER } from '../../../../../../googlesitekit/datastore/user/constants';
} from '../../../../../../../hooks/useBreakpoint';
import { CORE_USER } from '../../../../../../../googlesitekit/datastore/user/constants';
import {
DATE_RANGE_OFFSET,
MODULES_ANALYTICS_4,
} from '../../../../datastore/constants';
} from '../../../../../datastore/constants';
import AudienceTileNoData from './AudienceTileNoData';
import Link from '../../../../../../components/Link';
import PartialDataBadge from '../PartialDataBadge';
import PartialDataNotice from '../PartialDataNotice';
import { numFmt } from '../../../../../../util';
import useViewOnly from '../../../../../../hooks/useViewOnly';
import Link from '../../../../../../../components/Link';
import PartialDataBadge from './PartialDataBadge';
import PartialDataNotice from './PartialDataNotice';
import { numFmt } from '../../../../../../../util';
import useViewOnly from '../../../../../../../hooks/useViewOnly';

export default function AudienceTilePagesMetric( {
TileIcon,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import { __ } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import InfoTooltip from '../../../../../components/InfoTooltip';
import InfoTooltip from '../../../../../../../components/InfoTooltip';

export default function PartialDataBadge( { tooltipTitle } ) {
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,23 +35,23 @@ import {
BREAKPOINT_SMALL,
BREAKPOINT_TABLET,
useBreakpoint,
} from '../../../../../../hooks/useBreakpoint';
import { MODULES_ANALYTICS_4 } from '../../../../datastore/constants';
import AudienceMetricIconVisitors from '../../../../../../../svg/icons/audience-metric-icon-visitors.svg';
import AudienceMetricIconVisitsPerVisitor from '../../../../../../../svg/icons/audience-metric-icon-visits-per-visitor.svg';
import AudienceMetricIconPagesPerVisit from '../../../../../../../svg/icons/audience-metric-icon-pages-per-visit.svg';
import AudienceMetricIconPageviews from '../../../../../../../svg/icons/audience-metric-icon-pageviews.svg';
import AudienceMetricIconCities from '../../../../../../../svg/icons/audience-metric-icon-cities.svg';
import AudienceMetricIconTopContent from '../../../../../../../svg/icons/audience-metric-icon-top-content.svg';
} from '../../../../../../../hooks/useBreakpoint';
import { MODULES_ANALYTICS_4 } from '../../../../../datastore/constants';
import AudienceMetricIconVisitors from '../../../../../../../../svg/icons/audience-metric-icon-visitors.svg';
import AudienceMetricIconVisitsPerVisitor from '../../../../../../../../svg/icons/audience-metric-icon-visits-per-visitor.svg';
import AudienceMetricIconPagesPerVisit from '../../../../../../../../svg/icons/audience-metric-icon-pages-per-visit.svg';
import AudienceMetricIconPageviews from '../../../../../../../../svg/icons/audience-metric-icon-pageviews.svg';
import AudienceMetricIconCities from '../../../../../../../../svg/icons/audience-metric-icon-cities.svg';
import AudienceMetricIconTopContent from '../../../../../../../../svg/icons/audience-metric-icon-top-content.svg';
import AudienceTileMetric from './AudienceTileMetric';
import AudienceTileCitiesMetric from './AudienceTileCitiesMetric';
import AudienceTilePagesMetric from './AudienceTilePagesMetric';
import PreviewBlock from '../../../../../../components/PreviewBlock';
import ChangeBadge from '../../../../../../components/ChangeBadge';
import InfoTooltip from '../../../../../../components/InfoTooltip';
import PartialDataBadge from '../PartialDataBadge';
import PartialDataNotice from '../PartialDataNotice';
import { numFmt } from '../../../../../../util';
import PreviewBlock from '../../../../../../../components/PreviewBlock';
import ChangeBadge from '../../../../../../../components/ChangeBadge';
import InfoTooltip from '../../../../../../../components/InfoTooltip';
import PartialDataBadge from './PartialDataBadge';
import PartialDataNotice from './PartialDataNotice';
import { numFmt } from '../../../../../../../util';
import AudienceTileCollectingData from './AudienceTileCollectingData';
import AudienceTileCollectingDataHideable from './AudienceTileCollectingDataHideable';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,20 @@
/**
* Internal dependencies
*/
import WithRegistrySetup from '../../../../../../../../tests/js/WithRegistrySetup';
import { Provider as ViewContextProvider } from '../../../../../../components/Root/ViewContextContext';
import { CORE_USER } from '../../../../../../googlesitekit/datastore/user/constants';
import WithRegistrySetup from '../../../../../../../../../tests/js/WithRegistrySetup';
import { Provider as ViewContextProvider } from '../../../../../../../components/Root/ViewContextContext';
import { CORE_USER } from '../../../../../../../googlesitekit/datastore/user/constants';
import {
DATE_RANGE_OFFSET,
MODULES_ANALYTICS_4,
} from '../../../../datastore/constants';
} from '../../../../../datastore/constants';
import {
VIEW_CONTEXT_MAIN_DASHBOARD,
VIEW_CONTEXT_MAIN_DASHBOARD_VIEW_ONLY,
} from '../../../../../../googlesitekit/constants';
} from '../../../../../../../googlesitekit/constants';
import AudienceTile from '.';
import { getPreviousDate } from '../../../../../../util';
import { withWidgetComponentProps } from '../../../../../../googlesitekit/widgets/util';
import { getPreviousDate } from '../../../../../../../util';
import { withWidgetComponentProps } from '../../../../../../../googlesitekit/widgets/util';

const WidgetWithComponentProps =
withWidgetComponentProps( 'audienceTile' )( AudienceTile );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,19 @@ import {
*/
import { Tab, TabBar } from 'googlesitekit-components';
import { useDispatch, useSelect } from 'googlesitekit-data';
import whenActive from '../../../../../util/when-active';
import {
BREAKPOINT_SMALL,
BREAKPOINT_TABLET,
useBreakpoint,
} from '../../../../../hooks/useBreakpoint';
import { CORE_USER } from '../../../../../googlesitekit/datastore/user/constants';
} from '../../../../../../hooks/useBreakpoint';
import { CORE_USER } from '../../../../../../googlesitekit/datastore/user/constants';
import {
DATE_RANGE_OFFSET,
MODULES_ANALYTICS_4,
} from '../../../datastore/constants';
} from '../../../../datastore/constants';
import AudienceTile from './AudienceTile';
import InfoTooltip from '../../../../../../components/InfoTooltip';
import AudienceTooltipMessage from './AudienceTooltipMessage';
import InfoTooltip from '../../../../../components/InfoTooltip';

const hasZeroDataForAudience = ( report, audienceResourceName ) => {
const audienceData = report?.rows?.find(
Expand All @@ -60,7 +59,7 @@ const hasZeroDataForAudience = ( report, audienceResourceName ) => {
return totalUsers === 0;
};

function AudienceTilesWidget( { Widget } ) {
export default function AudienceTiles( { Widget } ) {
const [ activeTile, setActiveTile ] = useState( 0 );
const breakpoint = useBreakpoint();
const isTabbedBreakpoint =
Expand All @@ -70,13 +69,14 @@ function AudienceTilesWidget( { Widget } ) {
const configuredAudiences = useSelect( ( select ) =>
select( MODULES_ANALYTICS_4 ).getConfiguredAudiences()
);
const audiencesDimensionFilter = {
audienceResourceName: configuredAudiences,
};
const audiences = useSelect( ( select ) => {
return select( MODULES_ANALYTICS_4 ).getAvailableAudiences();
} );

const audiencesDimensionFilter = {
audienceResourceName: configuredAudiences,
};

const dates = useSelect( ( select ) =>
select( CORE_USER ).getDateRangeDates( {
offsetDays: DATE_RANGE_OFFSET,
Expand Down Expand Up @@ -513,10 +513,6 @@ function AudienceTilesWidget( { Widget } ) {
);
}

AudienceTilesWidget.propTypes = {
AudienceTiles.propTypes = {
Widget: PropTypes.elementType.isRequired,
};

export default whenActive( { moduleName: 'analytics-4' } )(
AudienceTilesWidget
);
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ import { __, sprintf } from '@wordpress/i18n';
* Internal dependencies
*/
import { useSelect } from 'googlesitekit-data';
import Link from '../../../../../components/Link';
import { CORE_SITE } from '../../../../../googlesitekit/datastore/site/constants';
import Link from '../../../../../../components/Link';
import { CORE_SITE } from '../../../../../../googlesitekit/datastore/site/constants';

export default function AudienceTooltipMessage( {
audienceSlug,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/**
* AudienceTilesWidget component.
*
* Site Kit by Google, Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* External dependencies
*/
import PropTypes from 'prop-types';

/**
* Internal dependencies
*/
import { useSelect } from 'googlesitekit-data';
import whenActive from '../../../../../../util/when-active';
import { MODULES_ANALYTICS_4 } from '../../../../datastore/constants';
import AudienceTiles from './AudienceTiles';

function AudienceTilesWidget( { Widget, WidgetNull } ) {
const availableAudiences = useSelect( ( select ) => {
const audiences = select( MODULES_ANALYTICS_4 ).getAvailableAudiences();
return audiences?.map( ( audience ) => audience.name );
} );
const configuredAudiences = useSelect( ( select ) =>
select( MODULES_ANALYTICS_4 ).getConfiguredAudiences()
);

const hasMatchingAudience = configuredAudiences?.some( ( audience ) =>
availableAudiences?.includes( audience )
);

if ( hasMatchingAudience ) {
return <AudienceTiles Widget={ Widget } />;
}

return <WidgetNull />;
}

AudienceTilesWidget.propTypes = {
Widget: PropTypes.elementType.isRequired,
WidgetNull: PropTypes.elementType.isRequired,
};

export default whenActive( { moduleName: 'analytics-4' } )(
AudienceTilesWidget
);
Loading

0 comments on commit 46a8673

Please sign in to comment.