From daed41370911c8d33c062801df22a7d0192557e0 Mon Sep 17 00:00:00 2001 From: David Newell Date: Tue, 7 Nov 2023 14:46:03 +0000 Subject: [PATCH] chore: cleanup inline styles (#18314) --- .eslintrc.js | 12 +- ...-propertyfilters--with-no-close-button.png | Bin 4088 -> 7994 bytes ...s--funnel-top-to-bottom-breakdown-edit.png | Bin 173933 -> 174101 bytes ...sights--funnel-top-to-bottom-breakdown.png | Bin 111132 -> 111312 bytes .../IntervalFilter/intervalFilterLogic.ts | 144 ++++++++++++++++++ .../PersonPropertySelect.tsx | 1 + .../PropertyFilters.stories.tsx | 2 - .../PropertyFilters/PropertyFilters.tsx | 6 +- .../components/OperatorValueSelect.tsx | 2 +- .../components/PropertyFiltersDisplay.tsx | 10 +- .../PropertyGroupFilters.tsx | 1 - frontend/src/lib/components/SeriesGlyph.tsx | 1 + frontend/src/lib/components/Table/Table.tsx | 3 +- frontend/src/lib/components/Table/utils.tsx | 2 +- .../TaxonomicFilter/InfiniteSelectResults.tsx | 2 +- .../LemonSelect/LemonSelect.stories.tsx | 2 +- .../ProfilePicture/ProfilePicture.tsx | 7 +- frontend/src/lib/taxonomy.tsx | 4 +- .../nodes/EventsNode/EventPropertyFilters.tsx | 1 - .../PropertyGroupFilters.tsx | 1 - .../PersonsNode/PersonPropertyFilters.tsx | 1 - .../src/scenes/ResourcePermissionModal.tsx | 7 +- .../scenes/batch_exports/BatchExportScene.tsx | 1 + frontend/src/scenes/billing/BillingGauge.tsx | 8 +- .../CohortFilters/CohortCriteriaGroups.tsx | 2 +- .../CohortCriteriaRowBuilder.tsx | 2 +- .../dashboard/DashboardCollaborators.tsx | 7 +- .../dashboard/dashboards/NoDashboards.tsx | 4 +- frontend/src/scenes/events/Owner.tsx | 8 +- .../ExperimentImplementationDetails.tsx | 2 +- .../scenes/experiments/ExperimentPreview.tsx | 2 +- .../src/scenes/feature-flags/FeatureFlag.tsx | 2 +- .../src/scenes/feature-flags/FeatureFlags.tsx | 5 +- .../funnels/FunnelBarGraph/MetricRow.tsx | 2 +- .../ActionFilterRow/ActionFilterRow.tsx | 2 +- .../insightDateFilterLogic.ts | 37 +++++ .../insights/views/Histogram/Histogram.tsx | 1 + .../instance/DeadLetterQueue/MetricsTab.tsx | 7 +- .../SystemStatus/KafkaInspectorTab.tsx | 6 +- .../instance/SystemStatus/StaffUsersTab.tsx | 15 +- .../scenes/organization/Settings/Invites.tsx | 2 +- .../Settings/Permissions/Permissions.tsx | 2 +- .../Settings/Permissions/Roles/Roles.tsx | 2 +- .../VerifiedDomains/VerifiedDomains.tsx | 2 +- frontend/src/scenes/persons/Persons.tsx | 2 +- .../src/scenes/plugins/edit/PluginField.tsx | 2 +- .../src/scenes/plugins/plugin/PluginImage.tsx | 1 + .../src/scenes/plugins/plugin/PluginLogs.tsx | 12 +- .../scenes/plugins/source/PluginSource.tsx | 4 +- .../tabs/apps/InstalledAppsReorderModal.tsx | 1 + .../project/Settings/ExtraTeamSettings.tsx | 2 +- .../src/scenes/project/Settings/index.tsx | 2 +- .../player/controller/Seekbar.tsx | 2 +- .../session-recordings/player/icons.tsx | 2 +- frontend/src/scenes/surveys/EditSurvey.scss | 4 - frontend/src/scenes/surveys/SurveyEdit.tsx | 31 ++-- .../scenes/surveys/SurveyFormAppearance.tsx | 96 ++++++------ frontend/src/scenes/surveys/SurveyView.tsx | 2 +- frontend/src/scenes/surveys/surveyViewViz.tsx | 3 + 59 files changed, 315 insertions(+), 181 deletions(-) create mode 100644 frontend/src/lib/components/IntervalFilter/intervalFilterLogic.ts create mode 100644 frontend/src/scenes/insights/filters/InsightDateFilter/insightDateFilterLogic.ts diff --git a/.eslintrc.js b/.eslintrc.js index 9d54f523057d0..9d6792f0fd652 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -86,7 +86,7 @@ module.exports = { }, ], 'react/forbid-dom-props': [ - 1, + 'warn', { forbid: [ { @@ -98,7 +98,7 @@ module.exports = { }, ], 'posthog/warn-elements': [ - 1, + 'warn', { forbid: [ { @@ -146,7 +146,7 @@ module.exports = { }, ], 'react/forbid-elements': [ - 2, + 'error', { forbid: [ { @@ -200,9 +200,9 @@ module.exports = { ], }, ], - 'no-constant-condition': 0, - 'no-prototype-builtins': 0, - 'no-irregular-whitespace': 0, + 'no-constant-condition': 'off', + 'no-prototype-builtins': 'off', + 'no-irregular-whitespace': 'off', }, overrides: [ { diff --git a/frontend/__snapshots__/filters-propertyfilters--with-no-close-button.png b/frontend/__snapshots__/filters-propertyfilters--with-no-close-button.png index 363659a9b58665c642f89125c73a85d3268e1aeb..d6139bbdf962746acf8345b7543b589bc9283ea8 100644 GIT binary patch literal 7994 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 delta 16969 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%0DH>CSG<=YYnb?tV6%}`RKid z6J@AkB;4fOAV!E53nMdDx12sdybg>VJ+ zsg0=N`hL*L=&6@V%BgRiF*ZMo4HhE*w~Pnsc+j@g!5O6+teSmxVWH=Eo!gZpL7pv_ zYLo?6JiB#&d+E%T3_D1%B_WNi#Q)vi*IfA3`2J@bqwf;W&OMNXK9Hb$V>4E_=OmtB zyk|mI!FXN8w3*)(s59)I#eS)8sAr~*kFLZnr4roTru0uwl!Qby{GIfR1PquKmXRq5 zB>MAV+b`GeQX1=rFH@*GPdI#Rl`(MAK50O$a@b+kIVg((mj{Qt( ztKb~NgvF0HuoXJ|@^*#2>nKnA55jq9BYG7H37zq-XkW>}2034E4>E^`9?_V7S9N!* z3S>`hF}YF9I@b`kzO73=WH>hV{+j&%Fx29Lhvi zY#DI8J}Dc%4HsmUlb{s(w>}MSTq)4p@S$hFZ_E06d)45!yDif+Mycsa|9W3F-#!Pn zvfR0SAfsMR;c(tuZ@t*{?!ZIk++6aS-8huAix%ru7=qGAHp7QOwvZAD`tSx>6(s5j zQtvVg@LmAd`cLzIFm0v|KJh7#ZP1L<*$}Cxf-8psCQ78{7HYl$+hLM7Wmm*1j~>rO zRo4<@c{i~U-e^@#CX}(2rk4((HHfyT?=S4C+Hv-~MZcQ-0q<%WAr9)us8A0`caMA}qp}6ZyxNh(Xnd?#{wO#Zb?3qfXQMvlZDUn?X2`>ai zu^9&1!}qofnQ-_TEU)3%mc&Z*=ZEymts=$hqG5Z;Lt_p_3b|vb-`^=Da6F>BF%+_3 zPmaW^*f`2_Tm=K^`B<6FrSb+q)SenLGR6zth8mSFkj;iXe*R|WC+QaetOHRr(l3;= zN>sYY|2aF!5igmAVhBkG_Iw0-GbvD2xa-nT%_p$6wf#TBC=fRX{uks0F%F!_zW?9>DCa>kBiP`< z9A77`ItK=@AxIRcKb-Xfn?LTrteXZv=at`0CP;B5_E-x4X*~rGrT(|k<1U2!gXVW1 zefocT2LTADEuReQFzf+EPtc8nUZT#FFpvnjr(JO0!DEiQo7*GM*D^VFN3^iOThPBG zZK5WA=dn>3QB9B{iyo{$oQyX(JRHpO?j8c|ot=*XalEVVoDC&TjwNb zKL>saL^=*oTTHTf3Z8$6#F0DzN+Dl4OAS%RzMuHobEdi!rR^#Aue z=>PW(|BLqns@~o8U!L8{?e2sh61aT7-{cZ8gvFQSpeV&t=AgI`zDMnT8D-bExjk|B Oy{x37M3I>Or~d}o01aUP diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown.png index 772ae64573f6afa5c441e1f37e01ef709fd0d5a2..77cc5d1496a9cde1726332357782368369f90461 100644 GIT binary patch delta 22069 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 WhKr{Kqi%48_n5=Bhe|CyV*Ue<{I=Nu delta 21892 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 diff --git a/frontend/src/lib/components/IntervalFilter/intervalFilterLogic.ts b/frontend/src/lib/components/IntervalFilter/intervalFilterLogic.ts new file mode 100644 index 0000000000000..d2136d8d8a682 --- /dev/null +++ b/frontend/src/lib/components/IntervalFilter/intervalFilterLogic.ts @@ -0,0 +1,144 @@ +import { kea, props, key, path, connect, actions, reducers, listeners } from 'kea' +import { objectsEqual, dateMapping } from 'lib/utils' +import type { intervalFilterLogicType } from './intervalFilterLogicType' +import { IntervalKeyType, Intervals, intervals } from 'lib/components/IntervalFilter/intervals' +import { BaseMathType, InsightLogicProps, IntervalType } from '~/types' +import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils' +import { dayjs } from 'lib/dayjs' +import { InsightQueryNode, TrendsQuery } from '~/queries/schema' +import { lemonToast } from 'lib/lemon-ui/lemonToast' +import { BASE_MATH_DEFINITIONS } from 'scenes/trends/mathsLogic' +import { insightVizDataLogic } from 'scenes/insights/insightVizDataLogic' + +export const intervalFilterLogic = kea([ + props({} as InsightLogicProps), + key(keyForInsightLogicProps('new')), + path((key) => ['lib', 'components', 'IntervalFilter', 'intervalFilterLogic', key]), + connect((props: InsightLogicProps) => ({ + actions: [insightVizDataLogic(props), ['updateQuerySource']], + values: [insightVizDataLogic(props), ['interval', 'querySource']], + })), + actions(() => ({ + setInterval: (interval: IntervalKeyType) => ({ interval }), + setEnabledIntervals: (enabledIntervals: Intervals) => ({ enabledIntervals }), + })), + reducers(() => ({ + enabledIntervals: [ + { ...intervals } as Intervals, + { + setEnabledIntervals: (_, { enabledIntervals }) => enabledIntervals, + }, + ], + })), + listeners(({ values, actions, selectors }) => ({ + setInterval: ({ interval }) => { + if (values.interval !== interval) { + actions.updateQuerySource({ interval } as Partial) + } + }, + updateQuerySource: ({ querySource }, _, __, previousState) => { + const { date_from, date_to } = querySource.dateRange || {} + const previousDateRange = selectors.querySource(previousState)?.dateRange || {} + + let activeUsersMath: BaseMathType.WeeklyActiveUsers | BaseMathType.MonthlyActiveUsers | null = null + + // We disallow grouping by certain intervals for weekly active users and monthly active users views + // e.g. WAUs grouped by month. Here, look for the first event/action running WAUs/MAUs math and + // pass that down to the interval filter to determine what groupings are allowed. + for (const series of (values.querySource as TrendsQuery)?.series || []) { + if (series.math === BaseMathType.WeeklyActiveUsers) { + activeUsersMath = BaseMathType.WeeklyActiveUsers + break + } + + if (series.math === BaseMathType.MonthlyActiveUsers) { + activeUsersMath = BaseMathType.MonthlyActiveUsers + break + } + } + + const enabledIntervals: Intervals = { ...intervals } + + if (activeUsersMath) { + // Disallow grouping by hour for WAUs/MAUs as it's an expensive query that produces a view that's not useful for users + enabledIntervals.hour = { + ...enabledIntervals.hour, + disabledReason: + 'Grouping by hour is not supported on insights with weekly or monthly active users series.', + } + + // Disallow grouping by month for WAUs as the resulting view is misleading to users + if (activeUsersMath === BaseMathType.WeeklyActiveUsers) { + enabledIntervals.month = { + ...enabledIntervals.month, + disabledReason: + 'Grouping by month is not supported on insights with weekly active users series.', + } + } + } + + actions.setEnabledIntervals(enabledIntervals) + + // If the user just flipped an event action to use WAUs/MAUs math and their + // current interval is unsupported by the math type, switch their interval + // to an appropriate allowed interval and inform them of the change via a toast + if ( + activeUsersMath && + (values.querySource as TrendsQuery)?.interval && + enabledIntervals[(values.querySource as TrendsQuery).interval as IntervalType].disabledReason + ) { + if (values.interval === 'hour') { + lemonToast.info( + `Switched to grouping by day, because "${BASE_MATH_DEFINITIONS[activeUsersMath].name}" does not support grouping by ${values.interval}.` + ) + actions.updateQuerySource({ interval: 'day' } as Partial) + } else { + lemonToast.info( + `Switched to grouping by week, because "${BASE_MATH_DEFINITIONS[activeUsersMath].name}" does not support grouping by ${values.interval}.` + ) + actions.updateQuerySource({ interval: 'week' } as Partial) + } + return + } + + if ( + !date_from || + (objectsEqual(date_from, previousDateRange.date_from) && + objectsEqual(date_to, previousDateRange.date_to)) + ) { + return + } + + // automatically set an interval for fixed date ranges + if ( + date_from && + date_to && + dayjs(querySource.dateRange?.date_from).isValid() && + dayjs(querySource.dateRange?.date_to).isValid() + ) { + if (dayjs(date_to).diff(dayjs(date_from), 'day') <= 3) { + actions.updateQuerySource({ interval: 'hour' } as Partial) + } else if (dayjs(date_to).diff(dayjs(date_from), 'month') <= 3) { + actions.updateQuerySource({ interval: 'day' } as Partial) + } else { + actions.updateQuerySource({ interval: 'month' } as Partial) + } + return + } + // get a defaultInterval for dateOptions that have a default value + let interval: IntervalType = 'day' + for (const { key, values, defaultInterval } of dateMapping) { + if ( + values[0] === date_from && + values[1] === (date_to || undefined) && + key !== 'Custom' && + defaultInterval + ) { + interval = defaultInterval + break + } + } + actions.updateQuerySource({ interval } as Partial) + }, + })), +]) diff --git a/frontend/src/lib/components/PersonPropertySelect/PersonPropertySelect.tsx b/frontend/src/lib/components/PersonPropertySelect/PersonPropertySelect.tsx index d981c95aad5a7..d14d233f90f3b 100644 --- a/frontend/src/lib/components/PersonPropertySelect/PersonPropertySelect.tsx +++ b/frontend/src/lib/components/PersonPropertySelect/PersonPropertySelect.tsx @@ -36,6 +36,7 @@ const SortableProperty = ({ className={clsx(sortable ? 'cursor-move' : 'cursor-auto')} {...attributes} {...listeners} + // eslint-disable-next-line react/forbid-dom-props style={{ transform: CSS.Translate.toString(transform), transition, diff --git a/frontend/src/lib/components/PropertyFilters/PropertyFilters.stories.tsx b/frontend/src/lib/components/PropertyFilters/PropertyFilters.stories.tsx index fb925b583c669..484b294b29b47 100644 --- a/frontend/src/lib/components/PropertyFilters/PropertyFilters.stories.tsx +++ b/frontend/src/lib/components/PropertyFilters/PropertyFilters.stories.tsx @@ -38,7 +38,6 @@ export function ComparingPropertyFilters(): JSX.Element { propertyFilters={[...propertyFilters]} onChange={() => {}} pageKey={'pageKey'} - style={{ marginBottom: 0 }} showNestedArrow eventNames={[]} /> @@ -48,7 +47,6 @@ export function ComparingPropertyFilters(): JSX.Element { propertyFilters={[...propertyFilters]} onChange={() => {}} pageKey={'pageKey'} - style={{ marginBottom: 0 }} eventNames={[]} disablePopover={true} /> diff --git a/frontend/src/lib/components/PropertyFilters/PropertyFilters.tsx b/frontend/src/lib/components/PropertyFilters/PropertyFilters.tsx index 18415dba6c362..dc9506368a0cd 100644 --- a/frontend/src/lib/components/PropertyFilters/PropertyFilters.tsx +++ b/frontend/src/lib/components/PropertyFilters/PropertyFilters.tsx @@ -1,4 +1,4 @@ -import React, { CSSProperties, useEffect } from 'react' +import React, { useEffect } from 'react' import { useValues, BindLogic, useActions } from 'kea' import { propertyFilterLogic } from './propertyFilterLogic' import { FilterRow } from './components/FilterRow' @@ -15,7 +15,6 @@ interface PropertyFiltersProps { pageKey: string showConditionBadge?: boolean disablePopover?: boolean - style?: CSSProperties taxonomicGroupTypes?: TaxonomicFilterGroupType[] hogQLTable?: string showNestedArrow?: boolean @@ -39,7 +38,6 @@ export function PropertyFilters({ disablePopover = false, // use bare PropertyFilter without popover taxonomicGroupTypes, hogQLTable, - style = {}, showNestedArrow = false, eventNames = [], orFiltering = false, @@ -62,7 +60,7 @@ export function PropertyFilters({ }, [propertyFilters]) return ( -
+
{showNestedArrow && !disablePopover &&
{<>↳}
}
diff --git a/frontend/src/lib/components/PropertyFilters/components/OperatorValueSelect.tsx b/frontend/src/lib/components/PropertyFilters/components/OperatorValueSelect.tsx index 838569a81c8ab..817677a1f7f8a 100644 --- a/frontend/src/lib/components/PropertyFilters/components/OperatorValueSelect.tsx +++ b/frontend/src/lib/components/PropertyFilters/components/OperatorValueSelect.tsx @@ -126,7 +126,7 @@ export function OperatorValueSelect({ />
{!isOperatorFlag(currentOperator || PropertyOperator.Exact) && type && propkey && ( -
+
= ({ filters, style }: Props) => { +const PropertyFiltersDisplay = ({ filters }: { filters: AnyPropertyFilter[] }): JSX.Element => { return ( -
+
{filters && filters.map((item) => { return diff --git a/frontend/src/lib/components/PropertyGroupFilters/PropertyGroupFilters.tsx b/frontend/src/lib/components/PropertyGroupFilters/PropertyGroupFilters.tsx index f0d26edd7c1a4..30d7c835ccf9f 100644 --- a/frontend/src/lib/components/PropertyGroupFilters/PropertyGroupFilters.tsx +++ b/frontend/src/lib/components/PropertyGroupFilters/PropertyGroupFilters.tsx @@ -113,7 +113,6 @@ export function PropertyGroupFilters({ ? (group.values as AnyPropertyFilter[]) : null } - style={{ marginBottom: 0 }} onChange={(properties) => { setPropertyFilters(properties, propertyGroupIndex) }} diff --git a/frontend/src/lib/components/SeriesGlyph.tsx b/frontend/src/lib/components/SeriesGlyph.tsx index a34d6337951e7..156ebcf5f367b 100644 --- a/frontend/src/lib/components/SeriesGlyph.tsx +++ b/frontend/src/lib/components/SeriesGlyph.tsx @@ -10,6 +10,7 @@ interface SeriesGlyphProps { export function SeriesGlyph({ className, style, children, variant }: SeriesGlyphProps): JSX.Element { return ( + // eslint-disable-next-line react/forbid-dom-props
{children}
diff --git a/frontend/src/lib/components/Table/Table.tsx b/frontend/src/lib/components/Table/Table.tsx index 6fc3d67005941..bc8a41e524eec 100644 --- a/frontend/src/lib/components/Table/Table.tsx +++ b/frontend/src/lib/components/Table/Table.tsx @@ -13,7 +13,7 @@ export function createdAtColumn = Record +
) @@ -33,6 +33,7 @@ export function createdByColumn = Record )} + {/* eslint-disable-next-line react/forbid-dom-props */}
{item.created_by ? item.created_by.first_name || item.created_by.email : '-'}
diff --git a/frontend/src/lib/components/Table/utils.tsx b/frontend/src/lib/components/Table/utils.tsx index 877dbd3ec43b0..8bd296810ae6f 100644 --- a/frontend/src/lib/components/Table/utils.tsx +++ b/frontend/src/lib/components/Table/utils.tsx @@ -2,7 +2,7 @@ import { useWindowSize } from 'lib/hooks/useWindowSize' import { getBreakpoint } from 'lib/utils/responsiveUtils' export function normalizeColumnTitle(title: string | JSX.Element): JSX.Element { - return {title} + return {title} } // Returns a boolean indicating whether table should be scrolling or not given a specific diff --git a/frontend/src/lib/components/TaxonomicFilter/InfiniteSelectResults.tsx b/frontend/src/lib/components/TaxonomicFilter/InfiniteSelectResults.tsx index 5496ec2b95e6e..777e11cf0c6ff 100644 --- a/frontend/src/lib/components/TaxonomicFilter/InfiniteSelectResults.tsx +++ b/frontend/src/lib/components/TaxonomicFilter/InfiniteSelectResults.tsx @@ -107,7 +107,7 @@ export function InfiniteSelectResults({
{taxonomicGroupTypes.map((groupType) => { return ( -
+
-

+

I am a custom footer!
This might be a good time to tell you about our premium features...

diff --git a/frontend/src/lib/lemon-ui/ProfilePicture/ProfilePicture.tsx b/frontend/src/lib/lemon-ui/ProfilePicture/ProfilePicture.tsx index c97db6270d428..4e855d4ba00b7 100644 --- a/frontend/src/lib/lemon-ui/ProfilePicture/ProfilePicture.tsx +++ b/frontend/src/lib/lemon-ui/ProfilePicture/ProfilePicture.tsx @@ -1,7 +1,7 @@ import clsx from 'clsx' import { useValues } from 'kea' import md5 from 'md5' -import { CSSProperties, useEffect, useState } from 'react' +import { useEffect, useState } from 'react' import { userLogic } from 'scenes/userLogic' import { IconRobot } from '../icons' import { Lettermark, LettermarkColor } from '../Lettermark/Lettermark' @@ -13,7 +13,6 @@ export interface ProfilePictureProps { email?: string size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' showName?: boolean - style?: CSSProperties className?: string title?: string index?: number @@ -25,7 +24,6 @@ export function ProfilePicture({ email, size = 'lg', showName, - style, className, index, title, @@ -64,7 +62,6 @@ export function ProfilePicture({ src={gravatarUrl} title={title || `This is the Gravatar for ${combinedNameAndEmail}`} alt="" - style={style} /> ) } else { @@ -72,7 +69,7 @@ export function ProfilePicture({ type === 'bot' ? ( ) : ( - + This variable will be set to the distinct ID if you've called{' '} -
posthog.identify('distinct id')
. If the user is anonymous, - it'll be empty. +
posthog.identify('distinct id')
. If the user is anonymous, it'll be + empty.
), }, diff --git a/frontend/src/queries/nodes/EventsNode/EventPropertyFilters.tsx b/frontend/src/queries/nodes/EventsNode/EventPropertyFilters.tsx index f3788bc9a87cb..d7dc068310111 100644 --- a/frontend/src/queries/nodes/EventsNode/EventPropertyFilters.tsx +++ b/frontend/src/queries/nodes/EventsNode/EventPropertyFilters.tsx @@ -36,7 +36,6 @@ export function EventPropertyFilters({ query, setQuery }: EventPropertyFiltersPr } }} pageKey={`EventPropertyFilters.${id}`} - style={{ marginBottom: 0, marginTop: 0 }} eventNames={eventNames} /> ) : ( diff --git a/frontend/src/queries/nodes/InsightViz/PropertyGroupFilters/PropertyGroupFilters.tsx b/frontend/src/queries/nodes/InsightViz/PropertyGroupFilters/PropertyGroupFilters.tsx index a21ea23176bf9..ba0abd3be7b46 100644 --- a/frontend/src/queries/nodes/InsightViz/PropertyGroupFilters/PropertyGroupFilters.tsx +++ b/frontend/src/queries/nodes/InsightViz/PropertyGroupFilters/PropertyGroupFilters.tsx @@ -101,7 +101,6 @@ export function PropertyGroupFilters({ ? (group.values as AnyPropertyFilter[]) : null } - style={{ marginBottom: 0 }} onChange={(properties) => { setPropertyFilters(properties, propertyGroupIndex) }} diff --git a/frontend/src/queries/nodes/PersonsNode/PersonPropertyFilters.tsx b/frontend/src/queries/nodes/PersonsNode/PersonPropertyFilters.tsx index e99c2c68b7ffd..f8ddaa48b44b1 100644 --- a/frontend/src/queries/nodes/PersonsNode/PersonPropertyFilters.tsx +++ b/frontend/src/queries/nodes/PersonsNode/PersonPropertyFilters.tsx @@ -33,7 +33,6 @@ export function PersonPropertyFilters({ query, setQuery }: PersonPropertyFilters : [TaxonomicFilterGroupType.PersonProperties] } hogQLTable="persons" - style={{ marginBottom: 0, marginTop: 0 }} /> ) : (
Error: property groups are not supported.
diff --git a/frontend/src/scenes/ResourcePermissionModal.tsx b/frontend/src/scenes/ResourcePermissionModal.tsx index de8706a13e266..7e4f9a1ca9a9d 100644 --- a/frontend/src/scenes/ResourcePermissionModal.tsx +++ b/frontend/src/scenes/ResourcePermissionModal.tsx @@ -181,12 +181,7 @@ export function ResourcePermission({ <>
Roles
{roles.length > 0 ? ( -
+
{roles.map((role) => { return ( {type} } diff --git a/frontend/src/scenes/billing/BillingGauge.tsx b/frontend/src/scenes/billing/BillingGauge.tsx index cce1c0b9663a4..27e41faf153d5 100644 --- a/frontend/src/scenes/billing/BillingGauge.tsx +++ b/frontend/src/scenes/billing/BillingGauge.tsx @@ -14,12 +14,8 @@ type BillingGaugeItemProps = { const BillingGaugeItem = ({ width, className, tooltip, top, value }: BillingGaugeItemProps): JSX.Element => { return ( -
+ // eslint-disable-next-line react/forbid-dom-props +
setInnerGroupType(value, groupIndex)} value={group.type} /> -
+
} status="primary-alt" diff --git a/frontend/src/scenes/cohorts/CohortFilters/CohortCriteriaRowBuilder.tsx b/frontend/src/scenes/cohorts/CohortFilters/CohortCriteriaRowBuilder.tsx index 83f133b41035b..4f7209a7d5583 100644 --- a/frontend/src/scenes/cohorts/CohortFilters/CohortCriteriaRowBuilder.tsx +++ b/frontend/src/scenes/cohorts/CohortFilters/CohortCriteriaRowBuilder.tsx @@ -121,7 +121,7 @@ export function CohortCriteriaRowBuilder({ /> )}
-
+
diff --git a/frontend/src/scenes/dashboard/DashboardCollaborators.tsx b/frontend/src/scenes/dashboard/DashboardCollaborators.tsx index 2c91d4ff3000c..4f13b597f8fee 100644 --- a/frontend/src/scenes/dashboard/DashboardCollaborators.tsx +++ b/frontend/src/scenes/dashboard/DashboardCollaborators.tsx @@ -88,12 +88,7 @@ export function DashboardCollaboration({ dashboardId }: { dashboardId: Dashboard
)}
Project members with access
-
+
{allCollaborators.map((collaborator) => ( { }) } > -
+
@@ -36,7 +36,7 @@ export const NoDashboards = (): JSX.Element => { }) } > -
+
diff --git a/frontend/src/scenes/events/Owner.tsx b/frontend/src/scenes/events/Owner.tsx index 1417abc637831..600be23efbe12 100644 --- a/frontend/src/scenes/events/Owner.tsx +++ b/frontend/src/scenes/events/Owner.tsx @@ -6,12 +6,14 @@ export function Owner({ user, style = {} }: { user?: UserBasicType | null; style return ( <> {user?.uuid ? ( -
+
- {user.first_name} + + {user.first_name} +
) : ( - + No owner )} diff --git a/frontend/src/scenes/experiments/ExperimentImplementationDetails.tsx b/frontend/src/scenes/experiments/ExperimentImplementationDetails.tsx index 9653d430b1682..8582017bb7bcb 100644 --- a/frontend/src/scenes/experiments/ExperimentImplementationDetails.tsx +++ b/frontend/src/scenes/experiments/ExperimentImplementationDetails.tsx @@ -111,7 +111,7 @@ export function ExperimentImplementationDetails({ experiment }: ExperimentImplem title={Feature flag usage and implementation} className="experiment-implementation-details" > -
+
Variant group ) : ( - + Unknown field type "{fieldConfig.type}".
You may need to upgrade PostHog! diff --git a/frontend/src/scenes/plugins/plugin/PluginImage.tsx b/frontend/src/scenes/plugins/plugin/PluginImage.tsx index 67120a11074d8..9fec8b6275e9e 100644 --- a/frontend/src/scenes/plugins/plugin/PluginImage.tsx +++ b/frontend/src/scenes/plugins/plugin/PluginImage.tsx @@ -42,6 +42,7 @@ export function PluginImage({ ) : (
{type} + return {type} } const columns: LemonTableColumns> = [ diff --git a/frontend/src/scenes/plugins/source/PluginSource.tsx b/frontend/src/scenes/plugins/source/PluginSource.tsx index 0b2ba5fd675b1..0d016a06a7ba1 100644 --- a/frontend/src/scenes/plugins/source/PluginSource.tsx +++ b/frontend/src/scenes/plugins/source/PluginSource.tsx @@ -80,7 +80,7 @@ export function PluginSource({ title={pluginSourceLoading ? 'Loading...' : `Edit App: ${name}`} placement={placement ?? 'left'} footer={ -
+
@@ -126,7 +126,7 @@ export function PluginSource({ }} /> {!value && createDefaultPluginSource(name)[currentFile] ? ( -
+
diff --git a/frontend/src/scenes/plugins/tabs/apps/InstalledAppsReorderModal.tsx b/frontend/src/scenes/plugins/tabs/apps/InstalledAppsReorderModal.tsx index 1e5e0ad81b897..382a157bbbf6f 100644 --- a/frontend/src/scenes/plugins/tabs/apps/InstalledAppsReorderModal.tsx +++ b/frontend/src/scenes/plugins/tabs/apps/InstalledAppsReorderModal.tsx @@ -16,6 +16,7 @@ const MinimalAppView = ({ plugin, order }: { plugin: PluginTypeWithConfig; order
+
+
- {/* eslint-disable-next-line react/forbid-dom-props */}
{/* eslint-disable-next-line react/forbid-dom-props */} diff --git a/frontend/src/scenes/session-recordings/player/icons.tsx b/frontend/src/scenes/session-recordings/player/icons.tsx index 6fff14ba753b5..fa8a79d631150 100644 --- a/frontend/src/scenes/session-recordings/player/icons.tsx +++ b/frontend/src/scenes/session-recordings/player/icons.tsx @@ -10,7 +10,7 @@ export function IconWindowOld({ value, className = '', size = 'medium' }: IconWi const shortValue = typeof value === 'number' ? value : String(value).charAt(0) return (
- + {shortValue}

{title}

{description &&

{description}

} @@ -694,13 +699,7 @@ export default function SurveyEdit(): JSX.Element { description="Use the PostHog API to show/hide your survey programmatically" value={SurveyType.API} > -
+
@@ -924,14 +923,12 @@ export default function SurveyEdit(): JSX.Element { />
-
-
- setSelectedQuestion(preview)} - /> -
+
+ setSelectedQuestion(preview)} + />
) diff --git a/frontend/src/scenes/surveys/SurveyFormAppearance.tsx b/frontend/src/scenes/surveys/SurveyFormAppearance.tsx index 5ff65153a4508..4ce32f42d6192 100644 --- a/frontend/src/scenes/surveys/SurveyFormAppearance.tsx +++ b/frontend/src/scenes/surveys/SurveyFormAppearance.tsx @@ -17,58 +17,54 @@ export function SurveyFormAppearance({ }: SurveyFormAppearanceProps): JSX.Element { const showThankYou = survey.appearance.displayThankYouMessage && activePreview >= survey.questions.length - return ( -
- {survey.type !== SurveyType.API ? ( - <> - {showThankYou ? ( - - ) : ( - 1 ? { submitButtonText: 'Next' } : null), - }} - /> - )} - { - setActivePreview(activePreview) - }} - className="mt-4 whitespace-nowrap" - fullWidth - value={activePreview} - options={[ - ...survey.questions.map((question, index) => ({ - label: `${index + 1}. ${question.question ?? ''}`, - value: index, - })), - ...(survey.appearance.displayThankYouMessage - ? [ - { - label: `${survey.questions.length + 1}. Confirmation message`, - value: survey.questions.length, - }, - ] - : []), - ]} - /> - + return survey.type !== SurveyType.API ? ( + <> + {showThankYou ? ( + ) : ( -
-

API survey response

- -
+ 1 ? { submitButtonText: 'Next' } : null), + }} + /> )} + { + setActivePreview(activePreview) + }} + className="mt-4 whitespace-nowrap" + fullWidth + value={activePreview} + options={[ + ...survey.questions.map((question, index) => ({ + label: `${index + 1}. ${question.question ?? ''}`, + value: index, + })), + ...(survey.appearance.displayThankYouMessage + ? [ + { + label: `${survey.questions.length + 1}. Confirmation message`, + value: survey.questions.length, + }, + ] + : []), + ]} + /> + + ) : ( +
+

API survey response

+
) } diff --git a/frontend/src/scenes/surveys/SurveyView.tsx b/frontend/src/scenes/surveys/SurveyView.tsx index 0da16f745b4ab..334027e67ba0d 100644 --- a/frontend/src/scenes/surveys/SurveyView.tsx +++ b/frontend/src/scenes/surveys/SurveyView.tsx @@ -213,7 +213,7 @@ export function SurveyView({ id }: { id: string }): JSX.Element {
)} {survey.type !== SurveyType.API ? ( -
+
@@ -121,6 +122,7 @@ export function UsersStackedBar({ surveyUserStats }: { surveyUserStats: SurveyUs ({ count, label, style }) => count > 0 && (
+ {/* eslint-disable-next-line react/forbid-dom-props */}
{`${label} (${( (count / total) * @@ -345,6 +347,7 @@ export function SingleChoiceQuestionPieChart({ >
{`${labels[i]}`}