Skip to content

Instantly share code, notes, and snippets.

View wangziling's full-sized avatar
🥰
I love my wife more than coding~

王子凌 wangziling

🥰
I love my wife more than coding~
View GitHub Profile
@wangziling
wangziling / get-google-autocomplete-suggestion-element.ts
Created September 5, 2023 07:21
Get google AutoComplete element related suggestion element.
import _ from 'lodash';
// Optional.
import $ from 'jquery';
// You need to mount/init the autoComplete utils first.
// const autocomplete = new google.maps.places.Autocomplete(inputElement, config);
function getPredictionEle (autocomplete: any): null | Element {
// Use this to make sure that we will not fall into an endless loop.
let MAX_DEEP_DIVE_IN_LEVEL = 50;
@wangziling
wangziling / vnode-in-template.tsx
Last active May 25, 2023 10:16
Render vNode in vue2 .vue template files.
/* eslint-disable no-unused-vars */
import { Component, Prop, Vue } from 'vue-property-decorator';
import { CreateElement, VNode, VueConstructor } from 'vue';
import { FunctionalComponentOptions } from 'vue/types/options';
import _ from 'lodash';
export function randomString(len?: number): string {
len = len || 32;
const $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
const maxPos = $chars.length;
@wangziling
wangziling / v-html.ts
Created February 23, 2023 05:20
Vue2 v-html directive. Supports HTML contents.
import { DirectiveOptions } from 'vue';
import _ from 'lodash';
import $ from 'jquery';
const _toString = Object.prototype.toString;
/**
* Copied from vue2 source code.
* @param val {*}
* @return {string}
@wangziling
wangziling / promise-allsettled.ts
Created February 6, 2023 03:39
Promise.allSettled
export type TPromiseAllSettledParam<F = any, R = any> =
Array<Promise<F> | F>
| Record<string, Promise<F> | F>;
export type TPromiseAllSettledReturnValue<F, R> = Promise<Array<IPromiseAllSettledFulfilledResult<F> | IPromiseAllSettledRejectedResult<R>>>;
export interface IPromiseAllSettledFulfilledResult<F = any> {
status: EPromiseAllSettledStatus.fulfilled,
value: F
}
@wangziling
wangziling / query-string-utils.ts
Last active March 7, 2023 02:22
Query String utils.
/**
* Update the QueryString Param
* @param uri {string}
* @param key {string}
* @param value {string}
*/
export function updateQueryStringParam(
uri: string,
key: string,
value: string
@wangziling
wangziling / render-manager.ts
Last active May 25, 2023 10:02
Vue manual render manager.
import Vue, { ComponentOptions, CreateElement } from 'vue';
import { VNodeData } from 'vue/types/vnode';
import { AsyncComponentFactory, AsyncComponentPromise, FunctionalComponentOptions } from 'vue/types/options';
import _ from 'lodash';
import $ from 'jquery';
export type TArrayOrPrimitive<T> = T extends Array<any> | ReadonlyArray<any>
? T | TArrayMember<T>
: Array<T> | T;
@wangziling
wangziling / Date.tsx
Created December 13, 2021 16:23
date.deno.dev
/** @jsx h */
/// <reference no-default-lib="true"/>
/// <reference lib="dom" />
/// <reference lib="dom.asynciterable" />
/// <reference lib="deno.ns" />
import { serve } from "https://deno.land/std@0.114.0/http/server.ts";
import { h, ssr, tw } from "https://crux.land/nanossr@0.0.1";
const ShowDate = (props) => (
<div class={tw`bg-white flex h-screen`}>
@wangziling
wangziling / v-if-or-show.tsx
Created December 3, 2021 06:33
Vue component for using v-if or v-show.
/* eslint-disable no-unused-vars */
import { Component, Prop, Vue } from 'vue-property-decorator';
import { CreateElement } from 'vue';
import _ from 'lodash';
@Component
export default class VIfOrShow extends Vue {
/* Data START */
/* Data END */
@wangziling
wangziling / deferAllSettled.js
Last active May 16, 2021 15:36
jQuery ajax/deferred `Promise.allSettled`
/**
* @typedef {{ status: 'fulfilled', value: *}} TPromiseAllSettledFulfilledResult
* @typedef {{ status: 'rejected', reason: (*|Error) }} TPromiseAllSettledRejectedResult
* @typedef {(TPromiseAllSettledFulfilledResult|TPromiseAllSettledRejectedResult)[]} TDeferAllSettledResult
*/
/**
* Same as `Promise.allSettled`.
* Try hard to not to use `Promise`, all from JQuery.
* @param deferIterator {JQuery.Deferred[]|JQuery.jqXHR[]|Object<string, JQuery.Deferred>}
@wangziling
wangziling / TeleportVariable.jsx
Last active February 23, 2023 05:38
Teleport variables.
export default {
name: "TeleportVariable",
inheritAttrs: false, // Must set as `false`. Or you will see your bindings existed on your slot DOM attributes, as data="[object Object]"
render () {
return this.$scopedSlots.default(this.$attrs);
}
};