#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: Linkis feature request
description: Suggest an idea for Linkis project
title: "[Feature] "
labels: [enhancement]
body:
  - type: markdown
    attributes:
      value: |
        Thank you for finding the time to propose a new feature!
        We really appreciate the community efforts to improve Linkis.
  - type: checkboxes
    attributes:
      label: Search before asking
      description: >
        Please make sure to search in the [issues](https://github.com/apache/incubator-linkis/issues) first to see
        whether the same feature was requested already.
      options:
        - label: >
            I had searched in the [issues](https://github.com/apache/incubator-linkis/issues) and found no similar
            feature requirement.
          required: true
  - type: textarea
    attributes:
      label: Problem Description
      description: Is your feature request related to a problem? Please describe.

  - type: textarea
    attributes:
      label: Description
      description: A short description of your feature

  - type: textarea
    attributes:
      label: Use case
      description: >
        Describe the use case of your feature request.
      placeholder: >
        Describe the solution you'd like A clear and concise description of what you want to happen.

  - type: textarea
    attributes:
      label: solutions
      description: Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

  - type: textarea
    attributes:
      label: Anything else
      description: Anything else we need to know?
      placeholder: >
        Additional context Add any other context or screenshots about the feature request here.

  - type: checkboxes
    attributes:
      label: Are you willing to submit a PR?
      description: >
        This is absolutely not required, but we are happy to guide you in the contribution process
        especially if you already have a good understanding of how to implement the feature.
      options:
        - label: Yes I am willing to submit a PR!

  - type: markdown
    attributes:
      value: "Thanks for completing our form!"
