import { CssProps, RefProps } from 'lupine.web';
import {
ActionSheetSelectPromise,
HeaderWithBackFrame,
HtmlVar,
NotificationColor,
NotificationMessage,
SliderFrame,
SliderFrameHookProps,
} from '../../index';
export const Nested2DemoMock = (props: { sliderFrameHook: SliderFrameHookProps }) => {
const css: CssProps = {
display: 'flex',
flexDirection: 'column',
flex: '1',
padding: '0 16px',
alignItems: 'center',
justifyContent: 'center',
height: '100%',
textAlign: 'center',
color: 'var(--secondary-text-color)',
fontSize: '16px',
};
return (
{
props.sliderFrameHook.close!(event);
}}
>
This is a generic sub-page demo.
(Further nesting is disabled in this mockup)
);
};
const NestedDemoMockContent = () => {
const sliderFrameHook: SliderFrameHookProps = {};
const css: CssProps = {
display: 'flex',
flexDirection: 'column',
flex: '1',
padding: '0 16px',
'.fb-detail': {
height: '100px',
},
'.input-field': {
position: 'relative',
marginTop: '16px',
marginBottom: '16px',
},
'.input-base': {
width: '100%',
padding: '12px',
border: '1px solid var(--primary-border-color)',
borderRadius: '8px',
boxSizing: 'border-box',
},
'.setting-section-row-btn': {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
padding: '12px 16px',
backgroundColor: 'var(--primary-color)',
color: 'white',
borderRadius: '8px',
marginTop: '16px',
cursor: 'pointer',
fontSize: '16px',
gap: '8px',
},
'.setting-section-row-btn i': {
fontSize: '20px',
},
};
const ref: RefProps = {};
const openAnotherLevel = () => {
sliderFrameHook.load!();
};
const submitFeedback = async (e: Event) => {
const titleDom = ref.$('.fb-title') as HTMLInputElement;
const detailDom = ref.$('.fb-detail') as HTMLTextAreaElement;
if (!titleDom || !titleDom.value || !detailDom || !detailDom.value) {
NotificationMessage.sendMessage('Please enter the required information.', NotificationColor.Error);
return;
}
const index = await ActionSheetSelectPromise({
title: 'Are you sure you want to submit?',
options: ['Confirm'],
cancelButtonText: 'Cancel',
});
if (index !== 0) {
return;
}
NotificationMessage.sendMessage('Thank you for your feedback.', NotificationColor.Success);
sliderFrameHook.close!(e);
};
return (
Nested Demo
This is a generic generic demo page. You can nest another level of itself by clicking the button below.
);
};
export const NestedDemoMock = (props: { sliderFrameHook: SliderFrameHookProps }) => {
return (
{
if (props.sliderFrameHook.close) props.sliderFrameHook.close(event);
}}
>
);
};
const UserSettingsMockContent = () => {
const sliderFrameHook: SliderFrameHookProps = {};
const renderContent = () => {
const css: CssProps = {
display: 'flex',
flexDirection: 'column',
flex: '1',
padding: '0 16px',
backgroundColor: 'var(--secondary-bg-color, #f5f5f5)',
// Minimal settings UI styles ported from what was expected in original UI
'.setting-section-group': {
marginTop: '16px',
},
'.setting-section-title': {
padding: '0 16px 8px 16px',
fontSize: '13px',
color: 'var(--secondary-text-color, #666)',
},
'.setting-section-block': {
backgroundColor: 'var(--primary-bg-color, white)',
borderRadius: '12px',
overflow: 'hidden',
},
'.setting-section-item': {
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
padding: '16px',
borderBottom: '1px solid var(--primary-border-color, #eee)',
cursor: 'pointer',
},
'.setting-section-item:last-child': {
borderBottom: 'none',
},
'.setting-section-item-text': {
fontSize: '15px',
color: 'var(--primary-text-color)',
},
'.setting-section-item-icon': {
color: 'var(--secondary-text-color, #ccc)',
display: 'flex',
},
'.setting-section-item-icon i': {
fontSize: '20px',
},
'.setting-section-row-btn': {
backgroundColor: 'var(--primary-bg-color, white)',
borderRadius: '12px',
padding: '16px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
gap: '8px',
color: '#ff3b30',
fontSize: '15px',
cursor: 'pointer',
fontWeight: 'bold',
},
'.setting-section-row-btn i': {
fontSize: '20px',
},
};
const openNestedDemo = () => {
sliderFrameHook.load!();
};
return (
NotificationMessage.sendMessage('Logged out demo!', NotificationColor.Success)}
>
Logout Session
);
};
const dom = new HtmlVar(renderContent());
return {dom.node}
;
};
export const UserSettingsMock = (props: { sliderFrameHook: SliderFrameHookProps }) => {
return (
{
props.sliderFrameHook.close!(event);
}}
>
);
};