1.2.6 • Published 1 year ago

v-cupertino v1.2.6

Weekly downloads
12
License
MIT
Repository
github
Last release
1 year ago

Cupertino Pane for Vue 3

Notes: if your are looking for vue 2 here Cupertino-Pane for vue 2

Installation

Actually kinda easy

  npm i v-cupertino

How works

Slot

The component just have one simple slot where you can easily put one or multiple components (by wrapping it in a template or wrap element like a div), doesn't have any special v-slots, any component or html element used will fallback into v-slot:default.

  <template>
    <v-cupertino>
      <div>Hola mundo!<div>
      <div>Adiós mundo cruel!</div>
    <v-cupertino>
  </template>

  <script lang="ts">
    import { defineComponent } from "vue";
    import VCupertino from "v-cupertino";

    export default defineComponent({
      name: "App",
      components: {
        VCupertino
      }
    })
  </script>

Props

propstypeexamplecomments
:drawerOptions ( optional )CupertinoSettings<v-cupertino :drawerOptions="yourSettingsObject">The same as the Cupertinos Options; constraints you cannot override cupertino's callbacks even if you specified in the CupertinoSettings' Object
:entryAnimation ( optional )Boolean<v-cupertino :entryAnimation="Boolean">Whether the drawer should present, destroy or hide with a smooth animation
:entryComponent ( optional )Component<v-cupertino :entryComponent="Component">The component itself use slots, but I think it would be faster to toggle between component from scripts instead of using v-if also components remember their state because are wrapped by <keep-alive> tag
:isPresentBoolean<v-cupertino :entryComponent="Component">Whether the component should be present or hide, when initialize; default: true:idNumber | String<v-cupertino :id="2">If you have multiples v-cupertino components in the same app that might be working in the same time could crash the library cupertino-pane due that all of them are using the same selector class to create a new pane, using custom id, will allow you to use multiples v-cupertino components as much as you want

Events

Note: Are the same hooks as the Cupertino pane but instead of camelCase are kebak-case and without the prefix on: @will-dismiss, @backdrop-tap...

eventsreturncomments
@did-dismiss() => void
@will-dismiss() => void
@did-present() => cupertinoInstanceReturns: the cupertino instance inside the component when the drawer is already visible, this is useful when you need to have access to the instance once is visible
@will-present() => cupertinoInstanceReturns: the cupertino instance inside the component when the drawer will be visible, this is useful when you need to have access to the instance before is visible
@drag-start() => numberReturns: the property y from the method getBoundingClientRect() that belongs to the DOMRect
@drag() => numberReturns: the property y from the method getBoundingClientRect() that belongs to the DOMRect
@drag-end() => numberReturns: the property y from the method getBoundingClientRect() that belongs to the DOMRect
@backdrop-tap() => void
@transition-start() => void
@transition-end() => void

How to get access to the public method from the Cupertino Instance inside the component <v-cupertino />

There are actually three ways to get the instance from <v-cupertino /> component from its parent container:

  • refs
  • From the instance returned by @did-present event
  • From the instance returned by @will-present event

Getting the instance with refs

Sample code

<template>
  <v-cupertino ref="cupertinoRef">
    <div>Hola mundo!<div>
  <v-cupertino>
</template>

<script lang="ts">
  import { CupertinoPane } from "cupertino-pane";
  import { defineComponent, onMounted, ref, Ref } from "vue";
  import VCupertino from "./components/VCupertino.vue";

  export default defineComponent({
    name: "App",
    components: {
      VCupertino,
    },
    setup() {
      const cupertinoRef: Ref<typeof VCupertino> = ref(VCupertino);

      onMounted(() => {
        const cupertino = cupertinoRef.value.cupertino as CupertinoPane;
        cupertino.setDarkMode({ enable: true });
        console.log(cupertino);
      });

      return {
        cupertinoRef,
      };
    },
  });
</script>

Getting the instance from @did-present or @will-present event

Sample code

<template>
  <v-cupertino @did-present="hook">
    <div>Hola mundo!<div>
  <v-cupertino>
</template>

<script lang="ts">
  import { CupertinoPane } from "cupertino-pane";
  import { defineComponent, onMounted, ref, Ref } from "vue";
  import VCupertino from "./components/VCupertino.vue";

  export default defineComponent({
    name: "App",
    components: {
      VCupertino,
    },
    setup() {
      const hook = ({ value }: Ref<CupertinoPane>) => {
        console.log(value);
      }

      return {
        hook,
      };
    },
  });
</script>

Using public methods

Here an overview of all the public methods

Using the refs example to access public methods

import { CupertinoPane } from "cupertino-pane";
import { defineComponent, onMounted, ref, Ref } from "vue";
import VCupertino from "./components/VCupertino.vue";

export default defineComponent({
  name: "App",
  components: {
    VCupertino,
  },
  setup() {
    const cupertinoRef: Ref<typeof VCupertino> = ref(VCupertino);

    onMounted(() => {
      const cupertino = cupertinoRef.value.cupertino as CupertinoPane;
      cupertino.setDarkMode({ enable: Boolean }); // param: 
      cupertino.moveToBreak(String); // Will change pane position with animation to selected breakpoint. param: required('top' | 'middle' | 'bottom')
      cupertino.moveToHeight(Number); // Will move pane to exact height with animation. Breakpoints will saved. param: required
      cupertino.hide(); // Dissappear pane from screen, still keep pane in DOM.
      cupertino.present({ animated: Boolean }); // Will render pane DOM and show pane with setted params. param: optional
      cupertino.destroy({ animated: Boolean }); // Remove pane from DOM and clear styles
      // to check more public methods to *overview* that is above
    });

    return {
      cupertinoRef,
    };
  },
});

Notes: In case you need more information about the library, remember that this is only a wrapper, for more information go to the oficial Cupertino Pane library.

License

Licensed under the MIT License. View original LICENSE Project's LICENSE

Lol, that's all, thanks

1.2.6

1 year ago

1.2.5

1 year ago

1.2.4

3 years ago

1.2.3

3 years ago

1.2.2

3 years ago

1.2.1

3 years ago

1.2.0

3 years ago

1.1.8

3 years ago

1.1.7

3 years ago

1.1.4

4 years ago

1.1.2

4 years ago

1.1.0

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago