Skip to content

Instantly share code, notes, and snippets.

@fabien
fabien / NumericInput.js
Created June 22, 2022 18:29
Latest Advanced Numeric Input for Sanity Studio
import React, { useState, useCallback, useMemo, useEffect } from 'react';
import { useId } from '@reach/auto-id';
import omit from 'lodash.omit';
import pick from 'lodash.pick';
import { FormField } from '@sanity/base/components';
import { TextInput } from '@sanity/ui';
import PatchEvent, { set } from 'part:@sanity/form-builder/patch-event';
import NumberFormat from 'react-number-format';
const INPUT_PROPS = [
@fabien
fabien / example.js
Last active October 20, 2021 15:17 — forked from SimeonGriggs/example.js
A "listening" version of usePreviewSubscription() that re-queries the client. Not yet recommended for Production use.
const { data, loading } = useListeningQuery(
query,
{
params: params ?? {},
initialData: page,
enabled: preview,
delay: 250,
}
);
import {$$, attr, css, isUndefined, isVisible} from '../util/index';
export default {
args: 'target',
props: {
target: String,
offsetTarget: String,
property: String,
--- left
+++ right
@@ -1200,13 +1200,7 @@
value = styleObjectToString(value);
}
}
-
- // remove original attribute
- if (expr.attr && (!expr.isAttrRemoved || !hasValue)) {
- remAttr(dom, expr.attr);
@fabien
fabien / ilib.js
Created November 19, 2015 21:30
Sortkey collation using ilib
var _ = require('lodash');
var ilib = require('ilib');
var Locale = require('ilib/lib/Locale.js');
var Collator = require('ilib/lib/Collator.js');
var defaults = { locale: 'en', precision: 5 };
module.exports = {};
module.exports.ilib = ilib;
module.exports.Locale = Locale;
module.exports = function(Model, options) {
var mergeQuery = require('loopback-datasource-juggler/lib/utils').mergeQuery;
var _ = require('lodash');
var scopes = options.scopes || _.keys(Model.scopes);
var validScopes = {};
_.each(Model.scopes, function(scope, name) {
if (scope.modelFrom === Model && scope.modelFrom === scope.modelTo) {
@fabien
fabien / gist:ccce7f1de399c0227ce6
Last active August 29, 2015 14:05
Example LDL
{
"name": "Person",
"plural": "people",
"base": "PersistedModel",
"properties": {
"firstName": {
"type": "string",
"required": true
},
"lastName": {
var beforeListeners = remotes.listenerTree.before[TargetModel.modelName] || {};
beforeListeners = beforeListeners['*'] || {};
var afterListeners = remotes.listenerTree.after[TargetModel.modelName] || {};
afterListeners = afterListeners['*'] || {};
if (beforeListeners[name] && _.isFunction(beforeListeners[name]._listeners)) {
Model.beforeRemote('prototype.' + method, function(ctx, result, next) {
beforeListeners[name]._listeners.call(null, ctx, next);
});
module.exports = function(Model, options) {
if (!options.rel) throw new Error('Mixin: cascade delete - no relation specified');
var _ = require('lodash');
var async = require('async');
var beforeDelete = options.before || function(inst, next) {
process.nextTick(function() { next(null, true); });
};