当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript createWidgetBase.mixin函数代码示例

本文整理汇总了TypeScript中@dojo/widgets/createWidgetBase.mixin函数的典型用法代码示例。如果您正苦于以下问题:TypeScript mixin函数的具体用法?TypeScript mixin怎么用?TypeScript mixin使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了mixin函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1:

import createWidgetBase from '@dojo/widgets/createWidgetBase';
import { Widget, WidgetProperties } from '@dojo/widgets/interfaces';
import createFormFieldMixin, { FormFieldMixin } from '@dojo/widgets/mixins/createFormFieldMixin';
import { VNodeProperties } from '@dojo/interfaces/vdom';

export interface CheckboxInputProperties extends WidgetProperties {
	checked: boolean;
	onChange?: (event?: Event) => void;
}

export type CheckboxInput = Widget<CheckboxInputProperties> & FormFieldMixin<string, CheckboxInputProperties> & {
	onChange: (event?: Event) => void;
};

const createCheckboxInput = createWidgetBase
	.mixin(createFormFieldMixin)
	.mixin({
		mixin: {
			tagName: 'input',
			type: 'checkbox',
			onChange(this: CheckboxInput, event?: Event) {
				this.properties.onChange && this.properties.onChange(event);
			},
			nodeAttributes: [
				function (this: CheckboxInput): VNodeProperties {
					const { onChange: onchange } = this;
					const { checked } = this.state;

					return checked !== undefined ? { checked, onchange } : { onchange };
				}
			]
开发者ID:Tomdye,项目名称:examples,代码行数:31,代码来源:createCheckboxInput.ts

示例2:

	focused?: boolean;
	placeholder?: string;
	value?: string;
	onKeyUp?: (event?: KeyboardEvent) => void;
	onInput?: (event?: KeyboardEvent) => void;
	onBlur?: (event?: Event) => void;
}

export type FocusableTextInput = Widget<FocusableTextProperties> & FormFieldMixin<string, WidgetProperties> & {
	onKeyUp: (event?: KeyboardEvent) => void;
	onInput: (event?: KeyboardEvent) => void;
	onBlur: (event?: Event) => void;
	afterCreate: (element: HTMLInputElement) => void;
}

const createFocusableTextInput = createWidgetBase
	.mixin(createFormFieldMixin)
	.mixin({
		mixin: {
			tagName: 'input',
			type: 'text',

			onBlur(this: FocusableTextInput, event?: Event) {
				this.properties.onBlur && this.properties.onBlur(event);
			},
			onInput(this: FocusableTextInput, event?: KeyboardEvent) {
				this.properties.onInput && this.properties.onInput(event);
			},
			onKeyUp(this: FocusableTextInput, event?: KeyboardEvent) {
				this.properties.onKeyUp && this.properties.onKeyUp(event);
			},
开发者ID:Tomdye,项目名称:examples,代码行数:31,代码来源:createFocusableTextInput.ts

示例3: Date

export type FormattedDate = Widget<FormattedDateProperties>;

const createFormattedDate = createWidgetBase.mixin({
	mixin: {
		tagName: 'span',
		nodeAttributes: [
			function (this: FormattedDate): VNodeProperties {
				const { date = new Date() } = this.state;
				let hours = date.getHours();
				const minutes = String(date.getMinutes());
				let suffix = 'am';

				if (hours >= 12) {
					suffix = 'pm';

					hours = hours % 12;
					if (!hours) {
						hours = 12;
					}
				}

				return {
					innerHTML: `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()} at ${hours}:${padStart(minutes, 2, '0')}${suffix}`
				};
			}
		]
	}
});

export default createFormattedDate;
开发者ID:Tomdye,项目名称:examples,代码行数:30,代码来源:createFormattedDate.ts

示例4:

import { Widget } from '@dojo/widgets/interfaces';
import { VNodeProperties } from '@dojo/interfaces/vdom';
import createWidgetBase from '@dojo/widgets/createWidgetBase';

interface TitleProperties {
	label: string;
}

const createTitle = createWidgetBase.mixin({
	mixin: {
		tagName: 'h1',
		nodeAttributes: [
			function (this: Widget<TitleProperties>): VNodeProperties {
				return { innerHTML: this.properties.label };
			}
		]
	}
});

export default createTitle;
开发者ID:Tomdye,项目名称:examples,代码行数:20,代码来源:createTitle.ts

示例5: v

		const label = filterItem[0].toUpperCase() + filterItem.substring(1);
		return v('li', {}, [
			v('a', {
				innerHTML: label,
				href: router.link(mainRoute, {
					filter: filterItem,
					view: activeView
				}),
				classes: {
					selected: activeFilter === filterItem
				}
			})
		]);
	});
}

const createTodoFilter = createWidgetBase.mixin({
	mixin: {
		tagName: 'ul',
		classes: [ 'filters' ],
		getChildrenNodes: function(this: TodoFilter): DNode[] {
			const activeFilter = this.properties.activeFilter || '';
			const activeView = this.properties.activeView || '';

			return createFilterItems(activeFilter, activeView);
		}
	}
});

export default createTodoFilter;
开发者ID:Tomdye,项目名称:examples,代码行数:30,代码来源:createTodoFilter.ts

示例6:

import { VNodeProperties } from '@dojo/interfaces/vdom';
import createWidget from '@dojo/widgets/createWidgetBase';
import { WidgetProperties, Widget } from '@dojo/widgets/interfaces';
import createFormFieldMixin from '@dojo/widgets/mixins/createFormFieldMixin';

export interface SearchInputProperties extends WidgetProperties {
	onKeyUp?: (event?: KeyboardEvent) => void;
}

export type SearchInput = Widget<SearchInputProperties> & {
	onKeyUp?: (event?: KeyboardEvent) => void;
}

const createSearchInput = createWidget
	.mixin(createFormFieldMixin)
	.mixin({
		mixin: {
			classes: [ 'search' ],
			tagName: 'input',
			type: 'text',
			onKeyUp(this: SearchInput, event?: KeyboardEvent) {
				this.properties.onKeyUp && this.properties.onKeyUp(event);
			},
			nodeAttributes: [
				function (this: SearchInput): VNodeProperties {
					const { onKeyUp: onkeyup } = this;
					const { placeholder = '' } = this.properties;

					return {
						placeholder,
						onkeyup
开发者ID:Tomdye,项目名称:examples,代码行数:31,代码来源:createSearchInput.ts

示例7: function

const createViewChooser = createWidgetBase.mixin({
	mixin: {
		tagName: 'ul',
		classes: [ 'view-chooser' ],
		getChildrenNodes: function (this: TodoList): DNode[] {
			const { activeView = 'list', activeFilter = 'all' } = this.state;

			return [
				v('li.view-mode', {}, [
					v('a', {
						href: router.link(mainRoute, {
							filter: activeFilter,
							view: 'list'
						}),
						classes: {
							list: true,
							active: activeView === 'list'
						}
					})
				]),
				v('li.view-mode', {}, [
					v('a', {
						href: router.link(mainRoute, {
							filter: activeFilter,
							view: 'cards'
						}),
						classes: {
							cards: true,
							active: activeView === 'cards'
						}
					})
				])
			];
		}
	}
});
开发者ID:Tomdye,项目名称:examples,代码行数:36,代码来源:createViewChooser.ts


注:本文中的@dojo/widgets/createWidgetBase.mixin函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。