New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@globalbrain/sefirot

Package Overview
Dependencies
Maintainers
1
Versions
284
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@globalbrain/sefirot - npm Package Compare versions

Comparing version 0.46.0 to 0.47.0

6

CHANGELOG.md

@@ -0,1 +1,7 @@

# [0.47.0](https://github.com/globalbrain/sefirot/compare/v0.46.0...v0.47.0) (2021-04-05)
### Features
* **form:** update form apis ([#54](https://github.com/globalbrain/sefirot/issues/54)) ([0497a1a](https://github.com/globalbrain/sefirot/commit/0497a1ad0440986bdf2043e9a4f5f4ae9857e920))
# [0.46.0](https://github.com/globalbrain/sefirot/compare/v0.45.0...v0.46.0) (2021-03-26)

@@ -2,0 +8,0 @@

51

lib/composables/Form.ts

@@ -1,5 +0,50 @@

export * from './FormData'
import { UnwrapRef, reactive } from '@vue/composition-api'
import { Validation, Rules, useFormValidation } from './FormValidation'
export * from './FormValidation'
export { useFormData as useData } from './FormData'
export { useFormValidation as useValidation } from './FormValidation'
export interface Form<T extends Record<string, any>> {
data: Data<T>
validation?: Validation
init(): void
update: UpdateFunction<T>
}
export type Data<T extends Record<string, any>> = UnwrapRef<T>
export type UpdateFunction<
T extends Record<string, any>
> = (model: keyof Data<T>, value: any) => void
export interface UseFormOptions<T extends Record<string, any>> {
data: T | (() => T)
rules?: Rules
}
export function useForm<T extends Record<string, any>>(options: UseFormOptions<T>): Form<T> {
const initialData = getData(options.data)
const rules = options.rules
const data = reactive(initialData)
const validation = rules ? useFormValidation(data, rules) : undefined
function init(): void {
Object.assign(data, initialData)
validation?.$reset()
}
function update(model: keyof Data<T>, value: any): void {
data[model] = value
}
return {
data,
validation,
init,
update
}
}
function getData<T extends Record<string, any>>(data: T | (() => T)): T {
return data instanceof Function ? data() : data
}

9

lib/composables/FormValidation.ts
import { Ref, ComputedRef, ref, computed } from '@vue/composition-api'
import { required } from '../validation/validators'
import { Rule } from '../validation/rules'
import { State } from './FormData'

@@ -29,3 +28,3 @@ export interface Validation {

export function useFormValidation<T extends State>(data: T, rules: Rules, rootData?: T): Validation {
export function useFormValidation<T extends Record<string, any>>(data: T, rules: Rules, rootData?: T): Validation {
const validation = {} as Validation

@@ -40,3 +39,3 @@

function setValidations<T extends State>(validation: Validation, data: T, rules: Rules, rootData: T): void {
function setValidations<T extends Record<string, any>>(validation: Validation, data: T, rules: Rules, rootData: T): void {
for (const name in rules) {

@@ -59,3 +58,3 @@ const rule = rules[name]

function createValidation<T extends State>(name: string, data: T, rules: Rule[], rootData: T): Validation {
function createValidation<T extends Record<string, any>>(name: string, data: T, rules: Rule[], rootData: T): Validation {
const isDirty = ref(false)

@@ -129,3 +128,3 @@ const isValid = computed(() => errors.value.length === 0)

function getErrors<T extends State>(name: string, data: T, rules: Rule[], rootData: T): Error[] {
function getErrors<T extends Record<string, any>>(name: string, data: T, rules: Rule[], rootData: T): Error[] {
return rules.reduce<Error[]>((errors, rule) => {

@@ -132,0 +131,0 @@ const value = data[name]

{
"name": "@globalbrain/sefirot",
"version": "0.46.0",
"version": "0.47.0",
"description": "Vue Components for Global Brain Design System.",

@@ -5,0 +5,0 @@ "files": [

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc