Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 0 additions & 72 deletions src/components/SdkModal.tsx

This file was deleted.

File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import {
BaseControl,
} from '@wordpress/components';
import { useState, useRef, useEffect } from '@wordpress/element';
import { Flag } from '../../types';
import DeleteModal from './DeleteModal';
import SdkModal from './SdkModal';
import { Flag } from '../../../types';
import DeleteModal from '../modals/DeleteModal';
import SdkModal from '../modals/SdkModal';
import { __ } from '@wordpress/i18n';
import { checkIfFlagExists } from '../utils';
import { checkIfFlagExists } from '../../utils';

interface LineItemProps {
flags: Flag[];
Expand All @@ -20,7 +20,7 @@ interface LineItemProps {
setDisableSave: (toggle: boolean) => void;
}

const LineItem = ({
const FlagRow = ({
flags,
setFlags,
item,
Expand Down Expand Up @@ -200,4 +200,4 @@ const LineItem = ({
);
};

export default LineItem;
export default FlagRow;
8 changes: 4 additions & 4 deletions src/components/Layout.tsx → src/components/flag/Flags.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { useState, useEffect } from '@wordpress/element';
import { Spinner } from '@wordpress/components';
import LineItem from './LineItem';
import { Flag } from '../../types';
import FlagRow from './FlagRow';
import { Flag } from '../../../types';
import SubmitControls from './SubmitControls';
import { getFlags } from '../utils';
import { getFlags } from '../../utils';
import Header from './Header';
import { __ } from '@wordpress/i18n';

Expand Down Expand Up @@ -41,7 +41,7 @@ const Layout = (): JSX.Element => {
) : (
flags?.map((flag: Flag) => {
return (
<LineItem
<FlagRow
key={flag.id}
item={flag}
flags={flags}
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Flex, FlexItem, Button } from '@wordpress/components';
import { Flag } from '../../types';
import { updateFlags } from '../utils';
import { Flag } from '../../../types';
import { updateFlags } from '../../utils';
import { useState } from '@wordpress/element';
import Notices from './Snackbar';
import Notices from '../common/Snackbar';
import { dispatch } from '@wordpress/data';
import { __ } from '@wordpress/i18n';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Modal, Button } from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { Flag } from '../../types';
import { Flag } from '../../../types';
interface DeleteModalProps {
closeModal: () => void;
item: Flag;
Expand Down
25 changes: 25 additions & 0 deletions src/components/modals/SdkModal.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Modal } from '@wordpress/components';
import { Flag } from '../../../types';
import TsSupport from '../snippets/TsSupport';
import PhpSnippet from '../snippets/PhpSnippet';
import JsSnippet from '../snippets/JsSnippet';

interface SdkModalProps {
item: Flag;
closeSdkModal: () => void;
}

const SdkModal = ({ item, closeSdkModal }: SdkModalProps): JSX.Element => {
return (
<Modal
title={`SDK for feature flag: ${item.name}`}
onRequestClose={closeSdkModal}
>
<PhpSnippet flag={item.name} />
<JsSnippet flag={item.name} />
<TsSupport />
</Modal>
);
};

export default SdkModal;
34 changes: 34 additions & 0 deletions src/components/snippets/JsSnippet.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import Snippet from './Snippet';
import { useMemo } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import Clipboard from '../common/Clipboard';

export default function ({ flag }: { flag: string }): JSX.Element {
const jsSnippet = useMemo(() => {
return `import domReady from '@wordpress/dom-ready';
domReady(function () {
if (
typeof window?.mrFeatureFlags !== 'undefined' &&
window.mrFeatureFlags.isEnabled('${flag}')
) {
// js code goes here...
}
});`;
}, [flag]);
return (
<div className="mr-feature-flag-js-snippet-container">
<h3>{__('JavaScript Snippet', 'mr-feature-flags')}</h3>
<Clipboard
text={jsSnippet}
style={{
color: 'darkgray',
float: 'right',
position: 'relative',
right: 40,
top: 24,
}}
/>
<Snippet data={jsSnippet} language={'typescript'} />
</div>
);
}
28 changes: 28 additions & 0 deletions src/components/snippets/PhpSnippet.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import Snippet from './Snippet';
import { useMemo } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import Clipboard from '../common/Clipboard';

export default function ({ flag }: { flag: string }): JSX.Element {
const phpSnippet = useMemo(() => {
return `if ( class_exists( 'MR\\FeatureFlags\\Utils' ) && MR\\FeatureFlags\\Utils::is_enabled( '${flag}' ) ) {
// php code goes here...
}`;
}, [flag]);
return (
<div className="mr-feature-flag-php-snippet-container">
<h3>{__('PHP Snippet', 'mr-feature-flags')}</h3>
<Clipboard
text={phpSnippet}
style={{
color: 'darkgray',
float: 'right',
position: 'relative',
right: 40,
top: 24,
}}
/>
<Snippet data={phpSnippet} language={'php'} />
</div>
);
}
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useMemo } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import Clipboard from './Clipboard';
import Clipboard from '../common/Clipboard';

import Snippet from './Snippet';

Expand All @@ -20,7 +20,7 @@ export {};`;
}, []);

return (
<div className="mr-feature-flags-php-snippet-container">
<div className="mr-feature-flags-ts-snippet-container">
<h3>{__('TypeScript support', 'mr-feature-flags')}</h3>
<p>
Create a file named{' '}
Expand Down
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const { mrFeatureFlags } = window;
import { Flag } from '../types';

//Appends isEnabled method to global window object.
mrFeatureFlags.isEnabled = (flag: string) => {
const isFlagExist: Flag | undefined = mrFeatureFlags.flags.find(
(item: Flag) => {
Expand Down
4 changes: 2 additions & 2 deletions src/settings.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { render } from '@wordpress/element';
import Layout from './components/Layout';
import Flags from './components/flag/Flags';
import './styles/settings.scss';
render(<Layout />, document.getElementById('mr_feature_flags_settings_screen'));
render(<Flags />, document.getElementById('mr_feature_flags_settings_screen'));