PluginProbe
Extendify / 0.9.3
Extendify v0.9.3
3.2.1 3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 All 127 releases
extendify / src / Onboarding / components / CompletedTasks.js

CompletedTasks.js in Extendify 0.9.3, at src/Onboarding/components/CompletedTasks.js

67 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useMemo } from '@wordpress/element'
2 import { __ } from '@wordpress/i18n'
3 import classNames from 'classnames'
4 import { usePagesStore } from '@onboarding/state/Pages'
5 import { Checkmark, Radio } from '@onboarding/svg'
6
7 export const CompletedTasks = ({ disabled = false }) => {
8 const { setPage } = usePagesStore()
9 const pages = usePagesStore((state) => state.pages)
10 const currentPageIndex = usePagesStore((state) => state.currentPageIndex)
11 const watched = useMemo(() => {
12 return Array.from(pages.values())
13 .map((task, index) => ({ ...task, pageIndex: index }))
14 .filter((page) => page?.state()?.showInSidebar)
15 }, [pages])
16 const lowestIndexWatched = useMemo(() => {
17 return watched.reduce(
18 (lowest, page) => Math.min(lowest, page.pageIndex),
19 Infinity,
20 )
21 }, [watched])
22
23 if (!watched?.length || currentPageIndex < lowestIndexWatched) {
24 return null
25 }
26
27 return (
28 <div className="hidden md:block mt-20">
29 <h3 className="text-sm text-partner-primary-text uppercase">
30 {__('Steps', 'extendify')}
31 </h3>
32 <ul>
33 {watched.map((page) => (
34 <li
35 key={page?.state()?.title}
36 className={classNames('text-base', {
37 hidden: page.pageIndex > currentPageIndex,
38 'line-through opacity-60':
39 page.pageIndex < currentPageIndex,
40 'hover:opacity-100 hover:no-underline': !disabled,
41 })}>
42 <button
43 className={classNames(
44 'bg-transparent p-0 text-partner-primary-text flex items-center',
45 {
46 'cursor-pointer':
47 page.pageIndex < currentPageIndex &&
48 !disabled,
49 },
50 )}
51 type="button"
52 disabled={disabled}
53 onClick={() => setPage(page?.pageIndex)}>
54 {page.pageIndex < currentPageIndex ? (
55 <Checkmark className="text-partner-primary-text h-6 w-6 mr-1" />
56 ) : (
57 <Radio className="text-partner-primary-text h-6 w-6 mr-1" />
58 )}
59 {page?.state()?.title}
60 </button>
61 </li>
62 ))}
63 </ul>
64 </div>
65 )
66 }
67